ScummVM API documentation
Bolt::BoltEngine Class Reference
Inheritance diagram for Bolt::BoltEngine:
Engine

Public Member Functions

 BoltEngine (OSystem *syst, const ADGameDescription *gameDesc)
 
uint32 getFeatures () const
 
Common::String getGameId () const
 
bool hasFeature (EngineFeature f) const override
 
bool canLoadGameStateCurrently (Common::U32String *msg=nullptr) override
 
bool canSaveGameStateCurrently (Common::U32String *msg=nullptr) override
 
- Public Member Functions inherited from Engine
MetaEnginegetMetaEngine () const
 
void setMetaEngine (MetaEngine *metaEngine)
 
PauseToken pauseEngine ()
 
bool isPaused () const
 
void openMainMenuDialog ()
 
uint32 getTotalPlayTime () const
 
void setTotalPlayTime (uint32 time=0)
 
Common::TimerManagergetTimerManager ()
 
Common::EventManagergetEventManager ()
 
Common::SaveFileManagergetSaveFileManager ()
 
bool existExtractedCDAudioFiles (uint track=1)
 
bool isDataAndCDAudioReadFromSameCD ()
 
void warnMissingExtractedCDAudio ()
 
void handleAutoSave ()
 
void saveAutosaveIfEnabled ()
 
virtual bool canSaveAutosaveCurrently ()
 
virtual int getAutosaveSlot () const
 
virtual bool gameTypeHasAddOns () const
 
virtual bool dirCanBeGameAddOn (const Common::FSDirectory &dir) const
 
virtual bool dirMustBeGameAddOn (const Common::FSDirectory &dir) const
 
Common::ErrorCode updateAddOns (const MetaEngine *metaEngine) const
 
 Engine (OSystem *syst)
 
virtual ~Engine ()
 
virtual void initializePath (const Common::FSNode &gamePath)
 
virtual void errorString (const char *buf_input, char *buf_output, int buf_output_size)
 
virtual GUI::DebuggergetDebugger () final
 
void setDebugger (GUI::Debugger *debugger)
 
GUI::DebuggergetOrCreateDebugger ()
 
bool enhancementEnabled (int32 cls)
 
virtual void syncSoundSettings ()
 
virtual void applyGameSettings ()
 
virtual void flipMute ()
 
virtual Common::String getSaveStateName (int slot) const
 
virtual Common::Error loadGameState (int slot)
 
virtual Common::Error loadGameStream (Common::SeekableReadStream *stream)
 
void setGameToLoadSlot (int slot)
 
virtual Common::Error saveGameState (int slot, const Common::String &desc, bool isAutosave=false)
 
virtual Common::Error saveGameStream (Common::WriteStream *stream, bool isAutosave=false)
 
bool saveGameDialog ()
 
bool loadGameDialog ()
 

Protected Member Functions

Common::Error run () override
 
void boltMain ()
 
void setCursorPict (byte *sprite)
 
int16 displayDemoPict (int16 prevBooth)
 
void startCycle (byte *cycleResource)
 
void displayBooth (int16 page)
 
void playAVOverBooth (int16 animIndex)
 
int16 hucksBooth (int16 prevBooth)
 
int16 fredsBooth (int16 prevBooth)
 
int16 scoobysBooth (int16 prevBooth)
 
int16 yogisBooth (int16 prevBooth)
 
int16 georgesBooth (int16 prevBooth)
 
int16 topCatsBooth (int16 prevBooth)
 
int16 mainEntrance (int16 prevBooth)
 
bool loadBooth (int16 boothId)
 
void unloadBooth ()
 
int16 openBooth (int16 boothId)
 
void closeBooth ()
 
void playTour ()
 
void finishPlayingHelp (int16 activeHotspot)
 
int16 hotSpotActive (int16 hotspot)
 
void hoverHotSpot ()
 
int16 boothEventLoop ()
 
void resetInactivityState ()
 
bool handleButtonPress (int16 hotspot)
 
void blastColors (byte **paletteTable, int16 index, int16 mode)
 
void setColors (int16 index)
 
void restoreColors (int16 index)
 
void loadColors ()
 
void shiftColorMap (byte *colorMap, int16 delta)
 
void playBoothAV ()
 
void mainEntranceHelpBlink ()
 
void boothHelpBlink ()
 
void tourPaletteCycleStep ()
 
void fadeToBlack (int16 steps)
 
void flushInput ()
 
int16 winALetter (int16 prevBooth)
 
int16 endDemo (int16 prevBooth)
 
BarkerTablecreateBarker (int16 minIndex, int16 maxIndex)
 
void freeBarker (BarkerTable *table)
 
bool registerSideShow (BarkerTable *table, SideShowHandler handler, int16 boothId)
 
int16 barker (BarkerTable *table, int16 startBooth)
 
bool checkError ()
 
void displayColors (byte *palette, int16 page, int16 flags)
 
byte getPixel (byte *sprite, int16 localX, int16 localY)
 
void boltPict2Pict (XPPicDesc *dest, byte *boltSprite)
 
void displayPic (byte *boltSprite, int16 xOff, int16 yOff, int16 page)
 
bool pointInRect (Common::Rect *rect, int16 x, int16 y)
 
const char * assetPath (const char *fileName)
 
void boltCycleToXPCycle (byte *srcData, XPCycleState *cycleDesc)
 
void unpackColors (int16 count, byte *packedColors)
 
bool intersectRect (const Common::Rect *a, const Common::Rect *b, Common::Rect *out)
 
void swapPicHeader ()
 
