[Scummvm-git-logs] scummvm master -> 5462978ddf79eb47abd9d57beb3e0466985ebe8c

mduggan noreply at scummvm.org
Tue Mar 25 09:28:45 UTC 2025


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

Summary:
36ca3e4e86 DGDS: Add detection for German VGA Heart of China
c23f893c62 DGDS: Fix TTM scroll operation slightly
5462978ddf DGDS: Add detection for Willy Beamish French FDD


Commit: 36ca3e4e865ce60beaf61ff0ab5dba39a45043d2
    https://github.com/scummvm/scummvm/commit/36ca3e4e865ce60beaf61ff0ab5dba39a45043d2
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2025-03-25T20:17:56+11:00

Commit Message:
DGDS: Add detection for German VGA Heart of China

This fixes #15825.

Changed paths:
    engines/dgds/detection_tables.h


diff --git a/engines/dgds/detection_tables.h b/engines/dgds/detection_tables.h
index 97127f24ea6..cac3c27faa1 100644
--- a/engines/dgds/detection_tables.h
+++ b/engines/dgds/detection_tables.h
@@ -366,6 +366,22 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO1(GUIO_NONE)
 	},
 
+	// Heart of China (PC) 1.2M German Floppy version
+	// reported by windlepoons (#15825)
+	{
+		"china",
+		0,
+		{
+			{"volume.rmf", 0, "a392b2a2d98970fa18ed840fabf6371f", 9775},
+			{"volume.001", 0, "8de3820266d8f7bf1e29543dd87a209a", 845718},
+			AD_LISTEND
+		},
+		Common::DE_DEU,
+		Common::kPlatformDOS,
+		ADGF_TESTING,
+		GUIO1(GUIO_NONE)
+	},
+
 	// Heart of China (PC)
 	{
 		"china",


Commit: c23f893c621a3f62a52770afcf845a324856a132
    https://github.com/scummvm/scummvm/commit/c23f893c621a3f62a52770afcf845a324856a132
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2025-03-25T20:18:47+11:00

Commit Message:
DGDS: Fix TTM scroll operation slightly

This improves the speed and end-state of the bar scroll in Heart of China.

Changed paths:
    engines/dgds/dgds.cpp
    engines/dgds/dgds.h
    engines/dgds/ttm.cpp


diff --git a/engines/dgds/dgds.cpp b/engines/dgds/dgds.cpp
index b185b08e373..949f0dfff2e 100644
--- a/engines/dgds/dgds.cpp
+++ b/engines/dgds/dgds.cpp
@@ -495,7 +495,7 @@ void DgdsEngine::loadRestartFile() {
 }
 
 /*static*/ void
-DgdsEngine::dumpFrame(const Graphics::ManagedSurface &surf, const char *name) {
+DgdsEngine::dumpFrame(const Graphics::Surface &surf, const char *name) {
 #ifdef DUMP_FRAME_DATA
 	/* For debugging, dump the frame contents.. */
 	Common::DumpFile outf;
@@ -505,8 +505,7 @@ DgdsEngine::dumpFrame(const Graphics::ManagedSurface &surf, const char *name) {
 	g_system->getPaletteManager()->grabPalette(palbuf, 0, 256);
 
 	outf.open(Common::Path(Common::String::format("/tmp/%07d-%s.png", now, name)));
-	// Operator magic - convert ManagedSurface reg to Surface ref.
-	::Image::writePNG(outf, *(&surf), palbuf);
+	::Image::writePNG(outf, surf, palbuf);
 	outf.close();
 #endif
 }
diff --git a/engines/dgds/dgds.h b/engines/dgds/dgds.h
index 0291b7c08d6..f431e423670 100644
--- a/engines/dgds/dgds.h
+++ b/engines/dgds/dgds.h
@@ -284,7 +284,7 @@ public:
 	void setDebugShowHotAreas(bool enable) { _debugShowHotAreas = enable; }
 	bool getDebugShowHotAreas() const { return _debugShowHotAreas; }
 
-	static void dumpFrame(const Graphics::ManagedSurface &surf, const char *name);
+	static void dumpFrame(const Graphics::Surface &surf, const char *name);
 
 	void dimPalForWillyDialog(bool force);
 
diff --git a/engines/dgds/ttm.cpp b/engines/dgds/ttm.cpp
index 8fbf32f8fd3..354c14152aa 100644
--- a/engines/dgds/ttm.cpp
+++ b/engines/dgds/ttm.cpp
@@ -296,6 +296,7 @@ static void _dissolveToScreen(const Graphics::ManagedSurface &src, const Common:
 		if ((stepNr & 0x3FF) == 0) {
 			g_system->unlockScreen();
 			g_system->updateScreen();
+			g_system->delayMillis(5);
 			surf = g_system->lockScreen();
 		}
 		stepNr++;
@@ -313,12 +314,21 @@ static void _doScroll(Graphics::ManagedSurface &compBuf, int16 dir, int16 steps,
 	// more memory and cpu to play with so an extra 64k screen buffer
 	// and more copies is ok for simpler code.
 	//
+	// Example uses:
+	// Heart of China bar scene (scroll left-to-right and right-to-left)
+	//
 	Graphics::Surface *screen = g_system->lockScreen();
 	Graphics::Surface screenCopy;
 
 	screenCopy.copyFrom(*screen);
 	steps = CLIP(steps, (int16)1, offset);
 	const Common::Rect screenRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
+
+	Common::String dumpFname = Common::String::format("comp-before-scroll-%d", dir);
+	DgdsEngine::dumpFrame(compBuf, dumpFname.c_str());
+	dumpFname = Common::String::format("screen-before-scroll-%d", dir);
+	DgdsEngine::dumpFrame(screenCopy, dumpFname.c_str());
+
 	for (int16 i = 1; i <= steps; i++) {
 		int stepval = ((int)i * offset) / steps;
 		int xoff = (dir <= 1 ? 0 : (dir == 2 ? stepval : -stepval));
@@ -341,13 +351,13 @@ static void _doScroll(Graphics::ManagedSurface &compBuf, int16 dir, int16 steps,
 		}
 		case 2: {
 			// Draw composition buf to right of screen buf (camera moves to right)
-			Common::Rect rectFromCompBuf(0, 0, SCREEN_WIDTH - srcRectFromOrigScreen.width(), SCREEN_HEIGHT);
+			const Common::Rect rectFromCompBuf(0, 0, SCREEN_WIDTH - srcRectFromOrigScreen.width(), SCREEN_HEIGHT);
 			screen->copyRectToSurface(compBuf, srcRectFromOrigScreen.width(), 0, rectFromCompBuf);
 			break;
 		}
 		case 3: {
 			// Draw composition buf to left of screen buf (camera moves to left)
-			Common::Rect rectFromCompBuf(srcRectFromOrigScreen.width(), 0, SCREEN_WIDTH, SCREEN_HEIGHT);
+			const Common::Rect rectFromCompBuf(srcRectFromOrigScreen.width(), 0, SCREEN_WIDTH, SCREEN_HEIGHT);
 			screen->copyRectToSurface(compBuf, 0, 0, rectFromCompBuf);
 			break;
 		}
@@ -357,6 +367,7 @@ static void _doScroll(Graphics::ManagedSurface &compBuf, int16 dir, int16 steps,
 		}
 		g_system->unlockScreen();
 		g_system->updateScreen();
+		g_system->delayMillis(5);
 		screen = g_system->lockScreen();
 	}
 	g_system->unlockScreen();
@@ -858,7 +869,7 @@ void TTMInterpreter::handleOperation(TTMEnviro &env, TTMSeq &seq, uint16 op, byt
 		Graphics::Surface *screen = g_system->lockScreen();
 		_vm->getStoredAreaBuffer().blitFrom(*screen);
 		g_system->unlockScreen();
-		_vm->_compositionBuffer.blitFrom(_vm->getBackgroundBuffer());
+		_vm->_compositionBuffer.blitFrom(_vm->getStoredAreaBuffer());
 		break;
 	}
 	case 0x4000: // SET CLIP WINDOW x,y,x2,y2:int	[0..320,0..200]


Commit: 5462978ddf79eb47abd9d57beb3e0466985ebe8c
    https://github.com/scummvm/scummvm/commit/5462978ddf79eb47abd9d57beb3e0466985ebe8c
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2025-03-25T20:28:22+11:00

Commit Message:
DGDS: Add detection for Willy Beamish French FDD

This fixes #15822.

Changed paths:
    engines/dgds/detection_tables.h
    engines/dgds/inventory.cpp


diff --git a/engines/dgds/detection_tables.h b/engines/dgds/detection_tables.h
index cac3c27faa1..6c2e0e39db2 100644
--- a/engines/dgds/detection_tables.h
+++ b/engines/dgds/detection_tables.h
@@ -255,6 +255,22 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO1(GUIO_NONE)
 	},
 
+	// Adventures of Willy Beamish (French FDD)
+	// reported by Scaloup (#15822)
+	{
+		"beamish",
+		"FDD",
+		{
+			{"volume.001", 0, "d32a577c428799b2c4d5551991372736", 1358304},
+			{"volume.rmf", 0, "268cb8040af10d6fa24e5f9f1f411675", 9896},
+			AD_LISTEND
+		},
+		Common::FR_FRA,
+		Common::kPlatformDOS,
+		ADGF_TESTING,
+		GUIO1(GUIO_NONE)
+	},
+
 	// Adventures of Willy Beamish Demo
 	{
 		"beamish",
diff --git a/engines/dgds/inventory.cpp b/engines/dgds/inventory.cpp
index 072e3877723..336f6708e4c 100644
--- a/engines/dgds/inventory.cpp
+++ b/engines/dgds/inventory.cpp
@@ -124,6 +124,8 @@ void Inventory::drawHeader(Graphics::ManagedSurface &surf) {
 		title = "INVENTORY";
 	else if (DgdsEngine::getInstance()->getGameLang() == Common::DE_DEU)
 		title = "INVENTAR";
+	else if (DgdsEngine::getInstance()->getGameLang() == Common::FR_FRA)
+		title = "INVENTAIRE";
 	else
 		error("Unsupported language %d", DgdsEngine::getInstance()->getGameLang());
 




More information about the Scummvm-git-logs mailing list