diff options
-rw-r--r-- | kyra/kyra.cpp | 4 | ||||
-rw-r--r-- | kyra/script.cpp | 315 | ||||
-rw-r--r-- | kyra/script_v1.cpp | 18 |
3 files changed, 330 insertions, 7 deletions
diff --git a/kyra/kyra.cpp b/kyra/kyra.cpp index a1ae6449c2..38783bd01e 100644 --- a/kyra/kyra.cpp +++ b/kyra/kyra.cpp @@ -117,12 +117,10 @@ KyraEngine::KyraEngine(GameDetector *detector, OSystem *syst) // loads the Font _font = _resMgr->loadFont("8FAT.FNT"); - printf("loading scripts\n"); + // loads out scripts _npcScript = _resMgr->loadScript("_NPC.EMC"); _currentScript = _resMgr->loadScript("_STARTUP.EMC"); - printf("done\n"); - } KyraEngine::~KyraEngine() { diff --git a/kyra/script.cpp b/kyra/script.cpp index c40ab826b4..13bb593665 100644 --- a/kyra/script.cpp +++ b/kyra/script.cpp @@ -344,16 +344,324 @@ namespace Kyra { COMMAND(c1_unknownCommand), { 0, 0 } }; - _commands = commandProcs; -// _opcodes = opcodeProcs; + static OpcodeEntry opcodeProcs[] = { + // 0 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 10 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 20 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 30 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 40 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 50 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 60 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 70 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 80 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 90 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 100 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_0x68), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 110 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 120 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 130 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 140 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 150 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 160 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 170 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 180 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 190 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 200 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 210 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 220 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 230 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 240 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + + // 250 + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + COMMAND(o1_unknownOpcode), + { 0, 0 } + }; + _opcodes = opcodeProcs; _scriptFile = NULL; _scriptFileSize = 0; } void VMContext::loadScript(const char* file) { - printf("a\n"); if (_scriptFile) { delete [] _scriptFile; _scriptFileSize = 0; @@ -363,7 +671,6 @@ namespace Kyra { // loads the new file _scriptFile = _engine->resManager()->fileData(file, &_scriptFileSize); - printf("c\n"); if (!_scriptFileSize || !_scriptFile) { error("couldn't load script file '%s'", file); diff --git a/kyra/script_v1.cpp b/kyra/script_v1.cpp index 8b306f52e1..a224107760 100644 --- a/kyra/script_v1.cpp +++ b/kyra/script_v1.cpp @@ -217,4 +217,22 @@ namespace Kyra { pushStack(res); } + + // opcode procs + void VMContext::o1_unknownOpcode(void) { + _error = true; + + debug("unknown opcode '0x%x'.", _argument); + debug("parameters:\n" + "Param0: %d\nParam1: %d\nParam2: %d\nParam3: %d\nParam4: %d\nParam5: %d\n" + "Param0 as a string: %s\nParam1 as a string: %s\nParam2 as a string: %s\n" + "Param3 as a string: %s\nParam4 as a string: %s\nParam5 as a string: %s\n", + param(0), param(1), param(2), param(3), param(5), param(5), + paramString(0), paramString(1), paramString(2), paramString(3), + paramString(4), paramString(5)); + } + + void VMContext::o1_0x68(void) { + debug("o1_0x68 was called with param0: '%d' and param1: '%d'", param(0), param(1)); + } } // end of namespace Kyra |