Recently I decided to pick up a new Raspberry Pi 3 B from BuyaPi.ca. I wasn’t exactly sure what I was going to do with it but I figured with all of the neat little projects going on for the device I would find something. After doing some searching I stumbled upon a few candidate projects before finally settling on RetroPie as my first shot at playing around with the Raspberry Pi.
RetroPie, as their site says, “allows you to turn your Raspberry Pi into a retro-gaming machine.” It does this by linking together multiple Raspberry Pi projects, including Raspbian, EmulationStation, RetroArch and more, into a really nice interface that essentially just works out of the box.
Setup
The setup couldn’t be easier. Simply follow the instructions to download a ready made image for your SD Card, put the RetroPie image on your SD Card, plug in a controller (I used a wired Xbox 360 controller), power it on and follow the setup instructions.
When it gets to the controller configuration settings screen be careful what you select. If you follow the on-screen button pushes by default (i.e. button “A” for “A” and button “B” for “B”, etc.) you will end up with something that matches the name of the button but not the placement you’re expecting. This is because RetroPie/RetroArch uses the SNES Controller layout as its default.
So if you simply followed the on-screen wizard and pushed the Xbox 360 controller’s “A” button instead of it’s “B” button (which is the location of the “A” button on the SNES) you’ll experience all sorts of weird behaviour in the various emulators. So be sure to actually follow the setup guide for your particular controller (see below for example).
The one confusing downside to this work around is that all of the menus in RetroPie itself still ask you to push “A” or “B” but they really mean what you mapped that to, so it’s kind of backwards until you actually get into a game. That said it’s a minor thing and one that I’m sure I could fix, if I cared enough to do so, by setting a custom alternative controller layout for the menu only.
Games
RetroPie supports a crazy number of emulators. No seriously it’s a bit ridiculous. Look at this list (as of the time of writing):
- 3do
- Amiga
- Amstrad CPC
- Apple II
- Atari 2600
- Atari 5200 and 8 bit series
- Atari 7800
- Atari Jaguar
- Atari Lynx
- Atari ST/STE/TT/Falcon
- CoCo
- Colecovision
- Commodore 64
- Daphne
- Dragon 32
- Dreamcast
- FinalBurn Alpha
- Game & Watch
- Game Gear
- Game Boy
- Game Boy Color
- Game Boy Advance
- Intellivision
- Macintosh
- MAME
- Master System
- Megadrive/Genesis
- MESS
- MSX
- Nintendo 64
- Nintendo DS
- Nintendo Entertainment System
- Neo Geo
- Neo Geo Pocket
- Neo Geo Pocket Color
- Oric-1/Atmos
- PC
- PC Engine/TurboGrafx-16
- PSP
- PlayStation 1
- ResidualVM
- SAM Coupé
- Saturn
- ScummVM
- Sega 32X
- Sega CD
- Sega SG-1000
- Super Nintendo Entertainment System
- TI-99/4A
- TRS-80
- Vectrex
- Videopac/Odyssey2
- Virtual Boy
- WonderSwan
- WonderSwan Color
- Zmachine
- ZX Spectrum
Additionally you get PC emulators like DOSBox and the Apple II and there are a number of custom ports of PC games including DOOM, Duke Nukem 3D, Minecraft Pi Edition, OpenTTD and more!
Now obviously not all of the above emulators work flawlessly. Some are still labeled experimental and some systems even offer multiple emulators so you can customize it to the game you are trying to play – just in case one emulator happens to offer better compatibility than another. That said for the majority of the emulators I tried, especially for the older systems, things work great.
The RetroPie SD Card contains various folders that you simply copy the ROM or various bits of game data to. Once the files are there you just restart EmulationStation and it automatically discovers the new games.
Remote Storage
One thing I had to try was to see if I could use a remote share to play the games on the RetroPie off of my NAS instead. This would save quite a bit of space on the SD Card and as long as the transfer speeds between the Raspberry Pi and the NAS were decent enough should actually work.
I figured using a Windows share from the NAS was the easiest (this would also let you share games from basically any computer on your network). Here are the steps to set it up:
SSH into the Raspberry Pi
The default login for RetroPie is username pi and password raspberry. You can usually find it on the network by simply connecting to the device name retropie.
Add remote mounts to fstab
The most simple way to set up the remote mounts is to use fstab. This will ensure that the system gets the share as soon as it boots up. However you might run into problems booting the RaspberryPi if it can’t find the share on the network… so that is something to keep in mind.
Open up /etc/fstab (I used nano):
sudo nano /etc/fstab
Then add a line that looks like this to the end of the file
//{the location of the share} /home/pi/RetroPie/roms/{the location to mount it} cifs guest,uid=1000,iocharset=utf8 0 0
replacing the pieces in { brackets } with where you actually want things to mount. So for example let’s say the NAS is at IP address 192.168.1.50 and you wanted to mount a share on the NAS called SNES that contains SNES ROMs for RetroPie. First I would recommend creating a new sub-directory in the standard SNES ROMs location so that you can have both ROMs on the SD Card and remote ones:
mkdir /home/pi/RetroPie/roms/snes/NASGames
Then you would add something like this to your fstab file:
//192.168.1.50/SNES /home/pi/RetroPie/roms/snes/NASGames cifs guest,uid=1000,iocharset=utf8 0 0
The next time you boot up your Raspberry Pi it should successfully add that remote share and show you any SNES ROMs that are on the NAS in RetroPie!
After testing a few remote games this way I can say that it does indeed work well (via WiFi no less!). This is especially true for the older systems where game size is only a few KiB or MiBs. When you start to get into larger PC or disc based games were the sizes are in the hundreds of MiB it still works decently well but the first time you access something you might notice a bit of a delay. Thankfully Linux does a decent job of caching the file data after it’s read it once and so subsequent reads are much faster. That said if you had a good wired connection I have no doubt that things would work even more smoothly.
Portable Console? Best Console? A bit of both.
The RetroPie project is really neat, not only for its feature set but also because as a games console it’s one of the smallest and has the potential to have one of the largest games library ever!
If you like to play classic games then I would seriously recommend giving RetroPie a try.
This post originally appeared on my website here.
Leave a Reply