aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/script.cpp4
-rw-r--r--scumm/script_v5.cpp8
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