aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorMax Horn2002-12-24 00:41:59 +0000
committerMax Horn2002-12-24 00:41:59 +0000
commit2da14e0fa16772647bdf279936e834a4dd35b443 (patch)
tree5169baf33f4981c2c5db3540c9bc199f01cce2a1 /scumm
parentfcb708e1657fd77a60237b039d40bb5e6f5e1a99 (diff)
downloadscummvm-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.h2
-rw-r--r--scumm/script_v6.cpp18
-rw-r--r--scumm/script_v8.cpp38
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);
}