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

bluegr noreply at scummvm.org
Tue Aug 4 01:08:43 UTC 2026


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

Summary:
cb548832a9 DEVTOOLS: Add extra unnamed event flags for Nancy10 and regen nancy.dat
dd57ba3c56 NANCY: NANCY10: Add extra unnamed event flags for notebook tasks


Commit: cb548832a94dd238e886032b7a4e108a41ec3bca
    https://github.com/scummvm/scummvm/commit/cb548832a94dd238e886032b7a4e108a41ec3bca
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-08-04T04:04:43+03:00

Commit Message:
DEVTOOLS: Add extra unnamed event flags for Nancy10 and regen nancy.dat

The game actually uses these for notebook tasks.
Part of the fix for #16984

Changed paths:
    devtools/create_nancy/nancy10_data.h
    dists/engine-data/nancy.dat


diff --git a/devtools/create_nancy/nancy10_data.h b/devtools/create_nancy/nancy10_data.h
index 7c2a7c5eff0..326b0d5e73d 100644
--- a/devtools/create_nancy/nancy10_data.h
+++ b/devtools/create_nancy/nancy10_data.h
@@ -26,7 +26,7 @@
 
 const GameConstants _nancy10Constants ={
 	70,												// numItems
-	816,											// numEventFlags
+	888,											// numEventFlags
 	{	0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,			// genericEventFlags
 		11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
 		21, 22, 23, 24, 25, 26, 27, 28, 29, 30 },
@@ -1262,7 +1262,79 @@ const Common::Array<const char *> _nancy10EventFlagNames = {
 	"EV_Empty76",
 	"EV_Empty77",
 	"EV_Empty78",
-	"EV_Empty79"
+	"EV_Empty79",
+	"EV_Unnamed0",
+	"EV_Unnamed1",
+	"EV_Unnamed2",
+	"EV_Unnamed3",
+	"EV_Unnamed4",
+	"EV_Unnamed5",
+	"EV_Unnamed6",
+	"EV_Unnamed7",
+	"EV_Unnamed8",
+	"EV_Unnamed9",
+	"EV_Unnamed10",
+	"EV_Unnamed11",
+	"EV_Unnamed12",
+	"EV_Unnamed13",
+	"EV_Unnamed14",
+	"EV_Unnamed15",
+	"EV_Unnamed16",
+	"EV_Unnamed17",
+	"EV_Unnamed18",
+	"EV_Unnamed19",
+	"EV_Unnamed20",
+	"EV_Unnamed21",
+	"EV_Unnamed22",
+	"EV_Unnamed23",
+	"EV_Unnamed24",
+	"EV_Unnamed25",
+	"EV_Unnamed26",
+	"EV_Unnamed27",
+	"EV_Unnamed28",
+	"EV_Unnamed29",
+	"EV_Unnamed30",
+	"EV_Unnamed31",
+	"EV_Unnamed32",
+	"EV_Unnamed33",
+	"EV_Unnamed34",
+	"EV_Unnamed35",
+	"EV_Unnamed36",
+	"EV_Unnamed37",
+	"EV_Unnamed38",
+	"EV_Unnamed39",
+	"EV_Unnamed40",
+	"EV_Unnamed41",
+	"EV_Unnamed42",
+	"EV_Unnamed43",
+	"EV_Unnamed44",
+	"EV_Unnamed45",
+	"EV_Unnamed46",
+	"EV_Unnamed47",
+	"EV_Unnamed48",
+	"EV_Unnamed49",
+	"EV_Unnamed50",
+	"EV_Unnamed51",
+	"EV_Unnamed52",
+	"EV_Unnamed53",
+	"EV_Unnamed54",
+	"EV_Unnamed55",
+	"EV_Unnamed56",
+	"EV_Unnamed57",
+	"EV_Unnamed58",
+	"EV_Unnamed59",
+	"EV_Unnamed60",
+	"EV_Unnamed61",
+	"EV_Unnamed62",
+	"EV_Unnamed63",
+	"EV_Unnamed64",
+	"EV_Unnamed65",
+	"EV_Unnamed66",
+	"EV_Unnamed67",
+	"EV_Unnamed68",
+	"EV_Unnamed69",
+	"EV_Unnamed70",
+	"EV_Unnamed71"
 };
 
 #endif // NANCY10DATA_H
diff --git a/dists/engine-data/nancy.dat b/dists/engine-data/nancy.dat
index 8136f8f01f7..a25e86757ef 100644
Binary files a/dists/engine-data/nancy.dat and b/dists/engine-data/nancy.dat differ


Commit: dd57ba3c569d16e655cab325003c5c7519dd39c9
    https://github.com/scummvm/scummvm/commit/dd57ba3c569d16e655cab325003c5c7519dd39c9
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-08-04T04:07:58+03:00

Commit Message:
NANCY: NANCY10: Add extra unnamed event flags for notebook tasks

The engine uses these internally for checking the state of some
notebook tasks, but these aren't part of the debug flag table
embedded in the executable.

Fix #16984

Changed paths:
    engines/nancy/action/datarecords.cpp
    engines/nancy/nancy.h
    engines/nancy/state/scene.cpp


diff --git a/engines/nancy/action/datarecords.cpp b/engines/nancy/action/datarecords.cpp
index 0a161754b2f..ebeb8cbf9d4 100644
--- a/engines/nancy/action/datarecords.cpp
+++ b/engines/nancy/action/datarecords.cpp
@@ -443,18 +443,6 @@ void ModifyListEntry::readData(Common::SeekableReadStream &stream) {
 		_sceneID = stream.readUint16LE();
 		if (_mark < 10 && _mark != 7)
 			_sceneID = kNoScene;
-
-		// WORKAROUND: Shadow Ranch (Nancy 10) ships the "Ask Dave for the key to
-		// the rolltop desk" task (SHAT04) with completion event-flag 1824 (index
-		// 824), which is out of range (816 flags). For a checkable task (mark 7)
-		// the sceneID doubles as that flag; the original engine reads it out of
-		// bounds and happens to pass, so the box appears tickable, but we bounds-
-		// check and would reject it forever. The intended flag is
-		// EV_DG_Said_Rolltop_Key (1169).
-		if (g_nancy->getGameType() == kGameTypeNancy10 && _mark == 7 &&
-				_sceneID == 1824 && _stringID.equalsIgnoreCase("SHAT04")) {
-			_sceneID = 1169;
-		}
 	} else if (g_nancy->getGameType() >= kGameTypeNancy9 && _mark >= 10) {
 		// Nancy 9: the trailing sceneID is only present when mark >= 10.
 		_sceneID = stream.readUint16LE();
diff --git a/engines/nancy/nancy.h b/engines/nancy/nancy.h
index 753c64f1572..583aa165b23 100644
--- a/engines/nancy/nancy.h
+++ b/engines/nancy/nancy.h
@@ -54,7 +54,7 @@ class Serializer;
  */
 namespace Nancy {
 
-static const int kSavegameVersion = 6;
+static const int kSavegameVersion = 7;
 
 struct NancyGameDescription;
 
diff --git a/engines/nancy/state/scene.cpp b/engines/nancy/state/scene.cpp
index 40f82f276fb..408df240032 100644
--- a/engines/nancy/state/scene.cpp
+++ b/engines/nancy/state/scene.cpp
@@ -487,11 +487,9 @@ byte Scene::hasItem(int16 id) const {
 	} else if (id >= 0 && (uint)id < _flags.items.size()) {
 		return _flags.items[id];
 	} else {
-		// TODO: Happens in Nancy10+. Gets called for item IDs
-		// 1824, 1825, 1826, 1827, when adding tasks to the
-		// notebook, for an array of 70 items in total. Looks
-		// like a case where a flag is contained for the held
-		// item ID to be checked.
+		// Some scripts check for item IDs past the end of the inventory. The
+		// original reads those out of bounds and gets a zero, so reporting the
+		// item as missing matches it.
 		debug(2, "Scene::hasItem: out-of-range id %d (items.size=%u)", id,
 			  (uint)_flags.items.size());
 		return g_nancy->_false;
@@ -954,7 +952,14 @@ void Scene::synchronize(Common::Serializer &ser) {
 
 	g_nancy->setTotalPlayTime((uint32)_timers.lastTotalTime);
 
-	ser.syncArray(_flags.eventFlags.data(), g_nancy->getStaticData().numEventFlags, Common::Serializer::Byte);
+	uint numSavedEventFlags = g_nancy->getStaticData().numEventFlags;
+	if (ser.getVersion() < 7 && g_nancy->getGameType() == kGameTypeNancy10) {
+		// Nancy10 saves made before version 7 were written with an event flag
+		// count of 816, before the correct count of 888 was established.
+		numSavedEventFlags = 816;
+	}
+
+	ser.syncArray(_flags.eventFlags.data(), numSavedEventFlags, Common::Serializer::Byte);
 
 	if (!ser.isSaving()) {
 		// Clear generic flags




More information about the Scummvm-git-logs mailing list