Opened 6 months ago

Closed 2 weeks ago

#9675 closed defect (fixed)

SCI: GK2: Crash in Chapter 6 Grotto

Reported by: IntEmu Owned by: csnover
Priority: high Component: Engine: SCI
Keywords: sci32 Cc: jerichobarronsdublin@…
Game: Gabriel Knight 2

Description

Hi, GK2 crashes on point 550 (have all 545 points that come before) following this walkthrough.
http://www.gamefaqs.com/pc/198951-the-beast-within-a-gabriel-knight-mystery/faqs/25375

I'm using the original DOS/Windows CD release, version 1.0 with no patches, ScummVM/Windows x64/master d356d8, and installed it following the Datafiles wiki.

Also, I originally posted information about this crash in this bug because I also was experiencing this bug.
https://bugs.scummvm.org/ticket/9662

Thank you.

Attachments (2)

gk2-cd.006 (73.8 KB) - added by DirkPitt1 5 weeks ago.
Frozen_Guard.jpg (46.4 KB) - added by DirkPitt1 5 weeks ago.

Download all attachments as: .zip

Change History (15)

comment:1 Changed 6 months ago by IntEmu

Keywords: sci32 gk2 gabriel knight grotto added

comment:2 Changed 6 months ago by csnover

Keywords: gk2 gabriel knight grotto removed
Owner: set to intemu
Summary: Crash: SCI: GK2: Chapter 6: GrottoSCI: GK2: Crash in Chapter 6 Grotto

Could you please provide a save game & reproduction instructions? That will make isolating and fixing the bug much quicker. Thanks!

comment:3 Changed 6 months ago by wjp

Owner: intemu deleted

comment:4 Changed 6 months ago by IntEmu

Hi, this bug is more of a (hourglass) freeze than a crash. To reproduce, with the right number of points/at the right spot in the game, wait at the Grotto for the person to go away and the game will freeze.

I created this bug for others to know and to gather info. Wondering if I have this issue because I had the large savegame bug. Also wondering if this affects only version 1.0 and if others have completed this game. Thank you.

comment:5 Changed 6 months ago by csnover

Resolution: worksforme
Status: newclosed

I ran through the entire game and was not able to reproduce any crash or hang, so it appears this issue is either not a problem with the latest available ScummVM code, or insufficient detail has been provided to reproduce the bug.

If you can provide a save game and reproduction instructions for this problem, this ticket can be reopened. Thanks!

comment:6 Changed 6 months ago by IntEmu

Did you playthrough with version 1.0?

comment:7 Changed 6 months ago by IntEmu

1) I upgraded to v1.1 and no longer receive this freeze/crash.
2) I thought I provided reproduction information and it would have been nice for you to indicate if you used v1.1 or v1.0.
4) I think the issue is with v1.0 and with v1.1 I've been able to progress to the last scene in the game.

Changed 5 weeks ago by DirkPitt1

Attachment: gk2-cd.006 added

Changed 5 weeks ago by DirkPitt1

Attachment: Frozen_Guard.jpg added

comment:8 Changed 5 weeks ago by DirkPitt1

Cc: jerichobarronsdublin@… added
Resolution: worksforme
Status: closednew

Unfortunately I've got this bug too. When I walk in to grotto in chapter 6 and wait for the guard to walk away the cursor turns into a hourglass and the game freezes. I can move the cursor but that's all. The guard never leaves his place. I've tried to go further to get next part of the opera and go back but game always freezes there.

I've attached screenshot and savegame. I'm using Windows 7 sp1 64bit. Scummvm version: git3316-g9c28bcf. Game version DOS/English 1.12 DVD by enrico rolfi (DVD made from original CDs with unofficial patch that can be found here: http://gkpatches.vogons.org/download.php?file=setupgk2.exe)

comment:9 Changed 5 weeks ago by m-kiewitz

This happens when guard is supposed to enter or leave.
To reproduce one can simply wait in that room for a guard to enter.

guardControl::changeState(1) is taking control away from the player, and then waits for kkDoAudio(DoAudioWaitForPlay) to return 0.

Right now ScummVM is returning the currently active channels, which is 1 (because digital background music is playing), so it loops and waits endlessly.

Issue does not happen with original interpreter, even though digital background music is playing in that one as well.

comment:10 Changed 4 weeks ago by esziarko

Can confirm that this bug occurs in v1.1 (Dos/English) on Windows 10 x64, and as far as I can tell makes completing the game impossible.

comment:11 Changed 4 weeks ago by csnover

Priority: normalhigh

Thanks. This is my top priority, so will be addressed as soon as possible.

The interpreter for GK2 was changed to return a different value for kDoAudioPlay/WaitForPlay functions (and possibly other kDoAudio/kDoSound calls, I am still researching what else changed); where other versions of SCI2.1 return the number of active audio samples, GK2’s interpreter returns only the number of active samples loaded into memory (vs being streamed from disc).

comment:12 Changed 4 weeks ago by csnover

Sorry, I misspoke earlier (actually, read the disassembly wrong the first time).

The 0-arg kDoAudio(WaitForPlay) was changed in GK2 to return the number of samples that have not been loaded into memory, but the background music is supposed to be loaded into memory by an earlier call to kLock. Most of this code is new to SSCI in GK2. (It looks like Torin may have introduced some non-audio-related lock serialization code; I am still working on figuring out precisely where it was introduced and what it is doing.)

As a side-note, this seems to explain the “weird” audio-lock-related behaviour I encountered in Lighthouse from time to time.

comment:13 Changed 2 weeks ago by csnover

Owner: set to csnover
Resolution: fixed
Status: newclosed

Thanks for your report! A fix for this issue has been committed in 85e35943fe27b99a91d97eace3072117c2073f69 and will be available in daily builds 1.10.0git-3419 and higher.

If you have an existing save game where you are already inside of Neuschwanstein in chapter 6, upon loading the game, you will need to exit to the exterior of Neuschwanstein and then re-enter the building for the grotto area to work correctly.

Note: See TracTickets for help on using tickets.