diff options
-rw-r--r-- | scumm/actor.cpp | 4 | ||||
-rw-r--r-- | scumm/charset.cpp | 4 | ||||
-rw-r--r-- | scumm/cursor.cpp | 4 | ||||
-rw-r--r-- | scumm/debugger.cpp | 6 | ||||
-rw-r--r-- | scumm/gfx.cpp | 8 | ||||
-rw-r--r-- | scumm/help.cpp | 21 | ||||
-rw-r--r-- | scumm/script.cpp | 2 | ||||
-rw-r--r-- | scumm/script_v5.cpp | 18 | ||||
-rw-r--r-- | scumm/scumm.cpp | 22 | ||||
-rw-r--r-- | scumm/scumm.h | 2 | ||||
-rw-r--r-- | scumm/sound.cpp | 6 | ||||
-rw-r--r-- | scumm/string.cpp | 4 | ||||
-rw-r--r-- | scumm/vars.cpp | 6 |
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; } |