ifrotz / iosfrotz

Frotz for iOS source (formerly at code.google.com/p/iphonefrotz)
Other
49 stars 16 forks source link

Text ending in [More] before splash screen is not displayed #307

Closed pgerhardy closed 4 years ago

pgerhardy commented 4 years ago

This issue was seen in Infocom's Trinity and Frotz 1.8.4.

After entering the door at Long Water, the game is supposed to display a block of text ending in "[More]". After pressing a key, the game's title screen should then be displayed. Instead, after entering the door Frotz will jump directly to displaying the title screen.

spathiwa commented 4 years ago

If you can, please attach a saved game where this can be reproduced, and the exact version of Trinity you are using (from the “version” command). Thanks.

On Jul 24, 2020, at 8:01 PM, pgerhardy notifications@github.com wrote:

 This issue was seen in Infocom's Trinity and Frotz 1.8.4.

After entering the door at Long Water, the game is supposed to display a block of text ending in "[More]". After pressing a key, the game's title screen should then be displayed. Instead, after entering the door Frotz will jump directly to displaying the title screen.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

pgerhardy commented 4 years ago

The version is: Release 12 / Serial Number 860926 (Interpreter 1 Version F).

I attached a save game file just at the point before entering the door, so "e" or "enter door" should trigger the bug. trinity_bug.zip

spathiwa commented 4 years ago

So, this is really a bug in the Trinity game file itself; it assumes no screens are bigger than 80 columns by 40 rows, so tries to force a [More] prompt just by outputting 41 rows of text and then immediately clearing the screen and displaying the title screen, expecting the text output driver to automatically pause when it tries to output that much text. It was written before the invention of scrolling views. Window/Unix frotz and Gargoyle interpreters will also exhibit the same behavior if your window is sized to 42 rows or more.

That said, I can try to detect this behavior in iOS Frotz and special-case it.
I have also been thinking of changing the way Frotz clears the screen and have it retain history before the screen clear; just scroll a large gap so it looks like the screen cleared, but you could still scroll back up. That would help but it would still be weird in this case because the game displays the title screen in a fixed-width font by expanding the status line, so you'd have to skip past the title screen when it restores the status line to normal before you could scroll up.

spathiwa commented 4 years ago

Oh, in case you didn't already figure it out by playing on another platform, the text you missed is:

As you wade to the threshold a familiar roadrunner flutters past. The ruby in its beak gleams enticingly as it slips through the white door.

All color abruptly drains from the landscape. Trees, sky and sun flatten into a spherical shell, with you at the very center. A hissing in your ears becomes a rumble, then a roar as the walls of the shell collapse inward, faster and faster.

"This way, please."

You turn, but see no one.

"This way," the voice urges. "Be quick."

The space around you articulates. "No!" your mind shudders. "That's not a direction!"

"It's a perfectly legitimate direction," retorts the voice with cold amusement. "Now come along."

pgerhardy commented 4 years ago

Thank you for this explanation, and thank you for Frotz which brings me much joy!

It must be a challenge to keep up with that kind of legacy hacks in the game files. Infocom had it easy, needing only to be compatible with themselves.

I guess the issue can be closed then.

spathiwa commented 4 years ago

Thanks for the kind words.

I’ll leave the issue open for a bit to track any sort of workaround I think of.

Actually, Infocom had it pretty hard because there were so many more different platforms they had to run on with different quirks and tiny memory foot prints... everything from Atari 400 and TI 99/4a to Amiga.

spathiwa commented 4 years ago

Fixed in 1.8.5.