The NES, SNES and N64 were exellent consoles, and thanks to emulators, it's easy to fire up the old games and play through Super Mario 64 again. But it's just not quite the same playing on a keyboard or an XBox controller. Being an electrical engineer, I figured I could probably do something about that.
There have long been kits to convert your NES controller to USB, or converters to plug an N64 controller or two into your computer. I considered getting the little NES conversion kit, but then figured I had the skills to do it myself, so why not?
It started with an NES controller - I pulled the ports out of an old broken NES from a thrift store, plugged them into a breadboard, and found some old docs on the internet of what the protocol looked like. Hooked up my Teensy 2.0++, wrote up some code to read the controller and update the Teensy's joystick buttons, and off we went.
From there it grew: I realized that all the controllers used the same pins, same pin-spacing, and they were close enough that I thought I just might be able to design one big port that could accept any of them. After a lot of fiddling and planning, turns out I could.
Thus was born this gizmo. SNES was basically free (it's just an NES controller that sends back more bits), but the N64 was an entirely different (and much faster) protocol. Fortunately I found code someone else had written that I adapted to my needs. Add in some auto-detection of what controller is plugged in, some board design, a whole lot of simplification, and there you have it.
It's still a work in progress, but as-is it works great to play with emulators, or to just play whatever game you want. I played through (VVVVVV)[http://thelettervsixtim.es/] with the NES controller, which was a great experience, and have played a good bit of Jamestown and Trine with N64 controllers - an okay, but less stellar experience, that I've since switched to XBox controllers for.