diff options
Diffstat (limited to 'engines/mohawk/myst_scripts.h')
-rw-r--r-- | engines/mohawk/myst_scripts.h | 155 |
1 files changed, 26 insertions, 129 deletions
diff --git a/engines/mohawk/myst_scripts.h b/engines/mohawk/myst_scripts.h index af8053bacf..59974d9003 100644 --- a/engines/mohawk/myst_scripts.h +++ b/engines/mohawk/myst_scripts.h @@ -62,56 +62,15 @@ typedef Common::SharedPtr<Common::Array<MystScriptEntry> > MystScript; class MystScriptParser { public: MystScriptParser(MohawkEngine_Myst *vm); - ~MystScriptParser(); + virtual ~MystScriptParser(); void runScript(MystScript script, MystResource *invokingResource = NULL); void runOpcode(uint16 op, uint16 var = 0, uint16 argc = 0, uint16 *argv = NULL); const char *getOpcodeDesc(uint16 op); MystScript readScript(Common::SeekableReadStream *stream, MystScriptType type); - void disableInitOpcodes(); - void runPersistentOpcodes(); - -private: - MohawkEngine_Myst *_vm; - - typedef void (MystScriptParser::*OpcodeProcMyst)(uint16 op, uint16 var, uint16 argc, uint16* argv); - - struct MystOpcode { - uint16 op; - OpcodeProcMyst proc; - const char *desc; - }; - - const MystOpcode *_opcodes; - void setupOpcodes(); - MystResource *_invokingResource; - uint16 _opcodeCount; - - void varUnusedCheck(uint16 op, uint16 var); - - void opcode_200_run(); - void opcode_200_disable(); - void opcode_201_run(); - void opcode_201_disable(); - void opcode_202_run(); - void opcode_202_disable(); - void opcode_203_run(); - void opcode_203_disable(); - void opcode_204_run(); - void opcode_204_disable(); - void opcode_205_run(); - void opcode_205_disable(); - void opcode_206_run(); - void opcode_206_disable(); - void opcode_209_run(); - void opcode_209_disable(); - void opcode_210_run(); - void opcode_210_disable(); - void opcode_211_run(); - void opcode_211_disable(); - void opcode_212_run(); - void opcode_212_disable(); + virtual void disableInitOpcodes() = 0; + virtual void runPersistentOpcodes() = 0; DECLARE_OPCODE(unknown); @@ -155,92 +114,30 @@ private: DECLARE_OPCODE(opcode_44); DECLARE_OPCODE(opcode_46); - DECLARE_OPCODE(opcode_100); - DECLARE_OPCODE(opcode_101); - DECLARE_OPCODE(opcode_102); - DECLARE_OPCODE(opcode_103); - DECLARE_OPCODE(opcode_104); - DECLARE_OPCODE(opcode_105); - DECLARE_OPCODE(opcode_106); - DECLARE_OPCODE(opcode_107); - DECLARE_OPCODE(opcode_108); - DECLARE_OPCODE(opcode_109); - DECLARE_OPCODE(opcode_110); - DECLARE_OPCODE(opcode_111); - DECLARE_OPCODE(opcode_112); - DECLARE_OPCODE(opcode_113); - DECLARE_OPCODE(opcode_114); - DECLARE_OPCODE(opcode_115); - DECLARE_OPCODE(opcode_116); - DECLARE_OPCODE(opcode_117); - DECLARE_OPCODE(opcode_118); - DECLARE_OPCODE(opcode_119); - DECLARE_OPCODE(opcode_120); - DECLARE_OPCODE(opcode_121); - DECLARE_OPCODE(opcode_122); - DECLARE_OPCODE(opcode_123); - DECLARE_OPCODE(opcode_124); - DECLARE_OPCODE(opcode_125); - DECLARE_OPCODE(opcode_126); - DECLARE_OPCODE(opcode_127); - DECLARE_OPCODE(opcode_128); - DECLARE_OPCODE(opcode_129); - DECLARE_OPCODE(opcode_130); - DECLARE_OPCODE(opcode_131); - DECLARE_OPCODE(opcode_132); - DECLARE_OPCODE(opcode_133); - DECLARE_OPCODE(opcode_147); - DECLARE_OPCODE(opcode_164); - DECLARE_OPCODE(opcode_169); - DECLARE_OPCODE(opcode_181); - DECLARE_OPCODE(opcode_182); - DECLARE_OPCODE(opcode_183); - DECLARE_OPCODE(opcode_184); - DECLARE_OPCODE(opcode_185); - DECLARE_OPCODE(opcode_196); - DECLARE_OPCODE(opcode_197); - DECLARE_OPCODE(opcode_198); - DECLARE_OPCODE(opcode_199); - - DECLARE_OPCODE(opcode_200); - DECLARE_OPCODE(opcode_201); - DECLARE_OPCODE(opcode_202); - DECLARE_OPCODE(opcode_203); - DECLARE_OPCODE(opcode_204); - DECLARE_OPCODE(opcode_205); - DECLARE_OPCODE(opcode_206); - DECLARE_OPCODE(opcode_207); - DECLARE_OPCODE(opcode_208); - DECLARE_OPCODE(opcode_209); - DECLARE_OPCODE(opcode_210); - DECLARE_OPCODE(opcode_211); - DECLARE_OPCODE(opcode_212); - DECLARE_OPCODE(opcode_213); - DECLARE_OPCODE(opcode_214); - DECLARE_OPCODE(opcode_215); - DECLARE_OPCODE(opcode_216); - DECLARE_OPCODE(opcode_217); - DECLARE_OPCODE(opcode_218); - DECLARE_OPCODE(opcode_219); - DECLARE_OPCODE(opcode_220); - DECLARE_OPCODE(opcode_221); - DECLARE_OPCODE(opcode_222); - DECLARE_OPCODE(opcode_298); - DECLARE_OPCODE(opcode_299); - - DECLARE_OPCODE(opcode_300); - DECLARE_OPCODE(opcode_301); - DECLARE_OPCODE(opcode_302); - DECLARE_OPCODE(opcode_303); - DECLARE_OPCODE(opcode_304); - DECLARE_OPCODE(opcode_305); - DECLARE_OPCODE(opcode_306); - DECLARE_OPCODE(opcode_307); - DECLARE_OPCODE(opcode_308); - DECLARE_OPCODE(opcode_309); - DECLARE_OPCODE(opcode_312); - DECLARE_OPCODE(NOP); + +protected: + MohawkEngine_Myst *_vm; + + typedef void (MystScriptParser::*OpcodeProcMyst)(uint16 op, uint16 var, uint16 argc, uint16* argv); + + struct MystOpcode { + uint16 op; + OpcodeProcMyst proc; + const char *desc; + }; + + const MystOpcode *_opcodes; + void setupOpcodes(); + MystResource *_invokingResource; + uint16 _opcodeCount; + + static const uint8 stack_map[]; + static const uint16 start_card[]; + + void varUnusedCheck(uint16 op, uint16 var); + + }; } |