Digging up Adventureland (Scott Adams, 1980)

TL;DR: My BBC BASIC port of Scott Adams’s classic TRS-80 text adventure game Adventureland, as published in SoftSide magazine in 1980, is now complete and available to download or to play in your web-browser: Play Adventureland

Page 36, issue 22, SoftSide magazine, July 1980

Previously, I resurrected the original* version of Scott Adams’s second text adventure game, Pirate Adventure, and I ported it from TRS-80 BASIC to BBC BASIC — mostly for the heck of it but also because my BBC BASIC port can be played in a web browser quite easily and the game is therefore more accessible now than it had been before I ported it.

So I thought I might as well go back to the game with which Adams’s career as a digital dungeonmaster began: the TRS-80 BASIC version of Adventureland. I assumed that because I’d already ported Pirate Adventure to the Beeb, porting Adventureland would be a walk in the park.

Instead, I unexpectedly found myself puzzling over what appeared to be a forty-year-old bug. (Spoiler: it wasn’t.)


Dotty matrix

But first I had to get the program-listing into digital form, ready for converting. Like its successor Pirate Adventure, Adventureland had been published as a type-in listing, in the July 1980 issue of SoftSide magazine in this case, five months before Pirate Adventure appeared in BYTE.

Now, typing listings in by hand was bad enough in the 1980s, but today the twin problems of ageing and impatience have made it all but insufferable. Anyway, in the 80s most people had no choice but to type in a listing manually if they wanted to play the game. Today, though, in the internet age, there had to be another way to get hold of a digital copy of the listing, right? Okay, so the scan of the magazine at Archive.org wasn’t good enough to yield an accurate OCR of the text, but surely someone, somewhere, had already found a way around the problem. Right..?

Well, if there was a digital copy of the SoftSide listing out there, I couldn’t find it. I mean, the source code for several ports and variants of Adventureland is floating around, sure enough, but it all seems to derive from a later version of Adventureland (which is widely available, in “.DAT” format), and not from the SoftSide listing — and it was the SoftSide listing that I was specifically interested in.

What I ended up having to do was configure MAME to emulate an 8-bit TRS-80 Model I Level II microcomputer, which isn’t a job for the fainthearted, especially if you’re trying to set up the emulation on a Mac. I then downloaded a copy of Scott Adams’s adventure interpreter on a TRS-80 disk-image: the disk-image had kindly been made available by the Data Driven Gamer, who had also supplied the game-data for Adventureland as a .WAV audio file — which took a full twenty minutes to load into the interpreter!

Once the TRS-80 was up and running in MAME, I set about hacking the BASIC interpreter program so that it would not only read in the Adventureland game-datafile but also print out all the data values (i.e. the lists of numbers and text-strings that make up the content and logic of the game). I hacked the program using only the line-editing facilities provided by the emulated TRS-80, none of which I’d ever encountered before, and all of which I intend never to encounter again if I can possibly help it. (Retrocomputing nostalgia can be extremely overrated.) The hacked program was able to print out the data values to a “virtual printer”, which was actually just a plain text file on my Mac.

I had finally managed to acquire a digital copy of the game-data for the original* BASIC version of Adventureland, without having had to spend hours painstakingly typing in the listing myself — I had just had to spend hours figuring out how to drive a TRS-80 in MAME instead. Which was at least a new variety of frustration.


Separation of concerns

Anyway, I massaged the data into a form that could be pasted into the “adventure builder” program from SoftSide, which, luckily, was the same program — and even the same version (1.3) — that had been used in Pirate Adventure, and I had already ported that! So I had saved myself yet more typing (and swearing).

The adventure-builder program reads the lists of numbers and messages in the game-data and spits out a datafile. The adventure-interpreter program will then load the datafile and turn it into a playable game. Here again I managed to save myself a lot of work: last time, when porting Pirate Adventure, I had stumbled over the subtle differences between TRS-80 BASIC and BBC BASIC, which had made the task of porting the interpreter a little torturous, but now, thanks to Scott Adams’s forethought and software-design prowess, I found that I didn’t have to type in or otherwise digitise the interpreter program for Adventureland at all — instead, I was simply able to use the later version of the interpreter, from Pirate Adventure, which I had already sweated over and converted! And it seemed to work fine with Adventureland. Huzzah!

Page 44, issue 22, SoftSide magazine, July 1980

I was on the home straight. I could see the finish line and I was charging ahead, full tilt. All I had to do was tidy up the BBC BASIC programs and package them up in a disc-image, and, hey presto, they’d be playable online. So I did. And they were. And then I found the bug.


