diff options
Diffstat (limited to 'scumm/gfx.cpp')
-rw-r--r-- | scumm/gfx.cpp | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/scumm/gfx.cpp b/scumm/gfx.cpp index caa8a7a93e..21f5855b36 100644 --- a/scumm/gfx.cpp +++ b/scumm/gfx.cpp @@ -802,24 +802,26 @@ void ScummEngine::redrawBGAreas() { if (_features & GF_NEW_CAMERA) { diff = camera._cur.x / 8 - camera._last.x / 8; - if (!_fullRedraw && diff == 1) { - val = 2; - redrawBGStrip(gdi._numStrips - 1, 1); - } else if (!_fullRedraw && diff == -1) { - val = 1; - redrawBGStrip(0, 1); - } else if (_fullRedraw || diff != 0) { + if (_fullRedraw) { _bgNeedsRedraw = false; redrawBGStrip(0, gdi._numStrips); + } else if (diff > 0) { + assert(gdi._numStrips > diff); + val = -diff; + redrawBGStrip(gdi._numStrips - diff, diff); + } else if (diff < 0) { + val = -diff; + redrawBGStrip(0, -diff); } } else { - if (!_fullRedraw && camera._cur.x - camera._last.x == 8) { - val = 2; + diff = camera._cur.x - camera._last.x; + if (!_fullRedraw && diff == 8) { + val = -1; redrawBGStrip(gdi._numStrips - 1, 1); - } else if (!_fullRedraw && camera._cur.x - camera._last.x == -8) { - val = 1; + } else if (!_fullRedraw && diff == -8) { + val = +1; redrawBGStrip(0, 1); - } else if (_fullRedraw || camera._cur.x != camera._last.x) { + } else if (_fullRedraw || diff != 0) { _bgNeedsRedraw = false; _flashlight.isDrawn = false; redrawBGStrip(0, gdi._numStrips); |