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

bluegr noreply at scummvm.org
Thu Oct 15 23:46:33 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:
6b2b19e7f6 NANCY: Keep the full color depth of Bink scene backgrounds
940d039e7a NANCY: NANCY15: Add the CD version to the detection entry list
ccbd5cb36d NANCY: NANCY20: Add the installed version to the detection entry list


Commit: 6b2b19e7f6a4b74d56fec02a52b119c1861bef95
    https://github.com/scummvm/scummvm/commit/6b2b19e7f6a4b74d56fec02a52b119c1861bef95
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-10-16T02:45:58+03:00

Commit Message:
NANCY: Keep the full color depth of Bink scene backgrounds

- Scene background videos are now decoded in the screen's RGB565
  format, like the original, instead of RGB555, which banded smooth
  gradients (e.g. the Nancy11 login screen in scene 4160)
- Games before Nancy10 use AVF for backgrounds, so they're unaffected
- Nancy13+ uses the same 32-bit format for screen and images, so
  nothing changes there
- Non-viewport Bink videos without transparency (e.g. secondary movies,
  puzzle animations) still decode in RGB555

Changed paths:
    engines/nancy/graphics.cpp
    engines/nancy/movieplayer.cpp
    engines/nancy/movieplayer.h
    engines/nancy/ui/viewport.cpp


