[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