[Scummvm-git-logs] scummvm master -> 3ac7b9c67c831c1e44680e81a30416edb67dc528

sluicebox noreply at scummvm.org
Sat Mar 19 00:27: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:
3ac7b9c67c SCI: Fix SQ4 CD laser beam messages


Commit: 3ac7b9c67c831c1e44680e81a30416edb67dc528
    https://github.com/scummvm/scummvm/commit/3ac7b9c67c831c1e44680e81a30416edb67dc528
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2022-03-18T20:25:33-04:00

Commit Message:
SCI: Fix SQ4 CD laser beam messages

Changed paths:
    engines/sci/engine/script_patches.cpp


diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 93166d80b82..492e2b2ae5b 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -20169,6 +20169,37 @@ static const uint16 sq4FloppyPatchSoftwareStoreEasterEggs[] = {
 	PATCH_END
 };
 
+// In the laser beam hallway, the beams don't initialize their Look message
+//  correctly in the CD version. Instead of setting their lookStr property based
+//  on their loop, they set their noun property to the value it already has.
+//  This prevents the invisible beam message from ever occurring and prevents
+//  the visible beam message when re-entering the room.
+//
+// We fix this by setting the lookStr property for the correct message.
+//
+// Applies to: English PC CD
+// Responsible methods: beam0:init, beam1:init, beam2:init
+static const uint16 sq4CdSignatureLaserBeamMessages[] = {
+	SIG_MAGICDWORD,
+	0x63, 0x38,                         // pToa loop [ 1 if visible, 0 if invisible ]
+	0x31, 0x06,                         // bnt 06
+	0x35, 0x00,                         // ldi 00
+	0x65, 0x1a,                         // aTop noun [ noun = 0 (redundant) ]
+	0x33, 0x04,                         // jmp 04
+	0x35, 0x00,                         // ldi 00
+	0x65, 0x1a,                         // aTop noun [ noun = 0 (redundant) ]
+	SIG_END
+};
+
+static const uint16 sq4CdPatchLaserBeamMessages[] = {
+	PATCH_ADDTOOFFSET(+6),
+	0x35, 0x01,                         // ldi 01 [ "The laser beams glow in the smoky air." ]
+	0x33, 0x02,                         // jmp 02
+	0x35, 0x02,                         // ldi 02 [ "You see what looks like beam emitters, but no beams." ]
+	0x65, 0x66,                         // aTop lookStr
+	PATCH_END
+};
+
 //          script, description,                                      signature                                      patch
 static const SciScriptPatcherEntry sq4Signatures[] = {
 	{  true,     1, "Floppy: EGA intro delay fix",                    2, sq4SignatureEgaIntroDelay,                     sq4PatchEgaIntroDelay },
@@ -20207,6 +20238,7 @@ static const SciScriptPatcherEntry sq4Signatures[] = {
 	{  true,   411, "CD/Floppy: zero gravity blast fix",              1, sq4SignatureZeroGravityBlast,                  sq4PatchZeroGravityBlast },
 	{ false,   531, "CD: disable timepod code for removed room",      1, sq4CdSignatureRemovedRoomTimepodCode,          sq4CdPatchRemovedRoomTimepodCode },
 	{  true,   545, "CD: vohaul pocketpal text+speech fix",           1, sq4CdSignatureVohaulPocketPalTextSpeech,       sq4CdPatchVohaulPocketPalTextSpeech },
+	{  true,   541, "CD: laser beam messages",                        3, sq4CdSignatureLaserBeamMessages,               sq4CdPatchLaserBeamMessages },
 	{  true,   610, "CD: biker bar door fix",                         1, sq4CdSignatureBikerBarDoor,                    sq4CdPatchBikerBarDoor },
 	{  true,   610, "CD: biker hands-on fix",                         3, sq4CdSignatureBikerHandsOn,                    sq4CdPatchBikerHandsOn },
 	{  true,   611, "CD: biker hands-on fix",                         1, sq4CdSignatureBikerHandsOn,                    sq4CdPatchBikerHandsOn },




More information about the Scummvm-git-logs mailing list