diff options
Diffstat (limited to 'engines/sci')
-rw-r--r-- | engines/sci/engine/kernel.cpp | 6 | ||||
-rw-r--r-- | engines/sci/engine/vm.cpp | 11 |
2 files changed, 16 insertions, 1 deletions
diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index c056de9949..5b7a24f289 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -911,6 +911,12 @@ void script_adjust_opcode_formats() { g_opcode_formats[op_call][1] = Script_Word; g_opcode_formats[op_callb][1] = Script_Word; } + + if (getSciVersion() >= SCI_VERSION_3) { + // TODO: There are also opcodes in + // here to get the superclass, and possibly the species too. + g_opcode_formats[0x4d/2][0] = Script_None; + } #endif } diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp index 5f506d3624..25cd4f9891 100644 --- a/engines/sci/engine/vm.cpp +++ b/engines/sci/engine/vm.cpp @@ -1557,7 +1557,16 @@ void run_vm(EngineState *s) { case 0x26: // (38) case 0x27: // (39) - error("Dummy opcode 0x%x called", opcode); // should never happen + if (getSciVersion() == SCI_VERSION_3) + { + if (extOpcode == 0x4d) + PUSH32(obj->getInfoSelector()); + // TODO: There are also opcodes in + // here to get the superclass, and possibly the species too. + else + error("Dummy opcode 0x%x called", opcode); // should never happen + } else + error("Dummy opcode 0x%x called", opcode); // should never happen break; case op_class: // 0x28 (40) |