aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Kiewitz2010-06-17 16:06:01 +0000
committerMartin Kiewitz2010-06-17 16:06:01 +0000
commit00ac852dc861877857bbb4065a6cd1f78f04b023 (patch)
tree501411b218976af5bcfa11f54b3015a94b34a195
parent1bbb9d7bd29020566c36d7812c6de236a25c025e (diff)
downloadscummvm-rg350-00ac852dc861877857bbb4065a6cd1f78f04b023.tar.gz
scummvm-rg350-00ac852dc861877857bbb4065a6cd1f78f04b023.tar.bz2
scummvm-rg350-00ac852dc861877857bbb4065a6cd1f78f04b023.zip
SCI: implement workaround for laura bow 2 demo, because that interpreter uses the old real palette merging from sci1 - some views contain a palette that has all colors marked as being used, which would overwrite sysPalette with blacks
svn-id: r49936
-rw-r--r--engines/sci/graphics/palette.cpp12
-rw-r--r--engines/sci/graphics/palette.h1
2 files changed, 13 insertions, 0 deletions
diff --git a/engines/sci/graphics/palette.cpp b/engines/sci/graphics/palette.cpp
index d28fb2ada1..f10446098f 100644
--- a/engines/sci/graphics/palette.cpp
+++ b/engines/sci/graphics/palette.cpp
@@ -57,6 +57,15 @@ GfxPalette::GfxPalette(ResourceManager *resMan, GfxScreen *screen)
_sysPalette.colors[255].b = 255;
_sysPaletteChanged = false;
+ _alwaysForceRealMerge = false;
+
+ // Pseudo-WORKAROUND
+ // Laura Bow 2 is an inbetween interpreter, some parts are SCI1.1, some parts are SCI1
+ // It's not using the SCI1.1 palette merging (copying over all the colors) but the real merging
+ // If we use the copying over, we will get issues because some views have marked all colors as being used
+ // and those will overwrite the current palette in that case
+ if (!strcmp(g_sci->getGameID(), "laurabow2") && (g_sci->isDemo()))
+ _alwaysForceRealMerge = true;
}
GfxPalette::~GfxPalette() {
@@ -211,6 +220,9 @@ bool GfxPalette::merge(Palette *pFrom, Palette *pTo, bool force, bool forceRealM
int i,j;
bool paletteChanged = false;
+ // for Laura Bow 2 demo
+ forceRealMerge |= _alwaysForceRealMerge;
+
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++) {
diff --git a/engines/sci/graphics/palette.h b/engines/sci/graphics/palette.h
index d84436d708..fead340090 100644
--- a/engines/sci/graphics/palette.h
+++ b/engines/sci/graphics/palette.h
@@ -77,6 +77,7 @@ private:
uint32 _palVaryEnd;
bool _sysPaletteChanged;
+ bool _alwaysForceRealMerge;
Common::Array<PalSchedule> _schedules;
};