aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorTravis Howell2005-05-09 02:38:58 +0000
committerTravis Howell2005-05-09 02:38:58 +0000
commit69d000d2d04bf55b2c13fc9f7cc5b201385fdb87 (patch)
treef7101a79cf18eff34779f97e596002a45bb5b0d7 /scumm
parent51b92411e2dade3bcc40b619032a058b25ae3120 (diff)
downloadscummvm-rg350-69d000d2d04bf55b2c13fc9f7cc5b201385fdb87.tar.gz
scummvm-rg350-69d000d2d04bf55b2c13fc9f7cc5b201385fdb87.tar.bz2
scummvm-rg350-69d000d2d04bf55b2c13fc9f7cc5b201385fdb87.zip
All SCUMM6 games use VAR_SUBTITLES, not VAR_NOSUBTITLES.
Cleanup. svn-id: r17989
Diffstat (limited to 'scumm')
-rw-r--r--scumm/script.cpp33
-rw-r--r--scumm/scumm.cpp1
-rw-r--r--scumm/scumm.h1
-rw-r--r--scumm/vars.cpp20
4 files changed, 32 insertions, 23 deletions
diff --git a/scumm/script.cpp b/scumm/script.cpp
index 809ecea2c4..03ad159690 100644
--- a/scumm/script.cpp
+++ b/scumm/script.cpp
@@ -505,12 +505,11 @@ int ScummEngine::readVar(uint var) {
}
}
- if (var == VAR_NOSUBTITLES) {
- if (_gameId == GID_LOOM256 || _heversion >= 60)
- return !ConfMan.getBool("subtitles");
- else if (_gameId == GID_SAMNMAX)
- // Used as VAR_SUBTITLES in Sam & Max during Conroy Bumpus song
- return ConfMan.getBool("subtitles");
+ if (VAR_SUBTITLES != 0xFF && var == VAR_SUBTITLES) {
+ return ConfMan.getBool("subtitles");
+ }
+ if (VAR_SUBTITLES != 0xFF && var == VAR_NOSUBTITLES) {
+ return !ConfMan.getBool("subtitles");
}
checkRange(_numVariables - 1, 0, var, "Variable %d out of range(r)");
@@ -574,20 +573,24 @@ void ScummEngine::writeVar(uint var, int value) {
if (!(var & 0xF000)) {
checkRange(_numVariables - 1, 0, var, "Variable %d out of range(w)");
+ if (VAR_SUBTITLES != 0xFF && var == VAR_SUBTITLES) {
+ // Ignore default setting in HE60/61 games
+ if (_heversion <= 61 && vm.slot[_currentScript].number == 1)
+ return;
+ assert(value == 0 || value == 1);
+ ConfMan.set("subtitles", value);
+ }
+ if (VAR_NOSUBTITLES != 0xFF && var == VAR_NOSUBTITLES) {
+ assert(value == 0 || value == 1);
+ ConfMan.set("subtitles", !value);
+ }
+
if (var == VAR_CHARINC && ConfMan.hasKey("talkspeed")) {
uint talkspeed = ConfMan.getInt("talkspeed");
if (talkspeed <= 9)
VAR(VAR_CHARINC) = talkspeed;
- } else
+ } else {
_scummVars[var] = value;
-
- // stay in sync with loom cd subtitle var
- if ((_gameId == GID_LOOM256 || _heversion >= 60) && var == VAR_NOSUBTITLES) {
- assert(value == 0 || value == 1);
- if (_heversion <= 61 && vm.slot[_currentScript].number == 1)
- value = !ConfMan.getBool("subtitles");
- else
- ConfMan.set("subtitles", (value == 0));
}
if ((_varwatch == (int)var) || (_varwatch == 0)) {
diff --git a/scumm/scumm.cpp b/scumm/scumm.cpp
index 20af0cf4ad..ed4a16fa8a 100644
--- a/scumm/scumm.cpp
+++ b/scumm/scumm.cpp
@@ -1017,6 +1017,7 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameS
VAR_ROOM_WIDTH = 0xFF;
VAR_ROOM_HEIGHT = 0xFF;
+ VAR_SUBTITLES = 0xFF;
VAR_V6_EMSSPACE = 0xFF;
VAR_CAMERA_POS_Y = 0xFF;
diff --git a/scumm/scumm.h b/scumm/scumm.h
index 91fc9b5901..eecec914b8 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -1259,6 +1259,7 @@ public:
// V6+
byte VAR_ROOM_WIDTH;
byte VAR_ROOM_HEIGHT;
+ byte VAR_SUBTITLES;
byte VAR_V6_EMSSPACE;
// V7/V8 (=GF_NEW_CAMERA) specific variables
diff --git a/scumm/vars.cpp b/scumm/vars.cpp
index bf2d5d9692..8911a92e39 100644
--- a/scumm/vars.cpp
+++ b/scumm/vars.cpp
@@ -88,7 +88,6 @@ void ScummEngine::setupScummVars() {
}
if (_gameId == GID_LOOM256 || _version >= 5) {
- VAR_NOSUBTITLES = 60;
VAR_SOUNDPARAM = 64;
VAR_SOUNDPARAM2 = 65;
VAR_SOUNDPARAM3 = 66;
@@ -149,17 +148,27 @@ void ScummEngine_v5::setupScummVars() {
VAR_CURRENT_LIGHTS = 9;
- if (_version >= 4)
+ if (_version >= 4) {
VAR_V5_TALK_STRING_Y = 54;
+ }
+ if (_gameId == GID_LOOM256 || _version >= 5) {
+ VAR_NOSUBTITLES = 60;
+ }
}
void ScummEngine_v6::setupScummVars() {
// Many vars are the same as in V5 & V6 games, so just call the inherited method first
ScummEngine::setupScummVars();
+ if (_heversion == 0) {
+ VAR_V6_SOUNDMODE = 9;
+ }
+
VAR_ROOM_WIDTH = 41;
VAR_ROOM_HEIGHT = 54;
+ VAR_SUBTITLES = 60;
+
VAR_LEFTBTN_HOLD = 74;
VAR_RIGHTBTN_HOLD = 75;
@@ -171,10 +180,6 @@ void ScummEngine_v6::setupScummVars() {
VAR_V6_EMSSPACE = 76;
VAR_RANDOM_NR = 118;
- if (_heversion < 70) {
- VAR_V6_SOUNDMODE = 9;
- }
-
VAR_TIMEDATE_YEAR = 119;
VAR_TIMEDATE_MONTH = 129;
VAR_TIMEDATE_DAY = 128;
@@ -183,7 +188,6 @@ void ScummEngine_v6::setupScummVars() {
// Sam & Max specific
VAR_CHARSET_MASK = 123;
-
}
void ScummEngine_v70he::setupScummVars() {
@@ -238,7 +242,7 @@ void ScummEngine_v72he::setupScummVars() {
VAR_CUTSCENEEXIT_KEY = 44;
VAR_TALKSTOP_KEY = 45;
VAR_HAVE_MSG = 46;
- VAR_NOSUBTITLES = 47;
+ VAR_SUBTITLES = 47;
VAR_CHARINC = 48;
VAR_TALK_ACTOR = 49;
VAR_LAST_SOUND = 50;