[Scummvm-git-logs] scummvm master -> 7d0f9d1066e0c6996866ad86a80667898cc2eee0

fracturehill noreply at scummvm.org
Thu Nov 9 20:19:13 UTC 2023


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

Summary:
2bd42c7b22 NANCY: Fix memory leaks in loadImage()
6d5a3e3063 DEVTOOLS: Add nancy5 patches to create_nancy
981a4afc9b NANCY: Add GUI option to nancy5 detection entries
d4ef7b81b3 NANCY: Mark nancy2-5 as testing
7270be6997 DISTS: Update nancy.dat
f5bed36b54 COMMON: Fix edge case in InstallShield file extraction
080494dd67 NANCY: Re-enable detection entries
60fe0e1ce0 NEWS: Mention four more Nancy Drew games
7d0f9d1066 NANCY: Do not overwrite settings when opening game options


Commit: 2bd42c7b226660f1bd16cc0a4570c1cd6844f4b4
    https://github.com/scummvm/scummvm/commit/2bd42c7b226660f1bd16cc0a4570c1cd6844f4b4
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2023-11-09T22:18:11+02:00

Commit Message:
NANCY: Fix memory leaks in loadImage()

Changed paths:
    engines/nancy/resource.cpp


diff --git a/engines/nancy/resource.cpp b/engines/nancy/resource.cpp
index 7bcd61b10e9..85a90597240 100644
--- a/engines/nancy/resource.cpp
+++ b/engines/nancy/resource.cpp
@@ -130,11 +130,13 @@ bool ResourceManager::loadImage(const Common::String &name, Graphics::ManagedSur
 	// Sanity checks
 	if (info.type != CifInfo::kResTypeImage) {
 		warning("Resource '%s' is not an image", name.c_str());
+		delete stream;
 		return false;
 	}
 
 	if (info.depth != 16) {
 		warning("Image '%s' has unsupported depth %i", name.c_str(), info.depth);
+		delete stream;
 		return false;
 	}
 


Commit: 6d5a3e3063cb623ac2ceffdf43616d793b3e14ba
    https://github.com/scummvm/scummvm/commit/6d5a3e3063cb623ac2ceffdf43616d793b3e14ba
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2023-11-09T22:18:11+02:00

Commit Message:
DEVTOOLS: Add nancy5 patches to create_nancy

Added a patch for a softlock between day 2 and 3, as well
as one at the very end of day 3. Added a patch for a buggy
scene that won't work properly without subtitles. Both of
these patches are supposed to be distributed by HeR, but
the file on their website does not actually contain them;
thus, they're both homebrew.

Changed paths:
  A devtools/create_nancy/files/nancy5/S3218.cif
  A devtools/create_nancy/files/nancy5/S3503.cif
    devtools/create_nancy/create_nancy.cpp
    devtools/create_nancy/nancy5_data.h


diff --git a/devtools/create_nancy/create_nancy.cpp b/devtools/create_nancy/create_nancy.cpp
index fc1b467e97d..754578f4349 100644
--- a/devtools/create_nancy/create_nancy.cpp
+++ b/devtools/create_nancy/create_nancy.cpp
@@ -265,6 +265,8 @@ int main(int argc, char *argv[]) {
 	WRAPWITHOFFSET(writeRingingTexts(output, _nancy5TelephoneRinging))
 	WRAPWITHOFFSET(writeEmptySaveTexts(output, _nancy5EmptySaveStrings))
 	WRAPWITHOFFSET(writeEventFlagNames(output, _nancy5EventFlagNames))
+	WRAPWITHOFFSET(writePatchFile(output, 6, nancy5PatchSrcFiles, "files/nancy5"))
+	WRAPWITHOFFSET(writePatchAssociations(output, nancy5PatchAssociations))
 
 	// Nancy Drew: Secret of the Scarlet Hand
 	gameOffsets.push_back(output.pos());
diff --git a/devtools/create_nancy/files/nancy5/S3218.cif b/devtools/create_nancy/files/nancy5/S3218.cif
new file mode 100644
index 00000000000..561d0c334db
Binary files /dev/null and b/devtools/create_nancy/files/nancy5/S3218.cif differ
diff --git a/devtools/create_nancy/files/nancy5/S3503.cif b/devtools/create_nancy/files/nancy5/S3503.cif
new file mode 100644
index 00000000000..b084480768e
Binary files /dev/null and b/devtools/create_nancy/files/nancy5/S3503.cif differ
diff --git a/devtools/create_nancy/nancy5_data.h b/devtools/create_nancy/nancy5_data.h
index 1a3f12966f2..6411bcdd48a 100644
--- a/devtools/create_nancy/nancy5_data.h
+++ b/devtools/create_nancy/nancy5_data.h
@@ -824,4 +824,26 @@ const Common::Array<const char *> _nancy5EventFlagNames = {
 	"EV_TBD"
 };
 
+// Patch notes:
+// Both of the softlock patch files are described on HeR Interactive's website,
+// but not actually present in the file they distribute. Thus, the fixes are ours.
+// - S3503.cif blocks the transition between day 2 and 3 until the player obtains both the flash paper
+// 	 and the safe key. This is not the most graceful way to handle the endgame softlocks, as both items
+//   would technically be obtainable on day 3 as well; however, it is the least intrusive one. Moreover,
+//   it seems to be what the original devs were planning to do; there is a check for the flash paper in
+//   the exact scene that we patch. However, failing that check simply locks you in the room forever,
+//   because they seem to have forgotten to finish the softlock fix.
+// - S3503 removes the check for close captioning which would result in the player being unable to
+//   close Simone's purse without having subtitles on. Technically not a softlock but just a plain bug,
+//   so it is not hidden behind a setting, and is always enabled.
+
+const Common::Array<const char *> nancy5PatchSrcFiles {
+	"S3503.cif",
+	"S3218.cif"
+};
+
+const Common::Array<PatchAssociation> nancy5PatchAssociations {
+	{ { "softlocks_fix", "true" }, { "S3218" } }
+};
+
 #endif // NANCY5DATA_H


Commit: 981a4afc9b14dfe797bde66851695a1931475f75
    https://github.com/scummvm/scummvm/commit/981a4afc9b14dfe797bde66851695a1931475f75
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2023-11-09T22:18:11+02:00

Commit Message:
NANCY: Add GUI option to nancy5 detection entries

The option is for enabling/disabling the softlock fix in
nancy.dat.

Changed paths:
    engines/nancy/detection.cpp


diff --git a/engines/nancy/detection.cpp b/engines/nancy/detection.cpp
index 8b3a9a45eb9..dc7cd93d0aa 100644
--- a/engines/nancy/detection.cpp
+++ b/engines/nancy/detection.cpp
@@ -55,6 +55,7 @@ static const PlainGameDescriptor nancyGames[] = {
 };
 
 #define NANCY2_GUIOPTIONS GUIO4(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH, GAMEOPTION_FIX_SOFTLOCKS, GAMEOPTION_NANCY2_TIMER)
+#define NANCY5_GUIOPTIONS GUIO3(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH, GAMEOPTION_FIX_SOFTLOCKS)
 
 static const Nancy::NancyGameDescription gameDescriptions[] = {
 
@@ -341,7 +342,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			Common::EN_ANY,
 			Common::kPlatformWindows,
 			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
-			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
+			NANCY5_GUIOPTIONS
 		},
 		Nancy::kGameTypeNancy5
 	},
@@ -358,7 +359,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			Common::EN_ANY,
 			Common::kPlatformWindows,
 			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
-			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
+			NANCY5_GUIOPTIONS
 		},
 		Nancy::kGameTypeNancy5
 	},
