[Scummvm-git-logs] scummvm master -> 255467c89f5af480767ce9d27e14089459486716

dreammaster noreply at scummvm.org
Sun Dec 21 04:31:00 UTC 2025


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

Summary:
255467c89f MM: MM1: Fix loading override cursor bitmaps, support PNG override files


Commit: 255467c89f5af480767ce9d27e14089459486716
    https://github.com/scummvm/scummvm/commit/255467c89f5af480767ce9d27e14089459486716
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-12-21T15:30:48+11:00

Commit Message:
MM: MM1: Fix loading override cursor bitmaps, support PNG override files

Changed paths:
    engines/mm/mm1/globals.cpp
    engines/mm/mm1/mm1.cpp
    engines/mm/shared/xeen/sprites.cpp


diff --git a/engines/mm/mm1/globals.cpp b/engines/mm/mm1/globals.cpp
index a797a523ed4..a121ef59b0f 100644
--- a/engines/mm/mm1/globals.cpp
+++ b/engines/mm/mm1/globals.cpp
@@ -123,6 +123,11 @@ bool Globals::load(bool isEnhanced) {
 			XeenFont::setColors(0);
 			f.close();
 		}
+
+		// Show the mouse cursor
+		g_events->loadCursors();
+		g_events->setCursor(0);
+		g_events->showCursor();
 	}
 
 	return true;
diff --git a/engines/mm/mm1/mm1.cpp b/engines/mm/mm1/mm1.cpp
index f942a7e26fe..e0f9794cce6 100644
--- a/engines/mm/mm1/mm1.cpp
+++ b/engines/mm/mm1/mm1.cpp
@@ -139,11 +139,6 @@ bool MM1Engine::setupEnhanced() {
 	g_system->getPaletteManager()->setPalette(pal, 0, Graphics::PALETTE_COUNT);
 	Gfx::GFX::findPalette(pal);
 
-	// Show the mouse cursor
-	g_events->loadCursors();
-	g_events->setCursor(0);
-	g_events->showCursor();
-
 	return true;
 }
 
diff --git a/engines/mm/shared/xeen/sprites.cpp b/engines/mm/shared/xeen/sprites.cpp
index c26527f51d9..4e96951897a 100644
--- a/engines/mm/shared/xeen/sprites.cpp
+++ b/engines/mm/shared/xeen/sprites.cpp
@@ -25,6 +25,7 @@
 #include "common/textconsole.h"
 #include "graphics/paletteman.h"
 #include "image/bmp.h"
+#include "image/png.h"
 #include "mm/shared/xeen/sprites.h"
 #include "mm/mm.h"
 
@@ -105,13 +106,17 @@ void SpriteResource::load(Common::SeekableReadStream &f) {
 		_index[i]._offset1 = f.readUint16LE();
 		_index[i]._offset2 = f.readUint16LE();
 
-		// Check for any bitmaps overriding the default Xeen sprites for M&M1 Enhanced mode
-		Common::String fname = Common::String::format("gfx/%s/image%.2d.bmp", _filename.baseName().c_str(), i);
-		if (Common::File::exists(fname.c_str())) {
-			File fBitmap(fname.c_str());
-			Image::BitmapDecoder decoder;
-			if (decoder.loadStream(fBitmap))
-				_index[i]._override.copyFrom(*decoder.getSurface());
+		// Check for any images overriding the default Xeen sprites for M&M1 Enhanced mode
+		const Common::String fnPNG = Common::String::format("gfx/%s/image%.2d.png", _filename.baseName().c_str(), i);
+		const Common::String fnBitmap = Common::String::format("gfx/%s/image%.2d.bmp", _filename.baseName().c_str(), i);
+		Image::PNGDecoder pngDecoder;
+		Image::BitmapDecoder bmpDecoder;
+		Common::File imgFile;
+
+		if (imgFile.open(fnPNG.c_str()) && pngDecoder.loadStream(imgFile)) {
+			_index[i]._override.copyFrom(*pngDecoder.getSurface());
+		} else if (imgFile.open(fnBitmap.c_str()) && bmpDecoder.loadStream(imgFile)) {
+			_index[i]._override.copyFrom(*bmpDecoder.getSurface());
 		}
 	}
 }
@@ -160,7 +165,10 @@ void SpriteResource::draw(XSurface &dest, int frame, const Common::Point &destPo
 	// WORKAROUND: Crash clicking Vertigo well in Clouds
 	if (frame < (int)_index.size()) {
 		if (!_index[frame]._override.empty()) {
-			dest.blitFrom(_index[frame]._override, destPos);
+			const Graphics::ManagedSurface &src = _index[frame]._override;
+			if (flags & Shared::Xeen::SPRFLAG_RESIZE)
+				dest.create(src.w, src.h);
+			dest.blitFrom(src, destPos);
 		} else {
 			// Sprites can consist of separate background & foreground
 			drawer->draw(dest, _index[frame]._offset1, destPos, r, flags, scale);




More information about the Scummvm-git-logs mailing list