aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorTravis Howell2005-02-26 04:20:47 +0000
committerTravis Howell2005-02-26 04:20:47 +0000
commit6d7935cc6bc999975ebc0b26656f26435c775fa8 (patch)
tree1ae7f1a6c474f20b3a7f0bbb90da7611d34b6813 /scumm
parent2689832d75095e00d7a49cf53a73b75b3fcab682 (diff)
downloadscummvm-rg350-6d7935cc6bc999975ebc0b26656f26435c775fa8.tar.gz
scummvm-rg350-6d7935cc6bc999975ebc0b26656f26435c775fa8.tar.bz2
scummvm-rg350-6d7935cc6bc999975ebc0b26656f26435c775fa8.zip
Revert that last change, mixed functions.
svn-id: r16923
Diffstat (limited to 'scumm')
-rw-r--r--scumm/intern.h2
-rw-r--r--scumm/script_v100he.cpp2
-rw-r--r--scumm/script_v90he.cpp2
-rw-r--r--scumm/sprite_he.cpp93
4 files changed, 48 insertions, 51 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index c7077c411a..fb9e44db84 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -963,7 +963,7 @@ protected:
void spriteGroupSet_case56(int spriteGroupId);
void spritesAllocTables(int numSprites, int numGroups, int numMaxSprites);
- void spritesResetSpriteGroup(int spriteGroupId);
+ void spritesResetGroup(int spriteGroupId);
void spritesResetTables(bool refreshScreen);
void spriteGroupCheck(int spriteGroupId);
void spriteMarkIfInGroup(int spriteGroupId, uint32 flags);
diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp
index abc9569232..5c08f46655 100644
--- a/scumm/script_v100he.cpp
+++ b/scumm/script_v100he.cpp
@@ -945,7 +945,7 @@ void ScummEngine_v100he::o100_setSpriteGroupInfo() {
if (!_curSpriteGroupId)
break;
- spritesResetSpriteGroup(_curSpriteGroupId);
+ spritesResetGroup(_curSpriteGroupId);
break;
case 54:
// dummy case
diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp
index 4684e88171..cb9d40c9d8 100644
--- a/scumm/script_v90he.cpp
+++ b/scumm/script_v90he.cpp
@@ -1519,7 +1519,7 @@ void ScummEngine_v90he::o90_setSpriteGroupInfo() {
if (!_curSpriteGroupId)
break;
- spritesResetSpriteGroup(_curSpriteGroupId);
+ spritesResetGroup(_curSpriteGroupId);
break;
default:
error("o90_setSpriteGroupInfo: Unknown case %d", subOp);
diff --git a/scumm/sprite_he.cpp b/scumm/sprite_he.cpp
index 5a71f65611..08b99b49eb 100644
--- a/scumm/sprite_he.cpp
+++ b/scumm/sprite_he.cpp
@@ -990,13 +990,50 @@ void ScummEngine_v90he::spritesAllocTables(int numSprites, int numGroups, int nu
_imageListStack = (uint16 *)malloc((_varMaxSprites + 1) * sizeof(uint16));
}
-void ScummEngine_v90he::spritesResetSpriteGroup(int spriteGroupId) {
- checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
+void ScummEngine_v90he::spritesResetGroup(int spriteGroupId) {
+ int i;
- for (int i = 1; i < _varNumSprites; i++) {
- if (_spriteTable[i].group_num == spriteGroupId)
- spriteInfoSet_resetSprite(i);
+ SpriteGroup *spg = &_spriteGroups[spriteGroupId];
+ checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");
+ if (spg->field_10 != 0) {
+ spg->field_10 = 0;
+ spriteGroupCheck(spriteGroupId);
+ for (i = 0; i < _numSpritesToProcess; ++i) {
+ SpriteInfo *spi = _activeSpritesTable[i];
+ if (spi->group_num == spriteGroupId) {
+ spi->flags |= kSFChanged | kSFNeedRedraw;
+ }
+ }
+ }
+ if (spg->tx != 0 || spg->ty != 0) {
+ spg->tx = spg->ty = 0;
+ spriteGroupCheck(spriteGroupId);
+ for (i = 0; i < _numSpritesToProcess; ++i) {
+ SpriteInfo *spi = _activeSpritesTable[i];
+ if (spi->group_num == spriteGroupId) {
+ spi->flags |= kSFChanged | kSFNeedRedraw;
+ }
+ }
+ }
+ spg->flags &= ~kSGF01;
+ spriteMarkIfInGroup(spriteGroupId, kSFChanged | kSFNeedRedraw);
+ if (spg->field_20 != 0) {
+ spriteGroupCheck(spriteGroupId);
+ for (i = 0; i < _numSpritesToProcess; ++i) {
+ SpriteInfo *spi = _activeSpritesTable[i];
+ if (spi->group_num == spriteGroupId) {
+ spi->flags |= kSFChanged | kSFNeedRedraw;
+ }
+ }
}
+ spriteGroupCheck(spriteGroupId);
+ spg->scaling = 0;
+ spg->scale_x = 0x3F800000;
+ spg->field_30 = 0;
+ spg->field_34 = 0;
+ spg->scale_y = 0x3F800000;
+ spg->field_38 = 0;
+ spg->field_3C = 0;
}
void ScummEngine_v90he::spritesResetTables(bool refreshScreen) {
@@ -1007,49 +1044,9 @@ void ScummEngine_v90he::spritesResetTables(bool refreshScreen) {
}
memset(_spriteTable, 0, (_varNumSprites + 1) * sizeof(SpriteInfo));
memset(_spriteGroups, 0, (_varNumSpriteGroups + 1) * sizeof(SpriteGroup));
- for (int curGrp = 1; curGrp < _varNumSpriteGroups; ++curGrp) {
- SpriteGroup *spg = &_spriteGroups[curGrp];
- checkRange(_varNumSpriteGroups, 1, curGrp, "Invalid sprite group %d");
- if (spg->field_10) {
- spg->field_10 = 0;
- spriteGroupCheck(curGrp);
- for (i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == curGrp) {
- spi->flags |= kSFChanged | kSFNeedRedraw;
- }
- }
- }
- if (spg->tx || spg->ty) {
- spg->tx = spg->ty = 0;
- spriteGroupCheck(curGrp);
- for (i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == curGrp) {
- spi->flags |= kSFChanged | kSFNeedRedraw;
- }
- }
- }
- spg->flags &= ~kSGF01;
- spriteMarkIfInGroup(curGrp, kSFChanged | kSFNeedRedraw);
- if (spg->field_20 != 0) {
- spriteGroupCheck(curGrp);
- for (i = 0; i < _numSpritesToProcess; ++i) {
- SpriteInfo *spi = _activeSpritesTable[i];
- if (spi->group_num == curGrp) {
- spi->flags |= kSFChanged | kSFNeedRedraw;
- }
- }
- }
- spriteGroupCheck(curGrp);
- spg->scaling = 0;
- spg->scale_x = 0x3F800000;
- spg->field_30 = 0;
- spg->field_34 = 0;
- spg->scale_y = 0x3F800000;
- spg->field_38 = 0;
- spg->field_3C = 0;
- }
+ for (int curGrp = 1; curGrp < _varNumSpriteGroups; ++curGrp)
+ spritesResetGroup(curGrp);
+
if (refreshScreen) {
gdi.copyVirtScreenBuffers(Common::Rect(_screenWidth, _screenHeight));
}