@@ -375,7 +376,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			Common::EN_ANY,
 			Common::kPlatformWindows,
 			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
-			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
+			NANCY5_GUIOPTIONS
 		},
 		Nancy::kGameTypeNancy5
 	},
@@ -392,7 +393,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			Common::EN_ANY,
 			Common::kPlatformWindows,
 			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
-			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
+			NANCY5_GUIOPTIONS
 		},
 		Nancy::kGameTypeNancy5
 	},*/
@@ -403,7 +404,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			Common::RU_RUS,
 			Common::kPlatformWindows,
 			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
-			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
+			NANCY5_GUIOPTIONS
 		},
 		Nancy::kGameTypeNancy5
 	},
@@ -421,7 +422,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			Common::RU_RUS,
 			Common::kPlatformWindows,
 			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
-			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
+			NANCY5_GUIOPTIONS
 		},
 		Nancy::kGameTypeNancy5
 	},


Commit: d4ef7b81b35a966af2f661c6a595af28e53c4549
    https://github.com/scummvm/scummvm/commit/d4ef7b81b35a966af2f661c6a595af28e53c4549
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2023-11-09T22:18:11+02:00

Commit Message:
NANCY: Mark nancy2-5 as testing

Changed paths:
    engines/nancy/detection.cpp


diff --git a/engines/nancy/detection.cpp b/engines/nancy/detection.cpp
index dc7cd93d0aa..046d4c1b5b9 100644
--- a/engines/nancy/detection.cpp
+++ b/engines/nancy/detection.cpp
@@ -116,7 +116,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("ciftree.dat", "fa4293d728a1b31407961cd82e86a015", 7784516),
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
+			ADGF_TESTING | ADGF_DROPPLATFORM,
 			NANCY2_GUIOPTIONS
 		},
 		Nancy::kGameTypeNancy2