The alleged bug

WARNING! Spoilers ahead.

Early on in the game, you come across an axe that has the magic word BUNYON on it. If you take the axe to the quicksand bog — which happens to contain a treasure, a statue of an OX — you’ll find that you can’t SWIM out of the bog unless you either drop the axe into the bog (where it’s of no use to you) or say BUNYON, which magically transports the axe to the grove.

In my BBC BASIC port of the game, which used the interpreter from Pirate Adventure, that was all that happened: only the axe was sent to the grove. The OX wasn’t affected by your use of the word BUNYON at all — it simply remained in the bog, and there was apparently no way to get it out! If you carried it, you couldn’t leave the bog because the OX was too heavy to swim with. The OX statue seemed to be stuck where you found it, never to be moved and never to be deposited in the treasury, which is where you have to put all the treasures in the game if you want to win. So the game seemed to be unwinnable.

But if, as appeared to be the case, the game couldn’t be completed with a full score, then how come no one seemed to have noticed the bug when the game was first published in SoftSide? Where are all the errata and the corrections? Was it simply that no one had bothered to type in the original listing? Surely not — we were gluttons for punishment in the 80s, as I’ve already said…

So, what on earth was going on? Hmm. Well, perhaps the reason that none of the avid players of SoftSide’s edition of Adventureland had reported the bug, back in the day, is that they had found an alternative route to success. Because, you see, the BUNYON/OX problem has a workaround.

But the workaround requires the use of another object, which is hidden deep in the underground maze, and you’d probably only find this object much later on in the game, after you’d been playing for a good old while. So it seemed unlikely that Scott Adams had intended the workaround to be the official solution to the puzzle of the OX in the bog. If he had, he wouldn’t have bothered setting up and clueing the BUNYON solution, especially when memory was at a premium in a TRS-80 with just 16 kilobytes of RAM! There wasn’t the space to waste on red herrings — or at least not on red herrings as perfunctory as this. If BUNYON wasn’t meant to be the solution to the OX puzzle, then there was no point in including BUNYON in the game at all!

My suspicion that the BUNYON-fail was a bug was soon strengthened when I came across a copy of the game that actually seemed to have had the bug fixed. On his website, the redoubtable Jimmy Maher provides a link to the savestate that he used when he played through the TRS-80 BASIC version of Adventureland for his Digital Antiquarian blog. So here was another copy of the TRS-80 BASIC version of Adventureland that I could compare and contrast with the SoftSide version I’d been grappling with.

The trouble was that Jimmy had created the savestate with an old piece of software called “MESS”, which is a long-dead ancestor of the MAME emulator, and Jimmy’s savestate was incompatible with the latest version of MAME, which, naturally enough, is what I had installed on my Mac. Aargh.

After a lot of false starts I eventually hit paydirt with a particular historical version of MESS for Windows (which I ran in a virtual machine on my Mac). That version of MESS did seem to be capable of loading Jimmy’s savestate — once I had fiddled around, configuring it to emulate a TRS-80 Model I Level II, of course. (Déjà vu, anyone?)

Wonder of wonders, the BUNYON/OX bug didn’t manifest in Jimmy’s copy of the game. Instead, BUNYON transported both the axe and the OX to the grove, as the creator had doubtless intended:

Bog-standard magic: no bugs in Jimmy Maher’s copy of Adventureland

At this point it would have been nice to inspect the data that Jimmy’s copy of the game was using so I could see how the putative bug had apparently been fixed. But, try as I might, I just couldn’t find a way to escape from the running BASIC program and inspect its variables, even after I’d worked out what the TRS-80 “Break” key mapped to on my Mac keyboard (Function + right-arrow, would you believe?) — because pressing Break just caused the emulated TRS-80 to hang. Nothing I did could then persuade it to respond to keyboard input!

I was at a dead end. I would just have to fix the so-called bug myself.


Fixing” the “bug(or vandalizing the game)

The game-data for Adventureland, as presented in the BASIC listing in SoftSide magazine, is just a comma-separated list of numbers, which doesn’t exactly trip off the tongue:

Light bedtime reading: the v4.2 game-data for Adventureland, as published in SoftSide

I could have tried to split the numbers (the “actions”) into groups of eight and to parse them all manually, with the help of Allan Moluf’s excellent guide to the Scott Adams database format (h/t pdxiv) — but even I’m not that much of a masochist! Instead, I turned to ScottKit, a very handy utility that can take the “raw” game-data and turn it into something that’s human-readable.

