|
1 | 1 | # 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. |
3 | 3 |
|
| 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 |
4 | 6 |
|
| 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. |
5 | 13 |  |
| 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