@@ -127,7 +127,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("ciftree.dat", "c19f4a1193b58939ab1a7e314e9a550e", 7756789),
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
+			ADGF_TESTING | ADGF_DROPPLATFORM,
 			NANCY2_GUIOPTIONS
 		},
 		Nancy::kGameTypeNancy2
@@ -144,7 +144,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_TESTING | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
 			NANCY2_GUIOPTIONS
 		},
 		Nancy::kGameTypeNancy2
@@ -155,7 +155,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("ciftree.dat", "ee5f8832226567c3610556497c451b09", 16256355),
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_PLG_BYTE_IN_BSUM,
+			ADGF_TESTING | ADGF_DROPPLATFORM | Nancy::GF_PLG_BYTE_IN_BSUM,
 			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
 		},
 		Nancy::kGameTypeNancy3
@@ -166,7 +166,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("ciftree.dat", "6b379f9d8edfb2d439062122e08f785c", 16161115),
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
+			ADGF_TESTING | ADGF_DROPPLATFORM,
 			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
 		},
 		Nancy::kGameTypeNancy3
@@ -183,7 +183,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_TESTING | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
 			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
 		},
 		Nancy::kGameTypeNancy3
@@ -211,7 +211,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("ciftree.dat", "6b379f9d8edfb2d439062122e08f785c", 16161148),
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
+			ADGF_TESTING | ADGF_DROPPLATFORM,
 			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
 		},
 		Nancy::kGameTypeNancy3
@@ -228,7 +228,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_TESTING | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
 			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
 		},
 		Nancy::kGameTypeNancy3
@@ -239,7 +239,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("ciftree.dat", "e9d45f7db453b0d8f37d202fc979537c", 8742289),
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
+			ADGF_TESTING | ADGF_DROPPLATFORM,
 			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
 		},
 		Nancy::kGameTypeNancy4
@@ -250,7 +250,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("ciftree.dat", "3ad55cd8f9a3b010a19de44ff4ce7edf", 8786300),
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
+			ADGF_TESTING | ADGF_DROPPLATFORM,
 			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
 		},
 		Nancy::kGameTypeNancy4
@@ -267,7 +267,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_TESTING | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
 			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
 		},
 		Nancy::kGameTypeNancy4
