aboutsummaryrefslogtreecommitdiff
path: root/scumm/gfx.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/gfx.cpp')
-rw-r--r--scumm/gfx.cpp26
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);