[Scummvm-git-logs] scummvm master -> 0a68bf7768b291acfae60e179d492db441f07dea
bluegr
bluegr at gmail.com
Wed Feb 13 21:07:28 CET 2019
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:
0a68bf7768 SCI: Fix FPFP Mac easter egg, bug #7065
Commit: 0a68bf7768b291acfae60e179d492db441f07dea
https://github.com/scummvm/scummvm/commit/0a68bf7768b291acfae60e179d492db441f07dea
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2019-02-13T22:07:24+02:00
Commit Message:
SCI: Fix FPFP Mac easter egg, bug #7065
Works around a script bug that locks up the game
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 afc8cf9..bfb85fc 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -1029,12 +1029,43 @@ static const uint16 freddypharkasPatchMacInventory[] = {
PATCH_END
};
+// WORKAROUND
+// FPFP Mac has an easter egg with a script bug that accidentally works in
+// Sierra's interpreter. Clicking Talk on a small part of the mine in room 270
+// triggers it. The script macThing plays macSound and waits for it to finish,
+// but macSound:loop is set to -1, indicating that it should loop forever.
+// ScummVM loops the sound and so macThing never advances to the next state and
+// the user never regains control. Sierra's interpreter cues the script after
+// the first play and doesn't loop the sound, despite macSound:loop.
+//
+// We work around this by setting macSound:loop correctly on the heap so that it
+// only plays once and macThing proceeds.
+//
+// Applies to: Mac Floppy
+// Responsible method: Heap in script 270
+// Fixes bug #7065
+static const uint16 freddypharkasSignatureMacEasterEgg[] = {
+ SIG_MAGICDWORD, // macSound
+ SIG_UINT16(0x0b89), // number = 2953
+ SIG_UINT16(0x007f), // vol = 127
+ SIG_UINT16(0x0000), // priority = 0
+ SIG_UINT16(0xffff), // loop = -1 [ loop sound forever ]
+ SIG_END
+};
+
+static const uint16 freddypharkasPatchMacEasterEgg[] = {
+ PATCH_ADDTOOFFSET(+6),
+ PATCH_UINT16(0x0001), // loop = 1 [ play sound once ]
+ PATCH_END
+};
+
// script, description, signature patch
static const SciScriptPatcherEntry freddypharkasSignatures[] = {
{ true, 0, "CD: score early disposal", 1, freddypharkasSignatureScoreDisposal, freddypharkasPatchScoreDisposal },
{ true, 15, "Mac: broken inventory", 1, freddypharkasSignatureMacInventory, freddypharkasPatchMacInventory },
{ true, 110, "intro scaling workaround", 2, freddypharkasSignatureIntroScaling, freddypharkasPatchIntroScaling },
{ true, 235, "CD: canister pickup hang", 3, freddypharkasSignatureCanisterHang, freddypharkasPatchCanisterHang },
+ { true, 270, "Mac: easter egg hang", 1, freddypharkasSignatureMacEasterEgg, freddypharkasPatchMacEasterEgg },
{ true, 320, "ladder event issue", 2, freddypharkasSignatureLadderEvent, freddypharkasPatchLadderEvent },
SCI_SIGNATUREENTRY_TERMINATOR
};
More information about the Scummvm-git-logs
mailing list