[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.189,2.190 script.cpp,1.176,1.177 script_v6.cpp,1.386,1.387 script_v6he.cpp,2.90,2.91 script_v72he.cpp,2.7,2.8 script_v7he.cpp,2.44,2.45

Travis Howell kirben at users.sourceforge.net
Tue Aug 24 04:18:05 CEST 2004


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

Modified Files:
	intern.h script.cpp script_v6.cpp script_v6he.cpp 
	script_v72he.cpp script_v7he.cpp 
Log Message:

Remove some old/duplicate code.
Add a few more functions/stubs for HE 7.2
Moved HE 7.2 o_resourceRoutine() specifics.


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.189
retrieving revision 2.190
diff -u -d -r2.189 -r2.190
--- intern.h	23 Aug 2004 14:11:53 -0000	2.189
+++ intern.h	24 Aug 2004 11:17:27 -0000	2.190
@@ -580,8 +580,6 @@
 	void o6_roomOps();
 	void o6_actorOps();
 	void o6_wait();
-	void o6_soundKludge();
-	void o6_dummy();
 	void o6_kernelSetFunctions();
 	void o6_kernelGetFunctions();
 	void o6_openFile();
@@ -624,6 +622,7 @@
 	void o7_startSound();
 	void o7_pickupObject();
 	void o7_getActorRoom();
+	void o7_resourceRoutines();
 	void o7_quitPauseRestart();
 	void o7_stringLen();
 	void o7_readINI();
@@ -656,8 +655,7 @@
 
 	/* Version 7 script opcodes */
 	void o72_getString();
-	void o72_objectX();
-	void o72_objectY();
+	void o72_compareStackList();
 	void o72_startScript();
 	void o72_startObject();
 	void o72_drawObject();
@@ -667,6 +665,7 @@
 	void o72_dimArray();
 	void o72_dim2dimArray();
 	void o72_jumpToScript();
+	void o72_getPixel();
 	void o72_stringLen();
 	void o72_readINI();
 	void o72_unknownF4();

Index: script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script.cpp,v
retrieving revision 1.176
retrieving revision 1.177
diff -u -d -r1.176 -r1.177
--- script.cpp	21 Aug 2004 09:02:45 -0000	1.176
+++ script.cpp	24 Aug 2004 11:17:28 -0000	1.177
@@ -349,6 +349,9 @@
 
 /* Nuke arrays based on script */
 void ScummEngine::nukeArrays(int script) {
+	//FIXME
+	return;
+
 	int i;
 
 	if (!(_features & GF_HUMONGOUS) || !script)

Index: script_v6.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6.cpp,v
retrieving revision 1.386
retrieving revision 1.387
diff -u -d -r1.386 -r1.387
--- script_v6.cpp	24 Aug 2004 05:04:14 -0000	1.386
+++ script_v6.cpp	24 Aug 2004 11:17:28 -0000	1.387
@@ -1617,82 +1617,6 @@
 			loadFlObject(obj, room);
 			break;
 		}
-	case 120: 					/* queue ? for load */
-		{
-			if (_heversion < 70)
-				error("o6_resourceRoutines: default case %d", op);
-			
-			debug(1,"stub queueload resource 2, %d", pop());
-			// QL_QueGlobForLoad(2, pop(), 1);
-			break;
-		}
-	case 121: 
-		{
-			if (_heversion < 70)
-				error("o6_resourceRoutines: default case %d", op);
-
-			debug(1,"stub queueload resource 4, %d", pop());
-			// QL_QueGlobForLoad(4, pop(), 1);
-			break;
-		}
-	case 122: 
-		{
-			if (_heversion < 70)
-				error("o6_resourceRoutines: default case %d", op);
-
-			debug(1,"stub queueload resource 3, %d", pop());
-			// QL_QueGlobForLoad(3, pop(), 1);
-			break;
-		}
-	case 123:
-		{
-			if (_heversion < 70)
-				error("o6_resourceRoutines: default case %d", op);
-
-			resid = pop();
-			debug(1,"stub queueload resource 18, %d", resid);
-			// QL_QueGlobForLoad(18, resid, 1);
-			// QL_QueGlobForLoad(1, resid, 1);
-			break;
-		}
-	case 201:
-		{
-			if (_heversion < 70)
-				error("o6_resourceRoutines: default case %d", op);
-
-			resid = pop();
-			ensureResourceLoaded(rtImage, resid);
-			break;
-		}
-	case 202:
-		{
-			if (_heversion < 70)
-				error("o6_resourceRoutines: default case %d", op);
-
-			resid = pop();
-			lock(rtImage, resid);
-			break;
-		}
-	case 203:
-		{
-			if (_heversion < 70)
-				error("o6_resourceRoutines: default case %d", op);
-
-			resid = pop();
-			debug(1,"stub stub queueload resource 19, %d", resid);
-			// QL_QueGlobForLoad(19, resid, 1);
-			break;
-		}
-	case 233:
-		resid = pop();
-		debug(1,"stub o6_resourceRoutines resource %d, 1", resid);
-		// foo(resid, 1);
-		break;
-	case 235:
-		resid = pop();
-		debug(1,"stub o6_resourceRoutines resource %d, 0", resid);
-		// foo(resid, 0);
-		break;
 	default:
 		error("o6_resourceRoutines: default case %d", op);
 	}

