diff options
-rw-r--r-- | scumm/scumm.h | 1 | ||||
-rw-r--r-- | scumm/string.cpp | 10 | ||||
-rw-r--r-- | scumm/vars.cpp | 2 |
3 files changed, 10 insertions, 3 deletions
diff --git a/scumm/scumm.h b/scumm/scumm.h index fbee5d657f..4fa6b212c8 100644 --- a/scumm/scumm.h +++ b/scumm/scumm.h @@ -1313,6 +1313,7 @@ public: byte VAR_CUSTOMSCALETABLE; byte VAR_VIDEONAME; + byte VAR_V6_SOUNDMODE; void launch(); diff --git a/scumm/string.cpp b/scumm/string.cpp index 0c5922af21..c51eb31e5a 100644 --- a/scumm/string.cpp +++ b/scumm/string.cpp @@ -173,10 +173,14 @@ void Scumm::unkMessage1() a = buffer[2] | (buffer[3] << 8) | (buffer[6] << 16) | (buffer[7] << 24); b = buffer[10] | (buffer[11] << 8) | (buffer[14] << 16) | (buffer[15] << 24); -// if (_saveSound != 1) - _sound->talkSound(a, b, 1, -1); + + // Sam and Max uses a caching system, printing empty messages + // and setting VAR_V6_SOUNDMODE beforehand. See patch 609791. + // FIXME: There are other VAR_V6_SOUNDMODE states, as + // mentioned in the patch. FIXME after iMUSE is done. + if (_gameId != GID_SAMNMAX || (_vars[VAR_V6_SOUNDMODE] != 2)) + _sound->talkSound(a, b, 1, -1); } -// warning("unkMessage1(\"%s\")", buffer); } void Scumm::unkMessage2() diff --git a/scumm/vars.cpp b/scumm/vars.cpp index 18c6076e83..c73f3d6238 100644 --- a/scumm/vars.cpp +++ b/scumm/vars.cpp @@ -107,6 +107,8 @@ void Scumm::setupScummVarsOld() VAR_V6_SCREEN_HEIGHT = 54; VAR_V6_EMSSPACE = 76; VAR_V6_RANDOM_NR = 118; + + VAR_V6_SOUNDMODE = 9; } |