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

bluegr bluegr at gmail.com
Tue Jul 2 00:07:50 CEST 2019


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:
d8efb64deb SCI: Disable SQ4 timepod code for missing room


Commit: d8efb64debc4af7cb0144135b6f3bebfe368a1e0
    https://github.com/scummvm/scummvm/commit/d8efb64debc4af7cb0144135b6f3bebfe368a1e0
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2019-07-02T01:07:47+03:00

Commit Message:
SCI: Disable SQ4 timepod code for missing room

Fixes #11006

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 1d0b52c..6026290 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -13618,6 +13618,31 @@ static const uint16 sq4CDPatchSewerLockup[] = {
 	PATCH_END
 };
 
+// SQ4CD had an easter egg room of things removed from Sierra games for legal
+//  reasons, but the room itself was removed from the game. Instead the room's
+//  pic (570) and messages (271) were left in along with the 18 digit timepod
+//  code that attempts to load the missing room 271 and of course crashes.
+//
+// This wouldn't be a problem except that the code is publicly known due to NRS'
+//  modified version of the game which includes a script 271 that recreates the
+//  room. The code appears in easter egg lists, and players who don't realize it
+//  only applies to a modified version attempt it and crash, so we disable it.
+//
+// Applies to: English PC CD
+// Responsible method: timeToTimeWarpS:changeState(1)
+// Fixes bug #11006
+static const uint16 sq4CdSignatureRemovedRoomTimepodCode[] = {
+	SIG_MAGICDWORD,
+	0x35, 0x01,                         // ldi 01 [ 1 == room 271 code was entered ]
+	0xa3, 0x72,                         // sal 72
+	SIG_END
+};
+
+static const uint16 sq4CdPatchRemovedRoomTimepodCode[] = {
+	0x35, 0x00,                         // ldi 00
+	PATCH_END
+};
+
 //          script, description,                                      signature                                      patch
 static const SciScriptPatcherEntry sq4Signatures[] = {
 	{  true,     1, "Floppy: EGA intro delay fix",                    2, sq4SignatureEgaIntroDelay,                     sq4PatchEgaIntroDelay },
@@ -13649,6 +13674,7 @@ static const SciScriptPatcherEntry sq4Signatures[] = {
 	{  true,   406, "CD/Floppy: zero gravity blast fix",              1, sq4SignatureZeroGravityBlast,                  sq4PatchZeroGravityBlast },
 	{  true,   410, "CD/Floppy: zero gravity blast fix",              1, sq4SignatureZeroGravityBlast,                  sq4PatchZeroGravityBlast },
 	{  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,   610, "CD: biker bar door fix",                         1, sq4CdSignatureBikerBarDoor,                    sq4CdPatchBikerBarDoor },
 	{  true,   610, "CD: biker hands-on fix",                         3, sq4CdSignatureBikerHandsOn,                    sq4CdPatchBikerHandsOn },
@@ -15109,6 +15135,10 @@ void ScriptPatcher::processScript(uint16 scriptNr, SciSpan<byte> scriptData) {
 						enablePatch(signatureTable, "Amiga: dress purchase flag clear fix");
 					}
 				}
+
+				if (g_sci->isCD() && !g_sci->getResMan()->testResource(ResourceId(kResourceTypeScript, 271))) {
+					enablePatch(signatureTable, "CD: disable timepod code for removed room");
+				}
 				break;
 			default:
 				break;





More information about the Scummvm-git-logs mailing list