LILLIPUT: Some more renaming, fix issue in OC_sub17640, implement OC_sub18690

This commit is contained in:
Strangerke 2012-05-18 16:48:49 +02:00 committed by Eugene Sandulenko
parent 1c0efa5581
commit 3a102e6f24
4 changed files with 115 additions and 113 deletions

View file

@ -203,8 +203,8 @@ LilliputEngine::LilliputEngine(OSystem *syst, const LilliputGameDescription *gd)
_rulesBuffer2_10[i] = 0; _rulesBuffer2_10[i] = 0;
_rulesBuffer2_11[i] = 0; _rulesBuffer2_11[i] = 0;
_rulesBuffer2_12[i] = 0; _rulesBuffer2_12[i] = 0;
_rulesBuffer2_13[i] = 0; _rulesBuffer2_13_posX[i] = 0;
_rulesBuffer2_14[i] = 0; _rulesBuffer2_14_posY[i] = 0;
_array1289F[i] = 0xFFFF; _array1289F[i] = 0xFFFF;
} }
@ -1135,7 +1135,7 @@ void LilliputEngine::displayFunction18(int var1, int var2, int var3, int var4) {
} }
void LilliputEngine::displayString(byte *buf, Common::Point pos) { void LilliputEngine::displayString(byte *buf, Common::Point pos) {
debugC(2, kDebugEngineTBC, "displayString(buf, %d - %d)", pos.x, pos.y); debugC(2, kDebugEngine, "displayString(%s, %d - %d)", buf, pos.x, pos.y);
int index = (pos.y * 320) + pos.x; int index = (pos.y * 320) + pos.x;
@ -1148,7 +1148,7 @@ void LilliputEngine::displayString(byte *buf, Common::Point pos) {
} }
void LilliputEngine::displayChar(int index, int var1) { void LilliputEngine::displayChar(int index, int var1) {
debugC(2, kDebugEngineTBC, "displayChar(%d, %d)", index, var1); debugC(2, kDebugEngine, "displayChar(%d, %d)", index, var1);
int indexVga = index; int indexVga = index;
int indexChar = var1 << 5; int indexChar = var1 << 5;
@ -1633,15 +1633,15 @@ void LilliputEngine::sub16A08(int index) {
} }
void LilliputEngine::addCharToBuf(byte character) { void LilliputEngine::addCharToBuf(byte character) {
debugC(2, kDebugEngineTBC, "addCharToBuf(%c)", character); debugC(2, kDebugEngine, "addCharToBuf(%c)", character);
_displayStringBuf[_displayStringIndex] = character; _displayStringBuf[_displayStringIndex] = character;
if (_displayStringIndex < 158) if (_displayStringIndex < 158)
++_displayStringIndex; ++_displayStringIndex;
} }
void LilliputEngine::prepareGoldAmount(int param1) { void LilliputEngine::numberToString(int param1) {
debugC(2, kDebugEngineTBC, "prepareGoldAmount(%d)", param1); debugC(2, kDebugEngine, "numberToString(%d)", param1);
static const int _array18AE3[6] = {10000, 1000, 100, 10, 1}; static const int _array18AE3[6] = {10000, 1000, 100, 10, 1};
@ -2454,8 +2454,8 @@ void LilliputEngine::loadRules() {
_rulesBuffer2_10[j] = f.readByte(); _rulesBuffer2_10[j] = f.readByte();
_rulesBuffer2_11[j] = f.readByte(); _rulesBuffer2_11[j] = f.readByte();
_rulesBuffer2_12[j] = f.readByte(); _rulesBuffer2_12[j] = f.readByte();
_rulesBuffer2_13[j] = f.readByte(); _rulesBuffer2_13_posX[j] = f.readByte();
_rulesBuffer2_14[j] = f.readByte(); _rulesBuffer2_14_posY[j] = f.readByte();
for (int k = 0; k < 32; k++) for (int k = 0; k < 32; k++)
_characterVariables_[(j * 32) + k] = f.readByte(); _characterVariables_[(j * 32) + k] = f.readByte();
@ -2546,10 +2546,10 @@ void LilliputEngine::loadRules() {
_rulesBuffer13_1[i] = f.readByte(); _rulesBuffer13_1[i] = f.readByte();
for (int i = 0 ; i < 20; i++) for (int i = 0 ; i < 20; i++)
_interfaceHotspotsX[i] = f.readUint16LE(); _interfaceHotspotsX[i] = f.readSint16LE();
for (int i = 0 ; i < 20; i++) for (int i = 0 ; i < 20; i++)
_interfaceHotspotsY[i] = f.readUint16LE(); _interfaceHotspotsY[i] = f.readSint16LE();
for (int i = 0; i < 20; i++) { for (int i = 0; i < 20; i++) {
byte curByte = f.readByte(); byte curByte = f.readByte();
@ -2611,16 +2611,16 @@ void LilliputEngine::initPalette() {
_system->getPaletteManager()->setPalette(_curPalette, 0, 256); _system->getPaletteManager()->setPalette(_curPalette, 0, 256);
} }
void LilliputEngine::sub170EE(int index) { void LilliputEngine::setCurrentCharacter(int index) {
debugC(1, kDebugEngineTBC, "sub170EE(%d)", index); debugC(1, kDebugEngine, "setCurrentCharacter(%d)", index);
_currentScriptCharacter = index; _currentScriptCharacter = index;
assert (index < 40); assert (index < 40);
int var2 = _characterPositionX[index]; int posX = _characterPositionX[index];
int var4 = _characterPositionY[index]; int posY = _characterPositionY[index];
_currentScriptCharacterPos = Common::Point(var2 >> 3, var4 >> 3); _currentScriptCharacterPos = Common::Point(posX >> 3, posY >> 3);
_currentCharacterVariables = getCharacterVariablesPtr(_currentScriptCharacter * 32); _currentCharacterVariables = getCharacterVariablesPtr(_currentScriptCharacter * 32);
} }
@ -2637,7 +2637,7 @@ void LilliputEngine::handleMenu() {
if ((_byte12FCE == 1) && (_byte16F07_menuId != 3)) if ((_byte12FCE == 1) && (_byte16F07_menuId != 3))
return; return;
sub170EE(_word10804); setCurrentCharacter(_word10804);
debugC(1, kDebugScriptTBC, "========================== Menu Script =============================="); debugC(1, kDebugScriptTBC, "========================== Menu Script ==============================");
_scriptHandler->runMenuScript(ScriptStream(_menuScript, _menuScriptSize)); _scriptHandler->runMenuScript(ScriptStream(_menuScript, _menuScriptSize));
debugC(1, kDebugScriptTBC, "========================== End of Menu Script=============================="); debugC(1, kDebugScriptTBC, "========================== End of Menu Script==============================");
@ -2668,7 +2668,7 @@ void LilliputEngine::handleGameScripts() {
_scriptHandler->_characterScriptEnabled[index] = 0; _scriptHandler->_characterScriptEnabled[index] = 0;
sub170EE(index); setCurrentCharacter(index);
_word16EFE = _array11D49[index]; _word16EFE = _array11D49[index];

View file

@ -161,8 +161,8 @@ public:
byte _rulesBuffer2_10[40]; byte _rulesBuffer2_10[40];
byte _rulesBuffer2_11[40]; byte _rulesBuffer2_11[40];
byte _rulesBuffer2_12[40]; byte _rulesBuffer2_12[40];
byte _rulesBuffer2_13[40]; byte _rulesBuffer2_13_posX[40];
byte _rulesBuffer2_14[40]; byte _rulesBuffer2_14_posY[40];
byte _characterVariables_[1400 + 3120]; byte _characterVariables_[1400 + 3120];
byte *_currentCharacterVariables; byte *_currentCharacterVariables;
byte _rulesBuffer2_16[40 * 32]; byte _rulesBuffer2_16[40 * 32];
@ -187,8 +187,8 @@ public:
Common::Point _rulesBuffer12Pos4[40]; Common::Point _rulesBuffer12Pos4[40];
int _word12F68_ERULES; int _word12F68_ERULES;
byte _rulesBuffer13_1[20]; byte _rulesBuffer13_1[20];
int _interfaceHotspotsX[20]; int16 _interfaceHotspotsX[20];
int _interfaceHotspotsY[20]; int16 _interfaceHotspotsY[20];
byte _rulesBuffer13_4[20]; byte _rulesBuffer13_4[20];
int16 _array10999PosX[40]; int16 _array10999PosX[40];
int16 _array109C1PosY[40]; int16 _array109C1PosY[40];
@ -216,7 +216,7 @@ public:
void newInt8(); void newInt8();
void update(); void update();
void display16x16IndexedBuf(byte *buf, int var1, Common::Point pos); void display16x16IndexedBuf(byte *buf, int index, Common::Point pos);
void display16x16Buf(byte *buf, Common::Point pos); void display16x16Buf(byte *buf, Common::Point pos);
void SaveSurfaceUnderMouseCursor(byte *buf, Common::Point pos); void SaveSurfaceUnderMouseCursor(byte *buf, Common::Point pos);
void fill16x16Rect(byte col, Common::Point pos); void fill16x16Rect(byte col, Common::Point pos);
@ -267,7 +267,7 @@ public:
byte sub16799(int index, Common::Point param1); byte sub16799(int index, Common::Point param1);
int getDirection(Common::Point param1, Common::Point param2); int getDirection(Common::Point param1, Common::Point param2);
void addCharToBuf(byte character); void addCharToBuf(byte character);
void prepareGoldAmount(int param1); void numberToString(int param1);
void sub12F37(); void sub12F37();
byte sub16675(int idx, Common::Point var1); byte sub16675(int idx, Common::Point var1);
void sub16685(int idx, Common::Point var1); void sub16685(int idx, Common::Point var1);
@ -343,7 +343,7 @@ public:
void pollEvent(); void pollEvent();
void sub170EE(int index); void setCurrentCharacter(int index);
void sub130DD(); void sub130DD();
void moveCharacters(); void moveCharacters();
void setNextDisplayCharacter(int var1); void setNextDisplayCharacter(int var1);

View file

@ -353,7 +353,7 @@ void LilliputScript::handleOpcodeType2(int curWord) {
OC_resetWord16EFE(); OC_resetWord16EFE();
break; break;
case 0x24: case 0x24:
OC_sub17CEF(); OC_enableCurrentCharacterScript();
break; break;
case 0x25: case 0x25:
OC_IncCurrentCharacterVar1(); OC_IncCurrentCharacterVar1();
@ -464,7 +464,7 @@ void LilliputScript::handleOpcodeType2(int curWord) {
OC_sub18367(); OC_sub18367();
break; break;
case 0x49: case 0x49:
OC_sub17D04(); OC_enableCharacterScript();
break; break;
case 0x4A: case 0x4A:
OC_sub18387(); OC_sub18387();
@ -512,7 +512,7 @@ void LilliputScript::handleOpcodeType2(int curWord) {
OC_initSmallAnim(); OC_initSmallAnim();
break; break;
case 0x59: case 0x59:
OC_sub18678(); OC_setCharacterHeroismBar();
break; break;
case 0x5A: case 0x5A:
OC_sub18690(); OC_sub18690();
@ -545,7 +545,7 @@ void LilliputScript::handleOpcodeType2(int curWord) {
OC_sub1875D_snd(); OC_sub1875D_snd();
break; break;
case 0x64: case 0x64:
OC_sub18764(); OC_setArray128E();
break; break;
case 0x65: case 0x65:
OC_initGameAreaDisplay(); OC_initGameAreaDisplay();
@ -647,7 +647,7 @@ static const OpCode opCodes2[] = {
/* 0x21 */ { "OC_sub17CB9", 3, kImmediateValue, kGetValue1, kImmediateValue, kNone, kNone }, /* 0x21 */ { "OC_sub17CB9", 3, kImmediateValue, kGetValue1, kImmediateValue, kNone, kNone },
/* 0x22 */ { "OC_sub17CD1", 2, kImmediateValue, kImmediateValue, kNone, kNone, kNone }, /* 0x22 */ { "OC_sub17CD1", 2, kImmediateValue, kImmediateValue, kNone, kNone, kNone },
/* 0x23 */ { "OC_resetWord16EFE", 0, kNone, kNone, kNone, kNone, kNone }, /* 0x23 */ { "OC_resetWord16EFE", 0, kNone, kNone, kNone, kNone, kNone },
/* 0x24 */ { "OC_sub17CEF", 1, kImmediateValue, kNone, kNone, kNone, kNone }, // stop script /* 0x24 */ { "OC_enableCurrentCharacterScript", 1, kImmediateValue, kNone, kNone, kNone, kNone }, // stop script
/* 0x25 */ { "OC_IncCurrentCharacterVar1", 0, kNone, kNone, kNone, kNone, kNone }, /* 0x25 */ { "OC_IncCurrentCharacterVar1", 0, kNone, kNone, kNone, kNone, kNone },
/* 0x26 */ { "OC_sub17D23", 2, kImmediateValue, kgetPosFromScript, kNone, kNone, kNone }, /* 0x26 */ { "OC_sub17D23", 2, kImmediateValue, kgetPosFromScript, kNone, kNone, kNone },
/* 0x27 */ { "OC_sub17E6D", 1, kImmediateValue, kNone, kNone, kNone, kNone }, /* 0x27 */ { "OC_sub17E6D", 1, kImmediateValue, kNone, kNone, kNone, kNone },
@ -684,7 +684,7 @@ static const OpCode opCodes2[] = {
/* 0x46 */ { "OC_sub1834C", 1, kImmediateValue, kNone, kNone, kNone, kNone }, /* 0x46 */ { "OC_sub1834C", 1, kImmediateValue, kNone, kNone, kNone, kNone },
/* 0x47 */ { "OC_setArray122C1", 1, kImmediateValue, kNone, kNone, kNone, kNone }, /* 0x47 */ { "OC_setArray122C1", 1, kImmediateValue, kNone, kNone, kNone, kNone },
/* 0x48 */ { "OC_sub18367", 0, kNone, kNone, kNone, kNone, kNone }, /* 0x48 */ { "OC_sub18367", 0, kNone, kNone, kNone, kNone, kNone },
/* 0x49 */ { "OC_sub17D04", 2, kGetValue1, kImmediateValue, kNone, kNone, kNone }, /* 0x49 */ { "OC_enableCharacterScript", 2, kGetValue1, kImmediateValue, kNone, kNone, kNone },
/* 0x4a */ { "OC_sub18387", 2, kGetValue1, kImmediateValue, kNone, kNone, kNone }, /* 0x4a */ { "OC_sub18387", 2, kGetValue1, kImmediateValue, kNone, kNone, kNone },
/* 0x4b */ { "OC_setDebugFlag", 0, kNone, kNone, kNone, kNone, kNone }, /* 0x4b */ { "OC_setDebugFlag", 0, kNone, kNone, kNone, kNone, kNone },
/* 0x4c */ { "OC_setByte14837", 0, kNone, kNone, kNone, kNone, kNone }, /* 0x4c */ { "OC_setByte14837", 0, kNone, kNone, kNone, kNone, kNone },
@ -700,7 +700,7 @@ static const OpCode opCodes2[] = {
/* 0x56 */ { "OC_initGameAreaDisplay", 0, kNone, kNone, kNone, kNone, kNone }, /* 0x56 */ { "OC_initGameAreaDisplay", 0, kNone, kNone, kNone, kNone, kNone },
/* 0x57 */ { "OC_sub1864D", 6, kGetValue1, kImmediateValue, kImmediateValue, kImmediateValue, kImmediateValue}, /* 0x57 */ { "OC_sub1864D", 6, kGetValue1, kImmediateValue, kImmediateValue, kImmediateValue, kImmediateValue},
/* 0x58 */ { "OC_initSmallAnim", 11, kImmediateValue, kImmediateValue, kImmediateValue, kImmediateValue, kImmediateValue }, /* 0x58 */ { "OC_initSmallAnim", 11, kImmediateValue, kImmediateValue, kImmediateValue, kImmediateValue, kImmediateValue },
/* 0x59 */ { "OC_sub18678", 4, kGetValue1, kImmediateValue, kImmediateValue, kImmediateValue, kNone }, /* 0x59 */ { "OC_setCharacterHeroismBar", 4, kGetValue1, kImmediateValue, kImmediateValue, kImmediateValue, kNone },
/* 0x5a */ { "OC_sub18690", 2, kGetValue1, kgetPosFromScript, kNone, kNone, kNone }, //TODO /* 0x5a */ { "OC_sub18690", 2, kGetValue1, kgetPosFromScript, kNone, kNone, kNone }, //TODO
/* 0x5b */ { "OC_setViewPortCharacterTarget", 1, kGetValue1, kNone, kNone, kNone, kNone }, /* 0x5b */ { "OC_setViewPortCharacterTarget", 1, kGetValue1, kNone, kNone, kNone, kNone },
/* 0x5c */ { "OC_sub186A1", 3, kGetValue1, kImmediateValue, kImmediateValue, kNone, kNone }, //TODO /* 0x5c */ { "OC_sub186A1", 3, kGetValue1, kImmediateValue, kImmediateValue, kNone, kNone }, //TODO
@ -711,7 +711,7 @@ static const OpCode opCodes2[] = {
/* 0x61 */ { "OC_sub1873F_snd", 1, kgetPosFromScript, kNone, kNone, kNone, kNone }, /* 0x61 */ { "OC_sub1873F_snd", 1, kgetPosFromScript, kNone, kNone, kNone, kNone },
/* 0x62 */ { "OC_sub18746_snd", 1, kImmediateValue, kNone, kNone, kNone, kNone }, /* 0x62 */ { "OC_sub18746_snd", 1, kImmediateValue, kNone, kNone, kNone, kNone },
/* 0x63 */ { "OC_sub1875D_snd", 0, kNone, kNone, kNone, kNone, kNone }, /* 0x63 */ { "OC_sub1875D_snd", 0, kNone, kNone, kNone, kNone, kNone },
/* 0x64 */ { "OC_sub18764", 2, kGetValue1, kImmediateValue, kNone, kNone, kNone }, /* 0x64 */ { "OC_setArray128E", 2, kGetValue1, kImmediateValue, kNone, kNone, kNone },
/* 0x65 */ { "OC_initGameAreaDisplay", 0, kNone, kNone, kNone, kNone, kNone } /* 0x65 */ { "OC_initGameAreaDisplay", 0, kNone, kNone, kNone, kNone, kNone }
}; };
@ -1022,8 +1022,8 @@ void LilliputScript::computeOperation(byte *bufPtr, int oper, int var3) {
} }
} }
void LilliputScript::sub1823E(byte index, byte var1, byte *curBufPtr) { void LilliputScript::enableCharacterScript(byte index, byte var1, byte *curBufPtr) {
debugC(1, kDebugScriptTBC, "sub1823E(%d, %d, curBufPtr)", index, var1); debugC(1, kDebugScript, "enableCharacterScript(%d, %d, curBufPtr)", index, var1);
assert (index < 40); assert (index < 40);
_characterScriptEnabled[index] = 1; _characterScriptEnabled[index] = 1;
@ -1174,7 +1174,7 @@ void LilliputScript::decodePackedText(char *buf) {
var1 = buf[index]; var1 = buf[index];
++index; ++index;
if (var1 == '#') { if (var1 == '#') {
_vm->prepareGoldAmount(_byte18823); _vm->numberToString(_byte18823);
} }
} else { } else {
_vm->addCharToBuf(var1); _vm->addCharToBuf(var1);
@ -1307,11 +1307,11 @@ Common::Point LilliputScript::getPosFromScript() {
switch(tmpVal) { switch(tmpVal) {
case 0xFF: case 0xFF:
assert((_vm->_currentScriptCharacter >= 0) && (_vm->_currentScriptCharacter < 40)); assert((_vm->_currentScriptCharacter >= 0) && (_vm->_currentScriptCharacter < 40));
return Common::Point(_vm->_rulesBuffer2_13[_vm->_currentScriptCharacter], _vm->_rulesBuffer2_14[_vm->_currentScriptCharacter]); return Common::Point(_vm->_rulesBuffer2_13_posX[_vm->_currentScriptCharacter], _vm->_rulesBuffer2_14_posY[_vm->_currentScriptCharacter]);
case 0xFE: { case 0xFE: {
int8 index = curWord & 0xFF; int8 index = curWord & 0xFF;
assert((index >= 0) && (index < 40)); assert((index >= 0) && (index < 40));
return Common::Point(_vm->_rulesBuffer2_13[index], _vm->_rulesBuffer2_14[index]); return Common::Point(_vm->_rulesBuffer2_13_posX[index], _vm->_rulesBuffer2_14_posY[index]);
} }
case 0xFD: case 0xFD:
return _vm->_currentScriptCharacterPos; return _vm->_currentScriptCharacterPos;
@ -1481,7 +1481,7 @@ byte LilliputScript::OC_compWord18776() {
} }
byte LilliputScript::OC_checkSaveFlag() { byte LilliputScript::OC_checkSaveFlag() {
debugC(1, kDebugScriptTBC, "OC_checkSaveFlag()"); debugC(1, kDebugScript, "OC_checkSaveFlag()");
if (_vm->_saveFlag) if (_vm->_saveFlag)
return 1; return 1;
@ -1602,7 +1602,7 @@ byte LilliputScript::OC_compareRandomCharacterId() {
} }
byte LilliputScript::OC_IsCurrentCharacterIndex() { byte LilliputScript::OC_IsCurrentCharacterIndex() {
debugC(1, kDebugScriptTBC, "OC_IsCurrentCharacterIndex()"); debugC(1, kDebugScript, "OC_IsCurrentCharacterIndex()");
int tmpVal = getValue1(); int tmpVal = getValue1();
if (tmpVal == _vm->_currentScriptCharacter) if (tmpVal == _vm->_currentScriptCharacter)
@ -1611,10 +1611,9 @@ byte LilliputScript::OC_IsCurrentCharacterIndex() {
} }
byte LilliputScript::OC_sub175C8() { byte LilliputScript::OC_sub175C8() {
debugC(1, kDebugScriptTBC, "OC_sub175C8()"); debugC(1, kDebugScript, "OC_sub175C8()");
byte var4 = _currScript->readUint16LE() & 0xFF; byte var4 = _currScript->readUint16LE() & 0xFF;
int tmpVal = _currScript->readUint16LE(); int tmpVal = _currScript->readUint16LE();
if (tmpVal < 2000) { if (tmpVal < 2000) {
@ -1643,11 +1642,9 @@ byte LilliputScript::OC_sub175C8() {
byte var4b = tmpVal & 0xFF; byte var4b = tmpVal & 0xFF;
for (int i = 0; i < _vm->_numCharacters; i++) { for (int i = 0; i < _vm->_numCharacters; i++) {
int var1 = _array10B51[(_vm->_currentScriptCharacter * 40) + i]; int var1 = _array10B51[(_vm->_currentScriptCharacter * 40) + i];
if ((var1 & 0xFF) >= var4) { if (((var1 & 0xFF) >= var4) && (_vm->_rulesBuffer2_12[i] == var4b)) {
if (_vm->_rulesBuffer2_12[i] == var4b) { _word16F00 = i;
_word16F00 = i; return 1;
return 1;
}
} }
} }
@ -1655,41 +1652,13 @@ byte LilliputScript::OC_sub175C8() {
} }
byte LilliputScript::OC_sub17640() { byte LilliputScript::OC_sub17640() {
debugC(1, kDebugScriptTBC, "OC_sub176C4()"); debugC(1, kDebugScript, "OC_sub176C4()");
int var4 = _currScript->readUint16LE(); int var4 = _currScript->readUint16LE();
int index = _vm->_currentScriptCharacter * 40; int index = _vm->_currentScriptCharacter * 40;
int tmpVal = _currScript->readUint16LE(); int tmpVal = _currScript->readUint16LE();
if (tmpVal >= 2000) { if (tmpVal < 2000) {
int var1 = tmpVal;
if (var1 == 3000) {
for (int i = 0; i < _vm->_numCharacters; i++) {
tmpVal = _array10B51[index + i];
byte v1 = tmpVal & 0xFF;
byte v2 = tmpVal >> 8;
if ((v1 >= (var4 & 0xFF)) && (v2 < (var4 & 0xFF))) {
_word16F00 = i;
return 1;
}
}
return 0;
} else {
var1 -= 2000;
var4 &= ((var1 & 0xFF) << 8);
for (int i = 0; i < _vm->_numCharacters; i++) {
tmpVal = _array10B51[index + i];
byte v1 = tmpVal & 0xFF;
byte v2 = tmpVal >> 8;
if ((v1 >= (var4 & 0xFF)) && (v2 < (var4 & 0xFF)) && (_vm->_rulesBuffer2_12[i] != (var4 >> 8))) {
_word16F00 = i;
return 1;
}
}
return 0;
}
} else {
_currScript->seek(_currScript->pos() - 2); _currScript->seek(_currScript->pos() - 2);
int subIndex = getValue1(); int subIndex = getValue1();
tmpVal = _array10B51[index + subIndex]; tmpVal = _array10B51[index + subIndex];
@ -1700,6 +1669,33 @@ byte LilliputScript::OC_sub17640() {
_word16F00 = subIndex; _word16F00 = subIndex;
return 1; return 1;
} }
int var1 = tmpVal;
if (var1 == 3000) {
for (int i = 0; i < _vm->_numCharacters; i++) {
tmpVal = _array10B51[index + i];
byte v1 = tmpVal & 0xFF;
byte v2 = tmpVal >> 8;
if ((v1 >= (var4 & 0xFF)) && (v2 < (var4 & 0xFF))) {
_word16F00 = i;
return 1;
}
}
return 0;
}
var1 -= 2000;
var4 = ((var1 & 0xFF) << 8) + (var4 & 0xFF);
for (int i = 0; i < _vm->_numCharacters; i++) {
tmpVal = _array10B51[index + i];
byte v1 = tmpVal & 0xFF;
byte v2 = tmpVal >> 8;
if ((v1 >= (var4 & 0xFF)) && (v2 < (var4 & 0xFF)) && (_vm->_rulesBuffer2_12[i] == (var4 >> 8))) {
_word16F00 = i;
return 1;
}
}
return 0;
} }
byte LilliputScript::OC_sub176C4() { byte LilliputScript::OC_sub176C4() {
@ -1811,7 +1807,7 @@ byte LilliputScript::OC_IsCharacterValid() {
} }
byte LilliputScript::OC_compWord16EFE() { byte LilliputScript::OC_compWord16EFE() {
debugC(1, kDebugScriptTBC, "OC_compWord16EFE()"); debugC(1, kDebugScript, "OC_compWord16EFE()");
byte curByte = _currScript->readUint16LE() & 0xFF; byte curByte = _currScript->readUint16LE() & 0xFF;
byte tmpVal = _vm->_word16EFE >> 8; byte tmpVal = _vm->_word16EFE >> 8;
@ -1824,7 +1820,7 @@ byte LilliputScript::OC_compWord16EFE() {
} }
byte LilliputScript::OC_AreCurrentCharacterVar0AndVar1EqualsTo() { byte LilliputScript::OC_AreCurrentCharacterVar0AndVar1EqualsTo() {
debugC(1, kDebugScriptTBC, "OC_AreCurrentCharacterVar0AndVar1EqualsTo()"); debugC(1, kDebugScript, "OC_AreCurrentCharacterVar0AndVar1EqualsTo()");
byte var1 = _currScript->readUint16LE() & 0xFF; byte var1 = _currScript->readUint16LE() & 0xFF;
byte var2 = _currScript->readUint16LE() & 0xFF; byte var2 = _currScript->readUint16LE() & 0xFF;
@ -1838,7 +1834,7 @@ byte LilliputScript::OC_AreCurrentCharacterVar0AndVar1EqualsTo() {
} }
byte LilliputScript::OC_CurrentCharacterVar0Equals() { byte LilliputScript::OC_CurrentCharacterVar0Equals() {
debugC(1, kDebugScriptTBC, "OC_CurrentCharacterVar0Equals()"); debugC(1, kDebugScript, "OC_CurrentCharacterVar0Equals()");
byte curByte = (_currScript->readUint16LE() & 0xFF); byte curByte = (_currScript->readUint16LE() & 0xFF);
assert(_vm->_currentCharacterVariables != NULL); assert(_vm->_currentCharacterVariables != NULL);
@ -1920,7 +1916,7 @@ byte LilliputScript::OC_skipNextOpcode() {
} }
byte LilliputScript::OC_CurrentCharacterVar2Equals1() { byte LilliputScript::OC_CurrentCharacterVar2Equals1() {
debugC(1, kDebugScriptTBC, "OC_CurrentCharacterVar2Equals1()"); debugC(1, kDebugScript, "OC_CurrentCharacterVar2Equals1()");
assert(_vm->_currentCharacterVariables != NULL); assert(_vm->_currentCharacterVariables != NULL);
if (_vm->_currentCharacterVariables[2] == 1) if (_vm->_currentCharacterVariables[2] == 1)
@ -1980,7 +1976,7 @@ byte LilliputScript::OC_sub1790F() {
} }
byte LilliputScript::OC_CurrentCharacterVar1Equals() { byte LilliputScript::OC_CurrentCharacterVar1Equals() {
debugC(1, kDebugScriptTBC, "OC_CurrentCharacterVar1Equals()"); debugC(1, kDebugScript, "OC_CurrentCharacterVar1Equals()");
assert(_vm->_currentCharacterVariables != NULL); assert(_vm->_currentCharacterVariables != NULL);
byte curByte = (_currScript->readUint16LE() & 0xFF); byte curByte = (_currScript->readUint16LE() & 0xFF);
@ -2004,7 +2000,7 @@ byte LilliputScript::OC_sub1793E() {
} }
byte LilliputScript::OC_CurrentCharacterVar3Equals1() { byte LilliputScript::OC_CurrentCharacterVar3Equals1() {
debugC(1, kDebugScriptTBC, "OC_CurrentCharacterVar3Equals1()"); debugC(1, kDebugScript, "OC_CurrentCharacterVar3Equals1()");
assert(_vm->_currentCharacterVariables != NULL); assert(_vm->_currentCharacterVariables != NULL);
if (_vm->_currentCharacterVariables[3] == 1) if (_vm->_currentCharacterVariables[3] == 1)
@ -2361,7 +2357,7 @@ void LilliputScript::OC_callScript() {
int index = _currScript->readUint16LE(); int index = _currScript->readUint16LE();
int var1 = getValue1(); int var1 = getValue1();
_vm->sub170EE(var1); _vm->setCurrentCharacter(var1);
int tmpIndex = _vm->_currentScriptCharacter; int tmpIndex = _vm->_currentScriptCharacter;
assert(index < _vm->_gameScriptIndexSize); assert(index < _vm->_gameScriptIndexSize);
@ -2380,11 +2376,11 @@ void LilliputScript::OC_callScript() {
_currScript = _scriptStack.pop(); _currScript = _scriptStack.pop();
_vm->sub170EE(tmpIndex); _vm->setCurrentCharacter(tmpIndex);
} }
void LilliputScript::OC_callScriptAndReturn() { void LilliputScript::OC_callScriptAndReturn() {
debugC(1, kDebugScriptTBC, "OC_callScriptAndReturn()"); debugC(1, kDebugScript, "OC_callScriptAndReturn()");
OC_callScript(); OC_callScript();
sub17B6C(0); sub17B6C(0);
@ -2468,7 +2464,7 @@ void LilliputScript::OC_sub17C76() {
void LilliputScript::OC_sub17AFC() { void LilliputScript::OC_sub17AFC() {
debugC(1, kDebugScriptTBC, "OC_sub17AFC()"); debugC(1, kDebugScriptTBC, "OC_sub17AFC()");
int var1 = getValue1(); int var1 = getValue1();
_vm->sub170EE(var1); _vm->setCurrentCharacter(var1);
} }
void LilliputScript::sub171AF(int var1, int var2, int var4) { void LilliputScript::sub171AF(int var1, int var2, int var4) {
@ -2535,11 +2531,11 @@ void LilliputScript::OC_resetWord16EFE() {
_vm->_word16EFE = 0xFFFF; _vm->_word16EFE = 0xFFFF;
} }
void LilliputScript::OC_sub17CEF() { void LilliputScript::OC_enableCurrentCharacterScript() {
debugC(1, kDebugScriptTBC, "OC_sub17CEF()"); debugC(1, kDebugScriptTBC, "OC_enableCurrentCharacterScript()");
int var1 = _currScript->readUint16LE(); int var1 = _currScript->readUint16LE();
sub1823E(_vm->_currentScriptCharacter , var1, _vm->_currentCharacterVariables); enableCharacterScript(_vm->_currentScriptCharacter , var1, _vm->_currentCharacterVariables);
sub17B6C(0); sub17B6C(0);
} }
@ -2917,7 +2913,7 @@ void LilliputScript::OC_sub18213() {
maxItem = _array1813BPos[i].x; maxItem = _array1813BPos[i].x;
} }
} }
sub1823E(_vm->_currentScriptCharacter, maxItem, _vm->_currentCharacterVariables); enableCharacterScript(_vm->_currentScriptCharacter, maxItem, _vm->_currentCharacterVariables);
} }
void LilliputScript::OC_sub18252() { void LilliputScript::OC_sub18252() {
@ -3002,13 +2998,13 @@ void LilliputScript::OC_sub18367() {
_vm->_currentCharacterVariables[3] = 0; _vm->_currentCharacterVariables[3] = 0;
} }
void LilliputScript::OC_sub17D04() { void LilliputScript::OC_enableCharacterScript() {
debugC(1, kDebugScriptTBC, "OC_sub17D04()"); debugC(1, kDebugScript, "OC_enableCharacterScript()");
int16 index = getValue1(); int16 index = getValue1();
byte var2 = _currScript->readUint16LE() & 0xFF; byte var2 = _currScript->readUint16LE() & 0xFF;
sub1823E(index, var2, _vm->getCharacterVariablesPtr(index * 32)); enableCharacterScript(index, var2, _vm->getCharacterVariablesPtr(index * 32));
} }
void LilliputScript::OC_sub18387() { void LilliputScript::OC_sub18387() {
@ -3036,13 +3032,13 @@ void LilliputScript::OC_setByte14837() {
void LilliputScript::OC_sub183A2() { void LilliputScript::OC_sub183A2() {
warning("OC_sub183A2"); warning("OC_sub183A2");
} }
void LilliputScript::OC_sub183C6() { void LilliputScript::OC_sub183C6() {
debugC(1, kDebugScriptTBC, "OC_sub183C6()"); debugC(1, kDebugScriptTBC, "OC_sub183C6()");
int var1 = _currScript->readUint16LE(); int index = _currScript->readUint16LE();
int var2 = _currScript->readUint16LE(); _array122FD[index] = (_currScript->readUint16LE() & 0xff);
_array122FD[var1] = (var2 & 0xff); _array122E9[index] = 1;
_array122E9[var1] = 1;
_vm->displayInterfaceHotspots(); _vm->displayInterfaceHotspots();
} }
@ -3113,7 +3109,7 @@ void LilliputScript::displayNumber(byte var1, Common::Point pos) {
_vm->_displayStringBuf[2] = 32; _vm->_displayStringBuf[2] = 32;
_vm->_displayStringBuf[3] = 0; _vm->_displayStringBuf[3] = 0;
_vm->prepareGoldAmount(var1); _vm->numberToString(var1);
_vm->displayString(_vm->_displayStringBuf, pos); _vm->displayString(_vm->_displayStringBuf, pos);
} }
@ -3207,15 +3203,21 @@ void LilliputScript::OC_initSmallAnim() {
_vm->_smallAnims[index]._frameIndex[i] = _currScript->readUint16LE(); _vm->_smallAnims[index]._frameIndex[i] = _currScript->readUint16LE();
} }
void LilliputScript::OC_sub18678() { void LilliputScript::OC_setCharacterHeroismBar() {
debugC(1, kDebugScriptTBC, "OC_initArr18578()"); debugC(1, kDebugScript, "OC_setCharacterHeroismBar()");
_savedBuffer215Ptr = getCharacterVariablePtr(); _savedBuffer215Ptr = getCharacterVariablePtr();
_heroismBarX = _currScript->readUint16LE(); _heroismBarX = _currScript->readUint16LE();
_heroismBarBottomY = _currScript->readUint16LE(); _heroismBarBottomY = _currScript->readUint16LE();
} }
void LilliputScript::OC_sub18690() { void LilliputScript::OC_sub18690() {
warning("OC_sub18690"); debugC(1, kDebugScriptTBC, "OC_sub18690()");
int index = getValue1();
Common::Point pos = getPosFromScript();
_vm->_rulesBuffer2_13_posX[index] = pos.x;
_vm->_rulesBuffer2_14_posY[index] = pos.y;
} }
void LilliputScript::OC_setViewPortCharacterTarget() { void LilliputScript::OC_setViewPortCharacterTarget() {
@ -3257,7 +3259,7 @@ void LilliputScript::OC_sub186E5_snd() {
} }
void LilliputScript::OC_sub1870A_snd() { void LilliputScript::OC_sub1870A_snd() {
debugC(1, kDebugScriptTBC, "OC_sub1870A_snd()"); debugC(1, kDebugScript, "OC_sub1870A_snd()");
Common::Point var3 = getPosFromScript(); Common::Point var3 = getPosFromScript();
Common::Point var4 = var3; Common::Point var4 = var3;
@ -3302,19 +3304,19 @@ void LilliputScript::OC_sub18746_snd() {
} }
void LilliputScript::OC_sub1875D_snd() { void LilliputScript::OC_sub1875D_snd() {
debugC(1, kDebugScriptTBC, "OC_sub1875D_snd()"); debugC(1, kDebugScript, "OC_sub1875D_snd()");
_vm->_soundHandler->contentFct6(); _vm->_soundHandler->contentFct6();
} }
void LilliputScript::OC_sub18764() { void LilliputScript::OC_setArray128E() {
debugC(1, kDebugScriptTBC, "OC_sub18764()"); debugC(1, kDebugScript, "OC_setArray128E()");
int index = getValue1(); int index = getValue1();
int var1 = _currScript->readUint16LE(); int val = _currScript->readUint16LE();
assert(index < 40); assert(index < 40);
_array128EF[index] = var1 & 0xFF; _array128EF[index] = val & 0xFF;
} }
} // End of namespace } // End of namespace

View file

@ -121,7 +121,7 @@ private:
byte handleOpcodeType1(int curWord); byte handleOpcodeType1(int curWord);
void handleOpcodeType2(int curWord); void handleOpcodeType2(int curWord);
void sub1823E(byte index, byte var1, byte *curBufPtr); void enableCharacterScript(byte index, byte var1, byte *curBufPtr);
void sub17B6C(int var1); void sub17B6C(int var1);
void sub16C86(int index, byte *buf); void sub16C86(int index, byte *buf);
void sub16C5C(int index, byte var3); void sub16C5C(int index, byte var3);
@ -234,7 +234,7 @@ private:
void OC_sub17CB9(); void OC_sub17CB9();
void OC_sub17CD1(); void OC_sub17CD1();
void OC_resetWord16EFE(); void OC_resetWord16EFE();
void OC_sub17CEF(); void OC_enableCurrentCharacterScript();
void OC_IncCurrentCharacterVar1(); void OC_IncCurrentCharacterVar1();
void OC_sub17D23(); void OC_sub17D23();
void OC_sub17E6D(); void OC_sub17E6D();
@ -272,7 +272,7 @@ private:
void OC_sub1834C(); void OC_sub1834C();
void OC_setArray122C1(); void OC_setArray122C1();
void OC_sub18367(); void OC_sub18367();
void OC_sub17D04(); void OC_enableCharacterScript();
void OC_sub18387(); void OC_sub18387();
void OC_setDebugFlag(); void OC_setDebugFlag();
void OC_setByte14837(); void OC_setByte14837();
@ -288,7 +288,7 @@ private:
void OC_initGameAreaDisplay(); void OC_initGameAreaDisplay();
void OC_sub1864D(); void OC_sub1864D();
void OC_initSmallAnim(); void OC_initSmallAnim();
void OC_sub18678(); void OC_setCharacterHeroismBar();
void OC_sub18690(); void OC_sub18690();
void OC_setViewPortCharacterTarget(); void OC_setViewPortCharacterTarget();
void OC_sub186A1(); void OC_sub186A1();
@ -299,7 +299,7 @@ private:
void OC_sub1873F_snd(); void OC_sub1873F_snd();
void OC_sub18746_snd(); void OC_sub18746_snd();
void OC_sub1875D_snd(); void OC_sub1875D_snd();
void OC_sub18764(); void OC_setArray128E();
}; };
} // End of namespace Lilliput } // End of namespace Lilliput