SCUMM: Fix Indy4 Amiga cursor.

The original did not use the room nor verb palette map for the cursor, but
seems to use a custom palette. I now just changed the cursor to use the colors
from the DOS version of Indy4.

This is rather guesswork, but the original did always show a flashing color in
those colors instead of based on the screen colors.
This commit is contained in:
Johannes Schickel 2011-08-26 18:27:21 +02:00
parent cef09b345b
commit e791f904ed
2 changed files with 20 additions and 6 deletions

View File

@ -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));
}

View File

@ -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;