aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/script_v2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/script_v2.cpp')
-rw-r--r--engines/kyra/script_v2.cpp245
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