[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.346,2.347 script_v100he.cpp,2.49,2.50 script_v90he.cpp,2.138,2.139 sprite_he.cpp,1.14,1.15

kirben kirben at users.sourceforge.net
Sun Feb 20 20:54:32 CET 2005


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

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

Update HE100


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.346
retrieving revision 2.347
diff -u -d -r2.346 -r2.347
--- intern.h	21 Feb 2005 02:37:05 -0000	2.346
+++ intern.h	21 Feb 2005 04:53:34 -0000	2.347
@@ -885,6 +885,7 @@
 	int spriteInfoGet_resId(int spriteId);
 	int spriteInfoGet_resState(int spriteId);
 	int spriteInfoGet_groupNum(int spriteId);
+	int spriteInfoGet_field_14(int spriteId);
 	int spriteInfoGet_field_18(int spriteId);
 	int spriteInfoGet_grp_tx(int spriteId);
 	int spriteInfoGet_grp_ty(int spriteId);
@@ -893,6 +894,7 @@
 	int spriteInfoGet_wizSize(int spriteId);
 	int spriteInfoGet_zoom(int spriteId);
 	int spriteInfoGet_field_78(int spriteId);
+	int spriteInfoGet_field_7C(int spriteId);
 	int spriteInfoGet_field_80(int spriteId);
 	void getSpriteImageDim(int spriteId, int32 &w, int32 &h);
 	void spriteInfoGet_tx_ty(int spriteId, int32 &tx, int32 &ty);

Index: script_v100he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v100he.cpp,v
retrieving revision 2.49
retrieving revision 2.50
diff -u -d -r2.49 -r2.50
--- script_v100he.cpp	20 Feb 2005 11:14:50 -0000	2.49
+++ script_v100he.cpp	21 Feb 2005 04:53:34 -0000	2.50
@@ -1789,35 +1789,83 @@
 }
 
 void ScummEngine_v100he::o100_getSpriteGroupInfo() {
+	int32 tx, ty;
+	int spriteGroupId, type;
+
 	byte subOp = fetchScriptByte();
 	switch (subOp) {
 	case 5:
-		pop();
+		spriteGroupId = pop();
+		if (spriteGroupId)
+			push(spriteGroupGet_allocateGroupSpritesList(spriteGroupId));
+		else
+			push(0);
 		break;
-	case 48:
-		pop();
+	case 40:
+		spriteGroupId = pop();
+		if (spriteGroupId)
+			push(spriteGroupGet_field_20(spriteGroupId));
+		else
+			push(0);
 		break;
 	case 54:
+		// TODO
 		pop();
 		pop();
+		push(0);
 		break;
 	case 59:
-		pop();
+		spriteGroupId = pop();
+		if (spriteGroupId)
+			push(spriteGroupGet_field_10(spriteGroupId));
+		else
+			push(0);
 		break;
 	case 60:
-		pop();
-		pop();
+		type = pop();
+		spriteGroupId = pop();
+		if (spriteGroupId) {
+			switch(type) {
+			case 0:
+				push(spriteGroupGet_field_30(spriteGroupId));
+				break;
+			case 1:
+				push(spriteGroupGet_field_34(spriteGroupId));
+				break;
+			case 2:
+				push(spriteGroupGet_field_38(spriteGroupId));
+				break;
+			case 3:
+				push(spriteGroupGet_field_3C(spriteGroupId));
+				break;
+			default:
+				push(0);
+			}
+		} else {
+			push(0);
+		}
 		break;
 	case 85:
-		pop();
+		spriteGroupId = pop();
+		if (spriteGroupId) {
+			spriteGroupGet_tx_ty(spriteGroupId, tx, ty);
+			push(tx);
+		} else {
+			push(0);
+		}
 		break;
 	case 86:
-		pop();
+		spriteGroupId = pop();
+		if (spriteGroupId) {
+			spriteGroupGet_tx_ty(spriteGroupId, tx, ty);
+			push(ty);
+		} else {
+			push(0);
+		}
 		break;
 	default:
 		error("o100_getSpriteGroupInfo: Unknown case %d", subOp);
 	}
-	push(0);
 
 	debug(1,"o100_getSpriteGroupInfo stub (%d)", subOp);
 }
