[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