diff options
-rw-r--r-- | engines/sci/graphics/picture.cpp | 9 | ||||
-rw-r--r-- | engines/sci/graphics/screen.cpp | 5 | ||||
-rw-r--r-- | engines/sci/graphics/screen.h | 1 |
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(); |