aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
diff options
context:
space:
mode:
authorFilippos Karapetis2009-05-18 09:07:31 +0000
committerFilippos Karapetis2009-05-18 09:07:31 +0000
commit76ad23ddbd90fb1cb8bb3ee8a884d763e1186c69 (patch)
treea38d1efa75c7d59932d058458404310adb344797 /engines/sci/engine
parent1e547f320c83d276834a432572a8ac61ccfe4fc8 (diff)
downloadscummvm-rg350-76ad23ddbd90fb1cb8bb3ee8a884d763e1186c69.tar.gz
scummvm-rg350-76ad23ddbd90fb1cb8bb3ee8a884d763e1186c69.tar.bz2
scummvm-rg350-76ad23ddbd90fb1cb8bb3ee8a884d763e1186c69.zip
Added a workaround for LSL6, thanks to waltervn's comments
svn-id: r40677
Diffstat (limited to 'engines/sci/engine')
-rw-r--r--engines/sci/engine/kgraphics.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index 5158361dc6..3e3e65836d 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -2378,12 +2378,19 @@ reg_t kSetPort(EngineState *s, int funct_nr, int argc, reg_t *argv) {
return s->r_acc;
}
- s->gfx_state->pic_port_bounds = gfx_rect(UKPV(5), UKPV(4),
- UKPV(3), UKPV(2));
-
- // FIXME: Should really only invalidate all loaded pic resources here;
- // this is overkill
- s->gfx_state->gfxResMan->freeAllResources();
+ // LSL6 calls kSetPort to extend the screen to draw the GUI. If we free all resources
+ // here, the background picture is freed too, and this makes everything a big mess.
+ // FIXME/TODO: This code really needs to be rewritten to conform to the original behavior
+ if (s->_gameName != "LSL6") {
+ s->gfx_state->pic_port_bounds = gfx_rect(UKPV(5), UKPV(4), UKPV(3), UKPV(2));
+
+ // FIXME: Should really only invalidate all loaded pic resources here;
+ // this is overkill
+ s->gfx_state->gfxResMan->freeAllResources();
+ } else {
+ // WORKAROUND for LSL6
+ printf("SetPort case 6 called in LSL6. Origin: %d, %d - Clip rect: %d, %d, %d, %d\n", SKPV(0), SKPV(1), UKPV(2), UKPV(3), UKPV(4), UKPV(5));
+ }
break;
}