[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