[Scummvm-git-logs] scummvm master -> 5df535c6dbc33aa396542c3a56b368b7f60ceef6

eriktorbjorn noreply at scummvm.org
Sat Apr 5 15:34:25 UTC 2025


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:
5df535c6db SCUMM: Extend Sega CD conversation option workaround


Commit: 5df535c6dbc33aa396542c3a56b368b7f60ceef6
    https://github.com/scummvm/scummvm/commit/5df535c6dbc33aa396542c3a56b368b7f60ceef6
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-04-05T17:32:44+02:00

Commit Message:
SCUMM: Extend Sega CD conversation option workaround

It turns out that there are at least two cases where the Sega CD version
draws conversation options outside of the screen. I wouldn't be
surprised if there are more.

Changed paths:
    engines/scumm/script_v5.cpp


diff --git a/engines/scumm/script_v5.cpp b/engines/scumm/script_v5.cpp
index 02b644767c8..83da387c710 100644
--- a/engines/scumm/script_v5.cpp
+++ b/engines/scumm/script_v5.cpp
@@ -691,18 +691,26 @@ void ScummEngine_v5::o5_add() {
 	getResultPos();
 	a = getVarOrDirectWord(PARAM_1);
 
-	// WORKAROUND: In the Sega CD version of MI1, after you tell the Men of
-	// Low Moral Fiber (pirates) that the governor has been kidnapped, there
-	// is supposed to be three follow-up conversation options. But only the
-	// the first one ("Why are you just standing around...") is actually
-	// visible. This is because where the script is supposed to add 8 pixels
-	// to the Y position of the text, it instead adds 8 lines. It was still
-	// possible to select them, you just couldn't see them.
+	// WORKAROUND: In the Sega CD version of MI1, there are some cases
+	// where conversation options are invisible. This is because where it
+	// thinks it's increasing Var[229] by a number of pixels, it's actually
+	// increasing it by a number of lines, pushing the text off-screen.
 	//
-	// We fix this by changing Var[229] += 8 to Var[229] += 1 instead.
+	// We fix this by changing Var[229] += 8 to Var[229] += 1.
 
-	if (_game.id == GID_MONKEY && _game.platform == Common::kPlatformSegaCD && vm.slot[_currentScript].number == 216 && _currentRoom == 35 && a == 8 && _resultVarNumber == 229 && enhancementEnabled(kEnhSubFmtCntChanges)) {
-		a = 1;
+	if (_game.id == GID_MONKEY && _game.platform == Common::kPlatformSegaCD && _resultVarNumber == 229 && a == 8 && enhancementEnabled(kEnhSubFmtCntChanges)) {
+		int scriptNr = vm.slot[_currentScript].number;
+
+		// Room 35 - Talking to the Men of Low Moral Fiber (pirates),
+		// telling them that the governor has been kidnapped. Two of
+		// the conversation options are off-screen.
+		//
+		// Room 19 - Talking to your crew aboard the ship. The last
+		// conversation option is off-screen.
+
+		if ((scriptNr == 216 && _currentRoom == 35) ||
+		    (scriptNr == 204 && _currentRoom == 19))
+			a = 1;
 	}
 
 	// WORKAROUND bug #994: This works around a script bug in LoomCD. To




More information about the Scummvm-git-logs mailing list