diff options
author | Max Horn | 2002-12-24 00:41:59 +0000 |
---|---|---|
committer | Max Horn | 2002-12-24 00:41:59 +0000 |
commit | 2da14e0fa16772647bdf279936e834a4dd35b443 (patch) | |
tree | 5169baf33f4981c2c5db3540c9bc199f01cce2a1 /scumm | |
parent | fcb708e1657fd77a60237b039d40bb5e6f5e1a99 (diff) | |
download | scummvm-rg350-2da14e0fa16772647bdf279936e834a4dd35b443.tar.gz scummvm-rg350-2da14e0fa16772647bdf279936e834a4dd35b443.tar.bz2 scummvm-rg350-2da14e0fa16772647bdf279936e834a4dd35b443.zip |
more V8 opcodes (mostly rerouting to V6 ones)
svn-id: r6088
Diffstat (limited to 'scumm')
-rw-r--r-- | scumm/intern.h | 2 | ||||
-rw-r--r-- | scumm/script_v6.cpp | 18 | ||||
-rw-r--r-- | scumm/script_v8.cpp | 38 |
3 files changed, 35 insertions, 23 deletions
diff --git a/scumm/intern.h b/scumm/intern.h index 8a702d009e..e85f6a6419 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -361,7 +361,7 @@ protected: void o6_kernelFunction(); void o6_getAnimateVariable(); void o6_drawBlastObject(); - void o6_getActorPriority(); + void o6_getActorLayer(); void o6_unknownCD(); void o6_bor(); void o6_band(); diff --git a/scumm/script_v6.cpp b/scumm/script_v6.cpp index 6cd1f16df1..bbcd745b76 100644 --- a/scumm/script_v6.cpp +++ b/scumm/script_v6.cpp @@ -337,7 +337,7 @@ void Scumm_v6::setupOpcodes() OPCODE(o6_invalid), OPCODE(o6_invalid), /* EC */ - OPCODE(o6_getActorPriority), + OPCODE(o6_getActorLayer), OPCODE(o6_getObjectNewDir), OPCODE(o6_invalid), OPCODE(o6_invalid), @@ -1223,7 +1223,11 @@ void Scumm_v6::o6_getRandomNumberRange() void Scumm_v6::o6_getActorMoving() { - push(derefActorSafe(pop(), "o6_getActorMoving")->moving); + Actor *a = derefActorSafe(pop(), "o6_getActorMoving"); + if (a) + push(a->moving); + else + push(0); } void Scumm_v6::o6_isScriptRunning() @@ -1238,7 +1242,11 @@ void Scumm_v6::o6_isRoomScriptRunning() void Scumm_v6::o6_getActorRoom() { - push(derefActorSafe(pop(), "o6_getActorRoom")->room); + Actor *a = derefActorSafe(pop(), "o6_getActorRoom"); + if (a) + push(a->room); + else + push(0); } void Scumm_v6::o6_getObjectX() @@ -2875,11 +2883,11 @@ void Scumm_v6::o6_pickOneOfDefault() push(i); } -void Scumm_v6::o6_getActorPriority() +void Scumm_v6::o6_getActorLayer() { Actor *a; - a = derefActorSafe(pop(), "getActorPriority"); + a = derefActorSafe(pop(), "getActorLayer"); push(a->layer); } diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp index ecda2fbc97..0d684ba488 100644 --- a/scumm/script_v8.cpp +++ b/scumm/script_v8.cpp @@ -291,8 +291,8 @@ void Scumm_v8::setupOpcodes() /* C8 */ OPCODE(o6_startScript), OPCODE(o6_startObject), - OPCODE(o6_invalid), - OPCODE(o6_invalid), + OPCODE(o6_pickOneOf), + OPCODE(o6_pickOneOfDefault), /* CC */ OPCODE(o6_invalid), OPCODE(o6_isAnyOf), @@ -317,27 +317,27 @@ void Scumm_v8::setupOpcodes() OPCODE(o6_findObject), OPCODE(o6_invalid), OPCODE(o6_invalid), - OPCODE(o6_invalid), + OPCODE(o6_findInventory), /* E0 */ + OPCODE(o6_getInventoryCount), OPCODE(o6_invalid), - OPCODE(o6_invalid), - OPCODE(o6_invalid), - OPCODE(o6_invalid), + OPCODE(o6_getActorRoom), + OPCODE(o6_getActorWalkBox), /* E4 */ - OPCODE(o6_invalid), - OPCODE(o6_invalid), - OPCODE(o6_invalid), - OPCODE(o6_invalid), + OPCODE(o6_getActorMoving), + OPCODE(o6_getActorCostume), + OPCODE(o6_getActorScaleX), + OPCODE(o6_getActorLayer), /* E8 */ - OPCODE(o6_invalid), - OPCODE(o6_invalid), - OPCODE(o6_invalid), - OPCODE(o6_invalid), + OPCODE(o6_getActorElevation), + OPCODE(o6_getActorWidth), + OPCODE(o6_getObjectNewDir), // FIXME: is this right? + OPCODE(o6_getObjectX), /* EC */ + OPCODE(o6_getObjectY), OPCODE(o6_invalid), - OPCODE(o6_invalid), - OPCODE(o6_invalid), - OPCODE(o6_invalid), + OPCODE(o6_distObjectObject), + OPCODE(o6_distPtPt), /* F0 */ OPCODE(o6_invalid), OPCODE(o6_invalid), @@ -1004,7 +1004,11 @@ void Scumm_v8::o8_cameraOps() byte subOp = fetchScriptByte(); switch (subOp) { case 0x32: // SO_CAMERA_PAUSE + warning("freezeCamera NYI"); + break; case 0x33: // SO_CAMERA_RESUME + warning("unfreezeCamera NYI"); + break; default: error("o8_cameraOps: default case %d", subOp); } |