Of course, I first had to wrestle the game-data into a form that ScottKit could understand, which mainly involved padding the data out with a lot of empty strings and making sure that empty and non-empty strings alike had been properly enquoted. But in due course I found myself looking at the “decompiled” Adventureland game-data, and there did indeed seem to be a bug in it. (In fact, ScottKit refused to proceed with the decompilation until I’d forced it to ignore bugs by specifying the “-b” flag.):

ScottKit’s decompilation of the v4.2 Adventureland game-data from SoftSide magazine

When the player said BUNYON in the quicksand, what the game seemed to do was move an object (the wrong object!) to a non-existent room (room 47)! When I compared the decompiled SoftSide code with a decompilation of a widely available later version of Adventureland, the error seemed to become obvious.

So, surely, all I had to do was tweak the game-data and replace the embedded command-code 68 (“clear flag zero”) with command-code 60 (“clear the flag specified by the relevant parameter”), and suddenly everything would fall into place: when the player said BUNYON, flag 7 would be cleared and object 47 (the OX) would be moved to room 25 (the grove), just as Scott intended.

So that’s what I did. And everything seemed to be working. Problem solved!



I appeared to have fixed a forty-year-old bug in a Scott Adams game! Wow. I was about to start writing this blogpost to crow about it when I was suddenly seized by doubt: what if the bug wasn’t actually, well, you know, real..?! I mean, of course it was. It had to be. The bug was right there in my BBC BASIC port, and that port was using the original game-data, so surely that was all the proof that anyone needed..?

But, then again, there was the fact that I was using a later version of the interpreter to play the game, rather than the interpreter that was actually published together with the game-data in SoftSide. Hmm. Perhaps I’d better just check that I was, in fact, able to reproduce the bug. I would use Data Driven Gamer’s copy of the TRS-80 BASIC version of the game — that would provide independent verification that the bug was real. I was sure I’d already done this at the start of my tanglings with Adventureland, but it couldn’t hurt to quickly check again…

So I spun up the latest version of MAME again. I booted the emulated TRS-80 and waited twenty minutes for Data Driven Gamer’s tape-image to load. Then, painfully slowly,** I made my way to the bog with the axe, and said BUNYON.

The axe vanished… but so did the OX!

The game was working fine..!?


The bug wasn’t real.



After I had come to, I began to reason thus: Data Driven Gamer’s copy of Adventureland was reading the game-data that had been published in SoftSide. And it was using the interpreter from SoftSide too. And everything was working without error.

In contrast, my port of the game was using that same SoftSide game-data but feeding it into the later version of the interpreter, from Pirate Adventure. So there had to be a key difference between version 4.2 of the interpreter (for Adventureland) and version 4.6 of the interpreter (for Pirate Adventure), and that difference must have been the cause of the BUNYON/OX bug in my initial port of Adventureland.

I had rashly assumed that the v4.6 interpreter would be totally compatible with the v4.2 Adventureland game-data, and, when I came across the BUNYON/OX bug, I had foolishly amended the v4.2 game-data to bring it into compliance with the v4.6 interpreter, naively thinking there was a bug in the SoftSide listing. Instead, what I should have done was port the earlier version of the interpreter (v4.2) — you know, the one that had actually been written with Adventureland in mind! — and I should have used my port of v4.2 to interpret the original Adventureland game-data, as Scott Adams had obviously intended. To put it mildly: doh!

I had also allowed myself to be misled by the output of ScottKit’s decompilation of the SoftSide game-data, which seemed to suggest that there was indeed a bug in the game logic. The problem is that ScottKit has been designed to work with a later version of the Scott Adams game-data format — it’s not clear exactly which version, but this linked document suggests that versions of the data format (and hence of the interpreter) up to at least v8.5 may exist, so ScottKit may be expecting a much later iteration of the format than what I was giving it.

Okay. So I would clearly have to bite the bullet and start porting the v4.2 interpreter to BBC BASIC — a task I was hoping to avoid, given how painful it had been last time around. Fortunately, the design of the v4.2 interpreter program was similar enough to v.4.6, which I had already ported, that I found that my previous toil had made porting version 4.2 much less arduous. I completed the port in record time.

I then tested version 4.2 of the interpreter (as published in SoftSide), which I had now just ported to BBC BASIC, to see if it was working correctly with the v4.2 game-data (also as published in SoftSide). And it was! I permitted myself a relieved but tentative huzzah!

