aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/intern.h2
-rw-r--r--scumm/script_v2.cpp59
-rw-r--r--scumm/script_v5.cpp16
-rw-r--r--scumm/scumm.h4
-rw-r--r--scumm/vars.cpp5
5 files changed, 24 insertions, 62 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index dc3a4d30d6..e84183af55 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -262,13 +262,11 @@ protected:
void o2_matrixOps();
void o2_setCameraAt();
void o2_roomOps();
- void o2_findObject();
void o2_cutscene();
void o2_chainScript();
void o2_pickupObject();
void o2_setObjectName();
void o2_cursorCommand();
- void o2_getClosestObjActor();
void o2_getActorWalkBox();
void o2_endCutscene();
void o2_drawSentence();
diff --git a/scumm/script_v2.cpp b/scumm/script_v2.cpp
index b15be089ac..af01a46258 100644
--- a/scumm/script_v2.cpp
+++ b/scumm/script_v2.cpp
@@ -99,7 +99,7 @@ void Scumm_v2::setupOpcodes() {
OPCODE(o2_roomOps),
/* 34 */
OPCODE(o5_getDist),
- OPCODE(o2_findObject),
+ OPCODE(o5_findObject),
OPCODE(o2_walkActorToObject),
OPCODE(o2_setState01),
/* 38 */
@@ -160,7 +160,7 @@ void Scumm_v2::setupOpcodes() {
/* 64 */
OPCODE(o2_loadRoomWithEgo),
OPCODE(o2_drawObject),
- OPCODE(o2_getClosestObjActor),
+ OPCODE(o5_getClosestObjActor),
OPCODE(o2_clearState04),
/* 68 */
OPCODE(o5_isScriptRunning),
@@ -179,7 +179,7 @@ void Scumm_v2::setupOpcodes() {
OPCODE(o2_roomOps),
/* 74 */
OPCODE(o5_getDist),
- OPCODE(o2_findObject),
+ OPCODE(o5_findObject),
OPCODE(o2_walkActorToObject),
OPCODE(o2_clearState01),
/* 78 */
@@ -259,7 +259,7 @@ void Scumm_v2::setupOpcodes() {
OPCODE(o2_roomOps),
/* B4 */
OPCODE(o5_getDist),
- OPCODE(o2_findObject),
+ OPCODE(o5_findObject),
OPCODE(o2_walkActorToObject),
OPCODE(o2_setState02),
/* B8 */
@@ -320,7 +320,7 @@ void Scumm_v2::setupOpcodes() {
/* E4 */
OPCODE(o2_loadRoomWithEgo),
OPCODE(o2_drawObject),
- OPCODE(o2_getClosestObjActor),
+ OPCODE(o5_getClosestObjActor),
OPCODE(o2_clearState04),
/* E8 */
OPCODE(o5_isScriptRunning),
@@ -339,7 +339,7 @@ void Scumm_v2::setupOpcodes() {
OPCODE(o2_roomOps),
/* F4 */
OPCODE(o5_getDist),
- OPCODE(o2_findObject),
+ OPCODE(o5_findObject),
OPCODE(o2_walkActorToObject),
OPCODE(o2_clearState01),
/* F8 */
@@ -450,9 +450,9 @@ void Scumm_v2::o2_getObjY() {
if (whereIsObject(obj) != WIO_NOT_FOUND) {
ObjectData *od = &_objs[getObjectIndex(obj)];
- _vars[_resultVarNumber] = od->walk_y >> 5;
+ setResult(od->walk_y >> 5);
} else {
- _vars[_resultVarNumber] = 0xFF;
+ setResult(0xFF);
}
}
@@ -481,7 +481,7 @@ void Scumm_v2::o2_getBitVar() {
int bit_offset = bit_var & 0x0f;
bit_var >>= 4;
- _vars[_resultVarNumber] = (_vars[bit_var] & (1 << bit_offset)) ? 1 : 0;
+ setResult((_vars[bit_var] & (1 << bit_offset)) ? 1 : 0);
}
void Scumm_v2::ifStateCommon(byte type) {
@@ -944,7 +944,7 @@ void Scumm_v2::o2_actorFromPos() {
getResultPos();
x = getVarOrDirectByte(0x80);
y = getVarOrDirectByte(0x40);
- _vars[_resultVarNumber] = getActorFromPos(x, y);
+ setResult(getActorFromPos(x, y));
}
void Scumm_v2::o2_saveLoadGame() {
@@ -952,7 +952,7 @@ void Scumm_v2::o2_saveLoadGame() {
byte a = getVarOrDirectByte(0x80);
error("TODO: o2_saveLoadGame(%d)", a);
- _vars[_resultVarNumber] = 0;
+ setResult(0);
}
void Scumm_v2::o2_getActorX() {
@@ -960,7 +960,7 @@ void Scumm_v2::o2_getActorX() {
getResultPos();
a = getVarOrDirectByte(0x80);
- _vars[_resultVarNumber] = getObjX(a);
+ setResult(getObjX(a));
}
void Scumm_v2::o2_getActorY() {
@@ -968,7 +968,7 @@ void Scumm_v2::o2_getActorY() {
getResultPos();
a = getVarOrDirectByte(0x80);
- _vars[_resultVarNumber] = getObjY(a);
+ setResult(getObjY(a));
}
void Scumm_v2::o2_loadRoomWithEgo() {
@@ -1053,13 +1053,6 @@ void Scumm_v2::o2_roomOps() {
}
}
-void Scumm_v2::o2_findObject() {
- getResultPos();
- int x = getVarOrDirectByte(0x80);
- int y = getVarOrDirectByte(0x40);
- _vars[_resultVarNumber] = findObject(x, y);
-}
-
void Scumm_v2::o2_cutscene() {
warning("TODO o2_cutscene()");
}
@@ -1142,36 +1135,14 @@ void Scumm_v2::o2_cursorCommand() {
warning("TODO: o2_cursorCommand()");
}
-void Scumm_v2::o2_getClosestObjActor() {
- int obj;
- int act;
- int closest_obj = 0xFF, closest_dist = 0xFF;
- int dist;
-
- getResultPos();
-
- act = getVarOrDirectWord(0x80);
- obj = _vars[VAR_ACTOR_RANGE_MAX];
-
- do {
- dist = getObjActToObjActDist(act, obj);
- if (dist < closest_dist) {
- closest_dist = dist;
- closest_obj = obj;
- }
- } while (--obj >= _vars[VAR_ACTOR_RANGE_MIN]);
-
- _vars[_resultVarNumber] = closest_dist;
-}
-
void Scumm_v2::o2_getActorWalkBox() {
Actor *a;
getResultPos();
a = derefActorSafe(getVarOrDirectByte(0x80), "o2_getActorWalkbox");
if (a)
- _vars[_resultVarNumber] = a->walkbox;
+ setResult(a->walkbox);
else
- _vars[_resultVarNumber] = 0;
+ setResult(0);
}
void Scumm_v2::o2_drawSentence() {
diff --git a/scumm/script_v5.cpp b/scumm/script_v5.cpp
index 0916729919..e3bcdaa8a1 100644
--- a/scumm/script_v5.cpp
+++ b/scumm/script_v5.cpp
@@ -889,17 +889,17 @@ void Scumm_v5::o5_faceActor() {
}
void Scumm_v5::o5_findInventory() {
- int t;
getResultPos();
- t = getVarOrDirectByte(0x80);
- setResult(findInventory(t, getVarOrDirectByte(0x40)));
+ int x = getVarOrDirectByte(0x80);
+ int y = getVarOrDirectByte(0x40);
+ setResult(findInventory(x, y));
}
void Scumm_v5::o5_findObject() {
- int t;
getResultPos();
- t = getVarOrDirectWord(0x80);
- setResult(findObject(t, getVarOrDirectWord(0x40)));
+ int x = getVarOrDirectByte(0x80);
+ int y = getVarOrDirectByte(0x40);
+ setResult(findObject(x, y));
}
void Scumm_v5::o5_freezeScripts() {
@@ -1078,7 +1078,7 @@ void Scumm_v5::o5_getClosestObjActor() {
getResultPos();
act = getVarOrDirectWord(0x80);
- obj = _vars[VAR_V5_OBJECT_HI];
+ obj = _vars[VAR_ACTOR_RANGE_MAX];
do {
dist = getObjActToObjActDist(act, obj);
@@ -1086,7 +1086,7 @@ void Scumm_v5::o5_getClosestObjActor() {
closest_dist = dist;
closest_obj = obj;
}
- } while (--obj >= _vars[VAR_V5_OBJECT_LO]);
+ } while (--obj >= _vars[VAR_ACTOR_RANGE_MIN]);
setResult(closest_dist);
}
diff --git a/scumm/scumm.h b/scumm/scumm.h
index bfee86cace..a9a6fa1f59 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -615,6 +615,7 @@ public:
int _roomResource; // FIXME - should be protected but Sound::pauseSounds accesses it
byte *findResourceData(uint32 tag, byte *ptr);
int getResourceDataSize(byte *ptr);
+ void dumpResource(char *tag, int index, byte *ptr, int length = -1);
protected:
int getArrayId();
@@ -627,7 +628,6 @@ protected:
void expireResources(uint32 size);
void freeResources();
void destroy();
- void dumpResource(char *tag, int index, byte *ptr, int length = -1);
public:
/* Should be in Object class */
@@ -1111,8 +1111,6 @@ public:
byte VAR_V5_DRAWFLAGS;
byte VAR_MI1_TIMER;
- byte VAR_V5_OBJECT_LO;
- byte VAR_V5_OBJECT_HI;
byte VAR_V5_TALK_STRING_Y;
byte VAR_V5_CHARFLAG;
diff --git a/scumm/vars.cpp b/scumm/vars.cpp
index 8fefcfa4bd..07ec86dd97 100644
--- a/scumm/vars.cpp
+++ b/scumm/vars.cpp
@@ -97,9 +97,6 @@ void Scumm::setupScummVars() {
VAR_V5_DRAWFLAGS = 9;
VAR_MI1_TIMER = 14;
- VAR_V5_OBJECT_LO = 15;
- VAR_V5_OBJECT_HI = 16;
-
VAR_V5_TALK_STRING_Y = 54;
VAR_V5_CHARFLAG = 60;
@@ -204,8 +201,6 @@ void Scumm_v7::setupScummVars() {
//VAR_V5_DRAWFLAGS = 9;
VAR_MI1_TIMER = 14;
- VAR_V5_OBJECT_LO = 15;
- VAR_V5_OBJECT_HI = 16;
VAR_V5_TALK_STRING_Y = 54;
VAR_V5_CHARFLAG = 60;