aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/lilliput/lilliput.cpp17
-rw-r--r--engines/lilliput/lilliput.h4
-rw-r--r--engines/lilliput/script.cpp30
-rw-r--r--engines/lilliput/script.h2
4 files changed, 27 insertions, 26 deletions
diff --git a/engines/lilliput/lilliput.cpp b/engines/lilliput/lilliput.cpp
index a59e8004ec..350490c3f5 100644
--- a/engines/lilliput/lilliput.cpp
+++ b/engines/lilliput/lilliput.cpp
@@ -194,7 +194,7 @@ LilliputEngine::LilliputEngine(OSystem *syst, const LilliputGameDescription *gd)
_characterPositionY[i] = -1;
_characterPositionAltitude[i] = 0;
_characterFrameArray[i] = 0;
- _rulesBuffer2_5[i] = 0xFF;
+ _rulesBuffer2_5[i] = -1;
_rulesBuffer2_6[i] = 4;
_rulesBuffer2_7[i] = 0;
_spriteSizeArray[i] = 20;
@@ -692,10 +692,10 @@ void LilliputEngine::moveCharacters() {
Common::Point _pos16213 = Common::Point(_scriptHandler->_viewportPos.x << 3, _scriptHandler->_viewportPos.y << 3);
for (int i = index; i >= 0; i--) {
- if (_rulesBuffer2_5[i] != 0xFF) {
+ if (_rulesBuffer2_5[i] != -1) {
int index2 = _rulesBuffer2_5[i];
_characterPositionAltitude[i] = _characterPositionAltitude[index2] + _rulesBuffer2_7[i];
- int tmpVal = _rulesBuffer2_6[i];
+ int8 tmpVal = _rulesBuffer2_6[i];
_characterDirectionArray[i] = _characterDirectionArray[index2];
int var3 = _characterPositionX[index2];
int var4 = _characterPositionY[index2];
@@ -1688,12 +1688,11 @@ void LilliputEngine::sub16626() {
uint16 index2 = _scriptHandler->_array12811[index] + (index * 16);
Common::Point var1 = _scriptHandler->_array12311[index2];
- int16 var2 = (var1.x >> 3);
- var2 &= 0xFE;
+ int16 var2 = var1.x / 16;
//warning(" step %d : var1 x:%d y:%d var:%d", _scriptHandler->_array12811[index], var1.x, var1.y, var2 / 2);
- switch (var2 / 2) {
+ switch (var2) {
case 0:
result = sub16675_moveCharacter(index, var1);
break;
@@ -1729,7 +1728,7 @@ void LilliputEngine::sub16626() {
result = sub166EA(index);
break;
default:
- error("sub16626 - unexpected value %d", var2 / 2);
+ error("sub16626 - unexpected value %d", var2);
break;
}
@@ -2442,8 +2441,8 @@ void LilliputEngine::loadRules() {
_characterPositionAltitude[j] = (f.readUint16LE() & 0xFF);
_characterFrameArray[j] = f.readUint16LE();
- _rulesBuffer2_5[j] = f.readByte();
- _rulesBuffer2_6[j] = f.readByte();
+ _rulesBuffer2_5[j] = (int8)f.readByte();
+ _rulesBuffer2_6[j] = (int8)f.readByte();
_rulesBuffer2_7[j] = f.readByte();
_spriteSizeArray[j] = f.readByte();
_characterDirectionArray[j] = f.readByte();
diff --git a/engines/lilliput/lilliput.h b/engines/lilliput/lilliput.h
index 94b541bebb..5f856b2f31 100644
--- a/engines/lilliput/lilliput.h
+++ b/engines/lilliput/lilliput.h
@@ -160,8 +160,8 @@ public:
int16 _characterPositionY[40];
int8 _characterPositionAltitude[40];
int16 _characterFrameArray[40];
- byte _rulesBuffer2_5[40];
- byte _rulesBuffer2_6[40];
+ int8 _rulesBuffer2_5[40];
+ int8 _rulesBuffer2_6[40];
byte _rulesBuffer2_7[40];
byte _spriteSizeArray[40];
byte _characterDirectionArray[40];
diff --git a/engines/lilliput/script.cpp b/engines/lilliput/script.cpp
index b931b87cd7..67a974875b 100644
--- a/engines/lilliput/script.cpp
+++ b/engines/lilliput/script.cpp
@@ -1491,7 +1491,7 @@ byte LilliputScript::OC_compByte16F04() {
byte LilliputScript::OC_sub174D8() {
debugC(1, kDebugScript, "OC_sub174D8()");
- byte tmpVal = getValue1() & 0xFF;
+ int8 tmpVal = getValue1() & 0xFF;
uint16 curWord = _currScript->readUint16LE();
if (curWord == 3000) {
@@ -1646,9 +1646,9 @@ byte LilliputScript::OC_sub175C8() {
byte LilliputScript::OC_sub17640() {
debugC(1, kDebugScript, "OC_sub17640()");
- int var4 = _currScript->readUint16LE();
+ uint16 var4 = _currScript->readUint16LE();
int index = _vm->_currentScriptCharacter * 40;
- int tmpVal = _currScript->readUint16LE();
+ uint16 tmpVal = _currScript->readUint16LE();
if (tmpVal < 2000) {
_currScript->seek(_currScript->pos() - 2);
@@ -1917,13 +1917,12 @@ byte LilliputScript::OC_CurrentCharacterVar2Equals1() {
}
byte LilliputScript::OC_sub178D2() {
- debugC(1, kDebugScriptTBC, "OC_sub178D2()");
+ debugC(1, kDebugScript, "OC_sub178D2()");
int index = getValue1();
assert (index < 40);
byte curByte = (_currScript->readUint16LE() & 0xFF);
-
if (curByte == _vm->_rulesBuffer2_12[index])
return 1;
@@ -1959,7 +1958,7 @@ byte LilliputScript::OC_sub1790F() {
int index = getValue1();
assert(index < 40);
- if (_vm->_rulesBuffer2_5[index] == 0xFF)
+ if (_vm->_rulesBuffer2_5[index] == -1)
return 0;
_word16F00 = _vm->_rulesBuffer2_5[index];
@@ -2433,15 +2432,18 @@ void LilliputScript::OC_sub17C0E() {
void LilliputScript::OC_sub17C55() {
debugC(1, kDebugScriptTBC, "OC_sub17C55()");
- int var1 = getValue1();
- int var2 = getValue1();
+ byte var1 = ((uint16)getValue1()) & 0xFF;
+ int16 index = getValue1();
- int var3 = _currScript->readUint16LE();
- int var4 = _currScript->readUint16LE();
+ int8 var3 = (_currScript->readUint16LE() & 0xFF);
+ byte var4 = (_currScript->readUint16LE() & 0xFF);
+
+ assert((index >= 0) && (index < 40));
+ _vm->_rulesBuffer2_5[index] = var1;
+ _vm->_rulesBuffer2_6[index] = var3;
+ _vm->_rulesBuffer2_7[index] = var4;
- _vm->_rulesBuffer2_5[var2] = var1 & 0xFF;
- _vm->_rulesBuffer2_6[var2] = var3 & 0xFF;
- _vm->_rulesBuffer2_7[var2] = var4 & 0xFF;
+ warning("debug - OC_sub17C55 index %d, var1 0x%x var3 0x%x var4 0x%x", index, var1, var3, var4);
}
void LilliputScript::OC_sub17C76() {
@@ -2553,7 +2555,7 @@ void LilliputScript::OC_sub17D23() {
void LilliputScript::OC_sub17E6D() {
debugC(1, kDebugScriptTBC, "OC_sub17E6D()");
- int var1 = _currScript->readUint16LE();
+ uint16 var1 = _currScript->readUint16LE();
_vm->_rulesBuffer2_12[_vm->_currentScriptCharacter] = (var1 - 2000) & 0xFF;
}
diff --git a/engines/lilliput/script.h b/engines/lilliput/script.h
index 722ae60f99..b5a9916dea 100644
--- a/engines/lilliput/script.h
+++ b/engines/lilliput/script.h
@@ -106,7 +106,7 @@ private:
byte _byte18823;
byte _speechDisplaySpeed;
- int _word16F00;
+ int16 _word16F00;
int _currentSpeechId;
int _word18821;
int _word129A3;