aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/sound
diff options
context:
space:
mode:
authorWillem Jan Palenstijn2013-11-23 15:25:56 +0100
committerWillem Jan Palenstijn2013-11-23 15:27:16 +0100
commit35617bf6015a7d32e048789c0ff7c356e40f6706 (patch)
treed3a768678bd8462ad26c2c42173304aa95b1b99f /engines/sci/sound
parent6795fdf639bd261530b88fa8d22ff7b9ace9a3c9 (diff)
downloadscummvm-rg350-35617bf6015a7d32e048789c0ff7c356e40f6706.tar.gz
scummvm-rg350-35617bf6015a7d32e048789c0ff7c356e40f6706.tar.bz2
scummvm-rg350-35617bf6015a7d32e048789c0ff7c356e40f6706.zip
SCI: Fix SCI1late fade complete signal
This fixes duplicate music playing in LauraBow2CD (#6462)
Diffstat (limited to 'engines/sci/sound')
-rw-r--r--engines/sci/sound/soundcmd.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/engines/sci/sound/soundcmd.cpp b/engines/sci/sound/soundcmd.cpp
index e36c5705ab..92fbdbf604 100644
--- a/engines/sci/sound/soundcmd.cpp
+++ b/engines/sci/sound/soundcmd.cpp
@@ -508,9 +508,17 @@ void SoundCommandParser::processUpdateCues(reg_t obj) {
// fireworks).
// It is also needed in other games, e.g. LSL6 when talking to the
// receptionist (bug #3192166).
- // CHECKME: At least kq5cd/win and kq6 set signal to 0xFE here, but
- // kq5cd/dos does not set signal at all. Needs more investigation.
- writeSelectorValue(_segMan, obj, SELECTOR(signal), SIGNAL_OFFSET);
+ // TODO: More thorougly check the different SCI version:
+ // * SCI1late sets signal to 0xFE here. (With signal 0xFF
+ // duplicate music plays in LauraBow2CD - bug #6462)
+ // * Other SCI1 games seem to rely on processStopSound to set the signal
+ // * Need to check SCI0 behaviour.
+ uint16 sig;
+ if (_soundVersion >= SCI_VERSION_1_LATE)
+ sig = 0xFFFE;
+ else
+ sig = SIGNAL_OFFSET;
+ writeSelectorValue(_segMan, obj, SELECTOR(signal), sig);
if (_soundVersion <= SCI_VERSION_0_LATE) {
processStopSound(obj, false);
} else {