[Scummvm-cvs-logs] CVS: scummvm/scumm saveload.h,1.53,1.54 sprite_he.cpp,1.126,1.127 sprite_he.h,1.35,1.36
Gregory Montoir
cyx at users.sourceforge.net
Fri Apr 15 01:36:50 CEST 2005
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3511/scumm
Modified Files:
saveload.h sprite_he.cpp sprite_he.h
Log Message:
Got rid of scaleX and scaleY, previous code was relying on overflow and to get it right, we would have to introduce floating point numbers. Easier, yet less efficient, is just to get rid of those 2 temporary variables and do the multiplications and divisions when needed.
Index: saveload.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/saveload.h,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -d -r1.53 -r1.54
--- saveload.h 10 Apr 2005 15:13:38 -0000 1.53
+++ saveload.h 15 Apr 2005 08:34:17 -0000 1.54
@@ -33,7 +33,7 @@
// Can be useful for other ports too :)
#define VER(x) x
-#define CURRENT_VER 48
+#define CURRENT_VER 49
// To work around a warning in GCC 3.2 (and 3.1 ?) regarding non-POD types,
// we use a small trick: instead of 0 we use 42. Why? Well, it seems newer GCC
Index: sprite_he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sprite_he.cpp,v
retrieving revision 1.126
retrieving revision 1.127
diff -u -d -r1.126 -r1.127
--- sprite_he.cpp 11 Apr 2005 20:34:21 -0000 1.126
+++ sprite_he.cpp 15 Apr 2005 08:34:17 -0000 1.127
@@ -51,8 +51,8 @@
SpriteGroup *spg = &_spriteGroups[spi->groupNum];
if (spg->scaling) {
- x1 = spi->tx * spg->scaleX - spr_wiz_x + spg->tx;
- y1 = spi->ty * spg->scaleY - spr_wiz_y + spg->ty;
+ x1 = spi->tx * spg->scale_x_ratio_mul / spg->scale_x_ratio_div - spr_wiz_x + spg->tx;
+ y1 = spi->ty * spg->scale_y_ratio_mul / spg->scale_y_ratio_div - spr_wiz_y + spg->ty;
} else {
x1 = spi->tx - spr_wiz_x + spg->tx;
y1 = spi->ty - spr_wiz_y + spg->ty;
@@ -989,8 +989,6 @@
if (_spriteGroups[spriteGroupId].scale_x_ratio_mul != value) {
_spriteGroups[spriteGroupId].scale_x_ratio_mul = value;
- _spriteGroups[spriteGroupId].scaleX = _spriteGroups[spriteGroupId].scale_x_ratio_mul / _spriteGroups[spriteGroupId].scale_x_ratio_div;
-
spriteGroupSet_scaling(spriteGroupId);
redrawSpriteGroup(spriteGroupId);
}
@@ -1004,8 +1002,6 @@
if (_spriteGroups[spriteGroupId].scale_x_ratio_div != value) {
_spriteGroups[spriteGroupId].scale_x_ratio_div = value;
- _spriteGroups[spriteGroupId].scaleX = _spriteGroups[spriteGroupId].scale_x_ratio_mul / _spriteGroups[spriteGroupId].scale_x_ratio_div;
-
spriteGroupSet_scaling(spriteGroupId);
redrawSpriteGroup(spriteGroupId);
}
@@ -1016,8 +1012,6 @@
if (_spriteGroups[spriteGroupId].scale_y_ratio_mul != value) {
_spriteGroups[spriteGroupId].scale_y_ratio_mul = value;
- _spriteGroups[spriteGroupId].scaleY = _spriteGroups[spriteGroupId].scale_y_ratio_mul / _spriteGroups[spriteGroupId].scale_y_ratio_div;
-
spriteGroupSet_scaling(spriteGroupId);
redrawSpriteGroup(spriteGroupId);
}
@@ -1031,8 +1025,6 @@
if (_spriteGroups[spriteGroupId].scale_y_ratio_div != value) {
_spriteGroups[spriteGroupId].scale_y_ratio_div = value;
- _spriteGroups[spriteGroupId].scaleY = _spriteGroups[spriteGroupId].scale_y_ratio_mul / _spriteGroups[spriteGroupId].scale_y_ratio_div;
-
spriteGroupSet_scaling(spriteGroupId);
redrawSpriteGroup(spriteGroupId);
}
@@ -1067,10 +1059,8 @@
spg->dstResNum = 0;
spg->scaling = 0;
- spg->scaleX = 0x3F800000;
spg->scale_x_ratio_mul = 1;
spg->scale_x_ratio_div = 1;
- spg->scaleY = 0x3F800000;
spg->scale_y_ratio_mul = 1;
spg->scale_y_ratio_div = 1;
}
@@ -1270,8 +1260,8 @@
SpriteGroup *spg = &_spriteGroups[spi->groupNum];
if (spg->scaling) {
- wiz.img.x1 = spi->tx * spg->scaleX - spr_wiz_x + spg->tx;
- wiz.img.y1 = spi->ty * spg->scaleY - spr_wiz_y + spg->ty;
+ wiz.img.x1 = spi->tx * spg->scale_x_ratio_mul / spg->scale_x_ratio_div - spr_wiz_x + spg->tx;
+ wiz.img.y1 = spi->ty * spg->scale_y_ratio_mul / spg->scale_y_ratio_div - spr_wiz_y + spg->ty;
} else {
wiz.img.x1 = spi->tx - spr_wiz_x + spg->tx;
wiz.img.y1 = spi->ty - spr_wiz_y + spg->ty;
@@ -1440,8 +1430,8 @@
MKLINE(SpriteGroup, ty, sleInt32, VER(48)),
MKLINE(SpriteGroup, dstResNum, sleInt32, VER(48)),
MKLINE(SpriteGroup, scaling, sleInt32, VER(48)),
- MKLINE(SpriteGroup, scaleX, sleInt32, VER(48)),
- MKLINE(SpriteGroup, scaleY, sleInt32, VER(48)),
+ MK_OBSOLETE(SpriteGroup, scaleX, sleInt32, VER(48), VER(48)),
+ MK_OBSOLETE(SpriteGroup, scaleY, sleInt32, VER(48), VER(48)),
MKLINE(SpriteGroup, scale_x_ratio_mul, sleInt32, VER(48)),
MKLINE(SpriteGroup, scale_x_ratio_div, sleInt32, VER(48)),
MKLINE(SpriteGroup, scale_y_ratio_mul, sleInt32, VER(48)),
Index: sprite_he.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sprite_he.h,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- sprite_he.h 11 Apr 2005 07:40:14 -0000 1.35
+++ sprite_he.h 15 Apr 2005 08:34:18 -0000 1.36
@@ -92,8 +92,8 @@
int32 ty;
int32 dstResNum;
int32 scaling;
- int32 scaleX;
- int32 scaleY;
+// int32 scaleX;
+// int32 scaleY;
int32 scale_x_ratio_mul;
int32 scale_x_ratio_div;
int32 scale_y_ratio_mul;
More information about the Scummvm-git-logs
mailing list