diff options
-rw-r--r-- | engines/sci/graphics/palette.cpp | 8 | ||||
-rw-r--r-- | engines/sci/graphics/palette.h | 4 | ||||
-rw-r--r-- | engines/sci/graphics/portrait.cpp | 2 |
3 files changed, 7 insertions, 7 deletions
diff --git a/engines/sci/graphics/palette.cpp b/engines/sci/graphics/palette.cpp index f3a6803660..feb26ffee8 100644 --- a/engines/sci/graphics/palette.cpp +++ b/engines/sci/graphics/palette.cpp @@ -197,21 +197,21 @@ bool SciPalette::setFromResource(GuiResourceId resourceId, uint16 flag) { return false; } -void SciPalette::set(Palette *sciPal, uint16 flag) { +void SciPalette::set(Palette *sciPal, uint16 flag, bool forceRealMerge) { uint32 systime = _sysPalette.timestamp; if (flag == 2 || sciPal->timestamp != systime) { - merge(sciPal, &_sysPalette, flag); + merge(sciPal, &_sysPalette, flag, forceRealMerge); sciPal->timestamp = _sysPalette.timestamp; if (_screen->_picNotValid == 0 && systime != _sysPalette.timestamp) setOnScreen(); } } -void SciPalette::merge(Palette *pFrom, Palette *pTo, uint16 flag) { +void SciPalette::merge(Palette *pFrom, Palette *pTo, uint16 flag, bool forceRealMerge) { uint16 res; int i,j; - if (getSciVersion() >= SCI_VERSION_1_1) { + if ((!forceRealMerge) && (getSciVersion() >= SCI_VERSION_1_1)) { // SCI1.1+ doesnt do real merging anymore, but simply copying over the used colors from other palettes for (i = 1; i < 255; i++) { if (pFrom->colors[i].used) { diff --git a/engines/sci/graphics/palette.h b/engines/sci/graphics/palette.h index 6d1a3a9845..5fd9e13d36 100644 --- a/engines/sci/graphics/palette.h +++ b/engines/sci/graphics/palette.h @@ -41,8 +41,8 @@ public: void modifyAmigaPalette(byte *data); void setEGA(); bool setFromResource(GuiResourceId resourceId, uint16 flag); - void set(Palette *sciPal, uint16 flag); - void merge(Palette *pFrom, Palette *pTo, uint16 flag); + void set(Palette *sciPal, uint16 flag, bool forceRealMerge = false); + void merge(Palette *pFrom, Palette *pTo, uint16 flag, bool forceRealMerge); uint16 matchColor(Palette *pPal, byte r, byte g, byte b); void getSys(Palette *pal); diff --git a/engines/sci/graphics/portrait.cpp b/engines/sci/graphics/portrait.cpp index 81e4dfa15a..6026520ee4 100644 --- a/engines/sci/graphics/portrait.cpp +++ b/engines/sci/graphics/portrait.cpp @@ -140,7 +140,7 @@ void Portrait::doit(Common::Point position, uint16 resourceId, uint16 noun, uint uint syncOffset = 0; // Set the portrait palette - _palette->set(&_portraitPalette, 1); + _palette->set(&_portraitPalette, 1, true); // Draw base bitmap drawBitmap(0); |