void swapAndResolvePicDesc ()
 
void swapFirstWord ()
 
void swapFirstTwoWords ()
 
void swapFirstFourWords ()
 
void swapSpriteHeader ()
 
void freeSpriteCleanUp ()
 
bool libRead (Common::File *fileHandle, uint32 offset, byte *dest, uint32 size)
 
void decompress (byte *dest, uint32 decompSize, byte *src)
 
void resolveIt (uint32 *ref)
 
void resolvePendingFixups ()
 
void resolveFunction (uint32 *ref)
 
void resolveAllRefs ()
 
byte * getResolvedPtr (byte *data, int offset)
 
bool openBOLTLib (BOLTLib **outLib, BOLTCallbacks *outIdx, const char *fileName)
 
bool closeBOLTLib (BOLTLib **lib)
 
bool attemptFreeIndex (BOLTLib *lib, int16 groupId)
 
bool loadGroupDirectory ()
 
bool getBOLTGroup (BOLTLib *lib, int16 groupId, int16 flags)
 
void freeBOLTGroup (BOLTLib *lib, int16 groupId, int16 flags)
 
byte * getBOLTMember (BOLTLib *lib, int16 resId)
 
bool freeBOLTMember (BOLTLib *lib, int16 resId)
 
Common::Rect memberToRect (byte *data)
 
byte * memberAddr (BOLTLib *lib, int16 resId)
 
byte * memberAddrOffset (BOLTLib *lib, uint32 resIdAndOffset)
 
uint32 memberSize (BOLTLib *lib, int16 resId)
 
byte * groupAddr (BOLTLib *lib, int16 groupId)
 
bool allocResourceIndex ()
 
void freeResourceIndex ()
 
void swapAllWords ()
 
void swapAllLongs ()
 
void initCallbacks ()
 
bool initVRam (int16 poolSize)
 
void freeVRam ()
 
bool vLoad (void *dest, const char *name)
 
bool vSave (void *src, uint16 srcSize, const char *name)
 
bool vDelete (const char *name)
 
byte * dataAddress (int16 recordOffset)
 
uint16 dataSize (int16 recordOffset)
 
bool findRecord (const char *name, int16 *outOffset)
 
RTFResourceopenRTF (const char *fileName)
 
void closeRTF (RTFResource *rtf)
 
bool playRTF (RTFResource *rtfFile, int16 animIndex, byte *ringBuffer, int32 bufferSize)
 
bool fillRTFBuffer ()
 
void flushRTFSoundQueue ()
 
bool maintainRTF (int16 mode, RTFPacket **outFrameData)
 
bool isRTFPlaying ()
 
bool killRTF (uint32 *outFilePos)
 
bool readPacket ()
 
void preProcessPacket (RTFPacket *packet)
 
void queuePacket (RTFPacket *packet)
 
RTFPacketdeQueuePacket ()
 
RTFPacketallocPacket (uint32 dataSize)
 
void freePacket (RTFPacket *packet)
 
void resetPlaybackState ()
 
void setAVBufferSize (uint32 bufSize)
 
bool prepareAV (RTFResource *rtfHandle, int16 animIndex, int16 width, int16 height, int16 xOff, int16 yOff)
 
bool maintainAV (int16 mode)
 
void stopAV ()
 
bool playAV (RTFResource *rtfHandle, int16 animIndex, int16 width, int16 height, int16 xOff, int16 yOff)
 
void processPacket (RTFPacket *packet)
 
void processRL7 (RTFPacket *packet)
 
void processPLTE (RTFPacket *packet)
 
bool initAV (RTFResource *rtfHandle, int16 animIndex, int16 width, int16 height, int16 xOff, int16 yOff)
 
void cleanUpAV ()
 
bool startAnimation (RTFResource *rtf, int16 animIndex)
 
void stopAnimation ()
 
bool maintainAudioPlay (int16 mode)
 
bool initAnim (RTFResource *rtf, int16 animIndex)
 
void cleanUpAnim ()
 
void setUpSSprite (SSprite *sprite, int16 frameCount, byte **frameData, int16 frameRate, int16 velocityX, int16 velocityY)
 
void animateSSprite (SSprite *sprite, int16 page)
 
void displaySSprite (SSprite *sprite, int16 x, int16 y)
 
void eraseSSprite (SSprite *sprite)
 
void setSSpriteFrames (SSprite *sprite, int16 frameCount, byte **frameData, int16 frameRate)
 
void setSSpriteDrag (SSprite *sprite, int16 dragX, int16 dragY)
 
void setSSpriteAccel (SSprite *sprite, int16 accelX, int16 accelY)
 
void reverseSSpriteAccel (SSprite *sprite)
 
void addSSpriteAccel (SSprite *sprite, int16 dx, int16 dy)
 
void setSSpriteVelocity (SSprite *sprite, int16 vx, int16 vy)
 
void reverseSSpriteVelocity (SSprite *sprite)
 
void setSSpriteStart (SSprite *sprite, int16 startFrame, int16 x, int16 y)
 
void setSSpriteStop (SSprite *sprite, int16 stopFrame)
 
void setSSpritePath (SSprite *sprite, byte *pathData, int16 pathCount, SSpritePathCallback callback)
 
bool inSSprite (SSprite *sprite, int16 x, int16 y)
 
bool sSpriteCollide (SSprite *spriteA, SSprite *spriteB)
 
void setSSpriteCollision (SSprite *sprite, int16 *bounds)
 
bool sSpriteAlive (SSprite *sprite)
 
