Arduino SNES Controller Emulator
Introduction and Update Notes

Download just the Arduino code, .exes and .txts. (version 1.1)

Download the source code and project files (version 1.1) (Visual C# 2013 Desktop/Arduino)

This project allows a player to basically plug an arduino into your SNES and play it using your PC keyboard. If you download the release .zip above, you get three .exes - a local client that interfaces directly with the arduino, and a server/client combination so that you can play your SNES remotely! Perhaps you have the server running on a computer next to your TV and run the client on your laptop as you sit on the couch, for example. My personal goal was to allow my brother in Saskatoon to play Earthbound on my SNES here in Vancouver. AND IT WORKED!

There is, however, about a half second delay using the server/client method. A lot of games (such as Earthbound) are still more than playable, but games rely on precise input will probably be unplayable. The local client itself though has very little input lag, and should be fine for most games!

This project is an improved version of this first attempt right here!


This program comes with a server and a client so that you can control your SNES remotely! I realize this isn't exactly the most useful feature in the world, but it was a challenge for myself that was a lot of fun to figure out. To set up a server, figure out your local IP and put it inside 'serverip.txt'. Then, put your public IP on the last line of 'controls.txt'. Now the 2 should be able to find each other assuming port 80 is open! Alternatively, you can put your local IP in controls.txt if you are using a computer on the same network as your server.

Use the "local" version of the program otherwise!

Arduino Setup

What you'll need to build this arduino setup:

  • 2 4021 shift registers
  • Arduino (I used a Mega 1200), a breadboard, and some wires
  • A SNES controller cable - preferably from a 3rd party controller

First of all, credit needs to go where it is due. This setup is inspired largely from a couple of YouTube videos. Video 1, and video 2!

Here is a rough diagram of the circuit.

And here is a picture of the setup in real life!