aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sci/graphics/picture.cpp9
-rw-r--r--engines/sci/graphics/screen.cpp5
-rw-r--r--engines/sci/graphics/screen.h1
3 files changed, 15 insertions, 0 deletions
diff --git a/engines/sci/graphics/picture.cpp b/engines/sci/graphics/picture.cpp
index 39666b82cb..6f2ca9e26d 100644
--- a/engines/sci/graphics/picture.cpp
+++ b/engines/sci/graphics/picture.cpp
@@ -754,6 +754,15 @@ void GfxPicture::drawVectorData(byte *data, int dataSize) {
// Dithering EGA pictures
if (isEGA) {
_screen->dither(_addToFlag);
+ switch (g_sci->getGameId()) {
+ case GID_SQ3:
+ switch (_resourceId) {
+ case 154: // SQ3: intro, ship gets sucked in
+ _screen->ditherForceMemorial(0xD0);
+ break;
+ }
+ break;
+ }
}
return;
default:
diff --git a/engines/sci/graphics/screen.cpp b/engines/sci/graphics/screen.cpp
index 7a10a6b749..f8dc3118b5 100644
--- a/engines/sci/graphics/screen.cpp
+++ b/engines/sci/graphics/screen.cpp
@@ -616,6 +616,11 @@ void GfxScreen::dither(bool addToFlag) {
}
}
+// Force a color combination into memorial
+void GfxScreen::ditherForceMemorial(byte color) {
+ _unditherMemorial[color] = 256;
+}
+
void GfxScreen::debugUnditherSetState(bool flag) {
_unditherState = flag;
}
diff --git a/engines/sci/graphics/screen.h b/engines/sci/graphics/screen.h
index 97f5736289..44746ae00b 100644
--- a/engines/sci/graphics/screen.h
+++ b/engines/sci/graphics/screen.h
@@ -115,6 +115,7 @@ public:
void adjustBackUpscaledCoordinates(int16 &y, int16 &x);
void dither(bool addToFlag);
+ void ditherForceMemorial(byte color);
void debugUnditherSetState(bool flag);
int16 *unditherGetMemorial();