Project GameStation (Raspberry Pi Emulation Machine)


The Blog of Tom Webster

  2013-02-20 14:00:00 PST

Recently, I've been drowning in personal projects, but I feel that one of them is finally to the point where I can start to release information about it. Project Gamestation is a Raspberry Pi based emulation machine. The vast majority of the code and configuration is incredibly easy to implement thanks to RetroPie-Setup, a GitHub project by PetRockBlog.

Really, the only configuration I've done with this project is controller configuration, automated RackSpace Cloud backups, OS configuration, and lots of testing. If you're looking to build one of these, you must have Linux experience (or a willingness to learn), and you can't be afraid of the command line.

The majority of NES and SNES games can be played with overclocking set to modest. The only time I ran into game slowdown is when playing complex SNES games like Super Metroid and most Genesis games. I ended up settling on the High setting. Medium was too slow for Sonic 3, and Turbo was corrupting SD cards fairly frequently.

For the controllers, I'm using two cheap $10 USB controllers, one an SNES imitation, the other an NES imitation. The NES one I bought was fine, although a little flimsy. The SNES controller had a DPAD issue with the construction, I had to take it apart and move around the DPAD internals to get everything lined up correctly.

I am going to do a more thorough series of posts about the actual commands and setup later, but for now, I'll just give you a little bit of insight. HDMI sound isn't enabled by default, but you can fix this pretty easily. Autologin is done with the raspi-config command, a wonderful menu-driven way to configure and update your Raspberry Pi. To exit the emulator, I read about a way to make this happen easily. It involves holding one button and pressing another to get back to the main menu. I did have trouble getting this to work in DGEN, the Genesis emulator, but I know this issue has gotten more visibility lately, so hopefully a fix is on the way.

My contribution to this whole project is cloud backups. You can configure emulationstation to throw all of your save games in a single directory, so I decided to combine this with RackSpace Cloud Files for automatic backups every 4 hours (via a cronjob). You will need to install duplicity, python-cloudfiles, and python for this to work:

#!/bin/bash
UPLOAD_TO_CONTAINER="$HOSTNAME-Saves" #adjust it as you like
export CLOUDFILES_USERNAME= # THIS IS YOUR RACKSPACE USERNAME #
export CLOUDFILES_APIKEY= # THIS IS YOUR RACKSPACE API KEY #
export PASSPHRASE=
export BACK_THIS_UP=/home/pi/saves

duplicity --no-encryption $BACK_THIS_UP cf+http://${UPLOAD_TO_CONTAINER}

Like I said before, I am planning an entire series related to creating your own GameStation, but if you feel like getting started right now, hopefully this gives you a bit to go on. The system isn't perfect, by any means, but it is a decent start to a cheap emulation system.