diff options
-rw-r--r-- | scumm/intern.h | 2 | ||||
-rw-r--r-- | scumm/script_v90he.cpp | 40 |
2 files changed, 40 insertions, 2 deletions
diff --git a/scumm/intern.h b/scumm/intern.h index bcc7552177..e2253e3af7 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -819,6 +819,8 @@ protected: void o90_unknown27(); void o90_unknown28(); void o90_unknown29(); + void o90_unknown2F(); + void o90_unknown30(); void o90_unknown37(); }; diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp index 8f3b3bf9ba..6f67d2ea29 100644 --- a/scumm/script_v90he.cpp +++ b/scumm/script_v90he.cpp @@ -103,9 +103,9 @@ void ScummEngine_v90he::setupOpcodes() { OPCODE(o6_invalid), OPCODE(o6_invalid), OPCODE(o6_invalid), - OPCODE(o6_invalid), + OPCODE(o90_unknown2F), /* 30 */ - OPCODE(o6_invalid), + OPCODE(o90_unknown30), OPCODE(o6_invalid), OPCODE(o6_invalid), OPCODE(o6_invalid), @@ -687,6 +687,42 @@ void ScummEngine_v90he::o90_unknown29() { debug(1,"o90_unknown29 stub (%d)", subOp); } +void ScummEngine_v90he::o90_unknown2F() { + int subOp = fetchScriptByte(); + subOp -= 54; + + switch (subOp) { + case 0: + pop(); + break; + case 3: + break; + case 11: + pop(); + pop(); + break; + case 12: + pop(); + break; + case 13: + pop(); + pop(); + pop(); + pop(); + break; + case 201: + break; + default: + error("o90_unknown28: Unknown case %d", subOp); + } + debug(1,"o90_unknown2F stub (%d)", subOp); +} + +void ScummEngine_v90he::o90_unknown30() { + int a = pop(); + debug(1,"o90_unknown30 stub (%d)", a); +} + void ScummEngine_v90he::o90_unknown37() { int data, dim1start, dim1end, dim2start, dim2end; int type = fetchScriptByte(); |