[Scummvm-git-logs] scummvm master -> 259099c4120856c8d1d2c91e257b8c9c3c3a8321
sluicebox
noreply at scummvm.org
Thu Jul 18 01:29:01 UTC 2024
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:
2fab44097e SCI: Update script patch comments
5fa9935730 SCI: Fix PEPPER dictionary word in maze
259099c412 SCI: Apply SCI1.1 control panel workaround to all games
Commit: 2fab44097e8c305face804f461e34a232dcda8eb
https://github.com/scummvm/scummvm/commit/2fab44097e8c305face804f461e34a232dcda8eb
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2024-07-17T18:27:35-07:00
Commit Message:
SCI: Update script patch comments
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 c77818c7c41..bc1a31b1c37 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -21275,11 +21275,11 @@ static const uint16 sq4FloppyPatchEndlessFlight[] = {
// without a pointer to the text. This has to be a typo, because there is no
// unused text to be found within that script.
//
-// Sierra's "patch" didn't include a proper fix (as in a modified script).
-// Instead they shipped a dummy text resource, which somewhat "solved" the
-// issue in Sierra SCI, but it still showed another textbox with garbage in
-// it. Funnily Sierra must have known that, because that new text resource
-// contains: "Hi! This is a kludge!"
+// Sierra's "patch" didn't alter any scripts. Instead they shipped a dummy text
+// resource, which prevented the missing-resource crash, but still showed
+// another textbox with garbage in it. The new text resource contains the text:
+// "Hi! This is a kludge!" By avoiding script changes, the patch was compatible
+// with all versions on all platforms, and didn't invalidate existing saves.
//
// A copy of this script exists in the arcade when the sequel police arrive, but
// it has an additional typo that adds another broken function call to the ATM
Commit: 5fa9935730b60a73c2aaa5b6152897431f3e0012
https://github.com/scummvm/scummvm/commit/5fa9935730b60a73c2aaa5b6152897431f3e0012
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2024-07-17T18:27:35-07:00
Commit Message:
SCI: Fix PEPPER dictionary word in maze
Fixes bug #15266
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 bc1a31b1c37..2774e548b10 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -13312,9 +13312,36 @@ static const uint16 pepperPatchPuzzleBox[] = {
PATCH_END
};
+// In the maze, clicking on the dictionary word "musty" can display the wrong
+// definition. The east doorway is missing a doVerb method, so unlike the
+// other doorways, it does not update the dictionary word global.
+//
+// We fix this by patching mazeHallE to use mazeHallW's method dictionary
+// instead of its own empty one. This creates the missing doVerb method.
+//
+// Applies to: All versions
+// Responsible method: heap in script 400
+// Fixes bug: #15266
+static const uint16 pepperSignatureMustyMessage[] = {
+ SIG_MAGICDWORD, // mazeHallW
+ SIG_UINT16(0x015a), // property dictionary = none
+ SIG_UINT16(0x015a), // method dictionary = doVerb
+ SIG_ADDTOOFFSET(+0x58), // mazeHallE
+ SIG_UINT16(0x0160), // property dictionary = none
+ SIG_UINT16(0x0160), // method dictionary = empty
+ SIG_END
+};
+
+static const uint16 pepperPatchMustyMessage[] = {
+ PATCH_ADDTOOFFSET(+0x5e), // mazeHallE
+ PATCH_UINT16(0x015a), // method dictionary = doVerb
+ PATCH_END
+};
+
// script, description, signature patch
static const SciScriptPatcherEntry pepperSignatures[] = {
{ true, 116, "puzzle box fix", 1, pepperSignaturePuzzleBox, pepperPatchPuzzleBox },
+ { true, 400, "musty message fix", 1, pepperSignatureMustyMessage, pepperPatchMustyMessage },
{ true, 894, "glass jar fix", 1, pepperSignatureGlassJar, pepperPatchGlassJar },
{ true, 928, "Narrator lockup fix", 1, sciNarratorLockupSignature, sciNarratorLockupPatch },
SCI_SIGNATUREENTRY_TERMINATOR
Commit: 259099c4120856c8d1d2c91e257b8c9c3c3a8321
https://github.com/scummvm/scummvm/commit/259099c4120856c8d1d2c91e257b8c9c3c3a8321
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2024-07-17T18:27:36-07:00
Commit Message:
SCI: Apply SCI1.1 control panel workaround to all games
Fixes uninit temp error on all SCI1.1 games, PQ4
Changed paths:
engines/sci/engine/workarounds.cpp
diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp
index f95e658045a..5736ad99449 100644
--- a/engines/sci/engine/workarounds.cpp
+++ b/engines/sci/engine/workarounds.cpp
@@ -276,6 +276,7 @@ const SciWorkaroundEntry uninitializedReadForParamWorkarounds[] = {
// gameID, room,script,lvl, object-name, method-name, local-call-signature, index-range, workaround
const SciWorkaroundEntry uninitializedReadWorkarounds[] = {
{ GID_ALL, -1, 990, 0, "Restore", "doit", nullptr, 364, 364, { WORKAROUND_FAKE, 0 } }, // When pressing Restore button in original restore dialog when list is empty
+ { GID_ALL, -1, 937, -1, /*IconBar*/ nullptr, "dispatchEvent", nullptr, 58, 58, { WORKAROUND_FAKE, 64 } }, // Pressing Enter on SCI1.1 control panel while mouse isn't over a button, also affects many dialogs. Empty name for Mac. Value must have 0x40 set to claim event. Bugs #5241, #6603, #13045, #13161
{ GID_CAMELOT, 40, 40, 0, "Rm40", "handleEvent", nullptr, 0, 0, { WORKAROUND_FAKE, 0 } }, // when looking at the ground at the pool of Siloam - bug #6401
{ GID_CASTLEBRAIN, 280, 280, 0, "programmer", "dispatchEvent", nullptr, 0, 0, { WORKAROUND_FAKE, 0xf } }, // pressing 'q' on the computer screen in the robot room, and closing the help dialog that pops up (bug #5143). Moves the cursor to the view with the ID returned (in this case, the robot hand)
{ GID_CASTLEBRAIN, 320, 325, 0, "word", "dispatchEvent", nullptr, 14, 15, { WORKAROUND_FAKE, 0 } }, // holding down enter key during the word search puzzle, temp 14 and 15 - bug #9783
@@ -329,7 +330,7 @@ const SciWorkaroundEntry uninitializedReadWorkarounds[] = {
{ GID_HOYLE4, 500, 17, 1, "Character", "say", nullptr, 504, 504, { WORKAROUND_FAKE, 0 } }, // sometimes while playing Cribbage (e.g. when the opponent says "Last Card") - bug #5662
{ GID_HOYLE4, 700, 753, 0, "LeadSeat_NoTrump", "think", sig_any_procedure, 4, 6, { WORKAROUND_FAKE, 0 } }, // when playing Bridge
{ GID_HOYLE4, 800, 870, 0, "EuchreStrategy", "thinkLead", nullptr, 0, 0, { WORKAROUND_FAKE, 0 } }, // while playing Euchre, happens at least on 2nd or 3rd turn - bug #6602
- { GID_HOYLE4, -1, 937, 0, "IconBar", "dispatchEvent", nullptr, 408, 408, { WORKAROUND_FAKE, 0 } }, // pressing ENTER on scoreboard while mouse is not on OK button, may not happen all the time - bug #6603
+ { GID_HOYLE4, -1, 937, 0, "IconBar", "dispatchEvent", nullptr, 407, 408, { WORKAROUND_FAKE, 0 } }, // pressing ENTER on scoreboard while mouse is not on OK button, may not happen all the time - bug #6603
{ GID_HOYLE5, -1, 14, -1, nullptr, "select", nullptr, 1, 1, { WORKAROUND_FAKE, 0 } }, // dragging the sliders in game settings
{ GID_HOYLE5, -1, 64937, -1, nullptr, "select", nullptr, 7, 7, { WORKAROUND_FAKE, 0 } }, // clicking the "control" and "options" buttons in the icon bar
{ GID_HOYLE5, -1, 64937, -1, "IconBar", "handleEvent", nullptr, 0, 0, { WORKAROUND_FAKE, 0 } }, // clicking on any button in the icon bar
@@ -346,7 +347,6 @@ const SciWorkaroundEntry uninitializedReadWorkarounds[] = {
{ GID_HOYLE5, 1100, 1100, 0, "anteButton", "handleEvent", nullptr, 1, 1, { WORKAROUND_FAKE, 0 } }, // when exiting Poker
{ GID_HOYLE5, 6029, 6029, 1, "ControlIcon", "select", nullptr, 1, 1, { WORKAROUND_FAKE, 0 } }, // Solitaire: when changing any slider in the Card Flip mini-game's options window
{ GID_HOYLE5, -1, 6000, 1, "sHand", "handleEvent", nullptr, 4, 4, { WORKAROUND_FAKE, 0 } }, // Solitaire: when clicking on an empty card base in any game
- { GID_ISLANDBRAIN, 100, 937, 0, "IconBar", "dispatchEvent", nullptr, 58, 58, { WORKAROUND_FAKE, 0 } }, // when using ENTER at the startup menu - bug #5241
{ GID_ISLANDBRAIN, 140, 140, 0, "piece", "init", nullptr, 3, 3, { WORKAROUND_FAKE, 1 } }, // first puzzle right at the start, some initialization variable. bnt is done on it, and it should be non-0
{ GID_ISLANDBRAIN, 160, 165, 0, "cartesian", "buyClue", nullptr, 0, 0, { WORKAROUND_FAKE, 1 } }, // microscope puzzle: upon click of buy clue - depends on non-deterministic initialization for puzzle. Before div occurs, temp0 must be non-0 - bug #14546
{ GID_ISLANDBRAIN, 180, 190, 0, "word", "dispatchEvent", nullptr, 14, 15, { WORKAROUND_FAKE, 0 } }, // holding down enter key during the word search puzzle, temps 14 and 15
@@ -421,6 +421,7 @@ const SciWorkaroundEntry uninitializedReadWorkarounds[] = {
{ GID_PQ4, 240, 64964, -1, "DPath", "init", nullptr, 1, 1, { WORKAROUND_FAKE, 0 } }, // when encountering Sherry and the reporter outside the morgue at the end of day 3
{ GID_PQ4, 2010, 2010, -1, "enemyShip1", "cantBeHere", nullptr, 7, 7, { WORKAROUND_FAKE, 0 } }, // when crashing into a UFO in the asteroids minigame in the Shortstop Bar
{ GID_PQ4, 2010, 2010, -1, "enemyShip2", "cantBeHere", nullptr, 7, 7, { WORKAROUND_FAKE, 0 } }, // when crashing into a UFO in the asteroids minigame in the Shortstop Bar
+ { GID_PQ4, -1, 64937, -1, "pqGameControls", "dispatchEvent", nullptr, 6, 6, { WORKAROUND_FAKE, 0 } }, // pressing the Enter key on control panel screen while mouse isn't over a button
{ GID_PQ4, -1, 64950, -1, "Feature", "handleEvent", nullptr, 0, 0, { WORKAROUND_FAKE, 0 } }, // floppy: when walking within room 395 (city hall, day 3)
{ GID_PQ4, -1, 64994, -1, "Game", "save", nullptr, 1, 1, { WORKAROUND_FAKE, 0 } }, // when saving in Mac version
{ GID_PQ4, -1, 0, -1, "pq4", "restore", nullptr, 0, 0, { WORKAROUND_FAKE, 0 } }, // when restoring in Mac version
@@ -448,7 +449,6 @@ const SciWorkaroundEntry uninitializedReadWorkarounds[] = {
{ GID_QFG3, 470, 470, -1, "<invalid name>", "notify", nullptr, 0, 0, { WORKAROUND_FAKE, 0 } }, // same as previous, with rm470::name used for temp storage by fan patches added by GOG
{ GID_QFG3, 490, 490, -1, "computersMove", "changeState", sig_uninitread_qfg3_2, 4, 4, { WORKAROUND_FAKE, 0 } }, // when finishing awari game, bug #5167
{ GID_QFG3, -1, 32, -1, "ProjObj", "doit", nullptr, 1, 1, { WORKAROUND_FAKE, 0 } }, // near the end, when throwing the spear of death or sword, bugs #5282, #11477
- { GID_QFG3, -1, 937, -1, "IconBar", "dispatchEvent", nullptr, 58, 58, { WORKAROUND_FAKE, 64 } }, // pressing the Enter key on the main menu screen, bugs #13045, #13161 (affects multiple room numbers). value must have 0x40 set for quit global to be evaluated
{ GID_QFG4, -1, 15, -1, "charInitScreen", "dispatchEvent", nullptr, 5, 5, { WORKAROUND_FAKE, 0 } }, // floppy version, when viewing the character screen
{ GID_QFG4, -1, 23, -1, "tellerControls", "dispatchEvent", nullptr, 6, 6, { WORKAROUND_FAKE, 0 } }, // floppy version, when using keyboard controls in the conversation interface
{ GID_QFG4, -1, 50, -1, "sSearchMonster", "changeState", nullptr, 2, 2, { WORKAROUND_FAKE, 0 } }, // CD version, when searching a chernovy or revenant with speech disabled
More information about the Scummvm-git-logs
mailing list