Then, just as a sanity-check, I combed through the BASIC sources for the two versions of the interpreter to see if I could pin down exactly where and how they differed. This proved to be surprisingly tricky. The two programs (v4.2 and v4.6) were similar enough in structure and functionality that they induced a sort of code-blindness in me, which made it hard to spot the difference.

In the end, though, the location (if not the detail) of the difference turned out to be somewhat obvious and unsurprising: whenever a specified flag had to be cleared, the Adventureland game-data would trigger some code in the v4.2 interpreter, and the code that was being triggered was effectively the “handler” for “command 68”, and what that handler did was simply redirect to the handler for command 60, and it was the handler for command 60 that finally did the work that needed doing.

The handler for command 68 in version 4.2 of the interpreter

In the later v4.6 interpreter, however, commands 68 and 60 performed two different functions — and the v4.2 Adventureland game-data was triggering the wrong one! Hence the OX never left the bog. Double-doh..!



What did we learn?

1. I was foolish to think I had found a bug in a well-known and seminal forty-year-old game — I should have just assumed that I had somehow messed up, which was always going to be more likely. I wasted so much time chasing phantom bugs!

2. Scott Adams seems to have added new features to his interpreter at short intervals, and sometimes in surprising ways. For example, I’m still not exactly sure why command 68 simply redirects to command 60 in v4.2. It’s almost as if command 68 was being used as a placeholder for new functionality that Adams wasn’t ready to implement yet..?

3. The differences between the various versions of the Scott Adams game interpreter (and hence of the game database format) aren’t fully documented. Even the generally excellent guide by Moluf doesn’t cover all the wrinkles, variations, and updates.

4. Scott Adams’s creation of an abstract adventure interpreter in the 1970s was highly ingenious and is still impressive today.

My BBC BASIC port of the version of Adventureland that was published in SoftSide magazine in 1980 is now complete and available to download or to play in your web-browser. A map and a solution are also available. See Github for links:


My BBC Micro port of version 4.2 of Adventureland by Scott Adams (running in Windows BeebEm under WineBottler (a WINE wrapper) on macOS Mojave)

* My use of the word “original” is extremely context-dependent (and probably wrong).

** Perhaps I’ve been spoilt by the relative speed of BBC BASIC, but I’m always struck by the sheer sluggishness of the TRS-80 BASIC version of Adventureland: even in the latest version of MAME it takes an age to respond to almost any command. Worse, in a historical version of MESS in a Windows VM — “double emulation”, as it were — not only is the game just as slow, but also the cooling-fan in my (admittedly ageing) MacBook Pro just spins faster and faster till it sounds like it’s about to explode.

Posted in Uncategorized | Tagged , , , , , , , | 5 Comments

Scott Adams’s type-in game Pirate Adventure (BYTE, 1980)

Does anyone know of a working, playable version of Scott Adams’s text adventure game Pirate Adventure as published in the December 1980 issue of BYTE magazine?

I couldn’t find one, which was a shame because I was trying to learn about Scott Adams’s adventure game interpreter and its associated database format, and I thought that going back to the source might be interesting.

Page 192, BYTE magazine, December 1980

The BASIC program-listing in BYTE was intended to be manually typed into a TRS-80 computer, but I’m not very adept at wrangling TRS-80s, so I decided instead to convert the listing to BBC BASIC for the BBC Micro, which is very much in my wheelhouse. A quick look through the program suggested that the conversion would be straightforward: TRS-80 BASIC seemed, at a glance, very similar to its British cousin.

I was nearly right. One significant difference between the two BASICs lies in their tolerance of FOR-loops that are unterminated. On the TRS-80 you can leave a FOR-loop dangling (i.e. you can omit the matching NEXT statement) — for example by simply RETURNing early from the subroutine the loop is in — and there won’t be any problems when you try to RUN the program, no matter how many times the loop is reinitialised. Not so with BBC BASIC, which is a stickler for terminating every FOR with an explicit NEXT, and will eventually complain about “Too many FORs” if a broken loop is kicked off once too often. The biggest headache in converting Pirate Adventure to BBC BASIC was caused by tracing and tracking down the exact locations of all those missing NEXTs. It was surprisingly fiddly. I think I’ve got them all now, but there’s always that nagging doubt…

Anyway, with the possible exception of the FOR/NEXT amendments, the rest of the program didn’t really need any major alterations to run on a BBC Micro, and the converted program is still recognisable as substantially the same listing that was published in BYTE all those years ago.

