#6251 SCI: KQ5 Windows CD - Game Hangs Before Final Battle

SCI: King's Quest V

On Windows 7 64-bit with the latest daily build, using King's Quest V Windows CD English, the game hangs right after you pick up Crispin's glowing wand before the final battle.

I've included a save game right before you pick up the wand.


  • JenniBee

  • JenniBee

    • summary: King's Quest V Windows CD - Game Hangs Before Final Battle --> SCI: KQ5 Windows CD - Game Hangs Before Final Battle
    • assigned_to: nobody --> thebluegr
    • labels: --> 388875
    • status: open --> closed-fixed
  • Fixed in the latest daily version of ScummVM.

    This is a bug in the original resource files of the game, which are missing channel 15 (the signalling channel).

    Songs 1840, 1843 and 1849 are all played during the ending, and are all missing signalling data, so the game scripts wait forever. In the original game, this bug manifested as an "out of heap" error:

    We now signal the game scripts to not wait forever. Mordack's appearing animation appears a bit earlier than it should, but that's better than having the game freeze.

    Closing as fixed

  • Forgot to mention: The bug was fixed in commit 2e93ee2

    • labels: 388875 -->
    • status: closed-fixed --> open
  • This bug is not caused by missing signals, but rather by global 400.

    The windows version of kq5 sets this global to 1 in the interpreter, and that makes the scripts skip these signal checks.

    Unfortunately duplicating that in scummvm has the side effect of freezing the shape of the mouse cursor and making the mouse warp all over the place. (Seemingly on mouseover/mouseout events for GUI elements?)

  • An effect of setting global 400 is that it switches to a 2 parameter SetCursor, which is interpreted as warp in SCI1. Using the SCI0 SetCursor for kq5win seems to fix these cursor issues. We should look at the scripts for other effects of this global.

  • The scripts in kq5 use this global in three ways: change SetCursor calls, skip signal checks, and something less clear in startGame::doit, where it is read soon after a kPlatform call and before something involving detailLevel.

  • A script patch has been added for this by wjp/wjpalenstijn in commit e273a387a71944fb6c9ec735114c5c5774109761, therefore I'm closing this as "fixed"

    • assigned_to: thebluegr --> wjpalenstijn
    • labels: --> Script bugs
    • status: open --> closed-fixed