There’s rather more nostalgia in this post than I’d want to deal with. If you want to just play the game, go here here and skip this blurb.
Update: the Java emulator doesn’t work in the browser any more, so here’s Arnold playing the BASIC version: http://scruss.com/cpc/6128s.html?stardoj.dsk/run%22stardoj2
About 25 years ago, I was a smallish computer nerd obsessed with programming his Amstrad CPC464. I had got a BCPL rom-based compiler for cheap and was looking for things to do with it. “Why not write a game?” I asked myself.
There were two minor hurdles. I had no imagination, and I certainly wasn’t focused enough to write anything big. Fortunately, it was still the 80s, so we knew how to rip stuff off without being called out for it. I merrily copied a game my friend Alan Cook had written for the Dragon 32, and called it 2D Star Dodge.
2D Star Dodge was the perfect rip off. Not merely had I ripped off the idea from Alan, but he had ripped off the idea in turn from a BBC Basic one-liner game called (as verified by Graeme Smith) “One Line” Asterisk Tracker. The name 2D Star Dodge was an, um, homage to Realtime Games’ 3D Starstrike, which itself was “strongly influenced” by the Star Wars arcade game. Originality? Pfft.
So I wrote the game. Well, okay, I wrote a mockup in Locomotive BASIC, which ran a bit slowly, but gave me something to work from. Here it is, if you want to play it in you (Java-enabled) browser: 2D Star Dodge – BASIC. I then meticulously translated it into BCPL, and ended up with something that looked liked this:
(if you click on that image, you can play the BCPL version in your browser.)
Â
The gameplay — press a key to go up, stop pressing a key to go down — is a bit like SFCave (obligatory Java version: Lab6 SFCave) or even my current favourite Tiny Wings.
Once I’d finished the BCPL version, I had bought the MAXAM assembler ROM, and got learning the Z80 opcodes. Soon, a third port was complete, now needing hardcoded delays to be playable as it would kill you off in about one screen refresh without them.
So, now I had three versions of the same game. There was only a limited number of local folks I could give it to, so I decided to send all three versions to Amstrad Computer User magazine to print as a type-in. Thankfully, it arrived on the desk of the freshly minted (yet still beardy) assistant editor Jeff Walker, who had founded the jam econo CPC magazine/club WACCI. Jeff had the idea for me to turn the simple game into a comparison of programming in three languages.
Thanks to the CPCWiki forum, you can now read the articles I wrote in Amstrad Computer User in 1988 that went with the code. Writing style best described as “typing”:
- Amstrad Computer User 1988/09 – Star Dodger 1 – BASIC
- Amstrad Computer User 1988/10 – Star Dodger 2 – BCPL
- Amstrad Computer User 1988/11 – Star Dodger 3 – Assembler
To play the game in an astonishing JavaScript emulator:
- Download this disc image file: stardoj
- Unzip it
- Go to CPCBox
- “Choose configuration …” of Boot CPC464 (or 664, or 6128)
- Select your downloaded stardoj.dsk as Drive A:
- Annoyingly, it seems to be stuck with an AZERTY keymap, so to catalogue the disc (
cat
) you have to typecqt
- To run the BASIC version, type
run"stardoj2
(on my American keyboard, that becomesrun@stqrdoj2
; quotes are Shift+2). Hitting Escape twice will quit back to the prompt. - To run the BCPL version, type
run"2dstardo
. The only way to quit is to reset the emulator.
The BASIC version is based on the published type-in. The BCPL version I found as a disk image (2dstardo.dsk) on a download site — it’s exactly as I submitted it to the magazine, dubious copyright message and all. I’m not sure how it got out there; I suspect either my network of, ahem, software protection experts I knew through Colin Harris of Nemesis, or it went via my CPC-owning French penpal (Hi Benoit Hébert, formerly of Le Havre).
I had to modify the BCPL binary to run on modern emulators, as the real Amstrad CPC did a thing with its keymapping that is really hard to get right on modern systems. Originally, the game used the Shift key, but I modified it to use Space, which is easier to emulate as it’s a printing character. Can I just say that I remembered how to read and modify Z80 binaries after a quarter century? Old school, literally. I used iDsk‘s disassembler/hex dumper and emacs’s hexl mode to do the deed.
I recently discovered that someone created a Flash game based on my type-in: Star Dodger. Mind = Blown.
Update, 2018: Lawks! Someone wrote a PureScript version! It doesn’t exactly work for me on Firefox, but it does on Chromium.
This is awesome!!!
Me and my wife used to play this to death years ago and i did manage to snag a rom of this about 10 years ago but the Amstrad site that it was hosted on eventually died a death(along with my PC).
The only thing i notice that this is missing is that i’m pretty sure the original used to have an option to go fast or slow?
Anyway, regardless, this is awesome and should be updated for android 🙂
Thanks for the good times
I didn’t write it with a fast/slow option, but that’s not to say that someone else didn’t modify it. I’m glad someone liked it.
I typed this game in from an issue of Amstrad Action in 1992, and loved it! I made a clone of it this week for the browser, but couldn’t remember the name of the game. After a bit more looking through back-issues, I found the original code listing and then this page. Thanks very much for creating this game!
Now I’ve heard from *both* fans!
I was a kid in Ireland in the 80’s and distinctly remember this type in. I spent so much time tinkering with the source code, and wowing people with my elite hacking skills… all thanks to you!
This is a really great memory from my childhood and a cornerstone in my love of computers growing up. Bear in mind, Ireland lagged behind the UK immensely at the time in terms of computer education.
I can’t believe you’re the guy that wrote this, and I randomly found you while searching for the source code again. Mind blown 🙂
Thank you.
Thanks, Paul!
Looking at the source code, back then I thought I was a much better programmer than I really was ;-(
Me again,
scruss, you really are doing yourself a dis-service here. I bet you there are hundreds of people out there who got a LOT of enjoyment from this game. I remember playing it to death with my friends in the 80’s.
When i met my wife, i fired up the old green screen again and we were both playing it in 1997/98
I still play it today now and again, although it’s not as good as A Link to the Past 😉
This is about all of the complexity I can handle in a game, Ian.
Wow, I’m another one who remembers playing this – I remembered it the moment I saw the screenshots! Man, I’m really crap at games nowadays it’d seem – I didn’t remember it to be so darn hard!
Anyhow; for the emulator to run in QWERTY mode you need to choose the English model. And a small note: to access the magazines and other downloads on the CPCWiki forum you need to be a registered member (sorry, but too much leeching 🙁 ).
Thanks for the lovely article!
I don’t think it had an UK option when I wrote this, but thanks!
Still playing it Stewart
https://twitter.com/king_treelo
Don’t think there will ever be a time when i dont reminice about this game
I’ve mentioned this page in my GitHub repo, about a game I made in 1999 based on this one: https://github.com/nick-hill-dev/stardodge