diff options
Diffstat (limited to 'scumm')
-rw-r--r-- | scumm/saveload.cpp | 26 | ||||
-rw-r--r-- | scumm/scumm.cpp | 29 |
2 files changed, 46 insertions, 9 deletions
diff --git a/scumm/saveload.cpp b/scumm/saveload.cpp index 6c0d698114..3445a453d2 100644 --- a/scumm/saveload.cpp +++ b/scumm/saveload.cpp @@ -252,10 +252,30 @@ bool ScummEngine::loadState(int slot, bool compat) { else setupV1ZakPalette(); } else if (_features & GF_16COLOR) { - if ((_features & GF_AMIGA) || (_features & GF_ATARI_ST)) - setupAmigaPalette(); - else + switch (_renderMode) { + case Common::kRenderEGA: setupEGAPalette(); + break; + + case Common::kRenderAmiga: + setupAmigaPalette(); + break; + + case Common::kRenderCGA: + setupCGAPalette(); + break; + + case Common::kRenderHercA: + case Common::kRenderHercG: + setupHercPalette(); + break; + + default: + if ((_features & GF_AMIGA) || (_features & GF_ATARI_ST)) + setupAmigaPalette(); + else + setupEGAPalette(); + } } else setDirtyColors(0, 255); diff --git a/scumm/scumm.cpp b/scumm/scumm.cpp index c0e7ad4d79..19c242af37 100644 --- a/scumm/scumm.cpp +++ b/scumm/scumm.cpp @@ -1323,14 +1323,31 @@ void ScummEngine::scummInit() { } else if (_features & GF_16COLOR) { for (i = 0; i < 16; i++) _shadowPalette[i] = i; - if ((_features & GF_AMIGA) || (_features & GF_ATARI_ST) || _renderMode == Common::kRenderAmiga) + + switch (_renderMode) { + case Common::kRenderEGA: + setupEGAPalette(); + break; + + case Common::kRenderAmiga: setupAmigaPalette(); - else if (_renderMode == Common::kRenderHercA || _renderMode == Common::kRenderHercG) - setupHercPalette(); - else if (_renderMode == Common::kRenderCGA) + break; + + case Common::kRenderCGA: setupCGAPalette(); - else - setupEGAPalette(); + break; + + case Common::kRenderHercA: + case Common::kRenderHercG: + setupHercPalette(); + break; + + default: + if ((_features & GF_AMIGA) || (_features & GF_ATARI_ST)) + setupAmigaPalette(); + else + setupEGAPalette(); + } } if (_version > 3 && _version < 8) |