I try to always have a side project that I’m working on outside of work. Not only is it fun for me, but it helps me learn in areas I might not otherwise. Besides, the world doesn’t have enough mp3 players.

Mercury Audio Player – This was my first major project. It’s a full fledged media player for all versions of Windows! It supports skinning, video playback, and stream ripping. I’m really proud of it and had a great time working on it. (Note – Certain mp3s may not play due to copy restrictions)

Metroid PC – How do you follow up something like Mercury Audio Player? You rewrite the NES version of Metroid for the PC! This is written entirely in C++, no emulation. The graphics were taken using screenshots from the ROM. I painstakingly copied each sprite, saved it as a bmp, and then ran it through a tool I wrote that paletted them. That way I was able to simulate the color changing tiles just like the NES did. Then I used a room editor I wrote and re-created every. single. room. Yeah this project took a little under two years.

Corona Software Renderer – This little guy is the epitome of ‘tech demo’. It renders and animates Quake 2 models with diffuse and specular lighting, and that’s pretty much it. The notable thing is it’s being done entirely in software. No DirectX or OpenGL. The real challenge was the tesselation, but I learned a lot from doing this project.



1 Comment Add your own

  • 1. Mike  |  March 3, 2012 at 12:59 am


    Congratulations on your engagement! I was floored when I read about the PC port of Metroid you created from scratch. I can wrap my head around you re-creating the sprites, but how on EARTH did you get the gameplay to be so precisely like the NES version? It’s absolutely astounding. I dabble in C#, but am allergic to pointers & managing memory space on my own 😛

    Anyway, unbelievable work, and thanks for sharing the end product with us! I hope you get picked up by a major game studio, if you haven’t already been!



Leave a Reply

Your email address will not be published. Required fields are marked *

Trackback this post  |  Subscribe to the comments via RSS Feed