diff options
author | Walter van Niftrik | 2018-12-27 12:56:47 +0100 |
---|---|---|
committer | Walter van Niftrik | 2018-12-27 12:56:47 +0100 |
commit | 52c66f5efdc236fde511431595ee3e44a4415b12 (patch) | |
tree | 7a6ddbf81c6e5a719854451698603ce726b7e87e | |
parent | 76a0c20481bd68d60d8347fd922a74b292421d51 (diff) | |
download | scummvm-rg350-52c66f5efdc236fde511431595ee3e44a4415b12.tar.gz scummvm-rg350-52c66f5efdc236fde511431595ee3e44a4415b12.tar.bz2 scummvm-rg350-52c66f5efdc236fde511431595ee3e44a4415b12.zip |
Revert "ADL: Refactor opcode tables"
This reverts commit 76a0c20481bd68d60d8347fd922a74b292421d51.
-rw-r--r-- | engines/adl/adl.cpp | 97 | ||||
-rw-r--r-- | engines/adl/adl.h | 8 | ||||
-rw-r--r-- | engines/adl/adl_v2.cpp | 109 | ||||
-rw-r--r-- | engines/adl/adl_v3.cpp | 4 | ||||
-rw-r--r-- | engines/adl/hires5.cpp | 109 | ||||
-rw-r--r-- | engines/adl/hires6.cpp | 110 |
6 files changed, 264 insertions, 173 deletions
diff --git a/engines/adl/adl.cpp b/engines/adl/adl.cpp index d752ab7ac5..f4f306aa8f 100644 --- a/engines/adl/adl.cpp +++ b/engines/adl/adl.cpp @@ -415,42 +415,69 @@ bool AdlEngine::isInputValid(const Commands &commands, byte verb, byte noun, boo return false; } +typedef Common::Functor1Mem<ScriptEnv &, int, AdlEngine> OpcodeV1; +#define SetOpcodeTable(x) table = &x; +#define Opcode(x) table->push_back(new OpcodeV1(this, &AdlEngine::x)) +#define OpcodeUnImpl() table->push_back(new OpcodeV1(this, 0)) + void AdlEngine::setupOpcodeTables() { - _condOpcodes.resize(0x0b); - _condOpcodes[0x03] = opcode(o1_isItemInRoom); - _condOpcodes[0x05] = opcode(o1_isMovesGT); - _condOpcodes[0x06] = opcode(o1_isVarEQ); - _condOpcodes[0x09] = opcode(o1_isCurPicEQ); - _condOpcodes[0x0a] = opcode(o1_isItemPicEQ); - - _actOpcodes.resize(0x1e); - _actOpcodes[0x01] = opcode(o1_varAdd); - _actOpcodes[0x02] = opcode(o1_varSub); - _actOpcodes[0x03] = opcode(o1_varSet); - _actOpcodes[0x04] = opcode(o1_listInv); - _actOpcodes[0x05] = opcode(o1_moveItem); - _actOpcodes[0x06] = opcode(o1_setRoom); - _actOpcodes[0x07] = opcode(o1_setCurPic); - _actOpcodes[0x08] = opcode(o1_setPic); - _actOpcodes[0x09] = opcode(o1_printMsg); - _actOpcodes[0x0a] = opcode(o1_setLight); - _actOpcodes[0x0b] = opcode(o1_setDark); - _actOpcodes[0x0d] = opcode(o1_quit); - _actOpcodes[0x0f] = opcode(o1_save); - _actOpcodes[0x10] = opcode(o1_restore); - _actOpcodes[0x11] = opcode(o1_restart); - _actOpcodes[0x12] = opcode(o1_placeItem); - _actOpcodes[0x13] = opcode(o1_setItemPic); - _actOpcodes[0x14] = opcode(o1_resetPic); - _actOpcodes[0x15] = opcode(o1_goDirection<IDI_DIR_NORTH>); - _actOpcodes[0x16] = opcode(o1_goDirection<IDI_DIR_SOUTH>); - _actOpcodes[0x17] = opcode(o1_goDirection<IDI_DIR_EAST>); - _actOpcodes[0x18] = opcode(o1_goDirection<IDI_DIR_WEST>); - _actOpcodes[0x19] = opcode(o1_goDirection<IDI_DIR_UP>); - _actOpcodes[0x1a] = opcode(o1_goDirection<IDI_DIR_DOWN>); - _actOpcodes[0x1b] = opcode(o1_takeItem); - _actOpcodes[0x1c] = opcode(o1_dropItem); - _actOpcodes[0x1d] = opcode(o1_setRoomPic); + Common::Array<const Opcode *> *table = 0; + + SetOpcodeTable(_condOpcodes); + // 0x00 + OpcodeUnImpl(); + OpcodeUnImpl(); + OpcodeUnImpl(); + Opcode(o1_isItemInRoom); + // 0x04 + OpcodeUnImpl(); + Opcode(o1_isMovesGT); + Opcode(o1_isVarEQ); + OpcodeUnImpl(); + // 0x08 + OpcodeUnImpl(); + Opcode(o1_isCurPicEQ); + Opcode(o1_isItemPicEQ); + + SetOpcodeTable(_actOpcodes); + // 0x00 + OpcodeUnImpl(); + Opcode(o1_varAdd); + Opcode(o1_varSub); + Opcode(o1_varSet); + // 0x04 + Opcode(o1_listInv); + Opcode(o1_moveItem); + Opcode(o1_setRoom); + Opcode(o1_setCurPic); + // 0x08 + Opcode(o1_setPic); + Opcode(o1_printMsg); + Opcode(o1_setLight); + Opcode(o1_setDark); + // 0x0c + OpcodeUnImpl(); + Opcode(o1_quit); + OpcodeUnImpl(); + Opcode(o1_save); + // 0x10 + Opcode(o1_restore); + Opcode(o1_restart); + Opcode(o1_placeItem); + Opcode(o1_setItemPic); + // 0x14 + Opcode(o1_resetPic); + Opcode(o1_goDirection<IDI_DIR_NORTH>); + Opcode(o1_goDirection<IDI_DIR_SOUTH>); + Opcode(o1_goDirection<IDI_DIR_EAST>); + // 0x18 + Opcode(o1_goDirection<IDI_DIR_WEST>); + Opcode(o1_goDirection<IDI_DIR_UP>); + Opcode(o1_goDirection<IDI_DIR_DOWN>); + Opcode(o1_takeItem); + // 0x1c + Opcode(o1_dropItem); + Opcode(o1_setRoomPic); } void AdlEngine::initState() { diff --git a/engines/adl/adl.h b/engines/adl/adl.h index 24b6ead8d9..143b07471c 100644 --- a/engines/adl/adl.h +++ b/engines/adl/adl.h @@ -284,13 +284,6 @@ protected: void loadDroppedItemOffsets(Common::ReadStream &stream, byte count); // Opcodes - typedef Common::Functor1<ScriptEnv &, int> Opcode; - - template <class T> - Opcode *opcode(int (T::*f)(ScriptEnv &)) { - return new Common::Functor1Mem<ScriptEnv &, int, T>(static_cast<T *>(this), f); - } - int o1_isItemInRoom(ScriptEnv &e); int o1_isMovesGT(ScriptEnv &e); int o1_isVarEQ(ScriptEnv &e); @@ -364,6 +357,7 @@ protected: bool _textMode; // Opcodes + typedef Common::Functor1<ScriptEnv &, int> Opcode; Common::Array<const Opcode *> _condOpcodes, _actOpcodes; // Message strings in data file Common::Array<DataBlockPtr> _messages; diff --git a/engines/adl/adl_v2.cpp b/engines/adl/adl_v2.cpp index 757ea91a42..4089ab3e30 100644 --- a/engines/adl/adl_v2.cpp +++ b/engines/adl/adl_v2.cpp @@ -54,50 +54,73 @@ void AdlEngine_v2::insertDisk(byte volume) { _currentVolume = volume; } +typedef Common::Functor1Mem<ScriptEnv &, int, AdlEngine_v2> OpcodeV2; +#define SetOpcodeTable(x) table = &x; +#define Opcode(x) table->push_back(new OpcodeV2(this, &AdlEngine_v2::x)) +#define OpcodeUnImpl() table->push_back(new OpcodeV2(this, 0)) + void AdlEngine_v2::setupOpcodeTables() { - _condOpcodes.resize(0x0b); - _condOpcodes[0x01] = opcode(o2_isFirstTime); - _condOpcodes[0x02] = opcode(o2_isRandomGT); - _condOpcodes[0x03] = opcode(o1_isItemInRoom); - _condOpcodes[0x04] = opcode(o2_isNounNotInRoom); - _condOpcodes[0x05] = opcode(o1_isMovesGT); - _condOpcodes[0x06] = opcode(o1_isVarEQ); - _condOpcodes[0x07] = opcode(o2_isCarryingSomething); - _condOpcodes[0x09] = opcode(o1_isCurPicEQ); - _condOpcodes[0x0a] = opcode(o1_isItemPicEQ); - - _actOpcodes.resize(0x21); - _actOpcodes[0x01] = opcode(o1_varAdd); - _actOpcodes[0x02] = opcode(o1_varSub); - _actOpcodes[0x03] = opcode(o1_varSet); - _actOpcodes[0x04] = opcode(o1_listInv); - _actOpcodes[0x05] = opcode(o2_moveItem); - _actOpcodes[0x06] = opcode(o1_setRoom); - _actOpcodes[0x07] = opcode(o2_setCurPic); - _actOpcodes[0x08] = opcode(o2_setPic); - _actOpcodes[0x09] = opcode(o1_printMsg); - _actOpcodes[0x0a] = opcode(o1_setLight); - _actOpcodes[0x0b] = opcode(o1_setDark); - _actOpcodes[0x0c] = opcode(o2_moveAllItems); - _actOpcodes[0x0d] = opcode(o1_quit); - _actOpcodes[0x0f] = opcode(o2_save); - _actOpcodes[0x10] = opcode(o2_restore); - _actOpcodes[0x11] = opcode(o1_restart); - _actOpcodes[0x12] = opcode(o2_placeItem); - _actOpcodes[0x13] = opcode(o1_setItemPic); - _actOpcodes[0x14] = opcode(o1_resetPic); - _actOpcodes[0x15] = opcode(o1_goDirection<IDI_DIR_NORTH>); - _actOpcodes[0x16] = opcode(o1_goDirection<IDI_DIR_SOUTH>); - _actOpcodes[0x17] = opcode(o1_goDirection<IDI_DIR_EAST>); - _actOpcodes[0x18] = opcode(o1_goDirection<IDI_DIR_WEST>); - _actOpcodes[0x19] = opcode(o1_goDirection<IDI_DIR_UP>); - _actOpcodes[0x1a] = opcode(o1_goDirection<IDI_DIR_DOWN>); - _actOpcodes[0x1b] = opcode(o1_takeItem); - _actOpcodes[0x1c] = opcode(o1_dropItem); - _actOpcodes[0x1d] = opcode(o1_setRoomPic); - _actOpcodes[0x1e] = opcode(o2_tellTime); - _actOpcodes[0x1f] = opcode(o2_setRoomFromVar); - _actOpcodes[0x20] = opcode(o2_initDisk); + Common::Array<const Opcode *> *table = 0; + + SetOpcodeTable(_condOpcodes); + // 0x00 + OpcodeUnImpl(); + Opcode(o2_isFirstTime); + Opcode(o2_isRandomGT); + Opcode(o1_isItemInRoom); + // 0x04 + Opcode(o2_isNounNotInRoom); + Opcode(o1_isMovesGT); + Opcode(o1_isVarEQ); + Opcode(o2_isCarryingSomething); + // 0x08 + OpcodeUnImpl(); + Opcode(o1_isCurPicEQ); + Opcode(o1_isItemPicEQ); + + SetOpcodeTable(_actOpcodes); + // 0x00 + OpcodeUnImpl(); + Opcode(o1_varAdd); + Opcode(o1_varSub); + Opcode(o1_varSet); + // 0x04 + Opcode(o1_listInv); + Opcode(o2_moveItem); + Opcode(o1_setRoom); + Opcode(o2_setCurPic); + // 0x08 + Opcode(o2_setPic); + Opcode(o1_printMsg); + Opcode(o1_setLight); + Opcode(o1_setDark); + // 0x0c + Opcode(o2_moveAllItems); + Opcode(o1_quit); + OpcodeUnImpl(); + Opcode(o2_save); + // 0x10 + Opcode(o2_restore); + Opcode(o1_restart); + Opcode(o2_placeItem); + Opcode(o1_setItemPic); + // 0x14 + Opcode(o1_resetPic); + Opcode(o1_goDirection<IDI_DIR_NORTH>); + Opcode(o1_goDirection<IDI_DIR_SOUTH>); + Opcode(o1_goDirection<IDI_DIR_EAST>); + // 0x18 + Opcode(o1_goDirection<IDI_DIR_WEST>); + Opcode(o1_goDirection<IDI_DIR_UP>); + Opcode(o1_goDirection<IDI_DIR_DOWN>); + Opcode(o1_takeItem); + // 0x1c + Opcode(o1_dropItem); + Opcode(o1_setRoomPic); + Opcode(o2_tellTime); + Opcode(o2_setRoomFromVar); + // 0x20 + Opcode(o2_initDisk); } void AdlEngine_v2::initState() { diff --git a/engines/adl/adl_v3.cpp b/engines/adl/adl_v3.cpp index f68a81916c..46af211695 100644 --- a/engines/adl/adl_v3.cpp +++ b/engines/adl/adl_v3.cpp @@ -56,10 +56,12 @@ void AdlEngine_v3::loadItemDescriptions(Common::SeekableReadStream &stream, byte error("Error loading item descriptions"); } +typedef Common::Functor1Mem<ScriptEnv &, int, AdlEngine_v3> OpcodeV3; + void AdlEngine_v3::setupOpcodeTables() { AdlEngine_v2::setupOpcodeTables(); delete _condOpcodes[0x04]; - _condOpcodes[0x04] = opcode(o3_isNounNotInRoom); + _condOpcodes[0x04] = new OpcodeV3(this, &AdlEngine_v3::o3_isNounNotInRoom); } int AdlEngine_v3::o3_isNounNotInRoom(ScriptEnv &e) { diff --git a/engines/adl/hires5.cpp b/engines/adl/hires5.cpp index 24e24c7596..efe69a7e58 100644 --- a/engines/adl/hires5.cpp +++ b/engines/adl/hires5.cpp @@ -134,50 +134,73 @@ void HiRes5Engine::animateLights() const { } } +typedef Common::Functor1Mem<ScriptEnv &, int, HiRes5Engine> OpcodeH5; +#define SetOpcodeTable(x) table = &x; +#define Opcode(x) table->push_back(new OpcodeH5(this, &HiRes5Engine::x)) +#define OpcodeUnImpl() table->push_back(new OpcodeH5(this, 0)) + void HiRes5Engine::setupOpcodeTables() { - _condOpcodes.resize(0x0a); - _condOpcodes[0x01] = opcode(o2_isFirstTime); - _condOpcodes[0x02] = opcode(o2_isRandomGT); - _condOpcodes[0x03] = opcode(o4_isItemInRoom); - _condOpcodes[0x04] = opcode(o3_isNounNotInRoom); - _condOpcodes[0x05] = opcode(o1_isMovesGT); - _condOpcodes[0x06] = opcode(o1_isVarEQ); - _condOpcodes[0x07] = opcode(o2_isCarryingSomething); - _condOpcodes[0x08] = opcode(o4_isVarGT); - _condOpcodes[0x09] = opcode(o1_isCurPicEQ); - - _actOpcodes.resize(0x21); - _actOpcodes[0x01] = opcode(o1_varAdd); - _actOpcodes[0x02] = opcode(o1_varSub); - _actOpcodes[0x03] = opcode(o1_varSet); - _actOpcodes[0x04] = opcode(o1_listInv); - _actOpcodes[0x05] = opcode(o4_moveItem); - _actOpcodes[0x06] = opcode(o1_setRoom); - _actOpcodes[0x07] = opcode(o2_setCurPic); - _actOpcodes[0x08] = opcode(o2_setPic); - _actOpcodes[0x09] = opcode(o1_printMsg); - _actOpcodes[0x0a] = opcode(o4_setRegionToPrev); - _actOpcodes[0x0b] = opcode(o_checkItemTimeLimits); - _actOpcodes[0x0c] = opcode(o4_moveAllItems); - _actOpcodes[0x0d] = opcode(o1_quit); - _actOpcodes[0x0e] = opcode(o4_setRegion); - _actOpcodes[0x0f] = opcode(o4_save); - _actOpcodes[0x10] = opcode(o4_restore); - _actOpcodes[0x11] = opcode(o4_restart); - _actOpcodes[0x12] = opcode(o4_setRegionRoom); - _actOpcodes[0x13] = opcode(o_startAnimation); - _actOpcodes[0x14] = opcode(o1_resetPic); - _actOpcodes[0x15] = opcode(o1_goDirection<IDI_DIR_NORTH>); - _actOpcodes[0x16] = opcode(o1_goDirection<IDI_DIR_SOUTH>); - _actOpcodes[0x17] = opcode(o1_goDirection<IDI_DIR_EAST>); - _actOpcodes[0x18] = opcode(o1_goDirection<IDI_DIR_WEST>); - _actOpcodes[0x19] = opcode(o1_goDirection<IDI_DIR_UP>); - _actOpcodes[0x1a] = opcode(o1_goDirection<IDI_DIR_DOWN>); - _actOpcodes[0x1b] = opcode(o1_takeItem); - _actOpcodes[0x1c] = opcode(o1_dropItem); - _actOpcodes[0x1d] = opcode(o4_setRoomPic); - _actOpcodes[0x1e] = opcode(o_winGame); - _actOpcodes[0x20] = opcode(o2_initDisk); + Common::Array<const Opcode *> *table = 0; + + SetOpcodeTable(_condOpcodes); + // 0x00 + OpcodeUnImpl(); + Opcode(o2_isFirstTime); + Opcode(o2_isRandomGT); + Opcode(o4_isItemInRoom); + // 0x04 + Opcode(o3_isNounNotInRoom); + Opcode(o1_isMovesGT); + Opcode(o1_isVarEQ); + Opcode(o2_isCarryingSomething); + // 0x08 + Opcode(o4_isVarGT); + Opcode(o1_isCurPicEQ); + OpcodeUnImpl(); + + SetOpcodeTable(_actOpcodes); + // 0x00 + OpcodeUnImpl(); + Opcode(o1_varAdd); + Opcode(o1_varSub); + Opcode(o1_varSet); + // 0x04 + Opcode(o1_listInv); + Opcode(o4_moveItem); + Opcode(o1_setRoom); + Opcode(o2_setCurPic); + // 0x08 + Opcode(o2_setPic); + Opcode(o1_printMsg); + Opcode(o4_setRegionToPrev); + Opcode(o_checkItemTimeLimits); + // 0x0c + Opcode(o4_moveAllItems); + Opcode(o1_quit); + Opcode(o4_setRegion); + Opcode(o4_save); + // 0x10 + Opcode(o4_restore); + Opcode(o4_restart); + Opcode(o4_setRegionRoom); + Opcode(o_startAnimation); + // 0x14 + Opcode(o1_resetPic); + Opcode(o1_goDirection<IDI_DIR_NORTH>); + Opcode(o1_goDirection<IDI_DIR_SOUTH>); + Opcode(o1_goDirection<IDI_DIR_EAST>); + // 0x18 + Opcode(o1_goDirection<IDI_DIR_WEST>); + Opcode(o1_goDirection<IDI_DIR_UP>); + Opcode(o1_goDirection<IDI_DIR_DOWN>); + Opcode(o1_takeItem); + // 0x1c + Opcode(o1_dropItem); + Opcode(o4_setRoomPic); + Opcode(o_winGame); + OpcodeUnImpl(); + // 0x20 + Opcode(o2_initDisk); } bool HiRes5Engine::isInventoryFull() { diff --git a/engines/adl/hires6.cpp b/engines/adl/hires6.cpp index 96eb59b47f..7f1a285d71 100644 --- a/engines/adl/hires6.cpp +++ b/engines/adl/hires6.cpp @@ -94,51 +94,73 @@ void HiRes6Engine::gameLoop() { } } +typedef Common::Functor1Mem<ScriptEnv &, int, HiRes6Engine> OpcodeH6; +#define SetOpcodeTable(x) table = &x; +#define Opcode(x) table->push_back(new OpcodeH6(this, &HiRes6Engine::x)) +#define OpcodeUnImpl() table->push_back(new OpcodeH6(this, 0)) + void HiRes6Engine::setupOpcodeTables() { - _condOpcodes.resize(0x0b); - _condOpcodes[0x01] = opcode(o2_isFirstTime); - _condOpcodes[0x02] = opcode(o2_isRandomGT); - _condOpcodes[0x03] = opcode(o4_isItemInRoom); - _condOpcodes[0x04] = opcode(o5_isNounNotInRoom); - _condOpcodes[0x05] = opcode(o1_isMovesGT); - _condOpcodes[0x06] = opcode(o1_isVarEQ); - _condOpcodes[0x07] = opcode(o2_isCarryingSomething); - _condOpcodes[0x08] = opcode(o4_isVarGT); - _condOpcodes[0x09] = opcode(o1_isCurPicEQ); - _condOpcodes[0x0a] = opcode(o5_abortScript); - - _actOpcodes.resize(0x21); - _actOpcodes[0x01] = opcode(o1_varAdd); - _actOpcodes[0x02] = opcode(o1_varSub); - _actOpcodes[0x03] = opcode(o1_varSet); - _actOpcodes[0x04] = opcode(o1_listInv); - _actOpcodes[0x05] = opcode(o4_moveItem); - _actOpcodes[0x06] = opcode(o1_setRoom); - _actOpcodes[0x07] = opcode(o2_setCurPic); - _actOpcodes[0x08] = opcode(o2_setPic); - _actOpcodes[0x09] = opcode(o1_printMsg); - _actOpcodes[0x0a] = opcode(o5_dummy); - _actOpcodes[0x0b] = opcode(o5_setTextMode); - _actOpcodes[0x0c] = opcode(o4_moveAllItems); - _actOpcodes[0x0d] = opcode(o1_quit); - _actOpcodes[0x0e] = opcode(o5_dummy); - _actOpcodes[0x0f] = opcode(o4_save); - _actOpcodes[0x10] = opcode(o4_restore); - _actOpcodes[0x11] = opcode(o1_restart); - _actOpcodes[0x12] = opcode(o5_setRegionRoom); - _actOpcodes[0x13] = opcode(o5_dummy); - _actOpcodes[0x14] = opcode(o1_resetPic); - _actOpcodes[0x15] = opcode(o_goDirection<IDI_DIR_NORTH>); - _actOpcodes[0x16] = opcode(o_goDirection<IDI_DIR_SOUTH>); - _actOpcodes[0x17] = opcode(o_goDirection<IDI_DIR_EAST>); - _actOpcodes[0x18] = opcode(o_goDirection<IDI_DIR_WEST>); - _actOpcodes[0x19] = opcode(o_goDirection<IDI_DIR_UP>); - _actOpcodes[0x1a] = opcode(o_goDirection<IDI_DIR_DOWN>); - _actOpcodes[0x1b] = opcode(o1_takeItem); - _actOpcodes[0x1c] = opcode(o1_dropItem); - _actOpcodes[0x1d] = opcode(o5_setRoomPic); - _actOpcodes[0x1e] = opcode(o_fluteSound); - _actOpcodes[0x20] = opcode(o2_initDisk); + Common::Array<const Opcode *> *table = 0; + + SetOpcodeTable(_condOpcodes); + // 0x00 + OpcodeUnImpl(); + Opcode(o2_isFirstTime); + Opcode(o2_isRandomGT); + Opcode(o4_isItemInRoom); + // 0x04 + Opcode(o5_isNounNotInRoom); + Opcode(o1_isMovesGT); + Opcode(o1_isVarEQ); + Opcode(o2_isCarryingSomething); + // 0x08 + Opcode(o4_isVarGT); + Opcode(o1_isCurPicEQ); + Opcode(o5_abortScript); + + SetOpcodeTable(_actOpcodes); + // 0x00 + OpcodeUnImpl(); + Opcode(o1_varAdd); + Opcode(o1_varSub); + Opcode(o1_varSet); + // 0x04 + Opcode(o1_listInv); + Opcode(o4_moveItem); + Opcode(o1_setRoom); + Opcode(o2_setCurPic); + // 0x08 + Opcode(o2_setPic); + Opcode(o1_printMsg); + Opcode(o5_dummy); + Opcode(o5_setTextMode); + // 0x0c + Opcode(o4_moveAllItems); + Opcode(o1_quit); + Opcode(o5_dummy); + Opcode(o4_save); + // 0x10 + Opcode(o4_restore); + Opcode(o1_restart); + Opcode(o5_setRegionRoom); + Opcode(o5_dummy); + // 0x14 + Opcode(o1_resetPic); + Opcode(o_goDirection<IDI_DIR_NORTH>); + Opcode(o_goDirection<IDI_DIR_SOUTH>); + Opcode(o_goDirection<IDI_DIR_EAST>); + // 0x18 + Opcode(o_goDirection<IDI_DIR_WEST>); + Opcode(o_goDirection<IDI_DIR_UP>); + Opcode(o_goDirection<IDI_DIR_DOWN>); + Opcode(o1_takeItem); + // 0x1c + Opcode(o1_dropItem); + Opcode(o5_setRoomPic); + Opcode(o_fluteSound); + OpcodeUnImpl(); + // 0x20 + Opcode(o2_initDisk); } template <Direction D> |