void getSSpriteLoc (SSprite *sprite, Common::Point *out)
 
void getSSpriteAccel (SSprite *sprite, int16 *out)
 
void getSSpriteVelocity (SSprite *sprite, int16 *out)
 
void getSSpriteDrag (SSprite *sprite, int16 *out)
 
void setSSpriteXLimit (SSprite *sprite, int16 high, int16 low)
 
void setSSpriteYLimit (SSprite *sprite, int16 high, int16 low)
 
void setSSpriteInfo (SSprite *sprite, int16 info)
 
int16 getSSpriteInfo (SSprite *sprite)
 
void freezeSSprite (SSprite *sprite)
 
void unfreezeSSprite (SSprite *sprite)
 
int16 fredGame (int16 prevBooth)
 
bool initFred ()
 
void cleanUpFred ()
 
bool initFredLevel (int16 levelGroup, int16 palGroup)
 
void termFredLevel (int16 levelGroup, int16 palGroup)
 
void swapFredAnimEntry ()
 
void swapFredAnimDesc ()
 
void swapFredLevelDesc ()
 
int16 playFred ()
 
int16 helpFred ()
 
void hiliteFredHelpObject (byte *entry, int16 highlight)
 
void helpAnimStep ()
 
bool spawnBalloon ()
 
int16 calcBalloonSpawnDelay ()
 
int16 selectBalloonRow ()
 
void setFredAnimMode (FredEntityState *state, int16 mode)
 
void renderFredScene ()
 
void getFredSoundInfo (BOLTLib *lib, int16 memberId, SoundInfo *soundInfo)
 
void playFredSound (SoundInfo *oneShot, SoundInfo *loop)
 
void updateFredSound ()
 
int16 georgeGame (int16 prevBooth)
 
bool initGeorge ()
 
void cleanUpGeorge ()
 
bool initGeorgeLevel (int16 level, int16 variant)
 
void termGeorgeLevel (int16 level, int16 variant)
 
void swapGeorgeFrameArray ()
 
void swapGeorgeHelpEntry ()
 
void swapGeorgeThresholds ()
 
int16 playGeorge ()
 
int16 helpGeorge ()
 
void hiliteGeorgeHelpObject (byte *entry, int16 highlight)
 
void advanceHelpAnimation ()
 
bool spawnSatellite ()
 
int16 getRandomSatelliteWait ()
 
int16 getRandomAsteroidRow ()
 
bool confirmAsteroidHitTest ()
 
bool spawnAsteroid ()
 
int16 getRandomAsteroidWait ()
 
int16 getAsteroidRow ()
 
void setGeorgeAnimMode (GeorgeEntityState *sat, int16 mode)
 
void setSatelliteAnimMode (GeorgeEntityState *sat, int16 mode, int16 variant)
 
void setAsteroidAnimMode (GeorgeEntityState *sat, int16 mode, int16 variant)
 
void drawFlyingObjects ()
 
void getGeorgeSoundInfo (BOLTLib *boltLib, int16 member, SoundInfo *outInfo, byte priority)
 
void playGeorgeSound (SoundInfo *newSound, SoundInfo *nextSound)
 
void updateGeorgeSound ()
 
void playSoundMapHuck (int16 memberId)
 
void waitSoundMapHuck ()
 
void setHuckColors (int16 which)
 
void restoreHuckColors (int16 which)
 
void startHuckShuffleTimer ()
 
void drawGift (int16 slot)
 
void drawHuckGifts ()
 
void checkHuckLevelComplete ()
 
bool initHuckDisplay ()
 
bool loadHuckResources ()
 
void unloadHuckResources ()
 
bool initHuckLevel ()
 
bool resumeHuckLevel ()
 
bool initHuck ()
 
void huckToggleBlinking (int16 *state, int16 which)
 
void huckUpdateHotSpots (int16 x, int16 y)
 
int16 findGift (int16 x, int16 y)
 
bool handleGiftSelect (int16 x, int16 y)
 
void huckHandleActionButton (int16 x, int16 y)
 
void giftSwap ()
 
void resolveHuckSelection ()
 
void handleEvent (int16 eventType, uint32 eventData)
 
void playHuck ()
 
void cleanUpHuck ()
 
int16 huckGame (int16 prevBooth)
 
void swapHuckWordArray ()
 
void swapHuckWords ()
 
bool loadScoobyBaseAssets ()
 
void cleanUpScoobyBaseAssets ()
 
void displayPicClipHack (byte *pic, int16 offsetX, int16 offsetY, int16 *clipRect, int16 displayMode)
 
void drawMovingWalls (int16 cellIdx, int16 direction, int16 picFrame, int16 bgFrame)
 
void drawAllMovingWalls ()
 
void animateTransition (int16 memberIdx)
 
void clearPictMSb (byte *pic)
 
void initScoobyLevelGraphics ()
 
bool initScoobyLevelAssets ()
 
void cleanUpScoobyLevelGraphics ()
 
void setScoobySpriteDirection (int16 startMember)
 
void playSoundMapScooby (int16 memberIdx)
 
void playWallSound ()
 
void animateWalls ()
 
void decideDirection ()
 
void updateScoobySound ()
 
void setScoobySound (int16 mode)
 
void updateScoobyLocation ()
 
void updateScoobyWalls ()
 
void updateScoobyDirection (int16 inputDir)
 
void updateScoobyTransition ()
 
bool initScoobyLevel ()
 
bool resumeScoobyLevel ()
 
bool initScooby ()
 
void cleanUpScooby ()
 
int16 helpScooby ()
 
