[Scummvm-tracker] [ScummVM :: Bugs] #15869: SCUMM: MI1: Message banner can be invisible if palette is all black

ScummVM :: Bugs trac at scummvm.org
Fri Jul 11 05:34:08 UTC 2025


#15869: SCUMM: MI1: Message banner can be invisible if palette is all black
-------------------------+------------------------------
Reporter:  eriktorbjorn  |       Owner:  AndywinXp
    Type:  defect        |      Status:  new
Priority:  normal        |   Component:  Engine: SCUMM
 Version:                |  Resolution:
Keywords:                |        Game:  Monkey Island 1
-------------------------+------------------------------
Comment (by eriktorbjorn):

 I've tried it in DREAMM, and the banner is visible there.

 Simply extending the case to cover v4 isn't quite enough. We also need to
 initialize the shadow palette, apparently? Quick proof-of-concept patch:

 {{{
 diff --git a/engines/scumm/palette.cpp b/engines/scumm/palette.cpp
 index f94c44410dc..4d32ccf0b76 100644
 --- a/engines/scumm/palette.cpp
 +++ b/engines/scumm/palette.cpp
 @@ -270,7 +270,7 @@ void ScummEngine::resetPalette(bool isBootUp) {

 _townsScreen->toggleLayers(_townsActiveLayerFlags);
  #endif // DISABLE_TOWNS_DUAL_LAYER_MODE
 -               } else if (isBootUp && (_game.version >= 5 &&
 _game.heversion == 0) &&
 +               } else if (isBootUp && (_game.version >= 4 &&
 _game.heversion == 0) &&
                         (_game.platform == Common::kPlatformDOS ||
 _game.platform == Common::kPlatformUnknown) &&
                         _renderMode == Common::kRenderDefault) {
                         // VGA games at boot-up have at their disposal
 whatever mode 13h
 @@ -278,6 +278,11 @@ void ScummEngine::resetPalette(bool isBootUp) {
                         // We just need the first few colors, which are
 the same as the EGA colors.
                         // (See #15869: "SCUMM: MI1: Message banner can be
 invisible if palette is all black")
                         setPaletteFromTable(tableEGAPalette,
 sizeof(tableEGAPalette) / 3);
 +
 +                       if (_game.id == GID_MONKEY_VGA) {
 +                               for (int i = 0; i < _shadowPaletteSize;
 i++)
 +                                       _shadowPalette[i] = i;
 +                       }
                 }

                 setDirtyColors(0, 255);
 }}}
-- 
Ticket URL: <https://bugs.scummvm.org/ticket/15869#comment:4>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list