The original TRS-80 code and my BBC BASIC port both use an early version of Scott Adams’s adventure interpreter program — version 4.6 according to the published listing. My conversion is the only working version of a v4.6 Scott Adams game that I know of. There are seemingly plenty of later versions of Pirate Adventure out there, online, and you can recognise them because they include the SACK and CRACKERS objects which are missing from BYTE’s version of the game, and they all seem to use a later version of the interpreter. So I think my conversion might be the only working, playable version of the BYTE listing of Pirate Adventure. But please let me know if you’re aware of any others.

The BBC BASIC port of the game seems to be stable now, and it can be played through, from start to finish, without error. (I’ve kept all the original spelling mistakes, for authenticity.)

A link to play the game online, plus a full walkthrough/solution, is available on Github:


(Thanks to pdxiv for giving me a head-start by typing in and correcting the original TRS-80 BASIC interpreter program, version 4.6.)

Posted in Uncategorized | Tagged , , , , , , , | 3 Comments

LAND (1989) — a lost MUD recreated


I’ll admit it: I don’t know very much about MUDs. (Nor am I familiar with the various spinoffs — the MUCKs, MOOs and MUSHes — that proliferated in the early days of the Net.) Many years ago, I would occasionally peek over the shoulder of someone who was engaged in playing one of those new-fangled online multiplayer games, only to shake my head in bewilderment at the strangeness of what was essentially a bunch of people who’d never met in real life, chattering away on the internet by laboriously typing and sending messages to each other in plain text. It seemed boring and weird and I was convinced it would never catch on.

Today, of course, MUDs are practically ancient history, if you’re reckoning in tech years. They were the precursors to a multiplayer online gaming industry which is worth billions of dollars, but which has apparently left the world of pure text far behind.

So, it’s quite possible that I would never have had any reason to even think about MUDs again — if it hadn’t been for an improbable set of circumstances that brought them crashing into my orbit and into contact with what has become the mainstay of this irregular blog of mine: text adventure games on the 8-bit BBC Micro computer.

You see, a wide-eyed dreamer called Darren Higgs recently got it into his head that it might be a good idea to recreate one of the earliest MUDs as a single-player text adventure game on the BBC Micro — and he actually did it, too. It’s called LAND, and you can play it online right now:


The opening text of the BBC Micro port of LAND


LAND was originally a MUD that ran on the DEC mainframe computer at the University of Essex in the 1980s and 90s. The mainframe version of LAND was written by Darren Higgs (alias Toodleoo), Jonathan Cornell (Arnie), Bret(t) Giddings (Bret), and Richard Thombs (Zarf) — and it was Darren Higgs who, in 2020, ported the game to the BBC Micro.

Before LAND, the legendary Essex University mainframe had hosted the original MUD, known as MUD1, which was created by Roy Trubshaw and Richard Bartle in 1978. Professor Bartle, now a popular writer and speaker on gaming and virtual worlds, licensed MUD1 to Compuserve in 1987, which meant that the only MUD that was left running on the Essex mainframe was MIST, a “derivative” of MUD1 with “similar gameplay”.

It was around this time that Darren Higgs enrolled at Essex and, already a long-time fan of text adventuring on the BBC Micro, eventually found his way to the computer lab to see if he could have a go at this much-fabled MUD thingy that even the Beeb magazines couldn’t help talking about. Darren himself takes up the story on the Stardot forum:


The experience of playing MIST at Essex — and then of creating his own MUD on the same machine, using Trubshaw and Bartle’s MUDDL programming language — obviously had a lasting impact on Darren because, decades later, he decided to recreate LAND for the retro scene on what was presumably one of his favourite home computers, the venerable Beeb.

On the mainframe at Essex, LAND had featured over 200 rooms, lots of puzzles, and various “mobiles” or NPCs that players could fight in order to level up in their quest for the prized status of wizardhood. Also, like any MUD, LAND was, at heart, a multiplayer game — but the multiplayer feature would clearly have to be the first thing to ditch in the re-engineering of LAND if it was to run on a standalone 8-bit machine (or an emulator thereof) which boasted a whopping 32 kilobytes of user memory and a 2MHz processor.

But even if you accept that the multiplayer experience has to go, squeezing the game into the Beeb is still a lot to ask. But Darren had an answer. Working from his original maps and notes, he wrote some bespoke text-compression routines in BBC BASIC; developed a custom “adventure engine” — a hand-written program in assembly language, targeting 6502 machine-code; and made use of seven banks of Sideways RAM.

Sideways RAM (SWRAM) is an ingenious bit of vintage machine architecture — or, as Wikipedia more prosaically puts it, it was “Acorn’s bank-switching implementation” — and it allowed the humble Beeb to “page in” one of a number of different memory banks, each containing 16 kilobytes’ worth of RAM, as and when a program needed it — and to page it out again after use.

