aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2009-01-18 17:24:47 +0000
committerJohannes Schickel2009-01-18 17:24:47 +0000
commitc003d62429399db2d8ca11dc66461a98c52d0538 (patch)
tree0ffca70e1eaa1b67459bab4a86f69141a4c59cc3
parentec5b64147dd7bf883cefb205c2801c068358dc1a (diff)
downloadscummvm-rg350-c003d62429399db2d8ca11dc66461a98c52d0538.tar.gz
scummvm-rg350-c003d62429399db2d8ca11dc66461a98c52d0538.tar.bz2
scummvm-rg350-c003d62429399db2d8ca11dc66461a98c52d0538.zip
- Fixed bug in script code of LoL
- Cleanup svn-id: r35905
-rw-r--r--engines/kyra/script.cpp12
-rw-r--r--engines/kyra/script.h9
2 files changed, 13 insertions, 8 deletions
diff --git a/engines/kyra/script.cpp b/engines/kyra/script.cpp
index 9635b0b29a..da99abed73 100644
--- a/engines/kyra/script.cpp
+++ b/engines/kyra/script.cpp
@@ -152,9 +152,9 @@ void EMCInterpreter::unload(EMCData *data) {
void EMCInterpreter::init(EMCState *scriptStat, const EMCData *data) {
scriptStat->dataPtr = data;
scriptStat->ip = 0;
- scriptStat->stack[60] = 0;
- scriptStat->bp = 62;
- scriptStat->sp = 60;
+ scriptStat->stack[EMCState::kStackLastEntry] = 0;
+ scriptStat->bp = EMCState::kStackSize+1;
+ scriptStat->sp = EMCState::kStackLastEntry;
}
bool EMCInterpreter::start(EMCState *script, int function) {
@@ -346,7 +346,7 @@ void EMCInterpreter::cmd_popRetOrPos(EMCState* script) {
break;
case 1:
- if (script->sp >= 60) {
+ if (script->sp >= EMCState::kStackLastEntry) {
script->ip = 0;
} else {
script->bp = script->stack[script->sp++];
@@ -519,12 +519,12 @@ void EMCInterpreter::cmd_eval(EMCState* script) {
}
void EMCInterpreter::cmd_setRetAndJmp(EMCState* script) {
- if (script->sp >= 60) {
+ if (script->sp >= EMCState::kStackLastEntry) {
script->ip = 0;
} else {
script->retValue = script->stack[script->sp++];
uint16 temp = script->stack[script->sp++];
- script->stack[60] = 0;
+ script->stack[EMCState::kStackLastEntry] = 0;
script->ip = &script->dataPtr->data[temp];
}
}
diff --git a/engines/kyra/script.h b/engines/kyra/script.h
index ae9ece8154..7d6c9d5243 100644
--- a/engines/kyra/script.h
+++ b/engines/kyra/script.h
@@ -47,13 +47,18 @@ struct EMCData {
};
struct EMCState {
+ enum {
+ kStackSize = 100,
+ kStackLastEntry = kStackSize - 1
+ };
+
const uint16 *ip;
const EMCData *dataPtr;
int16 retValue;
uint16 bp;
uint16 sp;
- int16 regs[30]; // VM registers
- int16 stack[100]; // VM stack
+ int16 regs[30]; // VM registers
+ int16 stack[kStackSize]; // VM stack
};
#define stackPos(x) (script->stack[script->sp+x])