diff options
-rw-r--r-- | engines/sci/graphics/screen.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/engines/sci/graphics/screen.cpp b/engines/sci/graphics/screen.cpp index b019853a2b..ef2bffce76 100644 --- a/engines/sci/graphics/screen.cpp +++ b/engines/sci/graphics/screen.cpp @@ -357,6 +357,13 @@ byte GfxScreen::isFillMatch(int16 x, int16 y, byte screenMask, byte t_color, byt int offset = y * _width + x; byte match = 0; + // FIXME: + // This does not behave properly in EGA games where a pixel in the + // framebuffer is only 4 bits. We store a full byte per pixel to allow + // undithering, but when comparing pixels for flood-fill purposes, we + // should only compare the visible color of a pixel (with dithering + // enabled). See bug #3078365. Also see IS_BOUNDARY in FreeSCI's picfill. + if ((screenMask & GFX_SCREEN_MASK_VISUAL) && *(_visualScreen + offset) == t_color) match |= GFX_SCREEN_MASK_VISUAL; if ((screenMask & GFX_SCREEN_MASK_PRIORITY) && *(_priorityScreen + offset) == t_pri) |