LAND requires seven banks of SWRAM to be available — expanding the memory in the Beeb to a mind-boggling 140K or thereabouts — and that’s a quantity that was never found in actual BBC Micros back in the day, but in our current era of powerful and ubiquitous computing, one thinks nothing of configuring an emulator with the requisite mnemonic heptad. Certainly, Matt Godbolt’s BBC Micro emulator in JavaScript, JSBeeb, can provide you with seven banks of SWRAM without even breaking sweat, and it allows you to play LAND in most browsers wherever and whenever you want:

Posted in Uncategorized | Tagged , , , , , , , , , | 2 Comments

The Inform 7 website is [no longer] down

For the last few days inform7.com has been unavailable. The site is the official host of the Inform 7 IDE.

UPDATE: I’ve been informed that the outage is due to an unexpected error that affected the CMS for the Inform 7 website and that work is underway to try to bring the site back online as soon as possible.


I tweeted Emily Short and the IFTF Foundation to ask if they knew about the outage, and I got these replies:

I assume that the outage is due to Graham Nelson preparing the site for the upcoming changes to Inform that he announced at the recent NarraScope conference, but as far as I’m aware there hasn’t been any official warning about the outage, nor a full explanation of the reason for it, beyond the tweets I’ve quoted above.

The upshot is that if you want to download and use the current version of Inform 7 right now, you can’t. Which seems a bit of a shame.

Posted in Uncategorized | 3 Comments

One Room (1983) — the first one-room game?

One Room is a text adventure game written by Jorge Mir for the TRS-80 Color Computer. It was published as a program-listing in the first Rainbow Book of Adventures in 1983.

One Room is set in a single room (duh), in which the player-character is trapped. The object of the game is to escape from the room. One Room is therefore a contender for the title of First Ever Room-Escape Game. (Or maybe not.) It might even be the first text adventure game to be set in a single room. (But possibly not.)*

Although the published program-listing contains several bugs — which are documented at the Gaming After 40 blog (for which I’m extremely thankful) — the game is nevertheless intriguing and full of quirky ideas. It’s constructed around an innovative plot device. It comes with a built-in HELP system. It includes a surprising miscellany of objects that you can manipulate. And it’s of historical interest not only because it might be the first game of its kind but also because of the way that certain objects in the game tie in to the Tandy / Radio Shack retail empire as it was in the 1980s.

• You can play One Room online in your browser at bbcmicro.co.uk: I’ve ported the original program to BBC BASIC and fixed a few bugs to boot. (More details about the port can be found at the Stardot forum.)

• One Room also has entries at CASA (solutionarchive.com) and at the Interactive Fiction Database.

• My YouTube video features a quick playthrough of the first part of the game.

• A disk-image of the original TRS-80 version of the game is also available. It can be played in JS Mocha, the online TRS-80 CoCo emulator.

* There are people who argue that One Room isn’t actually a one-room game. Those people are wrong. Nevertheless, in the manner of the BBC (clinging white-knuckled to the dogma of “balance” while giving airtime to people whose opinions would make even Sauron blanch†), I’ve decided to entertain the dissenters. Their argument seems to be that if the source code of One Room implements six distinct “locations” then it shouldn’t really be considered a one-room game at all. But what they fail to appreciate is that describing One Room as a single-room game and as a game that implements multiple locations isn’t a contradiction. A game can be both of those things at the same time. Note that in One Room you can stand in one “location” while you pick up an object in another location — which isn’t exactly normal for a game that’s not about Elastigirl. Clearly, the “locations” in One Room aren’t so much separate places as different parts of the same place, and that’s how they’re described to the player: “I am facing the north wall” or “I am looking at the floor” for example. Plus, there’s the almost too-obvious-to-mention fact that the program is referred to as a one-room game several times in the Rainbow Book of Adventures itself, including in the actual source code. What more do you need, for crying out loud? I mean, the game’s literally called One Room! If you’re going to reclassify it as No Longer A Single-Room Game, then you’ll have to check all 189 games tagged “single room” on IFDB too. And make sure you triage every entry in the L’avventura è l’avventura (One Room Game Competition) as well…

†  I was trying to exaggerate for comic effect. (Yes, the best jokes are the ones that need explanatory footnotes.)

Posted in Uncategorized | Tagged , , , , , , , , , | Leave a comment

Maze of Madness (2018) — a torment


