Skip to content

Classic text adventures, reformatted to look beautiful in Status Line on the Pico-8

Notifications You must be signed in to change notification settings

ChristopherDrum/status-line-classics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Status Line Classics

Classic text adventures, reformatted to look beautiful in Status Line on the Pico-8

TL;DR

There are a handful of Infocom classics which have hard-coded formatting values which prevent them from being played on narrow screens under 40-characters wide (sometimes even under 60-characters), even if the target machine has enough processing power to play the game. This repo attempts to remove those layout restrictions to adapt a certain class of games to look and play great on small screens.

Important note regarding games in-progress

Because of the way the compiler makes a build, every revision to this game code results in game files whose save games are incompatible with one another. I currently see no way around this, as internal memory locations often change between builds. So, if an update to one of these games is published, you will not be able to continue a game in-progress from a previous game build. Please recognize this is only with regard to these specific game files and is not true of the main Status Line engine. Updates to Status Line proper have no effect on your save games.

Regarding bug reports

Before submitting bug reports, be aware there are two categories of bugs

  1. Formatting bugs in which layout and UI/UX of the game doesn't work/fit on a small screen. This includes text boxes or titles that are cut off by the narrow screen.
  2. Game bugs, of which there are many. Each game's original repository has a long list of known issues, including strange responses to text, garbled text, and more.

Formatting bugs should be submitted to this repository.

Gameplay bugs should be submitted to each of the original repositories (and may actually have already been reported)

Examples of primary changes

There is an entire, interesting story behind getting this game to work. Here we see the "Boysenberry computer" being used mid-puzzle, as well as the start game "registration form" formatted nicely for a 32-character/21 line screen.

bur_PRINT_puzzle bur_registration_form

Only light adjustments were necessary, mostly to make sure the status line always shows all possible exits and that invisiclues don't get cut off.

nord_invisiclues nord_compressed_status_line

The easiest to adapt, mostly consisted of making sure quote boxes are centered and display entirely, but also took a moment to remove other artificial screen-width limitations. For example, Trinity credits are viewable by ask woman about trinity at the start of the game. I added pagination to make it work on the small screen.

trinity_credits trinity_quote

About as difficult as making Bureaucracy work, this one presented unique challenges with the "library mode," a fake file browser simulation that made grand assumptions about having a wide screen. I added the ability for the file list to paginate with a page counter to indicate where in the file list the user is looking. Lots of other quotations, signage, and the ink-blot test had to be adjusted as well.

amfv_blot_test amfv_library_mode

But why?

I am the author of Status Line, a z-machine interpreter written with/for the virtual console known as Pico-8. The initial v1.x releases of Status Line targetted only z3 games, and due to the small feature set were easy to adapt to the Pico-8's 128x128px (32x21 character) display. One player even called it "my favorite way to play text adventures."

As I expand Status Line's capabilities into z4 compatibility and beyond, I am forced to reckon with the harsh fact that some titles were hard-coded to require a minimum 40-character (or more) display. Granted, a z-machine interpreter can "lie" and claim it supports such a screen. However, while this will trick the game into starting and playing, it can render certain games "playable" with the huge caveat that important text may be drawn off-screen. For most players this makes the games challenging to play, and not in the fun way.

So, I decided to suck it up and do the hard work to make those games work well on a small screen, with specific emphasis on Status Line and its capabilities/limitations. I do sometimes (judiciously and while preserving authorial intent) reword/truncate a phrase or two here and there to fit the horizontal space of the small screen. This does not alter any wording of prose, and is mostly relegated to status line information, redundant to the main textual corpus.

The Plan

  • First, make it work in Status Line. This will allow me to identify the areas that need code adjustments for later work. So, to begin this will probably just mean swapping certain hard-coded layout values with numbers appropriate to the 32-character wide Pico-8 screen.
  • Next, refactor the hard-coded values out into variables and/or calculation routines.
  • Next, feed the refactored routines with dynamic values from the z-code header and verify the original experience is unaltered while providing smaller screens an equivalent play experience.
  • Last, propose changes to the upstream source repos to make the originals more generically flexible to a wide range of screens.

Build Notes

For those wanting to build from source, you will need the ZILF and ZAPF compiler tools. https://foss.heptapod.net/zilf/zilf/

I'm currently on ZILF v0.9.0 for Windows. Inside each game folder, I have a \build folder that is excluded in the .gitignore file. From the root folder for a game I run this composite command (AMFV shown; swap for the game you want to build)

del .\build\*.zap .\build\*.xzap .\build\amfv.z4 && zilf .\amfv.zil .\build\amfv.zap && zapf -ab .\build\amfv.zap > .\build\amfv_freq.xzap & del .\build\amfv_freq.zap && zapf .\build\amfv.zap

About

Classic text adventures, reformatted to look beautiful in Status Line on the Pico-8

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages