aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2014-08-02 21:46:43 +0200
committerJohannes Schickel2014-08-02 21:46:43 +0200
commit0708a0e83aacfdb2d5448c3a302e83348ebe64ba (patch)
tree43ea6d7134e2b88de1eb3d447e52415310e180fb
parent7416a4f4b2eb66af6e9472618973abc93eeb94de (diff)
parent94f504f22a69177f591d2d2e9b856d9ad0bfbe20 (diff)
downloadscummvm-rg350-0708a0e83aacfdb2d5448c3a302e83348ebe64ba.tar.gz
scummvm-rg350-0708a0e83aacfdb2d5448c3a302e83348ebe64ba.tar.bz2
scummvm-rg350-0708a0e83aacfdb2d5448c3a302e83348ebe64ba.zip
Merge pull request #483 from lordhoto/scumm-sfx-fix
SCUMM: Fix playback of digital sfx when speech is muted.
-rw-r--r--engines/scumm/input.cpp5
-rw-r--r--engines/scumm/sound.cpp9
2 files changed, 8 insertions, 6 deletions
diff --git a/engines/scumm/input.cpp b/engines/scumm/input.cpp
index 5e2566dc32..824dfec144 100644
--- a/engines/scumm/input.cpp
+++ b/engines/scumm/input.cpp
@@ -435,8 +435,9 @@ void ScummEngine_v6::processKeyboard(Common::KeyState lastKeyHit) {
break;
}
- if (VAR_VOICE_MODE != 0xFF)
- VAR(VAR_VOICE_MODE) = _voiceMode;
+ // We need to sync the current sound settings here to make sure that
+ // we actually update the mute state of speech properly.
+ syncSoundSettings();
return;
}
diff --git a/engines/scumm/sound.cpp b/engines/scumm/sound.cpp
index 7f045517bc..cb428d1c15 100644
--- a/engines/scumm/sound.cpp
+++ b/engines/scumm/sound.cpp
@@ -658,7 +658,11 @@ void Sound::startTalkSound(uint32 offset, uint32 b, int mode, Audio::SoundHandle
_vm->_imuseDigital->startVoice(kTalkSoundID, input);
#endif
} else {
- _mixer->playStream(Audio::Mixer::kSpeechSoundType, handle, input, id);
+ if (mode == 1) {
+ _mixer->playStream(Audio::Mixer::kSFXSoundType, handle, input, id);
+ } else {
+ _mixer->playStream(Audio::Mixer::kSpeechSoundType, handle, input, id);
+ }
}
}
}
@@ -847,9 +851,6 @@ void Sound::soundKludge(int *list, int num) {
}
void Sound::talkSound(uint32 a, uint32 b, int mode, int channel) {
- if (_vm->_game.version >= 5 && ConfMan.getBool("speech_mute"))
- return;
-
if (mode == 1) {
_talk_sound_a1 = a;
_talk_sound_b1 = b;