Text adventure interpreter makes Infocom's Journey and Arthur accessible

By Petter, 16 April, 2025

Forum
macOS and Mac Apps

See my earlier post here:
https://www.applevis.com/forum/macos-mac-apps/voiceover-users-wanted-test-hack-infocoms-journey

This is crossposted from intfiction.org:
https://intfiction.org/t/voiceover-testers-wanted-for-new-spatterlight-with-arthur-and-shogun-support

The previous version of my text adventure interpreter Spatterlight added VoiceOver support for Infocom's Journey. The new one has experimental support for Infocom’s Shogun and Arthur as well. I'll be happy for any bug reports or other feedback.

The new version can be downloaded here:
https://github.com/angstsmurf/spatterlight/releases/download/v1.4.1/Spatterlight.app.zip

Download Arthur here:
https://curiousdannii.github.io/infocom-frotz/arthur-r74-s890714-graphics.zblorb

And Shogun here:
https://curiousdannii.github.io/infocom-frotz/shogun-r322-s890706-graphics.zblorb

There is also an early development version of Shogun available that has the debug command $SCENE which lets you jump directly to any scene of the game:
https://eblong.com/infocom/gamefiles/shogun-r278-s890211.z6

Any version of the games should be working. I’ve tried to make everything accessible with VoiceOver, with custom support for menus and for simplifying the Shogun graphical maze.

https://youtu.be/DLTK1fMp5-o?si=M_erjnXIkibRolHJ

The above is a video recording with sound of me playing a couple of moves in both games with VoiceOver. I’m also using VoiceOver Recognition to (incorrectly) describe some of the images (VO + Shift + L). As usual, VoiceOver will sometimes skip text or just stop speaking, especially when there are windows closing and opening. You might have to press the ”Repeat last move” shortcut (Option + Command + left arrow), sometimes repeatedly, to make it say all that it is supposed to.

In the video, I first change two settings, ”Format > Redirect text to main window” (more on this below) and ”VoiceOver > Speak Images > All”. The latter is needed to make VoiceOver take note of the images in these games. I then start up Arthur, try to make VoiceOver Recognition describe the images with varying success (including the room image), and then type HINT to make sure that the response is printed in the main buffer window. I then enter the hint menu and navigate to a hint.

After that, I start Shogun, using the intro menu, and play long enough for it to show two margin images, which I then try to get VoiceOver recognition to describe. (I navigate to the first one with the custom image rotor VO + U.) I also enter the “Function Keys” menu with the DEFINE command, and create a macro for TAKE ALL, activated by pressing F2. Yes, it is kind of useless, but it works.

Spatterlight has had basic support for Infocom InvisiClues style menus for some time now, but the help menus in the version 6 games are different enough to require special handling. Unlike the previous menu detection, it also handles the listing of actual hints, the ”bottom level” of the menu hierarchy. The seen hints for a puzzle can be stepped through using the command history rotor.

Arthur was always more playable with a screen reader than the other Infocom version 6 games, but it prints some interpreter responses to a separate ”error window.” To help with this I’ve added a new option to Settings > Format, ”Redirect text to main window,” which will make these print to the main text buffer window instead.

Another potential problem is that Arthur uses a timeout in a couple of places, so if VoiceOver is not set to speak at a high enough speed, as in my video, the game will wipe the text and move to a new screen before it has spoken all of it. If anyone is bothered by this, let me know. I might try doing something about it.

In Shogun, one major stumbling block for screen readers is the graphical maze. I gave up on trying to bypass it entirely, and instead just added an option to simplify it. If VoiceOver is active, you will be asked about this before entering the maze. I hope that some people will appreciate that a little of the challenge of the maze remains for VoiceOver users. If anyone really wants an option to skip it entirely, I suppose I might be persuaded to give it another try.

I figure the original graphical maze is a puzzle, if not necessarily a very good one. Likewise, navigating the simplified maze using VoiceOver is another puzzle of similar quality. Trying to solve it on your own might make it more interesting, but if not, here is a spoiler:

SPOILER

STOP READING HERE

The city ”maze” is now a single path. Every ”room” in the maze represents a 90 degree bend in the path, either to the left or to the right, relative to the way you came. In other words, there are always two exits: one back to where you came from, the other one either a left or a right turn. If you come from the west, the way back is to the east, and the way ahead is either north or south. There is no telling which until you try one of them, so there is a 50 percent chance you will pick the wrong one first, and the game will say that ”There’s a house there.” If the way ahead is to the south, the next turn will be either east or west, and so on. Of course, there is also the risk of getting confused, turned around, and ending up back where you started. Then you will have to get back in and do it all over again.

Options

Comments

By Sebby on Wednesday, April 16, 2025 - 20:10

I might just try this!

Is there any way to disable the accommodations completely and just rely on reviewing the buffers in the usual way, or are they complementary?

Spatterlight is simply the gold standard of IF play for the blind now, in my opinion. Thanks so much for the work you've done and still do. It's much appreciated, not to speak of unexpected!

By Petter on Wednesday, April 16, 2025 - 21:10

I'm not sure if I understand which accommodations you want to disable, but all text printing in Spatterlight is done in standard system text views, so you should be able to navigate the text using all the standard VoiceOver shortcuts, with all your custom settings honoured, just like in, say, TextEdit. Let me know if it doesn't work for you.

By Sebby on Thursday, April 17, 2025 - 02:10

You mentioned dynamically-added menus when VoiceOver was detected. I supposed that the experience would therefore be parallel to, rather than complementary to, the existing model of each game window being its own interactible element, and all the output would be self-voiced differently. From what you're saying though, it should still be possible to review the text as printed by the game. Just for context, I've used a DOS screen reader with frotz to play and win Journey, so I'm not unaware of the mechanics of the z6 format and the way it presented the two-pane view and menus.

But don't worry, I'm a long-time user of Spatterlight (thanks again!) with VoiceOver, so I'll figure it out and let you know if I run into any trouble.

By Petter on Thursday, April 17, 2025 - 09:10

Right. There is a setting: VoiceOver > Speak menu lines > Don't detect menus, which is supposed to turn off all special VoiceOver menu handling altogether. This can be necessary sometimes, because it has been known to happen that the automatic menu detection mistakes any old list of things for a hint menu. I fix these cases as I encounter them, but there are a lot of games out there.

Now that you mention it, I realise I haven't tested to turn off the menus in Arthur or Shogun. Thanks for reminding me, and please let me know if you run into problems!

By Petter on Thursday, April 17, 2025 - 15:10

I changed how the menus behave when the "Don't detect menus" setting is active. Spatterlight no longer keeps saying "No last move to speak" every time you change selection. The link in the original post is changed to point to the new version.

If you want to compare it to the previous behaviour for some reason, the old version is still here:
https://github.com/angstsmurf/spatterlight/releases/download/1.4b/Spatterlight.app.zip

Thanks for bringing this to my attention!

By Sebby on Thursday, April 17, 2025 - 15:10

Probably the weekend, I'll take this out for a spin.
And yes, the important thing is to have options, because it doesn't always work correctly, but when it does, it's awesome!

Thanks again and I'll let you know.