aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2006-01-23 20:09:25 +0000
committerMax Horn2006-01-23 20:09:25 +0000
commitec476b1fd0a12b34c2f65c83cc3db9aaf1205e99 (patch)
tree33bcb60888dc0b846c65d6bd0a9a9dd804aee9e1
parent0a150fa12831dc7e742a73c551159bbea3097668 (diff)
downloadscummvm-rg350-ec476b1fd0a12b34c2f65c83cc3db9aaf1205e99.tar.gz
scummvm-rg350-ec476b1fd0a12b34c2f65c83cc3db9aaf1205e99.tar.bz2
scummvm-rg350-ec476b1fd0a12b34c2f65c83cc3db9aaf1205e99.zip
Removing GID_ZAK256 and GID_LOOM256
svn-id: r20153
-rw-r--r--scumm/actor.cpp4
-rw-r--r--scumm/charset.cpp4
-rw-r--r--scumm/cursor.cpp4
-rw-r--r--scumm/debugger.cpp6
-rw-r--r--scumm/gfx.cpp8
-rw-r--r--scumm/help.cpp21
-rw-r--r--scumm/script.cpp2
-rw-r--r--scumm/script_v5.cpp18
-rw-r--r--scumm/scumm.cpp22
-rw-r--r--scumm/scumm.h2
-rw-r--r--scumm/sound.cpp6
-rw-r--r--scumm/string.cpp4
-rw-r--r--scumm/vars.cpp6
13 files changed, 49 insertions, 58 deletions
diff --git a/scumm/actor.cpp b/scumm/actor.cpp
index 381a4ebad2..5646087e2c 100644
--- a/scumm/actor.cpp
+++ b/scumm/actor.cpp
@@ -253,7 +253,7 @@ int Actor::remapDirection(int dir, bool is_walking) {
// not necessary here because we never call the function unless the
// actor is in the current room anyway.
- if (!_ignoreBoxes || (_vm->_gameId == GID_LOOM || _vm->_gameId == GID_LOOM256)) {
+ if (!_ignoreBoxes || _vm->_gameId == GID_LOOM) {
specdir = _vm->_extraBoxFlags[_walkbox];
if (specdir) {
if (specdir & 0x8000) {
@@ -1384,7 +1384,7 @@ void ScummEngine::actorTalk(const byte *msg) {
convertMessageToString(msg, _charsetBuffer, sizeof(_charsetBuffer));
// FIXME: Workaround for bugs #770039 and #770049
- if (_gameId == GID_LOOM || _gameId == GID_LOOM256) {
+ if (_gameId == GID_LOOM) {
if (!*_charsetBuffer)
return;
}
diff --git a/scumm/charset.cpp b/scumm/charset.cpp
index d620505a66..4ae6b85dad 100644
--- a/scumm/charset.cpp
+++ b/scumm/charset.cpp
@@ -1175,8 +1175,8 @@ void CharsetRendererV3::setColor(byte color)
bool useShadow = false;
_color = color;
- // FM-TOWNS version of Loom uses old colour method as well
- if ((_vm->_version >= 2) && (_vm->_features & GF_16COLOR || _vm->_gameId == GID_LOOM)) {
+ // FM-TOWNS version of Loom uses old color method as well
+ if ((_vm->_version >= 2) && (_vm->_features & GF_16COLOR || (_vm->_gameId == GID_LOOM && _vm->_version == 3))) {
useShadow = ((_color & 0xF0) != 0);
_color &= 0x0f;
} else if (_vm->_features & GF_OLD256) {
diff --git a/scumm/cursor.cpp b/scumm/cursor.cpp
index ed79b50169..384048d486 100644
--- a/scumm/cursor.cpp
+++ b/scumm/cursor.cpp
@@ -335,7 +335,7 @@ void ScummEngine_v6::useBompCursor(const byte *im, int width, int height) {
void ScummEngine_v5::redefineBuiltinCursorFromChar(int index, int chr) {
// Cursor image in both Looms are based on images from charset.
- if (_gameId != GID_LOOM && _gameId != GID_LOOM256) {
+ if (_gameId != GID_LOOM) {
// FIXME: Actually: is this opcode ever called by a non-Loom game?
// Which V3-V5 game besides Loom makes use of custom cursors, ever?
error("V3--V5 SO_CURSOR_IMAGE(%d,%d) called - tell Fingolfin where you saw this!", index, chr);
@@ -379,7 +379,7 @@ void ScummEngine_v5::redefineBuiltinCursorFromChar(int index, int chr) {
void ScummEngine_v5::redefineBuiltinCursorHotspot(int index, int x, int y) {
// Cursor image in both Looms are based on images from charset.
- if (_gameId != GID_LOOM && _gameId != GID_LOOM256) {
+ if (_gameId != GID_LOOM) {
// FIXME: Actually: is this opcode ever called by a non-Loom game?
// Which V3-V5 game besides Loom makes use of custom cursors, ever?
error("V3--V5 SO_CURSOR_HOTSPOT(%d,%d,%d) called - tell Fingolfin where you saw this!", index, x, y);
diff --git a/scumm/debugger.cpp b/scumm/debugger.cpp
index c4a8da0920..5cd4b9c3a7 100644
--- a/scumm/debugger.cpp
+++ b/scumm/debugger.cpp
@@ -104,7 +104,7 @@ ScummDebugger::ScummDebugger(ScummEngine *s)
DCmd_Register("scripts", &ScummDebugger::Cmd_PrintScript);
DCmd_Register("importres", &ScummDebugger::Cmd_ImportRes);
- if (_vm->_gameId == GID_LOOM || _vm->_gameId == GID_LOOM256)
+ if (_vm->_gameId == GID_LOOM)
DCmd_Register("drafts", &ScummDebugger::Cmd_PrintDraft);
DCmd_Register("loadgame", &ScummDebugger::Cmd_LoadGame);
@@ -824,7 +824,7 @@ bool ScummDebugger::Cmd_PrintDraft(int argc, const char **argv) {
const char *notes = "cdefgabC";
int i, base, draft;
- if (_vm->_gameId != GID_LOOM && _vm->_gameId != GID_LOOM256) {
+ if (_vm->_gameId != GID_LOOM) {
DebugPrintf("Command only works with Loom/LoomCD\n");
return true;
}
@@ -850,7 +850,7 @@ bool ScummDebugger::Cmd_PrintDraft(int argc, const char **argv) {
// Possibly they store information on where and/or how the draft can
// be used. They appear to remain constant throughout the game.
- base = (_vm->_gameId == GID_LOOM) ? 50 : 100;
+ base = (_vm->_version == 3) ? 50 : 100;
if (argc == 2) {
// We had to debug a problem at the end of the game that only
diff --git a/scumm/gfx.cpp b/scumm/gfx.cpp
index 03a3684ab5..babf6ca610 100644
--- a/scumm/gfx.cpp
+++ b/scumm/gfx.cpp
@@ -1105,7 +1105,7 @@ void ScummEngine::drawFlashlight() {
return;
// Calculate the area of the flashlight
- if (_gameId == GID_ZAK256 || _version <= 2) {
+ if (_gameId == GID_ZAK || _gameId == GID_MANIAC) {
x = _mouse.x + vs->xstart;
y = _mouse.y - vs->topline;
} else {
@@ -1118,7 +1118,7 @@ void ScummEngine::drawFlashlight() {
_flashlight.x = x - _flashlight.w / 2 - _screenStartStrip * 8;
_flashlight.y = y - _flashlight.h / 2;
- if (_gameId == GID_LOOM || _gameId == GID_LOOM256)
+ if (_gameId == GID_LOOM)
_flashlight.y -= 12;
// Clip the flashlight at the borders
@@ -3153,7 +3153,7 @@ void ScummEngine::dissolveEffect(int width, int height) {
// Speed up the effect for CD Loom since it uses it so often. I don't
// think the original had any delay at all, so on modern hardware it
// wasn't even noticeable.
- if (_gameId == GID_LOOM256)
+ if (_gameId == GID_LOOM && (_version == 3))
blits_before_refresh *= 2;
for (i = 0; i < w * h; i++) {
@@ -3280,7 +3280,7 @@ void ScummEngine::scrollEffect(int dir) {
void ScummEngine::unkScreenEffect6() {
// CD Loom (but not EGA Loom!) uses a more fine-grained dissolve
- if (_gameId == GID_LOOM256)
+ if (_gameId == GID_LOOM && (_version == 3))
dissolveEffect(1, 1);
else
dissolveEffect(8, 4);
diff --git a/scumm/help.cpp b/scumm/help.cpp
index 5ac6cbf885..df8552de4c 100644
--- a/scumm/help.cpp
+++ b/scumm/help.cpp
@@ -33,14 +33,12 @@ int ScummHelp::numPages(byte gameId) {
switch (gameId) {
case GID_MANIAC:
case GID_ZAK:
- case GID_ZAK256:
return 4;
break;
case GID_INDY3:
return 6;
break;
case GID_LOOM:
- case GID_LOOM256:
case GID_MONKEY_EGA:
case GID_MONKEY_VGA:
case GID_MONKEY:
@@ -113,13 +111,12 @@ void ScummHelp::updateStrings(byte gameId, byte version, Common::Platform platfo
ADD_TEXT(" or incorrect game behaviour.");
break;
case 3:
- if (gameId == GID_LOOM || gameId == GID_LOOM256)
+ if (gameId == GID_LOOM)
title = "Spinning drafts on the keyboard:";
else
title = "Main game controls:";
switch (gameId) {
case GID_ZAK:
- case GID_ZAK256:
case GID_MANIAC:
// HACK. I know use of g_scumm here is evil, however,
// introducing new GID and putting it everywhere will
@@ -182,7 +179,6 @@ void ScummHelp::updateStrings(byte gameId, byte version, Common::Platform platfo
ADD_BIND("b", "To Henry / To Indy");
break;
case GID_LOOM:
- case GID_LOOM256:
ADD_BIND("q, c", "play C minor on distaff");
ADD_BIND("w, d", "play D on distaff");
ADD_BIND("e, e", "play E on distaff");
@@ -260,10 +256,8 @@ void ScummHelp::updateStrings(byte gameId, byte version, Common::Platform platfo
}
break;
case 4:
- switch (gameId) {
- case GID_MANIAC:
- case GID_ZAK:
- title = "Other game controls:";
+ title = "Other game controls:";
+ if (version <= 2) {
ADD_TEXT("Inventory: (not yet implemented)");
ADD_BIND("u", "Scroll list up");
ADD_BIND("j", "Scroll list down");
@@ -283,10 +277,8 @@ void ScummHelp::updateStrings(byte gameId, byte version, Common::Platform platfo
ADD_BIND("F3", "Melissa");
ADD_BIND("F4", "Leslie");
}
- break;
- case GID_INDY3:
- case GID_ZAK256:
- title = "Other game controls:";
+ } else if (gameId == GID_INDY3 || gameId == GID_ZAK) {
+ // Indy3, or FM-TOWNS Zak
ADD_TEXT("Inventory:");
ADD_BIND("y", "Upper left item");
ADD_BIND("h", "Middle left item");
@@ -296,7 +288,7 @@ void ScummHelp::updateStrings(byte gameId, byte version, Common::Platform platfo
ADD_BIND("m", "Lower right item");
ADD_BIND("o", "Scroll list up");
ADD_BIND("l", "Scroll list down");
- if (gameId == GID_ZAK256) {
+ if (gameId == GID_ZAK) {
ADD_LINE;
ADD_TEXT("Switching characters:");
ADD_BIND("F1", "Zak");
@@ -304,7 +296,6 @@ void ScummHelp::updateStrings(byte gameId, byte version, Common::Platform platfo
ADD_BIND("F3", "Melissa");
ADD_BIND("F4", "Leslie");
}
- break;
}
break;
case 5:
diff --git a/scumm/script.cpp b/scumm/script.cpp
index b9a8195f18..62cd689980 100644
--- a/scumm/script.cpp
+++ b/scumm/script.cpp
@@ -538,7 +538,7 @@ int ScummEngine::readVar(uint var) {
if (!_copyProtection) {
if (_gameId == GID_LOOM && (_platform == Common::kPlatformFMTowns) && var == 214 && bit == 15) {
return 0;
- } else if (_gameId == GID_ZAK256 && var == 151 && bit == 8) {
+ } else if (_gameId == GID_ZAK && (_platform == Common::kPlatformFMTowns) && var == 151 && bit == 8) {
return 0;
}
}
diff --git a/scumm/script_v5.cpp b/scumm/script_v5.cpp
index f6ce0b7d70..800a214c7c 100644
--- a/scumm/script_v5.cpp
+++ b/scumm/script_v5.cpp
@@ -563,7 +563,7 @@ void ScummEngine_v5::o5_add() {
// understand the reasoning behind this, compare script 210 and 218 in
// room 20. Apparently they made a mistake when converting the absolute
// delays into relative ones.
- if (_gameId == GID_LOOM256 && vm.slot[_currentScript].number == 210 && _currentRoom == 20 && _resultVarNumber == 0x4000) {
+ if (_gameId == GID_LOOM && _version == 4 && vm.slot[_currentScript].number == 210 && _currentRoom == 20 && _resultVarNumber == 0x4000) {
switch (a) {
// Fix for the Var[250] == 11 case
case 138:
@@ -1740,7 +1740,7 @@ void ScummEngine_v5::o5_resourceRoutines() {
case 6: // SO_NUKE_SOUND
case 7: // SO_NUKE_COSTUME
case 8: // SO_NUKE_ROOM
- if (_gameId == GID_ZAK256)
+ if (_gameId == GID_ZAK && (_platform == Common::kPlatformFMTowns))
error("o5_resourceRoutines %d should not occur in Zak256", op);
else
res.setResourceCounter(resType[op-5], resid, 0x7F);
@@ -2266,12 +2266,12 @@ void ScummEngine_v5::o5_startScript() {
// FIXME: Script 171 loads a complete room resource, instead of the actual script.
// Causing invalid opcode cases, see bug #1290485
- if (_gameId == GID_ZAK256 && script == 171)
+ if (_gameId == GID_ZAK && (_platform == Common::kPlatformFMTowns) && script == 171)
return;
if (!_copyProtection) {
// Method used by original games to skip copy protection scheme
- if (_gameId == GID_LOOM && _currentRoom == 69 && script == 201)
+ if (_gameId == GID_LOOM && _version == 3 && _currentRoom == 69 && script == 201)
script = 205;
else if ((_gameId == GID_MONKEY_VGA || _gameId == GID_MONKEY_EGA) && script == 152)
return;
@@ -2321,7 +2321,7 @@ void ScummEngine_v5::o5_stringOps() {
b = getVarOrDirectByte(PARAM_2);
c = getVarOrDirectByte(PARAM_3);
ptr = getResourceAddress(rtString, a);
- if (_gameId != GID_LOOM256) { /* FIXME - LOOM256 */
+ if (!(_gameId == GID_LOOM && _version == 4)) { /* FIXME - LOOM256 */
if (ptr == NULL)
error("String %d does not exist", a);
ptr[b] = c;
@@ -2433,7 +2433,7 @@ void ScummEngine_v5::o5_verbOps() {
vs->curRect.top += 8;
break;
}
- } else if (_gameId == GID_LOOM256) {
+ } else if (_gameId == GID_LOOM && _version == 4) {
// FIXME: hack loom notes into right spot
if ((verb >= 90) && (verb <= 97)) { // Notes
switch (verb) {
@@ -2602,7 +2602,7 @@ void ScummEngine_v5::o5_walkActorToActor() {
return;
}
- if (_gameId == GID_LOOM256 && nr == 1 && nr2 == 0 &&
+ if (_gameId == GID_LOOM && _version == 4 && nr == 1 && nr2 == 0 &&
dist == 255 && vm.slot[_currentScript].number == 98) {
// WORKAROUND bug #743615: LoomCD script 98 contains this:
// walkActorToActor(1,0,255)
@@ -2736,7 +2736,7 @@ void ScummEngine_v5::decodeParseString() {
int offset = (uint16)getVarOrDirectWord(PARAM_1);
int delay = (uint16)getVarOrDirectWord(PARAM_2);
- if (_gameId == GID_LOOM256) {
+ if (_gameId == GID_LOOM && _version == 4) {
if (offset == 0 && delay == 0) {
VAR(VAR_MUSIC_TIMER) = 0;
_sound->stopCD();
@@ -2762,7 +2762,7 @@ void ScummEngine_v5::decodeParseString() {
// WORKAROUND: This happens when Chaos introduces
// herself to bishop Mandible. Of all the places to put
// a typo...
- if (_gameId == GID_LOOM256 && strcmp((const char *) _scriptPointer, "I am Choas.") == 0)
+ if (_gameId == GID_LOOM && strcmp((const char *) _scriptPointer, "I am Choas.") == 0)
printString(textSlot, (const byte *) "I am Chaos.");
else
printString(textSlot, _scriptPointer);
diff --git a/scumm/scumm.cpp b/scumm/scumm.cpp
index 7ad2329cc9..bb220853af 100644
--- a/scumm/scumm.cpp
+++ b/scumm/scumm.cpp
@@ -494,7 +494,7 @@ static const ScummGameSettings multiple_versions_md5_settings[] = {
{"6f0be328c64d689bb606d22a389e1b0f", "Loom (Macintosh)", GID_LOOM, 3, 0, MDT_PCSPK,
GF_SMALL_HEADER | GF_NO_SCALING | GF_16COLOR | GF_USE_KEY | GF_OLD_BUNDLE, Common::kPlatformMacintosh},
- {"5d88b9d6a88e6f8e90cded9d01b7f082", "Loom (256 color CD version)", GID_LOOM256, 4, 0, MDT_NONE,
+ {"5d88b9d6a88e6f8e90cded9d01b7f082", "Loom (256 color CD version)", GID_LOOM, 4, 0, MDT_NONE,
GF_SMALL_HEADER | GF_USE_KEY | GF_AUDIOTRACKS, Common::kPlatformPC},
{"c5d10e190d4b4d59114b824f2fdbd00e", "Loom (FM-TOWNS)", GID_LOOM, 3, 0, MDT_TOWNS,
GF_SMALL_HEADER | GF_NO_SCALING | GF_OLD256 | GF_AUDIOTRACKS, Common::kPlatformFMTowns},
@@ -677,18 +677,18 @@ static const ScummGameSettings multiple_versions_md5_settings[] = {
{"7020931d5a2be0a49d68e7a1882363e4", "Zak McKracken and the Alien Mindbenders (v1)", GID_ZAK, 1, 0, MDT_PCSPK,
GF_SMALL_HEADER | GF_USE_KEY | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALING, Common::kPlatformPC},
- {"2d4536a56e01da4b02eb021e7770afa2", "Zak McKracken and the Alien Mindbenders (FM-TOWNS)", GID_ZAK256, 3, 0, MDT_TOWNS,
+ {"2d4536a56e01da4b02eb021e7770afa2", "Zak McKracken and the Alien Mindbenders (FM-TOWNS)", GID_ZAK, 3, 0, MDT_TOWNS,
GF_SMALL_HEADER | GF_NO_SCALING | GF_OLD256 | GF_AUDIOTRACKS, Common::kPlatformFMTowns},
- {"ce3edc99cd4f478c5b37104d70c68ca5", "Zak McKracken and the Alien Mindbenders (FM-TOWNS Jp)", GID_ZAK256, 3, 0, MDT_TOWNS,
+ {"ce3edc99cd4f478c5b37104d70c68ca5", "Zak McKracken and the Alien Mindbenders (FM-TOWNS Jp)", GID_ZAK, 3, 0, MDT_TOWNS,
GF_SMALL_HEADER | GF_NO_SCALING | GF_OLD256 | GF_AUDIOTRACKS, Common::kPlatformFMTowns},
- {"1ca86e2cf9aaa2068738a1e5ba477e60", "Zak McKracken and the Alien Mindbenders (FM-TOWNS Jp)", GID_ZAK256, 3, 0, MDT_TOWNS,
+ {"1ca86e2cf9aaa2068738a1e5ba477e60", "Zak McKracken and the Alien Mindbenders (FM-TOWNS Jp)", GID_ZAK, 3, 0, MDT_TOWNS,
GF_SMALL_HEADER | GF_NO_SCALING | GF_OLD256 | GF_AUDIOTRACKS, Common::kPlatformFMTowns},
- {"2d388339d6050d8ccaa757b64633954e", "Indy/Loom Demo (FM-TOWNS)", GID_ZAK256, 3, 0, MDT_TOWNS,
+ {"2d388339d6050d8ccaa757b64633954e", "Indy/Loom Demo (FM-TOWNS)", GID_ZAK, 3, 0, MDT_TOWNS,
GF_SMALL_HEADER | GF_NO_SCALING | GF_OLD256 | GF_AUDIOTRACKS, Common::kPlatformFMTowns},
- {"77f5c9cc0986eb729c1a6b4c8823bbae", "Zak/Loom Demo (FM-TOWNS)", GID_ZAK256, 3, 0, MDT_TOWNS,
+ {"77f5c9cc0986eb729c1a6b4c8823bbae", "Zak/Loom Demo (FM-TOWNS)", GID_ZAK, 3, 0, MDT_TOWNS,
GF_SMALL_HEADER | GF_NO_SCALING | GF_OLD256 | GF_AUDIOTRACKS, Common::kPlatformFMTowns},
- {"3938ee1aa4433fca9d9308c9891172b1", "Indy/Zak Demo (FM-TOWNS)", GID_ZAK256, 3, 0, MDT_TOWNS,
+ {"3938ee1aa4433fca9d9308c9891172b1", "Indy/Zak Demo (FM-TOWNS)", GID_ZAK, 3, 0, MDT_TOWNS,
GF_SMALL_HEADER | GF_NO_SCALING | GF_OLD256 | GF_AUDIOTRACKS, Common::kPlatformFMTowns},
#endif
{NULL, NULL, 0, 0, MDT_NONE, 0, 0, Common::kPlatformUnknown}
@@ -2340,7 +2340,7 @@ int ScummEngine::scummLoop(int delta) {
VAR(VAR_TMR_1) += delta;
VAR(VAR_TMR_2) += delta;
VAR(VAR_TMR_3) += delta;
- if (_gameId == GID_ZAK256 || _gameId == GID_INDY3) {
+ if (_gameId == GID_ZAK || _gameId == GID_INDY3) {
// All versions of Indy3 set three extra timers
// FM-TOWNS version of Zak sets three extra timers
VAR(39) += delta;
@@ -2487,7 +2487,7 @@ load_game:
_charset->_hasMask = false;
// HACK as in game save stuff isn't supported currently
- if (_gameId == GID_LOOM || _gameId == GID_LOOM256) {
+ if (_gameId == GID_LOOM) {
int args[16];
uint value;
memset(args, 0, sizeof(args));
@@ -2495,8 +2495,10 @@ load_game:
if (_platform == Common::kPlatformMacintosh)
value = 105;
+ else if (_version == 4) // 256 color CD version
+ value = 150;
else
- value = (_gameId == GID_LOOM256) ? 150 : 100;
+ value = 100;
byte restoreScript = (_platform == Common::kPlatformFMTowns) ? 17 : 18;
// if verbs should be shown restore them
if (VAR(value) == 2)
diff --git a/scumm/scumm.h b/scumm/scumm.h
index c0c2412b70..d8fec6cfdf 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -195,7 +195,6 @@ enum ScummGameId {
GID_INDY3,
GID_INDY4,
GID_LOOM,
- GID_LOOM256,
GID_MANIAC,
GID_MONKEY_EGA,
GID_MONKEY_VGA,
@@ -205,7 +204,6 @@ enum ScummGameId {
GID_SAMNMAX,
GID_TENTACLE,
GID_ZAK,
- GID_ZAK256,
GID_HEGAME, // Generic name for all HE games with default behaviour
GID_PUTTDEMO,
diff --git a/scumm/sound.cpp b/scumm/sound.cpp
index 067cb0dc93..df45982ec5 100644
--- a/scumm/sound.cpp
+++ b/scumm/sound.cpp
@@ -1111,7 +1111,7 @@ void Sound::startCDTimer() {
// when Chaos first appears, and I have to use 101 for Monkey 1 or the
// intro music will be cut short.
- if (_vm->_gameId == GID_LOOM256)
+ if (_vm->_gameId == GID_LOOM && _vm->_version == 4)
timer_interval = 100;
else
timer_interval = 101;
@@ -1766,7 +1766,7 @@ void ScummEngine::convertADResource(int type, int idx, byte *src_ptr, int size)
if (_gameId == GID_INDY3) {
// Note: since we fix ppqn at 480, ppqn/473 is almost 1
dw = 500000 * 256 / 473 * ppqn / ticks;
- } else if (_gameId == GID_LOOM) {
+ } else if (_gameId == GID_LOOM && _version == 3) {
dw = 500000 * ppqn / 4 / ticks;
} else {
dw = 500000 * 256 / ticks;
@@ -2108,7 +2108,7 @@ int ScummEngine::readSoundResourceSmallHeader(int type, int idx) {
debug(4, "readSoundResourceSmallHeader(%d)", idx);
- if ((_gameId == GID_LOOM) && (_platform == Common::kPlatformPC) && VAR(VAR_SOUNDCARD) == 4) {
+ if ((_gameId == GID_LOOM) && (_version == 3) && (_platform == Common::kPlatformPC) && VAR(VAR_SOUNDCARD) == 4) {
// Roland resources in Loom are tagless
// So we add an RO tag to allow imuse to detect format
byte *ptr, *src_ptr;
diff --git a/scumm/string.cpp b/scumm/string.cpp
index e4fceeb66a..ee7cabf52f 100644
--- a/scumm/string.cpp
+++ b/scumm/string.cpp
@@ -410,7 +410,7 @@ void ScummEngine::CHARSET_1() {
if (!_haveMsg)
return;
- if (!(_features & GF_NEW_CAMERA) && !(_gameId == GID_ZAK256 && getTalkingActor() == 0xFF)) {
+ if (!(_features & GF_NEW_CAMERA) && !(_gameId == GID_ZAK && (_platform == Common::kPlatformFMTowns) && getTalkingActor() == 0xFF)) {
if ((camera._dest.x / 8) != (camera._cur.x / 8) || camera._cur.x != camera._last.x)
return;
}
@@ -578,7 +578,7 @@ void ScummEngine::CHARSET_1() {
// HE games which use sprites for subtitles
} else if (_heversion >= 60 && !ConfMan.getBool("subtitles") && _sound->isSoundRunning(1)) {
// Special case for HE games
- } else if ((_gameId == GID_LOOM256) && !ConfMan.getBool("subtitles") && (_sound->pollCD())) {
+ } else if ((_gameId == GID_LOOM) && !ConfMan.getBool("subtitles") && (_sound->pollCD())) {
// Special case for loomcd, since it only uses CD audio.for sound
} else if (!ConfMan.getBool("subtitles") && (!_haveActorSpeechMsg || _mixer->isSoundHandleActive(_sound->_talkChannelHandle))) {
// Subtitles are turned off, and there is a voice version
diff --git a/scumm/vars.cpp b/scumm/vars.cpp
index f01e228429..8fa8be6a06 100644
--- a/scumm/vars.cpp
+++ b/scumm/vars.cpp
@@ -167,7 +167,7 @@ void ScummEngine_v5::setupScummVars() {
if (_version >= 4) {
VAR_V5_TALK_STRING_Y = 54;
}
- if (_gameId == GID_LOOM256 || _version >= 5) {
+ if ((_gameId == GID_LOOM && _version == 4) || _version >= 5) {
VAR_NOSUBTITLES = 60;
}
}
@@ -655,7 +655,7 @@ void ScummEngine::initScummVars() {
VAR(VAR_SOUNDCARD) = 3;
break;
default:
- if ((_gameId == GID_MONKEY_EGA || _gameId == GID_MONKEY_VGA || _gameId == GID_LOOM)
+ if ((_gameId == GID_MONKEY_EGA || _gameId == GID_MONKEY_VGA || (_gameId == GID_LOOM && _version == 3))
&& (_platform == Common::kPlatformPC)) {
if (_gameId == GID_LOOM) {
char buf[50];
@@ -694,7 +694,7 @@ void ScummEngine::initScummVars() {
// Set screen size for the Macintosh version of Indy3/Loom
VAR(39) = 320;
}
- if (_platform == Common::kPlatformPC && _gameId == GID_LOOM) {
+ if (_platform == Common::kPlatformPC && _gameId == GID_LOOM && _version == 3) {
// Set number of sound resources
VAR(39) = 80;
}