aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorTravis Howell2005-04-26 06:47:42 +0000
committerTravis Howell2005-04-26 06:47:42 +0000
commit2df1161e0c5f896e9bb9c2215cc4d30e0a3c12e1 (patch)
treeb5a8613c539d874a278428e11958286969f2567d /scumm
parent5d392d90d6219c811aac32848fc14a5ea76a848c (diff)
downloadscummvm-rg350-2df1161e0c5f896e9bb9c2215cc4d30e0a3c12e1.tar.gz
scummvm-rg350-2df1161e0c5f896e9bb9c2215cc4d30e0a3c12e1.tar.bz2
scummvm-rg350-2df1161e0c5f896e9bb9c2215cc4d30e0a3c12e1.zip
Add stubs for the two smacker related opcodes in HE games.
Makes it easier to test new titles. svn-id: r17806
Diffstat (limited to 'scumm')
-rw-r--r--scumm/intern.h2
-rw-r--r--scumm/script_v90he.cpp67
2 files changed, 67 insertions, 2 deletions
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();