aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2002-09-13 11:59:43 +0000
committerMax Horn2002-09-13 11:59:43 +0000
commitecdb98a0eea111bf0c464fbea3aefa8a102590fc (patch)
treeed889fe83fdaa7e322165fdac77a4378f095c8db
parent364806e4e474701a9f022b1b3290ce2edaf19d88 (diff)
downloadscummvm-rg350-ecdb98a0eea111bf0c464fbea3aefa8a102590fc.tar.gz
scummvm-rg350-ecdb98a0eea111bf0c464fbea3aefa8a102590fc.tar.bz2
scummvm-rg350-ecdb98a0eea111bf0c464fbea3aefa8a102590fc.zip
patch #608226 (Sam & Max sound fix)
svn-id: r4926
-rw-r--r--scumm/sound.cpp21
-rw-r--r--scumm/sound.h2
-rw-r--r--scumm/string.cpp1
3 files changed, 15 insertions, 9 deletions
diff --git a/scumm/sound.cpp b/scumm/sound.cpp
index 26b3839251..492bdcd1c8 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 39aba83778..773fc51787 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 8c0a50f607..0c5922af21 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;
}