diff options
author | Gregory Montoir | 2005-05-09 18:26:36 +0000 |
---|---|---|
committer | Gregory Montoir | 2005-05-09 18:26:36 +0000 |
commit | c0ec310a43ba2e321c2e267485bc9a78077bc4a4 (patch) | |
tree | f6375c6b39d0c578d2aba8d45459eeff594eded5 /scumm | |
parent | da06fe93a97193cfa3c077d144422c5bc47b46ff (diff) | |
download | scummvm-rg350-c0ec310a43ba2e321c2e267485bc9a78077bc4a4.tar.gz scummvm-rg350-c0ec310a43ba2e321c2e267485bc9a78077bc4a4.tar.bz2 scummvm-rg350-c0ec310a43ba2e321c2e267485bc9a78077bc4a4.zip |
fixed spritesMarkDirty
svn-id: r18008
Diffstat (limited to 'scumm')
-rw-r--r-- | scumm/actor.cpp | 4 | ||||
-rw-r--r-- | scumm/intern.h | 2 | ||||
-rw-r--r-- | scumm/sprite_he.cpp | 21 |
3 files changed, 17 insertions, 10 deletions
diff --git a/scumm/actor.cpp b/scumm/actor.cpp index 09163b4481..fbf4c309d6 100644 --- a/scumm/actor.cpp +++ b/scumm/actor.cpp @@ -1022,7 +1022,7 @@ void ScummEngine_v71he::processActors() { void ScummEngine_v90he::processActors() { preProcessAuxQueue(); - spritesMarkDirty(0); + spritesMarkDirty(false); spritesProcessWiz(true); if (!_skipProcessActors) @@ -1030,7 +1030,7 @@ void ScummEngine_v90he::processActors() { postProcessAuxQueue(); - spritesMarkDirty(1); + spritesMarkDirty(true); spritesProcessWiz(false); } diff --git a/scumm/intern.h b/scumm/intern.h index 879e5f9f01..56be6123c4 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -1190,7 +1190,7 @@ protected: public: void saveOrLoadSpriteData(Serializer *s, uint32 savegameVersion); void spritesBlitToScreen(); - void spritesMarkDirty(bool unkFlag); + void spritesMarkDirty(bool checkZOrder); void spritesSortActiveSprites(); void spritesProcessWiz(bool arg); void spritesUpdateImages(); 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; |