aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2004-07-24 07:14:26 +0000
committerTravis Howell2004-07-24 07:14:26 +0000
commit2cbc4039e8d33fa8e9f4e9152b479af4567cbe64 (patch)
tree8cdab68529489f900382b39b13ca6b16eae3e3fc
parent086c8da888b4a016151f23ea26b775104ad5d5dc (diff)
downloadscummvm-rg350-2cbc4039e8d33fa8e9f4e9152b479af4567cbe64.tar.gz
scummvm-rg350-2cbc4039e8d33fa8e9f4e9152b479af4567cbe64.tar.bz2
scummvm-rg350-2cbc4039e8d33fa8e9f4e9152b479af4567cbe64.zip
A few HE games are supported now.
svn-id: r14313
-rw-r--r--scumm/script.cpp16
-rw-r--r--scumm/script_v5.cpp12
2 files changed, 13 insertions, 15 deletions
diff --git a/scumm/script.cpp b/scumm/script.cpp
index 56ad1ae5b1..c5c2452ddd 100644
--- a/scumm/script.cpp
+++ b/scumm/script.cpp
@@ -460,7 +460,8 @@ int ScummEngine::readVar(uint var) {
else
copyprotbypassed = true;
- debugC(DEBUG_VARS, "readvar(%d)", var);
+ if (var == VAR_TIMER)
+ debug(1, "readvar(%d)", var);
if (var & 0x2000 && !(_features & GF_NEW_OPCODES)) {
a = fetchScriptWord();
@@ -503,16 +504,10 @@ int ScummEngine::readVar(uint var) {
if (!_copyProtection) {
// INDY3, EGA Loom and, apparently, Zak256 check this
// during the game...
- if (_gameId == GID_INDY3 && (_features & GF_OLD_BUNDLE) && var == 94 && bit == 4) {
+ if (_gameId == GID_INDY3 && (_features & GF_OLD_BUNDLE) && var == 94 && bit == 4)
return 0;
- } else if (var == 221 && bit == 14 && _gameId == GID_LOOM && (_features & GF_MACINTOSH)) { // For Mac Loom
+ else if (_gameId == GID_ZAK256 && var == 151 && bit == 8)
return 0;
- // For all other Loom versions? PC and FM Towns at least in any event
- } else if (var == 214 && bit == 15 && _gameId == GID_LOOM) {
- return 0;
- } else if (_gameId == GID_ZAK256 && var == 151 && bit == 8) {
- return 0;
- }
}
checkRange(_numVariables - 1, 0, var, "Variable %d out of range(rzb)");
@@ -545,7 +540,8 @@ int ScummEngine::readVar(uint var) {
}
void ScummEngine::writeVar(uint var, int value) {
- debugC(DEBUG_VARS, "writeVar(%d, %d)", var, value);
+ if (var == VAR_TIMER)
+ debug(1, "writeVar(%d, %d)", var, value);
if (!(var & 0xF000)) {
checkRange(_numVariables - 1, 0, var, "Variable %d out of range(w)");
diff --git a/scumm/script_v5.cpp b/scumm/script_v5.cpp
index b542f3d1ec..15c7b0a75b 100644
--- a/scumm/script_v5.cpp
+++ b/scumm/script_v5.cpp
@@ -2200,11 +2200,13 @@ void ScummEngine_v5::o5_startScript() {
getWordVararg(data);
- // Method used by original games to skip copy protection scheme
- //if (_gameId == GID_LOOM && _currentRoom == 69 && script == 201)
- // script = 205;
- //else if ((_gameId == GID_MONKEY_VGA || _gameId == GID_MONKEY_EGA) && script == 152)
- // return;
+ if (!_copyProtection) {
+ // Method used by original games to skip copy protection scheme
+ if (_gameId == GID_LOOM && _currentRoom == 69 && script == 201)
+ script = 205;
+ else if ((_gameId == GID_MONKEY_VGA || _gameId == GID_MONKEY_EGA) && script == 152)
+ return;
+ }
runScript(script, (op & 0x20) != 0, (op & 0x40) != 0, data);
}