diff options
Diffstat (limited to 'engines/sci/graphics')
-rw-r--r-- | engines/sci/graphics/view.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/engines/sci/graphics/view.cpp b/engines/sci/graphics/view.cpp index 5924571660..c387a58573 100644 --- a/engines/sci/graphics/view.cpp +++ b/engines/sci/graphics/view.cpp @@ -838,8 +838,14 @@ void GfxView::draw(const Common::Rect &rect, const Common::Rect &clipRect, const if (g_sci->_gfxRemap16 && g_sci->_gfxRemap16->isRemapped(outputColor)) outputColor = g_sci->_gfxRemap16->remapColor(outputColor, _screen->getVisual(x2, y2)); // SCI11+ remapping (Catdate) - if ((scaleSignal & 0x200) && g_sci->_gfxRemap16) - outputColor = g_sci->_gfxRemap16->remapColor(253, outputColor); + if ((scaleSignal & 0xFF00) && g_sci->_gfxRemap16 && _resMan->testResource(ResourceId(kResourceTypeVocab, 184))) { + if ((scaleSignal >> 8) == 1) // all black + outputColor = 0; + else if ((scaleSignal >> 8) == 2) // darken + outputColor = g_sci->_gfxRemap16->remapColor(253, outputColor); + else if ((scaleSignal >> 8) == 3) // shadow + outputColor = g_sci->_gfxRemap16->remapColor(253, _screen->getVisual(x2, y2)); + } _screen->putPixel(x2, y2, drawMask, outputColor, priority, 0); } } @@ -932,8 +938,14 @@ void GfxView::drawScaled(const Common::Rect &rect, const Common::Rect &clipRect, if (g_sci->_gfxRemap16 && g_sci->_gfxRemap16->isRemapped(outputColor)) outputColor = g_sci->_gfxRemap16->remapColor(outputColor, _screen->getVisual(x2, y2)); // SCI11+ remapping (Catdate) - if ((scaleSignal & 0x200) && g_sci->_gfxRemap16) - outputColor = g_sci->_gfxRemap16->remapColor(253, outputColor); + if ((scaleSignal & 0xFF00) && g_sci->_gfxRemap16 && _resMan->testResource(ResourceId(kResourceTypeVocab, 184))) { + if ((scaleSignal >> 8) == 1) // all black + outputColor = 0; + else if ((scaleSignal >> 8) == 2) // darken + outputColor = g_sci->_gfxRemap16->remapColor(253, outputColor); + else if ((scaleSignal >> 8) == 3) // shadow + outputColor = g_sci->_gfxRemap16->remapColor(253, _screen->getVisual(x2, y2)); + } _screen->putPixel(x2, y2, drawMask, outputColor, priority, 0); } } |