diff options
-rw-r--r-- | scumm/script.cpp | 4 | ||||
-rw-r--r-- | scumm/script_v5.cpp | 8 |
2 files changed, 7 insertions, 5 deletions
diff --git a/scumm/script.cpp b/scumm/script.cpp index 53fa2988d8..7d501d8ce6 100644 --- a/scumm/script.cpp +++ b/scumm/script.cpp @@ -355,7 +355,7 @@ int Scumm::readVar(uint var) { return _vars[var]; if (var & 0x8000) { - if ((_gameId == GID_ZAK256) || (_gameId == GID_LOOM)) { + if ((_gameId == GID_ZAK256) || (_features & GF_OLD_BUNDLE)) { // Emulate a wierd hack in Zak256 to read individual // bits of a normal global int b = (var & 0x000F); @@ -405,7 +405,7 @@ void Scumm::writeVar(uint var, int value) { } if (var & 0x8000) { - if ((_gameId == GID_ZAK256) || (_gameId == GID_LOOM)) { + if ((_gameId == GID_ZAK256) || (_features & GF_OLD_BUNDLE)) { // Emulate a wierd hack in Zak256 to read individual // bits of a normal global int b = (var & 0x000F); diff --git a/scumm/script_v5.cpp b/scumm/script_v5.cpp index 12b86cfdc5..1d383492c5 100644 --- a/scumm/script_v5.cpp +++ b/scumm/script_v5.cpp @@ -954,7 +954,7 @@ void Scumm_v5::o5_getActorScale() { return; // INDY3 uses this opcode as a wait_for_actor(); - if ((_gameId == GID_INDY3_256) || (_features & GF_OLD_BUNDLE)) { + if ((_gameId == GID_INDY3_256) || (_gameId == GID_INDY3)) { byte *oldaddr = _scriptPointer - 1; if (derefActorSafe(getVarOrDirectByte(0x80), "o5_wait")->moving) { _scriptPointer = oldaddr; @@ -986,7 +986,7 @@ void Scumm_v5::o5_getActorX() { int a; getResultPos(); - if (_gameId == GID_INDY3_256) + if ((_gameId == GID_INDY3_256) || (_gameId == GID_INDY3)) a = getVarOrDirectByte(0x80); else a = getVarOrDirectWord(0x80); @@ -998,7 +998,9 @@ void Scumm_v5::o5_getActorY() { int a; getResultPos(); - if (_gameId == GID_INDY3_256) { + if (_gameId == GID_INDY3) + a = getVarOrDirectByte(0x80); + else if (_gameId == GID_INDY3_256) { a = getVarOrDirectByte(0x80); // Indy3 hack to cheat the 'Leap of Faith' grail test |