aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilippos Karapetis2018-08-27 01:50:03 +0300
committerFilippos Karapetis2018-08-27 01:50:32 +0300
commitc978139f100a45ca6dbe8523f939cc2fc69d39a3 (patch)
treeb9a99d85227e565ccec1e058ccd2650fbcd648ac
parent3376597abddd56f35888d561462df9a0ca662bcc (diff)
downloadscummvm-rg350-c978139f100a45ca6dbe8523f939cc2fc69d39a3.tar.gz
scummvm-rg350-c978139f100a45ca6dbe8523f939cc2fc69d39a3.tar.bz2
scummvm-rg350-c978139f100a45ca6dbe8523f939cc2fc69d39a3.zip
SCI32: Fix broken palette when loading a game in Shivers from the GMM
-rw-r--r--engines/sci/engine/savegame.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp
index 9f023c7615..08cfef14ca 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;