diff options
-rw-r--r-- | engines/scumm/cursor.cpp | 16 | ||||
-rw-r--r-- | engines/scumm/palette.cpp | 10 |
2 files changed, 20 insertions, 6 deletions
diff --git a/engines/scumm/cursor.cpp b/engines/scumm/cursor.cpp index 1c79ac7a5a..36f06a4889 100644 --- a/engines/scumm/cursor.cpp +++ b/engines/scumm/cursor.cpp @@ -609,12 +609,16 @@ void ScummEngine_v5::setBuiltinCursor(int idx) { for (i = 0; i < 1024; i++) WRITE_UINT16(_grabbedCursor + i * 2, 0xFF); } else { - color = default_cursor_colors[idx]; - // Indy4 Amiga always uses the room or verb palette map to match colors to - // the currently setup palette, thus we need to select it over here too. - // This is guesswork! - if (_game.platform == Common::kPlatformAmiga && _game.id == GID_INDY4) - color = _roomPalette[color]; + // Indy4 Amiga uses its own color set for the cursor image. + // This is patchwork code to make the cursor flash in correct colors. + if (_game.platform == Common::kPlatformAmiga && _game.id == GID_INDY4) { + static const uint8 indy4AmigaColors[4] = { + 252, 252, 253, 254 + }; + color = indy4AmigaColors[idx]; + } else { + color = default_cursor_colors[idx]; + } memset(_grabbedCursor, 0xFF, sizeof(_grabbedCursor)); } diff --git a/engines/scumm/palette.cpp b/engines/scumm/palette.cpp index 216708f098..75db90842d 100644 --- a/engines/scumm/palette.cpp +++ b/engines/scumm/palette.cpp @@ -1324,6 +1324,16 @@ void ScummEngine::updatePalette() { *p++ = data[1] * 255 / 15; *p++ = data[2] * 255 / 15; } + + // Setup colors for the mouse cursor + // Color values taken from Indy4 DOS + static const uint8 mouseCursorPalette[] = { + 255, 255, 255, + 171, 171, 171, + 87, 87, 87 + }; + + _system->getPaletteManager()->setPalette(mouseCursorPalette, 252, 3); } else { bool noir_mode = (_game.id == GID_SAMNMAX && readVar(0x8000)); int i; |