mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-18 23:57:32 +00:00
SCI: change floodfill fix for sq4
behaviour wasn't changed in SCI1, instead it seems that SSCI draws overlays to separate memory and then copies them over. Previous commit caused regression in qfg1vga (funny room)
This commit is contained in:
parent
43c2054fd0
commit
8b3efba40f
@ -919,7 +919,7 @@ void GfxPicture::vectorFloodFill(int16 x, int16 y, byte color, byte priority, by
|
||||
}
|
||||
|
||||
// This logic was taken directly from sierra sci, floodfill will get aborted on various occations
|
||||
if (isEGA) {
|
||||
if (!_addToFlag) {
|
||||
if (screenMask & GFX_SCREEN_MASK_VISUAL) {
|
||||
if ((color == _screen->getColorWhite()) || (searchColor != _screen->getColorWhite()))
|
||||
return;
|
||||
@ -931,7 +931,9 @@ void GfxPicture::vectorFloodFill(int16 x, int16 y, byte color, byte priority, by
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
// VGA logic (SCI1 early w/o QfG2)
|
||||
// When adding a picture onto another picture, don't abort in case current pixel was already drawn previously
|
||||
// It seems Sierra SCI unpacks such pictures separately and then copies them over
|
||||
// We draw directly to the screen.
|
||||
// fixes Space Quest 4 orange ship lifting off (bug #6446)
|
||||
if (screenMask & GFX_SCREEN_MASK_VISUAL) {
|
||||
if (color == _screen->getColorWhite())
|
||||
@ -982,6 +984,12 @@ void GfxPicture::vectorFloodFill(int16 x, int16 y, byte color, byte priority, by
|
||||
_screen->putPixel(--w, p.y, screenMask, color, priority, control);
|
||||
while (e < r && (matchedMask = _screen->isFillMatch(e + 1, p.y, matchMask, searchColor, searchPriority, searchControl, isEGA)))
|
||||
_screen->putPixel(++e, p.y, screenMask, color, priority, control);
|
||||
#if 0
|
||||
// debug code for floodfill
|
||||
_screen->copyToScreen();
|
||||
g_system->updateScreen();
|
||||
g_system->delayMillis(100);
|
||||
#endif
|
||||
// checking lines above and below for possible flood targets
|
||||
a_set = b_set = 0;
|
||||
while (w <= e) {
|
||||
|
Loading…
Reference in New Issue
Block a user