Android and SNES? Oh my!
So a while ago (Dec 2012, so only a couple months :D) I posted a little picture of a setup I got working with my nexus 7.
I promised I would document how I did it for others, and so I'll best to explain what / how I got it working but it's been a long time since I did any sort of technical writing, so bear with me.
So what do you need? This is what I used, this is by no means the only way.
- Gamepad (I used one of the snes gamepads I bought from a local game store. There are tons of tutorials online on how to convert an old snes controller to a usb one)
- MicroUSB OTG Adapter - As linked
- Android Device that has OTG support. I know my Galaxy Nexus and Nexus 7 both support them.
- I used USB/BT Joystick Center in the end. Its pretty expensive, has some sort of online DRM (but seems to work offline, just can't edit joysticks). I've heard you can do it with root/this app, but this is what I used for my un-rooted tablet. There is a demo version available that lets you test compatibility before spending the money.
- A "game" you want to run. I use SNESDroid for that
All in all I would say it's not exactly a hard process. Joystick Center is expensive and a very dev-ie UI but it's quite simple once you figure it out. It is essentially a tool to make drivers for your usb gamepad for your android device. It seems to do a good job at that.
Once you get everything hooked up and Joystick center installed and running, you need to make sure it finds the gamepad. It's a bit finicky, especially if you have other USB apps installed. Once you have the app running and find the device you see something like:
Next you need to select that device. When that is done, you'll see another row. This row confused me the most. It's not that important other than the driver button on the left hand side. Once you've clicked/tapped the driver button, you'll come across a screen kind like:
This would be the most important screen. It took me a few trues and a few videos to figure everything out but it's actually quite simple.
First you'll want to add your directional support. Since my gamepad has a dpad, I added a "stick" control. This is the second button on the right side of the big + indicator on the left side of the screen (confusing no?). My gamepad also has 8 buttons so I added 8 of those (first button next to +).
Now for each "feature" you will select them once at a time and configure it. It does't matter at all which order you added/do things in.
First I selected my stick. On your gamepad move the dpad/control stick around. For every light / box that changes (from on to off or whatever) highlight it. I ended up having 16 boxes selected. After selecting move the dpad around again, you should see the stick box move around properly. Make sure to try out all directions.
Next comes the easy buttons. Select a button. Press a button on the gamepad repeatedly. Highlight any boxes that change. Repeat for next button.
By the time you are all done, any time you press an existing button or move the dpad, it should jump to the properly button in app. If that's all correct, hit back. I would press "Exp" on the main screen to save your configs, but so far mine has never gone away.
Now fire up your game. For me SNES droid has the ability to remap keys. So I go into the settings and map each button press to a key.
So there you have it, now you can play games with your gamepad on your android device.
From what I read, you can actually use the app to map buttons to actual key presses, so its possible to play regular games, but I never exactly figured out how to do that (not needed for snes).
Yuritau: I'm hopeful that the OUYA controller will be compatible with android devices, or that someone will make and share a tool that makes it so.
halkeye: I'll bet its a bluetooth controller. If so, the tool I mentioned will still work for it.
I know I can't wait for mine (ouya). I'm going to be trying to get salty stories to run on it if I can.
I'm a tinker, maker, and software developer.
At home I code, game, hang out, all the cool non robot things to do.
Heavily involved with Jenkins open source, and will often submit PRs to random other projects.
I also play games, both board and video games and love to read.
You can usually find me on various services as halkeye.