From c0ec310a43ba2e321c2e267485bc9a78077bc4a4 Mon Sep 17 00:00:00 2001 From: Gregory Montoir Date: Mon, 9 May 2005 18:26:36 +0000 Subject: fixed spritesMarkDirty svn-id: r18008 --- scumm/sprite_he.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'scumm/sprite_he.cpp') 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; -- cgit v1.2.3