diff options
Diffstat (limited to 'engines/simon/vga.cpp')
-rw-r--r-- | engines/simon/vga.cpp | 40 |
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 |