2012-04-04 00:03:41 +02:00
|
|
|
/* ScummVM - Graphic Adventure Engine
|
|
|
|
*
|
|
|
|
* ScummVM is the legal property of its developers, whose names
|
|
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
|
|
* file distributed with this source distribution.
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 2
|
|
|
|
* of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef LILLIPUT_SCRIPT_H
|
|
|
|
#define LILLIPUT_SCRIPT_H
|
|
|
|
|
|
|
|
#include "common/memstream.h"
|
2012-04-12 00:54:12 +02:00
|
|
|
#include "common/stack.h"
|
2012-04-12 20:53:38 +02:00
|
|
|
#include "common/random.h"
|
2012-04-04 00:03:41 +02:00
|
|
|
|
|
|
|
namespace Lilliput {
|
|
|
|
|
|
|
|
class LilliputEngine;
|
|
|
|
class LilliputScript {
|
|
|
|
public:
|
2012-04-24 00:31:34 +02:00
|
|
|
byte displayMap;
|
2012-04-20 08:34:41 +02:00
|
|
|
byte _byte12A04;
|
2012-04-25 23:51:45 +02:00
|
|
|
byte _heroismLevel;
|
2012-04-17 23:48:11 +02:00
|
|
|
|
2012-04-11 15:58:41 +02:00
|
|
|
byte _array10B29[40];
|
2012-04-17 23:48:11 +02:00
|
|
|
byte _array122E9[20];
|
|
|
|
byte _array16123[40];
|
|
|
|
byte _array1614B[40];
|
|
|
|
byte _array16173[40];
|
2012-04-20 08:34:41 +02:00
|
|
|
byte _array12811[40];
|
|
|
|
byte _array10AB1[40];
|
2012-04-22 22:54:50 +02:00
|
|
|
byte _array122FD[20];
|
2012-04-25 23:51:45 +02:00
|
|
|
byte _array122C1[40];
|
2012-04-23 01:51:17 +02:00
|
|
|
short _array10B51[40 * 40];
|
|
|
|
|
2012-04-22 22:54:50 +02:00
|
|
|
byte *_savedBuffer215Ptr;
|
2012-04-17 23:48:11 +02:00
|
|
|
|
2012-04-25 01:41:31 +02:00
|
|
|
int _viewportX;
|
|
|
|
int _viewportY;
|
|
|
|
int _viewportCharacterTarget;
|
2012-04-20 08:34:41 +02:00
|
|
|
int _word1881B;
|
2012-04-25 23:51:45 +02:00
|
|
|
int _heroismBarX;
|
|
|
|
int _heroismBarBottomY;
|
2012-04-20 08:34:41 +02:00
|
|
|
|
2012-04-22 01:33:12 +02:00
|
|
|
short _array12311[640];
|
2012-04-26 01:42:48 +02:00
|
|
|
short _array1813B[40];
|
2012-04-24 00:31:34 +02:00
|
|
|
byte _array128EF[40];
|
|
|
|
byte _array12839[40];
|
2012-04-11 15:58:41 +02:00
|
|
|
|
2012-04-24 00:21:20 +02:00
|
|
|
void sub130B6();
|
|
|
|
|
2012-04-04 00:03:41 +02:00
|
|
|
LilliputScript(LilliputEngine *vm);
|
|
|
|
~LilliputScript();
|
|
|
|
|
|
|
|
void runScript(Common::MemoryReadStream script);
|
2012-04-11 10:59:42 +02:00
|
|
|
void runMenuScript(Common::MemoryReadStream script);
|
2012-04-04 00:03:41 +02:00
|
|
|
private:
|
|
|
|
LilliputEngine *_vm;
|
|
|
|
|
2012-04-05 00:00:59 +02:00
|
|
|
Common::MemoryReadStream *_currScript;
|
2012-04-12 00:54:12 +02:00
|
|
|
Common::Stack<Common::MemoryReadStream *> _scriptStack;
|
2012-04-05 00:00:59 +02:00
|
|
|
|
2012-04-04 00:03:41 +02:00
|
|
|
byte _byte16F05_ScriptHandler;
|
2012-04-06 22:45:43 +02:00
|
|
|
byte _byte12A09;
|
|
|
|
byte _byte129A0;
|
2012-04-09 11:30:58 +02:00
|
|
|
byte _byte1855D;
|
|
|
|
byte _byte10806;
|
2012-04-11 10:59:42 +02:00
|
|
|
byte _byte12FE4;
|
2012-04-12 20:53:38 +02:00
|
|
|
byte _byte16F02;
|
2012-04-07 18:09:30 +02:00
|
|
|
|
2012-04-12 20:53:38 +02:00
|
|
|
|
2012-04-11 18:23:17 +02:00
|
|
|
int _word16F00;
|
|
|
|
int _word10804;
|
|
|
|
int _word1855E;
|
2012-04-15 01:40:41 +02:00
|
|
|
int _word18776;
|
2012-04-04 00:03:41 +02:00
|
|
|
|
2012-04-06 22:45:43 +02:00
|
|
|
int handleOpcode(Common::MemoryReadStream *script);
|
2012-04-04 00:03:41 +02:00
|
|
|
byte handleOpcodeType1(int curWord);
|
|
|
|
void handleOpcodeType2(int curWord);
|
|
|
|
|
2012-04-20 01:10:46 +02:00
|
|
|
void sub1863B();
|
2012-04-09 11:30:58 +02:00
|
|
|
void sub185ED(byte index, byte subIndex);
|
|
|
|
void sub185B4_display();
|
2012-04-08 12:54:56 +02:00
|
|
|
void sub1823E(byte var1, byte var2, byte *curBufPtr);
|
2012-04-12 00:54:12 +02:00
|
|
|
void sub17B6C(int var1);
|
2012-04-12 20:53:38 +02:00
|
|
|
void sub16C86(int index, byte *buf);
|
|
|
|
void sub16C5C(int index, byte var3);
|
2012-04-15 01:40:41 +02:00
|
|
|
int sub17D40(int var);
|
|
|
|
void sub18A56(byte *buf);
|
|
|
|
void sub18B3C(int var);
|
2012-04-21 21:19:13 +02:00
|
|
|
void sub18BE6(byte var1, int var2, int var4);
|
2012-04-08 12:54:56 +02:00
|
|
|
|
2012-04-06 22:45:43 +02:00
|
|
|
int getValue1();
|
2012-04-07 14:36:04 +02:00
|
|
|
int getValue2();
|
|
|
|
|
2012-04-06 22:45:43 +02:00
|
|
|
byte *getBuffer215Ptr();
|
2012-04-08 12:54:56 +02:00
|
|
|
byte compareValues(byte var1, int oper, int var2);
|
|
|
|
void computeOperation(byte *bufPtr, int oper, int var2);
|
2012-04-06 22:45:43 +02:00
|
|
|
|
2012-04-04 00:03:41 +02:00
|
|
|
//Opcodes Type 1
|
|
|
|
byte OC_sub173DF();
|
|
|
|
byte OC_sub173F0();
|
|
|
|
byte OC_sub1740A();
|
|
|
|
byte OC_sub17434();
|
|
|
|
byte OC_sub17468();
|
|
|
|
byte OC_getRandom();
|
|
|
|
byte OC_sub1748C();
|
|
|
|
byte OC_compWord18776();
|
|
|
|
byte OC_checkSaveFlag();
|
|
|
|
byte OC_sub174C8();
|
|
|
|
byte OC_sub174D8();
|
|
|
|
byte OC_sub1750E();
|
|
|
|
byte OC_compareCoords_1();
|
|
|
|
byte OC_compareCoords_2();
|
|
|
|
byte OC_sub1757C();
|
|
|
|
byte OC_sub1759E();
|
|
|
|
byte OC_compWord16EF8();
|
|
|
|
byte OC_sub175C8();
|
|
|
|
byte OC_sub17640();
|
|
|
|
byte OC_sub176C4();
|
|
|
|
byte OC_compWord10804();
|
|
|
|
byte OC_sub17766();
|
|
|
|
byte OC_sub17782();
|
|
|
|
byte OC_sub1779E();
|
|
|
|
byte OC_sub177C6();
|
|
|
|
byte OC_compWord16EFE();
|
|
|
|
byte OC_sub177F5();
|
|
|
|
byte OC_sub17812();
|
|
|
|
byte OC_sub17825();
|
|
|
|
byte OC_sub17844();
|
|
|
|
byte OC_sub1785C();
|
|
|
|
byte OC_sub17886();
|
|
|
|
byte OC_sub178A8();
|
|
|
|
byte OC_sub178BA();
|
|
|
|
byte OC_sub178C2();
|
|
|
|
byte OC_sub178D2();
|
|
|
|
byte OC_sub178E8();
|
|
|
|
byte OC_sub178FC();
|
|
|
|
byte OC_sub1790F();
|
|
|
|
byte OC_sub1792A();
|
|
|
|
byte OC_sub1793E();
|
|
|
|
byte OC_sub1795E();
|
|
|
|
byte OC_sub1796E();
|
|
|
|
byte OC_sub17984();
|
|
|
|
byte OC_checkSavedMousePos();
|
|
|
|
byte OC_sub179AE();
|
|
|
|
byte OC_sub179C2();
|
|
|
|
byte OC_sub179E5();
|
|
|
|
byte OC_sub17A07();
|
|
|
|
byte OC_sub17757();
|
|
|
|
|
|
|
|
// Opcodes Type 2
|
|
|
|
void OC_setWord18821();
|
|
|
|
void OC_sub17A3E();
|
|
|
|
void OC_sub17D57();
|
|
|
|
void OC_sub17D7F();
|
|
|
|
void OC_sub17DB9();
|
|
|
|
void OC_sub17DF9();
|
|
|
|
void OC_sub17E07();
|
|
|
|
void OC_sub17E15();
|
|
|
|
void OC_sub17B03();
|
|
|
|
void OC_getRandom_type2();
|
|
|
|
void OC_sub17A66();
|
|
|
|
void OC_sub17A8D();
|
|
|
|
void OC_saveAndQuit();
|
|
|
|
void OC_sub17B93();
|
|
|
|
void OC_sub17E37();
|
|
|
|
void OC_resetByte1714E();
|
|
|
|
void OC_deleteSavegameAndQuit();
|
|
|
|
void OC_incByte16F04();
|
|
|
|
void OC_sub17BA5();
|
|
|
|
void OC_setByte18823();
|
|
|
|
void OC_sub17BB7();
|
|
|
|
void OC_sub17BF2();
|
|
|
|
void OC_sub17ACC();
|
|
|
|
void OC_resetByte16F04();
|
|
|
|
void OC_sub17AE1();
|
|
|
|
void OC_sub17AEE();
|
|
|
|
void OC_setWord10804();
|
|
|
|
void OC_sub17C0E();
|
|
|
|
void OC_sub17C55();
|
|
|
|
void OC_sub17C76();
|
|
|
|
void OC_sub17AFC();
|
|
|
|
void OC_sub17C8B();
|
|
|
|
void OC_sub17CA2();
|
|
|
|
void OC_sub17CB9();
|
|
|
|
void OC_sub17CD1();
|
|
|
|
void OC_resetWord16EFE();
|
|
|
|
void OC_sub17CEF();
|
|
|
|
void OC_sub17D1B();
|
|
|
|
void OC_sub17D23();
|
|
|
|
void OC_sub17E6D();
|
|
|
|
void OC_sub17E7E();
|
|
|
|
void OC_sub17E99();
|
|
|
|
void OC_sub17EC5();
|
|
|
|
void OC_sub17EF4();
|
|
|
|
void OC_sub17F08();
|
|
|
|
void OC_sub17F4F();
|
|
|
|
void OC_sub17F68();
|
|
|
|
void OC_getNextVal();
|
|
|
|
void OC_sub17FD2();
|
|
|
|
void OC_sub17FDD();
|
|
|
|
void OC_setByte10B29();
|
|
|
|
void OC_sub18007();
|
|
|
|
void OC_sub18014();
|
|
|
|
void OC_sub1801D();
|
|
|
|
void OC_sub1805D();
|
|
|
|
void OC_sub18074();
|
|
|
|
void OC_sub1808B();
|
|
|
|
void OC_sub18099();
|
|
|
|
void OC_sub180C3();
|
|
|
|
void OC_sub1810A();
|
|
|
|
void OC_sub1812D();
|
|
|
|
void OC_sub1817F();
|
2012-04-26 01:42:48 +02:00
|
|
|
void OC_sub1817F_loop( int b1, int b2 );
|
2012-04-04 00:03:41 +02:00
|
|
|
void OC_sub181BB();
|
|
|
|
void OC_sub18213();
|
|
|
|
void OC_sub18252();
|
|
|
|
void OC_sub18260();
|
|
|
|
void OC_sub182EC();
|
2012-04-22 23:07:09 +02:00
|
|
|
void OC_PaletteFadeOut();
|
|
|
|
void OC_PaletteFadeIn();
|
2012-04-04 00:03:41 +02:00
|
|
|
void OC_loadAndDisplayCUBESx_GFX();
|
|
|
|
void OC_sub1834C();
|
|
|
|
void OC_sub18359();
|
|
|
|
void OC_sub18367();
|
|
|
|
void OC_sub17D04();
|
|
|
|
void OC_sub18387();
|
|
|
|
void OC_setByte14835();
|
|
|
|
void OC_setByte14837();
|
|
|
|
void OC_sub183A2();
|
|
|
|
void OC_sub183C6();
|
|
|
|
void OC_loadFile_AERIAL_GFX();
|
|
|
|
void OC_sub17E22();
|
|
|
|
void OC_sub1844A();
|
|
|
|
void OC_sub1847F();
|
2012-04-05 00:00:59 +02:00
|
|
|
void OC_displayVGAFile();
|
2012-04-04 00:03:41 +02:00
|
|
|
void OC_sub184D7();
|
2012-04-10 10:06:50 +02:00
|
|
|
void OC_displayTitleScreen();
|
2012-04-04 00:03:41 +02:00
|
|
|
void OC_sub1853B();
|
|
|
|
void OC_sub1864D();
|
2012-04-05 00:00:59 +02:00
|
|
|
void OC_initArr18560();
|
2012-04-04 00:03:41 +02:00
|
|
|
void OC_sub18678();
|
|
|
|
void OC_sub18690();
|
|
|
|
void OC_setWord10802();
|
|
|
|
void OC_sub186A1();
|
|
|
|
void OC_sub186E5_snd();
|
|
|
|
void OC_sub1870A_snd();
|
|
|
|
void OC_sub18725_snd();
|
|
|
|
void OC_sub18733_snd();
|
|
|
|
void OC_sub1873F_snd();
|
|
|
|
void OC_sub18746_snd();
|
|
|
|
void OC_sub1875D_snd();
|
|
|
|
void OC_sub18764();
|
|
|
|
};
|
|
|
|
|
|
|
|
} // End of namespace Lilliput
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|