diff options
Diffstat (limited to 'sword1')
-rw-r--r-- | sword1/screen.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sword1/screen.cpp b/sword1/screen.cpp index c037b1ae72..cc422bcd6c 100644 --- a/sword1/screen.cpp +++ b/sword1/screen.cpp @@ -70,6 +70,11 @@ void Screen::setScrolling(int16 offsetX, int16 offsetY) { Logic::_scriptVars[SCROLL_FLAG] = 1; _fullRefresh = true; } else if (Logic::_scriptVars[SCROLL_FLAG] == 1) { + // Because parallax layers may be drawn on the old scroll offset, we + // want a full refresh not only when the scroll offset changes, but + // also on the frame where they become the same. + if (_oldScrollX != Logic::_scriptVars[SCROLL_OFFSET_X] || _oldScrollY != Logic::_scriptVars[SCROLL_OFFSET_Y]) + _fullRefresh = true; _oldScrollX = Logic::_scriptVars[SCROLL_OFFSET_X]; _oldScrollY = Logic::_scriptVars[SCROLL_OFFSET_Y]; int32 distX = inRange(-MAX_SCROLL_DISTANCE, _oldScrollX - offsetX, MAX_SCROLL_DISTANCE); |