@@ -1978,34 +2026,65 @@
 
 void ScummEngine_v100he::o100_getSpriteInfo() {
 	int args[16];
+	int spriteId, flags;
+	int32 a, b;
 
 	byte subOp = fetchScriptByte();
 
 	switch (subOp) {
 	case 3:
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_flags_6(spriteId));
+		else
+			push(0);
 		break;
 	case 4:
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_field_78(spriteId));
+		else
+			push(1);
 		break;
 	case 7:
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_field_7C(spriteId));
+		else
+			push(0);
 		break;
 	case 16:
 		getStackList(args, ARRAYSIZE(args));
 		pop();
+		push(0);
 		break;
 	case 26:
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_wizSize(spriteId));
+		else
+			push(0);
 		break;
 	case 30:
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_grp_tx(spriteId));
+		else
+			push(0);
 		break;
 	case 31:
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_grp_ty(spriteId));
+		else
+			push(0);
 		break;
 	case 32:
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_flags_8(spriteId));
+		else
+			push(1);
 		break;
 	case 33:
 		getStackList(args, ARRAYSIZE(args));
@@ -2013,68 +2092,165 @@
 		pop();
 		pop();
 		pop();
+		push(0);
 		break;
 	case 38:
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_groupNum(spriteId));
+		else
+			push(0);
 		break;
 	case 39:
-		pop();
+		spriteId = pop();
+		if (spriteId) {
+			getSpriteImageDim(spriteId, a, b);
+			push(b);
+		} else {
+			push(0);
+		}
 		break;
 	case 40:
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_resId(spriteId));
+		else
+			push(0);
 		break;
 	case 48:
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_field_80(spriteId));
+		else
+			push(0);
 		break;
 	case 54:
 		pop();
 		pop();
+		push(0);
 		break;
 	case 57:
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_field_14(spriteId));
+		else
+			push(0);
 		break;
 	case 59:
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_field_18(spriteId));
+		else
+			push(0);
 		break;
 	case 60:
-		pop();
-		pop();
+		flags = pop();
+		spriteId = pop();
+		if (spriteId) {
+			switch(flags) {
+			case 0:
+				push(spriteInfoGet_flags_1(spriteId));
+				break;
+			case 1:
+				push(spriteInfoGet_flags_2(spriteId));
+				break;
+			case 2:
+				push(spriteInfoGet_flags_3(spriteId));
+				break;
+			case 3:
+				push(spriteInfoGet_flags_4(spriteId));
+				break;
+			case 4:
+				push(spriteInfoGet_flags_5(spriteId));
+				break;
+			default:
+				push(0);
+			}
+		} else {
+			push(0);
+		}
 		break;
 	case 65:
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_zoom(spriteId));
+		else
+			push(0);
 		break;
 	case 70:
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_field_54(spriteId));
+		else
+			push(0);
 		break;
 	case 73:
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_resState(spriteId));
+		else
+			push(0);
 		break;
 	case 75:
-		pop();
+		spriteId = pop();
+		if (spriteId) {
+			spriteInfoGet_field_2C_30(spriteId, a, b);
+			push(a);
+		} else {
+			push(0);
+		}
 		break;
 	case 76:
-		pop();
+		spriteId = pop();
+		if (spriteId) {
+			spriteInfoGet_field_2C_30(spriteId, a, b);
+			push(b);
+		} else {
+			push(0);
+		}
 		break;
 	case 82:
 		pop();
+		push(0);
 		break;
 	case 83:
 		pop();
-		pop();
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_field_44(spriteId));
+		else
+			push(0);
 		break;
 	case 84:
