Fun Projects

Election Fun

This is a small interactive application that visualizes the professions that won and lost elections across a large range of Canadian elections. There are some pretty interesting trends and observations.

This was also an excuse to play around with D3 a little bit, wrapped around an AngularJS app. The actual code is written in TypeScript.

A demo of it in action is here.

TypeScript / AngularJS / D3


SNES Babal

For fun I taught myself how to program in SNES assembly over a couple of weeks. Originally based on the HP-48 game Babal, or the Amstrad CPC 464 game Trailblazer, this is the end result.

This used to work well in Snes9x, but more recent versions of it play with somewhat messed up graphics.

To compile it, you need the assembler I used and GIF2SOPT.ZIP plus GIF2SPR2.ZIP to convert the graphics data.

65816 / SNES


MC-10 Emulation Project

In my first year of university I wrote this MC-10 emulator. The MC-10 was a small home computer back in the early 80's related to the TRS-80. Lots of good info about this microcomputer can be found on Wikipedia's MC-10 page.

The code is a little rough but it's a nifty implementation of an emulator for Motorola 6803 and 6847 chips. It supports loading/saving from/to cassette images and can convert a basic program using CoCo tokens into MC-10 tokens.

6803 6847 / MC10 TRS80


Nethack-Palm Porting Project

A few years back I was an active member and maintainer of a project to port the game Nethack to the Motorola 68328/DragonBall era Pilot PDAs. The interesting thing about this architecture was that you were restricted to execution jumps within a 16-bit range from the current program counter. As well, blocks of data were similarly restricted to this 16-bit limit.

Overcoming the 16-bit range for execution was reasonably doable, and really boiled down to breaking up functions that were too long (for example, breaking up monstrous switch statements) while relying on gcc to do most of the hard work. Dealing with the huge data structures was a whole different problem all together. Sadly I wasn't able to devote the time required to solve it before the decline in early Pilot PDAs made the whole thing a little moot.

C 68328 / PalmOS