LILLIPUT: Implements one more opcode

This commit is contained in:
sylvaintv 2012-04-28 01:03:11 +02:00 committed by Eugene Sandulenko
parent 794869656b
commit c4186ba41b
2 changed files with 31 additions and 4 deletions

View file

@ -926,11 +926,34 @@ 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");
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() {
debugC(1, kDebugScript, "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() {

View file

@ -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();