diff options
Diffstat (limited to 'engines/kyra/script_v2.cpp')
-rw-r--r-- | engines/kyra/script_v2.cpp | 245 |
1 files changed, 245 insertions, 0 deletions
diff --git a/engines/kyra/script_v2.cpp b/engines/kyra/script_v2.cpp index d45f07c360..3fb62b84d8 100644 --- a/engines/kyra/script_v2.cpp +++ b/engines/kyra/script_v2.cpp @@ -1252,6 +1252,251 @@ int KyraEngine_v2::o2t_setShapeFlag(ScriptState *script) { return 0; } +#pragma mark - + +typedef Functor1Mem<ScriptState*, int, KyraEngine_v2> OpcodeV2; +#define Opcode(x) OpcodeV2(this, &KyraEngine_v2::x) +#define OpcodeUnImpl() OpcodeV2(this, 0) +void KyraEngine_v2::setupOpcodeTable() { + static const OpcodeV2 opcodeTable[] = { + // 0x00 + Opcode(o2_setCharacterFacingRefresh), + Opcode(o2_setCharacterPos), + Opcode(o2_defineObject), + Opcode(o2_refreshCharacter), + // 0x04 + Opcode(o2_getCharacterX), + Opcode(o2_getCharacterY), + Opcode(o2_getCharacterFacing), + Opcode(o2_getCharacterScene), + // 0x08 + Opcode(o2_setSceneComment), + OpcodeUnImpl(), + OpcodeUnImpl(), + Opcode(o2_setCharacterAnimFrame), + // 0x0c + OpcodeUnImpl(), + Opcode(o2_trySceneChange), + OpcodeUnImpl(), + OpcodeUnImpl(), + // 0x10 + OpcodeUnImpl(), + Opcode(o2_showChapterMessage), + OpcodeUnImpl(), + OpcodeUnImpl(), + // 0x14 + Opcode(o2_wsaClose), + OpcodeUnImpl(), + OpcodeUnImpl(), + Opcode(o2_displayWsaFrame), + // 0x18 + Opcode(o2_displayWsaSequentialFramesLooping), + Opcode(o2_wsaOpen), + Opcode(o2_displayWsaSequentialFrames), + Opcode(o2_displayWsaSequence), + // 0x1c + OpcodeUnImpl(), + OpcodeUnImpl(), + Opcode(o2_addItemToCurScene), + OpcodeUnImpl(), + // 0x20 + Opcode(o2_checkForItem), + OpcodeUnImpl(), + OpcodeUnImpl(), + Opcode(o2_defineItem), + // 0x24 + Opcode(o2_removeItemFromInventory), + Opcode(o2_countItemInInventory), + OpcodeUnImpl(), + Opcode(o2_queryGameFlag), + // 0x28 + Opcode(o2_resetGameFlag), + Opcode(o2_setGameFlag), + Opcode(o2_setHandItem), + Opcode(o2_removeHandItem), + // 0x2c + Opcode(o2_handItemSet), + Opcode(o2_hideMouse), + Opcode(o2_addSpecialExit), + Opcode(o2_setMousePos), + // 0x30 + Opcode(o2_showMouse), + OpcodeUnImpl(), + OpcodeUnImpl(), + OpcodeUnImpl(), + // 0x34 + OpcodeUnImpl(), + Opcode(o2_playSoundEffect), + Opcode(o2_delaySecs), + Opcode(o2_delay), + // 0x38 + Opcode(o2_dummy), + OpcodeUnImpl(), + Opcode(o2_setScaleTableItem), + Opcode(o2_setDrawLayerTableItem), + // 0x3c + Opcode(o2_setCharPalEntry), + OpcodeUnImpl(), + Opcode(o2_drawSceneShape), + Opcode(o2_drawSceneShapeOnPage), + // 0x40 + Opcode(o2_disableAnimObject), + Opcode(o2_enableAnimObject), + Opcode(o2_dummy), + OpcodeUnImpl(), + // 0x44 + OpcodeUnImpl(), + Opcode(o2_restoreBackBuffer), + OpcodeUnImpl(), + OpcodeUnImpl(), + // 0x48 + OpcodeUnImpl(), + OpcodeUnImpl(), + OpcodeUnImpl(), + Opcode(o2_update), + // 0x4c + OpcodeUnImpl(), + Opcode(o2_fadeScenePal), + Opcode(o2_dummy), + Opcode(o2_dummy), + // 0x50 + Opcode(o2_enterNewSceneEx), + Opcode(o2_switchScene), + Opcode(o2_getShapeFlag1), + OpcodeUnImpl(), + // 0x54 + OpcodeUnImpl(), + Opcode(o2_setLayerFlag), + Opcode(o2_setZanthiaPos), + Opcode(o2_loadMusicTrack), + // 0x58 + Opcode(o2_playWanderScoreViaMap), + Opcode(o2_playSoundEffect), + OpcodeUnImpl(), + OpcodeUnImpl(), + // 0x5c + OpcodeUnImpl(), + OpcodeUnImpl(), + OpcodeUnImpl(), + OpcodeUnImpl(), + // 0x60 + Opcode(o2_getRand), + OpcodeUnImpl(), + OpcodeUnImpl(), + Opcode(o2_setDrawNoShapeFlag), + // 0x64 + OpcodeUnImpl(), + Opcode(o2_showLetter), + OpcodeUnImpl(), + Opcode(o2_fillRect), + // 0x68 + OpcodeUnImpl(), + OpcodeUnImpl(), + OpcodeUnImpl(), + OpcodeUnImpl(), + // 0x6c + Opcode(o2_encodeShape), + Opcode(o2_defineRoomEntrance), + Opcode(o2_runTemporaryScript), + Opcode(o2_setSpecialSceneScriptRunTime), + // 0x70 + Opcode(o2_defineSceneAnim), + Opcode(o2_updateSceneAnim), + Opcode(o2_updateSceneAnim), + Opcode(o2_setSceneAnimPosAndUpdate), + // 0x74 + Opcode(o2_useItemOnMainChar), + Opcode(o2_startDialogue), + Opcode(o2_zanthRandomChat), + Opcode(o2_setupDialogue), + // 0x78 + Opcode(o2_getDlgIndex), + Opcode(o2_defineRoom), + Opcode(o2_addCauldronStateTableEntry), + Opcode(o2_setCountDown), + // 0x7c + Opcode(o2_getCountDown), + Opcode(o2_dummy), + Opcode(o2_dummy), + Opcode(o2_pressColorKey), + // 0x80 + Opcode(o2_objectChat), + Opcode(o2_chapterChange), + Opcode(o2_getColorCodeFlag1), + Opcode(o2_setColorCodeFlag1), + // 0x84 + Opcode(o2_getColorCodeFlag2), + Opcode(o2_setColorCodeFlag2), + Opcode(o2_getColorCodeValue), + Opcode(o2_setColorCodeValue), + // 0x88 + Opcode(o2_countItemInstances), + OpcodeUnImpl(), + Opcode(o2_initObject), + Opcode(o2_npcChat), + // 0x8c + Opcode(o2_deinitObject), + Opcode(o2_playTimSequence), + Opcode(o2_makeBookOrCauldronAppear), + Opcode(o2_setSpecialSceneScriptState), + // 0x90 + Opcode(o2_clearSpecialSceneScriptState), + Opcode(o2_querySpecialSceneScriptState), + Opcode(o2_resetInputColorCode), + Opcode(o2_setHiddenItemsEntry), + // 0x94 + Opcode(o2_getHiddenItemsEntry), + Opcode(o2_mushroomEffect), + Opcode(o2_wsaClose), + OpcodeUnImpl(), + // 0x98 + Opcode(o2_customChat), + Opcode(o2_customChatFinish), + OpcodeUnImpl(), + Opcode(o2_stopSceneAnimation), + // 0x9c + OpcodeUnImpl(), + OpcodeUnImpl(), + OpcodeUnImpl(), + Opcode(o2_processPaletteIndex), + // 0xa0 + OpcodeUnImpl(), + OpcodeUnImpl(), + OpcodeUnImpl(), + Opcode(o2_getBoolFromStack), + // 0xa4 + OpcodeUnImpl(), + OpcodeUnImpl(), + OpcodeUnImpl(), + Opcode(o2_setVocHigh), + // 0xa8 + Opcode(o2_getVocHigh), + Opcode(o2_zanthiaChat), + Opcode(o2_isVoiceEnabled), + Opcode(o2_isVoicePlaying), + // 0xac + Opcode(o2_stopVoicePlaying), + Opcode(o2_getGameLanguage), + Opcode(o2_dummy), + Opcode(o2_dummy), + }; + + for (int i = 0; i < ARRAYSIZE(opcodeTable); ++i) + _opcodes.push_back(&opcodeTable[i]); + + static const OpcodeV2 opcodeTemporaryTable[] = { + Opcode(o2t_defineNewShapes), + Opcode(o2t_setCurrentFrame), + Opcode(o2t_playSoundEffect), + Opcode(o2t_fadeScenePal), + Opcode(o2t_setShapeFlag), + Opcode(o2_dummy) + }; + + for (int i = 0; i < ARRAYSIZE(opcodeTemporaryTable); ++i) + _opcodesTemporary.push_back(&opcodeTemporaryTable[i]); +} + } // end of namespace Kyra |