2 NES/SNES to USB

Introduction

This is a two player variation of my 4nes4snes project. 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.

Speciications:
  • 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.

The board

The board

Machined part

Machined part

A small touch-up

A small touch-up

Installing the connectors

Installing the connectors

Installing the PCB

Installing the PCB

Mini USB connector

Mini USB connector

Soft base

Soft base

Finished product

Finished product






Source code

Version v1.4
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)
File(s):
2nes2usb-1.4.tar.gz (94.3 KB)
2nes2usb-m8-1.4.hex (9.6 KB)
2nes2usb-m168-1.4.hex (9.9 KB)
Show previous releases...
Version v1.3
June 15, 2014 (Sunday)
  • Update for compilation using modern GCC versions
  • Updated V-USB
File(s):
2nes2usb-1.3.tar.gz (94.1 KB)
2nes2usb-m8-1.3.hex (9.3 KB)
2nes2usb-m168-1.3.hex (9.6 KB)
Version v1.2
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.
File(s):
2nes2usb-1.2.tar.gz (70.7 KB)
2nes2usb-m8-1.2.hex (9.9 KB)
2nes2usb-m168-1.2.hex (10.2 KB)
Version v1.1
April 21, 2013 (Sunday)
Initial release. Based on 4nes4snes v1.3
File(s):
2nes2usb-1.1.tar.gz (69.8 KB)
2nes2usb-1.1.hex (10.5 KB)
This project is also available on GitHub!
To request features, report issues or contribute, you may send me an email or use the GitHub repository:
https://github.com/raphnet/2nes2usb

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 AVR programming page.

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.
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.


Buttons

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...

USBSNES ButtonNES Button
(before v1.4)
NES Button
(since v1.4)
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


User pictures

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 (Russian)



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 his website (In Polish).






Disclaimer

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 :)