James Randall Musings on software development, business and technology.
Thrust

You can play the game online.

Honestly this is one of those projects that I’m not quite sure where it came from. Thrust was one of my favourite games on the BBC Micro written by Jeremy Smith and published in 1986, it’s a deceptively deep game with amazing physics and gameplay. Jeremy went on to create the even more impressive Exile with Peter Irvin before tragically dying in an accident in 1992. You can play the original online.

I guess I’d been thinking about it as one morning recently I somewhat casually asked Claude Code to create Thrust for me in the browser. I put together quite a comprehensive spec but it created something for which the term slop would be too kind. It’s amazing that it created something that sort of worked and semi-looked like Thrust but it was truly dreadful and it hadn’t even got gravity working right.

Then I got curious as to how the original worked, I find the tricks the developers used to make this stuff work on the 8-bits fascinating, and it became a bit of an archaeology session. I quickly found this brilliant commented disassembly of the original source by Kieran Connell and found myself feeding the source into Claude (online) and asking it questions.

While doing this I realised that I could use the answers as the basis to recreate the original game and started to ask Claude to create specifications for me for the various subsystems. Most of the specifications I generated can be found in a specs folder in the source code. I might write them up properly at some point but for now they give a good insight into the nuances in the original game, there’s quite a lot going on - more than I’d realised. For example I’d never realised that the turrets stop firing for a time if you hit the generator and there are subtleties in their firing angles.

In any case I started to feed these into Claude Code, do some manual coding, fixing, poking and prodding and the result is what you can play and see here. My version has a slightly larger viewport - the original has a slight border round it. It would be easy enough to replicate it and I might make it a toggle option at some point.

The hardest bit to get right was the sound effects - when I did my TypeScript version of Elite I sampled the sounds. That worked as they are quite discrete. But I wanted to take a different approach here and instead recreated the sound chip and MOS (the BBCs operating system) interface to the sound chip. With that I could play the exact same sounds. A big help in that was the disassembled MOS code that Toby Nelson has put together.

As for the font, graphics and levels I was able to extract those from the disassembled source relatively easily and you can find a couple of tools in the source code that do that.

And to round things off I added a few CRT effects, nothing difficult here: I just pulled them from my Elite conversion and added a new black and white filter.

Its open source and you can grab the source code here.

Built by James Randall — tool-maker, system builder, and occasional cyclist. Walking the hills with my four-legged friend when I'm not building worlds.
© 2025