aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/cursor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/scumm/cursor.cpp')
-rw-r--r--engines/scumm/cursor.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/engines/scumm/cursor.cpp b/engines/scumm/cursor.cpp
index 55f3af45ad..a998402474 100644
--- a/engines/scumm/cursor.cpp
+++ b/engines/scumm/cursor.cpp
@@ -44,6 +44,10 @@ static const byte default_v1_cursor_colors[4] = {
1, 1, 12, 11
};
+static const uint16 default_pce_cursor_colors[4] = {
+ 0x01FF, 0x016D, 0x0000, 0x0092
+};
+
static const byte default_cursor_colors[4] = {
15, 15, 7, 8
};
@@ -533,13 +537,22 @@ void ScummEngine_v5::resetCursors() {
void ScummEngine_v5::setBuiltinCursor(int idx) {
int i, j;
- byte color = default_cursor_colors[idx];
+ uint16 color;
const uint16 *src = _cursorImages[_currentCursor];
if (_bytesPerPixel == 2) {
+ if (_game.id == GID_LOOM && _game.platform == Common::kPlatformPCEngine) {
+ byte r, g, b;
+ colorPCEToRGB(default_pce_cursor_colors[idx], &r, &g, &b);
+ color = get16BitColor(r, g, b);
+ } else {
+ color = _16BitPalette[default_cursor_colors[idx]];
+ }
+
for (i = 0; i < 1024; i++)
WRITE_UINT16(_grabbedCursor + i * 2, 0xFF);
} else {
+ color = default_cursor_colors[idx];
memset(_grabbedCursor, 0xFF, sizeof(_grabbedCursor));
}
@@ -552,7 +565,7 @@ void ScummEngine_v5::setBuiltinCursor(int idx) {
for (j = 0; j < 16; j++) {
if (src[i] & (1 << j)) {
if (_bytesPerPixel == 2)
- WRITE_UINT16(_grabbedCursor + 32 * i + (15 - j) * 2, _16BitPalette[color]);
+ WRITE_UINT16(_grabbedCursor + 32 * i + (15 - j) * 2, color);
else
_grabbedCursor[16 * i + 15 - j] = color;
}