-		pop();
+		spriteId = pop();
+		if (spriteId) {
+			getSpriteImageDim(spriteId, a, b);
+			push(a);
+		} else {
+			push(0);
+		}
 		break;
 	case 85:
-		pop();
+		spriteId = pop();
+		if (spriteId) {
+			spriteInfoGet_tx_ty(spriteId, a, b);
+			push(a);
+		} else {
+			push(0);
+		}
 		break;
 	case 86:
-		pop();
+		spriteId = pop();
+		if (spriteId) {
+			spriteInfoGet_tx_ty(spriteId, a, b);
+			push(b);
+		} else {
+			push(0);
+		}
 		break;
 	default:
 		error("o100_getSpriteInfo: Unknown case %d", subOp);
 	}
-	push(0);
 	debug(1,"o100_getSpriteInfo stub (%d)", subOp);
 }
 

Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.138
retrieving revision 2.139
diff -u -d -r2.138 -r2.139
--- script_v90he.cpp	21 Feb 2005 02:37:05 -0000	2.138
+++ script_v90he.cpp	21 Feb 2005 04:53:34 -0000	2.139
@@ -847,6 +847,13 @@
 		else
 			push(0);
 		break;
+	case 32:
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_field_7C(spriteId));
+		else
+			push(0);
+		break;
 	case 33:
 		spriteId = pop();
 		if (spriteId)
@@ -868,6 +875,13 @@
 		else
 			push(0);
 		break;
+	case 56:
+		spriteId = pop();
+		if (spriteId)
+			push(spriteInfoGet_field_14(spriteId));
+		else
+			push(0);
+		break;
 	case 62:
 		spriteId = pop();
 		if (spriteId)
@@ -880,7 +894,7 @@
 		if (spriteId)
 			push(spriteInfoGet_field_78(spriteId));
 		else
-			push(0);
+			push(1);
 		break;
 	case 68:
 		spriteId = pop();
@@ -1289,19 +1303,17 @@
 		break;
 	case 43:
 		spriteGroupId = pop();
-		if (spriteGroupId) {
+		if (spriteGroupId)
 			push(spriteGroupGet_field_10(spriteGroupId));
-		} else {
+		else
 			push(0);
-		}
 		break;
 	case 63: // HE 99+
 		spriteGroupId = pop();
-		if (spriteGroupId) {
+		if (spriteGroupId)
 			push(spriteGroupGet_field_20(spriteGroupId));
-		} else {
+		else
 			push(0);
-		}
 		break;
 	case 139: // HE 99+
 		// dummy case

Index: sprite_he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sprite_he.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- sprite_he.cpp	21 Feb 2005 02:37:05 -0000	1.14
+++ sprite_he.cpp	21 Feb 2005 04:53:34 -0000	1.15
@@ -104,6 +104,12 @@
 	return _spriteTable[spriteId].group_num;
 }
 
+int ScummEngine_v90he::spriteInfoGet_field_14(int spriteId) {
+	checkRange(_varNumSprites, 1, spriteId, "spriteInfoGet_field_14: Invalid sprite %d");
+
+	return _spriteTable[spriteId].field_14;
+}
+
 int ScummEngine_v90he::spriteInfoGet_field_18(int spriteId) {
 	checkRange(_varNumSprites, 1, spriteId, "spriteInfoGet_field_18: Invalid sprite %d");
 
@@ -158,6 +164,12 @@
 	return _spriteTable[spriteId].field_78;
 }
 
+int ScummEngine_v90he::spriteInfoGet_field_7C(int spriteId) {
+	checkRange(_varNumSprites, 1, spriteId, "spriteInfoGet_field_7C: Invalid sprite %d");
+
+	return _spriteTable[spriteId].field_7C;
+}
+
 int ScummEngine_v90he::spriteInfoGet_field_80(int spriteId) {
 	checkRange(_varNumSprites, 1, spriteId, "spriteInfoGet_field_80: Invalid sprite %d");
 





More information about the Scummvm-git-logs mailing list