void hiliteScoobyHelpObject (byte *entry, int16 highlight)
 
int16 xpDirToBOLTDir (uint32 xpDir)
 
int16 playScooby ()
 
int16 scoobyGame (int16 prevBooth)
 
void swapScoobyHelpEntry ()
 
void swapScoobyWordArray ()
 
int16 topCatGame (int16 prevBooth)
 
bool initTopCat ()
 
void cleanUpTopCat ()
 
int16 playTopCat ()
 
int16 handleActionButton (int16 *result)
 
void queueAnim (int16 animType, int16 param)
 
bool maintainAnim (int16 soundEvent)
 
void maintainIdleSound (int16 decrement)
 
bool startNextAnim (int16 *playAnswerAnim)
 
void setAnimType (int16 newType)
 
void highlightObject (byte *entry, int16 highlight)
 
bool setupNextQuestion ()
 
void adjustColors (byte *pic, int8 shift)
 
void shuffleTopCatQuestions ()
 
void shuffleTopCatPermutations ()
 
void getTopCatSoundInfo (BOLTLib *lib, int16 memberId, SoundInfo *soundInfo)
 
void setScoreLights (int16 litMask)
 
void swapTopCatHelpEntry ()
 
void playSoundMapYogi (int16 memberId)
 
void waitSoundMapYogi ()
 
void stopSoundYogi ()
 
void setYogiColors (int16 which)
 
void restoreYogiColors (int16 which)
 
void drawBasket (int16 slot, byte *basketSprite)
 
void drawAllBaskets ()
 
void handleYogiMatch ()
 
bool loadYogiBgPic ()
 
void unloadYogiBgPic ()
 
void drawYogiLevel ()
 
bool loadYogiLevel ()
 
void unloadYogiResources ()
 
bool initYogiLevel ()
 
bool resumeYogiLevel ()
 
bool initYogi ()
 
void yogiToggleBlinking (int16 which, int16 *state)
 
void yogiUpdateHotSpots (int16 x, int16 y)
 
int16 findBasket (int16 x, int16 y)
 
void resolveYogiSelection ()
 
bool handleBasketSelect (int16 x, int16 y)
 
void yogiHandleActionButton (int16 x, int16 y)
 
void handleYogiEvent (int16 eventType, uint32 eventData)
 
void playYogi ()
 
void cleanUpYogi ()
 
int16 yogiGame (int16 prevBooth)
 
void swapYogiAllWords ()
 
void swapYogiFirstWord ()
 
- Protected Member Functions inherited from Engine
virtual int runDialog (GUI::Dialog &dialog)
 
void defaultSyncSoundSettings ()
 
virtual void pauseEngineIntern (bool pause)
 

Static Protected Member Functions

static void noOpCb ()
 
static void swapAllWordsCb ()
 
static void swapAllLongsCb ()
 
static void swapPicHeaderCb ()
 
static void swapAndResolvePicDescCb ()
 
static void swapFirstWordCb ()
 
static void swapFirstTwoWordsCb ()
 
static void swapFirstFourWordsCb ()
 
static void swapSpriteHeaderCb ()
 
static void freeSpriteCleanUpCb ()
 
static void resolveAllRefsCb ()
 
static void swapFredAnimEntryCb ()
 
static void swapFredAnimDescCb ()
 
static void swapFredLevelDescCb ()
 
static void swapGeorgeFrameArrayCb ()
 
static void swapGeorgeHelpEntryCb ()
 
static void swapGeorgeThresholdsCb ()
 
static void swapHuckWordArrayCb ()
 
static void swapHuckWordsCb ()
 
static void swapScoobyHelpEntryCb ()
 
static void swapScoobyWordArrayCb ()
 
static void swapTopCatHelpEntryCb ()
 
static void swapYogiAllWordsCb ()
 
static void swapYogiFirstWordCb ()
 

Protected Attributes

DisplaySpecs _displaySpecs [2]
 
XpLib_xp = nullptr
 
bool _extendedViewport = false
 
bool _isDemo = false
 
int16 _lettersWon = 0
 
bool _allLettersWonFlag = false
 
int _displayMode = 0
 
int32 _displayX = 0
 
int32 _displayY = 0
 
int32 _displayWidth = 0
 
int32 _displayHeight = 0
 
int16 _boothLoadedMask = 0
 
int16 _currentBoothScene = 0
 
int16 _boothNumHotspots = 0
 
int16 _boothNumAnimations = 0
 
byte * _boothSceneDesc = nullptr
 
byte * _boothHotPalDescs [4]
 
Common::Rect _boothHotspotDescs [8]
 
byte * _boothAnimDescs [7]
 
byte * _boothAnimPalDescs [4]
 
byte _savedPalettes [7][30]
 
byte _savedHotPalettes [4][9]
 
byte * _boothPalCycleData = nullptr
 
XPPicDesc _boothLetterSprite
 
bool _needInitCursorPos = true
 
byte * _boothVisitSignOn = nullptr
 
byte * _boothVisitSignOff = nullptr
 
byte _leftDoorNavTable [3] = { 3, 2, 4 }
 
byte _rightDoorNavTable [3] = { 1, 0, 5 }
 
int16 _cursorX = 0
 
int16 _cursorY = 0
 
int16 _hoveredHotspot = 0
 
uint32 _helpTimer = 0
 
int16 _keyReleased = 0
 
int16 _keyLeft = 0
 
int16 _keyRight = 0
 
int16 _keyUp = 0
 
int16 _keyDown = 0
 
int16 _helpFlag = 0
 
