[Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.272,1.273 intern.h,2.205,2.206 script_v6he.cpp,2.100,2.101 script_v72he.cpp,2.30,2.31 script_v7he.cpp,2.51,2.52 scumm.cpp,1.158,1.159 scumm.h,1.458,1.459

Travis Howell kirben at users.sourceforge.net
Sat Aug 28 07:06:03 CEST 2004


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10436/scumm

Modified Files:
	actor.cpp intern.h script_v6he.cpp script_v72he.cpp 
	script_v7he.cpp scumm.cpp scumm.h 
Log Message:

Revert last change, was wrong opcode.
Add a few more HE 7 opcodes


Index: actor.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/actor.cpp,v
retrieving revision 1.272
retrieving revision 1.273
diff -u -d -r1.272 -r1.273
--- actor.cpp	28 Aug 2004 03:18:49 -0000	1.272
+++ actor.cpp	28 Aug 2004 14:05:31 -0000	1.273
@@ -928,6 +928,9 @@
 }
 
 void ScummEngine::processActors() {
+	if (_skipProcessActors)
+		return;
+
 	int numactors = 0;
 
 	// TODO : put this actors as a member array. It never has to grow or shrink

Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.205
retrieving revision 2.206
diff -u -d -r2.205 -r2.206
--- intern.h	28 Aug 2004 11:01:01 -0000	2.205
+++ intern.h	28 Aug 2004 14:05:32 -0000	2.206
@@ -623,6 +623,7 @@
 	void o7_getActorRoom();
 	void o7_resourceRoutines();
 	void o7_quitPauseRestart();
+	void o7_kernelSetFunctions();
 	void o7_unknownED();
 	void o7_stringLen();
 	void o7_unknownEF();
@@ -690,7 +691,6 @@
 	void o72_wordArrayIndexedWrite();
 	void o72_compareStackList();
 	void o72_unknown1C();
-	void o72_unknown26();
 	void o72_unknown50();
 	void o72_wordArrayInc();
 	void o72_objectX();
@@ -704,6 +704,7 @@
 	void o72_unknown62();
 	void o72_getArrayDimSize();
 	void o72_getNumFreeArrays();
+	void o72_pickupObject();
 	void o72_arrayOps();
 	void o72_dimArray();
 	void o72_dim2dimArray();

Index: script_v6he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6he.cpp,v
retrieving revision 2.100
retrieving revision 2.101
diff -u -d -r2.100 -r2.101
--- script_v6he.cpp	28 Aug 2004 07:20:04 -0000	2.100
+++ script_v6he.cpp	28 Aug 2004 14:05:32 -0000	2.101
@@ -778,16 +778,6 @@
 	case 5:
 		//Used before mini games in 3DO versions, seems safe to ignore.
 		break;
-	case 21:
-		_skipDrawObject = 1;
-		break;
-	case 22:
-		_skipDrawObject = 0;
-		break;
-	case 23:
-		_charset->clearCharsetMask();
-		_fullRedraw = 1;
-		break;
 	default:
 		warning("o6_kernelSetFunctions: default case %d (param count %d)", args[0], num);
 		break;

Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.30
retrieving revision 2.31
diff -u -d -r2.30 -r2.31
--- script_v72he.cpp	28 Aug 2004 11:01:01 -0000	2.30
+++ script_v72he.cpp	28 Aug 2004 14:05:32 -0000	2.31
@@ -93,7 +93,7 @@
 		/* 24 */
 		OPCODE(o6_invalid),
 		OPCODE(o6_invalid),
-		OPCODE(o72_unknown26),
+		OPCODE(o6_invalid),
 		OPCODE(o6_invalid),
 		/* 28 */
 		OPCODE(o6_invalid),
@@ -211,7 +211,7 @@
 		OPCODE(o6_animateActor),
 		OPCODE(o6_doSentence),
 		/* 84 */
-		OPCODE(o7_pickupObject),
+		OPCODE(o72_pickupObject),
 		OPCODE(o6_loadRoomWithEgo),
 		OPCODE(o6_invalid),
 		OPCODE(o6_getRandomNumber),
@@ -297,7 +297,7 @@
 		OPCODE(o6_distPtPt),
 		/* C8 */
 		OPCODE(o6_kernelGetFunctions),
-		OPCODE(o6_kernelSetFunctions),
+		OPCODE(o7_kernelSetFunctions),
 		OPCODE(o6_delayFrames),
 		OPCODE(o6_pickOneOf),
 		/* CC */
@@ -563,8 +563,11 @@
 }
 
 void ScummEngine_v72he::o72_unknown1C() {
-	// For Pajame Sam 2
-	// Maybe HE 7.3?
+	// HE 90+ specific
+	if (_heversion < 90)
+		error("Invalid opcode '%x' at %x", _opcode, _scriptPointer - _scriptOrgPointer);
+
+	// For Pajame Sam 2 demo
 	// Incomplete
 	int value = fetchScriptByte();
 	value -= 46;
@@ -580,55 +583,6 @@
 	warning("o72_unknown1C stub (%d)", value);
 }
 
