aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/myst_scripts.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mohawk/myst_scripts.h')
-rw-r--r--engines/mohawk/myst_scripts.h155
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);
+
+
};
}