@@ -284,7 +284,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_TESTING | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
 			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
 		},
 		Nancy::kGameTypeNancy4
@@ -301,7 +301,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_TESTING | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
 			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
 		},
 		Nancy::kGameTypeNancy4
@@ -312,7 +312,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("ciftree.dat", "a1090497f5fefce17494804bd1d624e1", 9991442),
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
+			ADGF_TESTING | ADGF_DROPPLATFORM,
 			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
 		},
 		Nancy::kGameTypeNancy4
@@ -330,7 +330,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_TESTING | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
 			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
 		},
 		Nancy::kGameTypeNancy4
@@ -341,7 +341,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("ciftree.dat", "21fa81f322595c3100d8d58d100852d5", 8187692),
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
+			ADGF_TESTING | ADGF_DROPPLATFORM,
 			NANCY5_GUIOPTIONS
 		},
 		Nancy::kGameTypeNancy5
@@ -358,7 +358,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_TESTING | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
 			NANCY5_GUIOPTIONS
 		},
 		Nancy::kGameTypeNancy5
@@ -375,7 +375,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_TESTING | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
 			NANCY5_GUIOPTIONS
 		},
 		Nancy::kGameTypeNancy5
@@ -392,7 +392,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_TESTING | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
 			NANCY5_GUIOPTIONS
 		},
 		Nancy::kGameTypeNancy5
@@ -403,7 +403,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("ciftree.dat", "8645fad8c3fb8c0ee13e7a0a75902782", 9714463),
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
+			ADGF_TESTING | ADGF_DROPPLATFORM,
 			NANCY5_GUIOPTIONS
 		},
 		Nancy::kGameTypeNancy5
@@ -421,7 +421,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_TESTING | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
 			NANCY5_GUIOPTIONS
 		},
 		Nancy::kGameTypeNancy5


Commit: 7270be6997dad9f40d93af30d8aa836448091902
    https://github.com/scummvm/scummvm/commit/7270be6997dad9f40d93af30d8aa836448091902
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2023-11-09T22:18:11+02:00

Commit Message:
DISTS: Update nancy.dat

The file now contains fixes for a bunch of typos, as well as
patches for game bugs and softlocks.

Changed paths:
    dists/engine-data/nancy.dat


diff --git a/dists/engine-data/nancy.dat b/dists/engine-data/nancy.dat
index dc3631dad52..1ceb6a9c9f0 100644
Binary files a/dists/engine-data/nancy.dat and b/dists/engine-data/nancy.dat differ


Commit: f5bed36b546be9e34169f44dc52418fda269328f
    https://github.com/scummvm/scummvm/commit/f5bed36b546be9e34169f44dc52418fda269328f
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2023-11-09T22:18:11+02:00

Commit Message:
COMMON: Fix edge case in InstallShield file extraction

It is possible for a file table to contain multiple entries for
the same file, each with a different volume. This is valid,
and means that the file can be extracted from multiple .cab
files.
However, sometimes the header can report a file as existing
in multiple volumes despite it not actually being present in
all of them. The previous policy when encountering
duplicate entries was to just overwrite, which effectively
resulted in us keeping the last encountered entry, which
would be for the highest volume id. However, when an
erroneous entry mentioned above was encountered,
extraction would fail.
This commit makes it so we now keep the entry with the
lowest volume id, and discard the rest.

Changed paths:
    common/compression/installshield_cab.cpp


