Reverse-engineering the Dragon 32 game Invader’s Revenge

In my increasingly-distant youth, my family had a Dragon 32 home computer, which I spent many hours with. For a lot of this time, I was writing programs of various kinds, with the built-in Basic and then also assembly language. But, unsurprisingly, I also played games, including one called Invader’s Revenge, written by Kenneth Kalish. You control a yellow ship, and have to shoot enemy “defender” ships while not crashing into anything or being shot by the enemy base. Good fun.

Screenshot of Dragon 32 game "Invader's Revenge"

In my current job, I am developing and researching Pytch, a free online educational coding platform which helps people learn Python by writing “Scratch-like” programs. I thought a port of Invader’s Revenge could be a good example of what can be made in Pytch.

I could probably have achieved this by taking screenshots and working out the game logic just by observations, but thought it would be a more interesting exercise to reverse engineer the original machine code. This would also allow a dose of nostalgia for the Dragon and working in assembly language, albeit someone else’s.

After rather more time than I thought I would spend on this, I was successful. Full details and results in these GitHub pages.