Maze of Madness is a modern game for an ancient computer (namely the 8-bit BBC Micro, which this blog seems to endlessly bang on about).

Well, I say “game”, but it’s more of a demo – a demo of a rather cruel puzzle. But it is actually solvable, if you spot the trick.


Mathbrush, the Official Unofficial Historian of IF, said that he’d never come across any other game that uses the gimmick that’s used in MoM. Whether that’s a good thing or a bad thing is not for me to say. Because unfortunately I’m the author.

You can play the game online.

More details about the game can be found at Stardot, at CASA, and at IFDB.


Posted in Uncategorized | Tagged , , , , , , , , , , | Leave a comment

Xanadu Adventure (1982) — shop till you drop

Xanadu Adventure is a text adventure game that was written for the BBC Micro by Paul Shave in 1982. Typically for the time, Shave was strongly influenced by Crowther and Woods’s Colossal Cave, and Xanadu therefore featured the requisite stream, grating, and forest-maze… But there was little chance that any jaded adventurers would be bored by these all-too-familiar surroundings because before they could start exploring the game they were forced to go shopping.

The game opens with a list of miscellaneous items including weapons, torches, food, and, um, postcards. And each item is given a price. You’re then told that you have “125 shillings to spend”, and it’s up to you to decide exactly how to spend it — although initially you have no idea which of the items are going to be of any use.

The adventure shop and the player’s limited spending power were just a couple of ways in which Xanadu Adventure distinguished itself from the average ADVENT clone. Another was that it had a two-player mode. This didn’t involve the use of RS-423 cables or multiple BBC Micros as in Graham Nelson’s Escape From Solaris, which I wrote about previously. Xanadu‘s two-player mode required players to make a fixed number of moves, alternately, on the same computer. Players could ally and combine their weapon-count to fight monsters, or they could turn around and beat the hell out of each other instead. (The latter was the more popular choice with the playtesters of the game, who happened to be the author’s sons.)

But Paul Shave had more tricks up his sleeve. He decided to introduce randomness into Xanadu and, in the process, created what might well be the first CRPG on the BBC Micro. This, I now realise, is a wonderful thing. But it caused me no end of stress when I first started playing the game. Perhaps a list of some of the key features of Xanadu Adventure will help to explain why:

  • Random object-placement! Many of the objects in the game, including some of the treasures you have to collect, are placed in random locations when you start a new game. One of the most important objects is the spare cash, which in some new games doesn’t seem to be anywhere at all (though it actually is)! The problem of having to slog around the map because of random treasure-placement is compounded by…
  • Random dwarves and dragons! They pop up when you least expect it, and you have to kill them (the dragons, at least) to move forward. And sometimes when you kill a dragon, you experience…
  • Random sword-breakage! After fighting a dragon, your sword may (or may not) get broken, so you have to trek all the way back to the blacksmith to get it re-forged. And all this trekking about, finding treasures and/or repairing swords, is particularly bothersome because of…
  • Limited light! The batteries in your torch eventually run out, so you need to go back to the shop, which is right at the beginning of the game, in order to buy some more — and no, you can’t buy them at the start of a new game because there’s a…
  • Limited inventory! There’s only a certain number of objects you can carry at one time. You can buy a bag to increase the inventory limit, but then you run into the problem of there being…
  • Limited cash! You get 125 shillings at the start of the game, most of which you have to spend straight away on weaponry and light. There is some extra cash you might come across later, but you can never be sure where or when that will be because of…
  • Random object-placement! (REPEAT UNTIL FALSE…)

If for some reason you want a deeper understanding of how Xanadu Adventure can not only amaze and impress but also drive a player to the brink of despair, then see my walkthrough video, above.

I have to admit that it might be slightly unfair of me to harp on about the relentless, exhausting unpredictability of Xanadu — because the randomness did actually lead to some interesting emergent behaviour, which I was able to exploit to make my adventuring a little easier: see the “To Catch A Dragon” section of the video, for example, which surprised even the original author.

See also the entry for Xanadu at CASA (solutionarchive.com), which links to my written walkthrough (which I now know to be flawed — because Xanadu).

There are further details about the game at Stardot.

And you can play Xanadu Adventure online at bbcmicro.co.uk.

Posted in Uncategorized | Tagged , , , , , , , , , | Leave a comment

Escape From Solaris (1984) by Graham Nelson

Previously I wrote about The Discovery, which is the first of two works of interactive fiction (known together as Galaxy’s Edge) that were written for the 8-bit BBC Micro in 1984 by Graham Nelson.

The Discovery is, more or less, a conventional single-player text adventure game. But the second game, Escape From Solaris, is for two players. It can be played either in split-screen mode on a single BBC Micro, with players taking alternate turns at the keyboard, or, unusually, on two BBC Micros connected together with a serial communications cable (RS-423).

This early form of “networked gaming” was an innovation. In fact, Escape From Solaris is the only Beeb game I know of that works in quite this way. (I did manage to find a BBC Micro version of Battleships that also used RS-423 comms between two Beebs, but Solaris is probably the only text adventure to do so.)

I’d been wanting to try to get the game running on two machines for quite a while, and last year I finally got around to it (after taking ages to realise that the way the comms lead had to be wired up was actually rather obvious). See the YouTube video above. Thanks to Lee for letting me borrow his setup and for helping me demo the game.

If you want to try Escape From Solaris yourself, you can play the game in an emulator in your browser, but only in split-screen mode in a single window (because networked Beebs are not included):

Play Escape From Solaris online

Posted in Uncategorized | Tagged , , , , , , , , , | 4 Comments

Skill, Stamina and Luck


In February 2016, the BBC broadcast a radio documentary about interactive fiction called Skill, Stamina and Luck. It focused largely on gamebooks like Fighting Fantasy, Choose Your Own Adventure, and some interesting historical examples — but it also took in parser fiction (text adventure games) and Twine.

To accompany the programme, the BBC created an interesting “interactive audio history of interactive fiction” in the form of a Twine web app, which included a simulation of a play-by-telephone adaptation of a Fighting Fantasy book and many audio clips of interviews, some new and some from the archive, with people like Steve Jackson, Ian Livingstone, Andrea Phillips and Emily Short.

(The Twine also included the audio from this episode of Micro Live, in which the BBC visited the offices of Infocom.)

The Twine app had been taken down from the BBC website, but it’s now been made available again by Steve Alderton, Content Producer for the BBC Taster pilots.

Try it here: http://www.bbc.co.uk/taster/projects/skill-stamina-and-luck

Posted in Uncategorized | Tagged , , , , , , | Leave a comment

Galaxy’s Edge (1984) by Graham Nelson

[UPDATE: You can now play Galaxy’s Edge online.]

Galaxy’s Edge is a two-part text adventure game created in 1984 for the 8-bit BBC Micro computer by Graham Nelson. I believe it was this Graham Nelson, the creator of the interactive-fiction programming language Inform – at least, people seem to think it was him. [UPDATE: It definitely was.]

Loading screen

Loading screen for Galaxy’s Edge, part 1

Part 1 of Galaxy’s Edge is a conventional but well constructed adventure in which you roam the stars in the Scout Ship Orion and unravel an intergalactic mystery.

GE opening

Screenshot of the beginning of The Discovery, the first part of Galaxy’s Edge

The second part, Escape From Solaris, is an ingenious two-player game which was designed to be run either on a single machine, in split-screen mode, or on two separate BBC Micros connected together by a special cable (the wiring diagram for which now seems to be lost, together with all other original documentation).

GE duo

Screenshot of Escape From Solaris, the second part of Galaxy’s Edge

I don’t think Galaxy’s Edge was available to play or download anywhere till now. I recently grabbed a rare copy of the cassette tape that came up on eBay, and I converted the contents so that the game could be played in a BBC Micro emulator like BeebEm.


My copy of the Galaxy’s Edge cassette tape

Here’s a link to a BBC Micro disk image containing a transfer of my copy of the game.

I don’t know enough about the author’s oeuvre to be able to draw out any clever thematic connections between this early work and his subsequent legendary output. (Assuming I’ve got the right Graham Nelson, that is – I’m still not absolutely sure that I have. If you can confirm or deny the attribution, then please let me know. [UPDATE: Confirmed.])


A 1984 magazine review of Galaxy’s Edge

I’ve played the first part of Galaxy’s Edge – the single-player game The Discovery – and I’ve managed to get promoted, but I know that’s not the best possible result. Can you do better..?

Screenshot of The Discovery, the first part of Galaxy's Edge,

Screenshot of The Discovery, the first part of Galaxy’s Edge

Here’s the entry for Galaxy’s Edge at CASA, the Classic Adventure Solutions Archive: http://solutionarchive.com/game/id%2C6142/Discovery.html

And here’s another game for the BBC Micro that might possibly have been written by the same Graham Nelson: http://www.tnelson.demon.co.uk/cc/

Posted in Uncategorized | Tagged , , , , , , , , , | 7 Comments