aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/simon/cursor.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/engines/simon/cursor.cpp b/engines/simon/cursor.cpp
index c7800eb434..b77dd487e9 100644
--- a/engines/simon/cursor.cpp
+++ b/engines/simon/cursor.cpp
@@ -229,6 +229,7 @@ void SimonEngine::drawMousePointer() {
if (getGameType() == GType_FF) {
byte *src, *dst;
VgaPointersEntry *vpe = &_vgaBufferPointers[7];
+ uint cursor, image, width, height;
if (_animatePointer) {
_mouseAnim++;
@@ -236,11 +237,19 @@ void SimonEngine::drawMousePointer() {
_mouseAnim = 1;
}
- uint cursor = _mouseCursor * 16 + 1 + _mouseAnim;
- src = vpe->vgaFile2 + cursor * 8;
+ cursor = _mouseCursor;
+ if (_animatePointer == 0 && getBitFlag(99)) {
+ cursor = 6;
+ _mouseAnim = 1;
+ } else if (getBitFlag(72)) {
+ cursor += 7;
+ }
+
+ image = cursor * 16 + 1 + _mouseAnim;
+ src = vpe->vgaFile2 + image * 8;
- uint width = READ_LE_UINT16(src + 6);
- uint height = READ_LE_UINT16(src + 4) & 0x7FFF;
+ width = READ_LE_UINT16(src + 6);
+ height = READ_LE_UINT16(src + 4) & 0x7FFF;
src = vpe->vgaFile2 + readUint32Wrapper(src);
dst = (byte *)malloc(width * height);