[Scummvm-cvs-logs] scummvm master -> 99de89c974fc24bf58b034842750e522d7d441d4

bluegr md5 at scummvm.org
Sun Jun 24 18:56:30 CEST 2012


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
99de89c974 SCI: Add a workaround for script bug #3537232


Commit: 99de89c974fc24bf58b034842750e522d7d441d4
    https://github.com/scummvm/scummvm/commit/99de89c974fc24bf58b034842750e522d7d441d4
Author: Filippos Karapetis (md5 at scummvm.org)
Date: 2012-06-24T09:55:28-07:00

Commit Message:
SCI: Add a workaround for script bug #3537232

The bug in question is "SCI: SQ4 Floppy DOS title screen skipping too
quickly", and is caused by game scripts not waiting between palette calls

Changed paths:
    engines/sci/engine/kgraphics.cpp



diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index 0ef268f..ec8e0db 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -645,6 +645,20 @@ reg_t kPaletteAnimate(EngineState *s, int argc, reg_t *argv) {
 	if (paletteChanged)
 		g_sci->_gfxPalette->kernelAnimateSet();
 
+	// WORKAROUND: The game scripts in SQ4 floppy count the number of elapsed
+	// cycles in the intro from the number of successive kAnimate calls during
+	// the palette cycling effect, while showing the SQ4 logo. This worked in
+	// older computers because each animate call took awhile to complete.
+	// Normally, such scripts are handled automatically by our speed throttler,
+	// however in this case there are no calls to kGameIsRestarting (where the
+	// speed throttler gets called) between the different palette animation calls.
+	// Thus, we add a small delay between each animate call to make the whole
+	// palette animation effect slower and visible, and not have the logo screen
+	// get skipped because the scripts don't wait between animation steps. Fixes
+	// bug #3537232.
+	if (g_sci->getGameId() == GID_SQ4 && !g_sci->isCD() && s->currentRoomNumber() == 1)
+		g_sci->sleep(10);
+
 	return s->r_acc;
 }
 






More information about the Scummvm-git-logs mailing list