An update to AGiliTy, a portable AGT interpreter

About twenty years ago Robert Masenten released a portable interpreter for AGT games, called AGiliTy. I wrote a Windows port of it, but hadn’t done much else with it since then. But some bug reports from @Angstsmurf, combined with a wish to play a few AGT games (notably Shades of Gray and The Multi-dimensional Thief) caused me to go back to this.

I have added a way to have the random number generator be entirely reproducible on all systems, and used that to generate play-throughs for Shades of Gray and The Multi-dimensional Thief, fixing bugs as I found them. As Robert hasn’t been heard of for years, I’ve called my version 1.1.2 (Robert’s last release was 1.1.1).

You can get it from the IF-Archive or from my version’s GitHub page.

Full list of changes:

  • Added a STABLE_RANDOM configuration option. When enabled, the interpreter will use a fixed algorithm to generate random numbers, allowing log files to be created that will work on any system.
  • In the “tests” directory there are now log files that play through The Multi-dimensional Thief and Shades of Gray to completion. The intention is to add further log files for other games in time, as tests of the interpreter. Note that the above STABLE_RANDOM configuration option must be turned on to use these log files.
  • Substitutions generated by the interpreter’s main loop are handled correctly. For example, dying in Shades of Gray no longer results in a “$You$ have died” message.
  • Metacommands overriding two-word synonyms built into the interpreter (such as GET OUT, which is a synonym for OUT) are handled.
  • The ability of metacommands to use expansions like $noun$ has been enabled for the AGT 1.5 variants.
  • The logic to set up roomflags when reading from DA1 files was not quite right. This has been fixed, and has been enabled for the AGT 1.5 variants. As a result, The Multi-dimensional Thief is finishable. Note that if you have a version of a game affected by this change as an AGX file, you will need to re-generate the AGX file from the original AGT data files.
  • The version of AGT used by Shades of Gray can override SCREAM in a dummy verb.
  • The order in which dummy verbs are scanned when parsing now better matches the order used in the original AGT interpreters.
  • Smart disambiguation is on by default for AGT 1.5 and later.
  • For pre-Magx games, GetNumberInput always returns a number in the range of a 16-bit signed integer, that is, between -32768 and 32767.

Thank you! I use AGiliTy only as part of Gargoyle. I hope they incorporate your changes soon.

1 Like

This is brilliant. Thank you. You should promote the fact that it now includes the Agt2Agx.exe utility. This allows me to convert old AGT games to AGiliTy, so I no longer need to use DOSBox.

For what it’s worth, the first game I tried to convert was ‘The World’s Hardest Adventure’ by A Fielding. The conversion appears to have gone smoothly, but the intro and title screens were all screwed up. This was easily fixed by changing the screen width to 80 characters (which I think is the default) and changing to a monospaced font. I used Consolas and it looks brilliant.

Thanks again.


there’s a major bug in the Linux version:

the status line isn’t updated !
remain stuck with the starting room’s name, score zero and moves zero.
(tested with a pair of magx experiments I have here)

The issue is only if compiled with curses, with termcap the status line is updated correctly every move, so the bug should be in os_curses.c
I’m currently looking in it…

UPDATE: I can’t find what can be wrong…

Best regards from Italy,
dott. Piergiorgio.

1 Like