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

sev- noreply at scummvm.org
Sat Jul 2 10:38:43 UTC 2022


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

Summary:
34370de089 SCUMM: Fix wrong text color when Indy and his father escape from the zeppelin (FM-TOWNS)
d945157f7c SCUMM: Fix verbs not being hidden during the biplane cutscene (FM-TOWNS)


Commit: 34370de089464afd16059d9499e0655d26b80b11
    https://github.com/scummvm/scummvm/commit/34370de089464afd16059d9499e0655d26b80b11
Author: Donovan Watteau (contrib at dwatteau.fr)
Date: 2022-07-02T12:38:40+02:00

Commit Message:
SCUMM: Fix wrong text color when Indy and his father escape from the zeppelin (FM-TOWNS)

Most lines in this cutscene miss their color parameter, which makes
both actors speak with the same color, which is confusing since one of
them suddenly appeared, and you can barely see them.

(For some reason, the PC VGA version also misses the color parameters,
but it works there, maybe because there's some palette-shifting going
on, which has been mostly removed in the FM-TOWNS version?).

We can fix this by always giving an explicit color to Indy's and his
father's lines. But the lines are not attached to any actor, and it's
hard to determine who's who, especially if we want to support
translations too. Henry Sr. is the only one using a wait() instruction
in his sentence, and he's the only one saying "Junior", so we try to
detect that.

Changed paths:
    engines/scumm/script_v5.cpp


diff --git a/engines/scumm/script_v5.cpp b/engines/scumm/script_v5.cpp
index d2a8b6130c2..b030b5d7358 100644
--- a/engines/scumm/script_v5.cpp
+++ b/engines/scumm/script_v5.cpp
@@ -3160,6 +3160,20 @@ void ScummEngine_v5::decodeParseString() {
 					// speech line is missing its color parameter.
 					_string[textSlot].color = 0x0A;
 					printString(textSlot, _scriptPointer);
+				} else if (_game.id == GID_INDY3 && _game.platform == Common::kPlatformFMTowns && _roomResource == 80 &&
+						vm.slot[_currentScript].number == 201 && _enableEnhancements) {
+					// WORKAROUND: When Indy and his father escape the zeppelin
+					// with the biplane in the FM-TOWNS version, they share the
+					// same text color. Indeed, they're not given any explicit
+					// color, but for some reason this is only a problem on the
+					// FM-TOWNS. In order to determine who's who, we look for a
+					// `\xFF\x03` wait instruction or the `Junior` word, since
+					// only Henry Sr. uses them in this script.
+					if (strstr((const char *)_scriptPointer, "\xFF\x03") || strstr((const char *)_scriptPointer, "Junior"))
+						_string[textSlot].color = 0x0A;
+					else
+						_string[textSlot].color = 0x0E;
+					printString(textSlot, _scriptPointer);
 				} else if (_game.id == GID_INDY4 && _roomResource == 23 && vm.slot[_currentScript].number == 167 &&
 						len == 24 && 0==memcmp(_scriptPointer+16, "pregod", 6)) {
 					// WORKAROUND for bug #2961.


Commit: d945157f7cd480acbde0a98123656b48a629691c
    https://github.com/scummvm/scummvm/commit/d945157f7cd480acbde0a98123656b48a629691c
Author: Donovan Watteau (contrib at dwatteau.fr)
Date: 2022-07-02T12:38:40+02:00

Commit Message:
SCUMM: Fix verbs not being hidden during the biplane cutscene (FM-TOWNS)

Room 80 only contains a cutscene, where Indy and his father escape
from the zeppelin with the biplane. But it is started with
`cutscene()` instead of `cutscene([1])` which also disables the verb
interface.

The FM-TOWNS version doesn't like this and some verb leftovers were
mixed with the graphics. Adding the missing `[1]` parameter should fix
the issue.

Confirmed to also happen with the original interpreter under UNZ.

Changed paths:
    engines/scumm/script_v5.cpp


diff --git a/engines/scumm/script_v5.cpp b/engines/scumm/script_v5.cpp
index b030b5d7358..9d4110dc618 100644
--- a/engines/scumm/script_v5.cpp
+++ b/engines/scumm/script_v5.cpp
@@ -845,6 +845,15 @@ void ScummEngine_v5::o5_cursorCommand() {
 void ScummEngine_v5::o5_cutscene() {
 	int args[NUM_SCRIPT_LOCAL];
 	getWordVararg(args);
+
+	// WORKAROUND: In Indy 3, the cutscene where Indy and his father escape
+	// from the zeppelin with the biplane is missing the `[1]` parameter
+	// which disables the verb interface. For some reason, this only causes
+	// a problem on the FM-TOWNS version, though... also happens under UNZ.
+	if (_game.id == GID_INDY3 && _game.platform == Common::kPlatformFMTowns && _currentRoom == 80 && vm.slot[_currentScript].number == 201 && args[0] == 0 && _enableEnhancements) {
+		args[0] = 1;
+	}
+
 	beginCutscene(args);
 }
 




More information about the Scummvm-git-logs mailing list