From ecdb98a0eea111bf0c464fbea3aefa8a102590fc Mon Sep 17 00:00:00 2001 From: Max Horn Date: Fri, 13 Sep 2002 11:59:43 +0000 Subject: [PATCH] patch #608226 (Sam & Max sound fix) svn-id: r4926 --- scumm/sound.cpp | 21 ++++++++++++++------- scumm/sound.h | 2 +- scumm/string.cpp | 1 - 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/scumm/sound.cpp b/scumm/sound.cpp index 26b38392514..492bdcd1c80 100644 --- a/scumm/sound.cpp +++ b/scumm/sound.cpp @@ -382,10 +382,11 @@ void Sound::processSfxQueues() { bool b, finished; if (_talk_sound_mode != 0) { - if (_talk_sound_mode == 2) - _talkChannel = startTalkSound(_talk_sound_a, _talk_sound_b, _talk_sound_mode); - else - startTalkSound(_talk_sound_a, _talk_sound_b, _talk_sound_mode); + if (_talk_sound_mode & 1) + + startTalkSound(_talk_sound_a1, _talk_sound_b1, 1); + if (_talk_sound_mode & 2) + _talkChannel = startTalkSound(_talk_sound_a2, _talk_sound_b2, 2); _talk_sound_mode = 0; } @@ -623,10 +624,16 @@ void Sound::soundKludge(int16 * list) { } void Sound::talkSound(uint32 a, uint32 b, int mode, int frame) { - _talk_sound_a = a; - _talk_sound_b = b; - _talk_sound_mode = mode; + if (mode == 1) { + _talk_sound_a1 = a; + _talk_sound_b1 = b; + } else { + _talk_sound_a2 = a; + _talk_sound_b2 = b; + } + _talk_sound_frame = frame; + _talk_sound_mode |= mode; } /* The sound code currently only supports General Midi. diff --git a/scumm/sound.h b/scumm/sound.h index 39aba83778c..773fc51787f 100644 --- a/scumm/sound.h +++ b/scumm/sound.h @@ -54,7 +54,7 @@ enum { int _talkChannel; /* Mixer channel actor is talking on */ File *_sfxFile; - uint32 _talk_sound_a, _talk_sound_b; + uint32 _talk_sound_a1, _talk_sound_a2, _talk_sound_b1, _talk_sound_b2; byte _talk_sound_mode; int _talk_sound_frame; bool _mouthSyncMode; diff --git a/scumm/string.cpp b/scumm/string.cpp index 8c0a50f607a..0c5922af219 100644 --- a/scumm/string.cpp +++ b/scumm/string.cpp @@ -294,7 +294,6 @@ void Scumm::CHARSET_1() } if (a && !string[0].no_talk_anim) { -// a->startAnimActor(a->talkFrame1); has_anim = true; _useTalkAnims = true; }