[Scummvm-git-logs] scummvm master -> 8fcff44b40cce928bd5700b86d335782f4cd7c7b
sluicebox
22204938+sluicebox at users.noreply.github.com
Wed Jan 22 05:04:01 UTC 2020
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:
8fcff44b40 SCI32: Fix PHANT2 computer scrollbar crash
Commit: 8fcff44b40cce928bd5700b86d335782f4cd7c7b
https://github.com/scummvm/scummvm/commit/8fcff44b40cce928bd5700b86d335782f4cd7c7b
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2020-01-21T21:02:48-08:00
Commit Message:
SCI32: Fix PHANT2 computer scrollbar crash
Fixes bug #10391
Changed paths:
engines/sci/engine/script_patches.cpp
engines/sci/engine/workarounds.cpp
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 94176c1..c533bb6 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -160,6 +160,7 @@ static const char *const selectorNameTable[] = {
"format", // Phant2
"setSize", // Phant2
"iconV", // Phant2
+ "track", // Phant2
"update", // Phant2
"xOff", // Phant2
"fore", // KQ7
@@ -275,6 +276,7 @@ enum ScriptPatcherSelectors {
SELECTOR_format,
SELECTOR_setSize,
SELECTOR_iconV,
+ SELECTOR_track,
SELECTOR_update,
SELECTOR_xOff,
SELECTOR_fore,
@@ -8707,6 +8709,46 @@ static const uint16 phant2DocuStoreEmailPlacementPatch[] = {
PATCH_END
};
+// The scrollbars in the DocuStore computer crash when clicking on the thumb,
+// dragging the cursor off of the scrollbar, and then releasing. This calls
+// Thumb:action with no event parameter, which Thumb:action expects, but after
+// handling this it proceeds to use the uninitialized parameter anyway.
+// DItem:track then errors by sending a message to this non-object.
+//
+// We fix this by passing the current event instead of the potentially
+// nonexistent event parameter to DItem:track.
+//
+// Applies to at least: English PC, French PC, probably all versions
+// Responsible method: Thumb:action
+// Fixes bug: #10391
+static const uint16 phant2ComputerScrollbarCrashSignature[] = {
+ 0x7e, SIG_ADDTOOFFSET(+2), // line
+ 0x38, SIG_SELECTOR16(track), // pushi track
+ 0x78, // push1
+ 0x8f, 0x01, // lsp 01
+ 0x54, SIG_UINT16(0x0006), // self 06 [ self track: param1 ]
+ 0x7e, SIG_ADDTOOFFSET(+2), // line
+ SIG_MAGICDWORD,
+ 0x76, // push0
+ 0x43, 0x21, SIG_UINT16(0x0000), // callk FrameOut
+ 0x7e, // line
+ SIG_END
+};
+
+static const uint16 phant2ComputerScrollbarCrashPatch[] = {
+ 0x38, PATCH_SELECTOR16(track), // pushi track
+ 0x78, // push1
+ 0x38, PATCH_SELECTOR16(curEvent), // pushi curEvent
+ 0x76, // push0
+ 0x80, PATCH_UINT16(0x0050), // lag 0050
+ 0x4a, PATCH_UINT16(0x0004), // send 04 [ p2User curEvent? ]
+ 0x36, // push
+ 0x54, PATCH_UINT16(0x0006), // self 06 [ self track: (p2User curEvent?) ]
+ 0x76, // push0
+ 0x43, 0x21, PATCH_UINT16(0x0000), // callk FrameOut
+ PATCH_END
+};
+
// script, description, signature patch
static const SciScriptPatcherEntry phantasmagoria2Signatures[] = {
{ true, 0, "speed up interface fades", 3, phant2SlowIFadeSignature, phant2SlowIFadePatch },
@@ -8724,6 +8766,7 @@ static const SciScriptPatcherEntry phantasmagoria2Signatures[] = {
{ true, 63019, "fix bad folder/doc icon refresh", 2, phant2BadIconSignature, phant2BadIconPatch },
{ true, 63019, "fix file and note content placement", 1, phant2DocuStoreFileNotePlacementSignature, phant2DocuStoreFileNotePlacementPatch },
{ true, 63019, "fix email content placement", 1, phant2DocuStoreEmailPlacementSignature, phant2DocuStoreEmailPlacementPatch },
+ { true, 64926, "fix computer scrollbar crash", 1, phant2ComputerScrollbarCrashSignature, phant2ComputerScrollbarCrashPatch },
{ true, 64990, "remove save game name mangling (1/2)", 1, phant2SaveNameSignature1, phant2SaveNamePatch1 },
{ true, 64990, "increase number of save games (1/2)", 1, phant2NumSavesSignature1, phant2NumSavesPatch1 },
{ true, 64990, "increase number of save games (2/2)", 2, phant2NumSavesSignature2, phant2NumSavesPatch2 },
diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp
index 71046a8..fd055d9 100644
--- a/engines/sci/engine/workarounds.cpp
+++ b/engines/sci/engine/workarounds.cpp
@@ -336,7 +336,6 @@ const SciWorkaroundEntry uninitializedReadForParamWorkarounds[] = {
{ GID_HOYLE5, -1, 15, -1, "Hand", "add", NULL, 1, 1,{ WORKAROUND_FAKE, 0 } }, // When the game adds cards to your hand in any mini-game
{ GID_HOYLE5, 700, 730, 0, NULL, "runningSuit", NULL, 2, 2,{ WORKAROUND_FAKE, 0 } }, // when an opponent is playing in Bridge
{ GID_HOYLE5, 1100, 22, -1, "HandPile", "show", NULL, 1, 1,{ WORKAROUND_FAKE, 0 } }, // when showing money piles in Poker
- { GID_PHANTASMAGORIA2,-1, 64926, 0, "Thumb", "action", NULL, 1, 1,{ WORKAROUND_FAKE, 0 } }, // When dragging one of the volume sliders and releasing the mouse button over the +/- buttons
{ GID_PHANTASMAGORIA2,-1, 63019, 0, "WynDocTextView", "cue", NULL, 2, 2,{ WORKAROUND_FAKE, 0 } }, // When dragging the slider next to an e-mail message
{ GID_SHIVERS, -1, 64918, 0, "Str", "strip", NULL, 1, 1,{ WORKAROUND_FAKE, 0 } }, // When starting a new game and entering a name
{ GID_SQ4, 35, 928, 0, "Narrator", "say", NULL, 1, 1,{ WORKAROUND_FAKE, 11 } }, // Clicking smell on sidewalk, fixes message due to missing say parameter in sidewalk1:doVerb(6) - bug #10917
More information about the Scummvm-git-logs
mailing list