[Scummvm-git-logs] scummvm master -> 322431d3578f1b0a7892b4ce1f3612b0ed6f45b3

sdelamarre noreply at scummvm.org
Thu Feb 19 20:04:06 UTC 2026


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

Summary:
d099693396 GOB: Remove unused "dataVar" parameter in some save sprite handlers
322431d357 GOB: Add printing support for Adibou2/Adi4


Commit: d09969339678e08172fc4b856481d9e3f263261b
    https://github.com/scummvm/scummvm/commit/d09969339678e08172fc4b856481d9e3f263261b
Author: Simon Delamarre (simon.delamarre14 at gmail.com)
Date: 2026-02-19T21:00:52+01:00

Commit Message:
GOB: Remove unused "dataVar" parameter in some save sprite handlers

Changed paths:
    engines/gob/save/savehandler.cpp
    engines/gob/save/savehandler.h
    engines/gob/save/saveload_adibou1.cpp
    engines/gob/save/saveload_inca2.cpp
    engines/gob/save/saveload_v3.cpp
    engines/gob/save/saveload_v7.cpp


diff --git a/engines/gob/save/savehandler.cpp b/engines/gob/save/savehandler.cpp
index 368e3cc7b7e..f75fbc371e8 100644
--- a/engines/gob/save/savehandler.cpp
+++ b/engines/gob/save/savehandler.cpp
@@ -255,8 +255,8 @@ int32 TempSpriteHandler::getSize() {
 	return _sprite->getSize();
 }
 
