aboutsummaryrefslogtreecommitdiff
path: root/scumm/sprite_he.cpp
diff options
context:
space:
mode:
authorGregory Montoir2005-05-09 18:26:36 +0000
committerGregory Montoir2005-05-09 18:26:36 +0000
commitc0ec310a43ba2e321c2e267485bc9a78077bc4a4 (patch)
treef6375c6b39d0c578d2aba8d45459eeff594eded5 /scumm/sprite_he.cpp
parentda06fe93a97193cfa3c077d144422c5bc47b46ff (diff)
downloadscummvm-rg350-c0ec310a43ba2e321c2e267485bc9a78077bc4a4.tar.gz
scummvm-rg350-c0ec310a43ba2e321c2e267485bc9a78077bc4a4.tar.bz2
scummvm-rg350-c0ec310a43ba2e321c2e267485bc9a78077bc4a4.zip
fixed spritesMarkDirty
svn-id: r18008
Diffstat (limited to 'scumm/sprite_he.cpp')
-rw-r--r--scumm/sprite_he.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/scumm/sprite_he.cpp b/scumm/sprite_he.cpp
index d2d2e12713..0d3c1b7074 100644
--- a/scumm/sprite_he.cpp
+++ b/scumm/sprite_he.cpp
@@ -1125,17 +1125,24 @@ void ScummEngine_v90he::spritesBlitToScreen() {
}
}
-void ScummEngine_v90he::spritesMarkDirty(bool unkFlag) {
+void ScummEngine_v90he::spritesMarkDirty(bool checkZOrder) {
VirtScreen *vs = &virtscr[kMainVirtScreen];
for (int i = 0; i < _numSpritesToProcess; ++i) {
SpriteInfo *spi = _activeSpritesTable[i];
if (!(spi->flags & (kSFNeedRedraw | kSF30))) {
- if ((!unkFlag || spi->zorderPriority >= 0) && (spi->flags & kSFMarkDirty)) {
- int lp, rp;
- lp = MAX(0, spi->bbox.left / 8);
- lp = MIN(79, spi->bbox.left / 8);
- rp = MAX(0, (spi->bbox.right + 7) / 8);
- rp = MIN(79, (spi->bbox.right + 7) / 8);
+ if ((!checkZOrder || spi->zorderPriority >= 0) && (spi->flags & kSFMarkDirty)) {
+ int lp = spi->bbox.left / 8;
+ if (lp < 0) {
+ lp = 0;
+ } else if (lp > 79) {
+ lp = 79;
+ }
+ int rp = spi->bbox.right + 7 / 8;
+ if (rp < 0) {
+ rp = 0;
+ } else {
+ rp = 79;
+ }
for (; lp <= rp; ++lp) {
if (vs->tdirty[lp] < vs->h && spi->bbox.bottom >= vs->tdirty[lp] && spi->bbox.top <= vs->bdirty[lp]) {
spi->flags |= kSFNeedRedraw;