NES controller to USB gamepad

posted Jun 30th 2010 12:00pm by
filed under: nintendo hacks

Regular Hackaday reader [Osgeld] is at it again with this USB conversionĀ for an NES controller. This is a ubiquitous hack that we started seeing very early on, sometimes involving an adapter kit, and other times including things like a thumb drive and USB hub. But this time around is truly a bare-bones version. He’s using an Arduino but it’s really just an AVR ATmega168 running the bootloader. We’d wager this can be done with an ATmega8 just as easily. Grab a couple of diodes (we never seem to have the 3.6v zener diodes around when we need them), a couple caps and resistors, a crystal and you’re in business. The hack wires each button to a pin and implements a keyboard HID that can be mapped for any purpose you desire.



23 Responses to NES controller to USB gamepad

  • Eric says:

    Atmega8 can definately do it.

    I believe there is an open source project on it (from what i saw, it supports up to 4 controllers at once, including a mix match of snes controllers and also support the 4 port nes adapter on ports 1 and 2 of the chip)

    http://www.raphnet.net/electronique/4nes4snes/sch-core.png

  • osgeld says:

    couple notes

    its a 328 :)

    and it doesnt show up as a HID keyboard, it shows up as a HID Joystick

  • svofski says:

    Bookmarking just for the Joystick HID. Good job, osgeld!

  • svofski says:

    oops! instructables detected! no clicky.

  • Xeracy says:

    looks nice, but NES isn’t a real OS…

  • osgeld says:

    Let me squash the “instructables BOO” crap quickly too

    look at it from my side, since I joined they provide me a stable place to post my projects, and I do, for that I also get a large audience that is highly active, I have also gotten T-shirts stickers and other swag along with xmas cards, Halloween cards (more stickers) and have won gift certificates to think geek and enough gorilla glue to last a few years

    I am going to post it anyway, it might as well be there since they treat me well (for a website) and have the chance to win a pocket knife at the same time

    yes Instructables BOO indeed :p

  • Memento says:

    I’d like to see a bluetooth implementation of an [S]NES controller.

  • Concino says:

    Osgeld did it again. Pretty sweet use of the original PCB. I still didn’t get the zener diodes. How does it lower the voltage for the USB?

  • Osgeld says:

    you hook them up backwards, and they have a very low breakdown point (like 1.2 volts) and thus start to leak current backwards through the diodes to ground, your lower voltages are whats left over

  • Stephen says:

    I too am getting pretty sick of the instructables bashing. What exactly do people have against it?

    @tim:

    How is it stolen? It’s a similar concept with completely different implementations. I see that one user did a similar thing and posted an image of it, but there’s no documentation of it.

    Sorry that everything can’t be a one-of-a-kind masterpiece.

  • Osgeld says:

    so grats tim, you found one of a couple dozen microcontroller + nes + usb projects and instantly accuse me of stealing

    its all based on vusb, I never claim to have written the software, crap page 2 line one states that and goes on to list my references (RTFA)

    yes I saw that project, and I tried to get it to compile, which never happened and moved on to one that would work with the stuff I had on hand

    their all based off of the avr vusb project anyway

  • deyjavont says:

    @Memento

    I made an NES bluetooth, but it might not be the kind you are thinking of. It’s a bluetooth headset.
    http://lowlevelowls.blogspot.com/2010/04/bluetooth-nes-game-pad-headset.html

  • vic says:

    I made one using an ATtiny44. It’s much smaller, and except for replacing the wiring I didn’t damage the pad in any way. I didn’t bother to post it anywhere since many similar designs have already been published but maybe I will now ;-)

    Pic here for the curious : http://i50.tinypic.com/zlcav9.jpg

  • Brett says:

    I have an idea for using this to monitor the input given from a nes controller. as a part of this, I’d like to be able to hide something small, a few small coins in height.
    Would it be possible to tweak this project to allow that? I’m not sure of the height and clearance for free room with it.

  • osgeld says:

    @vic please do, my “original” idea was to use a attiny84 but was not having any luck getting vusb working with it

    @Brett, the controller has a little bit more room in it, but not much, NES pads are everywhere and cheap (paid a buck for that one) so snag one and check it out, worst case they are super easy to hook up to just about anything

  • MoJo says:

    Oblig: http://denki.world3.net/retro_v2.html

    No need to trash the controller. Since it is hard to get hold of NES connectors what I do is cut the end off and splice a DB9 into the cable. It then still works on a real NES and can also be used via USB.

  • dddanmar says:

    I love this, was one of the first Arduino projects I started to fiddle with. Instead of vusb I found a nice sketch that sent the data out over the serial port. Copied it over to an atmega8 with no clock and a ftdi usb chip and crammed it all back into the controller with a bit of snipping away at the cover.

    I’ve been wanting to dig it back up again and change the ftdi chip with a bluetooth module, this might be the inspiration again :P

  • cause says:

    i have several that i made just using a usb keyboard. it seems to be a way simpler approach.

  • Barret95 says:

    I was wonder what would happen if you just unsolder the five wires on the nes controller and just replaced them with a 5 wire usb cord? my theory is it just wouldn’t recognize it, or hopefully it would it take?

  • Gert says:

    I did this, unfortunatly i selected the easy pins to solder and that resulted in one pin not being supported by the software. And i used a Azerty chip for a Querty based software.

    That Querty Azerty shit needs to dissapear.

  • Leave a Reply

    XHTML: You can use these tags: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

    Hack a Day serves up fresh hacks each day, every day from around the web as well as hacking related news.

    Send us your hacks










         




    Hacks

    Resources