Posts Projects /projects/trionoids$_

Trionoids

Trionoids - a columns clone for the Atari Falcon written in 68k assembly, that runs in the 256 colour video mode.

This was (and remains) the only large-scale project I've written in Assembly: I've played around with some 6502 (some of that is ongoing) and did a tiny bit of ARM and x86, but with all of those I've never gone much beyond a Hello World. I wanted to see if I could build something 'large' in assembly, and having gotten hold of an Atari Falcon (more on that to come), creating a game for it seemed like a great way to go. I spent a while just sorting out some of the basics, rendering sprites, reading the joysticks etc., but needed some kind of focus. I spent a few hours one day adding S-Video output to a Sega Megadrive, and while playing columns to test it out I realised that it'd make a great candidate thanks to a very well defined scope.

Getting to a release took far longer than I thought, though in part that was down to a single bug that beat me around the head for the better part of a year. It was probably only a few day's worth of investigation total, but it really killed the momentum for a while. The impact of the bug was that the game would lock up very occasionally, requiring a reboot of the machine, and it wasn't until I finally moved some of the code into a 68k simulator and stepped through it that I worked out where it was (I hadn't had any luck getting debug symbols sorted out right in an emulator). There was a single loop in some of the game logic that would very ocasionally set a single bit in a byte that was past the end of the array being processed. That one bit cost me a lot of sanity!

The rather nasty source code available on GitHub.