[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