Wednesday 27 December 2023

The High Mountains by Paul Braithwaite (1984)

This is a unique multi-player text adventure game loosely based on John Christopher's Tripods trilogy. It allows players to take the roles of the human resistance or the alien masters and their tripods. Originally published as a type-in game for the ZX Spectrum in the British magazine Personal Computer News #79, my version is a port to the TRS-80 MC-10 using Micro Color BASIC from source for the Dick Smith VZ-200.

I remember there being lots of bugs in the code from the VZ. Some of these are outlined by Chickenman in his handy map and walkthrough which can be found on the Solution Archive.  He apparently ported the code from the original Sinclair version, so the bugs might be endemic rather than just in the VZ conversion that I worked from.

I'm posting about this game now despite the fact that I ported it many years ago because I recently revisited the code because Greg Dionne sent me a bunch of printouts from his BASIC compiler and his attempts to compile various of my programs. Most of these reports consisted of missing line numbers for GOTO and GOSUB statements (or THENs). Others regarded variables that are never declared or declared but never used.  Most of these latter problems are not catastrophic. They just represent some wasted memory. But sometimes a mistyped variable can affect the operation of the game. I don't think I have found any of that type yet in any of the games I've looked at but I'm working through the list to see if I can find any.  And I'm also getting ride of redundant variables in games that I know are near the max of memory so I can reduce any possibilities of Out-of-Memory (OM) errors.  

The latter was the case with "The High Mountains." I knew that this was a big program, so when Greg's compiler reported an unused Array, I went to weed it out. When I was looking at the code I realized that there were still many memory saving tricks that I hadn't applied. For example, replacing all ,0, references in DATA statements with ,, references since MS BASIC will just assume a 0 for such instances of double commas. I took the quote marks off all text DATA statement except for sentences with commas in them, since commas are used by DATA commands to separate items. I got rid of any <>0 references in IF statements, since all non-zero variable values are treated as true. I also updated my standard word-wrap routine with a shorter version that I had developed since making my port of MOUNTAIN.  

When I was finished I realized that I had freed up quite a bit of space. In fact I had enough space to add a title screen.  So I tried to recreate the Tripod rampaging image of the original Sinclair version (see the pic at the top of this post). I think it came out pretty well.

Another reason I am writing about this game is that in replaying it I remembered a few more bugs from my conversion process that were not mentioned in Chickenman's walkthrough. The biggest bug involved the command "RIDE" that one could use to travel on various objects in the game. Chickenman mentions fixing the BOAT routine to make it work properly, but he mentions "GET IN" rather than RIDE as the command for using it.  I remembered that I had fixed a number of transport items so their ride function worked. In addition to the BOAT there is a CAR and a HORSE and a TRAIN, all of which you can ride in a particular direction.  You just type RIDE TRAIN SOUTH or RIDE CAR WEST and you will go as far as possible in that direction until you hit a barrier to normal in game movement in that direction. You don't see any of the intervening spaces, so there might be advantages to avoiding use of this feature while exploring. But this feature is great for getting around fast in the game. The Masters and Tripods are not able to use this method, so perhaps in a real game the human characters were intended to use these objects to help them make quick getaways.  The map seems specifically designed to limit the pathways for these items to specific L and U-shaped circuits.

Another missing aspect from Chickman's walkthrough involved the final puzzle.  In my version of the game the player must use the BAG item, which can be found in Wichester village where the character Henry starts.  That item is needed to help with the transfer of the HYDROGEN to the BALLOON in the cave.  In my version there are 3 and 4 word commands for doing this like FILL BALLOON WITH HYDROGEN. I wonder if Chickenman took some of this complexity out, because he mentions a two step process of first issuing the command FILL BALLOON and then responding to a prompt for "WITH WHAT?"  I don't think I added these features and I'm pretty sure the bag is in there from the original.  

He also mentions another fix I that also found, which is that the random movement of NPCs could have them wander right off the map grid.  If you were playing the bad guys you might not actually be able to win because characters you need to kill would disappear forever.  He also mentions not having to engage in any combat. This is definitely a part of my port's operation, but I remember there being some weirdness with this routine as well and possibly I added some fixes to get combat to operate properly.  I can't remember exactly.  Maybe I'll get my son Charlie to exercise some Github skills to help me track back through the changes.

Anyway, I thought I should document some of these aspects of my porting recollections in case anyone is interested. It is a pretty unique game. I can't think of any other multiplayer text adventures from the early 8-bit era that I am aware of.  I'd love to actually see two players try to play this game against each other.  My son Charlie wasn't willing, and I knew the game too well from inside the code for any such match-up to have been fair.  Maybe some day someone, perhaps Renga in Blue (Jason Dyer) will do this.

While I'm documenting my recent programming efforts, I'll also note another text adventure that I fixed up in terms of memory use and title screen and obscure actions involving improper GOTO statement, references. The Treasure of Elgon Adventure is another neat text adventure.  It has a Grue in it, which if I recall correctly will disappear back into a wall if handled correctly.  Very Creepy.

And I made a few fixes to Jason "Night of the Vampire Bunnies" and Greg Hassett's "Sorcerer's Castle" and "Journey to the Center of the Earth." Some of these fixes involve very obscure in game commands, which would have errored under rare circumstances because of messed up GOTO references.  I also updated the standard word-wrap and reverse subroutines in these old ports and added new title screens:

Night of the Vampire Bunnies:


Journey to the Center of the Earth


The Sorcerer's Castle

Hassett's "Sorcerer's Castle"