From 35617bf6015a7d32e048789c0ff7c356e40f6706 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Sat, 23 Nov 2013 15:25:56 +0100 Subject: SCI: Fix SCI1late fade complete signal This fixes duplicate music playing in LauraBow2CD (#6462) --- engines/sci/sound/soundcmd.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'engines/sci/sound/soundcmd.cpp') 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 { -- cgit v1.2.3