An unpublished adventure written by Graham Nelson in July 1984, for the BBC Micro
Crystal Castle is a classic game of adventure and exploration. It has a total of 64 locations, covering the inside and outside of the Castle. The aim of the game is to collect all the crystals that have been strategically placed around the environment. (It should not be confused with the later, unrelated BBC Micro game "Crystal Castles"). Crystal Castle was written by Graham Nelson, with room design by Adrian Nelson, and additional material by Toby Nelson.
The title screen.
The start of the adventure. Exits left and right.
Four crystals in 'The Vat'.
I must have been just sixteen when I wrote Crystal Castle, having been let out of school to revise for O-levels. "Revision" consisted of about one per cent writing out a sheet of physics equations and ninety-nine per cent playing Deep Purple's Fireball album, which was seriously untrendy even then. What followed was a longish summer holiday before starting the sixth form. Adrian, my cousin, came over from Portsmouth to stay for a fortnight and I showed him the shell of a game, with basic mechanics sorted out but no map to speak of. We played a little tennis but otherwise the no doubt halcyon summer might as well have been a snowstorm. We were indoors. By day we level-designed in colour, scribbling on quadrille paper. The game's map table was fairly compressed but we reached the point where we could glance at a sketch of the layout and reel off the necessary hexadecimal bytes. Levels were made up of walls, conveyors, ladders, stairs and crumble bars (house slang for decomposing floor-pieces) and inhabited by monsters, our favourites being Shreves. "Shreve" is an archaic Scots form of the word "sheriff", apparently, but we knew it from the Rush album Hemispheres, where it turned up as one of the subtitles in "La Villa Strangiato", an instrumental number which even Rush owned was "an exercise in self-indulgence".
The whole thing was, really. Toby, my brother, would come home from school at the end of each afternoon, understandably piqued that as he hadn't been let out because of exams he was missing the fun. The arrangement was ideal, though, since he tested the day's work and threw in fresh bits. He animated the flower in the gardens, for instance. I use the word "animated" in its broadest possible sense. It flipped its petals up and down in a manic twitch, like a can-can girl with St Vitus' Dance. As time went by we became possessed, spending as much time playing the game as writing it.
By night, bewildered adults having returned to the house, we moved to the kitchen table and a black and white portable TV screen. Here it was, at two-thirty one morning, that a horrid bug turned up. Actual bugs were surprisingly few, since the mechanics were pretty simple, though erratic behaviour when you jump through the corner of a level meant that we tended to take the easy way out and put wall blocks artfully in the way. But this bug was a doozy. The adrenaline began to flow. Some parts of the program had source code, in 6502 assembly language, but large chunks were now simply assumed to work, and since we didn't have a disc drive there was no hope of reassembling the program. Every bug fix meant patching the machine code by hand. You had to remember the address of each routine, which wasn't easy with the dawn chorus shrieking in your ears.
We had dreams of riches, or maybe it was attention. The splattered by-lines tell their own tale. These days I'm a writer, but I doubt if I'll ever guard my copyright as jealously as then. I had sold an Acorn Atom version of the arcade game Frogger to A & F Software two years earlier, so I considered myself a pro, obviously. This time I wanted to sell to Program Power, then the top BBC Micro games firm, whose back-cover ads in magazines like Acorn User seemed the very pinnacle of fame. As it turned out, they did take something of an interest, and we exchanged a few letters. They rejected it for not having enough animation -- the four-colour graphics, two of them always black and white, didn't help -- but gave the impression that they'd sneakingly liked playing it. I don't think it was entirely a matter of being kind to a couple of kids.
Twenty-seven terms later, in idle moments of my Ph.D., I wrote a text adventure called Curses (1993), which became quite widely played by Internet people for a while. If that was my mature work (hmm...) then Crystal Castle was my juvenilia, and I can just about make out some seeds within it. The map graphic makes the Castle look like a shameless plagiarism of the definitive Sinclair Spectrum game Jet Set Willy, and so in several ways it was. But we never did look at it from anything other than close-up back then (which perhaps explains why the Balustrade pillars don't quite join at one of the screen boundaries). In fact it grew organically as we added one room at a time, fascinated with crevices and little-used annexes. The main rooms were dull: but the attics, the cellars, the climbable chimneys and the secret passages, leading out into garden maze... The eighteenth-century Gothic novel rewired as a 1980s computer game, by way of Enid Blyton's Famous Five books.
It's not a great game, but it has a certain compulsion. And writing it was something of a summer romance. (You're supposed to have these with other people, admittedly, rather than a BBC Micro.) Maybe it's only a postcard from our family album, but still... bet you can't get to the end of the garden and back.
Oh what a summer - I had just finished my A level exams - unfortunately I had spent too much time programming my BBC Micro and not enough time revising ;-) I seem to remember that among other items I had written the "ultimate" word search design program, a simple tape based book database system (for my endlessly growing range of science fiction books) and had been playing around with graphic and text compression algorithms - much more interesting to me than Maths or Physics.
Anyway, the weather was warm and sunny (this was 1984, and in those days we really did get good weather during the summer), and I had absolutely nothing to do while waiting for my exam results. So I hot-footed it up to Essex in my old Ford Escort to go and stay for two weeks with Graham and Toby.
A Jester's Hat
On the first day of my two week stay, almost as soon as I had brought my bags in from the car, Graham showed me this demo, it consisted of one (or maybe several?) screens showing off some of the capabilities of the "platform and ladders" engine he had put together. Anyway we talked for a bit and decided to go and play tennis. Several hours later, we came back, and as none of us were any good at playing tennis we decided to see what we could accomplish in the next two weeks, and see if we could complete the game, and maybe even sell it.
Well, we did complete the game, but it took some doing. One memorable event was indeed the early morning bug-hunt, my recollection was that it was found at just about the time we would decide to go to bed, and here a valuable lesson was learnt for the future, always keep a backup of your source code! Mind you, it was amazing to see Graham disassemble the machine code in his head and directly enter hex codes directly over the previous contents, rewriting subroutines on the fly. Time seemed to have no meaning, but suddenly real progress was being made, and dawn crept up on us about 4.30am, by 5.30am it was fixed and we could go off to bed, only to awaken at 10am to continue.
I must just mention frozen Mars bars - my aunt had this habit of hiding sweets in the freezer, but of course Graham and Toby knew all the hiding places. She was ahead of her time, frozen Mars bars were great!
A Snake's Head
I've been lucky with programming, what was once my hobby is now my job, and I could not imagine doing anything else. All the best programmers seem to share something in common ... passion and enthusiasm - where nothing is too much effort in the quest for that perfect/elegant piece of code to solve a problem. The easy way to spot the lifestyle programmer is to find out if they had a home computer and were not content to simply play games on it, but to tinker with it, writing code to see what would happen, what was possible.
I well remember the frustration of those long, dull school days. The moment the lunch bell rang I would sneak back home, and for a fleeting hour I could see how the Castle was progressing. Mostly I would 'play test' the latest version, trying out newly added map locations, looking for bugs, and generally making suggestions of widely variable degrees of helpfulness. I recall playing a new screen called The Old Stores Room for the first time, immediately finding it's secret exit on the very first attempt - much to the annoyance of my brother Graham and cousin Adrian who wanted to reveal this extra room to me after failing to discover it for myself.
Otherwise, my input would be to design some animated sprites (the candlestick was a favourite of mine, I think?). In my defence there's only so much you can do with two state animation, a handful of pixels and just four colours. The secret was not to try and design a specific object, but to put down a few pixels almost at random, see what it started to look like, then develop it from there. Often, the object you ended up with was completely different from the one you intended to design! As I recall, the room design for The Monster's Secret HQ came from an idea of mine too.
At the time it seemed clear to me that I was learning more at home just watching this game's development than I was in any Geography lesson. In retrospect, perhaps this is true. I certainly remember more of Crystal Castle now than the rainfall patterns of South America. More importantly it taught me something about the perseverance required to actually finish a project's development, and the strength in a good team. With Graham coding, Adrian designing rooms, and myself designing sprites all in parallel the game developed very quickly. Then again, I have to admit those O-Level certificates did come in handy too.
These days I'm a professional games programmer.
All development work was done within the BBC's limited memory space, then recorded and re-recorded using cheap, portable cassette recorders onto cheap, portable cassette tapes (before floppy disk drives were commonly available). Over the years, these tapes were thought lost, with only a partial copy of some of the room designs surviving.
Sixteen years later, in August 2000, two cassette tapes were rediscovered amongst a whole miscellaneous pile of equally old, and even older audio tapes. Half were music tapes, the other half computer tapes. Some dated from the days of the Acorn Atom! However, the ones that caught my eye were clearly labelled "Crystal Castle" on the inlay.
From these archive tapes, the shaky, but unmistakable tonal patterns of the (now antiquated) BBC micro cassette format were played back and recorded into a modern day PC. Could it be possible that every single binary bit of data from the original files would still be correct on these tapes, and could be correctly decoded? It seemed unlikely, and my initial tests seemed to confirm this unhappy thought. I downloaded a program that could read BBC tapes from the internet, and tried it. Practically every block of data was a 'bad block' and could not be read. All I managed to get were the filenames of the four files on the tape. I left it for a while, resigned.
About a week or two later, I came back to it, and tried the second tape. This time I had some success. Half of the blocks were readable. I managed to get the three short loading programs correctly but the all important main file called 'work' remained. I altered the tape reading program (fortunately it came with source code) to save out the correct blocks of data in their correct file positions, with bad blocks padded out with zero bytes. I cleaned up the tape signal in different ways with an audio editor, each time running the results through the program, getting a few more of the blocks correct. Eventually a few stubborn blocks still refused to work, so my last hope was to rerecord from the original tapes into my PC. The remaining blocks were successfully decoded. The recorded audio in all the different versions amounted to hundreds of megabytes, and yet the final decoded data was just over 20k long.
Even now I was sceptical. Could they really be correct? Would they still work? I had to find out! I downloaded a BBC Micro emulator from the internet, and scrambled for ages getting my raw files into the right format for the emulator. Eventually I got to the stage where I could type CHAIN"CRYSTAL" and hit return. This was the moment of truth. I was fully expecting the dreaded 'Bad Program' error message to appear, or for the screen to just go blank. But within a few seconds, the title screen appeared, large as life. The whole game worked perfectly first go. The locations and the moves all came flooding back in my memory. It was a delight to be the first to play the game for 15 years. Crystal Castle lives!
Download Crystal Castle (in SSD format).
Comments welcome - email me: firstname.lastname@example.org
Go to my Home Page