aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorTravis Howell2004-08-23 14:03:54 +0000
committerTravis Howell2004-08-23 14:03:54 +0000
commit25ccf3a0eedf1678b170362197e6be3f79f530dd (patch)
tree2a2b4834551f037cd40a39d57c0fb5ed986a8550 /scumm
parent42fb68694d9d587e1c173d216e53a8448bafe5fe (diff)
downloadscummvm-rg350-25ccf3a0eedf1678b170362197e6be3f79f530dd.tar.gz
scummvm-rg350-25ccf3a0eedf1678b170362197e6be3f79f530dd.tar.bz2
scummvm-rg350-25ccf3a0eedf1678b170362197e6be3f79f530dd.zip
Another He 7.2 function
svn-id: r14719
Diffstat (limited to 'scumm')
-rw-r--r--scumm/intern.h1
-rw-r--r--scumm/script_v6.cpp2
-rw-r--r--scumm/script_v72he.cpp39
-rw-r--r--scumm/script_v7he.cpp2
4 files changed, 42 insertions, 2 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index 6710d3e08d..43f4cbe41d 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -665,6 +665,7 @@ protected:
void o72_dimArray();
void o72_dim2dimArray();
void o72_jumpToScript();
+ void o72_drawObject();
void o72_stringLen();
void o72_readINI();
void o72_unknownF4();
diff --git a/scumm/script_v6.cpp b/scumm/script_v6.cpp
index d5bf4908a8..00fc4703ac 100644
--- a/scumm/script_v6.cpp
+++ b/scumm/script_v6.cpp
@@ -597,7 +597,7 @@ void ScummEngine_v6::o6_pushWord() {
}
void ScummEngine_v6::o6_pushByteVar() {
- push(readVar(fetchScriptByte()));
+ push(readVar(fetchScriptWord()));
}
void ScummEngine_v6::o6_pushWordVar() {
diff --git a/scumm/script_v72he.cpp b/scumm/script_v72he.cpp
index bd7c582604..a7e5118a7e 100644
--- a/scumm/script_v72he.cpp
+++ b/scumm/script_v72he.cpp
@@ -559,6 +559,45 @@ void ScummEngine_v72he::o72_jumpToScript() {
runScript(script, (flags == 199 || flags == 200), (flags == 195 || flags == 200), args);
}
+void ScummEngine_v72he::o72_drawObject() {
+ int subOp = fetchScriptByte();
+ int state = 0, y = -1, x = -1;
+
+ switch (subOp) {
+ case 62:
+ state = pop();
+ y = pop();
+ x = pop();
+ break;
+ case 63:
+ state = pop();
+ if (state == 0)
+ state = 1;
+ break;
+ case 65:
+ state = 1;
+ y = pop();
+ x = pop();
+ default:
+ warning("o72_drawObject: default case %d", subOp);
+ }
+
+ int object = pop();
+ int objnum = getObjectIndex(object);
+ if (objnum == -1)
+ return;
+
+ if (y != -1 && x != -1) {
+ _objs[objnum].x_pos = x * 8;
+ _objs[objnum].y_pos = y * 8;
+ }
+
+ if (state != -1) {
+ addObjectToDrawQue(objnum);
+ putState(object, state);
+ }
+}
+
void ScummEngine_v72he::o72_stringLen() {
int a, len;
byte *addr;
diff --git a/scumm/script_v7he.cpp b/scumm/script_v7he.cpp
index 94b0d051a6..07b0a92282 100644
--- a/scumm/script_v7he.cpp
+++ b/scumm/script_v7he.cpp
@@ -511,7 +511,7 @@ void ScummEngine_v7he::o7_startSound() {
break;
default:
- break;
+ error("o7_startSound invalid case %d", op);
}
}