diff options
Diffstat (limited to 'engines/sci/sfx/soundcmd.cpp')
-rw-r--r-- | engines/sci/sfx/soundcmd.cpp | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/engines/sci/sfx/soundcmd.cpp b/engines/sci/sfx/soundcmd.cpp index f7ff987838..e8e599bc5c 100644 --- a/engines/sci/sfx/soundcmd.cpp +++ b/engines/sci/sfx/soundcmd.cpp @@ -803,16 +803,7 @@ void SoundCommandParser::cmdUpdateCues(reg_t obj, int16 value) { } break; case SIGNAL_OFFSET: - // Check if this signal is the end of the track or the end of fading effect. - // If this came from a fading effect, don't stop the track here, it'll be stopped - // by the engine scripts - if (musicSlot->fadeSetVolume) { - musicSlot->fadeSetVolume = false; - // Notify the game scripts that music fading is done - PUT_SEL32V(_segMan, obj, signal, SIGNAL_OFFSET); - } else { - cmdStopSound(obj, 0); - } + cmdStopSound(obj, 0); break; default: // Sync the signal of the sound object @@ -821,6 +812,11 @@ void SoundCommandParser::cmdUpdateCues(reg_t obj, int16 value) { } } + if (musicSlot->fadeCompleted) { + musicSlot->fadeCompleted = false; + PUT_SEL32V(_segMan, obj, signal, SIGNAL_OFFSET); + } + // Sync loop selector for SCI0 if (_soundVersion <= SCI_VERSION_0_LATE) PUT_SEL32V(_segMan, obj, loop, musicSlot->loop); |