[Scummvm-git-logs] scummvm master -> 07a411749a0b37fc71302e59ae02e7b41ad6148d

AndywinXp noreply at scummvm.org
Thu Jun 29 12:11:05 UTC 2023


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:
07a411749a SCUMM: AMIGA: Fix transitions accuracy for MANIAC and ZAK


Commit: 07a411749a0b37fc71302e59ae02e7b41ad6148d
    https://github.com/scummvm/scummvm/commit/07a411749a0b37fc71302e59ae02e7b41ad6148d
Author: AndywinXp (andywinxp at gmail.com)
Date: 2023-06-29T14:10:58+02:00

Commit Message:
SCUMM: AMIGA: Fix transitions accuracy for MANIAC and ZAK

Did you know that Maniac Mansion has no screen wipe transitions
on Amiga? I certainly didn't.

Changed paths:
    engines/scumm/gfx.cpp


diff --git a/engines/scumm/gfx.cpp b/engines/scumm/gfx.cpp
index b8febc95ad0..f6fb681db86 100644
--- a/engines/scumm/gfx.cpp
+++ b/engines/scumm/gfx.cpp
@@ -4201,6 +4201,11 @@ void ScummEngine::transitionEffect(int a) {
 	int delay, numOfIterations;
 	const int height = MIN((int)_virtscr[kMainVirtScreen].h, _screenHeight);
 
+	if (_game.id == GID_MANIAC && _game.platform == Common::kPlatformAmiga) {
+		// No transitions in the Amiga version of Maniac Mansion, verified on WinUAE.
+		return;
+	}
+
 	if (VAR_FADE_DELAY == 0xFF) {
 		if (_game.platform == Common::kPlatformC64) {
 			delay = kC64Delay;
@@ -4213,17 +4218,21 @@ void ScummEngine::transitionEffect(int a) {
 		delay = VAR(VAR_FADE_DELAY);
 	}
 
-	// Amiga handles timing a whole frame at a time
-	// instead of using quarter frames; the following
+	// Older Amiga games handle transition timing a whole frame
+	// at a time instead of using quarter frames; the following
 	// code gives my best approximation of that behavior
-	// and the resulting timing
+	// and the resulting timing.
 	if (_game.platform == Common::kPlatformAmiga) {
-		int amigaRest = (delay % 4);
-		delay = (delay / 4);
-		if (amigaRest > 0) {
-			delay += 1;
+		if (_game.id == GID_ZAK) {
+			delay = kPictureDelay;
+		} else {
+			int amigaRest = (delay % 4);
+			delay = (delay / 4);
+			if (amigaRest > 0) {
+				delay += 1;
+			}
+			delay *= 10;
 		}
-		delay *= 10;
 	}
 
 	// V3+ games have the number of iterations hardcoded; we also




More information about the Scummvm-git-logs mailing list