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

bluegr noreply at scummvm.org
Sun Sep 11 17:38:24 UTC 2022


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:
b4caf16b69 SCUMM: Fix a staircase glitch in room 32 for early Loom EGA (WORKAROUND)


Commit: b4caf16b69181db87f492b3a94a5bdb563f7a4b1
    https://github.com/scummvm/scummvm/commit/b4caf16b69181db87f492b3a94a5bdb563f7a4b1
Author: Donovan Watteau (contrib at dwatteau.fr)
Date: 2022-09-11T20:38:20+03:00

Commit Message:
SCUMM: Fix a staircase glitch in room 32 for early Loom EGA (WORKAROUND)

The earliest 16-color releases of Loom have a bug when Bobbin exits
room 32 (in the dragon's cave) with the staircase on the right: he will
walk *through* them instead of just walking *on* them, if he entered the
room via the other stairs in the ground.

This has been fixed in some 1.2 and later releases, but the original
16-color English releases appear to always have this bug (even with the
original interpreters).  The 1.2 release fixed this with more changes
(incl. checking Bobbin's coordinates), but this smaller fix appears to
be enough.

With some help from eientei on Discord, who also found that the
scripts were different in this room between the EGA releases.

Changed paths:
    engines/scumm/script_v5.cpp


diff --git a/engines/scumm/script_v5.cpp b/engines/scumm/script_v5.cpp
index f28896f8366..4342541e48c 100644
--- a/engines/scumm/script_v5.cpp
+++ b/engines/scumm/script_v5.cpp
@@ -582,7 +582,7 @@ void ScummEngine_v5::o5_actorOps() {
 			if (_game.id == GID_LOOM && _game.platform == Common::kPlatformPCEngine && i == 0 && j == 0) {
 				for (int k = 0; k < 32; k++)
 					a->setPalette(k, 0xFF);
-			} else {	
+			} else {
 				a->setPalette(i, j);
 			}
 			break;
@@ -1064,6 +1064,21 @@ void ScummEngine_v5::o5_drawObject() {
 		return;
 	}
 
+	// WORKAROUND: In some of the earliest 16-color releases of Loom, the
+	// staircase at the right of room 32 will glitch if Bobbin uses it to exit
+	// the room, if he entered it via the other stairs in the ground. This has
+	// been officially fixed in some '1.2' releases (e.g. French DOS/EGA) and
+	// all later versions; this smaller workaround appears to be enough.
+	if (_game.id == GID_LOOM && _game.version == 3 && !(_game.features & GF_OLD256) && _roomResource == 32 &&
+		vm.slot[_currentScript].number == 10002 && obj == 540 && state == 1 && xpos == 255 && ypos == 255 &&
+		_enableEnhancements) {
+		if (getState(541) == 1) {
+			putState(obj, state);
+			obj = 541;
+			state = 0;
+		}
+	}
+
 	idx = getObjectIndex(obj);
 	if (idx == -1)
 		return;




More information about the Scummvm-git-logs mailing list