scummvm/engines/tucker/tucker.h
Gregory Montoir b7c9958e82 enabled RTL
fixed bad glyphs display for non french version
got rid of Graphics::drawChar2

svn-id: r35006
2008-11-11 13:10:34 +00:00

807 lines
23 KiB
C++

/* 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.
*
* $URL$
* $Id$
*
*/
#ifndef TUCKER_ENGINE_H__
#define TUCKER_ENGINE_H__
#include "common/file.h"
#include "common/util.h"
#include "common/endian.h"
#include "common/events.h"
#include "common/stream.h"
#include "sound/mixer.h"
#include "engines/engine.h"
namespace Tucker {
struct Action {
int key;
int testFlag1Num;
int testFlag1Value;
int testFlag2Num;
int testFlag2Value;
int speech;
int flipX;
int index;
int delay;
int setFlagNum;
int setFlagValue;
int fxNum;
int fxDelay;
};
struct Sprite {
int state;
int gfxBackgroundOffset;
int updateDelay;
int backgroundOffset;
int needUpdate;
int stateIndex;
int counter;
int disabled;
int colorType;
int animationFrame;
int firstFrame;
uint8 *animationData;
int prevState;
int nextAnimationFrame;
int prevAnimationFrame;
int defaultUpdateDelay;
int xSource;
int yMaxBackground;
int flipX;
};
struct CharPos {
int xPos;
int yPos;
int xSize;
int ySize;
int xWalkTo;
int yWalkTo;
int flagNum;
int flagValue;
int direction;
int name;
int description;
};
struct SpriteFrame {
int sourceOffset;
int xOffset;
int yOffset;
int xSize;
int ySize;
};
struct SpriteAnimation {
int numParts;
int rotateFlag;
int firstFrameIndex;
};
struct Data {
int sourceOffset;
int xSize;
int ySize;
int xDest;
int yDest;
int index;
};
struct LocationAnimation {
int graphicNum;
int animInitCounter;
int animCurrentCounter;
int animLastCounter;
int getFlag;
int inventoryNum;
int flagNum;
int flagValue;
int selectable;
int standX;
int standY;
int drawFlag;
};
struct LocationObject {
int xPos;
int yPos;
int xSize;
int ySize;
int textNum;
int locationNum;
int toX;
int toY;
int toX2;
int toY2;
int toWalkX2;
int toWalkY2;
int standX;
int standY;
int cursorNum;
};
struct LocationSound {
int startFxSpriteState;
int startFxSpriteNum;
int updateType;
int stopFxSpriteState;
int stopFxSpriteNum;
int offset;
int type;
int volume;
int flagValueStartFx;
int flagValueStopFx;
int flagNum;
int num;
};
struct LocationMusic {
int flag;
int offset;
int volume;
int num;
};
enum {
kFadePaletteStep = 5,
kStartupLocation = 1,
kDefaultCharSpeechSoundCounter = 1,
kMaxSoundVolume = 127
};
enum Verb {
kVerbWalk = 0,
kVerbLook = 1,
kVerbTalk = 2,
kVerbOpen = 3,
kVerbClose = 4,
kVerbGive = 5,
kVerbTake = 6,
kVerbMove = 7,
kVerbUse = 8
};
class TuckerEngine: public Engine {
public:
enum {
kLocationAnimationsTableSize = 20,
kLocationObjectsTableSize = 10,
kActionsTableSize = 100,
kFlagsTableSize = 800,
kLocationSoundsTableSize = 30,
kLocationMusicsTableSize = 4,
kSpriteFramesTableSize = 200,
kSprA02TableSize = 20,
kSprC02TableSize = 40,
kDataTableSize = 500,
kSpeechHistoryTableSize = 5,
kMaxCharacters = 8
};
TuckerEngine(OSystem *system, Common::Language language);
~TuckerEngine();
virtual Common::Error init();
virtual Common::Error go();
virtual bool hasFeature(EngineFeature f) const;
virtual void syncSoundSettings();
protected:
int getRandomNumber();
void allocateBuffers();
void freeBuffers();
void restart();
void mainLoop();
void updateTimer();
void waitForTimer(int ticksCount);
void parseEvents();
void updateCursorPos(int x, int y);
void setCursorNum(int num);
void setCursorType(int type);
void setupNewLocation();
void copyLocBitmap(int offset, int isMask);
void updateMouseState();
void updateCharPositionHelper();
void updateCharPosition();
void updateFlagsForCharPosition();
void backupPalette();
void restorePalette();
void fadeOutPalette(int colorsCount = 256);
void fadeInPalette(int colorsCount = 256);
void fadePaletteColor(int color, int step);
void setBlackPalette();
void setPaletteColor(int color, int r, int g, int b);
void updateCursor();
int getLastKeyCode();
void stopSounds();
void playSounds();
void updateCharactersPath();
void setSoundVolumeDistance();
void updateData3DrawFlag();
void updateData3();
void updateSfxData3_1();
void updateSfxData3_2();
void saveOrLoad();
void handleMouseOnPanel();
void switchPanelType();
void redrawPanelOverBackground();
void drawConversationTexts();
void updateScreenScrolling();
void updateGameHints();
void startCharacterSounds();
void updateSoundsTypes3_4();
void drawData3();
void execData3PreUpdate();
void drawBackgroundSprites(int flipX);
void drawCurrentSprite();
void setVolumeSound(int index, int volume);
void setVolumeMusic(int index, int volume);
void startSound(int offset, int index, int volume);
void stopSound(int index);
bool isSoundPlaying(int index);
void startMusic(int offset, int index, int volume);
void stopMusic(int index);
void startSpeechSound(int num, int volume);
bool isSpeechSoundPlaying();
void isSoundFinished();
void redrawPanelItems();
void redrawPanelItemsHelper();
void drawSprite(int i);
void clearItemsGfx();
void drawPausedInfoBar();
const uint8 *getStringBuf(int type) const;
void drawInfoString();
void drawGameHintString();
void updateCharacterAnimation();
void execData3PostUpdate();
void addObjectToInventory(int num);
void removeObjectFromInventory(int num);
void handleMap();
void updateSprites();
void updateSprite(int i);
void drawStringInteger(int num, int x, int y, int digits);
void drawStringAlt(uint8 *dst, int color, const uint8 *str, int strLen = -1);
void drawString(uint8 *dst, int num, const uint8 *str);
void drawString2(int x, int y, int num);
void updateCharSpeechSound();
void updateItemsGfxColors(int bit0, int bit7);
int testLocationMask(int x, int y);
int getStringWidth(int num, const uint8 *ptr);
int getPositionForLine(int num, const uint8 *ptr);
void copyToVGA(const uint8 *src);
void findActionKey(int count);
int parseTableInstruction();
void moveUpInventoryObjects();
void moveDownInventoryObjects();
void setActionVerbUnderCursor();
int getObjectUnderCursor();
void setSelectedObjectKey();
void setCharacterAnimation(int count, int spr);
int testLocationMaskArea(int xBase, int yBase, int xPos, int yPos);
void handleMouseClickOnInventoryObject();
int setCharacterUnderCursor();
int setLocationAnimationUnderCursor();
void setActionForInventoryObject();
void setActionState();
void playSpeechForAction(int i);
void drawSpeechText(int xStart, int y, const uint8 *dataPtr, int num, int color);
int splitSpeechTextLines(const uint8 *dataPtr, int pos, int x, int &lineCharsCount, int &lineWidth);
void drawSpeechTextLine(const uint8 *dataPtr, int pos, int count, uint8 *dst, uint8 color);
void execData3PreUpdate_locationNum1();
void execData3PreUpdate_locationNum1Helper1();
void execData3PreUpdate_locationNum1Helper2();
int execData3PreUpdate_locationNum1Helper3(int dx, int dy);
void execData3PostUpdate_locationNum1();
void updateSprite_locationNum2();
void execData3PreUpdate_locationNum2();
void execData3PreUpdate_locationNum2Helper();
void updateSprite_locationNum3_0(int i);
void updateSprite_locationNum3_1(int i);
void updateSprite_locationNum3_2(int i);
void execData3PreUpdate_locationNum3();
void updateSprite_locationNum4(int i);
void execData3PreUpdate_locationNum4();
void updateSprite_locationNum5_0();
void updateSprite_locationNum5_1(int i);
void updateSprite_locationNum6_0(int i);
void updateSprite_locationNum6_1(int i);
void updateSprite_locationNum6_2(int i);
void execData3PreUpdate_locationNum6();
void execData3PreUpdate_locationNum6Helper1();
void execData3PreUpdate_locationNum6Helper2(uint8 *dst, const uint8 *src);
void execData3PreUpdate_locationNum6Helper3(uint8 *dst, const uint8 *src);
void updateSprite_locationNum7_0(int i);
void updateSprite_locationNum7_1(int i);
void updateSprite_locationNum8_0(int i);
void updateSprite_locationNum8_1(int i);
void execData3PostUpdate_locationNum8();
void updateSprite_locationNum9_0(int i);
void updateSprite_locationNum9_1(int i);
void updateSprite_locationNum9_2(int i);
void execData3PreUpdate_locationNum9();
void execData3PostUpdate_locationNum9();
void updateSprite_locationNum10();
void execData3PreUpdate_locationNum10();
void updateSprite_locationNum11_0(int i);
void updateSprite_locationNum11_1(int i);
void updateSprite_locationNum11_2(int i);
void updateSprite_locationNum11_3(int i);
void updateSprite_locationNum11_4(int i);
void updateSprite_locationNum12_0(int i);
void updateSprite_locationNum12_1(int i);
void execData3PreUpdate_locationNum12();
void updateSprite_locationNum13(int i);
void execData3PreUpdate_locationNum13();
void updateSprite_locationNum14(int i);
void execData3PreUpdate_locationNum14();
void execData3PreUpdate_locationNum14Helper1(int i);
void execData3PreUpdate_locationNum14Helper2(int i);
void updateSprite_locationNum15_0(int i);
void updateSprite_locationNum15_1(int i);
void updateSprite_locationNum15_2(int i);
void execData3PreUpdate_locationNum15();
void updateSprite_locationNum16_0(int i);
void updateSprite_locationNum16_1(int i);
void updateSprite_locationNum16_2(int i);
void execData3PreUpdate_locationNum16();
void updateSprite_locationNum17();
void updateSprite_locationNum18();
void updateSprite_locationNum19_0(int i);
void updateSprite_locationNum19_1(int i);
void updateSprite_locationNum19_2(int i);
void updateSprite_locationNum19_3(int i);
void execData3PreUpdate_locationNum19();
void updateSprite_locationNum21();
void execData3PreUpdate_locationNum21();
void execData3PostUpdate_locationNum21();
void updateSprite_locationNum22();
void execData3PreUpdate_locationNum22();
void updateSprite_locationNum23_0(int i);
void updateSprite_locationNum23_1(int i);
void updateSprite_locationNum23_2(int i);
void updateSprite_locationNum23_3(int i);
void updateSprite_locationNum24_0(int i);
void updateSprite_locationNum24_1(int i);
void updateSprite_locationNum24_2(int i);
void updateSprite_locationNum24_3(int i);
void execData3PreUpdate_locationNum24();
void execData3PostUpdate_locationNum24();
void execData3PreUpdate_locationNum25();
void updateSprite_locationNum26_0(int i);
void updateSprite_locationNum26_1(int i);
void execData3PreUpdate_locationNum26();
void updateSprite_locationNum27(int i);
void execData3PreUpdate_locationNum27();
void execData3PostUpdate_locationNum27();
void updateSprite_locationNum28_0(int i);
void updateSprite_locationNum28_1(int i);
void updateSprite_locationNum28_2(int i);
void execData3PreUpdate_locationNum28();
void execData3PostUpdate_locationNum28();
void updateSprite_locationNum29_0(int i);
void updateSprite_locationNum29_1(int i);
void updateSprite_locationNum29_2(int i);
void execData3PreUpdate_locationNum29();
void updateSprite_locationNum30_34(int i);
void execData3PreUpdate_locationNum30();
void updateSprite_locationNum31_0(int i);
void updateSprite_locationNum31_1(int i);
void execData3PreUpdate_locationNum31();
void execData3PreUpdate_locationNum31Helper(int r, int flag);
void updateSprite_locationNum32_0(int i);
void execData3PreUpdate_locationNum32();
void execData3PostUpdate_locationNum32();
void updateSprite_locationNum33_0(int i);
void updateSprite_locationNum33_1(int i);
void updateSprite_locationNum33_2(int i);
void execData3PreUpdate_locationNum33();
void execData3PreUpdate_locationNum34();
void execData3PreUpdate_locationNum35();
void updateSprite_locationNum36(int i);
void execData3PreUpdate_locationNum36();
void updateSprite_locationNum37(int i, int j, int offset);
void execData3PreUpdate_locationNum38();
void updateSprite_locationNum41(int i);
void execData3PreUpdate_locationNum41();
void updateSprite_locationNum42(int i);
void execData3PreUpdate_locationNum42();
void updateSprite_locationNum43_2(int i);
void updateSprite_locationNum43_3(int i);
void updateSprite_locationNum43_4(int i);
void updateSprite_locationNum43_5(int i);
void updateSprite_locationNum43_6(int i);
void execData3PreUpdate_locationNum43();
void execData3PreUpdate_locationNum44();
void updateSprite_locationNum48(int i);
void updateSprite_locationNum49(int i);
void execData3PreUpdate_locationNum49();
void updateSprite_locationNum50(int i);
void updateSprite_locationNum51_0(int i);
void updateSprite_locationNum51_1(int i);
void updateSprite_locationNum51_2(int i);
void execData3PreUpdate_locationNum52();
void updateSprite_locationNum53_0(int i);
void updateSprite_locationNum53_1(int i);
void execData3PreUpdate_locationNum53();
void updateSprite_locationNum54(int i);
void updateSprite_locationNum55(int i);
void updateSprite_locationNum56(int i);
void updateSprite_locationNum57_0(int i);
void updateSprite_locationNum57_1(int i);
void execData3PreUpdate_locationNum57();
void updateSprite_locationNum58(int i);
void execData3PreUpdate_locationNum58();
void updateSprite_locationNum59(int i);
void updateSprite_locationNum60_0(int i);
void updateSprite_locationNum60_1(int i);
void execData3PostUpdate_locationNum60();
void updateSprite_locationNum61_0(int i);
void updateSprite_locationNum61_1(int i);
void updateSprite_locationNum61_2(int i);
void execData3PreUpdate_locationNum61();
void updateSprite_locationNum63_0(int i);
void updateSprite_locationNum63_1(int i);
void updateSprite_locationNum63_2(int i);
void updateSprite_locationNum63_3(int i);
void updateSprite_locationNum63_4(int i);
void execData3PreUpdate_locationNum63();
void execData3PreUpdate_locationNum64();
void updateSprite_locationNum65(int i);
void execData3PreUpdate_locationNum65();
void updateSprite_locationNum66_0(int i);
void updateSprite_locationNum66_1(int i);
void updateSprite_locationNum66_2(int i);
void updateSprite_locationNum66_3(int i);
void updateSprite_locationNum66_4(int i);
void execData3PreUpdate_locationNum66();
void execData3PostUpdate_locationNum66();
void updateSprite_locationNum69_1(int i);
void updateSprite_locationNum69_2(int i);
void updateSprite_locationNum69_3(int i);
void execData3PreUpdate_locationNum70();
void execData3PreUpdate_locationNum70Helper();
void updateSprite_locationNum71(int i);
void updateSprite_locationNum72(int i);
void updateSprite_locationNum74(int i);
void updateSprite_locationNum79(int i);
void updateSprite_locationNum81_0(int i);
void updateSprite_locationNum81_1(int i);
void updateSprite_locationNum82(int i);
void generateGameStateFileName(int num, char *dst, int len, bool prefixOnly = false) const;
template <class S> void saveOrLoadGameStateData(S &s);
void loadGame(int slot);
void saveGame(int slot);
void handleCreditsSequence();
void handleCongratulationsSequence();
void handleNewPartSequence();
void handleMeanwhileSequence();
void handleMapSequence();
void copyMapRect(int x, int y, int w, int h);
int handleSpecialObjectSelectionSequence();
void openCompressedSoundFile();
void closeCompressedSoundFile();
uint8 *loadFile(uint8 *p = 0);
void loadImage(uint8 *dst, int a);
void loadCursor();
void loadCharset();
void loadCharset2();
void loadCharsetHelper();
void loadCharSizeDta();
void loadPanel();
void loadBudSpr(int startOffset);
void loadCTable01(int firstObjNum, int firstSpriteNum, int &lastSpriteNum);
void loadCTable02(int fl);
void loadLoc();
void loadObj();
void loadData();
int loadDataHelper(int offset, int index);
void loadPanObj();
void loadData3();
void loadData4();
void loadActionFile();
void loadCharPos();
void loadSprA02_01();
void loadSprC02_01();
void loadFx();
void loadSound(Audio::Mixer::SoundType type, int num, int volume, bool loop, Audio::SoundHandle *handle);
void loadActionsTable();
Common::RandomSource _rnd;
Common::Language _lang;
int _quitGame;
bool _fastMode;
int _syncCounter;
uint32 _lastFrameTime;
int _mainLoopCounter1;
int _mainLoopCounter2;
int _timerCounter1;
int _timerCounter2;
int _flagsTable[kFlagsTableSize];
int _partNum;
int _currentPartNum;
int _locationNum;
int _nextLocationNum;
int _gamePaused;
int _gamePaused2;
int _data4FlagDebug;
int _displayGameHints;
int _execData3Counter;
uint8 _maxSaveGameSlot, _currentSaveGameSlot;
uint8 _firstSaveGameSlot, _lastSaveGameSlot;
int _gameHintsIndex;
int _gameHintsCounter;
int _gameHintsDisplayText;
char _fileToLoad[40];
int _fileLoadSize;
bool _useEnc;
int _compressedSoundType;
Common::File _fCompressedSound;
uint8 *_loadTempBuf;
uint8 *_cursorGfxBuf;
uint8 *_charsetGfxBuf;
uint8 *_panelGfxBuf;
uint8 *_itemsGfxBuf;
uint8 *_spritesGfxBuf;
uint8 *_locationBackgroundGfxBuf;
uint8 *_data5Buf;
uint8 *_data3GfxBuf;
uint8 *_quadBackgroundGfxBuf;
uint8 *_objTxtBuf;
uint8 *_panelObjectsGfxBuf;
uint8 *_ptTextBuf;
uint8 *_infoBarBuf;
uint8 *_bgTextBuf;
uint8 *_charNameBuf;
uint8 *_locationBackgroundMaskBuf;
uint8 *_csDataBuf;
int _csDataSize;
uint8 _charWidthTable[256];
int _mousePosX, _mousePosY;
int _prevMousePosX, _prevMousePosY;
int _mouseButtonsMask;
int _mouseButtons;
int _mouseButton2;
int _mouseClick;
int _mouseClickOnPanelSliders;
int _mouseIdleCounter;
bool _leftMouseButtonPressed;
bool _rightMouseButtonPressed;
int _lastKeyPressed;
int _keyLastKeyCodePressed;
int _cursorNum;
int _cursorType;
int _updateCursorFlag;
int _panelNum;
int _panelState;
int _forceRedrawPanelItems;
int _redrawPanelItemsCounter;
int _switchPanelFlag;
int _panelObjectsOffsetTable[50];
int _switchPanelCounter;
int _conversationOptionsCount;
bool _fadedPanel;
int _panelLockedFlag;
int _panelItemWidth;
int _inventoryItemsState[50];
int _inventoryObjectsList[40];
int _inventoryObjectsOffset;
int _inventoryObjectsCount;
int _lastInventoryObjectIndex;
uint8 *_sprA02Table[kSprA02TableSize];
uint8 *_sprC02Table[kSprC02TableSize];
Action _actionsTable[kActionsTableSize];
int _actionsCount;
LocationObject _locationObjectsTable[kLocationObjectsTableSize];
int _locationObjectsCount;
Sprite _spritesTable[kMaxCharacters];
int _spritesCount;
LocationAnimation _locationAnimationsTable[kLocationAnimationsTableSize];
int _locationAnimationsCount;
Data _dataTable[kDataTableSize];
int _dataCount;
CharPos _charPosTable[kMaxCharacters];
int _charPosCount;
LocationSound _locationSoundsTable[kLocationSoundsTableSize];
int _locationSoundsCount;
LocationMusic _locationMusicsTable[kLocationMusicsTableSize];
int _locationMusicsCount;
int _currentFxSet;
int _currentFxDist;
int _currentFxScale;
int _currentFxVolume;
int _currentFxIndex;
int _speechSoundNum;
int _speechVolume;
Audio::SoundHandle _sfxHandles[6];
Audio::SoundHandle _musicHandles[2];
Audio::SoundHandle _speechHandle;
int _soundsMapTable[2];
int _speechHistoryTable[kSpeechHistoryTableSize];
int _charSpeechSoundVolumeTable[kMaxCharacters];
int _charSpeechSoundCounter;
int _miscSoundFxDelayCounter[2];
int _characterSoundFxDelayCounter;
int _characterSoundFxNum;
int _speechSoundBaseNum;
int _pendingActionIndex;
int _pendingActionDelay;
int _charPositionFlagNum;
int _charPositionFlagValue;
int _actionVerb;
int _nextAction;
int _selectedObjectNum;
int _selectedObjectType;
int _selectedCharacterNum;
int _actionObj1Type, _actionObj2Type;
int _actionObj1Num, _actionObj2Num;
bool _actionRequiresTwoObjects;
int _skipPanelObjectUnderCursor;
int _actionPosX;
int _actionPosY;
int _selectedObjectLocationMask;
struct {
int xDefaultPos;
int yDefaultPos;
int xPos;
int yPos;
int locationObject_locationNum;
int locationObject_toX;
int locationObject_toY;
int locationObject_toX2;
int locationObject_toY2;
int locationObject_toWalkX2;
int locationObject_toWalkY2;
} _selectedObject;
int _selectedCharacterDirection;
int _selectedCharacter2Num;
int _currentActionObj1Num, _currentActionObj2Num;
int _currentInfoString1SourceType, _currentInfoString2SourceType;
int _speechActionCounterTable[9];
int _actionCharacterNum;
bool _csDataLoaded;
int _csDataHandled;
int _stopActionOnSoundFlag;
int _csDataTableFlag2;
int _stopActionOnPanelLock;
int _csDataTableCount;
int _stopActionCounter;
int _actionTextColor;
int _nextTableToLoadIndex;
int _nextTableToLoadTable[6];
int _soundInstructionIndex;
const uint8 *_tableInstructionsPtr;
int _tableInstructionObj1Table[6];
int _tableInstructionObj2Table[6];
int _tableInstructionFlag;
int _tableInstructionItemNum1, _tableInstructionItemNum2;
int _instructionsActionsTable[6];
int _validInstructionId;
SpriteFrame _spriteFramesTable[kSpriteFramesTableSize];
SpriteAnimation _spriteAnimationsTable[200];
int _spriteAnimationFramesTable[500];
int _spriteAnimationFrameIndex;
int _backgroundSpriteCurrentFrame;
int _backgroundSpriteLastFrame;
int _backgroundSpriteCurrentAnimation;
bool _disableCharactersPath;
bool _skipCurrentCharacterDraw;
int _xPosCurrent;
int _yPosCurrent;
const uint8 *_characterSpeechDataPtr;
int _ptTextOffset;
int _ctable01Table_sprite[20];
int _characterAnimationsTable[200];
int _characterStateTable[200];
int _backgroundSprOffset;
int _updateCharPositionNewType;
int _updateCharPositionType;
int _mainSpritesBaseOffset;
int _currentSpriteAnimationLength;
int _currentSpriteAnimationFrame;
int _currentSpriteAnimationFrame2;
int _characterAnimationIndex;
int _characterFacingDirection;
int _characterPrevFacingDirection;
int _characterBackFrontFacing;
int _characterPrevBackFrontFacing;
int _characterAnimationNum;
int _noCharacterAnimationChange;
int _changeBackgroundSprite;
int _characterSpriteAnimationFrameCounter;
int _locationMaskIgnore;
int _locationMaskType;
int _locationMaskCounter;
int _updateSpriteFlag1;
int _updateSpriteFlag2;
int _handleMapCounter;
bool _noPositionChangeAfterMap;
int _mirroredDrawing;
uint8 *_loadLocBufPtr;
uint8 *_backgroundSpriteDataPtr;
int _locationHeight;
int _scrollOffset;
int _currentGfxBackgroundCounter;
uint8 *_currentGfxBackground;
int _fadePaletteCounter;
uint8 _currentPalette[768];
uint8 _backupPalette[768];
int _updateLocationFadePaletteCounter;
int _updateLocationCounter;
int _updateLocationPos;
int _updateLocationXPosTable[5], _updateLocationYPosTable[5];
int _updateLocationFlagsTable[5];
int _updateLocationXPosTable2[10], _updateLocationYPosTable2[10];
int _updateLocationYMaxTable[3];
int _updateLocation14Step[10];
int _updateLocation14ObjNum[10];
int _updateLocation14Delay[10];
int _updateLocationCounter2;
int _updateLocationFlag;
int _updateLocation70StringLen;
uint8 _updateLocation70String[20];
static const int _locationWidthTable[85];
static const uint8 _sprA02LookupTable[88];
static const uint8 _sprC02LookupTable[100];
static const uint8 _sprC02LookupTable2[100];
static const int _staticData3Table[1600];
static const int _instructionIdTable[20];
static int _locationHeightTable[80];
static int _objectKeysPosXTable[80];
static int _objectKeysPosYTable[80];
static int _objectKeysLocationTable[80];
static int _mapSequenceFlagsLocationTable[70];
static const uint8 _charWidthCharset1[224];
static const uint8 _charWidthCharset2[58];
};
} // namespace Tucker
#endif