This board will allow you to use a Nintendo Extension Controller with your original Atari or Commodore computers/consoles that use the Atari Joystick Port. Specifically, this adapter supports game controllers meant for the NES and SNES Classic Edition consoles.
There are two different versions of this board. One uses a Seeeduino Xiao, and the other uses an ATtiny1604. Both versions use surface-mount components, with the exception of the D-Sub connector and any optional headers. Both versions use the same software and output pin numbers.
Label | Quantity | Description |
---|---|---|
U2 | 1 | Seeeduino Xiao |
JP1 | 1 | D-Sub Recepticle (female), 9 position, right-angle, through-hole |
R1-R5 | 5 | 47k Ohm Resistor, 1/4 watt, 0805 package, surface-mount |
Q1-Q5 | 5 | BC847 NPN Transistor, SOT23-3 package, surface-mount |
Label | Quantity | Description |
---|---|---|
U1 | 1 | ATtiny1604, 14SOIC package, surface-mount |
U3 | 1 | MCP1825 3.3v 500mA Linear Regulator, SOT223-3 package, surface-mount |
JP1 | 1 | D-Sub Recepticle (female), 9 position, right-angle, through-hole |
R1-R5 | 5 | 47k Ohm Resistor, 1/4 watt, 0805 package, surface-mount |
Q1-Q5 | 5 | BC847 NPN Transistor, SOT23-3 package, surface-mount |
This project is designed to be the easiest way to get into surface-mount (smd) soldering. The Seeeduino Xiao version has parts on both sides of the board, meaning that manual or hot air soldering can be used. The ATtiny1604 version only has parts on a single side of the board, meaning you can use a reflow oven. So far, I have only built these boards by hand using a fine-tip soldering iron, magifying glasses, tweezers, and 0.3mm solder. Since I have not tried hot air soldering or using a reflow oven, I may be talking out of my butt. Please try them out and let me know!
In order to make this project as easy as possible to solder, large smd parts were selected, and the parts were given relatively generous spacing. That being said, you probably want to mount C1 and C2 before U1 and U3.
If you make an entirely through-hole version of this project, please let me know!
- NintendoExtensionCtrl by dmadison
- NES Classic Controller
- SNES Classic Controller
- Wii Classic Controller
- Wii Pro Controller
Keep in mind that only the D-pad, A, and B buttons are mapped by default. The rest of the buttons are detected by the microcontroller, but they are not sent to the Atari/Commodore because there is no hardware for those buttons. However, you can customize the firmware to turn those extra buttons into turbo buttons or switch layouts. By default, the layout is:
Controller | Atari Joystick Port |
---|---|
Up | Up |
Down | Down |
Left | Left |
Right | Right |
B | Fire |
A | Up |
- Open ExtensionCtrl_Adapter.ino in your Arduino IDE.
- Install the NintendoExtensionCtrl library.
- Plug the Seeeduino Xiao into your computer.
- Click Upload.
Reprogramming can be done in-circuit, so ther is no need to remove the Xiao from the board to change the firmware.
The ATtiny1604 supports UPDI programming, which can be accomplished via a dedicated programmer, or building your own out of an Arduino Nano. The programming process is the same, except you will connect a single wire to the UDPI pin (pin 10). All of the pins on the ATtiny1604 have been broken out into 2.54mm headers for convenient programming and extension.