diff options
author | Johannes Schickel | 2009-01-18 17:24:47 +0000 |
---|---|---|
committer | Johannes Schickel | 2009-01-18 17:24:47 +0000 |
commit | c003d62429399db2d8ca11dc66461a98c52d0538 (patch) | |
tree | 0ffca70e1eaa1b67459bab4a86f69141a4c59cc3 | |
parent | ec5b64147dd7bf883cefb205c2801c068358dc1a (diff) | |
download | scummvm-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.cpp | 12 | ||||
-rw-r--r-- | engines/kyra/script.h | 9 |
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]) |