int16 _keyEnter = 0
 
int16 _tourStep = 0
 
int16 _helpPlaying = 0
 
int16 _helpIsIdle = 0
 
int16 _idleHelpAudioAvailable = 1
 
int16 _huckWins = 0
 
int16 _fredWins = 0
 
int16 _scoobyWins = 0
 
int16 _yogiWins = 0
 
int16 _georgeWins = 0
 
int16 _topCatWins = 0
 
int32 _curErrorCode = 0
 
int16 _currentBoothId = 0
 
BOLTLib_boothsBoltLib = nullptr
 
BOLTCallbacks _boothsBoltCallbacks
 
int16 _resourceIndexCount = 1000
 
uint32 ** _resourceIndex = nullptr
 
Common::Array< byte * > _resolvedPtrs
 
Common::File_cachedFileHandle = nullptr
 
uint32 _cachedFilePos = 0xFFFFFFFF
 
BOLTLib_boltCurrentLib = nullptr
 
BOLTHeader _boltFileHeader
 
BOLTGroupEntry_boltCurrentGroupEntry = nullptr
 
int16 _boltLoadDepth = 0
 
byte * _boltRawMemberData = nullptr
 
BOLTMemberEntry_boltCurrentMemberEntry = nullptr
 
int16 _pendingFixupCount = 0
 
int32 _vramRecordCount = 0
 
int32 _vramUsedBytes = 0
 
byte * _allocatedMemPool = nullptr
 
uint32 _allocatedMemPoolSize = 0
 
RTFResource_rtfHandle = nullptr
 
Common::File_rtfFileHandle = nullptr
 
uint32 _rtfChunkRemaining = 0
 
bool _rtfMidChunk = false
 
RTFPacket_rtfCurrentPacket = nullptr
 
byte * _ringBufBase = nullptr
 
byte * _ringBufWritePtr = nullptr
 
uint32 _ringBufSize = 0
 
uint32 _ringBufFreeSpace = 0
 
uint32 _ringBufLowWater = 0
 
uint32 _ringBufHighWater = 0
 
uint32 _ringBufUsed = 0
 
bool _rtfSoundActive = false
 
int16 _rtfPlaybackTime = 0
 
int16 _rtfCumulativeTime = 0
 
RTFPacket_rtfPendingFrame = nullptr
 
RTFPacket_rtfSoundQueueHead = nullptr
 
RTFPacket_rtfSoundPlayHead = nullptr
 
RTFPacket_rtfChunkListTail = nullptr
 
RTFPacket_rtfChunkListHead = nullptr
 
int16 _rtfChunkCount = 0
 
int16 _rtfQueuedSoundCount = 0
 
int16 _rtfSoundTiming = 0
 
uint32 _rtfAnimStartOffset = 0
 
bool _rtfNeedInitialFill = false
 
uint32 _rtfChunkTag = 0
 
uint32 _rtfChunkSize = 0
 
byte * _avRingBuffer = nullptr
 
uint32 _avTargetBufSize = 0x0FA000
 
int16 _avSkipLevel = 0
 
byte * _avFrontPalette = nullptr
 
byte * _avBackPalette = nullptr
 
uint32 _avSavedInactivityTimer = 0
 
uint32 _avSavedScreenSaverTimer = 0
 
int16 _avFrameAccum = 0
 
int16 _avDisplayX = 0
 
int16 _avDisplayY = 0
 
XPPicDesc _avFrontBufDesc
 
XPPicDesc _avBackBufDesc
 
int16 _animPrevInactivityTimer = 0
 
byte * _animRingBuffer = nullptr
 
Common::File_animFileHandle = nullptr
 
int16 _spriteCollTempX = 0
 
int16 _spriteCollTempY = 0
 
int16 _spriteCollTempW = 0
 
int16 _spriteCollTempH = 0
 
int16 _spriteScreenX = 0
 
int16 _spriteScreenY = 0
 
int16 _spriteCollTempA [4] = { 0 }
 
int16 _spriteCollTempB [4] = { 0 }
 
int16 _spriteScreenAX = 0
 
int16 _spriteScreenAY = 0
 
int16 _spriteScreenBX = 0
 
int16 _spriteScreenBY = 0
 
BOLTLib_fredBoltLib = nullptr
 
BOLTCallbacks _fredBoltCallbacks
 
byte * _fredLevelPtr = nullptr
 
byte * _fredBackground = nullptr
 
byte * _fredBalloonString = nullptr
 
byte * _fredPalette = nullptr
 
byte * _fredFacingLeftRect = nullptr
 
byte * _fredFacingRightRect = nullptr
 
byte * _fredTurningRect = nullptr
 
byte * _fredBalloonRect = nullptr
 
byte * _fredHelpEntries = nullptr
 
byte * _fredPlayButton = nullptr
 
byte * _fredSprites [10] = { nullptr }
 
FredEntityState ** _fredEntitiesTable = nullptr
 
byte * _fredRowBounds = nullptr
 
byte * _fredShuffleTable = nullptr
 
byte * _fredCycleRaw = nullptr
 
byte * _fredBalloonSprite = nullptr
 
byte * _fredPathMatrix = nullptr
 
byte * _fredCurrentHelpObject = nullptr
 
byte * _fredHoveredEntry = nullptr
 
SoundInfo _fredSounds [4]
 
SoundInfo_fredCurrentSound = nullptr
 
SoundInfo_fredLoopSound = nullptr
 
SoundInfo_fredPendingOneShot = nullptr
 
SoundInfo_fredPendingLoop = nullptr
 
