Opened 8 years ago

Closed 5 years ago

Last modified 2 years ago

#7065 closed defect (fixed)

SCI: PHARKAS Mac easter egg freezes partway

Reported by: SF/eisnerguy1 Owned by: sluicebox
Priority: normal Component: Engine: SCI
Version: Keywords: original has-pull-request
Cc: sluicebox Game: Freddy Pharkas: Frontier Pharmacist


Freddy Pharkas: Frontier Pharmacist (Macintosh/English) Tried in: ScummVM 1.7.0 ScummVM 1.9.0git-dirty (Feb 29 2016 00:58:11) (commit 3e5adc33a84b0a4f0af6ab289782bc6ec7319c9c) Mac OS X 10.10.5

So, I recently discovered a rare easter egg that was exclusive to the Mac version of Freddy Pharkas. By using the “Talk” icon in the same spot on the Mine that generates the “Mac programmers deep within the Old Abandoned Mine toil at their shunned lore.” message (by using the "Look" icon), a sequence will begin that ends with a hand raising a Macintosh out of the swamp.

I uploaded a video of the whole easter egg (while being played in SheepShaver) on YouTube.

But, if you were to try it in ScummVM (the versions I listed above), when the sound "Find the golden ball" plays, that just continues to loop and the easter egg doesn't continue as normal. There's no output in Terminal or any messages in the ScummVM debugger. I've attached a recording of the ScummVM version & a save file at the swamp.

Ticket imported from: bugs/7065.

Attachments (2) (13.8 MB ) - added by SF/eisnerguy1 8 years ago. (38.7 KB ) - added by SF/eisnerguy1 8 years ago.

Change History (10)

by SF/eisnerguy1, 8 years ago

by SF/eisnerguy1, 8 years ago

Attachment: added

comment:1 by SF/eisnerguy1, 8 years ago

Here's the save file.

comment:2 by eisnerguy1, 8 years ago

This still occurs in ScummVM 1.9.0 (Oct 11 2016 19:58:14). Running it on 10.10.5.

comment:3 by eisnerguy1, 7 years ago

This still occurs in ScummVM 1.10.0git2888-ga925264 (Mar 27 2017 04:50:05). Running it on Mac OS X 10.12.4.

comment:4 by sluicebox, 5 years ago

I took a look at this and it is a script bug, though I don't know why it worked in the original. I'm not setup to disassemble the Mac interpreter and I pray to never be.

The reason the sound is looping forever is because the script requests it to. The loop property on macSound is set to -1, which means loop forever. The script macThing plays macSound and tells it to continue macThing when the sound finishes playing, which it never does on ScummVM, because the sound isn't supposed to finish. It looks like they put the wrong loop value but it accidentally worked on Sierra's interpreter so no one noticed. No other scripts in this game wait on a sound with loop -1 to finish. That's what I'd expect since deliberately doing that wouldn't make sense.

macSound is also declared with the wrong sound number: the Yeehaw! from the title screen. This isn't a problem since the number is set to the right one when playing, but it could be a hint to some copy/pasting or unfamiliarity with sound scripting that led to the bug.

Right now this game doesn't load at all (#10440, #10792) but once that's taken care of this can be fixed with a small script patch that changes macSound:loop from -1 to 1 or an investigation can be launched into why the behavior is different in ScummVM. I tried patching the loop value and that worked. I doubt any other scripts in other games depend on this behavior since they'd all break in ScummVM the way this one did and be noticed, but maybe it's something more complicated.

I guess the lesson is that if you're going to tack on an easter egg about being a shunned Mac programmer you better make sure you do it right...

comment:5 by sluicebox, 5 years ago

Cc: sluicebox added
Keywords: original has-pull-request added

Workaround for the script bug:

comment:6 by Filippos Karapetis <bluegr@…>, 5 years ago

In 0a68bf7:

SCI: Fix FPFP Mac easter egg, bug #7065

Works around a script bug that locks up the game

comment:7 by bluegr, 5 years ago

Owner: set to bluegr
Resolution: fixed
Status: newclosed

comment:8 by sluicebox, 2 years ago

Owner: changed from bluegr to sluicebox
Note: See TracTickets for help on using tickets.