aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sci/graphics/palette.cpp8
-rw-r--r--engines/sci/graphics/palette.h4
-rw-r--r--engines/sci/graphics/portrait.cpp2
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);