FredEntityState _fredSprite
 
int16 _fredSaveData [3] = { 0, 0, 0 }
 
int16 _fredLevelIndex = 0
 
int16 _fredBalloonSpawnDelay = 0
 
int16 _fredBalloonSearchIdx = 0
 
uint32 _fredTimer = 0
 
int16 _fredHelpStep = -1
 
int16 _fredShowHelp = 1
 
XPCycleState _fredCycleSpecs [4]
 
BOLTLib_georgeBoltLib = nullptr
 
BOLTCallbacks _georgeBoltCallbacks
 
byte * _georgePrevActiveHelpObject = nullptr
 
byte * _georgeActiveHelpObject = nullptr
 
int16 _georgeHelpStep = -1
 
int16 _georgeHelpActive = 1
 
GeorgeEntityState ** _georgeEntityList = nullptr
 
int16 _georgeCarIdx = 0
 
int16 _georgeNumSatellites = 0
 
int16 _georgeFirstAsteroidIdx = 0
 
int16 _georgeTotalSatellites = 0
 
byte * _georgeCarPics [3] = { nullptr }
 
byte * _georgeHelpObjects = nullptr
 
byte * _georgeHelpSequence = nullptr
 
uint32 _georgeHelpTimer = 0
 
byte * _georgeSatelliteShuffleTable = nullptr
 
byte * _georgeAsteroidShuffleTable = nullptr
 
int16 * _georgeSatelliteThresholds = nullptr
 
int16 * _georgeAsteroidThresholds = nullptr
 
byte * _georgeSatellitePaths = nullptr
 
byte * _georgeAsteroidPaths = nullptr
 
byte * _georgeCollisionRect = nullptr
 
byte * _georgeSatelliteCollisionRects = nullptr
 
byte * _georgeAsteroidCollisionRects = nullptr
 
byte * _georgeSatelliteGfx = nullptr
 
byte * _georgeAsteroidGfx = nullptr
 
int16 _georgeSatelliteWait = 0
 
int16 _georgeAsteroidWait = 0
 
int16 _georgeSatelliteSearchIdx = 0
 
int16 _georgeAsteroidSearchIdx = 0
 
int16 _georgeHitSearchIdx = 0
 
byte * _georgeBgPic = nullptr
 
byte * _georgePalette = nullptr
 
byte * _georgePalCycleRawData = nullptr
 
XPCycleState _georgePalCycleSpecs [4]
 
int16 _georgeCollectedSatellitesNum = 0
 
SoundInfo _georgeSoundCarStartUp
 
SoundInfo _georgeSoundCarGoesAway
 
SoundInfo _georgeSoundCarLoopHi
 
SoundInfo _georgeSoundCarLoopLo
 
SoundInfo _georgeSoundCarTumble
 
SoundInfo ** _georgeSatelliteSoundList = nullptr
 
byte _georgeSoundChannelCounter = 0
 
SoundInfo_georgeSoundToPlay = nullptr
 
SoundInfo_georgeSoundCurrent = nullptr
 
SoundInfo_georgeSoundQueued = nullptr
 
SoundInfo_georgeSoundNext = nullptr
 
int16 _georgeSaveData [3] = { 0 }
 
int16 * _georgeThresholds = nullptr
 
BOLTLib_huckBoltLib = nullptr
 
BOLTCallbacks _huckBoltCallbacks
 
int16 _huckSoundPlaying = 0
 
int16 _huckHotSpotCount = 0
 
int16 _huckActionState = 0
 
uint32 _huckScreensaverTimer = 0
 
uint32 _huckBlinkTimer = 0
 
int16 _huckScreensaverFlag = 0
 
int16 _huckBlinkFlag = 0
 
uint32 _huckShuffleTimer = 0
 
int16 _huckGlobal [30] = { 0 }
 
HuckState _huckState
 
byte * _huckGiftPic = nullptr
 
byte * _huckBgPic = nullptr
 
int16 _huckGiftGroupId = 0
 
int16 _huckVariantGroupId = 0
 
byte * _huckBgDisplayPic = nullptr
 
int16 _huckScrollOffset = 0
 
int16 _huckPalRange [8] = { 0 }
 
int16 _huckReturnBooth = 0
 
int16 _huckExitFlag = 0
 
int16 _huckCursorX = 0
 
int16 _huckCursorY = 0
 
byte _huckPalSave0 [15] = { 0 }
 
byte _huckPalHighlight0 [15] = { 0 }
 
byte _huckPalSave1 [15] = { 0 }
 
byte _huckPalHighlight1 [15] = { 0 }
 
XPPicDesc _huckScratchPic
 
BOLTLib_scoobyBoltLib = nullptr
 
BOLTCallbacks _scoobyBoltCallbacks
 
int16 _scoobySoundMode = 0
 
int16 _scoobySoundPlaying = 0
 
int16 _scoobyShowHelp = 1
 
int16 _scoobyLastInputDir = 0
 
int16 _scoobyTransitionFrom = 0
 
int16 _scoobyTransitionTarget = 0
 
int16 _scoobyTransitionVelX = 0
 
int16 _scoobyTransitionVelY = 0
 
XPPicDesc _scoobyTempPic
 
byte _scoobyGlobalSaveData [0x3C] = { 0 }
 
ScoobyState _scoobyGameState
 
SSprite _scoobySprite
 
byte * _scoobyBaseData = nullptr
 
byte * _scoobyBgPic = nullptr
 
byte * _scoobyWallPicsA [4] = { nullptr }
 
byte * _scoobyWallPicsB [5] = { nullptr }
 
