aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2004-06-24 15:13:00 +0000
committerTravis Howell2004-06-24 15:13:00 +0000
commit08cebae47298a15895fc35e8755dd5bfa85ff6eb (patch)
tree2de67b58f8e84a40a797300a1d5b2ca0d0606289
parentd6cfe9a5e90ffc6697e8ac621e93e309ea0fa034 (diff)
downloadscummvm-rg350-08cebae47298a15895fc35e8755dd5bfa85ff6eb.tar.gz
scummvm-rg350-08cebae47298a15895fc35e8755dd5bfa85ff6eb.tar.bz2
scummvm-rg350-08cebae47298a15895fc35e8755dd5bfa85ff6eb.zip
Add some more HE7 differences.
svn-id: r14032
-rw-r--r--scumm/intern.h1
-rw-r--r--scumm/script_v6he.cpp5
-rw-r--r--scumm/script_v7he.cpp14
3 files changed, 16 insertions, 4 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index 8f42802103..bf1ec6b350 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -635,6 +635,7 @@ protected:
void o7_unknownFA();
void o7_unknownFB();
void o7_quitPauseRestart();
+ void o7_getActorRoom();
void o7_pickupObject();
void o7_startSound();
};
diff --git a/scumm/script_v6he.cpp b/scumm/script_v6he.cpp
index 971da452c7..3edc6b503c 100644
--- a/scumm/script_v6he.cpp
+++ b/scumm/script_v6he.cpp
@@ -243,7 +243,7 @@ void ScummEngine_v6he::setupOpcodes() {
/* 98 */
OPCODE(o6_isSoundRunning),
OPCODE(o6_setBoxFlags),
- OPCODE(o6_createBoxMatrix),
+ OPCODE(o6_invalid),
OPCODE(o6_resourceRoutines),
/* 9C */
OPCODE(o6_roomOps),
@@ -492,7 +492,8 @@ void ScummEngine_v6he::o6_roomOps() {
c = pop();
b = pop();
a = pop();
- setupShadowPalette(a, b, c, d, e);
+ if (_heversion == 60)
+ setupShadowPalette(a, b, c, d, e);
break;
case 184: // SO_SAVE_STRING
diff --git a/scumm/script_v7he.cpp b/scumm/script_v7he.cpp
index 7fb712c5a9..63cebc892d 100644
--- a/scumm/script_v7he.cpp
+++ b/scumm/script_v7he.cpp
@@ -226,7 +226,7 @@ void ScummEngine_v7he::setupOpcodes() {
OPCODE(o6_getActorMoving),
OPCODE(o6_isScriptRunning),
/* 8C */
- OPCODE(o6_getActorRoom),
+ OPCODE(o7_getActorRoom),
OPCODE(o6_getObjectX),
OPCODE(o6_getObjectY),
OPCODE(o6_getObjectOldDir),
@@ -243,7 +243,7 @@ void ScummEngine_v7he::setupOpcodes() {
/* 98 */
OPCODE(o6_isSoundRunning),
OPCODE(o6_setBoxFlags),
- OPCODE(o6_createBoxMatrix),
+ OPCODE(o6_invalid),
OPCODE(o6_resourceRoutines),
/* 9C */
OPCODE(o6_roomOps),
@@ -645,6 +645,16 @@ void ScummEngine_v7he::o7_pickupObject() {
}
+void ScummEngine_v7he::o7_getActorRoom() {
+ int act = pop();
+
+ if (act < _numActors) {
+ Actor *a = derefActor(act, "o7_getActorRoom");
+ push(a->room);
+ } else
+ push(getObjectRoom(act));
+}
+
void ScummEngine_v7he::o7_startSound() {
byte op;
op = fetchScriptByte();