Spatterlight release 1.2.5 is out!

Get it here: Release Release 1.2.5 · angstsmurf/spatterlight · GitHub
Direct link to binary: https://github.com/angstsmurf/spatterlight/releases/download/v1.2.5/Spatterlight.zip

Lots of VoiceOver improvements this time. Thanks to @AERobert for a lot of testing and to @Nephar for reporting bugs.

Includes Bocfel 2.2 by @cas with improved Infocom v6 support.

Spatterlight is a unified IF interpreter for macOS, originally written by Tor Andersson.

Full list of changes:

  • A save file with a garbage single-character name would be written to the user directory when a save request was cancelled.
  • Limits the duration of smooth scrolling.
  • Adds a preference to open the save dialog in the game file directory by default.
  • The VoiceOver Command History rotor would be confused by char requests, and by Glk graphic windows.
  • Thumbnailer extension would generate a crash report when no Core Data library was found.
  • The library view “Like” buttons have more descriptive accessibility labels.
  • Improves VoiceOver feedback when stepping through the command history (not to be confused with the Command History custom rotor).
  • Junior Arithmancer is no longer detected by VoiceOver as showing a menu.
  • Menu detection now works even if the game window is large.
  • Improved menu detection in Vespers.
  • Switching off menu detection manually would sometimes not have any effect until restart.
  • New settings for when to interrupt VoiceOver. When a game window gets focus, the standard behaviour of VoiceOver is to start speaking the entire scrollback from the very beginning, which can be a lot. We have always tried to interrupt this by speaking just the text of the latest move instead, but there are now controls to set how long to wait before the interruption, and also a way to turn this hack off entirely.
  • When selecting the preferences panel, VoiceOver would speak the sample text even if it was hidden.
  • Spatterlight’s invisible “more prompt” mode was confusing to VoiceOver users, and is now disabled while VoiceOver is active.
  • When multiple games were running, VoiceOver would sometimes speak text from backgrounded games.
  • Default name of input recording files would be named “Recordning[sic] of [game title]”.
  • The “Add to library” option when opening a game file was truncated.
  • Unrelated error messaged would sometimes be displayed on game crash.
  • Adds patches that fix crashes in the Z-code games Transporter and Unforgotten.
  • Turns on abbreviation expansion in Scare, which fixes The Cellar and maybe others.
  • Updates Glulxe to 0.6.1, with an improved random number generator.
  • Updates Bocfel to 2.2. Includes fixes for missing text in Trinity and Beyond Zork, and improved support for version 6 games.
  • Updates Magnetic to 2.3.1. No functional changes.
10 Likes

For slightly better version 6 graphics in Zork Zero and Arthur, I’ve created two updated Blorb files:

These include an extension to support Blorb’s adaptive palette in a Glk-based interpreter. These Blorbs are backward compatible so should work just fine with interpreters that support the standard adaptive palette chunk, i.e. they should serve as drop-in replacements.

See Bocfel’s documentation for a bit more discussion about graphics and the adaptive palette, and here if you’re interested in how the Blorb files were created.

4 Likes

I can’t get Zork Zero to work. I’m trying to adapt the instructions from Zork Zero - IFWiki

I downloaded https://eblong.com/infocom/gamefiles/zork0-r393-s890714.z6

But when I open it in Spatterlight 1.2.5, the game crashes on startup with this message:

invalid argument for -n: must be an integral number between 1 and 11 inclusive

EDIT: This is a regression from the previous version of Spatterlight, where the game would load but would not display graphics.

Just for fun, I also tried downloading https://cspiegel.github.io/bocfel/zork0.blb and renaming it to zork0-r393-s890714.blb and putting it in the same directory as the .z6 file, but that had no effect.

@cas If you’re in the business of cooking new blorbs… would it be possible/reasonable to cook a blorb that contains the actual Z6 games for the Infocom games? It’s such a hassle to have to tell people to download multiple files and pass them both off to the interpreter.

I can’t reproduce this, but it sounds like your settings for interpreter version is broken somehow. What does it say under Settings → Format → Interpreter version? Try changing it.

It said “0. Empty,” and I found that I was using the theme “Old settings.” (I’m pretty sure I didn’t type “Old settings” by hand…?)

Changing it to 4. Amiga fixed it, and I do see graphics now.

Great!

“Old settings” is created from any old pre-0.5.12b property-list-based settings Spatterlight finds laying around its preferences file, when a new version is run for the first time. EDIT: Actually every time Spatterlight starts, apparently.

Its purpose is to preserve your settings when you upgrade, but I suppose nobody upgrades from versions that old anymore, so the feature is more annoying than useful these days. At the very least, “Old settings” shouldn’t be created if there are no old settings to preserve, but currently it is anyway.

At least I’ve tried to make sure now that Interpreter version won’t ever be set to 0 again.

2 Likes

Is this how we expect Zork Zero to look?

  1. Status line appears separately instead of drawn into the banner
  2. Directional arrows not clickable
  3. When up/down directional arrows are not present, they appear as darker brown spots instead of matching the status line color
  4. White border under the status line (something similar occurs on the title screen when you ne.s.w.e.w.dive under table.z.z.z)
  5. No pillars on the left/right side
  6. Grey text background color should be white
  7. Up arrow key doesn’t go back to previous command

Should I file these as bugs? Are these bugs in Bocfel? On Spatterlight?