ScoobyRect _scoobyCellBounds [25]
 
Common::Point _scoobyLevelStartXY [25]
 
byte * _scoobyLevelData = nullptr
 
int16 _scoobySelectedGraphicsGroup = 0
 
int16 _scoobyDifficulty = 0
 
int16 _scoobyLevelCount = 0
 
int16 _scoobyMoveRequested = 0
 
int16 _scoobyTransitioning = 0
 
int16 _scoobyDesiredDir = 0
 
int16 _scoobyInputHoldCount = 0
 
int16 _scoobyWallAnimating = 0
 
int16 _scoobyWallAnimStep = 0
 
int16 _scoobyWallsToOpen = 0
 
int16 _scoobyWallsToClose = 0
 
RTFResource_topCatRtfHandle = nullptr
 
RTFResource_topCatAvHandle = nullptr
 
BOLTLib_topCatBoltLib = nullptr
 
BOLTCallbacks _topCatBoltCallbacks
 
byte * _topCatBackgroundPalette = nullptr
 
byte * _topCatBackground = nullptr
 
byte * _topCatBackgroundAnimationPalette = nullptr
 
byte * _topCatGraphicsAssets = nullptr
 
int16 _topCatBackgroundAnimFrame = 0
 
int16 _topCatMaxBackgroundAnimFrames = 0
 
int16 _topCatCurrentAnimType = 0
 
int16 _topCatAnimStateMachineStep = 0
 
int16 _topCatAnimQueueSize = 0
 
int16 _topCatQueuedSoundFrames = 0
 
byte * _topCatButtonsPalette = nullptr
 
byte * _topCatBlinkEntries = nullptr
 
byte * _topCatLightsPalette = nullptr
 
int16 * _topCatBlinkSeqPtr = nullptr
 
byte * _topCatSelectedChoiceOverlayGfx = nullptr
 
byte * _topCatCycleData = nullptr
 
XPCycleState _topCatCycleSpecs [4]
 
byte * _topCatShuffledQuestions = nullptr
 
byte * _topCatShuffledAnswers = nullptr
 
byte * _topCatAnswersPermutations = nullptr
 
byte * _topCatAnswers = nullptr
 
byte * _topCatAnswersScreenPositions = nullptr
 
int16 _topCatSavedScore = 0
 
int16 _topCatSaveHistory = 0
 
int16 _topCatScore = 0
 
int16 _topCatShuffledQuestionsArrayIdx = 0
 
uint32 _topCatBlinkTimer = 0
 
SoundInfo _topCatSoundInfo
 
byte _topCatSavedShuffledQuestions [60] = { 0 }
 
byte _topCatSavedShuffledAnswers [60] = { 0 }
 
byte _topCatSavedAnswersPermutations [60 *3] = { 0 }
 
byte _topCatSaveBuffer [302] = { 0 }
 
byte * _topCatHoveredEntry = nullptr
 
byte * _topCatHelpButton = nullptr
 
byte * _topCatBackButton = nullptr
 
byte * _topCatBlinkEntry = nullptr
 
int16 _topCatCycleStep = 0
 
int16 _topCatDrawnQuestionId = 0
 
int16 _topCatCurrentAnswerIdx = 0
 
XPCycleState _topCatChoiceCycleState [4]
 
TopCatAnim _topCatAnimQueue [3]
 
int16 _topCatCorrectAnimIdx = 0
 
int16 _topCatWrongAnimIdx = 0
 
int16 _topCatShouldPlayAnswerAnim = 0
 
int16 _topCatMaintainSoundFlag = 0
 
int16 _topCatPermTableA [3] = { 0, 1, 2 }
 
int16 _topCatPermTableB [3] = { 0, 1, 2 }
 
int16 _topCatBlinkSeq0 [5] = { 0x01, 0x00, 0x01, 0x00, 0x01 }
 
int16 _topCatBlinkSeq1 [5] = { 0x03, 0x01, 0x03, 0x01, 0x03 }
 
int16 _topCatBlinkSeq2 [5] = { 0x07, 0x03, 0x07, 0x03, 0x07 }
 
int16 _topCatBlinkSeq3 [5] = { 0x0F, 0x07, 0x0F, 0x07, 0x0F }
 
int16 _topCatBlinkSeq4 [5] = { 0x1F, 0x0F, 0x1F, 0x0F, 0x1F }
 
int16 _topCatBlinkSeq5 [5] = { 0x3F, 0x1F, 0x3F, 0x1F, 0x3F }
 
int16 _topCatBlinkSeq6 [25]
 
int16 * _topCatBlinkSeqTable [7]
 
BOLTLib_yogiBoltLib = nullptr
 
BOLTCallbacks _yogiBoltCallbacks
 
int16 _yogiSoundPlaying = 0
 
int16 _yogiSoundActive = 0
 
int16 _yogiHotSpotCount = 0
 
int16 _yogiAnimActive = 0
 
uint32 _yogiBlinkTimer1 = 0
 
uint32 _yogiBlinkTimer2 = 0
 
int16 _yogiBlinkState1 = 0
 
int16 _yogiBlinkState2 = 0
 
int16 _yogiGlobal [0xA0] = { 0 }
 
YogiState _yogiState
 
byte * _yogiBasketPic = nullptr
 
int16 _yogiLevelGroupId = 0
 
byte * _yogiBgPic = nullptr
 
byte * _yogiNormalSprite = nullptr
 
byte * _yogiHlSprite = nullptr
 
byte * _yogiAnimSprite = nullptr
 
