From c978139f100a45ca6dbe8523f939cc2fc69d39a3 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Mon, 27 Aug 2018 01:50:03 +0300 Subject: [PATCH] SCI32: Fix broken palette when loading a game in Shivers from the GMM --- engines/sci/engine/savegame.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp index 9f023c761555..08cfef14ca9c 100644 --- a/engines/sci/engine/savegame.cpp +++ b/engines/sci/engine/savegame.cpp @@ -1250,8 +1250,8 @@ void gamestate_afterRestoreFixUp(EngineState *s, int savegameId) { } break; case GID_PQ2: - // HACK: Same as above - enable the save game menu option when loading in PQ2 (bug #6875). - // It gets disabled in the game's death screen. + // HACK: Same as in Jones - enable the save game menu option when loading in + // PQ2 (bug #6875). It gets disabled in the game's death screen. g_sci->_gfxMenu->kernelSetAttribute(2, 1, SCI_MENU_ATTRIBUTE_ENABLED, TRUE_REG); // Game -> Save Game break; #ifdef ENABLE_SCI32 @@ -1260,6 +1260,16 @@ void gamestate_afterRestoreFixUp(EngineState *s, int savegameId) { s->variables[VAR_GLOBAL][kGlobalVarPhant2CensorshipFlag] = make_reg(0, ConfMan.getBool("enable_censoring")); } break; + case GID_SHIVERS: + // WORKAROUND: When loading a saved game from the GMM in the same scene in + // Shivers, we end up with the same draw list, but the scene palette is not + // set properly. Normally, Shivers does a room change when showing the saved + // game list, which does not occur when loading directly from the GMM. When + // loading from the GMM, at this point all of the visible planes and items + // are deleted, so calling frameOut here helps reset the game palette + // properly, like when changing a room. + g_sci->_gfxFrameout->frameOut(true); + break; #endif default: break;