diff options
-rw-r--r-- | engines/kyra/kyra.cpp | 4 | ||||
-rw-r--r-- | engines/kyra/kyra_v2.cpp | 8 | ||||
-rw-r--r-- | engines/kyra/kyra_v3.cpp | 4 | ||||
-rw-r--r-- | engines/kyra/script_v1.cpp | 405 | ||||
-rw-r--r-- | engines/kyra/script_v2.cpp | 500 | ||||
-rw-r--r-- | engines/kyra/script_v3.cpp | 476 |
6 files changed, 702 insertions, 695 deletions
diff --git a/engines/kyra/kyra.cpp b/engines/kyra/kyra.cpp index 2b09567b55..5ee2c1ed0c 100644 --- a/engines/kyra/kyra.cpp +++ b/engines/kyra/kyra.cpp @@ -189,6 +189,10 @@ int KyraEngine::init() { } KyraEngine::~KyraEngine() { + for (Common::Array<const Opcode*>::iterator i = _opcodes.begin(); i != _opcodes.end(); ++i) + delete *i; + _opcodes.clear(); + delete _res; delete _staticres; delete _sound; diff --git a/engines/kyra/kyra_v2.cpp b/engines/kyra/kyra_v2.cpp index 8f48e2896e..4ee81eb070 100644 --- a/engines/kyra/kyra_v2.cpp +++ b/engines/kyra/kyra_v2.cpp @@ -176,6 +176,14 @@ KyraEngine_v2::~KyraEngine_v2() { for (int i = 0; i < 19; i++) delete [] _conversationState[i]; delete [] _conversationState; + + for (Common::Array<const Opcode*>::iterator i = _opcodesTemporary.begin(); i != _opcodesTemporary.end(); ++i) + delete *i; + _opcodesTemporary.clear(); + + for (Common::Array<const TIMOpcode*>::iterator i = _timOpcodes.begin(); i != _timOpcodes.end(); ++i) + delete *i; + _timOpcodes.clear(); } Movie *KyraEngine_v2::createWSAMovie() { diff --git a/engines/kyra/kyra_v3.cpp b/engines/kyra/kyra_v3.cpp index ef0cb41367..f6250693c5 100644 --- a/engines/kyra/kyra_v3.cpp +++ b/engines/kyra/kyra_v3.cpp @@ -156,6 +156,10 @@ KyraEngine_v3::~KyraEngine_v3() { delete [] _sceneStrings; delete [] _talkObjectList; delete [] _moveFacingTable; + + for (Common::Array<const Opcode*>::iterator i = _opcodesTemporary.begin(); i != _opcodesTemporary.end(); ++i) + delete *i; + _opcodesTemporary.clear(); } int KyraEngine_v3::init() { diff --git a/engines/kyra/script_v1.cpp b/engines/kyra/script_v1.cpp index 901812e8e5..226bf140d9 100644 --- a/engines/kyra/script_v1.cpp +++ b/engines/kyra/script_v1.cpp @@ -1821,210 +1821,209 @@ int KyraEngine_v1::o1_dummy(ScriptState *script) { #pragma mark - typedef Functor1Mem<ScriptState*, int, KyraEngine_v1> OpcodeV1; -#define Opcode(x) OpcodeV1(this, &KyraEngine_v1::x) +#define SetOpcodeTable(x) table = &x; +#define Opcode(x) table->push_back(new OpcodeV1(this, &KyraEngine_v1::x)) void KyraEngine_v1::setupOpcodeTable() { - static const OpcodeV1 opcodeTable[] = { - // 0x00 - Opcode(o1_magicInMouseItem), - Opcode(o1_characterSays), - Opcode(o1_pauseTicks), - Opcode(o1_drawSceneAnimShape), - // 0x04 - Opcode(o1_queryGameFlag), - Opcode(o1_setGameFlag), - Opcode(o1_resetGameFlag), - Opcode(o1_runNPCScript), - // 0x08 - Opcode(o1_setSpecialExitList), - Opcode(o1_blockInWalkableRegion), - Opcode(o1_blockOutWalkableRegion), - Opcode(o1_walkPlayerToPoint), - // 0x0c - Opcode(o1_dropItemInScene), - Opcode(o1_drawAnimShapeIntoScene), - Opcode(o1_createMouseItem), - Opcode(o1_savePageToDisk), - // 0x10 - Opcode(o1_sceneAnimOn), - Opcode(o1_sceneAnimOff), - Opcode(o1_getElapsedSeconds), - Opcode(o1_mouseIsPointer), - // 0x14 - Opcode(o1_destroyMouseItem), - Opcode(o1_runSceneAnimUntilDone), - Opcode(o1_fadeSpecialPalette), - Opcode(o1_playAdlibSound), - // 0x18 - Opcode(o1_playAdlibScore), - Opcode(o1_phaseInSameScene), - Opcode(o1_setScenePhasingFlag), - Opcode(o1_resetScenePhasingFlag), - // 0x1c - Opcode(o1_queryScenePhasingFlag), - Opcode(o1_sceneToDirection), - Opcode(o1_setBirthstoneGem), - Opcode(o1_placeItemInGenericMapScene), - // 0x20 - Opcode(o1_setBrandonStatusBit), - Opcode(o1_pauseSeconds), - Opcode(o1_getCharactersLocation), - Opcode(o1_runNPCSubscript), - // 0x24 - Opcode(o1_magicOutMouseItem), - Opcode(o1_internalAnimOn), - Opcode(o1_forceBrandonToNormal), - Opcode(o1_poisonDeathNow), - // 0x28 - Opcode(o1_setScaleMode), - Opcode(o1_openWSAFile), - Opcode(o1_closeWSAFile), - Opcode(o1_runWSAFromBeginningToEnd), - // 0x2c - Opcode(o1_displayWSAFrame), - Opcode(o1_enterNewScene), - Opcode(o1_setSpecialEnterXAndY), - Opcode(o1_runWSAFrames), - // 0x30 - Opcode(o1_popBrandonIntoScene), - Opcode(o1_restoreAllObjectBackgrounds), - Opcode(o1_setCustomPaletteRange), - Opcode(o1_loadPageFromDisk), - // 0x34 - Opcode(o1_customPrintTalkString), - Opcode(o1_restoreCustomPrintBackground), - Opcode(o1_hideMouse), - Opcode(o1_showMouse), - // 0x38 - Opcode(o1_getCharacterX), - Opcode(o1_getCharacterY), - Opcode(o1_changeCharactersFacing), - Opcode(o1_copyWSARegion), - // 0x3c - Opcode(o1_printText), - Opcode(o1_random), - Opcode(o1_loadSoundFile), - Opcode(o1_displayWSAFrameOnHidPage), - // 0x40 - Opcode(o1_displayWSASequentialFrames), - Opcode(o1_drawCharacterStanding), - Opcode(o1_internalAnimOff), - Opcode(o1_changeCharactersXAndY), - // 0x44 - Opcode(o1_clearSceneAnimatorBeacon), - Opcode(o1_querySceneAnimatorBeacon), - Opcode(o1_refreshSceneAnimator), - Opcode(o1_placeItemInOffScene), - // 0x48 - Opcode(o1_wipeDownMouseItem), - Opcode(o1_placeCharacterInOtherScene), - Opcode(o1_getKey), - Opcode(o1_specificItemInInventory), - // 0x4c - Opcode(o1_popMobileNPCIntoScene), - Opcode(o1_mobileCharacterInScene), - Opcode(o1_hideMobileCharacter), - Opcode(o1_unhideMobileCharacter), - // 0x50 - Opcode(o1_setCharactersLocation), - Opcode(o1_walkCharacterToPoint), - Opcode(o1_specialEventDisplayBrynnsNote), - Opcode(o1_specialEventRemoveBrynnsNote), - // 0x54 - Opcode(o1_setLogicPage), - Opcode(o1_fatPrint), - Opcode(o1_preserveAllObjectBackgrounds), - Opcode(o1_updateSceneAnimations), - // 0x58 - Opcode(o1_sceneAnimationActive), - Opcode(o1_setCharactersMovementDelay), - Opcode(o1_getCharactersFacing), - Opcode(o1_bkgdScrollSceneAndMasksRight), - // 0x5c - Opcode(o1_dispelMagicAnimation), - Opcode(o1_findBrightestFireberry), - Opcode(o1_setFireberryGlowPalette), - Opcode(o1_setDeathHandlerFlag), - // 0x60 - Opcode(o1_drinkPotionAnimation), - Opcode(o1_makeAmuletAppear), - Opcode(o1_drawItemShapeIntoScene), - Opcode(o1_setCharactersCurrentFrame), - // 0x64 - Opcode(o1_waitForConfirmationMouseClick), - Opcode(o1_pageFlip), - Opcode(o1_setSceneFile), - Opcode(o1_getItemInMarbleVase), - // 0x68 - Opcode(o1_setItemInMarbleVase), - Opcode(o1_addItemToInventory), - Opcode(o1_intPrint), - Opcode(o1_shakeScreen), - // 0x6c - Opcode(o1_createAmuletJewel), - Opcode(o1_setSceneAnimCurrXY), - Opcode(o1_poisonBrandonAndRemaps), - Opcode(o1_fillFlaskWithWater), - // 0x70 - Opcode(o1_getCharactersMovementDelay), - Opcode(o1_getBirthstoneGem), - Opcode(o1_queryBrandonStatusBit), - Opcode(o1_playFluteAnimation), - // 0x74 - Opcode(o1_playWinterScrollSequence), - Opcode(o1_getIdolGem), - Opcode(o1_setIdolGem), - Opcode(o1_totalItemsInScene), - // 0x78 - Opcode(o1_restoreBrandonsMovementDelay), - Opcode(o1_setMousePos), - Opcode(o1_getMouseState), - Opcode(o1_setEntranceMouseCursorTrack), - // 0x7c - Opcode(o1_itemAppearsOnGround), - Opcode(o1_setNoDrawShapesFlag), - Opcode(o1_fadeEntirePalette), - Opcode(o1_itemOnGroundHere), - // 0x80 - Opcode(o1_queryCauldronState), - Opcode(o1_setCauldronState), - Opcode(o1_queryCrystalState), - Opcode(o1_setCrystalState), - // 0x84 - Opcode(o1_setPaletteRange), - Opcode(o1_shrinkBrandonDown), - Opcode(o1_growBrandonUp), - Opcode(o1_setBrandonScaleXAndY), - // 0x88 - Opcode(o1_resetScaleMode), - Opcode(o1_getScaleDepthTableValue), - Opcode(o1_setScaleDepthTableValue), - Opcode(o1_message), - // 0x8c - Opcode(o1_checkClickOnNPC), - Opcode(o1_getFoyerItem), - Opcode(o1_setFoyerItem), - Opcode(o1_setNoItemDropRegion), - // 0x90 - Opcode(o1_walkMalcolmOn), - Opcode(o1_passiveProtection), - Opcode(o1_setPlayingLoop), - Opcode(o1_brandonToStoneSequence), - // 0x94 - Opcode(o1_brandonHealingSequence), - Opcode(o1_protectCommandLine), - Opcode(o1_pauseMusicSeconds), - Opcode(o1_resetMaskRegion), - // 0x98 - Opcode(o1_setPaletteChangeFlag), - Opcode(o1_fillRect), - Opcode(o1_vocUnload), - Opcode(o1_vocLoad), - // 0x9c - Opcode(o1_dummy) - }; - - for (int i = 0; i < ARRAYSIZE(opcodeTable); ++i) - _opcodes.push_back(&opcodeTable[i]); + Common::Array<const Opcode *> *table = 0; + + SetOpcodeTable(_opcodes); + // 0x00 + Opcode(o1_magicInMouseItem); + Opcode(o1_characterSays); + Opcode(o1_pauseTicks); + Opcode(o1_drawSceneAnimShape); + // 0x04 + Opcode(o1_queryGameFlag); + Opcode(o1_setGameFlag); + Opcode(o1_resetGameFlag); + Opcode(o1_runNPCScript); + // 0x08 + Opcode(o1_setSpecialExitList); + Opcode(o1_blockInWalkableRegion); + Opcode(o1_blockOutWalkableRegion); + Opcode(o1_walkPlayerToPoint); + // 0x0c + Opcode(o1_dropItemInScene); + Opcode(o1_drawAnimShapeIntoScene); + Opcode(o1_createMouseItem); + Opcode(o1_savePageToDisk); + // 0x10 + Opcode(o1_sceneAnimOn); + Opcode(o1_sceneAnimOff); + Opcode(o1_getElapsedSeconds); + Opcode(o1_mouseIsPointer); + // 0x14 + Opcode(o1_destroyMouseItem); + Opcode(o1_runSceneAnimUntilDone); + Opcode(o1_fadeSpecialPalette); + Opcode(o1_playAdlibSound); + // 0x18 + Opcode(o1_playAdlibScore); + Opcode(o1_phaseInSameScene); + Opcode(o1_setScenePhasingFlag); + Opcode(o1_resetScenePhasingFlag); + // 0x1c + Opcode(o1_queryScenePhasingFlag); + Opcode(o1_sceneToDirection); + Opcode(o1_setBirthstoneGem); + Opcode(o1_placeItemInGenericMapScene); + // 0x20 + Opcode(o1_setBrandonStatusBit); + Opcode(o1_pauseSeconds); + Opcode(o1_getCharactersLocation); + Opcode(o1_runNPCSubscript); + // 0x24 + Opcode(o1_magicOutMouseItem); + Opcode(o1_internalAnimOn); + Opcode(o1_forceBrandonToNormal); + Opcode(o1_poisonDeathNow); + // 0x28 + Opcode(o1_setScaleMode); + Opcode(o1_openWSAFile); + Opcode(o1_closeWSAFile); + Opcode(o1_runWSAFromBeginningToEnd); + // 0x2c + Opcode(o1_displayWSAFrame); + Opcode(o1_enterNewScene); + Opcode(o1_setSpecialEnterXAndY); + Opcode(o1_runWSAFrames); + // 0x30 + Opcode(o1_popBrandonIntoScene); + Opcode(o1_restoreAllObjectBackgrounds); + Opcode(o1_setCustomPaletteRange); + Opcode(o1_loadPageFromDisk); + // 0x34 + Opcode(o1_customPrintTalkString); + Opcode(o1_restoreCustomPrintBackground); + Opcode(o1_hideMouse); + Opcode(o1_showMouse); + // 0x38 + Opcode(o1_getCharacterX); + Opcode(o1_getCharacterY); + Opcode(o1_changeCharactersFacing); + Opcode(o1_copyWSARegion); + // 0x3c + Opcode(o1_printText); + Opcode(o1_random); + Opcode(o1_loadSoundFile); + Opcode(o1_displayWSAFrameOnHidPage); + // 0x40 + Opcode(o1_displayWSASequentialFrames); + Opcode(o1_drawCharacterStanding); + Opcode(o1_internalAnimOff); + Opcode(o1_changeCharactersXAndY); + // 0x44 + Opcode(o1_clearSceneAnimatorBeacon); + Opcode(o1_querySceneAnimatorBeacon); + Opcode(o1_refreshSceneAnimator); + Opcode(o1_placeItemInOffScene); + // 0x48 + Opcode(o1_wipeDownMouseItem); + Opcode(o1_placeCharacterInOtherScene); + Opcode(o1_getKey); + Opcode(o1_specificItemInInventory); + // 0x4c + Opcode(o1_popMobileNPCIntoScene); + Opcode(o1_mobileCharacterInScene); + Opcode(o1_hideMobileCharacter); + Opcode(o1_unhideMobileCharacter); + // 0x50 + Opcode(o1_setCharactersLocation); + Opcode(o1_walkCharacterToPoint); + Opcode(o1_specialEventDisplayBrynnsNote); + Opcode(o1_specialEventRemoveBrynnsNote); + // 0x54 + Opcode(o1_setLogicPage); + Opcode(o1_fatPrint); + Opcode(o1_preserveAllObjectBackgrounds); + Opcode(o1_updateSceneAnimations); + // 0x58 + Opcode(o1_sceneAnimationActive); + Opcode(o1_setCharactersMovementDelay); + Opcode(o1_getCharactersFacing); + Opcode(o1_bkgdScrollSceneAndMasksRight); + // 0x5c + Opcode(o1_dispelMagicAnimation); + Opcode(o1_findBrightestFireberry); + Opcode(o1_setFireberryGlowPalette); + Opcode(o1_setDeathHandlerFlag); + // 0x60 + Opcode(o1_drinkPotionAnimation); + Opcode(o1_makeAmuletAppear); + Opcode(o1_drawItemShapeIntoScene); + Opcode(o1_setCharactersCurrentFrame); + // 0x64 + Opcode(o1_waitForConfirmationMouseClick); + Opcode(o1_pageFlip); + Opcode(o1_setSceneFile); + Opcode(o1_getItemInMarbleVase); + // 0x68 + Opcode(o1_setItemInMarbleVase); + Opcode(o1_addItemToInventory); + Opcode(o1_intPrint); + Opcode(o1_shakeScreen); + // 0x6c + Opcode(o1_createAmuletJewel); + Opcode(o1_setSceneAnimCurrXY); + Opcode(o1_poisonBrandonAndRemaps); + Opcode(o1_fillFlaskWithWater); + // 0x70 + Opcode(o1_getCharactersMovementDelay); + Opcode(o1_getBirthstoneGem); + Opcode(o1_queryBrandonStatusBit); + Opcode(o1_playFluteAnimation); + // 0x74 + Opcode(o1_playWinterScrollSequence); + Opcode(o1_getIdolGem); + Opcode(o1_setIdolGem); + Opcode(o1_totalItemsInScene); + // 0x78 + Opcode(o1_restoreBrandonsMovementDelay); + Opcode(o1_setMousePos); + Opcode(o1_getMouseState); + Opcode(o1_setEntranceMouseCursorTrack); + // 0x7c + Opcode(o1_itemAppearsOnGround); + Opcode(o1_setNoDrawShapesFlag); + Opcode(o1_fadeEntirePalette); + Opcode(o1_itemOnGroundHere); + // 0x80 + Opcode(o1_queryCauldronState); + Opcode(o1_setCauldronState); + Opcode(o1_queryCrystalState); + Opcode(o1_setCrystalState); + // 0x84 + Opcode(o1_setPaletteRange); + Opcode(o1_shrinkBrandonDown); + Opcode(o1_growBrandonUp); + Opcode(o1_setBrandonScaleXAndY); + // 0x88 + Opcode(o1_resetScaleMode); + Opcode(o1_getScaleDepthTableValue); + Opcode(o1_setScaleDepthTableValue); + Opcode(o1_message); + // 0x8c + Opcode(o1_checkClickOnNPC); + Opcode(o1_getFoyerItem); + Opcode(o1_setFoyerItem); + Opcode(o1_setNoItemDropRegion); + // 0x90 + Opcode(o1_walkMalcolmOn); + Opcode(o1_passiveProtection); + Opcode(o1_setPlayingLoop); + Opcode(o1_brandonToStoneSequence); + // 0x94 + Opcode(o1_brandonHealingSequence); + Opcode(o1_protectCommandLine); + Opcode(o1_pauseMusicSeconds); + Opcode(o1_resetMaskRegion); + // 0x98 + Opcode(o1_setPaletteChangeFlag); + Opcode(o1_fillRect); + Opcode(o1_vocUnload); + Opcode(o1_vocLoad); + // 0x9c + Opcode(o1_dummy); } #undef Opcode diff --git a/engines/kyra/script_v2.cpp b/engines/kyra/script_v2.cpp index 13e3f02c3e..0c2f1d2c24 100644 --- a/engines/kyra/script_v2.cpp +++ b/engines/kyra/script_v2.cpp @@ -1873,262 +1873,258 @@ int KyraEngine_v2::t2_playSoundEffect(const TIM *tim, const uint16 *param) { #pragma mark - typedef Functor1Mem<ScriptState*, int, KyraEngine_v2> OpcodeV2; -#define Opcode(x) OpcodeV2(this, &KyraEngine_v2::x) -#define OpcodeUnImpl() OpcodeV2(this, 0) +#define SetOpcodeTable(x) table = &x; +#define Opcode(x) table->push_back(new OpcodeV2(this, &KyraEngine_v2::x)) +#define OpcodeUnImpl() table->push_back(new OpcodeV2(this, 0)) typedef Functor2Mem<const TIM*, const uint16*, int, KyraEngine_v2> TIMOpcodeV2; -#define OpcodeTim(x) TIMOpcodeV2(this, &KyraEngine_v2::x) -#define OpcodeTimUnImpl() TIMOpcodeV2(this, 0) +#define OpcodeTim(x) _timOpcodes.push_back(new TIMOpcodeV2(this, &KyraEngine_v2::x)) +#define OpcodeTimUnImpl() _timOpcodes.push_back(TIMOpcodeV2(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 - Opcode(o2_setCharacterFacing), - Opcode(o2_trySceneChange), - Opcode(o2_moveCharacter), - Opcode(o2_customCharacterChat), - // 0x10 - Opcode(o2_soundFadeOut), - Opcode(o2_showChapterMessage), - Opcode(o2_restoreTalkTextMessageBkgd), - OpcodeUnImpl(), - // 0x14 - Opcode(o2_wsaClose), - Opcode(o2_backUpScreen), - Opcode(o2_restoreScreen), - Opcode(o2_displayWsaFrame), - // 0x18 - Opcode(o2_displayWsaSequentialFramesLooping), - Opcode(o2_wsaOpen), - Opcode(o2_displayWsaSequentialFrames), - Opcode(o2_displayWsaSequence), - // 0x1c - Opcode(o2_addItemToInventory), - Opcode(o2_drawShape), - Opcode(o2_addItemToCurScene), - Opcode(o2_dummy), // the original used this opcode to limit the mouse range temporary, - // since that is of no use and not really important we just use a dummy here - // 0x20 - Opcode(o2_checkForItem), - Opcode(o2_loadSoundFile), - Opcode(o2_removeItemSlotFromInventory), - Opcode(o2_defineItem), - // 0x24 - Opcode(o2_removeItemFromInventory), - Opcode(o2_countItemInInventory), - Opcode(o2_countItemsInScene), - 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(), - Opcode(o2_wipeDownMouseItem), - Opcode(o2_getElapsedSecs), - // 0x34 - Opcode(o2_getTimerDelay), - Opcode(o2_playSoundEffect), - Opcode(o2_delaySecs), - Opcode(o2_delay), - // 0x38 - Opcode(o2_dummy), - Opcode(o2_setTimerDelay), - Opcode(o2_setScaleTableItem), - Opcode(o2_setDrawLayerTableItem), - // 0x3c - Opcode(o2_setCharPalEntry), - Opcode(o2_loadZShapes), - Opcode(o2_drawSceneShape), - Opcode(o2_drawSceneShapeOnPage), - // 0x40 - Opcode(o2_disableAnimObject), - Opcode(o2_enableAnimObject), - Opcode(o2_dummy), - Opcode(o2_loadPalette384), - // 0x44 - Opcode(o2_setPalette384), - Opcode(o2_restoreBackBuffer), - Opcode(o2_backUpInventoryGfx), - Opcode(o2_disableSceneAnim), - // 0x48 - Opcode(o2_enableSceneAnim), - Opcode(o2_restoreInventoryGfx), - Opcode(o2_setSceneAnimPos2), - Opcode(o2_update), - // 0x4c - OpcodeUnImpl(), - Opcode(o2_fadeScenePal), - Opcode(o2_dummy), - Opcode(o2_dummy), - // 0x50 - Opcode(o2_enterNewSceneEx), - Opcode(o2_switchScene), - Opcode(o2_getShapeFlag1), - Opcode(o2_setPathfinderFlag), - // 0x54 - Opcode(o2_getSceneExitToFacing), - Opcode(o2_setLayerFlag), - Opcode(o2_setZanthiaPos), - Opcode(o2_loadMusicTrack), - // 0x58 - Opcode(o2_playWanderScoreViaMap), - Opcode(o2_playSoundEffect), - Opcode(o2_setSceneAnimPos), - Opcode(o2_blockInRegion), - // 0x5c - Opcode(o2_blockOutRegion), - OpcodeUnImpl(), - Opcode(o2_setCauldronState), - Opcode(o2_showItemString), - // 0x60 - Opcode(o2_getRand), - Opcode(o2_isAnySoundPlaying), - Opcode(o2_setDeathHandlerFlag), - Opcode(o2_setDrawNoShapeFlag), - // 0x64 - Opcode(o2_setRunFlag), - Opcode(o2_showLetter), - OpcodeUnImpl(), - Opcode(o2_fillRect), - // 0x68 - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - Opcode(o2_waitForConfirmationClick), - // 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_addToSceneAnimPosAndUpdate), - // 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), - Opcode(o2_removeItemFromScene), - 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), - Opcode(o2_meanWhileScene), - // 0x98 - Opcode(o2_customChat), - Opcode(o2_customChatFinish), - Opcode(o2_setupSceneAnimation), - Opcode(o2_stopSceneAnimation), - // 0x9c - Opcode(o2_disableTimer), - Opcode(o2_enableTimer), - Opcode(o2_setTimerCountdown), - Opcode(o2_processPaletteIndex), - // 0xa0 - Opcode(o2_updateTwoSceneAnims), - Opcode(o2_getRainbowRoomData), - Opcode(o2_drawSceneShapeEx), - Opcode(o2_getBoolFromStack), - // 0xa4 - Opcode(o2_getSfxDriver), - Opcode(o2_getVocSupport), - Opcode(o2_getMusicDriver), - 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_demoFinale), - 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]); - - static const TIMOpcodeV2 timOpcodeTable[] = { - OpcodeTim(t2_initChat), - OpcodeTim(t2_updateSceneAnim), - OpcodeTim(t2_resetChat), - OpcodeTim(t2_playSoundEffect) - }; - - for (int i = 0; i < ARRAYSIZE(timOpcodeTable); ++i) - _timOpcodes.push_back(&timOpcodeTable[i]); + Common::Array<const Opcode*> *table = 0; + + SetOpcodeTable(_opcodes); + // 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 + Opcode(o2_setCharacterFacing); + Opcode(o2_trySceneChange); + Opcode(o2_moveCharacter); + Opcode(o2_customCharacterChat); + // 0x10 + Opcode(o2_soundFadeOut); + Opcode(o2_showChapterMessage); + Opcode(o2_restoreTalkTextMessageBkgd); + OpcodeUnImpl(); + // 0x14 + Opcode(o2_wsaClose); + Opcode(o2_backUpScreen); + Opcode(o2_restoreScreen); + Opcode(o2_displayWsaFrame); + // 0x18 + Opcode(o2_displayWsaSequentialFramesLooping); + Opcode(o2_wsaOpen); + Opcode(o2_displayWsaSequentialFrames); + Opcode(o2_displayWsaSequence); + // 0x1c + Opcode(o2_addItemToInventory); + Opcode(o2_drawShape); + Opcode(o2_addItemToCurScene); + Opcode(o2_dummy); // the original used this opcode to limit the mouse range temporary, + // since that is of no use and not really important we just use a dummy here + // 0x20 + Opcode(o2_checkForItem); + Opcode(o2_loadSoundFile); + Opcode(o2_removeItemSlotFromInventory); + Opcode(o2_defineItem); + // 0x24 + Opcode(o2_removeItemFromInventory); + Opcode(o2_countItemInInventory); + Opcode(o2_countItemsInScene); + 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(); + Opcode(o2_wipeDownMouseItem); + Opcode(o2_getElapsedSecs); + // 0x34 + Opcode(o2_getTimerDelay); + Opcode(o2_playSoundEffect); + Opcode(o2_delaySecs); + Opcode(o2_delay); + // 0x38 + Opcode(o2_dummy); + Opcode(o2_setTimerDelay); + Opcode(o2_setScaleTableItem); + Opcode(o2_setDrawLayerTableItem); + // 0x3c + Opcode(o2_setCharPalEntry); + Opcode(o2_loadZShapes); + Opcode(o2_drawSceneShape); + Opcode(o2_drawSceneShapeOnPage); + // 0x40 + Opcode(o2_disableAnimObject); + Opcode(o2_enableAnimObject); + Opcode(o2_dummy); + Opcode(o2_loadPalette384); + // 0x44 + Opcode(o2_setPalette384); + Opcode(o2_restoreBackBuffer); + Opcode(o2_backUpInventoryGfx); + Opcode(o2_disableSceneAnim); + // 0x48 + Opcode(o2_enableSceneAnim); + Opcode(o2_restoreInventoryGfx); + Opcode(o2_setSceneAnimPos2); + Opcode(o2_update); + // 0x4c + OpcodeUnImpl(); + Opcode(o2_fadeScenePal); + Opcode(o2_dummy); + Opcode(o2_dummy); + // 0x50 + Opcode(o2_enterNewSceneEx); + Opcode(o2_switchScene); + Opcode(o2_getShapeFlag1); + Opcode(o2_setPathfinderFlag); + // 0x54 + Opcode(o2_getSceneExitToFacing); + Opcode(o2_setLayerFlag); + Opcode(o2_setZanthiaPos); + Opcode(o2_loadMusicTrack); + // 0x58 + Opcode(o2_playWanderScoreViaMap); + Opcode(o2_playSoundEffect); + Opcode(o2_setSceneAnimPos); + Opcode(o2_blockInRegion); + // 0x5c + Opcode(o2_blockOutRegion); + OpcodeUnImpl(); + Opcode(o2_setCauldronState); + Opcode(o2_showItemString); + // 0x60 + Opcode(o2_getRand); + Opcode(o2_isAnySoundPlaying); + Opcode(o2_setDeathHandlerFlag); + Opcode(o2_setDrawNoShapeFlag); + // 0x64 + Opcode(o2_setRunFlag); + Opcode(o2_showLetter); + OpcodeUnImpl(); + Opcode(o2_fillRect); + // 0x68 + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + Opcode(o2_waitForConfirmationClick); + // 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_addToSceneAnimPosAndUpdate); + // 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); + Opcode(o2_removeItemFromScene); + 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); + Opcode(o2_meanWhileScene); + // 0x98 + Opcode(o2_customChat); + Opcode(o2_customChatFinish); + Opcode(o2_setupSceneAnimation); + Opcode(o2_stopSceneAnimation); + // 0x9c + Opcode(o2_disableTimer); + Opcode(o2_enableTimer); + Opcode(o2_setTimerCountdown); + Opcode(o2_processPaletteIndex); + // 0xa0 + Opcode(o2_updateTwoSceneAnims); + Opcode(o2_getRainbowRoomData); + Opcode(o2_drawSceneShapeEx); + Opcode(o2_getBoolFromStack); + // 0xa4 + Opcode(o2_getSfxDriver); + Opcode(o2_getVocSupport); + Opcode(o2_getMusicDriver); + 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_demoFinale); + Opcode(o2_dummy); + + SetOpcodeTable(_opcodesTemporary); + + // 0x00 + Opcode(o2t_defineNewShapes); + Opcode(o2t_setCurrentFrame); + Opcode(o2t_playSoundEffect); + Opcode(o2t_fadeScenePal); + // 0x04 + Opcode(o2t_setShapeFlag); + Opcode(o2_dummy); + + // ---- TIM opcodes + + // 0x00 + OpcodeTim(t2_initChat); + OpcodeTim(t2_updateSceneAnim); + OpcodeTim(t2_resetChat); + OpcodeTim(t2_playSoundEffect); } } // end of namespace Kyra diff --git a/engines/kyra/script_v3.cpp b/engines/kyra/script_v3.cpp index 3aea21fca4..58fe9f9087 100644 --- a/engines/kyra/script_v3.cpp +++ b/engines/kyra/script_v3.cpp @@ -581,248 +581,244 @@ int KyraEngine_v3::o3t_getMalcolmShapes(ScriptState *script) { } typedef Functor1Mem<ScriptState*, int, KyraEngine_v3> OpcodeV3; -#define Opcode(x) OpcodeV3(this, &KyraEngine_v3::x) -#define OpcodeUnImpl() OpcodeV3(this, 0) +#define SetOpcodeTable(x) table = &x; +#define Opcode(x) table->push_back(new OpcodeV3(this, &KyraEngine_v3::x)) +#define OpcodeUnImpl() table->push_back(new OpcodeV3(this, 0)) void KyraEngine_v3::setupOpcodeTable() { - static const OpcodeV3 opcodeTable[] = { - // 0x00 - Opcode(o3_getMalcolmShapes), - Opcode(o3_setCharacterPos), - Opcode(o3_defineObject), - Opcode(o3_refreshCharacter), - // 0x04 - Opcode(o3_getCharacterX), - Opcode(o3_getCharacterY), - Opcode(o3_getCharacterFacing), - Opcode(o3_getCharacterScene), - // 0x08 - OpcodeUnImpl(), - Opcode(o3_dummy), - Opcode(o3_dummy), - OpcodeUnImpl(), - // 0x0c - OpcodeUnImpl(), - Opcode(o3_trySceneChange), - OpcodeUnImpl(), - OpcodeUnImpl(), - // 0x10 - OpcodeUnImpl(), - Opcode(o3_showSceneFileMessage), - Opcode(o3_dummy), - Opcode(o3_dummy), - // 0x14 - OpcodeUnImpl(), - Opcode(o3_showBadConscience), - Opcode(o3_dummy), - Opcode(o3_hideBadConscience), - // 0x18 - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - // 0x1c - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - Opcode(o3_objectChat), - // 0x20 - Opcode(o3_checkForItem), - Opcode(o3_dummy), - OpcodeUnImpl(), - Opcode(o3_defineItem), - // 0x24 - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - Opcode(o3_queryGameFlag), - // 0x28 - Opcode(o3_resetGameFlag), - Opcode(o3_setGameFlag), - OpcodeUnImpl(), - OpcodeUnImpl(), - // 0x2c - Opcode(o3_getHandItem), - Opcode(o3_hideMouse), - Opcode(o3_addSpecialExit), - Opcode(o3_setMousePos), - // 0x30 - Opcode(o3_showMouse), - Opcode(o3_badConscienceChat), - OpcodeUnImpl(), - Opcode(o3_dummy), - // 0x34 - OpcodeUnImpl(), - OpcodeUnImpl(), - Opcode(o3_dummy), - Opcode(o3_delay), - // 0x38 - OpcodeUnImpl(), - OpcodeUnImpl(), - Opcode(o3_setSceneFilename), - OpcodeUnImpl(), - // 0x3c - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - Opcode(o3_drawSceneShape), - // 0x40 - Opcode(o3_checkInRect), - OpcodeUnImpl(), - OpcodeUnImpl(), - Opcode(o3_dummy), - // 0x44 - Opcode(o3_dummy), - OpcodeUnImpl(), - OpcodeUnImpl(), - Opcode(o3_dummy), - // 0x48 - Opcode(o3_dummy), - Opcode(o3_dummy), - OpcodeUnImpl(), - Opcode(o3_update), - // 0x4c - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - // 0x50 - Opcode(o3_enterNewScene), - OpcodeUnImpl(), - OpcodeUnImpl(), - Opcode(o3_dummy), - // 0x54 - Opcode(o3_dummy), - Opcode(o3_dummy), - Opcode(o3_setMalcolmPos), - Opcode(o3_stopMusic), - // 0x58 - Opcode(o3_playMusicTrack), - Opcode(o3_playSoundEffect), - OpcodeUnImpl(), - OpcodeUnImpl(), - // 0x5c - OpcodeUnImpl(), - Opcode(o3_dummy), - OpcodeUnImpl(), - OpcodeUnImpl(), - // 0x60 - Opcode(o3_getRand), - Opcode(o3_dummy), - OpcodeUnImpl(), - OpcodeUnImpl(), - // 0x64 - OpcodeUnImpl(), - OpcodeUnImpl(), - Opcode(o3_dummy), - OpcodeUnImpl(), - // 0x68 - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - // 0x6c - Opcode(o3_dummy), - Opcode(o3_defineRoomEntrance), - OpcodeUnImpl(), - Opcode(o3_setSpecialSceneScriptRunTime), - // 0x70 - Opcode(o3_defineSceneAnim), - Opcode(o3_dummy), - Opcode(o3_updateSceneAnim), - Opcode(o3_dummy), - // 0x74 - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - // 0x78 - OpcodeUnImpl(), - Opcode(o3_defineScene), - OpcodeUnImpl(), - OpcodeUnImpl(), - // 0x7c - OpcodeUnImpl(), - OpcodeUnImpl(), - Opcode(o3_dummy), - Opcode(o3_dummy), - // 0x80 - Opcode(o3_dummy), - OpcodeUnImpl(), - Opcode(o3_dummy), - Opcode(o3_dummy), - // 0x84 - Opcode(o3_dummy), - Opcode(o3_dummy), - Opcode(o3_dummy), - Opcode(o3_dummy), - // 0x88 - OpcodeUnImpl(), - Opcode(o3_dummy), - OpcodeUnImpl(), - Opcode(o3_dummy), - // 0x8c - OpcodeUnImpl(), - Opcode(o3_dummy), - Opcode(o3_dummy), - Opcode(o3_setSpecialSceneScriptState), - // 0x90 - Opcode(o3_clearSpecialSceneScriptState), - Opcode(o3_querySpecialSceneScriptState), - Opcode(o3_dummy), - Opcode(o3_setHiddenItemsEntry), - // 0x94 - Opcode(o3_getHiddenItemsEntry), - Opcode(o3_dummy), - Opcode(o3_dummy), - OpcodeUnImpl(), - // 0x98 - OpcodeUnImpl(), - OpcodeUnImpl(), - Opcode(o3_setupSceneAnimObject), - Opcode(o3_removeSceneAnimObject), - // 0x9c - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - // 0xa0 - Opcode(o3_dummy), - Opcode(o3_dummy), - Opcode(o3_dummy), - Opcode(o3_dummy), - // 0xa4 - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - Opcode(o3_setVocHigh), - // 0xa8 - Opcode(o3_getVocHigh), - OpcodeUnImpl(), - OpcodeUnImpl(), - OpcodeUnImpl(), - // 0xac - OpcodeUnImpl(), - Opcode(o3_dummy), - OpcodeUnImpl(), - Opcode(o3_dummy), - }; - - for (int i = 0; i < ARRAYSIZE(opcodeTable); ++i) - _opcodes.push_back(&opcodeTable[i]); - - static const OpcodeV3 tempOpcodeTable[] = { - Opcode(o3t_defineNewShapes), - Opcode(o3t_setCurrentFrame), - Opcode(o3t_playSoundEffect), - Opcode(o3_dummy), - // 0x0a - OpcodeUnImpl(), - Opcode(o3_getRand), - Opcode(o3_dummy) - }; + Common::Array<const Opcode*> *table = 0; + + SetOpcodeTable(_opcodes); + // 0x00 + Opcode(o3_getMalcolmShapes); + Opcode(o3_setCharacterPos); + Opcode(o3_defineObject); + Opcode(o3_refreshCharacter); + // 0x04 + Opcode(o3_getCharacterX); + Opcode(o3_getCharacterY); + Opcode(o3_getCharacterFacing); + Opcode(o3_getCharacterScene); + // 0x08 + OpcodeUnImpl(); + Opcode(o3_dummy); + Opcode(o3_dummy); + OpcodeUnImpl(); + // 0x0c + OpcodeUnImpl(); + Opcode(o3_trySceneChange); + OpcodeUnImpl(); + OpcodeUnImpl(); + // 0x10 + OpcodeUnImpl(); + Opcode(o3_showSceneFileMessage); + Opcode(o3_dummy); + Opcode(o3_dummy); + // 0x14 + OpcodeUnImpl(); + Opcode(o3_showBadConscience); + Opcode(o3_dummy); + Opcode(o3_hideBadConscience); + // 0x18 + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + // 0x1c + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + Opcode(o3_objectChat); + // 0x20 + Opcode(o3_checkForItem); + Opcode(o3_dummy); + OpcodeUnImpl(); + Opcode(o3_defineItem); + // 0x24 + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + Opcode(o3_queryGameFlag); + // 0x28 + Opcode(o3_resetGameFlag); + Opcode(o3_setGameFlag); + OpcodeUnImpl(); + OpcodeUnImpl(); + // 0x2c + Opcode(o3_getHandItem); + Opcode(o3_hideMouse); + Opcode(o3_addSpecialExit); + Opcode(o3_setMousePos); + // 0x30 + Opcode(o3_showMouse); + Opcode(o3_badConscienceChat); + OpcodeUnImpl(); + Opcode(o3_dummy); + // 0x34 + OpcodeUnImpl(); + OpcodeUnImpl(); + Opcode(o3_dummy); + Opcode(o3_delay); + // 0x38 + OpcodeUnImpl(); + OpcodeUnImpl(); + Opcode(o3_setSceneFilename); + OpcodeUnImpl(); + // 0x3c + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + Opcode(o3_drawSceneShape); + // 0x40 + Opcode(o3_checkInRect); + OpcodeUnImpl(); + OpcodeUnImpl(); + Opcode(o3_dummy); + // 0x44 + Opcode(o3_dummy); + OpcodeUnImpl(); + OpcodeUnImpl(); + Opcode(o3_dummy); + // 0x48 + Opcode(o3_dummy); + Opcode(o3_dummy); + OpcodeUnImpl(); + Opcode(o3_update); + // 0x4c + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + // 0x50 + Opcode(o3_enterNewScene); + OpcodeUnImpl(); + OpcodeUnImpl(); + Opcode(o3_dummy); + // 0x54 + Opcode(o3_dummy); + Opcode(o3_dummy); + Opcode(o3_setMalcolmPos); + Opcode(o3_stopMusic); + // 0x58 + Opcode(o3_playMusicTrack); + Opcode(o3_playSoundEffect); + OpcodeUnImpl(); + OpcodeUnImpl(); + // 0x5c + OpcodeUnImpl(); + Opcode(o3_dummy); + OpcodeUnImpl(); + OpcodeUnImpl(); + // 0x60 + Opcode(o3_getRand); + Opcode(o3_dummy); + OpcodeUnImpl(); + OpcodeUnImpl(); + // 0x64 + OpcodeUnImpl(); + OpcodeUnImpl(); + Opcode(o3_dummy); + OpcodeUnImpl(); + // 0x68 + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + // 0x6c + Opcode(o3_dummy); + Opcode(o3_defineRoomEntrance); + OpcodeUnImpl(); + Opcode(o3_setSpecialSceneScriptRunTime); + // 0x70 + Opcode(o3_defineSceneAnim); + Opcode(o3_dummy); + Opcode(o3_updateSceneAnim); + Opcode(o3_dummy); + // 0x74 + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + // 0x78 + OpcodeUnImpl(); + Opcode(o3_defineScene); + OpcodeUnImpl(); + OpcodeUnImpl(); + // 0x7c + OpcodeUnImpl(); + OpcodeUnImpl(); + Opcode(o3_dummy); + Opcode(o3_dummy); + // 0x80 + Opcode(o3_dummy); + OpcodeUnImpl(); + Opcode(o3_dummy); + Opcode(o3_dummy); + // 0x84 + Opcode(o3_dummy); + Opcode(o3_dummy); + Opcode(o3_dummy); + Opcode(o3_dummy); + // 0x88 + OpcodeUnImpl(); + Opcode(o3_dummy); + OpcodeUnImpl(); + Opcode(o3_dummy); + // 0x8c + OpcodeUnImpl(); + Opcode(o3_dummy); + Opcode(o3_dummy); + Opcode(o3_setSpecialSceneScriptState); + // 0x90 + Opcode(o3_clearSpecialSceneScriptState); + Opcode(o3_querySpecialSceneScriptState); + Opcode(o3_dummy); + Opcode(o3_setHiddenItemsEntry); + // 0x94 + Opcode(o3_getHiddenItemsEntry); + Opcode(o3_dummy); + Opcode(o3_dummy); + OpcodeUnImpl(); + // 0x98 + OpcodeUnImpl(); + OpcodeUnImpl(); + Opcode(o3_setupSceneAnimObject); + Opcode(o3_removeSceneAnimObject); + // 0x9c + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + // 0xa0 + Opcode(o3_dummy); + Opcode(o3_dummy); + Opcode(o3_dummy); + Opcode(o3_dummy); + // 0xa4 + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + Opcode(o3_setVocHigh); + // 0xa8 + Opcode(o3_getVocHigh); + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + // 0xac + OpcodeUnImpl(); + Opcode(o3_dummy); + OpcodeUnImpl(); + Opcode(o3_dummy); - for (int i = 0; i < ARRAYSIZE(tempOpcodeTable); ++i) - _opcodesTemporary.push_back(&tempOpcodeTable[i]); + SetOpcodeTable(_opcodesTemporary); + // 0x00 + Opcode(o3t_defineNewShapes); + Opcode(o3t_setCurrentFrame); + Opcode(o3t_playSoundEffect); + Opcode(o3_dummy); + // 0x0a + OpcodeUnImpl(); + Opcode(o3_getRand); + Opcode(o3_dummy); } } // end of namespace Kyra |