[Scummvm-git-logs] scummvm master -> 9a65cabb713479d4787f4e9058373eb27af7d655

mduggan noreply at scummvm.org
Sat Mar 29 05:55:15 UTC 2025


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

Summary:
9a65cabb71 DGDS: Fix Willy Beamish head rendering a bit


Commit: 9a65cabb713479d4787f4e9058373eb27af7d655
    https://github.com/scummvm/scummvm/commit/9a65cabb713479d4787f4e9058373eb27af7d655
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2025-03-29T16:49:20+11:00

Commit Message:
DGDS: Fix Willy Beamish head rendering a bit

The hack to keep the blueprints visible broke other interactions.  Add a more
targetted hack to make it work.  Also fix willy's head flipping when it shouldn't.
There are still some issues overall with head rendering (lipsync issues) but
it's much better now I think.

This fixes #15821.

Changed paths:
    engines/dgds/head.cpp


diff --git a/engines/dgds/head.cpp b/engines/dgds/head.cpp
index 7a8e3c5662a..6d1ea4faa81 100644
--- a/engines/dgds/head.cpp
+++ b/engines/dgds/head.cpp
@@ -117,6 +117,8 @@ void TalkDataHead::drawHeadType3Beamish(Graphics::ManagedSurface &dst, const Tal
 
 		// Slight hack from original CD version -  record the flip mode and offset
 		// for this frame and use it for drawing the head sprites in the script.
+		if (flip != Conversation::_lastHeadFrameFlipMode)
+			debug(10, "Changing CDS head flip mode %d -> %d", Conversation::_lastHeadFrameFlipMode, flip);
 		Conversation::_lastHeadFrameFlipMode = flip;
 		Conversation::_lastHeadFrameX = frame._xoff;
 		Conversation::_lastHeadFrameY = frame._yoff;
@@ -331,7 +333,6 @@ void Conversation::unloadData() {
 		_ttmEnv._soundRaw->stop();
 	_ttmEnv = CDSTTMEnviro();
 	_loadState = 0;
-	_lastHeadFrameFlipMode = kImageFlipNone;
 	_lastHeadFrameX = 0;
 	_lastHeadFrameY = 0;
 }
@@ -473,8 +474,13 @@ void Conversation::incrementFrame() {
 }
 
 bool Conversation::isScriptRunning() {
+	// HACK: Keep viewing blueprints from inventory running until
+	// interrupted.. other dialogs should stop when they
+	// have finished or their sounds or hit the end.
+	bool isBlueprints = (_dlgNum == 16 && _dlgFileNum == 67 && _subNum == -1);
+
 	return (_ttmScript &&
-		((_ttmEnv._soundRaw->isEmpty() || _ttmEnv._soundRaw->isPlaying())
+		((isBlueprints || _ttmEnv._soundRaw->isPlaying())
 		||
 		(_ttmEnv._cdsFrame < _ttmEnv._totalFrames)
 		));




More information about the Scummvm-git-logs mailing list