1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20  *
21  */
22 
23 #ifndef KYRA_KYRA_HOF_H
24 #define KYRA_KYRA_HOF_H
25 
26 #include "kyra/engine/kyra_v2.h"
27 #include "kyra/script/script.h"
28 #include "kyra/script/script_tim.h"
29 #include "kyra/graphics/screen_hof.h"
30 #include "kyra/text/text_hof.h"
31 #include "kyra/gui/gui_hof.h"
32 
33 #include "common/list.h"
34 #include "common/func.h"
35 
36 namespace Kyra {
37 
38 //class WSAMovie_v2;
39 //class KyraEngine_HoF;
40 class TextDisplayer_HoF;
41 class SeqPlayer_HOF;
42 
43 struct TIM;
44 
45 class KyraEngine_HoF : public KyraEngine_v2 {
46 friend class Debugger_HoF;
47 friend class TextDisplayer_HoF;
48 friend class GUI_HoF;
49 public:
50 	KyraEngine_HoF(OSystem *system, const GameFlags &flags);
51 	~KyraEngine_HoF();
52 
53 	void pauseEngineIntern(bool pause);
54 
screen()55 	Screen *screen() { return _screen; }
screen_v2()56 	Screen_v2 *screen_v2() const { return _screen; }
gui()57 	GUI *gui() const { return _gui; }
text()58 	virtual TextDisplayer *text() { return _text; }
language()59 	int language() const { return _lang; }
60 
61 protected:
62 	static const EngineDesc _hofEngineDesc;
63 
64 	// intro/outro
65 	void seq_showStarcraftLogo();
66 
67 	int seq_playIntro();
68 	int seq_playOutro();
69 	int seq_playDemo();
70 
71 	void seq_pausePlayer(bool toggle);
72 
73 	Common::Error init();
74 	Common::Error go();
75 
76 	Screen_HoF *_screen;
77 	TextDisplayer_HoF *_text;
78 	TIMInterpreter *_tim;
79 
80 	static const int8 _dosTrackMap[];
81 	static const int _dosTrackMapSize;
82 	static const int8 _mt32SfxMap[];
83 	static const int _mt32SfxMapSize;
84 	static const int8 _gmSfxMap[];
85 	static const int _gmSfxMapSize;
86 	static const int8 _pcSpkSfxMap[];
87 	static const int _pcSpkSfxMapSize;
88 
89 protected:
90 	// game initialization
91 	void startup();
92 	void runLoop();
93 	void cleanup();
94 
95 	void registerDefaultSettings();
96 	void writeSettings();
97 	void readSettings();
98 	uint8 _configTextspeed;
99 
100 	// TODO: get rid of all variables having pointers to the static resources if possible
101 	// i.e. let them directly use the _staticres functions
102 	void initStaticResource();
103 
104 	void setupTimers();
105 	void setupOpcodeTable();
106 
107 	void loadMouseShapes();
108 	void loadItemShapes();
109 
110 	// run
111 	void update();
112 	void updateWithText();
113 
114 	Common::Functor0Mem<void, KyraEngine_HoF> _updateFunctor;
115 
116 	void updateMouse();
117 
118 	void dinoRide();
119 
120 	void handleInput(int x, int y);
121 	bool handleInputUnkSub(int x, int y);
122 
123 	int inputSceneChange(int x, int y, int unk1, int unk2);
124 
125 	// special case
126 	void processKeyboardSfx(int inputFlag);
127 
128 	static const int16 _keyboardSounds[190];
129 
130 	// gfx/animation specific
131 	bool _inventorySaved;
132 	void backUpPage0();
133 	void restorePage0();
134 
135 	uint8 *_gfxBackUpRect;
136 
137 	void backUpGfxRect24x24(int x, int y);
138 	void restoreGfxRect24x24(int x, int y);
139 	void backUpGfxRect32x32(int x, int y);
140 	void restoreGfxRect32x32(int x, int y);
141 
142 	uint8 *_sceneShapeTable[50];
143 
144 	WSAMovie_v2 *_wsaSlots[10];
145 
146 	void freeSceneShapePtrs();
147 
148 	struct ShapeDesc {
149 		uint8 unk0, unk1, unk2, unk3, unk4;
150 		uint16 width, height;
151 		int16 xAdd, yAdd;
152 	};
153 
154 	ShapeDesc *_shapeDescTable;
155 
156 	void loadCharacterShapes(int shapes);
157 	void loadInventoryShapes();
158 
159 	void resetScaleTable();
160 	void setScaleTableItem(int item, int data);
161 	int getScale(int x, int y);
162 	uint16 _scaleTable[15];
163 
164 	void setDrawLayerTableEntry(int entry, int data);
165 	int getDrawLayer(int x, int y);
166 	int _drawLayerTable[15];
167 
168 	int _layerFlagTable[16]; // seems to indicate layers where items get destroyed when dropped to (TODO: check this!)
169 
170 	int initAnimationShapes(uint8 *filedata);
171 	void uninitAnimationShapes(int count, uint8 *filedata);
172 
173 	// animator
174 	uint8 *_gamePlayBuffer;
175 	void restorePage3();
176 
177 	void clearAnimObjects();
178 
179 	void refreshAnimObjects(int force);
180 
181 	void drawAnimObjects();
182 	void drawSceneAnimObject(AnimObj *obj, int x, int y, int drawLayer);
183 	void drawCharacterAnimObject(AnimObj *obj, int x, int y, int drawLayer);
184 
185 	void updateItemAnimations();
186 
187 	void updateCharFacing();
188 	void updateCharacterAnim(int);
189 	void updateSceneAnim(int anim, int newFrame);
190 
191 	int _animObj0Width, _animObj0Height;
192 	void setCharacterAnimDim(int w, int h);
193 	void resetCharacterAnimDim();
194 
195 	// scene
196 	const char *_sceneCommentString;
197 	uint8 _scenePal[688];
198 
199 	void enterNewScene(uint16 newScene, int facing, int unk1, int unk2, int unk3);
200 	void enterNewSceneUnk1(int facing, int unk1, int unk2);
201 	void enterNewSceneUnk2(int unk1);
202 	void unloadScene();
203 
204 	void loadScenePal();
205 	void loadSceneMsc();
206 
207 	void fadeScenePal(int srcIndex, int delay);
208 
209 	void startSceneScript(int unk1);
210 	void runSceneScript2();
211 	void runSceneScript4(int unk1);
212 	void runSceneScript7();
213 
214 	void initSceneAnims(int unk1);
215 	void initSceneScreen(int unk1);
216 
217 	int trySceneChange(int *moveTable, int unk1, int updateChar);
218 	int checkSceneChange();
219 
220 	// pathfinder
221 	bool lineIsPassable(int x, int y);
222 
223 	// item
224 	void setMouseCursor(Item item);
225 
226 	uint8 _itemHtDat[176];
227 
228 	int checkItemCollision(int x, int y);
229 	void updateWaterFlasks();
230 
231 	bool dropItem(int unk1, Item item, int x, int y, int unk2);
232 	bool processItemDrop(uint16 sceneId, Item item, int x, int y, int unk1, int unk2);
233 	void itemDropDown(int startX, int startY, int dstX, int dstY, int itemSlot, Item item);
234 	void exchangeMouseItem(int itemPos);
235 	bool pickUpItem(int x, int y);
236 
237 	bool isDropable(int x, int y);
238 
239 	static const byte _itemStringMap[];
240 	static const int _itemStringMapSize;
241 
242 	static const Item _flaskTable[];
243 	bool itemIsFlask(Item item);
244 
245 	// inventory
246 	static const int _inventoryX[];
247 	static const int _inventoryY[];
248 	static const uint16 _itemMagicTable[];
249 
250 	int getInventoryItemSlot(Item item);
251 	void removeSlotFromInventory(int slot);
252 	bool checkInventoryItemExchange(Item item, int slot);
253 	void drawInventoryShape(int page, Item item, int slot);
254 	void clearInventorySlot(int slot, int page);
255 	void redrawInventory(int page);
256 	void scrollInventoryWheel();
257 	int findFreeVisibleInventorySlot();
258 
259 	ActiveItemAnim _activeItemAnim[15];
260 	int _nextAnimItem;
261 
262 	// gui
263 	bool _menuDirectlyToLoad;
264 	GUI_HoF *_gui;
265 
266 	void loadButtonShapes();
267 	void setupLangButtonShapes();
268 	uint8 *_buttonShapes[19];
269 
270 	void initInventoryButtonList();
271 	Button *_inventoryButtons;
272 	Button *_buttonList;
273 
274 	int scrollInventory(Button *button);
275 	int buttonInventory(Button *button);
276 	int bookButton(Button *button);
277 	int cauldronButton(Button *button);
278 	int cauldronClearButton(Button *button);
279 
280 	// book
281 	static const int _bookPageYOffset[];
282 	static const byte _bookTextColorMap[];
283 
284 	int _bookMaxPage;
285 	int _bookNewPage;
286 	int _bookCurPage;
287 	int _bookBkgd;
288 	bool _bookShown;
289 
290 	void loadBookBkgd();
291 	void showBookPage();
292 	void bookLoop();
293 
294 	void bookDecodeText(uint8 *text);
295 	void bookPrintText(int dstPage, const uint8 *text, int x, int y, uint8 color);
296 
297 	int bookPrevPage(Button *button);
298 	int bookNextPage(Button *button);
299 	int bookClose(Button *button);
300 
301 	// cauldron
302 	uint8 _cauldronState;
303 	int16 _cauldronUseCount;
304 	int16 _cauldronTable[25];
305 	int16 _cauldronStateTables[23][7];
306 
307 	static const int16 _cauldronProtectedItems[];
308 	static const int16 _cauldronBowlTable[];
309 	static const int16 _cauldronMagicTable[];
310 	static const int16 _cauldronMagicTableScene77[];
311 	static const uint8 _cauldronStateTable[];
312 
313 	void resetCauldronStateTable(int idx);
314 	bool addToCauldronStateTable(int data, int idx);
315 
316 	void setCauldronState(uint8 state, bool paletteFade);
317 	void clearCauldronTable();
318 	void addFrontCauldronTable(int item);
319 	void cauldronItemAnim(int item);
320 	void cauldronRndPaletteFade();
321 	bool updateCauldron();
322 	void listItemsInCauldron();
323 
324 	// localization
325 	void loadCCodeBuffer(const char *file);
326 	void loadOptionsBuffer(const char *file);
327 	void loadChapterBuffer(int chapter);
328 	uint8 *_optionsBuffer;
329 	uint8 *_cCodeBuffer;
330 
331 	uint8 *_chapterBuffer;
332 	int _currentChapter;
333 	int _newChapterFile;
334 
335 	uint8 *getTableEntry(uint8 *buffer, int id);
336 	char *getTableString(int id, uint8 *buffer, int decode);
337 	const char *getChapterString(int id);
338 
339 	void changeFileExtension(char *buffer);
340 
341 	// - Just used in French version
342 	int getItemCommandStringDrop(Item item);
343 	int getItemCommandStringPickUp(Item item);
344 	int getItemCommandStringInv(Item item);
345 	// -
346 
347 	char _internStringBuf[200];
348 	static const char *const _languageExtension[];
349 	static const char *const _scriptLangExt[];
350 
351 	// character
352 	bool _useCharPal;
353 	bool _setCharPalFinal;
354 	int _charPalEntry;
355 	uint8 _charPalTable[16];
356 	void updateCharPal(int unk1);
357 	void setCharPalEntry(int entry, int value);
358 
359 	int _characterFacingCountTable[2];
360 
361 	int getCharacterWalkspeed() const;
362 	void updateCharAnimFrame(int *table);
363 
364 	bool checkCharCollision(int x, int y);
365 
366 	static const uint8 _characterFrameTable[];
367 
368 	// text
369 	void showMessageFromCCode(int id, int16 palIndex, int);
370 	void showMessage(const char *string, int16 palIndex);
371 	void showChapterMessage(int id, int16 palIndex);
372 
373 	void updateCommandLineEx(int str1, int str2, int16 palIndex);
374 
375 	const char *_shownMessage;
376 
377 	byte _messagePal[3];
378 	bool _fadeMessagePalette;
379 	void fadeMessagePalette();
380 
381 	// chat
382 	bool _chatIsNote;
383 
384 	int chatGetType(const char *text);
385 	int chatCalcDuration(const char *text);
386 
387 	void objectChat(const char *text, int object, int vocHigh = -1, int vocLow = -1);
388 	void objectChatInit(const char *text, int object, int vocHigh = -1, int vocLow = -1);
389 	void objectChatPrintText(const char *text, int object);
390 	void objectChatProcess(const char *script);
391 	void objectChatWaitToFinish();
392 
393 	void startDialogue(int dlgIndex);
394 
395 	void zanthSceneStartupChat();
396 	void randomSceneChat();
397 	void updateDlgBuffer();
398 	void loadDlgHeader(int &csEntry, int &vocH, int &scIndex1, int &scIndex2);
399 	void processDialogue(int dlgOffset, int vocH = 0, int csEntry = 0);
400 	void npcChatSequence(const char *str, int objectId, int vocHigh = -1, int vocLow = -1);
401 	void setDlgIndex(int dlgIndex);
402 
403 	int _npcTalkChpIndex;
404 	int _npcTalkDlgIndex;
405 	uint8 _newSceneDlgState[32];
406 	int8 **_conversationState;
407 	uint8 *_dlgBuffer;
408 
409 	// Talk object handling
410 	void initTalkObject(int index);
411 	void deinitTalkObject(int index);
412 
413 	struct TalkObject {
414 		char filename[13];
415 		int8 scriptId;
416 		int16 x, y;
417 		int8 color;
418 	};
419 	TalkObject *_talkObjectList;
420 
421 	struct TalkSections {
422 		TIM *STATim;
423 		TIM *TLKTim;
424 		TIM *ENDTim;
425 	};
426 	TalkSections _currentTalkSections;
427 
428 	char _TLKFilename[13];
429 
430 	// tim
431 	void playTim(const char *filename);
432 
433 	int t2_initChat(const TIM *tim, const uint16 *param);
434 	int t2_updateSceneAnim(const TIM *tim, const uint16 *param);
435 	int t2_resetChat(const TIM *tim, const uint16 *param);
436 	int t2_playSoundEffect(const TIM *tim, const uint16 *param);
437 
438 	Common::Array<const TIMOpcode *> _timOpcodes;
439 
440 	// sound
441 	int _oldTalkFile;
442 	int _currentTalkFile;
443 	void openTalkFile(int newFile);
444 	int _lastSfxTrack;
445 
446 	virtual void snd_playVoiceFile(int id);
447 	void snd_loadSoundFile(int id);
448 
449 	void playVoice(int high, int low);
450 	void snd_playSoundEffect(int track, int volume=0xFF);
451 
452 	// timer
453 	void timerFadeOutMessage(int);
454 	void timerCauldronAnimation(int);
455 	void timerFunc4(int);
456 	void timerFunc5(int);
457 	void timerBurnZanthia(int);
458 
459 	void setTimer1DelaySecs(int secs);
460 
461 	uint32 _nextIdleAnim;
462 	int _lastIdleScript;
463 	bool _useSceneIdleAnim;
464 
465 	void setNextIdleAnimTimer();
466 	void showIdleAnim();
467 	void runIdleScript(int script);
468 
469 	void setWalkspeed(uint8 speed);
470 
471 	// ingame static sequence handling
472 	void seq_makeBookOrCauldronAppear(int type);
473 	void seq_makeBookAppear();
474 
475 	struct InventoryWsa {
476 		int x, y, x2, y2, w, h;
477 		int page;
478 		int curFrame, lastFrame, specialFrame;
479 		int sfx;
480 		int delay;
481 		bool running;
482 		uint32 timer;
483 		WSAMovie_v2 *wsa;
484 	} _invWsa;
485 
486 	// TODO: move inside KyraEngine_HoF::InventoryWsa?
487 	void loadInvWsa(const char *filename, int run, int delay, int page, int sfx, int sFrame, int flags);
488 	void closeInvWsa();
489 
490 	void updateInvWsa();
491 	void displayInvWsaLastFrame();
492 
493 	// opcodes
494 	int o2_setCharacterFacingRefresh(EMCState *script);
495 	int o2_setCharacterPos(EMCState *script);
496 	int o2_defineObject(EMCState *script);
497 	int o2_refreshCharacter(EMCState *script);
498 	int o2_setSceneComment(EMCState *script);
499 	int o2_setCharacterAnimFrame(EMCState *script);
500 	int o2_setCharacterFacing(EMCState *script);
501 	int o2_customCharacterChat(EMCState *script);
502 	int o2_soundFadeOut(EMCState *script);
503 	int o2_showChapterMessage(EMCState *script);
504 	int o2_restoreTalkTextMessageBkgd(EMCState *script);
505 	int o2_wsaClose(EMCState *script);
506 	int o2_meanWhileScene(EMCState *script);
507 	int o2_backUpScreen(EMCState *script);
508 	int o2_restoreScreen(EMCState *script);
509 	int o2_displayWsaFrame(EMCState *script);
510 	int o2_displayWsaSequentialFramesLooping(EMCState *script);
511 	int o2_wsaOpen(EMCState *script);
512 	int o2_displayWsaSequentialFrames(EMCState *script);
513 	int o2_displayWsaSequence(EMCState *script);
514 	int o2_addItemToInventory(EMCState *script);
515 	int o2_drawShape(EMCState *script);
516 	int o2_addItemToCurScene(EMCState *script);
517 	int o2_loadSoundFile(EMCState *script);
518 	int o2_removeSlotFromInventory(EMCState *script);
519 	int o2_removeItemFromInventory(EMCState *script);
520 	int o2_countItemInInventory(EMCState *script);
521 	int o2_countItemsInScene(EMCState *script);
522 	int o2_wipeDownMouseItem(EMCState *script);
523 	int o2_getElapsedSecs(EMCState *script);
524 	int o2_getTimerDelay(EMCState *script);
525 	int o2_delaySecs(EMCState *script);
526 	int o2_setTimerDelay(EMCState *script);
527 	int o2_setScaleTableItem(EMCState *script);
528 	int o2_setDrawLayerTableItem(EMCState *script);
529 	int o2_setCharPalEntry(EMCState *script);
530 	int o2_loadZShapes(EMCState *script);
531 	int o2_drawSceneShape(EMCState *script);
532 	int o2_drawSceneShapeOnPage(EMCState *script);
533 	int o2_disableAnimObject(EMCState *script);
534 	int o2_enableAnimObject(EMCState *script);
535 	int o2_loadPalette384(EMCState *script);
536 	int o2_setPalette384(EMCState *script);
537 	int o2_restoreBackBuffer(EMCState *script);
538 	int o2_backUpInventoryGfx(EMCState *script);
539 	int o2_disableSceneAnim(EMCState *script);
540 	int o2_enableSceneAnim(EMCState *script);
541 	int o2_restoreInventoryGfx(EMCState *script);
542 	int o2_setSceneAnimPos2(EMCState *script);
543 	int o2_fadeScenePal(EMCState *script);
544 	int o2_enterNewScene(EMCState *script);
545 	int o2_switchScene(EMCState *script);
546 	int o2_setPathfinderFlag(EMCState *script);
547 	int o2_getSceneExitToFacing(EMCState *script);
548 	int o2_setLayerFlag(EMCState *script);
549 	int o2_setZanthiaPos(EMCState *script);
550 	int o2_loadMusicTrack(EMCState *script);
551 	int o2_setSceneAnimPos(EMCState *script);
552 	int o2_setCauldronState(EMCState *script);
553 	int o2_showItemString(EMCState *script);
554 	int o2_isAnySoundPlaying(EMCState *script);
555 	int o2_setDrawNoShapeFlag(EMCState *script);
556 	int o2_setRunFlag(EMCState *script);
557 	int o2_showLetter(EMCState *script);
558 	int o2_playFireflyScore(EMCState *script);
559 	int o2_encodeShape(EMCState *script);
560 	int o2_defineSceneAnim(EMCState *script);
561 	int o2_updateSceneAnim(EMCState *script);
562 	int o2_addToSceneAnimPosAndUpdate(EMCState *script);
563 	int o2_useItemOnMainChar(EMCState *script);
564 	int o2_startDialogue(EMCState *script);
565 	int o2_addCauldronStateTableEntry(EMCState *script);
566 	int o2_setCountDown(EMCState *script);
567 	int o2_getCountDown(EMCState *script);
568 	int o2_pressColorKey(EMCState *script);
569 	int o2_objectChat(EMCState *script);
570 	int o2_changeChapter(EMCState *script);
571 	int o2_getColorCodeFlag1(EMCState *script);
572 	int o2_setColorCodeFlag1(EMCState *script);
573 	int o2_getColorCodeFlag2(EMCState *script);
574 	int o2_setColorCodeFlag2(EMCState *script);
575 	int o2_getColorCodeValue(EMCState *script);
576 	int o2_setColorCodeValue(EMCState *script);
577 	int o2_countItemInstances(EMCState *script);
578 	int o2_removeItemFromScene(EMCState *script);
579 	int o2_initObject(EMCState *script);
580 	int o2_npcChat(EMCState *script);
581 	int o2_deinitObject(EMCState *script);
582 	int o2_playTimSequence(EMCState *script);
583 	int o2_makeBookOrCauldronAppear(EMCState *script);
584 	int o2_resetInputColorCode(EMCState *script);
585 	int o2_mushroomEffect(EMCState *script);
586 	int o2_customChat(EMCState *script);
587 	int o2_customChatFinish(EMCState *script);
588 	int o2_setupSceneAnimation(EMCState *script);
589 	int o2_stopSceneAnimation(EMCState *script);
590 	int o2_processPaletteIndex(EMCState *script);
591 	int o2_updateTwoSceneAnims(EMCState *script);
592 	int o2_getRainbowRoomData(EMCState *script);
593 	int o2_drawSceneShapeEx(EMCState *script);
594 	int o2_midiSoundFadeout(EMCState *script);
595 	int o2_getSfxDriver(EMCState *script);
596 	int o2_getVocSupport(EMCState *script);
597 	int o2_getMusicDriver(EMCState *script);
598 	int o2_zanthiaChat(EMCState *script);
599 	int o2_isVoiceEnabled(EMCState *script);
600 	int o2_isVoicePlaying(EMCState *script);
601 	int o2_stopVoicePlaying(EMCState *script);
602 	int o2_getGameLanguage(EMCState *script);
603 	int o2_demoFinale(EMCState *script);
604 	int o2_dummy(EMCState *script);
605 
606 	// animation opcodes
607 	int o2a_setCharacterFrame(EMCState *script);
608 
609 	// script
610 	void runStartScript(int script, int unk1);
611 	void loadNPCScript();
612 
613 	bool _noScriptEnter;
614 
615 	EMCData _npcScriptData;
616 
617 	// pathfinder
618 	uint8 *_unkBuf500Bytes;
619 	uint8 *_unkBuf200kByte;
620 	bool _chatAltFlag;
621 
622 	// sequence player
623 /*	ActiveWSA *_activeWSA;
624 	ActiveText *_activeText;
625 	*/
626 	/*const char *const *_sequencePakList;
627 	int _sequencePakListSize;*/
628 	const char *const *_ingamePakList;
629 	int _ingamePakListSize;
630 
631 	const char *const *_musicFileListIntro;
632 	int _musicFileListIntroSize;
633 	const char *const *_musicFileListFinale;
634 	int _musicFileListFinaleSize;
635 	const char *const *_musicFileListIngame;
636 	int _musicFileListIngameSize;
637 	const uint8 *_cdaTrackTableIntro;
638 	int _cdaTrackTableIntroSize;
639 	const uint8 *_cdaTrackTableIngame;
640 	int _cdaTrackTableIngameSize;
641 	const uint8 *_cdaTrackTableFinale;
642 	int _cdaTrackTableFinaleSize;
643 	const char *const *_ingameSoundList;
644 	int _ingameSoundListSize;
645 	const int16 *_ingameSoundIndex;
646 	int _ingameSoundIndexSize;
647 	const uint16 *_ingameTalkObjIndex;
648 	int _ingameTalkObjIndexSize;
649 	const char *const *_ingameTimJpStr;
650 	int _ingameTimJpStrSize;
651 
652 	const ItemAnimDefinition *_itemAnimDefinition;
653 	int _itemAnimDefinitionSize;
654 
655 	/*const HofSeqData *_sequences;
656 
657 	const ItemAnimData_v1 *_demoAnimData;
658 	int _demoAnimSize;
659 
660 	int _sequenceStringsDuration[33];*/
661 
662 /*	static const uint8 _seqTextColorPresets[];
663 	char *_seqProcessedString;
664 	WSAMovie_v2 *_seqWsa;
665 
666 	bool _abortIntroFlag;
667 	int _menuChoice;*/
668 
669 	/*uint32 _seqFrameDelay;
670 	uint32 _seqStartTime;
671 	uint32 _seqSubFrameStartTime;
672 	uint32 _seqEndTime;
673 	uint32 _seqSubFrameEndTimeInternal;
674 	uint32 _seqWsaChatTimeout;
675 	uint32 _seqWsaChatFrameTimeout;
676 
677 	int _seqFrameCounter;
678 	int _seqScrollTextCounter;
679 	int _seqWsaCurrentFrame;
680 	bool _seqSpecialFlag;
681 	bool _seqSubframePlaying;
682 	uint8 _seqTextColor[2];
683 	uint8 _seqTextColorMap[16];*/
684 
685 	static const uint8 _rainbowRoomData[];
686 
687 	// color code related vars
688 	int _colorCodeFlag1;
689 	int _colorCodeFlag2;
690 	uint8 _presetColorCode[7];
691 	uint8 _inputColorCode[7];
692 	uint32 _scriptCountDown;
693 	int _dbgPass;
694 
695 	// save/load specific
696 	Common::Error saveGameStateIntern(int slot, const char *saveName, const Graphics::Surface *thumbnail);
697 	Common::Error loadGameState(int slot);
698 };
699 
700 } // End of namespace Kyra
701 
702 #endif
703