[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