SCI: KQ6CD wallflower dance music not restarting, leads to lockup
|Reported by:||sluicebox||Owned by:|
|Game:||King's Quest 6|
KQ6CD locks up on ScummVM if playing the flute for the wallflowers a second time while the music is still playing. ScummVM is not restarting the music, which the script expects it to do, and so the script waits forever on a signal that never comes. This works in Sierra's interpreter and doesn't appear to be a script bug.
wallFlowerMusic:changeState(6) in script 480 plays the dance music, which may already be playing:
(danceMusic number: 486 setLoop: 1 flags: 0 play:)
This problem doesn't occur in KQ6 floppy on ScummVM but that version has an important difference, its Sound:play always calls Sound:init. The CD version's Sound:play won't call init a second time if its already in the sound list at global 8. This is the only difference between the two play versions. I used the debugger to force the CD version's play to call init a second time and the music correctly restarted.
Attached is a save at the wallflowers. Click the flute on ego to play, and when you regain control, click the flute on ego again. (It won't let you click the flute on the wallflowers while they're dancing, just on ego.)
This is unrelated to the script bug in wallFlowerMusic that I patched: #10811, although one led to finding the other. Due to that bug, you will want to test this in audio modes Speech or Both but *not* Text, as the music stops too quickly. (At least until that patch gets merged)
Tested on latest code on Win7x64 with default sound settings. Also tested on an old version, 1.8, and got the same results.