diff options
Diffstat (limited to 'engines/scumm')
-rw-r--r-- | engines/scumm/cursor.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/engines/scumm/cursor.cpp b/engines/scumm/cursor.cpp index 63a7b1c40e..80e7899650 100644 --- a/engines/scumm/cursor.cpp +++ b/engines/scumm/cursor.cpp @@ -560,6 +560,7 @@ void ScummEngine_v5::setBuiltinCursor(int idx) { colorPCEToRGB(default_pce_cursor_colors[idx], &r, &g, &b); color = get16BitColor(r, g, b); } else if (_game.platform == Common::kPlatformFMTowns) { + //uint8 tmp = (default_cursor_colors[idx] << 4) | default_cursor_colors[idx]; byte *palEntry = &_textPalette[default_cursor_colors[idx] * 3]; color = get16BitColor(palEntry[0], palEntry[1], palEntry[2]); } else { @@ -585,8 +586,17 @@ void ScummEngine_v5::setBuiltinCursor(int idx) { if (src[i] & (1 << j)) { byte *dst1 = _grabbedCursor + 16 * scl * i * _textSurfaceMultiplier + (15 - j) * scl; byte *dst2 = (_textSurfaceMultiplier == 2) ? dst1 + 16 * scl : dst1; - for (int b = 0; b < scl; b++) - *dst1++ = *dst2++ = color; + if (_bytesPerPixelOutput == 2) { + for (int b = 0; b < scl; b += 2) { + WRITE_LE_UINT16(dst1, color); + WRITE_LE_UINT16(dst2, color); + dst1 += 2; + dst2 += 2; + } + } else { + for (int b = 0; b < scl; b++) + *dst1++ = *dst2++ = color; + } } } } |