Compare/contrast with the Infocom Frotz version here. https://curiousdannii.github.io/infocom-frotz/zorkzero.html

Also! Arthur has a mode-switcher feature, documented in its manual, operated by function keys. https://curiousdannii.github.io/infocom-frotz/arthur.pdf

Infocom Frotz has UI buttons to let you click to switch modes. https://curiousdannii.github.io/infocom-frotz/arthur.html

On my MacBook Pro, I can use the fn key to send F1, F2, etc. commands to the game, and the graphics/map modes work fine, but the inventory, score, and room descriptions commands don’t work correctly.

Arthur is also missing the flag poles on the left and right, just as Zork Zero is missing its pillars.

And, opposite Zork Zero, Arthur’s background is white instead of grey, which contrasts badly with the transparent holes in the header banner.

It should be easy enough to add support for this to the bpal tool; distributing the resulting files will be in the same legal area as distributing all Infocom files, which I suppose means nobody cares but technically is a copyright violation. I can add support to the tool and if anybody wants to host them, I can generate bundled versions.

1 Like

I’ll try to consolidate responses to all your questions regarding bugs/etc here.

First, under Glk, things will always be an approximation of the way they’re meant to look. There will be some possible improvements, but some things will likely never be ideal.

Separate status line in Zork Zero: Yes, this is intended, because Glk can’t draw text in graphics windows (the only way to mix text and graphics is marginal/inline graphics in text buffer windows). This is the best solution I was able to come up with.

The compass rose is clickable in Gargoyle (as yet unreleased, but git master). I’m not sure if this is a Bocfel or Spatterlight issue. I’d recommend leaving a report with Spatterlight and I can work with @Angstsmurf to figure out what’s going on.

Darker brown up/down blocks: This isn’t intentional, per se, but I kind of ran out of steam at the end of implementing Zork Zero support and deemed them “good enough for now”. Feel free to add a bug report on Gargoyle’s tracker so I don’t forget about it, since it’s worth trying to fix at some point.

White line under banner: Offhand I think this is because the banner window is drawn slightly larger than the first border you see (the other borders, e.g. the green one, are a bit taller than this image). To simplify things I keep the top window the same size for all borders; but it looks like Spatterlight defaults the background of graphics windows to white. It’s sort of a Glk implementation issue, then, but if that’s not really changeable, I may be able to adapt the top graphics window to the banner size. @Angstsmurf will have Spatterlight insight here.

No pillars (or banner staffs for Arthur) is intentional, for two reasons. First, it’s a lot of work to track two extra windows for the pillars, and second, they assume a fixed 320x200 (or equivalent ratio) screen. With modern Glk implementations, you can resize the window, and the pillars would either extend only partway down the screen, or they’d have to be stretched and would look silly. I will probably not implement the pillars because of this (I had some early code that did it and it looked bad), but you can also file a report because I might go back and try again at some point.

Not sure about the gray text; in Gargoyle, it follows the user-specified color. When I have some time I’ll check against Windows Glk as well. May be a Glk implementation issue.

The up arrow works in Gargoyle and glkterm, but it looks like Zork Zero does add it as a terminating key, so maybe there’s some weird interaction there. Something (yet again) @Angstsmurf and I may be able to work out the source of.

The inventory, score, and description modes in Arthur are known not to work. You can file a bug if you’d like; I’m aware of the issue, but haven’t put too much effort into it. It may be a lot of work for little reward, but I’ll probably tackle it at some point.

As with Zork Zero, the colors are working on Gargoyle, but it’s likely the same issue for both, so when we fix one, we fix both (hopefully).

Thanks for the thorough reports. While I’d love to have complete version 6 graphics support, the best we’ll ever get is “pretty close” due to differences in how Glk and Infocom handle graphics. To get to the point where we are now, I had to add a lot of special-casing in the code to handle a bunch of different scenarios. More fixes will require more special cases. Which is fine, but can be difficult to implement.

You can always err on the side of too many bug reports vs not enough. No harm in tracking things, even if they’re not fixable.

2 Likes

Not sure how the mouse broke, but this is definitely a Spatterlight bug. Mouse input still works in Beyond Zork.

The text colour does at least partly depend on the interpreter number settings. The games check this and set the text and background colours accordingly: grey background in Zork Zero on Amiga, white background on PC.

That’s a good point: version 6 games make a lot more use of the interpreter number, since the graphics capabilities of the target machine suddenly became more relevant.

I did almost all of my testing with the value set to 1, i.e. DECSystem-20. There may be cases of games completely breaking with other interpreter numbers. For example, there was a bug in (I believe) Journey, when Amiga was set, where it would effectively lock up. I fixed that one, but only because it was at the beginning of the game. If there are bugs late in games with different interpreter numbers, I just won’t have had a chance to find them. So, to anybody willing to do a bit of work, if you can verify that there is buggy behavior in a non-DEC (1) interpreter that is not present when you set it to DEC, feel free to leave bug reports about it on the Gargoyle issue tracker. This definitely includes the colors. Whether that means ignoring color requests in these games, or just documenting the behavior, I’m not sure yet.

At the very least, you can pass the -c flag to Bocfel to disable colors, which will “fix” this issue, or for a more permanent solution, add this to your bocfelrc file (run /config while in Bocfel to edit it, if you don’t know where it is):

[393-890714]
disable_color = 1
2 Likes