aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/engine/kyra_hof.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/engine/kyra_hof.h')
-rw-r--r--engines/kyra/engine/kyra_hof.h697
1 files changed, 697 insertions, 0 deletions
diff --git a/engines/kyra/engine/kyra_hof.h b/engines/kyra/engine/kyra_hof.h
new file mode 100644
index 0000000000..588efbb5ab
--- /dev/null
+++ b/engines/kyra/engine/kyra_hof.h
@@ -0,0 +1,697 @@
+/* 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 KYRA_KYRA_HOF_H
+#define KYRA_KYRA_HOF_H
+
+#include "kyra/engine/kyra_v2.h"
+#include "kyra/script/script.h"
+#include "kyra/script/script_tim.h"
+#include "kyra/graphics/screen_hof.h"
+#include "kyra/text/text_hof.h"
+#include "kyra/gui/gui_hof.h"
+
+#include "common/list.h"
+#include "common/func.h"
+
+namespace Kyra {
+
+//class WSAMovie_v2;
+//class KyraEngine_HoF;
+class TextDisplayer_HoF;
+class SeqPlayer_HOF;
+
+struct TIM;
+
+class KyraEngine_HoF : public KyraEngine_v2 {
+friend class Debugger_HoF;
+friend class TextDisplayer_HoF;
+friend class GUI_HoF;
+public:
+ KyraEngine_HoF(OSystem *system, const GameFlags &flags);
+ ~KyraEngine_HoF();
+
+ void pauseEngineIntern(bool pause);
+
+ Screen *screen() { return _screen; }
+ Screen_v2 *screen_v2() const { return _screen; }
+ GUI *gui() const { return _gui; }
+ virtual TextDisplayer *text() { return _text; }
+ int language() const { return _lang; }
+
+protected:
+ static const EngineDesc _hofEngineDesc;
+
+ // intro/outro
+ void seq_showStarcraftLogo();
+
+ int seq_playIntro();
+ int seq_playOutro();
+ int seq_playDemo();
+
+ void seq_pausePlayer(bool toggle);
+
+ Common::Error init();
+ Common::Error go();
+
+ Screen_HoF *_screen;
+ TextDisplayer_HoF *_text;
+ TIMInterpreter *_tim;
+
+ static const int8 _dosTrackMap[];
+ static const int _dosTrackMapSize;
+ static const int8 _mt32SfxMap[];
+ static const int _mt32SfxMapSize;
+ static const int8 _gmSfxMap[];
+ static const int _gmSfxMapSize;
+ static const int8 _pcSpkSfxMap[];
+ static const int _pcSpkSfxMapSize;
+
+protected:
+ // game initialization
+ void startup();
+ void runLoop();
+ void cleanup();
+
+ void registerDefaultSettings();
+ void writeSettings();
+ void readSettings();
+ uint8 _configTextspeed;
+
+ // TODO: get rid of all variables having pointers to the static resources if possible
+ // i.e. let them directly use the _staticres functions
+ void initStaticResource();
+
+ void setupTimers();
+ void setupOpcodeTable();
+
+ void loadMouseShapes();
+ void loadItemShapes();
+
+ // run
+ void update();
+ void updateWithText();
+
+ Common::Functor0Mem<void, KyraEngine_HoF> _updateFunctor;
+
+ void updateMouse();
+
+ void dinoRide();
+
+ void handleInput(int x, int y);
+ bool handleInputUnkSub(int x, int y);
+
+ int inputSceneChange(int x, int y, int unk1, int unk2);
+
+ // gfx/animation specific
+ bool _inventorySaved;
+ void backUpPage0();
+ void restorePage0();
+
+ uint8 *_gfxBackUpRect;
+
+ void backUpGfxRect24x24(int x, int y);
+ void restoreGfxRect24x24(int x, int y);
+ void backUpGfxRect32x32(int x, int y);
+ void restoreGfxRect32x32(int x, int y);
+
+ uint8 *_sceneShapeTable[50];
+
+ WSAMovie_v2 *_wsaSlots[10];
+
+ void freeSceneShapePtrs();
+
+ struct ShapeDesc {
+ uint8 unk0, unk1, unk2, unk3, unk4;
+ uint16 width, height;
+ int16 xAdd, yAdd;
+ };
+
+ ShapeDesc *_shapeDescTable;
+
+ void loadCharacterShapes(int shapes);
+ void loadInventoryShapes();
+
+ void resetScaleTable();
+ void setScaleTableItem(int item, int data);
+ int getScale(int x, int y);
+ uint16 _scaleTable[15];
+
+ void setDrawLayerTableEntry(int entry, int data);
+ int getDrawLayer(int x, int y);
+ int _drawLayerTable[15];
+
+ int _layerFlagTable[16]; // seems to indicate layers where items get destroyed when dropped to (TODO: check this!)
+
+ int initAnimationShapes(uint8 *filedata);
+ void uninitAnimationShapes(int count, uint8 *filedata);
+
+ // animator
+ uint8 *_gamePlayBuffer;
+ void restorePage3();
+
+ void clearAnimObjects();
+
+ void refreshAnimObjects(int force);
+
+ void drawAnimObjects();
+ void drawSceneAnimObject(AnimObj *obj, int x, int y, int drawLayer);
+ void drawCharacterAnimObject(AnimObj *obj, int x, int y, int drawLayer);
+
+ void updateItemAnimations();
+
+ void updateCharFacing();
+ void updateCharacterAnim(int);
+ void updateSceneAnim(int anim, int newFrame);
+
+ int _animObj0Width, _animObj0Height;
+ void setCharacterAnimDim(int w, int h);
+ void resetCharacterAnimDim();
+
+ // scene
+ const char *_sceneCommentString;
+ uint8 _scenePal[688];
+
+ void enterNewScene(uint16 newScene, int facing, int unk1, int unk2, int unk3);
+ void enterNewSceneUnk1(int facing, int unk1, int unk2);
+ void enterNewSceneUnk2(int unk1);
+ void unloadScene();
+
+ void loadScenePal();
+ void loadSceneMsc();
+
+ void fadeScenePal(int srcIndex, int delay);
+
+ void startSceneScript(int unk1);
+ void runSceneScript2();
+ void runSceneScript4(int unk1);
+ void runSceneScript7();
+
+ void initSceneAnims(int unk1);
+ void initSceneScreen(int unk1);
+
+ int trySceneChange(int *moveTable, int unk1, int updateChar);
+ int checkSceneChange();
+
+ // pathfinder
+ bool lineIsPassable(int x, int y);
+
+ // item
+ void setMouseCursor(Item item);
+
+ uint8 _itemHtDat[176];
+
+ int checkItemCollision(int x, int y);
+ void updateWaterFlasks();
+
+ bool dropItem(int unk1, Item item, int x, int y, int unk2);
+ bool processItemDrop(uint16 sceneId, Item item, int x, int y, int unk1, int unk2);
+ void itemDropDown(int startX, int startY, int dstX, int dstY, int itemSlot, Item item);
+ void exchangeMouseItem(int itemPos);
+ bool pickUpItem(int x, int y);
+
+ bool isDropable(int x, int y);
+
+ static const byte _itemStringMap[];
+ static const int _itemStringMapSize;
+
+ static const Item _flaskTable[];
+ bool itemIsFlask(Item item);
+
+ // inventory
+ static const int _inventoryX[];
+ static const int _inventoryY[];
+ static const uint16 _itemMagicTable[];
+
+ int getInventoryItemSlot(Item item);
+ void removeSlotFromInventory(int slot);
+ bool checkInventoryItemExchange(Item item, int slot);
+ void drawInventoryShape(int page, Item item, int slot);
+ void clearInventorySlot(int slot, int page);
+ void redrawInventory(int page);
+ void scrollInventoryWheel();
+ int findFreeVisibleInventorySlot();
+
+ ActiveItemAnim _activeItemAnim[15];
+ int _nextAnimItem;
+
+ // gui
+ bool _menuDirectlyToLoad;
+ GUI_HoF *_gui;
+
+ void loadButtonShapes();
+ void setupLangButtonShapes();
+ uint8 *_buttonShapes[19];
+
+ void initInventoryButtonList();
+ Button *_inventoryButtons;
+ Button *_buttonList;
+
+ int scrollInventory(Button *button);
+ int buttonInventory(Button *button);
+ int bookButton(Button *button);
+ int cauldronButton(Button *button);
+ int cauldronClearButton(Button *button);
+
+ // book
+ static const int _bookPageYOffset[];
+ static const byte _bookTextColorMap[];
+
+ int _bookMaxPage;
+ int _bookNewPage;
+ int _bookCurPage;
+ int _bookBkgd;
+ bool _bookShown;
+
+ void loadBookBkgd();
+ void showBookPage();
+ void bookLoop();
+
+ void bookDecodeText(uint8 *text);
+ void bookPrintText(int dstPage, const uint8 *text, int x, int y, uint8 color);
+
+ int bookPrevPage(Button *button);
+ int bookNextPage(Button *button);
+ int bookClose(Button *button);
+
+ // cauldron
+ uint8 _cauldronState;
+ int16 _cauldronUseCount;
+ int16 _cauldronTable[25];
+ int16 _cauldronStateTables[23][7];
+
+ static const int16 _cauldronProtectedItems[];
+ static const int16 _cauldronBowlTable[];
+ static const int16 _cauldronMagicTable[];
+ static const int16 _cauldronMagicTableScene77[];
+ static const uint8 _cauldronStateTable[];
+
+ void resetCauldronStateTable(int idx);
+ bool addToCauldronStateTable(int data, int idx);
+
+ void setCauldronState(uint8 state, bool paletteFade);
+ void clearCauldronTable();
+ void addFrontCauldronTable(int item);
+ void cauldronItemAnim(int item);
+ void cauldronRndPaletteFade();
+ bool updateCauldron();
+ void listItemsInCauldron();
+
+ // localization
+ void loadCCodeBuffer(const char *file);
+ void loadOptionsBuffer(const char *file);
+ void loadChapterBuffer(int chapter);
+ uint8 *_optionsBuffer;
+ uint8 *_cCodeBuffer;
+
+ uint8 *_chapterBuffer;
+ int _currentChapter;
+ int _newChapterFile;
+
+ uint8 *getTableEntry(uint8 *buffer, int id);
+ char *getTableString(int id, uint8 *buffer, int decode);
+ const char *getChapterString(int id);
+
+ void changeFileExtension(char *buffer);
+
+ // - Just used in French version
+ int getItemCommandStringDrop(Item item);
+ int getItemCommandStringPickUp(Item item);
+ int getItemCommandStringInv(Item item);
+ // -
+
+ char _internStringBuf[200];
+ static const char *const _languageExtension[];
+ static const char *const _scriptLangExt[];
+
+ // character
+ bool _useCharPal;
+ bool _setCharPalFinal;
+ int _charPalEntry;
+ uint8 _charPalTable[16];
+ void updateCharPal(int unk1);
+ void setCharPalEntry(int entry, int value);
+
+ int _characterFacingCountTable[2];
+
+ int getCharacterWalkspeed() const;
+ void updateCharAnimFrame(int *table);
+
+ bool checkCharCollision(int x, int y);
+
+ static const uint8 _characterFrameTable[];
+
+ // text
+ void showMessageFromCCode(int id, int16 palIndex, int);
+ void showMessage(const char *string, int16 palIndex);
+ void showChapterMessage(int id, int16 palIndex);
+
+ void updateCommandLineEx(int str1, int str2, int16 palIndex);
+
+ const char *_shownMessage;
+
+ byte _messagePal[3];
+ bool _fadeMessagePalette;
+ void fadeMessagePalette();
+
+ // chat
+ bool _chatIsNote;
+
+ int chatGetType(const char *text);
+ int chatCalcDuration(const char *text);
+
+ void objectChat(const char *text, int object, int vocHigh = -1, int vocLow = -1);
+ void objectChatInit(const char *text, int object, int vocHigh = -1, int vocLow = -1);
+ void objectChatPrintText(const char *text, int object);
+ void objectChatProcess(const char *script);
+ void objectChatWaitToFinish();
+
+ void startDialogue(int dlgIndex);
+
+ void zanthSceneStartupChat();
+ void randomSceneChat();
+ void updateDlgBuffer();
+ void loadDlgHeader(int &csEntry, int &vocH, int &scIndex1, int &scIndex2);
+ void processDialogue(int dlgOffset, int vocH = 0, int csEntry = 0);
+ void npcChatSequence(const char *str, int objectId, int vocHigh = -1, int vocLow = -1);
+ void setDlgIndex(int dlgIndex);
+
+ int _npcTalkChpIndex;
+ int _npcTalkDlgIndex;
+ uint8 _newSceneDlgState[32];
+ int8 **_conversationState;
+ uint8 *_dlgBuffer;
+
+ // Talk object handling
+ void initTalkObject(int index);
+ void deinitTalkObject(int index);
+
+ struct TalkObject {
+ char filename[13];
+ int8 scriptId;
+ int16 x, y;
+ int8 color;
+ };
+ TalkObject *_talkObjectList;
+
+ struct TalkSections {
+ TIM *STATim;
+ TIM *TLKTim;
+ TIM *ENDTim;
+ };
+ TalkSections _currentTalkSections;
+
+ char _TLKFilename[13];
+
+ // tim
+ void playTim(const char *filename);
+
+ int t2_initChat(const TIM *tim, const uint16 *param);
+ int t2_updateSceneAnim(const TIM *tim, const uint16 *param);
+ int t2_resetChat(const TIM *tim, const uint16 *param);
+ int t2_playSoundEffect(const TIM *tim, const uint16 *param);
+
+ Common::Array<const TIMOpcode *> _timOpcodes;
+
+ // sound
+ int _oldTalkFile;
+ int _currentTalkFile;
+ void openTalkFile(int newFile);
+ int _lastSfxTrack;
+
+ virtual void snd_playVoiceFile(int id);
+ void snd_loadSoundFile(int id);
+
+ void playVoice(int high, int low);
+ void snd_playSoundEffect(int track, int volume=0xFF);
+
+ // timer
+ void timerFadeOutMessage(int);
+ void timerCauldronAnimation(int);
+ void timerFunc4(int);
+ void timerFunc5(int);
+ void timerBurnZanthia(int);
+
+ void setTimer1DelaySecs(int secs);
+
+ uint32 _nextIdleAnim;
+ int _lastIdleScript;
+ bool _useSceneIdleAnim;
+
+ void setNextIdleAnimTimer();
+ void showIdleAnim();
+ void runIdleScript(int script);
+
+ void setWalkspeed(uint8 speed);
+
+ // ingame static sequence handling
+ void seq_makeBookOrCauldronAppear(int type);
+ void seq_makeBookAppear();
+
+ struct InventoryWsa {
+ int x, y, x2, y2, w, h;
+ int page;
+ int curFrame, lastFrame, specialFrame;
+ int sfx;
+ int delay;
+ bool running;
+ uint32 timer;
+ WSAMovie_v2 *wsa;
+ } _invWsa;
+
+ // TODO: move inside KyraEngine_HoF::InventoryWsa?
+ void loadInvWsa(const char *filename, int run, int delay, int page, int sfx, int sFrame, int flags);
+ void closeInvWsa();
+
+ void updateInvWsa();
+ void displayInvWsaLastFrame();
+
+ // opcodes
+ int o2_setCharacterFacingRefresh(EMCState *script);
+ int o2_setCharacterPos(EMCState *script);
+ int o2_defineObject(EMCState *script);
+ int o2_refreshCharacter(EMCState *script);
+ int o2_setSceneComment(EMCState *script);
+ int o2_setCharacterAnimFrame(EMCState *script);
+ int o2_setCharacterFacing(EMCState *script);
+ int o2_customCharacterChat(EMCState *script);
+ int o2_soundFadeOut(EMCState *script);
+ int o2_showChapterMessage(EMCState *script);
+ int o2_restoreTalkTextMessageBkgd(EMCState *script);
+ int o2_wsaClose(EMCState *script);
+ int o2_meanWhileScene(EMCState *script);
+ int o2_backUpScreen(EMCState *script);
+ int o2_restoreScreen(EMCState *script);
+ int o2_displayWsaFrame(EMCState *script);
+ int o2_displayWsaSequentialFramesLooping(EMCState *script);
+ int o2_wsaOpen(EMCState *script);
+ int o2_displayWsaSequentialFrames(EMCState *script);
+ int o2_displayWsaSequence(EMCState *script);
+ int o2_addItemToInventory(EMCState *script);
+ int o2_drawShape(EMCState *script);
+ int o2_addItemToCurScene(EMCState *script);
+ int o2_loadSoundFile(EMCState *script);
+ int o2_removeSlotFromInventory(EMCState *script);
+ int o2_removeItemFromInventory(EMCState *script);
+ int o2_countItemInInventory(EMCState *script);
+ int o2_countItemsInScene(EMCState *script);
+ int o2_wipeDownMouseItem(EMCState *script);
+ int o2_getElapsedSecs(EMCState *script);
+ int o2_getTimerDelay(EMCState *script);
+ int o2_delaySecs(EMCState *script);
+ int o2_setTimerDelay(EMCState *script);
+ int o2_setScaleTableItem(EMCState *script);
+ int o2_setDrawLayerTableItem(EMCState *script);
+ int o2_setCharPalEntry(EMCState *script);
+ int o2_loadZShapes(EMCState *script);
+ int o2_drawSceneShape(EMCState *script);
+ int o2_drawSceneShapeOnPage(EMCState *script);
+ int o2_disableAnimObject(EMCState *script);
+ int o2_enableAnimObject(EMCState *script);
+ int o2_loadPalette384(EMCState *script);
+ int o2_setPalette384(EMCState *script);
+ int o2_restoreBackBuffer(EMCState *script);
+ int o2_backUpInventoryGfx(EMCState *script);
+ int o2_disableSceneAnim(EMCState *script);
+ int o2_enableSceneAnim(EMCState *script);
+ int o2_restoreInventoryGfx(EMCState *script);
+ int o2_setSceneAnimPos2(EMCState *script);
+ int o2_fadeScenePal(EMCState *script);
+ int o2_enterNewScene(EMCState *script);
+ int o2_switchScene(EMCState *script);
+ int o2_setPathfinderFlag(EMCState *script);
+ int o2_getSceneExitToFacing(EMCState *script);
+ int o2_setLayerFlag(EMCState *script);
+ int o2_setZanthiaPos(EMCState *script);
+ int o2_loadMusicTrack(EMCState *script);
+ int o2_setSceneAnimPos(EMCState *script);
+ int o2_setCauldronState(EMCState *script);
+ int o2_showItemString(EMCState *script);
+ int o2_isAnySoundPlaying(EMCState *script);
+ int o2_setDrawNoShapeFlag(EMCState *script);
+ int o2_setRunFlag(EMCState *script);
+ int o2_showLetter(EMCState *script);
+ int o2_playFireflyScore(EMCState *script);
+ int o2_encodeShape(EMCState *script);
+ int o2_defineSceneAnim(EMCState *script);
+ int o2_updateSceneAnim(EMCState *script);
+ int o2_addToSceneAnimPosAndUpdate(EMCState *script);
+ int o2_useItemOnMainChar(EMCState *script);
+ int o2_startDialogue(EMCState *script);
+ int o2_addCauldronStateTableEntry(EMCState *script);
+ int o2_setCountDown(EMCState *script);
+ int o2_getCountDown(EMCState *script);
+ int o2_pressColorKey(EMCState *script);
+ int o2_objectChat(EMCState *script);
+ int o2_changeChapter(EMCState *script);
+ int o2_getColorCodeFlag1(EMCState *script);
+ int o2_setColorCodeFlag1(EMCState *script);
+ int o2_getColorCodeFlag2(EMCState *script);
+ int o2_setColorCodeFlag2(EMCState *script);
+ int o2_getColorCodeValue(EMCState *script);
+ int o2_setColorCodeValue(EMCState *script);
+ int o2_countItemInstances(EMCState *script);
+ int o2_removeItemFromScene(EMCState *script);
+ int o2_initObject(EMCState *script);
+ int o2_npcChat(EMCState *script);
+ int o2_deinitObject(EMCState *script);
+ int o2_playTimSequence(EMCState *script);
+ int o2_makeBookOrCauldronAppear(EMCState *script);
+ int o2_resetInputColorCode(EMCState *script);
+ int o2_mushroomEffect(EMCState *script);
+ int o2_customChat(EMCState *script);
+ int o2_customChatFinish(EMCState *script);
+ int o2_setupSceneAnimation(EMCState *script);
+ int o2_stopSceneAnimation(EMCState *script);
+ int o2_processPaletteIndex(EMCState *script);
+ int o2_updateTwoSceneAnims(EMCState *script);
+ int o2_getRainbowRoomData(EMCState *script);
+ int o2_drawSceneShapeEx(EMCState *script);
+ int o2_midiSoundFadeout(EMCState *script);
+ int o2_getSfxDriver(EMCState *script);
+ int o2_getVocSupport(EMCState *script);
+ int o2_getMusicDriver(EMCState *script);
+ int o2_zanthiaChat(EMCState *script);
+ int o2_isVoiceEnabled(EMCState *script);
+ int o2_isVoicePlaying(EMCState *script);
+ int o2_stopVoicePlaying(EMCState *script);
+ int o2_getGameLanguage(EMCState *script);
+ int o2_demoFinale(EMCState *script);
+ int o2_dummy(EMCState *script);
+
+ // animation opcodes
+ int o2a_setCharacterFrame(EMCState *script);
+
+ // script
+ void runStartScript(int script, int unk1);
+ void loadNPCScript();
+
+ bool _noScriptEnter;
+
+ EMCData _npcScriptData;
+
+ // pathfinder
+ uint8 *_unkBuf500Bytes;
+ uint8 *_unkBuf200kByte;
+ bool _chatAltFlag;
+
+ // sequence player
+/* ActiveWSA *_activeWSA;
+ ActiveText *_activeText;
+ */
+ /*const char *const *_sequencePakList;
+ int _sequencePakListSize;*/
+ const char *const *_ingamePakList;
+ int _ingamePakListSize;
+
+ const char *const *_musicFileListIntro;
+ int _musicFileListIntroSize;
+ const char *const *_musicFileListFinale;
+ int _musicFileListFinaleSize;
+ const char *const *_musicFileListIngame;
+ int _musicFileListIngameSize;
+ const uint8 *_cdaTrackTableIntro;
+ int _cdaTrackTableIntroSize;
+ const uint8 *_cdaTrackTableIngame;
+ int _cdaTrackTableIngameSize;
+ const uint8 *_cdaTrackTableFinale;
+ int _cdaTrackTableFinaleSize;
+ const char *const *_ingameSoundList;
+ int _ingameSoundListSize;
+ const uint16 *_ingameSoundIndex;
+ int _ingameSoundIndexSize;
+ const uint16 *_ingameTalkObjIndex;
+ int _ingameTalkObjIndexSize;
+ const char *const *_ingameTimJpStr;
+ int _ingameTimJpStrSize;
+
+ const ItemAnimDefinition *_itemAnimDefinition;
+ int _itemAnimDefinitionSize;
+
+ /*const HofSeqData *_sequences;
+
+ const ItemAnimData_v1 *_demoAnimData;
+ int _demoAnimSize;
+
+ int _sequenceStringsDuration[33];*/
+
+/* static const uint8 _seqTextColorPresets[];
+ char *_seqProcessedString;
+ WSAMovie_v2 *_seqWsa;
+
+ bool _abortIntroFlag;
+ int _menuChoice;*/
+
+ /*uint32 _seqFrameDelay;
+ uint32 _seqStartTime;
+ uint32 _seqSubFrameStartTime;
+ uint32 _seqEndTime;
+ uint32 _seqSubFrameEndTimeInternal;
+ uint32 _seqWsaChatTimeout;
+ uint32 _seqWsaChatFrameTimeout;
+
+ int _seqFrameCounter;
+ int _seqScrollTextCounter;
+ int _seqWsaCurrentFrame;
+ bool _seqSpecialFlag;
+ bool _seqSubframePlaying;
+ uint8 _seqTextColor[2];
+ uint8 _seqTextColorMap[16];*/
+
+ static const uint8 _rainbowRoomData[];
+
+ // color code related vars
+ int _colorCodeFlag1;
+ int _colorCodeFlag2;
+ uint8 _presetColorCode[7];
+ uint8 _inputColorCode[7];
+ uint32 _scriptCountDown;
+ int _dbgPass;
+
+ // save/load specific
+ Common::Error saveGameStateIntern(int slot, const char *saveName, const Graphics::Surface *thumbnail);
+ Common::Error loadGameState(int slot);
+};
+
+} // End of namespace Kyra
+
+#endif