aboutsummaryrefslogtreecommitdiff
path: root/engines/simon/vga.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/simon/vga.cpp')
-rw-r--r--engines/simon/vga.cpp40
1 files changed, 38 insertions, 2 deletions
diff --git a/engines/simon/vga.cpp b/engines/simon/vga.cpp
index 02a9c8ea89..4b109bbccc 100644
--- a/engines/simon/vga.cpp
+++ b/engines/simon/vga.cpp
@@ -2424,8 +2424,8 @@ void SimonEngine::vc78_computeXY() {
vsp->y = posy;
setBitFlag(85, false);
- if (getBitFlag(74) == true) {
- //centreScroll();
+ if (getBitFlag(74)) {
+ centreScroll();
}
}
@@ -2569,4 +2569,40 @@ void SimonEngine::checkScrollY(int y, int ypos) {
}
}
+void SimonEngine::centreScroll() {
+ int16 x, y, tmp;
+
+ if (_scrollXMax != 0) {
+ _scrollCount = 0;
+ x = _variableArray[15] - _scrollX;
+ if (getBitFlag(85) || x >= 624) {
+ x -= 320;
+ tmp = _scrollXMax - _scrollX;
+ if (tmp < x)
+ x = tmp;
+ _scrollCount = x;
+ } else if (x < 17) {
+ x -= 320;
+ if (_scrollX < -x)
+ x = -_scrollX;
+ _scrollCount = x;
+ }
+ } else if (_scrollYMax != 0) {
+ _scrollCount = 0;
+ y = _variableArray[16] - _scrollY;
+ if (y >= 460) {
+ y -= 240;
+ tmp = _scrollYMax - _scrollY;
+ if (tmp < y)
+ y = tmp;
+ _scrollCount = y;
+ } else if (y < 30) {
+ y -= 240;
+ if (_scrollY < -y)
+ y = -_scrollY;
+ _scrollCount = y;
+ }
+ }
+}
+
} // End of namespace Simon