diff --git a/engines/nancy/graphics.cpp b/engines/nancy/graphics.cpp
index 1e044a29f95..3cd5d3fd366 100644
--- a/engines/nancy/graphics.cpp
+++ b/engines/nancy/graphics.cpp
@@ -552,7 +552,7 @@ void GraphicsManager::loadSurfacePalette(Graphics::ManagedSurface &inSurf, const
 }
 
 void GraphicsManager::copyToManaged(const Graphics::Surface &src, Graphics::ManagedSurface &dst, bool verticalFlip, bool doubleSize) {
-	if (dst.w != (doubleSize ? src.w * 2 : src.w) || dst.h != (doubleSize ? src.h * 2 : src.h)) {
+	if (dst.w != (doubleSize ? src.w * 2 : src.w) || dst.h != (doubleSize ? src.h * 2 : src.h) || dst.format != src.format) {
 		uint8 palette[256 * 3];
 		bool hasPalette = dst.hasPalette();
 		bool hasTransColor = dst.hasTransparentColor();
diff --git a/engines/nancy/movieplayer.cpp b/engines/nancy/movieplayer.cpp
index e8032087ca2..0603c57c64e 100644
--- a/engines/nancy/movieplayer.cpp
+++ b/engines/nancy/movieplayer.cpp
@@ -83,7 +83,7 @@ byte MoviePlayer::resolvePlaytype(byte videoPlaytype) {
 	return g_nancy->getGameType() >= kGameTypeNancy10 ? kVideoPlaytypeBink : kVideoPlaytypeAVF;
 }
 
-bool MoviePlayer::loadFile(const Common::Path &name, byte videoPlaytype, bool bidirectionalCache) {
+bool MoviePlayer::loadFile(const Common::Path &name, byte videoPlaytype, bool bidirectionalCache, bool screenFormat) {
 	freeFrameCache();
 	unregisterMovie();
 
@@ -122,12 +122,15 @@ bool MoviePlayer::loadFile(const Common::Path &name, byte videoPlaytype, bool bi
 	// chroma-keyed video such as Nancy11's Nigel_Fidget.bik ends up storing its key
 	// colour as 0x07E0 while the engine keys on 0x03E0, and the green background is
 	// never keyed out. From Nancy13 both formats are BGRA32 and this is a no-op.
+	// Opaque videos may keep the screen format: RGB555 drops a bit of green, which
+	// bands smooth gradients such as the Nancy11 LIB_AlanLogin_TEXT_PUZ background.
 	// Has to come after loadFile(): setOutputPixelFormat() walks the decoder's tracks,
 	// and those only exist once the file is loaded.
 	if (_videoType == kVideoPlaytypeBink) {
-		const Graphics::PixelFormat &inputFormat = g_nancy->_graphics->getInputPixelFormat();
-		if (inputFormat.bytesPerPixel == 2 || inputFormat.bytesPerPixel == 4) {
-			_decoder->setOutputPixelFormat(inputFormat);
+		const Graphics::PixelFormat &outputFormat = screenFormat ?
+			g_nancy->_graphics->getScreenPixelFormat() : g_nancy->_graphics->getInputPixelFormat();
+		if (outputFormat.bytesPerPixel == 2 || outputFormat.bytesPerPixel == 4) {
+			_decoder->setOutputPixelFormat(outputFormat);
 		}
 	}
 
diff --git a/engines/nancy/movieplayer.h b/engines/nancy/movieplayer.h
index 7da2e04d8e0..0a213a00883 100644
--- a/engines/nancy/movieplayer.h
+++ b/engines/nancy/movieplayer.h
@@ -61,8 +61,10 @@ public:
 	// Load <name> + ".avf"/".bik" and create the matching decoder. videoPlaytype
 	// picks the container, falling back to the other one if its file is missing.
 	// bidirectionalCache enables fast bidirectional scrubbing; pass it only for
-	// scrubbed panorama scenes.
-	bool loadFile(const Common::Path &name, byte videoPlaytype = kVideoPlaytypeAuto, bool bidirectionalCache = false);
+	// scrubbed panorama scenes. screenFormat decodes Bink frames in the screen
+	// format instead of the input format; only for opaque videos, since the
+	// transparent color is defined in the input format.
+	bool loadFile(const Common::Path &name, byte videoPlaytype = kVideoPlaytypeAuto, bool bidirectionalCache = false, bool screenFormat = false);
 	bool isVideoLoaded() const;
 	void close();
 	Video::VideoDecoder *getDecoder() { return _decoder.get(); }
diff --git a/engines/nancy/ui/viewport.cpp b/engines/nancy/ui/viewport.cpp
index 3cfd51749bc..7812d28ad17 100644
--- a/engines/nancy/ui/viewport.cpp
+++ b/engines/nancy/ui/viewport.cpp
@@ -220,7 +220,8 @@ void Viewport::loadVideo(const Common::Path &filename, uint frameNr, uint vertic
 	// Only panorama scenes step through frames, so only they need the frame cache
 	// for fast bidirectional scrubbing; other scenes would just waste memory.
 	const bool isPanorama = panningType == kPan360 || panningType == kPanLeftRight;
-	if (!_decoder.loadFile(filename, kVideoPlaytypeAuto, isPanorama)) {
+	// The background is drawn opaquely, so it can keep the screen format's precision.
+	if (!_decoder.loadFile(filename, kVideoPlaytypeAuto, isPanorama, true)) {
 		error("Couldn't load video file %s.avf or %s.bik", filename.toString().c_str(), filename.toString().c_str());
 	}
 


Commit: 940d039e7ac252144e1536fbc7680812faf0c703
    https://github.com/scummvm/scummvm/commit/940d039e7ac252144e1536fbc7680812faf0c703
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-10-16T02:45:59+03:00

Commit Message:
NANCY: NANCY15: Add the CD version to the detection entry list

Changed paths:
    engines/nancy/detection_tables.h


diff --git a/engines/nancy/detection_tables.h b/engines/nancy/detection_tables.h
index 799641b1d61..9bbda10e003 100644
--- a/engines/nancy/detection_tables.h
+++ b/engines/nancy/detection_tables.h
@@ -953,6 +953,23 @@ static const NancyGameDescription gameDescriptions[] = {
 		},
 		kGameTypeNancy15
 	},
+	{ // MD5 by bluegr
+		{
+			"nancy15", nullptr,
+			{
+				{"data1.cab", 0, "64a4c8a731ca8e66f3ce09ca54511c77", 10632067},
+				{"data1.hdr", 0, "5ab2f3e387907796e8c177c0d15b92c3", 444368},
+				{"data2.cab", 0, "5c6e80b06e9fb2387002cdc48585fad0", 669384704},
+				{"data3.cab", 0, "2a8515f92971875f847dbaf58cc3f7e5", 344245326},
+				{"is:data1.cab:ciftree.dat", 0, "A:9c5af8a00225a528fe03f52d3664740d", 38659635},
+			},
+			Common::EN_ANY,
+			Common::kPlatformWindows,
+			ADGF_TESTING | ADGF_DROPPLATFORM,
+			NANCY8_GUIOPTIONS
+		},
+		kGameTypeNancy15
+	},
 	{ // MD5 by BacchusEmperor from bug #17318
 		{
 			"nancy15", nullptr,


Commit: ccbd5cb36db8e17553d13e47ac3f93dace1af919
    https://github.com/scummvm/scummvm/commit/ccbd5cb36db8e17553d13e47ac3f93dace1af919
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-10-16T02:46:00+03:00

Commit Message:
NANCY: NANCY20: Add the installed version to the detection entry list

Changed paths:
    engines/nancy/detection_tables.h


diff --git a/engines/nancy/detection_tables.h b/engines/nancy/detection_tables.h
index 9bbda10e003..2ed4a541255 100644
--- a/engines/nancy/detection_tables.h
+++ b/engines/nancy/detection_tables.h
@@ -1036,6 +1036,17 @@ static const NancyGameDescription gameDescriptions[] = {
 		},
 		kGameTypeNancy19
 	},
+	{ // MD5 by bluegr
+		{
+			"nancy20", nullptr,
+			AD_ENTRY1s("ciftree.dat", "02d56eb098f317a02ed9a675f40a4468", 91315479),
+			Common::EN_ANY,
+			Common::kPlatformWindows,
+			ADGF_UNSUPPORTED | ADGF_DROPPLATFORM,
+			NANCY8_GUIOPTIONS
+		},
+		kGameTypeNancy20
+	},
 	{ // MD5 by bluegr
 		{
 			"nancy21", nullptr,




More information about the Scummvm-git-logs mailing list