diff --git a/scumm/intern.h b/scumm/intern.h index 8f428021035..bf1ec6b3502 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 971da452c73..3edc6b503c1 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 7fb712c5a90..63cebc892d8 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();