2 NES/SNES to USB
This is a two player variation of my 4nes4snes
The firmware is modified to expose only two controllers to the PC, preventing two extra
controllers from needlessly appearing if an two player adapter is built.
- This project's schematic is exactly the 4nes4snes schematic, except ports 3 and 4 are omitted.
- Supports NES controllers
- Supports SNES controllers
- The NES fourscore also supported, allowing up to 4 players (Detected at power up)
The AnodeNES project
I designed and had manufactured a CNC machined aluminium enclosure, anodized black. Designing
the PCB and enclosure simultaneously permitted a mutual influence of the mechanical and electrical
aspects, to the benefit of the end result, a compact adapter which I named AnodeNES, by reference
to the black finish and to the controller's console of origin.
A small touch-up
Installing the connectors
Installing the PCB
Mini USB connector
|2nes2usb-1.4.tar.gz (94.3 KB)|
2nes2usb-m8-1.4.hex (9.6 KB)
2nes2usb-m168-1.4.hex (9.9 KB)
|June 5, 2016 (Sunday)
- Changed NES to USB button mapping to match SNES buttons (eg: NES A = SNES A).
- Changed product name string. (version added)
|2nes2usb-1.3.tar.gz (94.1 KB)|
2nes2usb-m8-1.3.hex (9.3 KB)
2nes2usb-m168-1.3.hex (9.6 KB)
|June 15, 2014 (Sunday)
- Update for compilation using modern GCC versions
- Updated V-USB
|2nes2usb-1.2.tar.gz (70.7 KB)|
2nes2usb-m8-1.2.hex (9.9 KB)
2nes2usb-m168-1.2.hex (10.2 KB)
|April 27, 2013 (Saturday)
- Support for the Atmega168 (and compatibles). Use Makefile.atmega168
- Various code cleanups.
- Simplified main loop by remving setIdle/getIdle implementation. Optional for joysticks according to HID specification appendix G.
|2nes2usb-1.1.tar.gz (69.8 KB)|
2nes2usb-1.1.hex (10.5 KB)
|April 21, 2013 (Sunday)
||Initial release. Based on 4nes4snes v1.3
Using .hex files
- Atmega8: The *-m8-*.hex or *.hex files prior to version 1.4 are for programming an Atmega8. The fuse bytes for
Atmega8 are: high byte = 0xc9, low byte = 0x9f.
- Atmega168: The *-m168*.hex files are for programming an Atmega168. The fuse bytes for the Atmega168 are:
high=0xd5, low=0xdf, extended=0x01
For informations about how to program an AVR MCU, visit my
Source code (.tar.gz files)
Unless otherwise noted, 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.
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.
Staring with version 1.4, the NES buttons have been reassigned to match SNES buttons. This makes it possible
to switch controller type without reconfiguring anything. Works great for RetroPie...
|USB||SNES Button||NES Button|
|0 ||B || ||B |
|1 ||Y || || |
|2 ||SELECT || ||SELECT |
|3 ||START || ||START |
|4 ||A ||START ||A |
|5 ||X ||SELECT || |
|6 ||L ||A || |
|7 ||R ||B || |
Note: USB buttons are numbered from zero. If you are under Windows, you will have to add 1 to the numbers in the above table.
3D Printed version
If you have access to an 3D printer, here are .STL files you may use to build the following casing. With
a bit of care, you will certainly obtain a better result than me...
The PCB board is installed using eight #2x0.25" screws. The cover uses four #4x0.25" screws.
The files: anodenes_3dprint_stl.zip
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.
February 14, 2015 (Saturday)
Brandon built this adapter for two NES controllers. He did what he could with the tools he had available (a dremel and a razor knife) to cut the openings for the connectors. Despite the slightly rough result has he admits, the finished product is nevertherless a perfectly working adapter.
January 6, 2015 (Tuesday)
Roman Sysoev from Russia built an adapter for two SNES controllers using the ARCAdaptor PCB - http://adapto.rs
December 24, 2013 (Tuesday)
Slawomir Krysztowiak from Poland sent me the following pictures of his 2-player adapter. The DB15 connectors
are wired for a NES clone called Pegasus
that was extremely popular in Poland in the 90'. More details on
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 :)