aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/kyra/kyra.cpp2
-rw-r--r--engines/kyra/kyra.h5
-rw-r--r--engines/kyra/resource.cpp1
-rw-r--r--engines/kyra/sound_adlib.cpp295
-rw-r--r--engines/kyra/staticres.cpp404
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",