[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.354,2.355 script_v100he.cpp,2.56,2.57 script_v90he.cpp,2.146,2.147 sprite_he.cpp,1.26,1.27

kirben kirben at users.sourceforge.net
Tue Feb 22 20:06:42 CET 2005


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

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

More sprite functions


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.354
retrieving revision 2.355
diff -u -d -r2.354 -r2.355
--- intern.h	23 Feb 2005 02:35:59 -0000	2.354
+++ intern.h	23 Feb 2005 04:05:22 -0000	2.355
@@ -902,7 +902,7 @@
 	int spriteInfoGet_field_80(int spriteId);
 	void getSpriteImageDim(int spriteId, int32 &w, int32 &h);
 	void spriteInfoGet_tx_ty(int spriteId, int32 &tx, int32 &ty);
-	void spriteInfoGet_field_2C_30(int spriteId, int32 &field_2C, int32 &field_30);
+	void spriteInfoGet_dx_dy(int spriteId, int32 &dx, int32 &dy);
 
 	int spriteGroupGet_allocateGroupSpritesList(int spriteGroupId);
 	int spriteGroupGet_field_10(int spriteGroupId);
@@ -920,7 +920,7 @@
 	void spriteInfoSet_resState(int spriteId, int value);
 	void spriteInfoSet_tx_ty(int spriteId, int value1, int value2);
 	void spriteInfoSet_groupNum(int spriteId, int value);
-	void spriteInfoSet_field_2C_30(int spriteId, int value1, int value2);
+	void spriteInfoSet_dx_dy(int spriteId, int value1, int value2);
 	void spriteInfoSet_field_54(int spriteId, int value);
 	void spriteInfoSet_field_44(int spriteId, int value1, int value2);
 	void spriteInfoSet_field_18(int spriteId, int value);

Index: script_v100he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v100he.cpp,v
retrieving revision 2.56
retrieving revision 2.57
diff -u -d -r2.56 -r2.57
--- script_v100he.cpp	23 Feb 2005 02:35:59 -0000	2.56
+++ script_v100he.cpp	23 Feb 2005 04:05:22 -0000	2.57
@@ -1827,7 +1827,7 @@
 			spriteId++;
 
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
-			spriteInfoSet_field_2C_30(spriteId, args[0], args[1]);
+			spriteInfoSet_dx_dy(spriteId, args[0], args[1]);
 		break;
 	case 75:
 		args[0] = pop();
@@ -1838,9 +1838,9 @@
 			spriteId++;
 
 		for (; spriteId <= _curMaxSpriteId; spriteId++) {
-			spriteInfoGet_field_2C_30(spriteId, tmp[0], tmp[1]);
+			spriteInfoGet_dx_dy(spriteId, tmp[0], tmp[1]);
 			storedFields[0] = tmp[0];
-			spriteInfoSet_field_2C_30(spriteId, args[0], tmp[1]);
+			spriteInfoSet_dx_dy(spriteId, args[0], tmp[1]);
 		}
 		break;
 	case 76:
@@ -1852,9 +1852,9 @@
 			spriteId++;
 
 		for (; spriteId <= _curMaxSpriteId; spriteId++) {
-			spriteInfoGet_field_2C_30(spriteId, tmp[0], tmp[1]);
+			spriteInfoGet_dx_dy(spriteId, tmp[0], tmp[1]);
 			storedFields[1] = tmp[1];
-			spriteInfoSet_field_2C_30(spriteId, tmp[0], args[0]);
+			spriteInfoSet_dx_dy(spriteId, tmp[0], args[0]);
 		}
 		break;
 	case 82:
@@ -2490,7 +2490,7 @@
 	case 75:
 		spriteId = pop();
 		if (spriteId) {
-			spriteInfoGet_field_2C_30(spriteId, a, b);
+			spriteInfoGet_dx_dy(spriteId, a, b);
 			push(a);
 		} else {
 			push(0);
@@ -2499,7 +2499,7 @@
 	case 76:
 		spriteId = pop();
 		if (spriteId) {
-			spriteInfoGet_field_2C_30(spriteId, a, b);
+			spriteInfoGet_dx_dy(spriteId, a, b);
 			push(b);
 		} else {
 			push(0);

Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.146
retrieving revision 2.147
diff -u -d -r2.146 -r2.147
--- script_v90he.cpp	23 Feb 2005 02:35:59 -0000	2.146
+++ script_v90he.cpp	23 Feb 2005 04:05:22 -0000	2.147
@@ -745,7 +745,7 @@
 	case 4:
 		spriteId = pop();
 		if (spriteId) {
-			spriteInfoGet_field_2C_30(spriteId, a, b);
+			spriteInfoGet_dx_dy(spriteId, a, b);
 			push(a);
 		} else {
 			push(0);
@@ -754,7 +754,7 @@
 	case 5:
 		spriteId = pop();
 		if (spriteId) {
-			spriteInfoGet_field_2C_30(spriteId, a, b);
+			spriteInfoGet_dx_dy(spriteId, a, b);
 			push(b);
 		} else {
 			push(0);
@@ -970,9 +970,9 @@
 			spriteId++;
 
 		for (; spriteId <= _curMaxSpriteId; spriteId++) {
-			spriteInfoGet_field_2C_30(spriteId, tmp[0], tmp[1]);
+			spriteInfoGet_dx_dy(spriteId, tmp[0], tmp[1]);
 			storedFields[0] = tmp[0];
-			spriteInfoSet_field_2C_30(spriteId, args[0], tmp[1]);
+			spriteInfoSet_dx_dy(spriteId, args[0], tmp[1]);
 		}
 		break;
 	case 1:
@@ -984,9 +984,9 @@
 			spriteId++;
 
 		for (; spriteId <= _curMaxSpriteId; spriteId++) {
-			spriteInfoGet_field_2C_30(spriteId, tmp[0], tmp[1]);
+			spriteInfoGet_dx_dy(spriteId, tmp[0], tmp[1]);
 			storedFields[1] = tmp[1];
-			spriteInfoSet_field_2C_30(spriteId, tmp[0], args[0]);
+			spriteInfoSet_dx_dy(spriteId, tmp[0], args[0]);
 		}
 		break;
 	case 3:
@@ -1142,7 +1142,7 @@
 			spriteId++;
 
 		for (; spriteId <= _curMaxSpriteId; spriteId++)
-			spriteInfoSet_field_2C_30(spriteId, args[0], args[1]);
+			spriteInfoSet_dx_dy(spriteId, args[0], args[1]);
 		break;
 	case 48:
 		args[0] = pop();

Index: sprite_he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sprite_he.cpp,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- sprite_he.cpp	23 Feb 2005 03:22:05 -0000	1.26
+++ sprite_he.cpp	23 Feb 2005 04:05:22 -0000	1.27
@@ -209,11 +209,11 @@
 	ty = _spriteTable[spriteId].ty;
 }
 
-void ScummEngine_v90he::spriteInfoGet_field_2C_30(int spriteId, int32 &field_2C, int32 &field_30) {
+void ScummEngine_v90he::spriteInfoGet_dx_dy(int spriteId, int32 &dx, int32 &dy) {
 	checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
 
-	field_2C = _spriteTable[spriteId].dx;
-	field_30 = _spriteTable[spriteId].dy;
+	dx = _spriteTable[spriteId].dx;
+	dy = _spriteTable[spriteId].dy;
 }
 
 //
@@ -330,7 +330,7 @@
 	_spriteTable[spriteId].group_num = value;
 }
 
-void ScummEngine_v90he::spriteInfoSet_field_2C_30(int spriteId, int value1, int value2) {
+void ScummEngine_v90he::spriteInfoSet_dx_dy(int spriteId, int value1, int value2) {
 	checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
 
 	_spriteTable[spriteId].dx = value1;
@@ -642,7 +642,12 @@
 }
 
 void ScummEngine_v90he::spriteGroupSet_case0_4(int spriteGroupId) {
-	// TODO
+	checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
+
+	for (int i = 1; i < _varNumSprites; i++) {
+		if (_spriteTable[i].group_num == spriteGroupId)
+			spriteInfoSet_resetSprite(i);
+	}
 }
 
 void ScummEngine_v90he::spriteGroupSet_case0_5(int spriteGroupId, int value) {
@@ -682,19 +687,91 @@
 }
 
 void ScummEngine_v90he::spriteGroupSet_case5_0(int spriteGroupId, int value) {
-	// TODO
+	checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
+
+	if (_spriteGroups[spriteGroupId].field_30 == value)
+		return;
+
+	_spriteGroups[spriteGroupId].field_30 = value;
+	_spriteGroups[spriteGroupId].scale_x = _spriteGroups[spriteGroupId].field_30 / _spriteGroups[spriteGroupId].field_34;
+
+	if ((_spriteGroups[spriteGroupId].field_30 != _spriteGroups[spriteGroupId].field_34) || (_spriteGroups[spriteGroupId].field_38 != _spriteGroups[spriteGroupId].field_3C))
+		_spriteGroups[spriteGroupId].scaling = 1;
+	else
+		_spriteGroups[spriteGroupId].scaling = 0;
+
+	for (int i = 0; i < _numSpritesToProcess; ++i) {
+		SpriteInfo *spi = _activeSpritesTable[i];
+		if (spi->group_num == spriteGroupId) {
+			spi->flags |= kSF01 | kSFNeedRedraw;
+		}
+	}
 }
 
 void ScummEngine_v90he::spriteGroupSet_case5_1(int spriteGroupId, int value) {
-	// TODO
+	checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
+
+	if (_spriteGroups[spriteGroupId].field_34 == value)
+		return;
+
+	_spriteGroups[spriteGroupId].field_34 = value;
+	_spriteGroups[spriteGroupId].scale_x = _spriteGroups[spriteGroupId].field_30 / _spriteGroups[spriteGroupId].field_34;
+
+	if ((_spriteGroups[spriteGroupId].field_30 != _spriteGroups[spriteGroupId].field_34) || (_spriteGroups[spriteGroupId].field_38 != _spriteGroups[spriteGroupId].field_3C))
+		_spriteGroups[spriteGroupId].scaling = 1;
+	else
+		_spriteGroups[spriteGroupId].scaling = 0;
+
+	for (int i = 0; i < _numSpritesToProcess; ++i) {
+		SpriteInfo *spi = _activeSpritesTable[i];
+		if (spi->group_num == spriteGroupId) {
+			spi->flags |= kSF01 | kSFNeedRedraw;
+		}
+	}
 }
 
 void ScummEngine_v90he::spriteGroupSet_case5_2(int spriteGroupId, int value) {
-	// TODO
+	checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
+
+	if (_spriteGroups[spriteGroupId].field_38 == value)
+		return;
+
+	_spriteGroups[spriteGroupId].field_38 = value;
+	_spriteGroups[spriteGroupId].scale_y = _spriteGroups[spriteGroupId].field_38 / _spriteGroups[spriteGroupId].field_3C;
+
+	if ((_spriteGroups[spriteGroupId].field_30 != _spriteGroups[spriteGroupId].field_34) || (_spriteGroups[spriteGroupId].field_38 != _spriteGroups[spriteGroupId].field_3C))
+		_spriteGroups[spriteGroupId].scaling = 1;
+	else
+		_spriteGroups[spriteGroupId].scaling = 0;
+
+	for (int i = 0; i < _numSpritesToProcess; ++i) {
+		SpriteInfo *spi = _activeSpritesTable[i];
+		if (spi->group_num == spriteGroupId) {
+			spi->flags |= kSF01 | kSFNeedRedraw;
+		}
+	}
 }
 
 void ScummEngine_v90he::spriteGroupSet_case5_3(int spriteGroupId, int value) {
-	// TODO
+	checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
+
+	if (_spriteGroups[spriteGroupId].field_3C == value)
+		return;
+
+	_spriteGroups[spriteGroupId].field_3C = value;
+	_spriteGroups[spriteGroupId].scale_y = _spriteGroups[spriteGroupId].field_38 / _spriteGroups[spriteGroupId].field_3C;
+
+	if ((_spriteGroups[spriteGroupId].field_30 != _spriteGroups[spriteGroupId].field_34) || (_spriteGroups[spriteGroupId].field_38 != _spriteGroups[spriteGroupId].field_3C))
+		_spriteGroups[spriteGroupId].scaling = 1;
+	else
+		_spriteGroups[spriteGroupId].scaling = 0;
+
+	for (int i = 0; i < _numSpritesToProcess; ++i) {
+		SpriteInfo *spi = _activeSpritesTable[i];
+		if (spi->group_num == spriteGroupId) {
+			spi->flags |= kSF01 | kSFNeedRedraw;
+		}
+	}
 }
 
 void ScummEngine_v90he::spriteGroupSet_field_10(int spriteGroupId, int value) {





More information about the Scummvm-git-logs mailing list