aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci')
-rw-r--r--engines/sci/engine/kfile.cpp2
-rw-r--r--engines/sci/graphics/frameout.cpp5
2 files changed, 7 insertions, 0 deletions
diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp
index ec166e4b0a..24c96be111 100644
--- a/engines/sci/engine/kfile.cpp
+++ b/engines/sci/engine/kfile.cpp
@@ -966,6 +966,8 @@ reg_t kCD(EngineState *s, int argc, reg_t *argv) {
reg_t kSave(EngineState *s, int argc, reg_t *argv) {
switch (argv[0].toUint16()) {
+ case 0: // Called by kq7 when starting chapters
+ return SIGNAL_REG;
case 2: // GetSaveDir
// Yay! Reusing the old kernel function!
return kGetSaveDir(s, argc - 1, argv + 1);
diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp
index 08cf56c5df..71d5b9ebb2 100644
--- a/engines/sci/graphics/frameout.cpp
+++ b/engines/sci/graphics/frameout.cpp
@@ -188,6 +188,11 @@ void GfxFrameout::kernelFrameout() {
planeRect.bottom = (planeRect.bottom * _screen->getHeight()) / scriptsRunningHeight;
planeRect.right = (planeRect.right * _screen->getWidth()) / scriptsRunningWidth;
+ // We get negative left in kq7 in scrolling rooms
+ if (planeRect.left < 0)
+ planeRect.left = 0;
+ if (planeRect.top < 0)
+ planeRect.top = 0;
// We get bad plane-bottom in sq6
if (planeRect.right > _screen->getWidth())
planeRect.right = _screen->getWidth();