raphnet.net banner
Cette page est aussi disponible en français
4 NES and/or 4 SNES controller(s) to USB
Content: Project Overview | Pictures | Schematic | Firmware | User pictures | References | Disclaimer
Project Overview [hide]
Using 2 SNES controllers and 2 NES controllers at the same time

Using 2 SNES controllers and 2 NES controllers at the same time

After publishing my NES/SNES Controller to USB adapter project, I have been asked a few times if there was a way to connect more than one controller. I finally found the time to do it and this page explains how it is done. Since this is a variation of the initial project mentionned above, I wont cover everything in great detail. If necessary, refer to the original project page.

Supporting multiple controllers at the same time is basically done by programming the Atmega8 with a different firmware. This new firmware automagically detects whether each connected controller is a NES or SNES controller. Up to 4 NES and/or SNES controller(s) can be used at the same time.


New! A new firmware is available. New in version 1.2:
  • Implemented "Live autodetection". This allows NES and SNES controllers to be changed during use so it is no longer necessary to power cycle the adapter. This feature can be disabled by closing JP1.
  • Added NES fourscore support. At power up only, when a fourscore is detected in port 1, fourscore mode is entered and ports 1 and 2 are used to read up to 4 NES controllers.
  • License changed to GPLv2.

goto top Up


Pictures [hide]

Example 1: Adaptater for the NES FourScore:



Example 2: Adapter box for 2 NES and 2 SNES controllers:

SNES controller sockets from a broken console

SNES controller sockets from a broken console

NES controller sockets from a broken console

NES controller sockets from a broken console

I used the enclosure of an old NetModem which was too slow by today's standards

I used the enclosure of an old NetModem which was too slow by today's standards

Ok, the placement looks right.

Ok, the placement looks right.

Now I know where to cut...

Now I know where to cut...


...I cut the holes using various techniques.

...I cut the holes using various techniques.

Finally done.

Finally done.

Making sure everything stays in place

Making sure everything stays in place

I used a renovation leftover... Polyurethane construction Adhesive.

I used a renovation leftover... Polyurethane construction Adhesive.

Ok, glue applied. Now wait...

Ok, glue applied. Now wait...


Wiring view #1

Wiring view #1

Wiring view #2

Wiring view #2

Final result 1

Final result 1

Final result 2

Final result 2

Final result 3: In use!

Final result 3: In use!


WinXP Joystick test screenshot

WinXP Joystick test screenshot


goto top Up


Schematic [hide]
Here is the schematic and a pinout reference for NES and SNES controllers:

Notes and comments: All the controllers share power, clock and latch signals. However, the data signal coming from each controller has to be connected to an unique input on the microcontroller. A ceramic resonator can be used instead of a crystal + two capacitors. Refer to Andrew Biem's schematic in the user pictures section.

Printed circuit board: You can use the printed circuit board from the initial project:
http://www.raphnet.net/electronique/snes_nes_usb/index_en.php#pcb

Here is also a wiring diagram for PCB rev.C:


goto top Up


Firmware [hide]
Here is the file which must be programmed into the Atmega8: 4nes4snes-1.2.hex
Fuse bytes for this project: high byte = 0xc9, low byte = 0x9f.

For informations about how to program an AVR, visit my AVR programming page.

Source code:
The source code is released under the terms of the GPLv2 License. See License.txt more information. The project compiles with avr-gcc under linux.
4nes4snes-1.2.tar.gz

Note: If you are using the source code release under Linux, look at the Makefile. It has a flash and a fuse target which uses uisp to program the flash and fuses.

Old version(s):
4nes4snes-1.1.tar.gz (Proprietary Objective Development License [modified GPL]). See License.txt.
4nes4snes-1.1.hex

goto top Up


User pictures [hide]
I enjoy seeing how others build my projects. It also makes good assembly examples. Please send me your pictures and I'll add them here.

Steve and Andi, from Austria, sent me the following pictures:

Declan Williams (16 years old), from Australia, sent me the following pictures. Notice he found a pretty clever way to build his own SNES-style connectors:


Andrew Biem, from Whidbey Island, Washington, USA, sent me the following pictures. Notice that he used a ceramic resonator instead of a crystal + two capacitors. He also provided an updated schematic.


Gunther Baumgartner, from Germany, has installed the circuit inside a NES Four Score:


Lucas Romero, from Germany, built this project for being able to use SNES pads with his laptop which has no parallel port. He named his project "RetroBox" and added an internal USB Hub with a 2GB USB-Stick so he always has his favorite SNES and MAME roms with him:

(Pictures received on May 31, 2008)

Craig O'Connor sent me the following pictures:

(Pictures received on October 4, 2008)

Tim Wylie built this 4 controller adapter (2 Snes and 2 NES) using the pre-assembled circuit:

(Picture received on June 17, 2009)

Jeff Erbrecht has installed the circuit inside a SNES multitap. It was necessary to remove some components from the original Multitap circuit since they caused some problems.

(Pictures received on June 25, 2009)

goto top Up


References [hide]
This page contains documentation about the Snes controllers 'protocol':
Sci.Electronics FAQ: Super Nintendo Entertainment System: pinouts & protocol

I use the software USB driver from Objective Development. For more information, visit their site:
http://www.obdev.at/products/avrusb/index.html

This was useful for understanding how Windows/Direct Input interprets the report descriptor and why some axes were not recognized by Windows 98:
http://www.microsoft.com/whdc/device/input/hidgame.mspx

goto top Up


Disclaimer [hide]
I cannot be held responsible for any damages that could occur to you or your equipment while following the procedures present on this page. Also, I GIVE ABSOLUTELY NO WARRANTY on the correctness and usability of the informations on this page. Please note, however, that the procedures above have worked in my case without any damages or problems.

Now you cannot say that I did not warn you :)

goto top Up


Copyright © 2002-2009, Raphaël Assénat
Trademarks used in this site are the property of their respectives owners.
Website coded withWebsite coded with vimLast update: July 01, 2009