Index: script_v6he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6he.cpp,v
retrieving revision 2.90
retrieving revision 2.91
diff -u -d -r2.90 -r2.91
--- script_v6he.cpp	23 Aug 2004 09:18:55 -0000	2.90
+++ script_v6he.cpp	24 Aug 2004 11:17:28 -0000	2.91
@@ -529,7 +529,12 @@
 		_saveLoadSlot = 1;
 		_saveTemporaryState = true;
 		break;
-	case 234:
+	case 234:		// HE 7.2
+		b = pop();
+		a = pop();
+		warning("o6_roomOps: case %d (%d, %d)", op, b, a);
+		break;
+	case 236:		// HE 7.2
 		b = pop();
 		a = pop();
 		warning("o6_roomOps: case %d (%d, %d)", op, b, a);
@@ -740,15 +745,6 @@
 	o6_breakHere();
 }
 
-void ScummEngine_v6he::o6_soundKludge() {
-	int list[16];
-	getStackList(list, ARRAYSIZE(list));
-}
-
-void ScummEngine_v6he::o6_dummy() {
-	stopObjectCode();
-}
-
 void ScummEngine_v6he::o6_kernelSetFunctions() {
 	int args[29];
 	int num;
@@ -1230,7 +1226,7 @@
 void ScummEngine_v6he::decodeParseString(int m, int n) {
 	byte b;
 	int i, color;
-	int args[16];
+	int args[31];
 
 	b = fetchScriptByte();
 
@@ -1265,7 +1261,26 @@
 		_string[m].no_talk_anim = true;
 		break;
 	case 75:		// SO_TEXTSTRING
+		switch (m) {
+		case 0:
+			actorTalk(_scriptPointer);
+			break;
+		case 1:
+			drawString(1, _scriptPointer);
+			break;
+		case 2:
+			unkMessage1(_scriptPointer);
+			break;
+		case 3:
+			unkMessage2(_scriptPointer);
+			break;
+		}
+		_scriptPointer += resStrLen(_scriptPointer) + 1;
+
+		break;
 	case 194:		// HE 7.2
+		getStackList(args, ARRAYSIZE(args));
+		pop();
 		switch (m) {
 		case 0:
 			actorTalk(_scriptPointer);

Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.7
retrieving revision 2.8
diff -u -d -r2.7 -r2.8
--- script_v72he.cpp	24 Aug 2004 05:04:14 -0000	2.7
+++ script_v72he.cpp	24 Aug 2004 11:17:28 -0000	2.8
@@ -79,7 +79,7 @@
 		OPCODE(o6_land),
 		OPCODE(o6_lor),
 		OPCODE(o6_pop),
-		OPCODE(o6_invalid),
+		OPCODE(o72_compareStackList),
 		/* 1C */
 		OPCODE(o6_invalid),
 		OPCODE(o6_invalid),
@@ -151,8 +151,8 @@
 		OPCODE(o6_invalid),
 		OPCODE(o6_wordArrayInc),
 		/* 54 */
-		OPCODE(o72_objectX),
-		OPCODE(o72_objectY),
+		OPCODE(o6_getObjectX),
+		OPCODE(o6_getObjectY),
 		OPCODE(o6_byteVarDec),
 		OPCODE(o6_wordVarDec),
 		/* 58 */
@@ -327,7 +327,7 @@
 		OPCODE(o6_rename),
 		/* E0 */
 		OPCODE(o6_soundOps),
-		OPCODE(o6_getPixel),
+		OPCODE(o72_getPixel),
 		OPCODE(o6_localizeArray),
 		OPCODE(o6_pickVarRandom),
 		/* E4 */
@@ -390,29 +390,21 @@
 	fetchScriptWord();
 }
 
-void ScummEngine_v72he::o72_objectX() {
-	int object = pop();
-	int objnum = getObjectIndex(object);
-
-	if (objnum == -1) {
-		push(0);
-		return;
-	}
-
-	push(_objs[objnum].x_pos);
-}
-
-
-void ScummEngine_v72he::o72_objectY() {
-	int object = pop();
-	int objnum = getObjectIndex(object);
+void ScummEngine_v72he::o72_compareStackList() {
+	int args[128], i;
+	int num = getStackList(args, ARRAYSIZE(args));
+	int value = pop();
 
-	if (objnum == -1) {
+	if (num) {
+		for (i = 1; i < 128; i++) {
+			if (args[i] = value) {
+				push(1);
+				break;
+			}
+		}
+	} else {
 		push(0);
-		return;
 	}
-
-	push(_objs[objnum].y_pos);
 }
 
 void ScummEngine_v72he::o72_startScript() {
@@ -483,9 +475,11 @@
 }
 
 void ScummEngine_v72he::o72_unknown63() {
-	int a = fetchScriptByte();
-	warning("o72_unknown63 stub (%d)", a);
-	push(1);
+	int subOp = fetchScriptByte();
+	//int arrayId = readVar(fetchScriptWord());
+
+	warning("o72_unknown63 stub (%d)", subOp);
+	push(0);
 }
 
 void ScummEngine_v72he::o72_arrayOps() {
@@ -610,6 +604,28 @@
 	runScript(script, (flags == 199 || flags == 200), (flags == 195 || flags == 200), args);
 }
 
+void ScummEngine_v72he::o72_getPixel() {
+	byte area;
+	int x = pop();
+	int y = pop();
+	int subOp = fetchScriptByte();
+
+	if (subOp != 218 && subOp != 219)
+		return;
+
+	VirtScreen *vs = findVirtScreen(y);
+	if (vs == NULL || x > _screenWidth - 1 || x < 0) {
+		push(-1);
+		return;
+	}
+
+	if (subOp == 218)
+		area = *vs->getBackPixels(x, y - vs->topline);
+	else
+		area = *vs->getPixels(x, y - vs->topline);
+	push(area);
+}
+
 void ScummEngine_v72he::o72_stringLen() {
 	int a, len;
 	byte *addr;

Index: script_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v7he.cpp,v
retrieving revision 2.44
retrieving revision 2.45
diff -u -d -r2.44 -r2.45
--- script_v7he.cpp	23 Aug 2004 14:03:54 -0000	2.44
+++ script_v7he.cpp	24 Aug 2004 11:17:28 -0000	2.45
@@ -245,7 +245,7 @@
 		OPCODE(o6_isSoundRunning),
 		OPCODE(o6_setBoxFlags),
 		OPCODE(o6_invalid),
-		OPCODE(o6_resourceRoutines),
+		OPCODE(o7_resourceRoutines),
 		/* 9C */
 		OPCODE(o6_roomOps),
 		OPCODE(o6_actorOps),
@@ -543,6 +543,137 @@
 		push(getObjectRoom(act));
 }
 
+void ScummEngine_v7he::o7_resourceRoutines() {
+	int resid, op;
+	op = fetchScriptByte();
+
+	switch (op) {
+	case 100:		// SO_LOAD_SCRIPT
+		resid = pop();
+		ensureResourceLoaded(rtScript, resid);
+		break;
+	case 101:		// SO_LOAD_SOUND
+		resid = pop();
+		ensureResourceLoaded(rtSound, resid);
+		break;
+	case 102:		// SO_LOAD_COSTUME
+		resid = pop();
+		ensureResourceLoaded(rtCostume, resid);
+		break;
+	case 103:		// SO_LOAD_ROOM
+		resid = pop();
+		ensureResourceLoaded(rtRoom, resid);
+		break;
+	case 104:		// SO_NUKE_SCRIPT
+		resid = pop();
+		setResourceCounter(rtScript, resid, 0x7F);
+		break;
+	case 105:		// SO_NUKE_SOUND
+		resid = pop();
+		setResourceCounter(rtSound, resid, 0x7F);
+		break;
+	case 106:		// SO_NUKE_COSTUME
+		resid = pop();
+		setResourceCounter(rtCostume, resid, 0x7F);
+		break;
+	case 107:		// SO_NUKE_ROOM
+		resid = pop();
+		setResourceCounter(rtRoom, resid, 0x7F);
+		break;
+	case 108:		// SO_LOCK_SCRIPT
+		resid = pop();
+		if (resid >= _numGlobalScripts)
+			break;
+		lock(rtScript, resid);
+		break;
+	case 109:		// SO_LOCK_SOUND
+		resid = pop();
+		lock(rtSound, resid);
+		break;
+	case 110:		// SO_LOCK_COSTUME
+		resid = pop();
+		lock(rtCostume, resid);
+		break;
+	case 111:		// SO_LOCK_ROOM
+		resid = pop();
+		if (resid > 0x7F)
+			resid = _resourceMapper[resid & 0x7F];
+		lock(rtRoom, resid);
+		break;
+	case 112:		// SO_UNLOCK_SCRIPT
+		resid = pop();
+		if (resid >= _numGlobalScripts)
+			break;
+		unlock(rtScript, resid);
+		break;
+	case 113:		// SO_UNLOCK_SOUND
+		resid = pop();
+		unlock(rtSound, resid);
+		break;
+	case 114:		// SO_UNLOCK_COSTUME
+		resid = pop();
+		unlock(rtCostume, resid);
+		break;
+	case 115:		// SO_UNLOCK_ROOM
+		resid = pop();
+		if (resid > 0x7F)
+			resid = _resourceMapper[resid & 0x7F];
+		unlock(rtRoom, resid);
+		break;
+	case 116:		// SO_CLEAR_HEAP
+		/* this is actually a scumm message */
+		error("clear heap not working yet");
+		break;
+	case 117:		// SO_LOAD_CHARSET
+		resid = pop();
+		loadCharset(resid);
+		break;
+	case 118:		// SO_NUKE_CHARSET
+		resid = pop();
+		nukeCharset(resid);
+		break;
+	case 119:		// SO_LOAD_OBJECT
+		{
+			int room, obj = popRoomAndObj(&room);
+			loadFlObject(obj, room);
+			break;
+		}
+	case 120: 					/* queue for load */
+	case 121:
+	case 122:
+	case 123:
+	case 203:
+		debug(1,"stub queueload (%d) resource %d", op, pop());
+		break;
+	case 159:
+		resid = pop();
+		unlock(rtImage, resid);
+		break;
+	case 192:
+		resid = pop();
+		nukeResource(rtImage, resid);
+		break;
+	case 201:
+		resid = pop();
+		ensureResourceLoaded(rtImage, resid);
+		break;
+	case 202:
+		resid = pop();
+		lock(rtImage, resid);
+		break;
+	case 233:
+		resid = pop();
+		debug(1,"stub o7_resourceRoutines lock object %d", resid);
+		break;
+	case 235:
+		resid = pop();
+		debug(1,"stub o7_resourceRoutines unlock object %d", resid);
+		break;
+	default:
+		error("o7_resourceRoutines: default case %d", op);
+	}
+}
+
 void ScummEngine_v7he::o7_quitPauseRestart() {
 	byte subOp = fetchScriptByte();
 	int par1;





More information about the Scummvm-git-logs mailing list