diff options
| -rw-r--r-- | scumm/intern.h | 2 | ||||
| -rw-r--r-- | scumm/script_v2.cpp | 59 | ||||
| -rw-r--r-- | scumm/script_v5.cpp | 16 | ||||
| -rw-r--r-- | scumm/scumm.h | 4 | ||||
| -rw-r--r-- | scumm/vars.cpp | 5 | 
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;  | 