diff --git a/common/compression/installshield_cab.cpp b/common/compression/installshield_cab.cpp
index fc7d7a59d36..ec9b0b2f3e9 100644
--- a/common/compression/installshield_cab.cpp
+++ b/common/compression/installshield_cab.cpp
@@ -251,7 +251,11 @@ bool InstallShieldCabinet::open(const String *baseName, const FSNode *node) {
 			// Then let's get the string
 			file->seek(headerHeader.cabDescriptorOffset + fileTableOffset + nameOffset);
 			String fileName = file->readString();
-			_map[fileName] = entry;
+
+			// Entries can appear in multiple volumes (sometimes erroneously).
+			// We keep the one with the lowest volume ID
+			if (!_map.contains(fileName) || _map[fileName].volume > entry.volume)
+				_map[fileName] = entry;
 		}
 	} else {
 		file->seek(headerHeader.cabDescriptorOffset + fileTableOffset);
@@ -309,7 +313,10 @@ bool InstallShieldCabinet::open(const String *baseName, const FSNode *node) {
 
 			++fileIndex;
 
-			_map[fileName] = entry;
+			// Entries can appear in multiple volumes (sometimes erroneously).
+			// We keep the one with the lowest volume ID
+			if (!_map.contains(fileName) || _map[fileName].volume > entry.volume)
+				_map[fileName] = entry;
 		}
 	}
 


Commit: 080494dd67cc2f78a4ec6b2c99eb038b8e8bfcd2
    https://github.com/scummvm/scummvm/commit/080494dd67cc2f78a4ec6b2c99eb038b8e8bfcd2
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2023-11-09T22:18:11+02:00

Commit Message:
NANCY: Re-enable detection entries

Added ciftree.dat checksums to three detection entries and
re-enabled them.

Changed paths:
    engines/nancy/detection.cpp


diff --git a/engines/nancy/detection.cpp b/engines/nancy/detection.cpp
index 046d4c1b5b9..e9aed8c2439 100644
--- a/engines/nancy/detection.cpp
+++ b/engines/nancy/detection.cpp
@@ -188,7 +188,6 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 		},
 		Nancy::kGameTypeNancy3
 	},
-	/* Temporarily disabled; needs ciftree.dat
 	{ // MD5 by waltervn
 		{
 			"nancy3", nullptr,
@@ -196,6 +195,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 				{ "data1.hdr", 0, "44906f3d2242f73f16feb8eb6a5161cb", 207327 },
 				{ "data1.cab", 0, "e258cc871e5de5ae004d03c4e31431c7", 1555916 },
 				{ "data2.cab", 0, "364dfd25677026da505f1fa6edd5571f", 137373135 },
+				{ "is:data1.cab:ciftree.dat", 0, "A:ee5f8832226567c3610556497c451b09", 16256355 },
 				AD_LISTEND
 			},
 			Common::EN_ANY,
@@ -204,7 +204,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
 		},
 		Nancy::kGameTypeNancy3
-	},*/
+	},
 	{ // MD5 by fracturehill
 		{
 			"nancy3", nullptr,
@@ -289,7 +289,6 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 		},
 		Nancy::kGameTypeNancy4
 	},
-	/* Temporarily disabled: needs ciftree.dat
 	{ // MD5 by eriktorbjorn
 		{
 			"nancy4", nullptr,
@@ -297,6 +296,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 				{ "data1.hdr", 0, "9febd79adc61148088b464140a124172", 263445 },
 				{ "data1.cab", 0, "af5e06e381473fdc3ff6f7cac5619e32", 1569396 },
 				{ "data2.cab", 0, "ed0ca7ba3cc315f705e48fe604d53523", 140562769 },
+				{ "is:data1.cab:ciftree.dat", 0, "A:3ad55cd8f9a3b010a19de44ff4ce7edf", 8786300 },
 				AD_LISTEND
 			},
 			Common::EN_ANY,
@@ -305,7 +305,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			GUIO2(GAMEOPTION_PLAYER_SPEECH, GAMEOPTION_CHARACTER_SPEECH)
 		},
 		Nancy::kGameTypeNancy4
-	},*/
+	},
 	{ // MD5 by fracturehill
 		{
 			"nancy4", nullptr,
@@ -437,7 +437,6 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 		},
 		Nancy::kGameTypeNancy6
 	},
