aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/sound/soundcmd.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/engines/sci/sound/soundcmd.cpp b/engines/sci/sound/soundcmd.cpp
index 1e6d0aef87..9ad964b67e 100644
--- a/engines/sci/sound/soundcmd.cpp
+++ b/engines/sci/sound/soundcmd.cpp
@@ -325,6 +325,14 @@ reg_t SoundCommandParser::kDoSoundFade(int argc, reg_t *argv, reg_t acc) {
return acc;
}
+ // If the current volume of the slot is the same as the target volume,
+ // return without performing any fading. This fixes the music in room
+ // 406 in KQ6 (bug #3267956), where the game scripts ask for the background
+ // music to be played, and then faded to volume 127 (but the music is
+ // already at volume 127) and subsequently stopped.
+ if (argc >= 4 && musicSlot->volume == CLIP<uint16>(argv[1].toUint16(), 0, MUSIC_VOLUME_MAX))
+ return acc;
+
switch (argc) {
case 1: // SCI0
// SCI0 fades out all the time and when fadeout is done it will also