[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.343,2.344 script_v90he.cpp,2.135,2.136 sprite_he.cpp,1.11,1.12

kirben kirben at users.sourceforge.net
Sun Feb 20 17:09:29 CET 2005


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

Modified Files:
	intern.h script_v90he.cpp sprite_he.cpp 
Log Message:

Add functions for o90_getSpriteGroupInfo


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.343
retrieving revision 2.344
diff -u -d -r2.343 -r2.344
--- intern.h	21 Feb 2005 00:59:50 -0000	2.343
+++ intern.h	21 Feb 2005 01:08:48 -0000	2.344
@@ -898,6 +898,14 @@
 	void spriteInfoGet_tx_ty(int spriteId, int32 &tx, int32 &ty);
 	void spriteInfoGet_field_2C_30(int spriteId, int32 &field_2C, int32 &field_30);
 
+	int spriteGroupGet_field_10(int spriteId);
+	int spriteGroupGet_field_20(int spriteId);
+	int spriteGroupGet_field_30(int spriteId);
+	int spriteGroupGet_field_34(int spriteId);
+	int spriteGroupGet_field_38(int spriteId);
+	int spriteGroupGet_field_3C(int spriteId);
+	void spriteGroupGet_tx_ty(int spriteId, int32 &tx, int32 &ty);
+
 	void spriteInfoSet_field_14(int spriteId, int value);
 	void spriteInfoSet_field_7C(int spriteId, int value);
 	void spriteInfoSet_field_80(int spriteId, int value);

Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.135
retrieving revision 2.136
diff -u -d -r2.135 -r2.136
--- script_v90he.cpp	21 Feb 2005 00:59:50 -0000	2.135
+++ script_v90he.cpp	21 Feb 2005 01:08:48 -0000	2.136
@@ -1143,35 +1143,82 @@
 }
 
 void ScummEngine_v90he::o90_getSpriteGroupInfo() {
+	int32 tx, ty;
+	int spriteId, type;
+
 	byte subOp = fetchScriptByte();
 	switch (subOp) {
 	case 8: // HE 99+
 		pop();
+		push(0);
 		break;
 	case 30:
-		pop();
+		spriteId = pop();
+		if (spriteId) {
+			spriteGroupGet_tx_ty(spriteId, tx, ty);
+			push(tx);
+		} else {
+			push(0);
+		}
 		break;
 	case 31:
-		pop();
+		spriteId = pop();
+		if (spriteId) {
+			spriteGroupGet_tx_ty(spriteId, tx, ty);
+			push(ty);
+		} else {
+			push(0);
+		}
 		break;
 	case 42: // HE 99+
-		pop();
-		pop();
+		type = pop();
+		spriteId = pop();
+		if (spriteId) {
+			switch(type) {
+			case 0:
+				push(spriteGroupGet_field_30(spriteId));
+				break;
+			case 1:
+				push(spriteGroupGet_field_34(spriteId));
+				break;
+			case 2:
+				push(spriteGroupGet_field_38(spriteId));
+				break;
+			case 3:
+				push(spriteGroupGet_field_3C(spriteId));
+				break;
+			default:
+				push(0);
+			}
+		} else {
+			push(0);
+		}
 		break;
 	case 43:
-		pop();
+		spriteId = pop();
+		if (spriteId) {
+			push(spriteGroupGet_field_10(spriteId));
+		} else {
+			push(0);
+		}
 		break;
 	case 63: // HE 99+
-		pop();
+		spriteId = pop();
+		if (spriteId) {
+			push(spriteGroupGet_field_20(spriteId));
+		} else {
+			push(0);
+		}
 		break;
 	case 139: // HE 99+
+		// dummy case
 		pop();
 		pop();
+		push(0);
 		break;
 	default:
 		error("o90_getSpriteGroupInfo: Unknown case %d", subOp);
 	}
-	push(0);
 
 	debug(1,"o90_getSpriteGroupInfo stub (%d)", subOp);
 }

Index: sprite_he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sprite_he.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- sprite_he.cpp	21 Feb 2005 00:59:50 -0000	1.11
+++ sprite_he.cpp	21 Feb 2005 01:08:48 -0000	1.12
@@ -35,6 +35,10 @@
 	spritesAllocTables(_numSprites, 64, 64);
 }
 
+//
+// spriteInfoGet functions
+//
+
 int ScummEngine_v90he::spriteInfoGet_flags_1(int spriteId) {
 	checkRange(_numSprites, 1, spriteId, "_spriteTableGet_flags_1: Invalid sprite %d");
 
@@ -182,6 +186,53 @@
 }
 
 //
+// spriteGroupGet functions
+//
+
+int ScummEngine_v90he::spriteGroupGet_field_10(int spriteId) {
+	checkRange(_numSprites, 1, spriteId, "spriteInfoGet_field_10: Invalid sprite %d");
+
+	return _spriteGroups[spriteId].field_10;
+}
+
+int ScummEngine_v90he::spriteGroupGet_field_20(int spriteId) {
+	checkRange(_numSprites, 1, spriteId, "spriteInfoGet_field_20: Invalid sprite %d");
+
+	return _spriteGroups[spriteId].field_20;
+}
+
+int ScummEngine_v90he::spriteGroupGet_field_30(int spriteId) {
+	checkRange(_numSprites, 1, spriteId, "spriteInfoGet_field_30: Invalid sprite %d");
+
+	return _spriteGroups[spriteId].field_30;
+}
+
+int ScummEngine_v90he::spriteGroupGet_field_34(int spriteId) {
+	checkRange(_numSprites, 1, spriteId, "spriteInfoGet_field_34: Invalid sprite %d");
+
+	return _spriteGroups[spriteId].field_34;
+}
+
+int ScummEngine_v90he::spriteGroupGet_field_38(int spriteId) {
+	checkRange(_numSprites, 1, spriteId, "spriteInfoGet_field_38: Invalid sprite %d");
+
+	return _spriteGroups[spriteId].field_38;
+}
+
+int ScummEngine_v90he::spriteGroupGet_field_3C(int spriteId) {
+	checkRange(_numSprites, 1, spriteId, "spriteInfoGet_field_3C: Invalid sprite %d");
+
+	return _spriteGroups[spriteId].field_3C;
+}
+
+void ScummEngine_v90he::spriteGroupGet_tx_ty(int spriteId, int32 &tx, int32 &ty) {
+	checkRange(_numSprites, 1, spriteId, "spriteGroupGet_tx_ty: Invalid sprite %d");
+
+	tx = _spriteGroups[spriteId].tx;
+	ty = _spriteGroups[spriteId].ty;
+}
+
+//
 // spriteInfoSet functions
 //
 void ScummEngine_v90he::spriteInfoSet_field_14(int spriteId, int value) {





More information about the Scummvm-git-logs mailing list