aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Brown2002-09-16 08:22:05 +0000
committerJames Brown2002-09-16 08:22:05 +0000
commit02f9056b4a4f124e59c8172f1c70773d9482e1c6 (patch)
tree94f128046d02f7697a7f6f207b1087ced0ebb9fe
parente0e780951824c187dcb95f5aa83331ac9faa35fd (diff)
downloadscummvm-rg350-02f9056b4a4f124e59c8172f1c70773d9482e1c6.tar.gz
scummvm-rg350-02f9056b4a4f124e59c8172f1c70773d9482e1c6.tar.bz2
scummvm-rg350-02f9056b4a4f124e59c8172f1c70773d9482e1c6.zip
609791: Sam and Max 'phantom sound' (precaching) hack.
svn-id: r4947
-rw-r--r--scumm/scumm.h1
-rw-r--r--scumm/string.cpp10
-rw-r--r--scumm/vars.cpp2
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;
}