ScummVM API documentation
Bolt::BoltEngine Class Referenceabstract
Inheritance diagram for Bolt::BoltEngine:
Engine Bolt::Carnival::CarnivalEngine Bolt::Crete::CreteEngine Bolt::Merlin::MerlinEngine

Public Member Functions

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

 BoltEngine (OSystem *syst, const ADGameDescription *gameDesc)
 
Common::Error run () override
 
virtual void boltMain ()=0
 
void setCursorPict (byte *sprite)
 
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 ()
 
virtual void initCallbacks ()=0
 
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)
 
- 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 ()
 

Protected Attributes

DisplaySpecs _displaySpecs [2]
 
XpLib_xp = nullptr
 
bool _extendedViewport = false
 
bool _isDemo = false
 
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
 
int32 _curErrorCode = 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
 
- 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]
 

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 warnUserAboutTestingMode ()
 
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}
}

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