-void ScummEngine_v72he::o72_unknown26() {
-	// Maybe HE 7.3?
-	// Incomplete
-	int args[16];
-	int subOp = fetchScriptByte();
-	switch (subOp) {
-		case 30:
-		case 31:
-		case 32:
-		case 33:
-		case 34:
-		case 35:
-		case 36:
-		case 37:
-		case 38:
-		case 39:
-		case 43:
-		case 52:
-		case 63:
-		case 68:
-		case 82:
-		case 92:
-		case 97:
-		case 98:
-		case 124:
-			pop();
-			break;
-		case 42:
-		case 198:
-			pop();
-			pop();
-			break;
-		case 45:
-			pop();
-			pop();
-			pop();
-			break;
-		case 125:
-			getStackList(args, ARRAYSIZE(args));
-			pop();
-			break;
-		default:
-			error("o72_unknown26: Unknown case %d", subOp);
-	}
-	push(0);
-
-	warning("o72_unknown26 stub (%d)", subOp);
-}
-
 void ScummEngine_v72he::o72_wordArrayWrite() {
 	int a = pop();
 	writeArray(fetchScriptWord(), 0, pop(), a);
@@ -815,6 +769,19 @@
 	push (num);
 }
 
+void ScummEngine_v72he::o72_pickupObject() {
+	int obj, room;
+
+	room = pop();
+	obj = pop();
+	if (room == 0)
+		room = getObjectRoom(obj);
+
+	addObjectToInventory(obj, room);
+	putOwner(obj, VAR(VAR_EGO));
+	runInventoryScript(obj);
+}
+
 void ScummEngine_v72he::o72_arrayOps() {
 	byte subOp = fetchScriptByte();
 	int array = 0;

Index: script_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v7he.cpp,v
retrieving revision 2.51
retrieving revision 2.52
diff -u -d -r2.51 -r2.52
--- script_v7he.cpp	28 Aug 2004 09:19:52 -0000	2.51
+++ script_v7he.cpp	28 Aug 2004 14:05:32 -0000	2.52
@@ -297,7 +297,7 @@
 		OPCODE(o6_distPtPt),
 		/* C8 */
 		OPCODE(o6_kernelGetFunctions),
-		OPCODE(o6_kernelSetFunctions),
+		OPCODE(o7_kernelSetFunctions),
 		OPCODE(o6_delayFrames),
 		OPCODE(o6_pickOneOf),
 		/* CC */
@@ -538,7 +538,6 @@
 	runInventoryScript(obj);									/* Difference */
 }
 
-
 void ScummEngine_v7he::o7_getActorRoom() {
 	int act = pop();
 
@@ -720,6 +719,45 @@
 	warning("stub o7_unknownED (%d, %d, %d)", c, b, a);
 }
 
+void ScummEngine_v7he::o7_kernelSetFunctions() {
+	int args[29];
+	int num;
+
+	num = getStackList(args, ARRAYSIZE(args));
+
+	switch (args[0]) {
+	case 1:
+		// Used to restore images when decorating cake in
+		// Fatty Bear's Birthday Surprise
+		virtScreenLoad(args[1], args[2], args[3], args[4], args[5]);
+		break;
+	case 20:
+		// Clear/stop unknown animation queue
+		break;
+	case 21:
+		_skipDrawObject = 1;
+		break;
+	case 22:
+		_skipDrawObject = 0;
+		break;
+	case 23:
+		_charset->clearCharsetMask();
+		_fullRedraw = 1;
+		break;
+	case 24:
+		_skipProcessActors = 1;
+		_fullRedraw = 1;
+		break;
+	case 25:
+		_skipProcessActors = 0;
+		_fullRedraw = 1;
+		break;
+	default:
+		error("o6_kernelSetFunctions: default case %d (param count %d)", args[0], num);
+		break;
+	}
+}
+
 void ScummEngine_v7he::o7_stringLen() {
 	int id, len;
 	byte *addr;

Index: scumm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.cpp,v
retrieving revision 1.158
retrieving revision 1.159
diff -u -d -r1.158 -r1.159
--- scumm.cpp	28 Aug 2004 10:20:02 -0000	1.158
+++ scumm.cpp	28 Aug 2004 14:05:32 -0000	1.159
@@ -654,6 +654,7 @@
 	_V1_talkingActor = 0;
 
 	_skipDrawObject = 0;
+	_skipProcessActors = 0;
 	_heSndSoundId = 0;
 	_heSndOffset = 0;
 	_heSndTimer = 0;

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.458
retrieving revision 1.459
diff -u -d -r1.458 -r1.459
--- scumm.h	28 Aug 2004 04:14:33 -0000	1.458
+++ scumm.h	28 Aug 2004 14:05:33 -0000	1.459
@@ -1044,7 +1044,7 @@
 	byte _roomPalette[256];
 	byte *_shadowPalette;
 	int _heSndSoundFreq, _heSndOffset, _heSndTimer, _heSndSoundId, _heSndLoop;
-	bool _skipDrawObject;
+	bool _skipDrawObject, _skipProcessActors;
 	int _timers[4];
 
 protected:





More information about the Scummvm-git-logs mailing list