From 2df1161e0c5f896e9bb9c2215cc4d30e0a3c12e1 Mon Sep 17 00:00:00 2001 From: Travis Howell Date: Tue, 26 Apr 2005 06:47:42 +0000 Subject: Add stubs for the two smacker related opcodes in HE games. Makes it easier to test new titles. svn-id: r17806 --- scumm/intern.h | 2 ++ scumm/script_v90he.cpp | 67 ++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 67 insertions(+), 2 deletions(-) (limited to 'scumm') diff --git a/scumm/intern.h b/scumm/intern.h index b6ab82b8f9..8de311ccfa 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -1130,6 +1130,8 @@ protected: void o90_getActorData(); void o90_startScriptUnk(); void o90_jumpToScriptUnk(); + void o90_smackerOps(); + void o90_getSmackerData(); void o90_wizImageOps(); void o90_getDistanceBetweenPoints(); void o90_getSpriteInfo(); diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp index 6e851ad34f..5d0df8b2c0 100644 --- a/scumm/script_v90he.cpp +++ b/scumm/script_v90he.cpp @@ -98,8 +98,8 @@ void ScummEngine_v90he::setupOpcodes() { OPCODE(o90_startScriptUnk), /* 2C */ OPCODE(o90_jumpToScriptUnk), - OPCODE(o6_invalid), - OPCODE(o6_invalid), + OPCODE(o90_smackerOps), + OPCODE(o90_getSmackerData), OPCODE(o90_floodState), /* 30 */ OPCODE(o90_mod), @@ -510,6 +510,69 @@ void ScummEngine_v90he::o90_jumpToScriptUnk() { runScript(script, (flags == 199 || flags == 200), (flags == 195 || flags == 200), args, cycle); } +void ScummEngine_v90he::o90_smackerOps() { + byte smackerFilename[260]; + + int subOp = fetchScriptByte(); + subOp -= 49; + + switch (subOp) { + case 0: + copyScriptString(smackerFilename, sizeof(smackerFilename)); + break; + case 5: + pop(); + break; + case 8: + memset(smackerFilename, 0, sizeof(smackerFilename)); + pop(); + break; + case 14: + pop(); + break; + case 116: + break; + case 206: + break; + default: + error("o90_smackerOps: unhandled case %d", subOp); + } + + debug(0,"o90_smackerOps stub (%d)", subOp); +} + +void ScummEngine_v90he::o90_getSmackerData() { + int subOp = fetchScriptByte(); + subOp -= 32; + + switch (subOp) { + case 0: + pop(); + break; + case 1: + pop(); + break; + case 4: + pop(); + break; + case 20: + pop(); + break; + case 31: + pop(); + break; + case 107: + pop(); + pop(); + break; + default: + error("o90_getSmackerData: unhandled case %d", subOp); + } + + push(0); + debug(0,"o90_getSmackerData stub (%d)", subOp); +} + void ScummEngine_v90he::o90_wizImageOps() { int a, b; int subOp = fetchScriptByte(); -- cgit v1.2.3