Skip to content

Commit a48a46f

Browse files
authored
Update README.md
1 parent 6a00b6d commit a48a46f

File tree

1 file changed

+51
-1
lines changed

1 file changed

+51
-1
lines changed

README.md

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,55 @@
11
# Arduino-SNES-controller-on-GameCube
2-
How to modify a SNES (or similar) controller to work on GameCube using a 3.3V compatible Arduino board.
2+
Modify a SNES (or similar) controller to work on GameCube using an Arduino. The goal was to make a cheap alternative to the expensive Hori Gameboy controller using easily available parts.
33

4+
Based on the Smash Box code by SimpleControllers: https://github.com/SimpleControllers/SimpleControllersBuild-a-Box
5+
Requires the Nintendo library by NicoHood: https://github.com/NicoHood/Nintendo
46

7+
# Features
8+
* Switch between D-pad and analog mapping
9+
* Two different button layouts
10+
* Can save current settings to be automatically re-enabled on power on
11+
12+
Press and hold Select, L and R together with the button of choice for about one second to set the current mode. D-pad assignment and button layouts can be set individually.
513
![SNES controller](/SNES_controller.gif)
14+
15+
The regular button layout matches the buttons on the SNES controller. The alternate button layout tries to mimic the layout of a GameCube controller which might work better for Gameboy Advance games as it should be easier to jump while running in Super Mario using this layout.
16+
17+
Controller buttons | Regular layout | Alternate layout
18+
------------ | ------------- | -------------
19+
A | A | X
20+
B | B | A
21+
X | X | Y
22+
Y | Y | B
23+
24+
# Required components
25+
* Controller to sacrifice
26+
* A compatible Arduino board @16MHz, I use an Arduino Pro Mini (must be powered by 3.3V!)
27+
* GameCube controller extension cord
28+
29+
To my knowledge no 3.3V 16Mhz Arduino board exist, but the ATmega328p on a 5V 16Mhz Arduino Pro Mini can run at 3.3V. Though this is not advised to do so, I personally haven't had any issue doing so, but please keep this in mind. Additional information can be found in the microcontroller datasheet:
30+
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
31+
32+
# How to build (will be improved eventually)
33+
* Flash the code to the Arduino. An external programmer like the USBtinyISP works great.
34+
* Remove all components on the controller PCB and solder in the Arduino to the pads where the controller IC used to be.
35+
* Wire up 3.3V, GND and Data from the extension cord. DO NOT USE 5V!
36+
37+
Arduino Pro Mini pinout:
38+
39+
Arduino pin | Function/physical button
40+
------------ | -------------
41+
VCC | 3.3V
42+
GND | GND
43+
17 | Data
44+
3 | X
45+
4 | A
46+
5 | B
47+
6 | Y
48+
7 | Start
49+
8 | Select (Z)
50+
0 | L
51+
2 | R
52+
1 | Up
53+
9 | Right
54+
10 | Left
55+
14 | Down

0 commit comments

Comments
 (0)