aboutsummaryrefslogtreecommitdiff
path: root/engines/lilliput/script.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lilliput/script.cpp')
-rw-r--r--engines/lilliput/script.cpp42
1 files changed, 24 insertions, 18 deletions
diff --git a/engines/lilliput/script.cpp b/engines/lilliput/script.cpp
index 2dfdf061e9..821d701a6a 100644
--- a/engines/lilliput/script.cpp
+++ b/engines/lilliput/script.cpp
@@ -98,7 +98,7 @@ byte LilliputScript::handleOpcodeType1(int curWord) {
return OC_sub1740A();
break;
case 0x3:
- return OC_sub17434();
+ return OC_compareCharacterId();
break;
case 0x4:
return OC_sub17468();
@@ -563,7 +563,7 @@ static const OpCode opCodes1[] = {
{ "OC_checkCharacterGoalPos", 1, kgetPosFromScript, kNone, kNone, kNone, kNone },
{ "OC_comparePos", 2, kGetValue1, kgetPosFromScript, kNone, kNone, kNone },
{ "OC_sub1740A", 1, kImmediateValue, kNone, kNone, kNone, kNone },
- { "OC_sub17434", 4, kGetValue1, kImmediateValue, kCompareOperation, kImmediateValue, kNone },
+ { "OC_compareCharacterId", 4, kGetValue1, kImmediateValue, kCompareOperation, kImmediateValue, kNone },
{ "OC_sub17468", 2, kCompareOperation, kImmediateValue, kNone, kNone, kNone },
{ "OC_getRandom", 1, kImmediateValue, kNone, kNone, kNone, kNone },
{ "OC_for", 2, kImmediateValue, kImmediateValue, kNone, kNone, kNone },
@@ -965,18 +965,25 @@ void LilliputScript::sub185ED(byte index, byte subIndex) {
_vm->display16x16IndexedBuf(_vm->_bufferIdeogram, _vm->_arr18560[index]._field5[subIndex], _vm->_arr18560[index]._field1);
}
-byte LilliputScript::compareValues(byte var1, int oper, int var2) {
- debugC(2, kDebugScriptTBC, "compareValues(%d, %c, %d)", var1, oper & 0xFF, var2);
+byte LilliputScript::compareValues(int var1, int oper, int var2) {
+ debugC(2, kDebugScript, "compareValues(%d, %c, %d)", var1, oper & 0xFF, var2);
switch (oper & 0xFF) {
case '<':
- return (var1 < var2);
+ if (var1 < var2)
+ return 1;
+ break;
case '>':
- return (var1 > var2);
+ if (var1 > var2)
+ return 1;
+ break;
default:
- return (var1 == var2);
+ if (var1 == var2)
+ return 1;
break;
}
+
+ return 0;
}
void LilliputScript::computeOperation(byte *bufPtr, int oper, int var3) {
@@ -1274,7 +1281,7 @@ void LilliputScript::sub18B3C(int var) {
}
int16 LilliputScript::getValue1() {
- debugC(2, kDebugScriptTBC, "getValue1()");
+ debugC(2, kDebugScript, "getValue1()");
int16 curWord = _currScript->readUint16LE();
if (curWord < 1000)
@@ -1366,7 +1373,7 @@ void LilliputScript::sub130B6() {
}
byte *LilliputScript::getCharacterVariablePtr() {
- debugC(2, kDebugScriptTBC, "getCharacterVariablePtr()");
+ debugC(2, kDebugScript, "getCharacterVariablePtr()");
int8 tmpVal = (int8) (getValue1() & 0xFF);
int index = tmpVal * 32;
@@ -1420,9 +1427,8 @@ byte LilliputScript::OC_sub1740A() {
}
}
-// Compare field0 with value -> character id?
-byte LilliputScript::OC_sub17434() {
- debugC(1, kDebugScriptTBC, "OC_sub17434()");
+byte LilliputScript::OC_compareCharacterId() {
+ debugC(1, kDebugScript, "OC_compareCharacterId()");
byte *tmpArr = getCharacterVariablePtr();
byte var1 = tmpArr[0];
@@ -2410,7 +2416,7 @@ void LilliputScript::OC_sub17C0E() {
if (b2 == 0) {
_byte12A09 = 1;
- _vm->displayFunction9();
+ _vm->displayLandscape();
_byte12A09 = 0;
}
}
@@ -2802,7 +2808,7 @@ void LilliputScript::OC_sub1810A() {
_viewportCharacterTarget = 0xFFFF;
_viewportPos = getPosFromScript();
- _vm->displayFunction9();
+ _vm->displayLandscape();
_vm->displayFunction15();
}
@@ -2933,15 +2939,15 @@ void LilliputScript::OC_PaletteFadeIn() {
}
void LilliputScript::OC_loadAndDisplayCUBESx_GFX() {
- debugC(1, kDebugScriptTBC, "OC_loadAndDisplayCUBESx_GFX()");
+ debugC(1, kDebugScript, "OC_loadAndDisplayCUBESx_GFX()");
- int curWord = _currScript->readUint16LE();
+ int curWord = (_currScript->readUint16LE() & 0xFF);
assert((curWord >= 0) && (curWord <= 9));
Common::String fileName = Common::String::format("CUBES%d.GFX", curWord);
- _byte10806 = curWord + 0x30;
+ _byte10806 = curWord + 0x30; // Useless?
_vm->_bufferCubegfx = _vm->loadVGA(fileName, 61440, false);
- _vm->displayFunction9();
+ _vm->displayLandscape();
_vm->displayFunction15();
}