aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci')
-rw-r--r--engines/sci/engine/kernel.cpp6
-rw-r--r--engines/sci/engine/vm.cpp11
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)