aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sci/graphics/palette.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/engines/sci/graphics/palette.cpp b/engines/sci/graphics/palette.cpp
index c667e3313f..5f703b90e3 100644
--- a/engines/sci/graphics/palette.cpp
+++ b/engines/sci/graphics/palette.cpp
@@ -206,6 +206,14 @@ bool GfxPalette::setAmiga() {
_sysPalette.colors[curColor].r = (byte1 & 0x0F) * 0x11;
_sysPalette.colors[curColor].g = ((byte2 & 0xF0) >> 4) * 0x11;
_sysPalette.colors[curColor].b = (byte2 & 0x0F) * 0x11;
+
+ if (_totalScreenColors == 64) {
+ // Set the associated color from the Amiga halfbrite colors
+ _sysPalette.colors[curColor + 32].used = 1;
+ _sysPalette.colors[curColor + 32].r = _sysPalette.colors[curColor].r >> 1;
+ _sysPalette.colors[curColor + 32].g = _sysPalette.colors[curColor].g >> 1;
+ _sysPalette.colors[curColor + 32].b = _sysPalette.colors[curColor].b >> 1;
+ }
}
// Directly set the palette, because setOnScreen() wont do a thing for amiga
@@ -226,6 +234,13 @@ void GfxPalette::modifyAmigaPalette(byte *data) {
_sysPalette.colors[curColor].r = (byte1 & 0x0F) * 0x11;
_sysPalette.colors[curColor].g = ((byte2 & 0xF0) >> 4) * 0x11;
_sysPalette.colors[curColor].b = (byte2 & 0x0F) * 0x11;
+
+ if (_totalScreenColors == 64) {
+ // Set the associated color from the Amiga halfbrite colors
+ _sysPalette.colors[curColor + 32].r = _sysPalette.colors[curColor].r >> 1;
+ _sysPalette.colors[curColor + 32].g = _sysPalette.colors[curColor].g >> 1;
+ _sysPalette.colors[curColor + 32].b = _sysPalette.colors[curColor].b >> 1;
+ }
}
copySysPaletteToScreen();