-	/* Temporarily disabled; needs ciftree.dat
 	{ // MD5 by eriktorbjorn
 		{
 			"nancy6", nullptr,
@@ -445,6 +444,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 				{ "data1.hdr", 0, "6a45cdf632301ae1b55fd7474bec3650", 298551 },
 				{ "data1.cab", 0, "399b83b188bfc05077d81cc1eadd456c", 4470086 },
 				{ "data2.cab", 0, "30ca94b596f6b5971a22c111b24d6764", 206382511 },
+				{ "is:data1.cab:ciftree.dat", 0, "A:a97b848651fdcf38f5cad7092d98e4a1", 28888006 },
 				AD_LISTEND
 			},
 			Common::EN_ANY,
@@ -453,7 +453,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			GUIO1(GAMEOPTION_AUTO_MOVE)
 		},
 		Nancy::kGameTypeNancy6
-	},*/
+	},
 	{ // MD5 by fracturehill
 		{
 			"nancy6", nullptr,


Commit: 60fe0e1ce0567cd13c5aa380486c1e1f9b037379
    https://github.com/scummvm/scummvm/commit/60fe0e1ce0567cd13c5aa380486c1e1f9b037379
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2023-11-09T22:18:11+02:00

Commit Message:
NEWS: Mention four more Nancy Drew games

Changed paths:
    NEWS.md


diff --git a/NEWS.md b/NEWS.md
index 92b43139945..100724e357e 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -5,7 +5,9 @@ For a more comprehensive changelog of the latest experimental code, see:
 
  New games:
    - Added support for macOS versions of Syberia and Syberia II.
-   - Added support for The Vampire Diaries and Nancy Drew: Secrets Can Kill.
+   - Added support for The Vampire Diaries, Nancy Drew: Secrets Can Kill,
+     Nancy Drew: Stay Tuned for Danger, Nancy Drew: Message in a Haunted Mansion,
+	 Nancy Drew: Treasure in the Royal Tower and Nancy Drew: The Final Scene.
    - Added support for Reah: Face the Unknown and Schizm: Mysterious Journey.
    - Added support for Might and Magic Book One.
    - Added support for Muppet Treasure Island.


Commit: 7d0f9d1066e0c6996866ad86a80667898cc2eee0
    https://github.com/scummvm/scummvm/commit/7d0f9d1066e0c6996866ad86a80667898cc2eee0
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2023-11-09T22:18:12+02:00

Commit Message:
NANCY: Do not overwrite settings when opening game options

Fixed registerDefaultSettings() so it no longer overwrites
game settings, but just registers the defaults instead.

Changed paths:
    engines/nancy/metaengine.cpp


diff --git a/engines/nancy/metaengine.cpp b/engines/nancy/metaengine.cpp
index d79f81bee33..0f6b9a1b5b6 100644
--- a/engines/nancy/metaengine.cpp
+++ b/engines/nancy/metaengine.cpp
@@ -179,13 +179,13 @@ void NancyMetaEngine::getSavegameThumbnail(Graphics::Surface &thumb) {
 }
 
 void NancyMetaEngine::registerDefaultSettings(const Common::String &target) const {
-	ConfMan.setInt("music_volume", 54 * 255 / 100, target);
-	ConfMan.setInt("speech_volume", 54 * 255 / 100, target);
-	ConfMan.setInt("sfx_volume", 51 * 255 / 100, target);
-	ConfMan.setBool("subtitles", true, target);
+	ConfMan.registerDefault("music_volume", 54 * 255 / 100);
+	ConfMan.registerDefault("speech_volume", 54 * 255 / 100);
+	ConfMan.registerDefault("sfx_volume", 51 * 255 / 100);
+	ConfMan.registerDefault("subtitles", true);
 
-	ConfMan.setBool("player_speech", true, target);
-	ConfMan.setBool("character_speech", true, target);
+	ConfMan.registerDefault("player_speech", true);
+	ConfMan.registerDefault("character_speech", true);
 }
 
 const ADExtraGuiOptionsMap *NancyMetaEngine::getAdvancedExtraGuiOptions() const {




More information about the Scummvm-git-logs mailing list