-bool TempSpriteHandler::load(int16 dataVar, int32 size, int32 offset) {
-	if (isDummy(size))
+bool TempSpriteHandler::load(int16 dataVar, int32 index_as_size, int32 offset) {
+	if (isDummy(index_as_size))
 		return true;
 
 	// Sprite available?
@@ -264,11 +264,11 @@ bool TempSpriteHandler::load(int16 dataVar, int32 size, int32 offset) {
 		return false;
 
 	// Sprite requested?
-	if (!isSprite(size))
+	if (!isSprite(index_as_size))
 		return false;
 
 	// Index sane?
-	int index = getIndex(size);
+	int index = getIndex(index_as_size);
 	if ((index < 0) || (index >= Draw::kSpriteCount))
 		return false;
 
@@ -283,7 +283,7 @@ bool TempSpriteHandler::load(int16 dataVar, int32 size, int32 offset) {
 		return false;
 
 	// Handle palette
-	if (usesPalette(size)) {
+	if (usesPalette(index_as_size)) {
 		if (!_sprite->writePalette((byte *)_vm->_global->_pPaletteDesc->vgaPal))
 			return false;
 
@@ -301,11 +301,11 @@ bool TempSpriteHandler::load(int16 dataVar, int32 size, int32 offset) {
 	return true;
 }
 
-bool TempSpriteHandler::save(int16 dataVar, int32 size, int32 offset) {
-	if (isDummy(size))
+bool TempSpriteHandler::save(int16 dataVar, int32 index_as_size, int32 offset) {
+	if (isDummy(index_as_size))
 		return true;
 
-	SurfacePtr sprite = createSprite(dataVar, size, offset);
+	SurfacePtr sprite = createSprite(index_as_size, offset);
 	if (!sprite)
 		return false;
 
@@ -314,7 +314,7 @@ bool TempSpriteHandler::save(int16 dataVar, int32 size, int32 offset) {
 		return false;
 
 	// Handle palette
-	if (usesPalette(size))
+	if (usesPalette(index_as_size))
 		if (!_sprite->readPalette((const byte *)_vm->_global->_pPaletteDesc->vgaPal))
 			return false;
 
@@ -359,19 +359,19 @@ bool TempSpriteHandler::saveFromRaw(const byte *ptr, int32 size, int32 offset) {
 	return true;
 }
 
-bool TempSpriteHandler::createFromSprite(int16 dataVar, int32 size, int32 offset) {
-	return createSprite(dataVar, size, offset) != nullptr;
+bool TempSpriteHandler::createFromSprite(int32 index_as_size, int32 offset) {
+	return createSprite(index_as_size, offset) != nullptr;
 }
 
-SurfacePtr TempSpriteHandler::createSprite(int16 dataVar, int32 size, int32 offset) {
+SurfacePtr TempSpriteHandler::createSprite(int32 index_as_size, int32 offset) {
 	SurfacePtr sprt;
 
 	// Sprite requested?
-	if (!isSprite(size))
+	if (!isSprite(index_as_size))
 		return sprt;
 
 	// Index sane?
-	int index = getIndex(size);
+	int index = getIndex(index_as_size);
 	if ((index < 0) || (index >= Draw::kSpriteCount))
 		return sprt;
 
diff --git a/engines/gob/save/savehandler.h b/engines/gob/save/savehandler.h
index 4ae1194dd69..b19a0fa1b6e 100644
--- a/engines/gob/save/savehandler.h
+++ b/engines/gob/save/savehandler.h
@@ -144,14 +144,14 @@ public:
 	~TempSpriteHandler() override;
 
 	int32 getSize() override;
-	bool load(int16 dataVar, int32 size, int32 offset) override;
-	bool save(int16 dataVar, int32 size, int32 offset) override;
+	bool load(int16 dataVar, int32 index_as_size, int32 offset) override;
+	bool save(int16 dataVar, int32 index_as_size, int32 offset) override;
 
 	bool loadToRaw(byte *ptr, int32 size, int32 offset) override;
 	bool saveFromRaw(const byte *ptr, int32 size, int32 offset) override;
 
 	bool create(uint32 width, uint32 height, bool trueColor);
-	bool createFromSprite(int16 dataVar, int32 size, int32 offset);
+	bool createFromSprite(int32 index_as_size, int32 offset);
 
 protected:
 	SavePartSprite *_sprite;
@@ -165,7 +165,7 @@ protected:
 	/** Determine whether the palette should be used too. */
 	static bool usesPalette(int32 size);
 
-	SurfacePtr createSprite(int16 dataVar, int32 size, int32 offset);
+	SurfacePtr createSprite(int32 index_as_size, int32 offset);
 };
 
 /** A handler for notes. */
diff --git a/engines/gob/save/saveload_adibou1.cpp b/engines/gob/save/saveload_adibou1.cpp
index 69fa1eb5b92..27b912e2961 100644
--- a/engines/gob/save/saveload_adibou1.cpp
+++ b/engines/gob/save/saveload_adibou1.cpp
@@ -109,7 +109,7 @@ int32 SaveLoad_Adibou1::SpriteHandler::getSize() {
 }
 
 bool SaveLoad_Adibou1::SpriteHandler::load(int16 dataVar, int32 size, int32 offset) {
-	if (!TempSpriteHandler::createFromSprite(dataVar, size, offset))
+	if (!TempSpriteHandler::createFromSprite(size, offset))
 		return false;
 
 	Common::String fileName = _file.build();
@@ -177,8 +177,8 @@ int32 SaveLoad_Adibou1::DrawingWithThumbnailHandler::getSize() {
 	return header1.getSize() + header2.getSize();
 }
 
-bool SaveLoad_Adibou1::DrawingWithThumbnailHandler::load(int16 dataVar, int32 size, int32 offset) {
-	if (!TempSpriteHandler::createFromSprite(dataVar, size, offset))
+bool SaveLoad_Adibou1::DrawingWithThumbnailHandler::load(int16 dataVar, int32 index_as_size, int32 offset) {
+	if (!TempSpriteHandler::createFromSprite(index_as_size, offset))
 		return false;
 
 	Common::String fileName = _file.build();
@@ -192,11 +192,11 @@ bool SaveLoad_Adibou1::DrawingWithThumbnailHandler::load(int16 dataVar, int32 si
 	if (!_reader->readPart(part, _sprite))
 		return false;
 
-	return TempSpriteHandler::load(dataVar, size, offset);
+	return TempSpriteHandler::load(dataVar, index_as_size, offset);
 }
 
-bool SaveLoad_Adibou1::DrawingWithThumbnailHandler::save(int16 dataVar, int32 size, int32 offset) {
-	if (!TempSpriteHandler::save(dataVar, size, offset))
+bool SaveLoad_Adibou1::DrawingWithThumbnailHandler::save(int16 dataVar, int32 index_as_size, int32 offset) {
+	if (!TempSpriteHandler::save(dataVar, index_as_size, offset))
 		return false;
 
 	Common::String fileName = _file.build();
diff --git a/engines/gob/save/saveload_inca2.cpp b/engines/gob/save/saveload_inca2.cpp
index f54d40ca685..6c6d9d2c5c6 100644
--- a/engines/gob/save/saveload_inca2.cpp
+++ b/engines/gob/save/saveload_inca2.cpp
@@ -324,7 +324,7 @@ bool SaveLoad_Inca2::ScreenshotHandler::load(int16 dataVar, int32 size, int32 of
 			return false;
 		}
 
-		if (!TempSpriteHandler::createFromSprite(dataVar, size, offset))
+		if (!TempSpriteHandler::createFromSprite(size, offset))
 			return false;
 
 		if (!_gameHandler->loadScreenshot(slot, _sprite))
diff --git a/engines/gob/save/saveload_v3.cpp b/engines/gob/save/saveload_v3.cpp
index 3e5752f8c49..e593f31115c 100644
--- a/engines/gob/save/saveload_v3.cpp
+++ b/engines/gob/save/saveload_v3.cpp
@@ -441,7 +441,7 @@ bool SaveLoad_v3::ScreenshotHandler::load(int16 dataVar, int32 size, int32 offse
 		if ((slot >= kSlotCount) || (slotRem != 0))
 			return false;
 
-		if (!TempSpriteHandler::createFromSprite(dataVar, size, offset))
+		if (!TempSpriteHandler::createFromSprite(size, offset))
 			return false;
 
 		if (!_gameHandler->loadScreenshot(slot, _sprite))
diff --git a/engines/gob/save/saveload_v7.cpp b/engines/gob/save/saveload_v7.cpp
index d50059ab699..5d0c70d14d3 100644
--- a/engines/gob/save/saveload_v7.cpp
+++ b/engines/gob/save/saveload_v7.cpp
@@ -1612,7 +1612,7 @@ int32 SaveLoad_v7::SpriteHandler::getSize() {
 }
 
 bool SaveLoad_v7::SpriteHandler::load(int16 dataVar, int32 size, int32 offset) {
-	if (!TempSpriteHandler::createFromSprite(dataVar, size, offset))
+	if (!TempSpriteHandler::createFromSprite(size, offset))
 		return false;
 
 	Common::String fileName = _file.build();
@@ -1726,8 +1726,8 @@ int32 SaveLoad_v7::DrawingOnFloppyDiskHandler::getSize() {
 	}
 }
 
-bool SaveLoad_v7::DrawingOnFloppyDiskHandler::load(int16 dataVar, int32 size, int32 offset) {
-	if (!TempSpriteHandler::createFromSprite(dataVar, size, offset))
+bool SaveLoad_v7::DrawingOnFloppyDiskHandler::load(int16 dataVar, int32 index_as_size, int32 offset) {
+	if (!TempSpriteHandler::createFromSprite(index_as_size, offset))
 		return false;
 
 	if (!_reader->load())
@@ -1741,7 +1741,7 @@ bool SaveLoad_v7::DrawingOnFloppyDiskHandler::load(int16 dataVar, int32 size, in
 	if (!_reader->readPart(part, _sprite))
 		return false;
 
-	return TempSpriteHandler::load(dataVar, size, offset);
+	return TempSpriteHandler::load(dataVar, index_as_size, offset);
 }
 
 bool SaveLoad_v7::DrawingOnFloppyDiskHandler::save(int16 dataVar, int32 size, int32 offset) {


Commit: 322431d3578f1b0a7892b4ce1f3612b0ed6f45b3
    https://github.com/scummvm/scummvm/commit/322431d3578f1b0a7892b4ce1f3612b0ed6f45b3
Author: Simon Delamarre (simon.delamarre14 at gmail.com)
Date: 2026-02-19T21:00:52+01:00

Commit Message:
GOB: Add printing support for Adibou2/Adi4

Changed paths:
    engines/gob/inter_v7.cpp


diff --git a/engines/gob/inter_v7.cpp b/engines/gob/inter_v7.cpp
index 3ab24c46c6f..9e3fe41c333 100644
--- a/engines/gob/inter_v7.cpp
+++ b/engines/gob/inter_v7.cpp
@@ -35,6 +35,7 @@
 #include "graphics/cursorman.h"
 #include "graphics/wincursor.h"
 
+#include "gui/gui-manager.h"
 #include "gui/message.h"
 
 #include "image/iff.h"
@@ -1957,6 +1958,55 @@ void Inter_v7::o7_writeData(OpFuncParams &params) {
 
 	WRITE_VAR(1, 1);
 
+	if (file.compareToIgnoreCase("PRINTER") == 0) {
+		// Send a sprite to the printer.
+		int32 spriteIndex = -size - 1;
+		if (spriteIndex < 0 || spriteIndex >= Draw::kSpriteCount) {
+			warning("o7_writeData: Invalid sprite index %d for printing", spriteIndex);
+			return;
+		}
+
+		SurfacePtr sprite = _vm->_draw->_spritesArray[spriteIndex];
+		if (!sprite) {
+			warning("o7_writeData: no sprite at index %d for printing", spriteIndex);
+			return;
+		}
+
+		Graphics::ManagedSurface surf(sprite->getWidth(),
+									  sprite->getHeight(),
+									  sprite->getBPP() > 1 ? _vm->getPixelFormat()
+														   : Graphics::PixelFormat::createFormatCLUT8());
+
+		if (sprite->getBPP() > 1) {
+			// Fill the background with white color, and ensure 0 is treated as the transparent color key
+			surf.fillRect(Common::Rect(0, 0, surf.w, surf.h),
+						  surf.format.RGBToColor(255, 255, 255));
+			surf.copyRectToSurfaceWithKey(sprite->getData(),
+										  sprite->getWidth() * sprite->getBPP(),
+										  0,
+										  0,
+										  sprite->getWidth(),
+										  sprite->getHeight(),
+										  0);
+		} else {
+			byte pal[768];
+			int16 numcolors = _vm->_global->_setAllPalette ? 256 : 16;
+			for (int i = 0; i < numcolors; i++) {
+				_vm->_video->setPalColor(pal + i * 3, _vm->_global->_pPaletteDesc->vgaPal[i]);
+			}
+			surf.setPalette(pal, 0, numcolors);
+			surf.copyRectToSurface(sprite->getData(),
+								   sprite->getWidth() * sprite->getBPP(),
+								   0,
+								   0,
+								   sprite->getWidth(),
+								   sprite->getHeight());
+		}
+
+		g_gui.printImage(surf);
+		return;
+	}
+
 	if (size == 0) {
 		dataVar = 0;
 		size = _vm->_game->_script->getVariablesCount() * 4;




More information about the Scummvm-git-logs mailing list