aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/graphics/screen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/graphics/screen.cpp')
-rw-r--r--engines/kyra/graphics/screen.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/engines/kyra/graphics/screen.cpp b/engines/kyra/graphics/screen.cpp
index ea0871f317..b69cc07e77 100644
--- a/engines/kyra/graphics/screen.cpp
+++ b/engines/kyra/graphics/screen.cpp
@@ -100,6 +100,8 @@ bool Screen::init() {
_useSJIS = false;
_use16ColorMode = _vm->gameFlags().use16ColorMode;
_isAmiga = (_vm->gameFlags().platform == Common::kPlatformAmiga);
+ // Amiga copper palette magic requires the use of more than 32 colors for some purposes.
+ _useAmigaExtraColors = (_isAmiga && _vm->game() == GI_EOB2);
// We only check the "render_mode" setting for both Eye of the Beholder
// games here, since all the other games do not support the render_mode
@@ -174,14 +176,18 @@ bool Screen::init() {
const int paletteCount = _isAmiga ? 13 : 4;
// We allow 256 color palettes in EGA mode, since original EOB II code does the same and requires it
const int numColors = _use16ColorMode ? 16 : (_isAmiga ? 32 : (_renderMode == Common::kRenderCGA ? 4 : 256));
+ const int numColorsInternal = _useAmigaExtraColors ? 64 : numColors;
_interfacePaletteEnabled = false;
- _screenPalette = new Palette(numColors);
+ _screenPalette = new Palette(numColorsInternal);
assert(_screenPalette);
_palettes.resize(paletteCount);
- for (int i = 0; i < paletteCount; ++i) {
+ _palettes[0] = new Palette(numColorsInternal);
+ assert(_palettes[0]);
+
+ for (int i = 1; i < paletteCount; ++i) {
_palettes[i] = new Palette(numColors);
assert(_palettes[i]);
}
@@ -195,7 +201,7 @@ bool Screen::init() {
Screen::setScreenPalette(pal);
}
- _internFadePalette = new Palette(numColors);
+ _internFadePalette = new Palette(numColorsInternal);
assert(_internFadePalette);
setScreenPalette(getPalette(0));