diff options
author | Johannes Schickel | 2014-08-02 21:46:43 +0200 |
---|---|---|
committer | Johannes Schickel | 2014-08-02 21:46:43 +0200 |
commit | 0708a0e83aacfdb2d5448c3a302e83348ebe64ba (patch) | |
tree | 43ea6d7134e2b88de1eb3d447e52415310e180fb | |
parent | 7416a4f4b2eb66af6e9472618973abc93eeb94de (diff) | |
parent | 94f504f22a69177f591d2d2e9b856d9ad0bfbe20 (diff) | |
download | scummvm-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.cpp | 5 | ||||
-rw-r--r-- | engines/scumm/sound.cpp | 9 |
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; |