[Scummvm-git-logs] scummvm master -> 9fcbbee769f9612a91b870df532b2bf4c50a0ff3
sev-
noreply at scummvm.org
Thu Mar 19 22:55:14 UTC 2026
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
f13b8ef729 DIRECTOR: Move kEventStartMovie to after loading first sprites
58b3b66de4 DIRECTOR: Fix regression with frame copybacks
5153061b7e DIRECTOR: Add script patch for Elroy Hits the Pavement
9fcbbee769 DIRECTOR: Load fonts from projector's resource fork
Commit: f13b8ef729eb820686dcd3ec8afc7d5737a32770
https://github.com/scummvm/scummvm/commit/f13b8ef729eb820686dcd3ec8afc7d5737a32770
Author: Scott Percival (code at moral.net.au)
Date: 2026-03-19T23:55:08+01:00
Commit Message:
DIRECTOR: Move kEventStartMovie to after loading first sprites
It's usually a terrible idea, but in a startMovie script you can do
things to the sprite channels. No-one will stop you.
Journeyman Project relies on a hack where the game's user interface
only exists in the first frame of the Director movie's score; it gets
retained by setting the puppet flag on all the relevant channels.
Somehow the beginning of the game works fine. However, when switching between
movies the startMovie script is used for fixing the UI. Which means
we have to have all of the sprite data available before that, else setting
the puppet flag will fix the channels as empty and prevent any graphics
from displaying.
Fixes travelling in the elevator in The Journeyman Project.
Changed paths:
engines/director/score.cpp
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 09e1c60a6f9..1cd6f4dd18b 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -329,9 +329,6 @@ void Score::startPlay() {
return;
}
- if (_version >= kFileVer300)
- _movie->processEvent(kEventStartMovie);
-
// load first frame (either 1 or _nextFrame)
updateCurrentFrame();
@@ -341,6 +338,10 @@ void Score::startPlay() {
_channels.push_back(new Channel(this, _currentFrame->_sprites[i], i));
updateSprites(kRenderForceUpdate, true);
+
+ // Stage has been set up, run the StartMovie script
+ if (_version >= kFileVer300)
+ _movie->processEvent(kEventStartMovie);
}
void Score::step() {
Commit: 58b3b66de41d49ee80b07969864c6d3da827c718
https://github.com/scummvm/scummvm/commit/58b3b66de41d49ee80b07969864c6d3da827c718
Author: Scott Percival (code at moral.net.au)
Date: 2026-03-19T23:55:08+01:00
Commit Message:
DIRECTOR: Fix regression with frame copybacks
Jumping to an earlier frame replays all the data from frame 1. As such,
for reverse frame jumps we need to assume all sprites have changed and
require copying back.
For example, previously if you jumped from frame 10 to frame 5,
and frame 10 had a sprite in channel 3, but the first 5 frames had
channel 3 empty, then channel 3 would persist because the copyback bits
wouldn't be set.
Fixes visible sprite glitches at the Tree of Life in Eastern Mind.
Changed paths:
engines/director/score.cpp
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 1cd6f4dd18b..fc6f565f73a 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -2139,9 +2139,15 @@ bool Score::loadFrame(int frameNum, bool loadCast) {
it->reset();
}
- // Zero out the copyback mask on all sprites, so we know what changed
+ // Reset the copyback mask on all sprites, so we know what changed
for (auto &it : _currentFrame->_sprites) {
- it->_copyBackMask = 0;
+ if (frameNum <= (int)_curFrameNumber) {
+ // starting from rewind, copy back everything
+ it->_copyBackMask = -1;
+ } else {
+ // starting at delta, only copy back changes
+ it->_copyBackMask = 0;
+ }
}
debugC(7, kDebugLoading, "****** Source frame %d to Destination frame %d, current offset 0x%x", sourceFrame, targetFrame, (uint32)_framesStream->pos());
Commit: 5153061b7e165ff0350c05880fd29ca8ef53cf3c
https://github.com/scummvm/scummvm/commit/5153061b7e165ff0350c05880fd29ca8ef53cf3c
Author: Scott Percival (code at moral.net.au)
Date: 2026-03-19T23:55:08+01:00
Commit Message:
DIRECTOR: Add script patch for Elroy Hits the Pavement
Changed paths:
engines/director/detection_tables.h
engines/director/lingo/lingo-patcher.cpp
diff --git a/engines/director/detection_tables.h b/engines/director/detection_tables.h
index 33f165bcb6f..344ed2e9e6a 100644
--- a/engines/director/detection_tables.h
+++ b/engines/director/detection_tables.h
@@ -4266,8 +4266,8 @@ static const DirectorGameDescription gameDescriptions[] = {
WINGAME1("elroycostume", "", "ECCLOSET.EXE", "f2fb9b1c60d3d1ee2b664165f4199391", 1327420, 404),
WINDEMO1("elroycostume", "Demo", "elroy.exe", "9d18c6a224dd0e5be4ad03a05c74254b", 854349, 404),
- MACGAME1("elroypave", "", "Elroy Hits the Pavement", "17efee018a660458fae80de4364021ac", 525584, 404),
- WINGAME1("elroypave", "", "PAVEMENT.EXE", "7937f42747788b558bc32cced3d8f66b", 758491, 404),
+ MACGAME1("elroypave", "", "Elroy Hits the Pavement", "r:17efee018a660458fae80de4364021ac", 525584, 404),
+ WINGAME1("elroypave", "", "PAVEMENT.EXE", "t:e49b3ba79da895a934461146ee642d16", 758491, 404),
MACDEMO1("elroypave", "Demo", "Pavement Demo", "17efee018a660458fae80de4364021ac", 520880, 404),
WINDEMO2("elroypave", "Demo", "PAVEDEMO.EXE", "073eb1dd818796efe9513b11a8a4bb2d", 802180,
"PAVEDEMO/P12/SHARED.DXR", "7fe5e2fa28260cbfa2d8675d948401b8", 112470, 404),
diff --git a/engines/director/lingo/lingo-patcher.cpp b/engines/director/lingo/lingo-patcher.cpp
index 00976ea4ed7..794a3c6f5bb 100644
--- a/engines/director/lingo/lingo-patcher.cpp
+++ b/engines/director/lingo/lingo-patcher.cpp
@@ -394,6 +394,14 @@ on GetCDLetter tagFile, discNumber\r\
end \r\
";
+/* Elroy Hits the Pavement has a missing mouseUp script for clicking on the map when
+ * you game over in the gangster's hideout. */
+const char *const elroypaveMapFix = " \
+on mouseUp\r\
+ handleMapClick()\r\
+end \r\
+";
+
/* Frankenstein: Through The Eyes Of The Monster uses a projector FRANKIE.EXE, which calls an
* identically-named submovie FRANKIE.DIR. For now we can work around this mess by referring to
* the full "path" of the embedded submovie so path detection doesn't collide with FRANKIE.EXE.
@@ -536,6 +544,10 @@ struct ScriptHandlerPatch {
{"kyoto", nullptr, kPlatformWindows, "ck_data\\opening\\shared.dxr", kMovieScript, 802, DEFAULT_CAST_LIB, &kyotoTextEntryFix},
{"kyoto", nullptr, kPlatformWindows, "ck_data\\rajoumon\\shared.dxr", kMovieScript, 840, DEFAULT_CAST_LIB, &kyotoTextEntryFix},
{"kyoto", nullptr, kPlatformWindows, "ck_data\\rokudou\\shared.dxr", kMovieScript, 846, DEFAULT_CAST_LIB, &kyotoTextEntryFix},
+ {"elroypave", nullptr, kPlatformWindows, "P04\\P04HAZ\\ENDING.DXR", kScoreScript, 27, DEFAULT_CAST_LIB, &elroypaveMapFix},
+ {"elroypave", nullptr, kPlatformWindows, "P04\\P04HAZ\\ENDING.DXR", kScoreScript, 29, DEFAULT_CAST_LIB, &elroypaveMapFix},
+ {"elroypave", nullptr, kPlatformMacintosh, "P04:p04Haz:ending.Dxr", kScoreScript, 27, DEFAULT_CAST_LIB, &elroypaveMapFix},
+ {"elroypave", nullptr, kPlatformMacintosh, "P04:p04Haz:ending.Dxr", kScoreScript, 29, DEFAULT_CAST_LIB, &elroypaveMapFix},
{"vnc", nullptr, kPlatformWindows, "VNC\\VNC.EXE", kMovieScript, 57, DEFAULT_CAST_LIB, &vncSkipDetection},
{"vnc", nullptr, kPlatformWindows, "VNC2\\SHARED.DXR", kMovieScript, 1248, DEFAULT_CAST_LIB, &vncEnableCheats},
{"vnc", nullptr, kPlatformWindows, "VNC\\Shared.DXR", kMovieScript, 1562, DEFAULT_CAST_LIB, &vncFixIntro},
Commit: 9fcbbee769f9612a91b870df532b2bf4c50a0ff3
https://github.com/scummvm/scummvm/commit/9fcbbee769f9612a91b870df532b2bf4c50a0ff3
Author: Scott Percival (code at moral.net.au)
Date: 2026-03-19T23:55:08+01:00
Commit Message:
DIRECTOR: Load fonts from projector's resource fork
Fixes text rendering in The Journeyman Project.
Changed paths:
engines/director/resource.cpp
diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index 3f5240f0676..5dade0314fb 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -198,6 +198,9 @@ void Window::probeResources(Archive *archive) {
}
if (g_director->getPlatform() == Common::kPlatformMacintosh) {
+ // Load any fonts from the projector resource fork
+ _vm->_wm->_fontMan->loadFonts(archive->getPathName());
+
// On Macintosh, you can add additional chunks to the resource
// fork of the file to state which XObject or HyperCard XCMD/XFCNs
// need to be loaded in.
More information about the Scummvm-git-logs
mailing list