aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
diff options
context:
space:
mode:
authorFilippos Karapetis2012-07-25 01:32:34 +0300
committerFilippos Karapetis2012-07-25 01:32:34 +0300
commit55e508b91f840cd4f6358d1a1ff192b16ab1338c (patch)
tree9ed979797bae1089f9b15af876a51ab773acc325 /engines/sci
parent797dbfe506d5273c0385997401aa32524995df33 (diff)
downloadscummvm-rg350-55e508b91f840cd4f6358d1a1ff192b16ab1338c.tar.gz
scummvm-rg350-55e508b91f840cd4f6358d1a1ff192b16ab1338c.tar.bz2
scummvm-rg350-55e508b91f840cd4f6358d1a1ff192b16ab1338c.zip
SCI: Add a workaround for QFG4, screen 140 (character selection screen)
Diffstat (limited to 'engines/sci')
-rw-r--r--engines/sci/engine/kgraphics32.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/engines/sci/engine/kgraphics32.cpp b/engines/sci/engine/kgraphics32.cpp
index 3d2c2af81b..d3db28226a 100644
--- a/engines/sci/engine/kgraphics32.cpp
+++ b/engines/sci/engine/kgraphics32.cpp
@@ -738,6 +738,12 @@ reg_t kRemapColors32(EngineState *s, int argc, reg_t *argv) {
switch (operation) {
case 0: { // turn remapping off
+ // WORKAROUND: Game scripts in QFG4 erroneously turn remapping off in room
+ // 140 (the character point allocation screen) and never turn it back on,
+ // even if it's clearly used in that screen.
+ if (g_sci->getGameId() == GID_QFG4 && s->currentRoomNumber() == 140)
+ return s->r_acc;
+
int16 base = (argc >= 2) ? argv[1].toSint16() : 0;
if (base > 0)
warning("kRemapColors(0) called with base %d", base);