A rewrite of the classic arcade game Street Fighter 2 in C and OpenGL.
One of the first programming languages I learned was m68k assembly. In 2005, I started reverse engineering one of my favourite games from my childhood to learn how game engines worked, and to uncover answers about bugs and rumoured secret content within the game.
At some point, I began writing C-like pseudo-code to document the various routines I found. At the time, I wasn't a strong C programmer but it still seemed a much clearer way to document the assembly code than merely adding code comments inline. Eventually, it seemed a natural progression to get this code to compile and ultimately become a reimplementation of the original game that I could experiment with and modify.
In the process, my C skills grew as I implemented an emulation of the original Capcom CPS1 hardware, including
- an emulated tile and sprite graphics engine in OpenGL
- a co-operative multitasking system
- various tools for extracting sound and graphics elements from the arcade ROMs
Follow my progress on the blog