diff options
author | Strangerke | 2012-04-16 00:24:02 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2018-03-28 17:36:57 +0200 |
commit | e21bb143135698735fbb0f18c9a86ad33243f97b (patch) | |
tree | 62c1f211dddc309f53a82c52b213d70cb5d2351a | |
parent | 31d4f0750560585418441d659fa1828cfa35b6f2 (diff) | |
download | scummvm-rg350-e21bb143135698735fbb0f18c9a86ad33243f97b.tar.gz scummvm-rg350-e21bb143135698735fbb0f18c9a86ad33243f97b.tar.bz2 scummvm-rg350-e21bb143135698735fbb0f18c9a86ad33243f97b.zip |
LILLIPUT: Fix bug in previous commit, implement one more display function
-rw-r--r-- | engines/lilliput/lilliput.cpp | 32 | ||||
-rw-r--r-- | engines/lilliput/lilliput.h | 2 | ||||
-rw-r--r-- | engines/lilliput/script.cpp | 6 |
3 files changed, 31 insertions, 9 deletions
diff --git a/engines/lilliput/lilliput.cpp b/engines/lilliput/lilliput.cpp index 3b48d8a7ab..29d53fe4db 100644 --- a/engines/lilliput/lilliput.cpp +++ b/engines/lilliput/lilliput.cpp @@ -137,6 +137,7 @@ LilliputEngine::LilliputEngine(OSystem *syst, const LilliputGameDescription *gd) _word1817B = 0; _word15BC8 = 0; _word15BCA = 0; + _word15AC2 = 0; _saveFlag = false; _byte16F07_menuId = 0; @@ -181,7 +182,7 @@ Common::Platform LilliputEngine::getPlatform() const { } void LilliputEngine::displayFunction1(byte *buf, int var1, int var2, int var4) { - debugC(2, kDebugEngine, "displayFunction1a(buf, %d, %d, %d)", var1, var2, var4); + debugC(2, kDebugEngine, "displayFunction1(buf, %d, %d, %d)", var1, var2, var4); int index1 = ((var1 & 0xFF) << 8) + (var1 >> 8); byte *newBuf = &buf[index1]; @@ -223,7 +224,7 @@ void LilliputEngine::displayFunction1(byte *buf, int var1, int var2, int var4) { if (newBuf[15] != 0) ((byte *)_mainSurface->getPixels())[index2 + 15] = newBuf[15]; - index2 += 304; + index2 += 320; newBuf = &newBuf[16]; } _system->copyRectToScreen((byte *)_mainSurface->getPixels(), 320, 0, 0, 320, 200); @@ -236,6 +237,24 @@ void LilliputEngine::displayFunction1a(byte *buf, int var2, int var4) { displayFunction1(buf, 0, var2, var4); } +void LilliputEngine::displayFunction4() { + debugC(2, kDebugEngine, "displayFunction4()"); + + if ((_skipDisplayFlag1 != 1) && (_skipDisplayFlag2 != 1)) { + _skipDisplayFlag2 = 1; + + _word15BC8 = _mouseDisplayX; + _word15BCA = _mouseDisplayY; + + warning("Display function 2"); + + displayFunction1(_bufferIdeogram, _word15AC2 + 80, _mouseDisplayX, _mouseDisplayY); + + _skipDisplayFlag1 = 1; + _skipDisplayFlag2 = 0; + } +} + void LilliputEngine::displayFunction5() { debugC(2, kDebugEngine, "displayFunction5()"); @@ -276,10 +295,10 @@ void LilliputEngine::pollEvent() { _oldMouseX = _mouseX; _oldMouseY = _mouseY; if (_skipDisplayFlag1 != 0) { - warning("Display function 5"); + displayFunction5(); _mouseDisplayX = _mouseX; _mouseDisplayY = _mouseY; - warning("Display function 4"); + displayFunction4(); } else { _mouseDisplayX = _mouseX; _mouseDisplayY = _mouseY; @@ -523,14 +542,15 @@ void LilliputEngine::loadRules() { void LilliputEngine::displayVGAFile(Common::String fileName) { debugC(1, kDebugEngine, "displayVGAFile(%s)", fileName.c_str()); - warning("TODO: display function #4"); + + displayFunction4(); byte *buffer = loadVGA(fileName, true); memcpy(_mainSurface->getPixels(), buffer, 320*200); _system->copyRectToScreen((byte *)_mainSurface->getPixels(), 320, 0, 0, 320, 200); _system->updateScreen(); - warning("TODO: display function #5"); + displayFunction5(); } void LilliputEngine::fixPaletteEntries(uint8 *palette, int num) { diff --git a/engines/lilliput/lilliput.h b/engines/lilliput/lilliput.h index ba865429ea..ed049591ad 100644 --- a/engines/lilliput/lilliput.h +++ b/engines/lilliput/lilliput.h @@ -111,6 +111,7 @@ public: int _word1817B; int _word15BC8; int _word15BCA; + int _word15AC2; int _array11D49[40]; @@ -167,6 +168,7 @@ public: void displayFunction1(byte *buf, int var1, int var2, int var4); void displayFunction1a(byte *buf, int var2, int var4); + void displayFunction4(); void displayFunction5(); void initGame(const LilliputGameDescription *gd); diff --git a/engines/lilliput/script.cpp b/engines/lilliput/script.cpp index 77a9f7acd7..f979008093 100644 --- a/engines/lilliput/script.cpp +++ b/engines/lilliput/script.cpp @@ -600,7 +600,7 @@ void LilliputScript::sub185ED(byte index, byte subIndex) { if (_vm->_arr18560[index]._field0 != 1) return; - warning("TODO: display function #1"); + _vm->displayFunction1(_vm->_bufferIdeogram, _vm->_arr18560[index]._field5[0], _vm->_arr18560[index]._field1, _vm->_arr18560[index]._field3); } byte LilliputScript::compareValues(byte var1, int oper, int var2) { @@ -1724,9 +1724,9 @@ void LilliputScript::OC_sub1847F() { int var3 = _currScript->readUint16LE(); if (_byte16F08 != 1) { - warning("TODO: OC_sub1847F - Display Function 5"); + _vm->displayFunction5(); warning("TODO: OC_sub1847F - sub_18BE6"); - warning("TODO: OC_sub1847F - Display Function 4"); + _vm->displayFunction4(); } } |