[Scummvm-git-logs] scummvm master -> 1c5a9ed526efec93b1a9d837faa2cfecdd957652

bluegr noreply at scummvm.org
Sat Jun 13 22:08:28 UTC 2026


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

Summary:
e36beef173 NANCY: Implement video start flags for secondary movies in Nancy10+
2ae68a2390 NANCY: Implement autotext lookup for sound names
1c5a9ed526 NANCY: Fix regression with font height calculation in Nancy6+


Commit: e36beef17375dd450ca84f25b9aa12c909eafb00
    https://github.com/scummvm/scummvm/commit/e36beef17375dd450ca84f25b9aa12c909eafb00
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-06-14T01:08:17+03:00

Commit Message:
NANCY: Implement video start flags for secondary movies in Nancy10+

Fixes:
- Meeting Dave in the cellar (hack no longer needed)
- Partial fix for the feed bins puzzle

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


diff --git a/engines/nancy/action/secondarymovie.cpp b/engines/nancy/action/secondarymovie.cpp
index c8194710fc5..0aef5ece44b 100644
--- a/engines/nancy/action/secondarymovie.cpp
+++ b/engines/nancy/action/secondarymovie.cpp
@@ -69,7 +69,12 @@ void PlaySecondaryMovie::readData(Common::SeekableReadStream &stream) {
 	ser.syncAsUint16LE(_lastFrame);
 
 	ser.syncAsSint16LE(_sceneChange.sceneID, kGameTypeNancy10);
-	ser.skip(5 * 2, kGameTypeNancy10);	// TODO
+	ser.skip(3 * 2, kGameTypeNancy10);	// TODO
+
+	if (g_nancy->getGameType() >= kGameTypeNancy10) {
+		ser.syncAsSint16LE(_videoStartFlag.label);
+		ser.syncAsUint16LE(_videoStartFlag.flag);
+	}
 
 	if (ser.getVersion() >= kGameTypeNancy1) {
 		uint size = 15;
@@ -170,6 +175,9 @@ void PlaySecondaryMovie::execute() {
 
 		NancySceneState.setActiveMovie(this);
 
+		if (g_nancy->getGameType() >= kGameTypeNancy10)
+			NancySceneState.setEventFlag(_videoStartFlag);
+
 		_state = kRun;
 
 		if (Common::Rect(_decoder->getWidth(), _decoder->getHeight()) == NancySceneState.getViewport().getBounds()) {
diff --git a/engines/nancy/action/secondarymovie.h b/engines/nancy/action/secondarymovie.h
index 92078cd92fb..555706712b8 100644
--- a/engines/nancy/action/secondarymovie.h
+++ b/engines/nancy/action/secondarymovie.h
@@ -83,6 +83,7 @@ public:
 	uint16 _lastFrame = 0;
 	Common::Array<FlagAtFrame> _frameFlags;
 	MultiEventFlagDescription _triggerFlags;
+	FlagDescription _videoStartFlag;
 
 	SoundDescription _sound;
 
diff --git a/engines/nancy/state/scene.cpp b/engines/nancy/state/scene.cpp
index 808785d48a7..f3f856c11ce 100644
--- a/engines/nancy/state/scene.cpp
+++ b/engines/nancy/state/scene.cpp
@@ -250,14 +250,6 @@ void Scene::changeScene(const SceneChangeDescription &sceneDescription) {
 		return;
 	}
 
-	// HACK: The event flag for meeting Dave in the cellar is not set
-	// correctly in Nancy 10, so we hardcode the flag change here to
-	// avoid talking with him over and over again.
-	// TODO: Find out why this flag is not set correctly and implement a
-	// proper solution for it.
-	if (g_nancy->getGameType() == kGameTypeNancy10 && sceneDescription.sceneID == 3996)
-		NancySceneState.setEventFlag(314, g_nancy->_true);	// EV_Met_DG_Cellar
-
 	_sceneState.nextScene = sceneDescription;
 	_state = kLoad;
 }


Commit: 2ae68a2390a0b7162203c4e5072c9d27cd21ff2c
    https://github.com/scummvm/scummvm/commit/2ae68a2390a0b7162203c4e5072c9d27cd21ff2c
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-06-14T01:08:18+03:00

Commit Message:
NANCY: Implement autotext lookup for sound names

Changed paths:
    engines/nancy/action/soundrecords.cpp
    engines/nancy/commontypes.cpp
    engines/nancy/util.cpp
    engines/nancy/util.h


diff --git a/engines/nancy/action/soundrecords.cpp b/engines/nancy/action/soundrecords.cpp
index c27435c3a5d..43559183a8c 100644
--- a/engines/nancy/action/soundrecords.cpp
+++ b/engines/nancy/action/soundrecords.cpp
@@ -259,6 +259,9 @@ void StopSound::execute() {
 void PlayRandomSound::readData(Common::SeekableReadStream &stream) {
 	uint16 numSounds = stream.readUint16LE();
 	readFilenameArray(stream, _soundNames, numSounds - 1);
+	for (Common::String &n : _soundNames) {
+		resolveSoundNameAutoText(n);
+	}
 
 	PlaySound::readData(stream);
 	_soundNames.push_back(_sound.name);
@@ -275,6 +278,9 @@ void PlayRandomSound::execute() {
 void PlayRandomSoundTerse::readData(Common::SeekableReadStream &stream) {
 	uint16 numSounds = stream.readUint16LE();
 	readFilenameArray(stream, _soundNames, numSounds - 1);
+	for (Common::String &n : _soundNames) {
+		resolveSoundNameAutoText(n);
+	}
 
 	PlaySoundTerse::readData(stream);
 
diff --git a/engines/nancy/commontypes.cpp b/engines/nancy/commontypes.cpp
index 512502da263..15c8887f2f7 100644
--- a/engines/nancy/commontypes.cpp
+++ b/engines/nancy/commontypes.cpp
@@ -194,6 +194,7 @@ void SoundDescription::readDIGI(Common::SeekableReadStream &stream) {
 	s.setVersion(g_nancy->getGameType());
 
 	readFilename(s, name);
+	resolveSoundNameAutoText(name);
 
 	s.syncAsUint16LE(channelID);
 
@@ -261,6 +262,7 @@ void SoundDescription::readScene(Common::SeekableReadStream &stream) {
 
 void SoundDescription::readTerse(Common::SeekableReadStream &stream) {
 	readFilename(stream, name);
+	resolveSoundNameAutoText(name);
 	channelID = stream.readUint16LE();
 	numLoops = stream.readUint32LE();
 	volume = stream.readUint16LE();
diff --git a/engines/nancy/util.cpp b/engines/nancy/util.cpp
index 6c9518635f1..6ec9e89a96b 100644
--- a/engines/nancy/util.cpp
+++ b/engines/nancy/util.cpp
@@ -248,6 +248,16 @@ void readFilenameArray(Common::Serializer &stream, Common::Array<Common::Path> &
 	}
 }
 
+// Names with a leading '*' are CVTX (AUTOTEXT) keys for the real filename.
+void resolveSoundNameAutoText(Common::String &name) {
+	if (name.empty() || name.firstChar() != '*') {
+		return;
+	}
+	const CVTX *autotext = (const CVTX *)g_nancy->getEngineData("AUTOTEXT");
+	name.deleteChar(0);
+	name = getTextFromCaseInsensitiveKey(autotext->texts, name);
+}
+
 void readUIButton(Common::SeekableReadStream &stream, UIButtonRecord &dst) {
 	// Read common fields for both buttons and sliders
 	readFilename(stream, dst.primaryImageName);
diff --git a/engines/nancy/util.h b/engines/nancy/util.h
index 0977792e16f..5a96d20e29e 100644
--- a/engines/nancy/util.h
+++ b/engines/nancy/util.h
@@ -58,6 +58,8 @@ void readFilenameArray(Common::Serializer &stream, Common::Array<Common::String>
 void readFilenameArray(Common::SeekableReadStream &stream, Common::Array<Common::Path> &inArray, uint num);
 void readFilenameArray(Common::Serializer &stream, Common::Array<Common::Path> &inArray, uint num, Common::Serializer::Version minVersion = 0, Common::Serializer::Version maxVersion = Common::Serializer::kLastVersion);
 
+void resolveSoundNameAutoText(Common::String &name);
+
 void assembleTextLine(char *rawCaption, Common::String &output, uint size);
 
 void readUIButton(Common::SeekableReadStream &stream, UIButtonRecord &dst);


Commit: 1c5a9ed526efec93b1a9d837faa2cfecdd957652
    https://github.com/scummvm/scummvm/commit/1c5a9ed526efec93b1a9d837faa2cfecdd957652
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-06-14T01:08:19+03:00

Commit Message:
NANCY: Fix regression with font height calculation in Nancy6+

A regression from 24dda66e7783fad9d73b5f71dbfe73cea2e0b05b.

Fix #16855

Changed paths:
    engines/nancy/font.cpp


diff --git a/engines/nancy/font.cpp b/engines/nancy/font.cpp
index 2235f9cc837..e247e5ede9b 100644
--- a/engines/nancy/font.cpp
+++ b/engines/nancy/font.cpp
@@ -147,7 +147,7 @@ void Font::read(Common::SeekableReadStream &stream) {
 	}
 
 	if (g_nancy->getGameType() >= kGameTypeNancy6) {
-		_fontHeight = getCharWidth('o') * 2 - 1;
+		_fontHeight = (getCharWidth('o') - 1) * 2;
 	}
 
 	_textboxData = GetEngineData(TBOX);




More information about the Scummvm-git-logs mailing list