aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsylvaintv2012-04-28 01:03:11 +0200
committerEugene Sandulenko2018-03-28 17:36:57 +0200
commitc4186ba41bfcaa20876fed950d45cb502b7efb9a (patch)
tree76343d7f76757db17c6c0baeb45bdf763be7fd84
parent794869656b2d0433b69ae6627844288c1e7288d4 (diff)
downloadscummvm-rg350-c4186ba41bfcaa20876fed950d45cb502b7efb9a.tar.gz
scummvm-rg350-c4186ba41bfcaa20876fed950d45cb502b7efb9a.tar.bz2
scummvm-rg350-c4186ba41bfcaa20876fed950d45cb502b7efb9a.zip
LILLIPUT: Implements one more opcode
-rw-r--r--engines/lilliput/script.cpp34
-rw-r--r--engines/lilliput/script.h1
2 files changed, 31 insertions, 4 deletions
diff --git a/engines/lilliput/script.cpp b/engines/lilliput/script.cpp
index df21358f86..1b75bd4a18 100644
--- a/engines/lilliput/script.cpp
+++ b/engines/lilliput/script.cpp
@@ -926,9 +926,32 @@ byte LilliputScript::OC_sub173F0() {
return 0;
}
+byte* LilliputScript::sub17399(int val) {
+ int x = (val >> 8);
+ int y = (val & 0xFF);
+ return &_vm->_bufferIsoMap[(y * 320 + x) << 2];
+}
+
byte LilliputScript::OC_sub1740A() {
- warning("OC_sub1740A");
- return 0;
+ debugC(1, kDebugScript, "OC_sub1740A()");
+
+ int var = _vm->_word16EFA;
+ if (var == 0xFFFF) {
+ _currScript->readUint16LE();
+ return 0;
+ }
+
+ byte *isoMapBuf = sub17399(var);
+ int var2 = isoMapBuf[3];
+
+ int var3 = _currScript->readUint16LE();
+ int var4 = 8 >> var3;
+
+ if( var2 & var4 ) {
+ return 1;
+ } else {
+ return 0;
+ }
}
byte LilliputScript::OC_sub17434() {
@@ -943,8 +966,11 @@ byte LilliputScript::OC_sub17434() {
}
byte LilliputScript::OC_sub17468() {
- warning("OC_sub17468");
- return 0;
+ debugC(1, kDebugScript, "OC_sub17468()");
+
+ int operation = _currScript->readUint16LE();
+ int val2 = _currScript->readUint16LE();
+ return compareValues(_byte16F02, operation, val2);
}
byte LilliputScript::OC_getRandom() {
diff --git a/engines/lilliput/script.h b/engines/lilliput/script.h
index 24a74d7c24..4d7f5e9843 100644
--- a/engines/lilliput/script.h
+++ b/engines/lilliput/script.h
@@ -106,6 +106,7 @@ private:
void sub18A56(byte *buf);
void sub18B3C(int var);
void sub18BE6(byte var1, int var2, int var4);
+ byte* sub17399(int val);
byte *getMapPtr(int var1);
int getValue1();