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.
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: http://www.sierrahelp.com/Games/KingsQuest/KQ5Help.html
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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?)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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:
http://www.sierrahelp.com/Games/KingsQuest/KQ5Help.html
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
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"