[Scummvm-git-logs] scummvm master -> f75b273b59a4b64c2bfb31daf89dc40657b1dead

AndywinXp noreply at scummvm.org
Thu Aug 1 10:09:53 UTC 2024


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:
f75b273b59 SCUMM: MANIAC: Make the the "bad crack" fix optional


Commit: f75b273b59a4b64c2bfb31daf89dc40657b1dead
    https://github.com/scummvm/scummvm/commit/f75b273b59a4b64c2bfb31daf89dc40657b1dead
Author: AndywinXp (andywinxp at gmail.com)
Date: 2024-08-01T12:09:47+02:00

Commit Message:
SCUMM: MANIAC: Make the the "bad crack" fix optional

This commit turns the crack fix by eriktorbjorn toggleable via
enhancements (in particular, by toggling the "Fix original bugs"
box). This is done to ensure both that this original release can be
played "as-is", and that speedrunners which are accostumed to a
certain speedrunning category can still run the game with the latest
version of ScummVM.

This closes ticket #14815:
"SCUMM: MANIAC: Turn the "bad crack" fix into an optional enhancement"

Please find more details and reasonings about this in the ticket
itself.

Happy speedrunning, folks!

Changed paths:
    engines/scumm/resource.cpp


diff --git a/engines/scumm/resource.cpp b/engines/scumm/resource.cpp
index b37902dedb1..76f5fe81ffa 100644
--- a/engines/scumm/resource.cpp
+++ b/engines/scumm/resource.cpp
@@ -1770,19 +1770,31 @@ void ScummEngine::applyWorkaroundIfNeeded(ResType type, int idx) {
 
 	if (_game.id == GID_MONKEY && type == rtRoom && idx == 25 && enhancementEnabled(kEnhRestoredContent)) {
 		tryPatchMI1CannibalScript(getResourceAddress(type, idx), size);
-	} else
-
-	// WORKAROUND: There is a cracked version of Maniac Mansion v2 that
-	// attempts to remove the security door copy protection. With it, any
-	// code is accepted as long as you get the last digit wrong.
-	// Unfortunately, it changes a script that is used by all keypads in the
-	// game, which means some puzzles are completely nerfed.
-	//
-	// Even worse, this is the version that GOG and Steam are selling. No,
-	// seriously! I've reported this as a bug, but it remains unclear
-	// whether or not they will fix it.
+	} else if (_game.id == GID_MANIAC && _game.version == 2 && _game.platform == Common::kPlatformDOS &&
+			   type == rtScript && idx == 44 && size == 199 && enhancementEnabled(kEnhMinorBugFixes)) {
+		// WORKAROUND: There is a cracked version of Maniac Mansion v2 that
+		// attempts to remove the security door copy protection. With it, any
+		// code is accepted as long as you get the last digit wrong.
+		// Unfortunately, it changes a script that is used by all keypads in the
+		// game, which means some puzzles are completely nerfed.
+		//
+		// Even worse, this is the version that GOG and Steam are selling. No,
+		// seriously! I've reported this as a bug, but it remains unclear
+		// whether or not they will fix it.
+		//
+		// Please note, this fix was posthumously made optional using the kEnhMinorBugFixes
+		// enhancement class, since this is still (somehow...) an official release, and this
+		// represents an external bug fix on the data files. As of why this was made optional:
+		// there was an interest within the speedrunning community (see #14815).
+		//
+		// Quoting from the ticket:
+		// "The speedruns for the PC version of Maniac Mansion are separated into two categories:
+		// one that makes use of the broken lab door and one that does not. All of the runs, that
+		// make use of it are from within the first two years after the digital release of the game.
+		// I'm pretty sure, no one understood what was going on, they just recognized the door being
+		// broken from runs of the NES game (this is me guessing). You could say the category is
+		// "grandfathered in". Still, it is the most popular and shortest category for Maniac Mansion."
 
-	if (_game.id == GID_MANIAC && _game.version == 2 && _game.platform == Common::kPlatformDOS && type == rtScript && idx == 44 && size == 199) {
 		byte *data = getResourceAddress(type, idx);
 
 		if (data[184] == 0) {




More information about the Scummvm-git-logs mailing list