diff options
author | Max Horn | 2003-05-28 21:43:34 +0000 |
---|---|---|
committer | Max Horn | 2003-05-28 21:43:34 +0000 |
commit | 78ef0ea5b5d336315b79f5afa9e91ffb52422fd7 (patch) | |
tree | 9f8ba13db854e7a7fc42857c7f80e0ace821e118 /scumm | |
parent | 79ba8e7227abc752ae0c23cba4959496b00b6eea (diff) | |
download | scummvm-rg350-78ef0ea5b5d336315b79f5afa9e91ffb52422fd7.tar.gz scummvm-rg350-78ef0ea5b5d336315b79f5afa9e91ffb52422fd7.tar.bz2 scummvm-rg350-78ef0ea5b5d336315b79f5afa9e91ffb52422fd7.zip |
fix actor redraw problems in COMI (and possibly other AKOS games); might cause regressions, though. See also patch #699980
svn-id: r8064
Diffstat (limited to 'scumm')
-rw-r--r-- | scumm/actor.cpp | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/scumm/actor.cpp b/scumm/actor.cpp index 0b9b7646e6..c77d8b733c 100644 --- a/scumm/actor.cpp +++ b/scumm/actor.cpp @@ -920,12 +920,6 @@ void Actor::drawActorCostume() { cr._draw_top = top = 0xFF; cr._draw_bottom = bottom = 0; - - // if the actor is partially hidden, redraw it next frame - if (cr.drawCostume(cost) & 1) { - needBgReset = true; - needRedraw = true; - } } else { AkosRenderer& ar = *(AkosRenderer *)bcr; @@ -942,19 +936,23 @@ void Actor::drawActorCostume() { ar._draw_top = top = 0x7fffffff; ar._draw_bottom = bottom = 0; + } - if (ar.drawCostume(cost)) { - // FIXME: this breaks talking in The Dig because the actor - // is redrawn too often, thus breaking the waitForActor opcode. - // Note that I originally added this to correct some redraw issues. - // A "better" implementation would work like the corresponding code - // for "old" costumes, that is, only trigger a redraw if the actor - // is partially hidden / offscreen... but I am not sure the original - // actually does this, so before we spend time on implementing this, - // we should first figure out what the original code does here... - //needBgReset = true; - //needRedraw = true; - } + // If the actor is partially hidden, redraw it next frame. + // Note: for akos, this only works for codec 1 so far; we need to look + // if we can (or even should) implement this for the other codecs, too. + if (bcr->drawCostume(cost) & 1) { + // FIXME: this used to break talking in The Dig because the actor + // was redrawn too often, which broke the waitForActor opcode. + // This refined version hopefully will work better. + // + // We didn't use to do this for AKOS games at all, only for the classic + // costumes. And I am not sure the original game did this for AKOS + // games, either. So maybe this code isn't the correct way to do what + // it does (which is to fix actor draw problems, see also patch #699980). + // Would be nice to figure out what the original code does... + needBgReset = true; + needRedraw = true; } top = bcr->_draw_top; |