diff options
-rw-r--r-- | engines/kyra/kyra.cpp | 2 | ||||
-rw-r--r-- | engines/kyra/kyra.h | 5 | ||||
-rw-r--r-- | engines/kyra/resource.cpp | 1 | ||||
-rw-r--r-- | engines/kyra/sound_adlib.cpp | 295 | ||||
-rw-r--r-- | engines/kyra/staticres.cpp | 404 |
5 files changed, 363 insertions, 344 deletions
diff --git a/engines/kyra/kyra.cpp b/engines/kyra/kyra.cpp index 7e00383793..0c121bdffd 100644 --- a/engines/kyra/kyra.cpp +++ b/engines/kyra/kyra.cpp @@ -48,6 +48,8 @@ namespace Kyra { KyraEngine::KyraEngine(OSystem *system) : Engine(system) { + setupOpcodeTable(); + _seq_Forest = _seq_KallakWriting = _seq_KyrandiaLogo = _seq_KallakMalcolm = _seq_MalcolmTree = _seq_WestwoodLogo = _seq_Demo1 = _seq_Demo2 = _seq_Demo3 = _seq_Demo4 = 0; diff --git a/engines/kyra/kyra.h b/engines/kyra/kyra.h index 55be8ce6aa..f667c0615d 100644 --- a/engines/kyra/kyra.h +++ b/engines/kyra/kyra.h @@ -607,8 +607,9 @@ protected: void seq_playCredits(); void updateKyragemFading(); - static OpcodeProc _opcodeTable[]; - static const int _opcodeTableSize; + void setupOpcodeTable(); + OpcodeProc *_opcodeTable; + int _opcodeTableSize; void waitForEvent(); void loadPalette(const char *filename, uint8 *palData); diff --git a/engines/kyra/resource.cpp b/engines/kyra/resource.cpp index ce8d8d106a..c235f309d4 100644 --- a/engines/kyra/resource.cpp +++ b/engines/kyra/resource.cpp @@ -445,4 +445,3 @@ void KyraEngine::loadBitmap(const char *filename, int tempPage, int dstPage, uin } } // end of namespace Kyra - diff --git a/engines/kyra/sound_adlib.cpp b/engines/kyra/sound_adlib.cpp index aa5bbde0ee..e4406d5453 100644 --- a/engines/kyra/sound_adlib.cpp +++ b/engines/kyra/sound_adlib.cpp @@ -81,8 +81,9 @@ private: const char *name; }; - static const OpcodeEntry _opcodeList[]; - static const int _opcodesEntries; + void setupOpcodeList(); + const OpcodeEntry *_opcodeList; + int _opcodesEntries; int snd_ret0x100(va_list &list); int snd_ret0x1983(va_list &list); @@ -228,8 +229,10 @@ private: POpcode function; const char *name; }; - static const ParserOpcode _parserOpcodeTable[]; - static const int _parserOpcodeTableSize; + + void setupParserOpcodeTable(); + const ParserOpcode *_parserOpcodeTable; + int _parserOpcodeTableSize; int update_setRepeat(uint8 *&dataptr, Channel &channel, uint8 value); int update_checkRepeat(uint8 *&dataptr, Channel &channel, uint8 value); @@ -384,6 +387,9 @@ private: }; AdlibDriver::AdlibDriver(Audio::Mixer *mixer) { + setupOpcodeList(); + setupParserOpcodeTable(); + _mixer = mixer; _flags = 0; @@ -1811,146 +1817,154 @@ int AdlibDriver::updateCallback56(uint8 *&dataptr, Channel &channel, uint8 value // static res #define COMMAND(x) { &AdlibDriver::x, #x } -const AdlibDriver::OpcodeEntry AdlibDriver::_opcodeList[] = { - COMMAND(snd_ret0x100), - COMMAND(snd_ret0x1983), - COMMAND(snd_initDriver), - COMMAND(snd_deinitDriver), - COMMAND(snd_setSoundData), - COMMAND(snd_unkOpcode1), - COMMAND(snd_startSong), - COMMAND(snd_unkOpcode2), - COMMAND(snd_unkOpcode3), - COMMAND(snd_readByte), - COMMAND(snd_writeByte), - COMMAND(snd_getSoundTrigger), - COMMAND(snd_unkOpcode4), - COMMAND(snd_dummy), - COMMAND(snd_getNullvar4), - COMMAND(snd_setNullvar3), - COMMAND(snd_setFlag), - COMMAND(snd_clearFlag) -}; - -const AdlibDriver::ParserOpcode AdlibDriver::_parserOpcodeTable[] = { - // 0 - COMMAND(update_setRepeat), - COMMAND(update_checkRepeat), - COMMAND(update_setupProgram), - COMMAND(update_setNoteSpacing), - - // 4 - COMMAND(update_jump), - COMMAND(update_jumpToSubroutine), - COMMAND(update_returnFromSubroutine), - COMMAND(update_setBaseOctave), - - // 8 - COMMAND(update_stopChannel), - COMMAND(update_playRest), - COMMAND(update_writeAdlib), - COMMAND(update_setupNoteAndDuration), - // 12 - COMMAND(update_setBaseNote), - COMMAND(update_setupSecondaryEffect1), - COMMAND(update_stopOtherChannel), - COMMAND(update_waitForEndOfProgram), - - // 16 - COMMAND(update_setupInstrument), - COMMAND(update_setupPrimaryEffect1), - COMMAND(update_removePrimaryEffect1), - COMMAND(update_setBaseFreq), - - // 20 - COMMAND(update_stopChannel), - COMMAND(update_setupPrimaryEffect2), - COMMAND(update_stopChannel), - COMMAND(update_stopChannel), - - // 24 - COMMAND(update_stopChannel), - COMMAND(update_stopChannel), - COMMAND(update_setPriority), - COMMAND(update_stopChannel), - - // 28 - COMMAND(updateCallback23), - COMMAND(updateCallback24), - COMMAND(update_setExtraLevel1), - COMMAND(update_stopChannel), - - // 32 - COMMAND(update_setupDuration), - COMMAND(update_playNote), - COMMAND(update_stopChannel), - COMMAND(update_stopChannel), - - // 36 - COMMAND(update_setFractionalNoteSpacing), - COMMAND(update_stopChannel), - COMMAND(update_setTempo), - COMMAND(update_removeSecondaryEffect1), - - // 40 - COMMAND(update_stopChannel), - COMMAND(update_setChannelTempo), - COMMAND(update_stopChannel), - COMMAND(update_setExtraLevel3), - - // 44 - COMMAND(update_setExtraLevel2), - COMMAND(update_changeExtraLevel2), - COMMAND(update_setAMDepth), - COMMAND(update_setVibratoDepth), - - // 48 - COMMAND(update_changeExtraLevel1), - COMMAND(update_stopChannel), - COMMAND(update_stopChannel), - COMMAND(updateCallback38), - - // 52 - COMMAND(update_stopChannel), - COMMAND(updateCallback39), - COMMAND(update_removePrimaryEffect2), - COMMAND(update_stopChannel), - - // 56 - COMMAND(update_stopChannel), - COMMAND(updateCallback41), - COMMAND(update_resetToGlobalTempo), - COMMAND(update_nop1), - - // 60 - COMMAND(update_setDurationRandomness), - COMMAND(update_changeChannelTempo), - COMMAND(update_stopChannel), - COMMAND(updateCallback46), - - // 64 - COMMAND(update_nop2), - COMMAND(update_setupRhythmSection), - COMMAND(update_playRhythmSection), - COMMAND(update_removeRhythmSection), - - // 68 - COMMAND(updateCallback51), - COMMAND(updateCallback52), - COMMAND(updateCallback53), - COMMAND(update_setSoundTrigger), - - // 72 - COMMAND(update_setTempoReset), - COMMAND(updateCallback56), - COMMAND(update_stopChannel) +void AdlibDriver::setupOpcodeList() { + static const OpcodeEntry opcodeList[] = { + COMMAND(snd_ret0x100), + COMMAND(snd_ret0x1983), + COMMAND(snd_initDriver), + COMMAND(snd_deinitDriver), + COMMAND(snd_setSoundData), + COMMAND(snd_unkOpcode1), + COMMAND(snd_startSong), + COMMAND(snd_unkOpcode2), + COMMAND(snd_unkOpcode3), + COMMAND(snd_readByte), + COMMAND(snd_writeByte), + COMMAND(snd_getSoundTrigger), + COMMAND(snd_unkOpcode4), + COMMAND(snd_dummy), + COMMAND(snd_getNullvar4), + COMMAND(snd_setNullvar3), + COMMAND(snd_setFlag), + COMMAND(snd_clearFlag) + }; + + _opcodeList = opcodeList; + _opcodesEntries = ARRAYSIZE(opcodeList); +} + +void AdlibDriver::setupParserOpcodeTable() { + static const ParserOpcode parserOpcodeTable[] = { + // 0 + COMMAND(update_setRepeat), + COMMAND(update_checkRepeat), + COMMAND(update_setupProgram), + COMMAND(update_setNoteSpacing), + + // 4 + COMMAND(update_jump), + COMMAND(update_jumpToSubroutine), + COMMAND(update_returnFromSubroutine), + COMMAND(update_setBaseOctave), + + // 8 + COMMAND(update_stopChannel), + COMMAND(update_playRest), + COMMAND(update_writeAdlib), + COMMAND(update_setupNoteAndDuration), + + // 12 + COMMAND(update_setBaseNote), + COMMAND(update_setupSecondaryEffect1), + COMMAND(update_stopOtherChannel), + COMMAND(update_waitForEndOfProgram), + + // 16 + COMMAND(update_setupInstrument), + COMMAND(update_setupPrimaryEffect1), + COMMAND(update_removePrimaryEffect1), + COMMAND(update_setBaseFreq), + + // 20 + COMMAND(update_stopChannel), + COMMAND(update_setupPrimaryEffect2), + COMMAND(update_stopChannel), + COMMAND(update_stopChannel), + + // 24 + COMMAND(update_stopChannel), + COMMAND(update_stopChannel), + COMMAND(update_setPriority), + COMMAND(update_stopChannel), + + // 28 + COMMAND(updateCallback23), + COMMAND(updateCallback24), + COMMAND(update_setExtraLevel1), + COMMAND(update_stopChannel), + + // 32 + COMMAND(update_setupDuration), + COMMAND(update_playNote), + COMMAND(update_stopChannel), + COMMAND(update_stopChannel), + + // 36 + COMMAND(update_setFractionalNoteSpacing), + COMMAND(update_stopChannel), + COMMAND(update_setTempo), + COMMAND(update_removeSecondaryEffect1), + + // 40 + COMMAND(update_stopChannel), + COMMAND(update_setChannelTempo), + COMMAND(update_stopChannel), + COMMAND(update_setExtraLevel3), + + // 44 + COMMAND(update_setExtraLevel2), + COMMAND(update_changeExtraLevel2), + COMMAND(update_setAMDepth), + COMMAND(update_setVibratoDepth), + + // 48 + COMMAND(update_changeExtraLevel1), + COMMAND(update_stopChannel), + COMMAND(update_stopChannel), + COMMAND(updateCallback38), + + // 52 + COMMAND(update_stopChannel), + COMMAND(updateCallback39), + COMMAND(update_removePrimaryEffect2), + COMMAND(update_stopChannel), + + // 56 + COMMAND(update_stopChannel), + COMMAND(updateCallback41), + COMMAND(update_resetToGlobalTempo), + COMMAND(update_nop1), + + // 60 + COMMAND(update_setDurationRandomness), + COMMAND(update_changeChannelTempo), + COMMAND(update_stopChannel), + COMMAND(updateCallback46), + + // 64 + COMMAND(update_nop2), + COMMAND(update_setupRhythmSection), + COMMAND(update_playRhythmSection), + COMMAND(update_removeRhythmSection), + + // 68 + COMMAND(updateCallback51), + COMMAND(updateCallback52), + COMMAND(updateCallback53), + COMMAND(update_setSoundTrigger), + + // 72 + COMMAND(update_setTempoReset), + COMMAND(updateCallback56), + COMMAND(update_stopChannel) + }; + + _parserOpcodeTable = parserOpcodeTable; + _parserOpcodeTableSize = ARRAYSIZE(parserOpcodeTable); }; #undef COMMAND -const int AdlibDriver::_opcodesEntries = ARRAYSIZE(AdlibDriver::_opcodeList); -const int AdlibDriver::_parserOpcodeTableSize = ARRAYSIZE(AdlibDriver::_parserOpcodeTable); - // This table holds the register offset for operator 1 for each of the nine // channels. To get the register offset for operator 2, simply add 3. @@ -2294,4 +2308,3 @@ void SoundAdlibPC::unk2() { } } // end of namespace Kyra - diff --git a/engines/kyra/staticres.cpp b/engines/kyra/staticres.cpp index 6a820a6164..d60d3bf175 100644 --- a/engines/kyra/staticres.cpp +++ b/engines/kyra/staticres.cpp @@ -802,207 +802,211 @@ const int Screen::_screenDimTableCountK3 = ARRAYSIZE(_screenDimTableK3); // CD Version *could* use an different opcodeTable #define Opcode(x) &KyraEngine::x -KyraEngine::OpcodeProc KyraEngine::_opcodeTable[] = { - // 0x00 - Opcode(cmd_magicInMouseItem), - Opcode(cmd_characterSays), - Opcode(cmd_pauseTicks), - Opcode(cmd_drawSceneAnimShape), - // 0x04 - Opcode(cmd_queryGameFlag), - Opcode(cmd_setGameFlag), - Opcode(cmd_resetGameFlag), - Opcode(cmd_runNPCScript), - // 0x08 - Opcode(cmd_setSpecialExitList), - Opcode(cmd_blockInWalkableRegion), - Opcode(cmd_blockOutWalkableRegion), - Opcode(cmd_walkPlayerToPoint), - // 0x0c - Opcode(cmd_dropItemInScene), - Opcode(cmd_drawAnimShapeIntoScene), - Opcode(cmd_createMouseItem), - Opcode(cmd_savePageToDisk), - // 0x10 - Opcode(cmd_sceneAnimOn), - Opcode(cmd_sceneAnimOff), - Opcode(cmd_getElapsedSeconds), - Opcode(cmd_mouseIsPointer), - // 0x14 - Opcode(cmd_destroyMouseItem), - Opcode(cmd_runSceneAnimUntilDone), - Opcode(cmd_fadeSpecialPalette), - Opcode(cmd_playAdlibSound), - // 0x18 - Opcode(cmd_playAdlibScore), - Opcode(cmd_phaseInSameScene), - Opcode(cmd_setScenePhasingFlag), - Opcode(cmd_resetScenePhasingFlag), - // 0x1c - Opcode(cmd_queryScenePhasingFlag), - Opcode(cmd_sceneToDirection), - Opcode(cmd_setBirthstoneGem), - Opcode(cmd_placeItemInGenericMapScene), - // 0x20 - Opcode(cmd_setBrandonStatusBit), - Opcode(cmd_pauseSeconds), - Opcode(cmd_getCharactersLocation), - Opcode(cmd_runNPCSubscript), - // 0x24 - Opcode(cmd_magicOutMouseItem), - Opcode(cmd_internalAnimOn), - Opcode(cmd_forceBrandonToNormal), - Opcode(cmd_poisonDeathNow), - // 0x28 - Opcode(cmd_setScaleMode), - Opcode(cmd_openWSAFile), - Opcode(cmd_closeWSAFile), - Opcode(cmd_runWSAFromBeginningToEnd), - // 0x2c - Opcode(cmd_displayWSAFrame), - Opcode(cmd_enterNewScene), - Opcode(cmd_setSpecialEnterXAndY), - Opcode(cmd_runWSAFrames), - // 0x30 - Opcode(cmd_popBrandonIntoScene), - Opcode(cmd_restoreAllObjectBackgrounds), - Opcode(cmd_setCustomPaletteRange), - Opcode(cmd_loadPageFromDisk), - // 0x34 - Opcode(cmd_customPrintTalkString), - Opcode(cmd_restoreCustomPrintBackground), - Opcode(cmd_hideMouse), - Opcode(cmd_showMouse), - // 0x38 - Opcode(cmd_getCharacterX), - Opcode(cmd_getCharacterY), - Opcode(cmd_changeCharactersFacing), - Opcode(cmd_copyWSARegion), - // 0x3c - Opcode(cmd_printText), - Opcode(cmd_random), - Opcode(cmd_loadSoundFile), - Opcode(cmd_displayWSAFrameOnHidPage), - // 0x40 - Opcode(cmd_displayWSASequentialFrames), - Opcode(cmd_drawCharacterStanding), - Opcode(cmd_internalAnimOff), - Opcode(cmd_changeCharactersXAndY), - // 0x44 - Opcode(cmd_clearSceneAnimatorBeacon), - Opcode(cmd_querySceneAnimatorBeacon), - Opcode(cmd_refreshSceneAnimator), - Opcode(cmd_placeItemInOffScene), - // 0x48 - Opcode(cmd_wipeDownMouseItem), - Opcode(cmd_placeCharacterInOtherScene), - Opcode(cmd_getKey), - Opcode(cmd_specificItemInInventory), - // 0x4c - Opcode(cmd_popMobileNPCIntoScene), - Opcode(cmd_mobileCharacterInScene), - Opcode(cmd_hideMobileCharacter), - Opcode(cmd_unhideMobileCharacter), - // 0x50 - Opcode(cmd_setCharactersLocation), - Opcode(cmd_walkCharacterToPoint), - Opcode(cmd_specialEventDisplayBrynnsNote), - Opcode(cmd_specialEventRemoveBrynnsNote), - // 0x54 - Opcode(cmd_setLogicPage), - Opcode(cmd_fatPrint), - Opcode(cmd_preserveAllObjectBackgrounds), - Opcode(cmd_updateSceneAnimations), - // 0x58 - Opcode(cmd_sceneAnimationActive), - Opcode(cmd_setCharactersMovementDelay), - Opcode(cmd_getCharactersFacing), - Opcode(cmd_bkgdScrollSceneAndMasksRight), - // 0x5c - Opcode(cmd_dispelMagicAnimation), - Opcode(cmd_findBrightestFireberry), - Opcode(cmd_setFireberryGlowPalette), - Opcode(cmd_setDeathHandlerFlag), - // 0x60 - Opcode(cmd_drinkPotionAnimation), - Opcode(cmd_makeAmuletAppear), - Opcode(cmd_drawItemShapeIntoScene), - Opcode(cmd_setCharactersCurrentFrame), - // 0x64 - Opcode(cmd_waitForConfirmationMouseClick), - Opcode(cmd_pageFlip), - Opcode(cmd_setSceneFile), - Opcode(cmd_getItemInMarbleVase), - // 0x68 - Opcode(cmd_setItemInMarbleVase), - Opcode(cmd_addItemToInventory), - Opcode(cmd_intPrint), - Opcode(cmd_shakeScreen), - // 0x6c - Opcode(cmd_createAmuletJewel), - Opcode(cmd_setSceneAnimCurrXY), - Opcode(cmd_poisonBrandonAndRemaps), - Opcode(cmd_fillFlaskWithWater), - // 0x70 - Opcode(cmd_getCharactersMovementDelay), - Opcode(cmd_getBirthstoneGem), - Opcode(cmd_queryBrandonStatusBit), - Opcode(cmd_playFluteAnimation), - // 0x74 - Opcode(cmd_playWinterScrollSequence), - Opcode(cmd_getIdolGem), - Opcode(cmd_setIdolGem), - Opcode(cmd_totalItemsInScene), - // 0x78 - Opcode(cmd_restoreBrandonsMovementDelay), - Opcode(cmd_setMousePos), - Opcode(cmd_getMouseState), - Opcode(cmd_setEntranceMouseCursorTrack), - // 0x7c - Opcode(cmd_itemAppearsOnGround), - Opcode(cmd_setNoDrawShapesFlag), - Opcode(cmd_fadeEntirePalette), - Opcode(cmd_itemOnGroundHere), - // 0x80 - Opcode(cmd_queryCauldronState), - Opcode(cmd_setCauldronState), - Opcode(cmd_queryCrystalState), - Opcode(cmd_setCrystalState), - // 0x84 - Opcode(cmd_setPaletteRange), - Opcode(cmd_shrinkBrandonDown), - Opcode(cmd_growBrandonUp), - Opcode(cmd_setBrandonScaleXAndY), - // 0x88 - Opcode(cmd_resetScaleMode), - Opcode(cmd_getScaleDepthTableValue), - Opcode(cmd_setScaleDepthTableValue), - Opcode(cmd_message), - // 0x8c - Opcode(cmd_checkClickOnNPC), - Opcode(cmd_getFoyerItem), - Opcode(cmd_setFoyerItem), - Opcode(cmd_setNoItemDropRegion), - // 0x90 - Opcode(cmd_walkMalcolmOn), - Opcode(cmd_passiveProtection), - Opcode(cmd_setPlayingLoop), - Opcode(cmd_brandonToStoneSequence), - // 0x94 - Opcode(cmd_brandonHealingSequence), - Opcode(cmd_protectCommandLine), - Opcode(cmd_pauseMusicSeconds), - Opcode(cmd_resetMaskRegion), - // 0x98 - Opcode(cmd_setPaletteChangeFlag), - Opcode(cmd_fillRect), - Opcode(cmd_vocUnload), - Opcode(cmd_vocLoad), - Opcode(cmd_dummy) -}; -#undef Opcode -const int KyraEngine::_opcodeTableSize = ARRAYSIZE(_opcodeTable); +void KyraEngine::setupOpcodeTable() { + static OpcodeProc opcodeTable[] = { + // 0x00 + Opcode(cmd_magicInMouseItem), + Opcode(cmd_characterSays), + Opcode(cmd_pauseTicks), + Opcode(cmd_drawSceneAnimShape), + // 0x04 + Opcode(cmd_queryGameFlag), + Opcode(cmd_setGameFlag), + Opcode(cmd_resetGameFlag), + Opcode(cmd_runNPCScript), + // 0x08 + Opcode(cmd_setSpecialExitList), + Opcode(cmd_blockInWalkableRegion), + Opcode(cmd_blockOutWalkableRegion), + Opcode(cmd_walkPlayerToPoint), + // 0x0c + Opcode(cmd_dropItemInScene), + Opcode(cmd_drawAnimShapeIntoScene), + Opcode(cmd_createMouseItem), + Opcode(cmd_savePageToDisk), + // 0x10 + Opcode(cmd_sceneAnimOn), + Opcode(cmd_sceneAnimOff), + Opcode(cmd_getElapsedSeconds), + Opcode(cmd_mouseIsPointer), + // 0x14 + Opcode(cmd_destroyMouseItem), + Opcode(cmd_runSceneAnimUntilDone), + Opcode(cmd_fadeSpecialPalette), + Opcode(cmd_playAdlibSound), + // 0x18 + Opcode(cmd_playAdlibScore), + Opcode(cmd_phaseInSameScene), + Opcode(cmd_setScenePhasingFlag), + Opcode(cmd_resetScenePhasingFlag), + // 0x1c + Opcode(cmd_queryScenePhasingFlag), + Opcode(cmd_sceneToDirection), + Opcode(cmd_setBirthstoneGem), + Opcode(cmd_placeItemInGenericMapScene), + // 0x20 + Opcode(cmd_setBrandonStatusBit), + Opcode(cmd_pauseSeconds), + Opcode(cmd_getCharactersLocation), + Opcode(cmd_runNPCSubscript), + // 0x24 + Opcode(cmd_magicOutMouseItem), + Opcode(cmd_internalAnimOn), + Opcode(cmd_forceBrandonToNormal), + Opcode(cmd_poisonDeathNow), + // 0x28 + Opcode(cmd_setScaleMode), + Opcode(cmd_openWSAFile), + Opcode(cmd_closeWSAFile), + Opcode(cmd_runWSAFromBeginningToEnd), + // 0x2c + Opcode(cmd_displayWSAFrame), + Opcode(cmd_enterNewScene), + Opcode(cmd_setSpecialEnterXAndY), + Opcode(cmd_runWSAFrames), + // 0x30 + Opcode(cmd_popBrandonIntoScene), + Opcode(cmd_restoreAllObjectBackgrounds), + Opcode(cmd_setCustomPaletteRange), + Opcode(cmd_loadPageFromDisk), + // 0x34 + Opcode(cmd_customPrintTalkString), + Opcode(cmd_restoreCustomPrintBackground), + Opcode(cmd_hideMouse), + Opcode(cmd_showMouse), + // 0x38 + Opcode(cmd_getCharacterX), + Opcode(cmd_getCharacterY), + Opcode(cmd_changeCharactersFacing), + Opcode(cmd_copyWSARegion), + // 0x3c + Opcode(cmd_printText), + Opcode(cmd_random), + Opcode(cmd_loadSoundFile), + Opcode(cmd_displayWSAFrameOnHidPage), + // 0x40 + Opcode(cmd_displayWSASequentialFrames), + Opcode(cmd_drawCharacterStanding), + Opcode(cmd_internalAnimOff), + Opcode(cmd_changeCharactersXAndY), + // 0x44 + Opcode(cmd_clearSceneAnimatorBeacon), + Opcode(cmd_querySceneAnimatorBeacon), + Opcode(cmd_refreshSceneAnimator), + Opcode(cmd_placeItemInOffScene), + // 0x48 + Opcode(cmd_wipeDownMouseItem), + Opcode(cmd_placeCharacterInOtherScene), + Opcode(cmd_getKey), + Opcode(cmd_specificItemInInventory), + // 0x4c + Opcode(cmd_popMobileNPCIntoScene), + Opcode(cmd_mobileCharacterInScene), + Opcode(cmd_hideMobileCharacter), + Opcode(cmd_unhideMobileCharacter), + // 0x50 + Opcode(cmd_setCharactersLocation), + Opcode(cmd_walkCharacterToPoint), + Opcode(cmd_specialEventDisplayBrynnsNote), + Opcode(cmd_specialEventRemoveBrynnsNote), + // 0x54 + Opcode(cmd_setLogicPage), + Opcode(cmd_fatPrint), + Opcode(cmd_preserveAllObjectBackgrounds), + Opcode(cmd_updateSceneAnimations), + // 0x58 + Opcode(cmd_sceneAnimationActive), + Opcode(cmd_setCharactersMovementDelay), + Opcode(cmd_getCharactersFacing), + Opcode(cmd_bkgdScrollSceneAndMasksRight), + // 0x5c + Opcode(cmd_dispelMagicAnimation), + Opcode(cmd_findBrightestFireberry), + Opcode(cmd_setFireberryGlowPalette), + Opcode(cmd_setDeathHandlerFlag), + // 0x60 + Opcode(cmd_drinkPotionAnimation), + Opcode(cmd_makeAmuletAppear), + Opcode(cmd_drawItemShapeIntoScene), + Opcode(cmd_setCharactersCurrentFrame), + // 0x64 + Opcode(cmd_waitForConfirmationMouseClick), + Opcode(cmd_pageFlip), + Opcode(cmd_setSceneFile), + Opcode(cmd_getItemInMarbleVase), + // 0x68 + Opcode(cmd_setItemInMarbleVase), + Opcode(cmd_addItemToInventory), + Opcode(cmd_intPrint), + Opcode(cmd_shakeScreen), + // 0x6c + Opcode(cmd_createAmuletJewel), + Opcode(cmd_setSceneAnimCurrXY), + Opcode(cmd_poisonBrandonAndRemaps), + Opcode(cmd_fillFlaskWithWater), + // 0x70 + Opcode(cmd_getCharactersMovementDelay), + Opcode(cmd_getBirthstoneGem), + Opcode(cmd_queryBrandonStatusBit), + Opcode(cmd_playFluteAnimation), + // 0x74 + Opcode(cmd_playWinterScrollSequence), + Opcode(cmd_getIdolGem), + Opcode(cmd_setIdolGem), + Opcode(cmd_totalItemsInScene), + // 0x78 + Opcode(cmd_restoreBrandonsMovementDelay), + Opcode(cmd_setMousePos), + Opcode(cmd_getMouseState), + Opcode(cmd_setEntranceMouseCursorTrack), + // 0x7c + Opcode(cmd_itemAppearsOnGround), + Opcode(cmd_setNoDrawShapesFlag), + Opcode(cmd_fadeEntirePalette), + Opcode(cmd_itemOnGroundHere), + // 0x80 + Opcode(cmd_queryCauldronState), + Opcode(cmd_setCauldronState), + Opcode(cmd_queryCrystalState), + Opcode(cmd_setCrystalState), + // 0x84 + Opcode(cmd_setPaletteRange), + Opcode(cmd_shrinkBrandonDown), + Opcode(cmd_growBrandonUp), + Opcode(cmd_setBrandonScaleXAndY), + // 0x88 + Opcode(cmd_resetScaleMode), + Opcode(cmd_getScaleDepthTableValue), + Opcode(cmd_setScaleDepthTableValue), + Opcode(cmd_message), + // 0x8c + Opcode(cmd_checkClickOnNPC), + Opcode(cmd_getFoyerItem), + Opcode(cmd_setFoyerItem), + Opcode(cmd_setNoItemDropRegion), + // 0x90 + Opcode(cmd_walkMalcolmOn), + Opcode(cmd_passiveProtection), + Opcode(cmd_setPlayingLoop), + Opcode(cmd_brandonToStoneSequence), + // 0x94 + Opcode(cmd_brandonHealingSequence), + Opcode(cmd_protectCommandLine), + Opcode(cmd_pauseMusicSeconds), + Opcode(cmd_resetMaskRegion), + // 0x98 + Opcode(cmd_setPaletteChangeFlag), + Opcode(cmd_fillRect), + Opcode(cmd_vocUnload), + Opcode(cmd_vocLoad), + Opcode(cmd_dummy) + }; + + _opcodeTable = opcodeTable; + _opcodeTableSize = ARRAYSIZE(opcodeTable); +} +#undef Opcode const char *KyraEngine::_musicFiles[] = { "INTRO", |