diff options
-rw-r--r-- | engines/simon/cursor.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/engines/simon/cursor.cpp b/engines/simon/cursor.cpp index 3b7725c7d7..9acc4aa59f 100644 --- a/engines/simon/cursor.cpp +++ b/engines/simon/cursor.cpp @@ -226,10 +226,23 @@ static const byte _simon2_cursors[10][256] = { void SimonEngine::drawMousePointer() { //debug(0, "Mouse %d Anim %d Max %d", _mouseCursor, _mouseAnim, _mouseAnimMax); - if (getGameType() == GType_SIMON2) + if (getGameType() == GType_FF) { + byte *src, *dst; + VgaPointersEntry *vpe = &_vgaBufferPointers[7]; + + src = vpe->vgaFile2 + 98 * 8; + uint width = READ_LE_UINT16(src + 6); + uint height = READ_LE_UINT16(src + 4) & 0x7FFF; + src = vpe->vgaFile2 + readUint32Wrapper(src); + + dst = (byte *)malloc(width * height); + memcpy(dst, src, width * height); + _system->setMouseCursor(dst, width, height, width / 2, height / 2, 0); + } else if (getGameType() == GType_SIMON2) { _system->setMouseCursor(_simon2_cursors[_mouseCursor], 16, 16, 7, 7); - else + } else { _system->setMouseCursor(_simon1_cursor, 16, 16, 0, 0); + } } } // End of namespace Simon |