SNES Controller Emulator using Arduino (Uno)
This is a basic SNES controller emulator written for the Arduino Uno.
I got the timing data from this Pinouts & Protocol FAQ on gamefaqs.com. I've extracted some of the important details to snes-flow.md.
Pin | Purpose | Pin Mode |
---|---|---|
A0 | Data Latch | INPUT |
A1 | Data Clock | INPUT |
A2 | Serial Data | OUTPUT |
2 | Button B | INPUT Pull-Up |
3 | Button Y | INPUT Pull-Up |
4 | Button Select | INPUT Pull-Up |
5 | Button Start | INPUT Pull-Up |
6 | Pad UP | INPUT Pull-Up |
7 | Pad Down | INPUT Pull-Up |
8 | Pad Left | INPUT Pull-Up |
9 | Pad Right | INPUT Pull-Up |
10 | Button A | INPUT Pull-Up |
11 | Button X | INPUT Pull-Up |
12 | Button L | INPUT Pull-Up |
13 | Button R | INPUT Pull-Up |
I'm using platformio to build and deploy the code simply so I didn't have to use the Arduino IDE. Instructions for how to install and set it up can be found on their site. platformio.ini contains the configuration for platformio.
When reading buttons, keep in mind that if a pin is HIGH, the button is not pressed. When a pin reads LOW, the pin is pressed.
I'm also planning to provide data over USB using the UnoJoy project, which is where the files in UnoJoy/ come from.
This will depend on 2 things:
- how much time is left after SNES protocol
- how much time the UnoJoy serial write takes