aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sword2/interpreter.cpp5
-rw-r--r--engines/sword2/logic.h1
2 files changed, 4 insertions, 2 deletions
diff --git a/engines/sword2/interpreter.cpp b/engines/sword2/interpreter.cpp
index 90bdea38ff..c496d2bafe 100644
--- a/engines/sword2/interpreter.cpp
+++ b/engines/sword2/interpreter.cpp
@@ -193,7 +193,8 @@ void Logic::setupOpcodes() {
OPCODE(fnRefreshInventory),
OPCODE(fnChangeShadows)
};
-
+
+ _numOpcodes = ARRAYSIZE(opcodes);
_opcodes = opcodes;
}
@@ -609,7 +610,7 @@ int Logic::runScript2(byte *scriptData, byte *objectData, byte *offsetPtr) {
case CP_CALL_MCODE:
// Call an mcode routine
Read16ip(parameter);
- assert(parameter < ARRAYSIZE(opcodes));
+ assert(parameter < _numOpcodes);
// amount to adjust stack by (no of parameters)
Read8ip(value);
debug(9, "CP_CALL_MCODE: '%s', %d", _opcodes[parameter].desc, value);
diff --git a/engines/sword2/logic.h b/engines/sword2/logic.h
index cc928858d6..e68d9c9317 100644
--- a/engines/sword2/logic.h
+++ b/engines/sword2/logic.h
@@ -184,6 +184,7 @@ public:
const char *desc;
};
const OpcodeEntry *_opcodes;
+ int _numOpcodes;
void setupOpcodes();
int32 fnTestFunction(int32 *params);