[Scummvm-git-logs] scummvm master -> 744e86cbebf559f8e5122f33b036c7ae2b60165a
sluicebox
noreply at scummvm.org
Mon Jul 27 21:22:26 UTC 2026
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
95def1ff2c SCI: Fix debugger description for `play_video`
f3a3b3d4e8 SCI32: Fix LSL6HIRES death dialog speech in room 440
744e86cbeb SCI32: Fix HOYLE5 Checkers AI crash
Commit: 95def1ff2c30ffcbade0bdc68b9f00eafde5a204
https://github.com/scummvm/scummvm/commit/95def1ff2c30ffcbade0bdc68b9f00eafde5a204
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2026-07-27T14:21:04-07:00
Commit Message:
SCI: Fix debugger description for `play_video`
Changed paths:
engines/sci/console.cpp
diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp
index 71774e4d618..a8c063a87ea 100644
--- a/engines/sci/console.cpp
+++ b/engines/sci/console.cpp
@@ -377,7 +377,7 @@ bool Console::cmdHelp(int argc, const char **argv) {
debugPrintf(" draw_cel - Draws a cel from a view resource\n");
debugPrintf(" pic_visualize - Enables visualization of the drawing process of EGA pictures\n");
debugPrintf(" undither - Enable/disable undithering\n");
- debugPrintf(" play_video - Plays a SEQ, AVI, VMD, RBT or DUK video\n");
+ debugPrintf(" play_video - Plays a SEQ or AVI video\n");
debugPrintf(" animate_list / al - Shows the current list of objects in kAnimate's draw list (SCI0 - SCI1.1)\n");
debugPrintf(" window_list / wl - Shows a list of all the windows (ports) in the draw list (SCI0 - SCI1.1)\n");
debugPrintf(" plane_list / pl - Shows a list of all the planes in the draw list (SCI2+)\n");
Commit: f3a3b3d4e814c6ba1cb41d44f53cece4ba6ecdc7
https://github.com/scummvm/scummvm/commit/f3a3b3d4e814c6ba1cb41d44f53cece4ba6ecdc7
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2026-07-27T14:21:04-07:00
Commit Message:
SCI32: Fix LSL6HIRES death dialog speech in room 440
Fixes bug #17018
Changed paths:
engines/sci/engine/script_patches.cpp
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 0ea732f9b3c..bcdf839f986 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -10507,6 +10507,31 @@ static const uint16 larry6HiresLockerPathfindingPatch[] = {
PATCH_END
};
+// When Cavaricchi kills Larry in room 440, a flag is set by the death dialog
+// when playing the narrator's speech. If Larry is killed a second time, the
+// narrator's speech does not play because the flag is not reset.
+//
+// We fix this by resetting the flag before displaying the death dialog.
+//
+// Applies to: All versions
+// Responsible method: talkToCavScr:changeState(13)
+// Fixes bug: #17018
+static const uint16 larry6HiresResetCavDeathFlagSignature[] = {
+ SIG_MAGICDWORD,
+ 0x43, 0x11, SIG_UINT16(0x0004), // callk ShakeScreen 04
+ 0x35, 0x78, // ldi 78
+ 0x65, 0x22, // aTop ticks [ ticks = 120 ]
+ 0x32, // jmp [ end of switch ]
+ SIG_END
+};
+
+static const uint16 larry6HiresResetCavDeathFlagPatch[] = {
+ PATCH_ADDTOOFFSET(+8),
+ 0x76, // push0
+ 0xab, 0x03, // ssl 03 [ local3 = 0 ]
+ PATCH_END
+};
+
// script, description, signature patch
static const SciScriptPatcherEntry larry6HiresSignatures[] = {
{ true, 0, "disable mac volume restore", 1, larry6HiresMacVolumeRestoreSignature, larry6HiresMacVolumeRestorePatch },
@@ -10520,6 +10545,7 @@ static const SciScriptPatcherEntry larry6HiresSignatures[] = {
{ true, 270, "fix incorrect setScale call", 1, larry6HiresSetScaleSignature, larry6HiresSetScalePatch },
{ true, 330, "fix whale oil lamp lockup", 1, larry6HiresWhaleOilLampSignature, larry6HiresWhaleOilLampPatch },
{ true, 340, "fix locker pathfinding", 1, larry6HiresLockerPathfindingSignature,larry6HiresLockerPathfindingPatch },
+ { true, 440, "reset Cavaricchi death flag", 1, larry6HiresResetCavDeathFlagSignature,larry6HiresResetCavDeathFlagPatch },
{ true, 610, "phone operator crash", 1, larry6HiresPhoneOperatorSignature, larry6HiresPhoneOperatorPatch },
{ true, 620, "bathroom door sound", 1, larry6HiresBathroomDoorSoundSignature,larry6HiresBathroomDoorSoundPatch },
{ true, 680, "room 680 exits", 1, larry6HiresRoom680ExitsSignature, larry6HiresRoom680ExitsPatch },
Commit: 744e86cbebf559f8e5122f33b036c7ae2b60165a
https://github.com/scummvm/scummvm/commit/744e86cbebf559f8e5122f33b036c7ae2b60165a
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2026-07-27T14:21:05-07:00
Commit Message:
SCI32: Fix HOYLE5 Checkers AI crash
Fixes bug #17020
Changed paths:
engines/sci/engine/script_patches.cpp
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index bcdf839f986..7ed48c73272 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -3081,6 +3081,57 @@ static const uint16 hoyle5PatchHeartsStrategy[] = {
PATCH_END
};
+// Checkers can crash when the script calculates the computer's next move.
+// Tree:alphaBeta is a large method that evaluates moves and potentially adds
+// and removes elements to a List object. At the end, it sometimes selects a
+// random move from the List, but without verifying that the List is not empty.
+// There are codepaths where the List remains empty but is accessed anyway.
+//
+// We fix this by adding a check to skip selecting a random move when movLst is
+// empty. This does not prevent the computer from making a move, as the script
+// has already selected a default move.
+//
+// Applies to: All versions
+// Responsible method: Tree:alphaBeta
+// Fixes bug: #17020
+static const uint16 hoyle5SignatureCheckersAiWindows[] = {
+ 0x31, 0x3d, // bnt 3d [ skip rng ]
+ SIG_ADDTOOFFSET(+17), // acc = movLst:size
+ 0x36, // push
+ 0x35, 0x01, SIG_MAGICDWORD, // ldi 01
+ 0x04, // sub
+ 0x36, // push
+ 0x43, 0x3c, SIG_UINT16(0x0004), // callk Random 04
+ 0xa5, 0x00, // sat 00 [ unused ]
+ SIG_END
+};
+
+static const uint16 hoyle5PatchCheckersAiWindows[] = {
+ PATCH_ADDTOOFFSET(+19),
+ 0x31, 0x2a, // bnt 2a [ skip rng if movLst:size == 0 ]
+ PATCH_GETORIGINALBYTES(19, 9),
+ PATCH_END
+};
+
+static const uint16 hoyle5SignatureCheckersAiMac[] = {
+ 0x31, 0x31, // bnt 31 [ skip rng ]
+ SIG_ADDTOOFFSET(+11), // acc = movLst:size
+ 0x36, // push
+ 0x35, 0x01, SIG_MAGICDWORD, // ldi 01
+ 0x04, // sub
+ 0x36, // push
+ 0x43, 0x3c, SIG_UINT16(0x0004), // callk Random 04
+ 0xa5, 0x00, // sat 00 [ unused ]
+ SIG_END
+};
+
+static const uint16 hoyle5PatchCheckersAiMac[] = {
+ PATCH_ADDTOOFFSET(+13),
+ 0x31, 0x24, // bnt 24 [ skip rng if movLst:size == 0 ]
+ PATCH_GETORIGINALBYTES(13, 9),
+ PATCH_END
+};
+
// script, description, signature patch
static const SciScriptPatcherEntry hoyle5Signatures[] = {
{ true, 0, "disable volume reset on startup", 1, sci2VolumeResetSignature, sci2VolumeResetPatch },
@@ -3089,6 +3140,8 @@ static const SciScriptPatcherEntry hoyle5Signatures[] = {
{ true, 200, "fix setScale calls", 11, hoyle5SetScaleSignature, hoyle5PatchSetScale },
{ true, 300, "hearts strategy", 1, hoyle5SignatureHeartsStrategy, hoyle5PatchHeartsStrategy },
{ true, 500, "remove kGetTime spin", 1, hoyle5SignatureSpinLoop, hoyle5PatchSpinLoop },
+ { true, 1202, "fix checkers ai", 1, hoyle5SignatureCheckersAiWindows, hoyle5PatchCheckersAiWindows },
+ { true, 1202, "fix checkers ai", 1, hoyle5SignatureCheckersAiMac, hoyle5PatchCheckersAiMac },
{ true, 6001, "fix solitaire init", 1, hoyle5SignatureSolitaireInit, hoyle5PatchSolitaireInit },
{ true, 6002, "fix solitaire init", 1, hoyle5SignatureSolitaireInit, hoyle5PatchSolitaireInit },
{ true, 6004, "fix solitaire init", 1, hoyle5SignatureSolitaireInit, hoyle5PatchSolitaireInit },
More information about the Scummvm-git-logs
mailing list