int16 _yogiSpriteStride = 0
 
int16 _yogiSpriteHeight = 0
 
int16 _yogiPalRange [8] = { 0 }
 
int16 _yogiReturnBooth = 0
 
int16 _yogiExitFlag = 0
 
int16 _yogiLevelId = 0
 
int16 _yogiCursorX = 0
 
int16 _yogiCursorY = 0
 
byte _yogiPalSave0 [15] = { 0 }
 
byte _yogiPalHighlight0 [15] = { 0 }
 
byte _yogiPalSave1 [15] = { 0 }
 
byte _yogiPalHighlight1 [15] = { 0 }
 
XPPicDesc _yogiScratchBuf
 
- Protected Attributes inherited from Engine
Common::TimerManager_timer
 
Common::EventManager_eventMan
 
Common::SaveFileManager_saveFileMan
 
GUI::Dialog_mainMenuDialog
 
const Common::String _targetName
 
int32 _activeEnhancements = kEnhGameBreakingBugFixes
 

Static Protected Attributes

static BOLTCallback _defaultTypeLoadCallbacks [25]
 
static BOLTCallback _defaultTypeFreeCallbacks [25]
 
static BOLTCallback _defaultMemberLoadCallbacks [25]
 
static BOLTCallback _defaultMemberFreeCallbacks [25]
 
static BOLTCallback _defaultGroupLoadCallbacks [25]
 
static BOLTCallback _defaultGroupFreeCallbacks [25]
 
static BOLTCallback _fredTypeLoadCallbacks [28]
 
static BOLTCallback _fredTypeFreeCallbacks [28]
 
static BOLTCallback _georgeTypeLoadCallbacks [28]
 
static BOLTCallback _georgeTypeFreeCallbacks [28]
 
static BOLTCallback _huckTypeLoadCallbacks [27]
 
static BOLTCallback _huckTypeFreeCallbacks [27]
 
static BOLTCallback _scoobyTypeLoadCallbacks [28]
 
static BOLTCallback _scoobyTypeFreeCallbacks [28]
 
static BOLTCallback _topCatTypeLoadCallbacks [26]
 
static BOLTCallback _topCatTypeFreeCallbacks [26]
 
static BOLTCallback _yogiTypeLoadCallbacks [27]
 
static BOLTCallback _yogiTypeFreeCallbacks [27]
 

Additional Inherited Members

- Public Types inherited from Engine
enum  EngineFeature {
  kSupportsSubtitleOptions, kSupportsReturnToLauncher, kSupportsLoadingDuringRuntime, kSupportsSavingDuringRuntime,
  kSupportsChangingOptionsDuringRuntime, kSupportsArbitraryResolutions, kSupportsHelp, kSupportsQuitDialogOverride
}
 
- Static Public Member Functions inherited from Engine
static void quitGame ()
 
static bool shouldQuit ()
 
static bool warnUserAboutUnsupportedGame (Common::String msg=Common::String())
 
static bool warnUserAboutUnsupportedAddOn (Common::String addOnName)
 
static void errorAddingAddOnWithoutBaseGame (Common::String addOnName, Common::String gameId)
 
static void errorUnsupportedGame (Common::String extraMsg)
 
- Public Attributes inherited from Engine
OSystem_system
 
Audio::Mixer_mixer
 

Member Function Documentation

◆ run()

Common::Error Bolt::BoltEngine::run ( )
overrideprotectedvirtual

Initialize the engine and start its main loop.

Returns
kNoError on success, otherwise an error code.

Implements Engine.

◆ getGameId()

Common::String Bolt::BoltEngine::getGameId ( ) const

Returns the game Id

◆ hasFeature()

bool Bolt::BoltEngine::hasFeature ( EngineFeature  f) const
inlineoverridevirtual

Determine whether the engine supports the specified feature.

Reimplemented from Engine.

◆ canLoadGameStateCurrently()

bool Bolt::BoltEngine::canLoadGameStateCurrently ( Common::U32String msg = nullptr)
inlineoverridevirtual

Indicate whether a game state can be loaded.

Parameters
msgOptional pointer to message explaining why it is disabled

Reimplemented from Engine.

◆ canSaveGameStateCurrently()

bool Bolt::BoltEngine::canSaveGameStateCurrently ( Common::U32String msg = nullptr)
inlineoverridevirtual

Indicate whether a game state can be saved.

Parameters
msgOptional pointer to message explaining why it is disabled

Reimplemented from Engine.

Member Data Documentation

◆ _displaySpecs

DisplaySpecs Bolt::BoltEngine::_displaySpecs[2]
protected
Initial value:
= {
{0, 384, 240},
{1, 320, 200}
}

◆ _topCatBlinkSeq6

int16 Bolt::BoltEngine::_topCatBlinkSeq6[25]
protected
Initial value:
= {
0x09, 0x12, 0x24, 0x09, 0x12, 0x24,
0x09, 0x12, 0x24, 0x09, 0x12, 0x24,
0x09, 0x12, 0x24, 0x09, 0x12, 0x24,
0x09, 0x12, 0x24, 0x09, 0x12, 0x24,
0x3F
}

◆ _topCatBlinkSeqTable

int16* Bolt::BoltEngine::_topCatBlinkSeqTable[7]
protected
Initial value:
= {
_topCatBlinkSeq0, _topCatBlinkSeq1, _topCatBlinkSeq2,
_topCatBlinkSeq3, _topCatBlinkSeq4, _topCatBlinkSeq5,
_topCatBlinkSeq6
}

The documentation for this class was generated from the following file: