Tycho Magazine spoke to Mark Moxon, software archaeologist and reverse engineer, about his elite.bbcelite.com project to fully document the source for the game Elite.
Elite is a titan of the space simulation genre. It released in 1984 for the BBC Micro and Acorn Electron computers and ushered in a new era of realism and 3D games.
The source code is of particular interest to programmers as it does a lot in very little space.
Let's get straight to the easy questions. Is code art?
It can be, but it depends on your definition of "art". Not all code is art, that's for sure!
When pulling apart old code from the past, I'm always finding examples of what I consider to be art. And that's good enough for me.
You use the term "software archaeology" when describing your documented Elite code. It's a vivid phrase and mostly self explanatory but can you elaborate on it? What makes for good software archaeology?
For me, software archaeology is all about digging into old, undocumented code and trying to understand it and document it. Specifically, I tend to disassemble 8-bit games, taking the published game binaries and trying to prise them apart to reveal their secrets. It’s like archaeology, just with old code instead of old earth.
Why do it? Because I have questions I've always wanted to answer.
How did Elite fit an entire galaxy into 32K of RAM?
How did Revs simulate Silverstone with such astonishing accuracy, using only 8-bit assembly language?
How did Lander - the world's first ARM game - generate that amazing landscape?
Software archeology tries to answer these questions, but good software archaeology answers questions you didn't even know you wanted to ask. Just like traditional archaeology, you never know quite what you're going to find...
Why do you think programmers and software engineers keep coming back to the original Elite code in a way that they don't for other games, even the subsequent Elites? What is the magic of Elite?
I guess it's one of the first games that is really immersive (to use a more modern term). It's arguably the first open-world game, which is obviously part of the appeal, but for me it's the fact that it's so convincing when it comes to world-building. Despite the 3D wireframe graphics - or, perhaps, because of them - you really feel you are flying a spaceship around in the deep black of space.
The magic of the original Elite is that it's a genuinely immersive world, and all in a tiny micro from the 1980s; there’s no bloat, no padding, no mistakes, and it still plays beautifully today.
I love it; always have, always will.
And finally, I often thought some snippets of code belong on a gallery wall. If you had to pick some of the original Elite code to go in a museum, which are the parts you'd curate?
For me, it's the TT54 routine. (The original code was developed on an Acorn Atom, and the label names are astonishingly terse!)
The entire galaxy in Elite is procedurally generated from three 16-bit seeds, plus a “twisting" routine based on the Tribonnaci sequence. To generate data for 2048 systems across eight galaxies, we take an initial set of seeds, and twist them four times for each system, giving a new set of seeds from which we can extract all of that system's data.
TT54 is the twisting routine, and it's only 23 instructions long. So the entire Elite galaxy is generated from six seed bytes and just 23 instructions. TT54 takes up just 39 bytes. It’s small and it’s beautiful.
I'd definitely put that into a museum. It's the coding equivalent of "Let there be light!"…
Thanks for your time!
Visit the Elite on the 6502 website to see this valuable project.