LILLIPUT: Fix bug in previous commit, implement one more display function
This commit is contained in:
parent
31d4f07505
commit
e21bb14313
3 changed files with 31 additions and 9 deletions
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue