This week, something a little different, and as it turns out, challenging in a different sense than usual. I'm playing a TRS-80 Model I text adventure game of questionable provenance -- it announces itself as Lost Island on the title screen, written by Tom Johnstone and Mike Matthews:
Internally, in the BASIC code, the game calls itself LOST ON THE GREAT BARRIEIR [sic] REEF. This initial comment line is significant, because it led me to the source, AND the typo supports my hunch that the version floating around the Internet today was typed in from the game's print appearance in the August 1983 issue of 80 Microcomputing. As further substantiation, I believe whoever typed the surviving version introduced at least three significant errors in the process -- the game as I found it is actually unsolvable, but I've provided a critical fix in the spoilers section below. (I do not have access to the original magazine listing to confirm whether I've fixed this as the authors intended - I only confirmed the game's origins thanks to finding the relevant table of contents at Ira Goldklang's excellent TRS-80 site. My fixes are based on looking at the code and drawing what I believed to be reasonable conclusions about the intended functionality.)
Lost Island, befitting its 8-page magazine space allocation, is a short and simple island adventure. The player starts out aboard a motorboat with no fuel, and has only 100 turns before darkness, and a fatal crocodile attack, arrives. We have to reach the nearby island, obtain several artifacts, solve a couple of puzzles, and escape as quickly as possible.
Normally I recommend that interested readers go play the game at hand before reading further, but in this case I'm going to have to spoil a small aspect of the game for everyone, because it's otherwise impossible to finish. Finding and re-typing the entire original magazine listing would presumably spoil a great deal more, so consider this first section a...
**** REQUIRED SPOILER ****
The program as found online (my copy is from a disk image called BASIC1.DSK) contains a game-breaking error in the source code on line 2300. As it exists, this line reads:
2300 IF NN$="KEY" THEN PRINT "IT IS NOT POSSIBLE TO HOOK SUCH A THING": GOTO 270
I concluded that this should be changed to:
2300 IF NN$<>"KEY" THEN PRINT "IT IS NOT POSSIBLE TO HOOK SUCH A THING": GOTO 270
There are a couple of other bugs in the code that I believe to be transcription errors as well, but this is the only one that absolutely MUST be fixed to allow the game to be solved. I'll mention some others below.
If you want to visit the Lost Island on your own, make this patch and go forth and play now. Otherwise, feel free to continue with the...
**** GENUINE SPOILERS AHEAD! ****
I am inclined to (dis)credit the anonymous typist with a number of misspellings in the game --
SIMILER MEANING, SMITHERINES, YOU ARE CARRING TOO MUCH, and my favorite, the NAVEL MESS HALL.
And I must blame the authors for some more substantial issues here -- the game gives us 100 turns to finish, with a TIME command to see how we're doing. But the parser's vocabulary is very limited, and invalid commands that it doesn't understand still count against the turn limit, so parser battles can in fact be lethal over the long term. GO TRUCK, for example, yields HOW IS IT POSSIBLE TO ENTER SUCH A THING!, and we can't pick up the DEAD FISH by typing GET FISH, but must GET DEAD. If we try to DRIVE TRUCK we are told that IT IS NOT POSSIBLE TO DRINK THAT, so this kind of thing is an ongoing annoyance.
We can die within a few turns of starting the game by walking S or W from the cannon room, in which case we are blown to SMITHERINES as we try to exit if we have neglected to TURN CANNON - if we have done so, it blows up our formerly handy lifeboat. But there's no way around it -- we just have to find a replacement later on, keeping in mind that we can only get the rubber dingy with GET RUBBER, rather than GET DINGY.
This one I lay to the typist's charge -- the EXAMINE verb returns I CAN'T SEE THAT HERE whenever it lacks a specific response for the item under examination, but this is clearly a code typo where ESLE was entered instead of ELSE on line 1340.
The map is schematic, with no surprises and straightforward compass-point maneuvering. At one point, YOU ARE STANDING ON THE SOUTHWEST CORNER OF A TROPICAL ISLAND; I hadn't realized islands had corners, but it's an accurate description of the map.
There are a few in-game hints, though they aren't very useful and one is misleading. A sign at the edge of the swamp reads CARNIVORES DEVOUR MANY INTERESTING ITEMS!, which is only a hint that we can FEED CROCODILE, as there's no way to KILL or OPEN the beast. We can LISTEN SHELL after finding one on the beach to learn that THERE MAY BE MORE THAN ONE KEY TO SOLVING THIS ADVENTURE! -- this is true, as we need both a key and a hairpin to open a couple of locks -- but that's pretty standard adventure game practice. There's a truly useless clue on a beachfront sign, which reads TRY TO DIG UP AS MANY CLUES AS POSSIBLE! -- but we can DIG everywhere and find absolutely nothing, except in a few rooms where instead we are told THE GROUND HERE IS TOO HARD TO DIG IN.
The worst trap in the game is a tempting tree -- we can follow standard adventuring practice and CLIMB TREE, which causes us to lose a whopping 50 of our precious turns, as ARRGGHHH!! A COCONUT HAS JUST FALLEN ON MY HEAD AND KNOCKED ME OUT! We die immediately if we DRINK WATER from the river or try to KILL CROCODILE, and can also sink into quicksand.
There's an ABORIGINE in the game, but he or she serves no apparent purpose, although we can GET ABORIGINE and carry the poor person around. I am pleased to confirm that the game doesn't consider the local citizenry suitable as crocodile feed, so we are not made to be complicit in any variety of genocide.
The game has a six-item inventory limit, but it's not a major problem -- we can ignore many of the game's objects, and it's possible to get everything done without having to spend a single turn to DROP anything.
The toughest puzzle I ran into involved retrieving the key from the swamp; it stumped me for a while, but in the final analysis a bug was to blame. GET KEY tells us only that we can't reach it. We can bring and DROP PLANK to keep ourselves from sinking into the bog (as would otherwise happen within a few turns). Elsewhere we find a bit of line, and EXAMINE LINE reveals that IT HAS A HOOK ON THE END. This seems handy for the purpose and implies that HOOK works as a verb, but try as I might I could not HOOK KEY. What confused me further is that HOOK [any other object] returned I CAN'T SEE THAT HERE, while HOOK KEY returned IT IS NOT POSSIBLE TO HOOK SUCH A THING. Finally I gave up and took a look at the code, and discovered what I am quite certain is an error, fixed above. As typed, the game refused to acknowledge the KEY as the object of HOOK -- but if we get past that check, the next bit of code tests to see if we are in the room where the key originates and also have the LINE in inventory, and if so then it puts the key in inventory. So I concluded that the code was incorrectly entered, fixed the first test so that KEY would be accepted as the target of HOOK, and was able to finish the game.
Incidentally, this game uses a different and radically less efficient room/object model than the norm -- it maintains an array of strings for each location and for inventory, and actually moves string values around. That is, rather than having a persistent DEAD FISH object that maintains its own state, including its location, a "DEAD FISH" string gets removed from one array and entered into the first available slot in another one. The code spends a lot of time hunting through arrays and doing comparisons to see if a particular string is "in" the room or inventory, and the approach makes this BASIC adventure even slower than most. Array limits also mean that each room can only hold up to 10 items; if the player tries to drop an eleventh item in any location, the game is forced to claim that THIS ROOM IS PILED HIGH WITH JUNK AND I DON'T HAVE ANY ROOM TO PUT ANYTHING.
Another error that I presume is a typo -- we can't EXAMINE TRUCK in the location where the truck resides; we can only examine it when we're in the NAVEL MESS HALL, where the truck is not. I believe the related "LC=" location check was incorrectly typed.
We can OPEN TRUCK in the correct location if we have the hair pin, which we pursue by executing an OPEN DOOR in the crocodile room; UNLOCK DOOR is not recognized, but we can only OPEN the door if we have the key. An exit south becomes available after the door is open, leading us to the belly-button cafeteria -- sorry, NAVEL MESS HALL -- where EXAMINE CHAIR reveals a crack in the lug. BREAK LUG does not work, but BREAK CHAIR does, revealing the hair pin. Then we can OPEN TRUCK to reveal the FUEL CAN, and use the RUBBER DINGY to go back to the motorboat.
We don't have to actually use the fuel to make our escape -- we just DROP FUEL in the boat, and victory is presumed:
Lost Island, a.k.a. Lost on the Great Barrier Reef, ended up as an entertaining meta-adventure for me, as the version available online has bugs which were likely not in the published listing. This was actually a pleasant change of pace -- I had to do a fair amount of code-level exploration to get the game into solveable condition, which made up for the actual design's simplicity. Many of the in-game characters, creatures and items never actually come into play - the ABORIGINE, JELLY FISH, LEECH, SKULL and SEA URCHIN seem interesting but provie completely irrelevant - and there are really only a few puzzles to solve. So while this is far from a great game, and not even a very good one, I still had fun working through it.