Opened 6 years ago

Closed 3 years ago

#10812 closed defect (fixed)

SCI: KQ6CD wallflower dance music not restarting, leads to lockup

Reported by: sluicebox Owned by: sluicebox
Priority: normal Component: Engine: SCI
Version: Keywords:
Cc: 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.

Attachments (1)

kq6-cd.016 (44.8 KB ) - added by sluicebox 6 years ago.

Download all attachments as: .zip

Change History (3)

by sluicebox, 6 years ago

Attachment: kq6-cd.016 added

comment:2 by sluicebox, 3 years ago

Owner: set to sluicebox
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.