aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2004-06-02 13:32:16 +0000
committerTravis Howell2004-06-02 13:32:16 +0000
commit3632305c6c2f86cae41aea21aaab65df659296e5 (patch)
tree0e83193c0882cf22485ad79d09db16fa2db8199b
parent86ad0e2b9f21e810cedc1b7d50bc9c6921faf866 (diff)
downloadscummvm-rg350-3632305c6c2f86cae41aea21aaab65df659296e5.tar.gz
scummvm-rg350-3632305c6c2f86cae41aea21aaab65df659296e5.tar.bz2
scummvm-rg350-3632305c6c2f86cae41aea21aaab65df659296e5.zip
Ignore imuse control code in HE games
Add missing code for o6_stampobject (From diasm.) svn-id: r13924
-rw-r--r--scumm/imuse_player.cpp3
-rw-r--r--scumm/intern.h1
-rw-r--r--scumm/script_v6.cpp24
-rw-r--r--scumm/script_v6he.cpp19
4 files changed, 18 insertions, 29 deletions
diff --git a/scumm/imuse_player.cpp b/scumm/imuse_player.cpp
index c63e42311c..39cba34369 100644
--- a/scumm/imuse_player.cpp
+++ b/scumm/imuse_player.cpp
@@ -299,6 +299,9 @@ void Player::send(uint32 b) {
case 93: // Chorus Level
part->chorusLevel(param2);
break;
+ case 116: // Unknown
+ // FIXME: Often used in puttmoon
+ break;
case 123: // All Notes Off
part->allNotesOff();
break;
diff --git a/scumm/intern.h b/scumm/intern.h
index 56f0a844e0..a8cc8ed556 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -591,7 +591,6 @@ protected:
void o6_dummy();
void o6_kernelSetFunctions();
void o6_kernelGetFunctions();
- void o6_stampObject();
void o6_openFile();
void o6_closeFile();
void o6_deleteFile();
diff --git a/scumm/script_v6.cpp b/scumm/script_v6.cpp
index 743c75038d..d7487ca41e 100644
--- a/scumm/script_v6.cpp
+++ b/scumm/script_v6.cpp
@@ -2850,7 +2850,7 @@ void ScummEngine_v6::o6_stampObject() {
int object, x, y, state;
// dummy opcode in tentacle
- if (_version == 6)
+ if (_gameId == GID_TENTACLE)
return;
// V7 version
@@ -2858,10 +2858,10 @@ void ScummEngine_v6::o6_stampObject() {
y = pop();
x = pop();
object = pop();
- if (object < 30) {
- if (state == 0) {
+ if (_version >= 7 && object < 30) {
+ if (state == 0)
state = 255;
- }
+
debug(6, "o6_stampObject: (%d at (%d,%d) scale %d)", object, x, y, state);
Actor *a = derefActor(object, "o6_stampObject");
a->scalex = state;
@@ -2873,15 +2873,21 @@ void ScummEngine_v6::o6_stampObject() {
return;
}
- if (object == 0) {
+ if (state == 0)
state = 1;
- }
+
+ int objnum = getObjectIndex(object);
+ if (objnum == 0)
+ return;
if (x != -1) {
- setObjectState(object, state, x, y);
- drawObject(getObjectIndex(object), 0);
- warning("o6_stampObject: (%d at (%d,%d) state %d)", object, x, y, state);
+ _objs[objnum].x_pos = x * 8;
+ _objs[objnum].y_pos = y * 8;
}
+
+ putState(object, state);
+ drawObject(objnum, 0);
+ debug(6, "o6_stampObject: (%d at (%d,%d) state %d)", object, x, y, state);
}
void ScummEngine_v6::o6_stopTalking() {
diff --git a/scumm/script_v6he.cpp b/scumm/script_v6he.cpp
index 393edc2504..b723db98ef 100644
--- a/scumm/script_v6he.cpp
+++ b/scumm/script_v6he.cpp
@@ -1083,25 +1083,6 @@ void ScummEngine_v6he::virtScreenSavePackByte(vsPackCtx *ctx, uint8 *&dst, int l
++ctx->size;
}
-void ScummEngine_v6he::o6_stampObject() {
- int object, x, y, state;
-
- state = pop();
- if (state == 0) {
- state = 1;
- }
- y = pop();
- x = pop();
- object = pop();
- int objnum = getObjectIndex(object);
- if (objnum == -1)
- return;
- _objs[objnum].x_pos = x * 8;
- _objs[objnum].y_pos = y * 8;
- putState(object, state);
- drawObject(objnum, 0);
-}
-
void ScummEngine_v6he::o6_openFile() {
int mode, len, slot, l, r;
byte filename[100];