aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kyra/kyra.cpp4
-rw-r--r--kyra/script.cpp315
-rw-r--r--kyra/script_v1.cpp18
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