Raspberry Pi Emulators

RetroPie Installation (Windows)

Credit - MrVeste Youtube


1. Download the distribution from here (blog.petrockblock.com). Usually these are zipped (compressed) files ending in .zip or .gz (something like "distribution-name.zip").

2. Extract the image file from the downloaded .zip file, so you now have "distribution-name.img".
3. Insert the SD card into your SD card reader and check what drive letter it was assigned. You can easily see the drive letter (for example G:) by looking in the left column of Windows Explorer. You can use the SD Card slot (if you have one) or a cheap Adapter in a USB slot.
4. Download the Win32DiskImager utility (it is also a zip file).
5. Extract the executable from the zip file and run the Win32DiskImager utility; you may need to run the utility as Administrator! Right-click on the file, and select 'Run as Administrator'.
6. Select the image file you extracted above. Select the drive letter of the SD card in the device box. Be careful to select the correct drive; if you get the wrong one you can destroy your data on the computer's hard disk! If you are using an SD Card slot in your computer (if you have one) and can't see the drive in the Win32DiskImager window, try using a cheap Adapter in a USB slot.
7. Click Write and wait for the write to complete.
8. Exit the imager and eject the SD card.
9. You are now ready to plug the card into your Raspberry Pi.

If your SD card is larger than 4GB, you need to expand the root file system in order to use the whole SD card. Once you've loaded up your Pi, go into the shell by pressing F4. Run

sudo raspi-config

and choose "expand root fs" from the menu. You need to restart your RPI afterwards.


Updating RetroPie and adding roms

Credit - MrVeste Youtube

Roms available at emuparadise.

In-depth written tutorial, the video above covers most much more simply.

1. Plug your Raspberry Pi into a screen via HDMI, plug in the ethernet cable, and plug in your USB Keyboard. 

2. Power on your Raspberry Pi by plugging it into your Micro USB Power Supply.

3. Once the Raspberry Pi boots up, it should jump right into EmulationStation and have you map out the controls (keep in mind this does not map controls for the emulators, only the EmulationStation menu) – Just follow through the prompts here. We will come back later and configure it with the controller, but for now, that is not important.

4. Press F4 to exit EmulationStation. This will bring you to the terminal. Type in:


Press enter.

5. Take note of your IP address, it is the string of numbers following the line “inet addr“. It will probably look something like “″ - Write this string of numbers down somewhere.

6. Type:

sudo raspi-config

And press enter.

7. You should see several options. Select the second option, "expand_rootfs" and press enter. (This will take a few seconds.)

8. You will be presented with a message saying that the partition will be resized on your next reboot. Press enter. 


Configuring the Keyboard

1. Back at the Raspi-config screen, select the 4th option “Configure_keyboard” and press enter. (This will take a few seconds to load.)

2. You will be presented with a list. Select the option that best suites your keyboard. I selected “Generic 105-Key (Intl) PC”. Press enter.
3. Select your preferred keyboard layout. I scrolled down to the bottom of the list and selected “Other” and pressed enter. In the expanded list, I chose English(US) and pressed enter. This brought me to keyboard layouts for English(US). I scrolled up to the top and selected English (US). Press Enter.
4. In the next screen, you can select special options for your keyboard layout. I selected “Default for this keyboard layout”. Press Enter.5
5. In the next menu, you can setup a “Compose Key”, if you would like one of these, you can configure it here. I selected “no compose key.” Press Enter.
6. The next popup gives you the option to end the X Session with the Ctrl+alt+delete key combo. I selected yes for this and pressed enter.(This is not necessary, but useful to have if you need it, which you probably won’t).


Configuring your Raspi-config Settings

1. Back at the Raspi-config, select the 6th option, “change_locale” and press enter.

2. Scroll down this list, and press “space” on the locales that you want to add. (I used the spacebar to de-select “en_GB.UTF-8 UTF-8″ as I am in the US, so I do not want the english United Kingdom locale, but the English United States locale) and then scrolled down to “en_US.UTF-8 UTF-8” and pressed space to select it, and then press enter.
3. In the next screen, once again, select your locale, (I selected “en_US.UTF-8 UTF-8″) and press enter. (Setting the locale will take several seconds.)
4. Back at the Raspi-config, select the 7th item on the list, “change_timezone” and press enter. 
5. This will ask you to select your region, (I selected “US” at the bottom of the list) and press enter.
6. Then select your time zone within your region, (I am on the East Coast of the US, so I selected “Eastern”) and press enter.
7. Back to the Raspi-config menu again, this time select the 8th item, “memory_split”, and press enter.
8. Depending on what version of the Raspberry Pi you have, you can do different things here. I have a 512mb Model B Raspberry Pi. I have previously tried this setup on the 256 model, and in both cases, I found a 50/50 split to work well. If you have a 256MB Model B, enter “128″ into the field, if you have a 512MB Model B, enter “256” into the field. Press enter.
9. You will have the option to overclock here, but we are going to skip that for now. If you do any overclocking before the updates and installations, it can cause issues.
10. Back at the Raspi-config menu, press the right arrow key twice to select “finish” and then press enter.
11. It will ask you if you want to reboot now, select “yes” and press enter. It will take some time to reboot, as it is applying all the settings on the next startup.


Moving ROMS Over To Your Raspberry Pi

Keep your Raspberry Pi powered on!

First, you need to go get some 100% legitimate homebrew non-pirate ROMs, because that’s the only kind you would ever download, right?

On your primary computer, go download, install, and run the program WinSCP – www.winscp.net.

When WinSCP opens, it will be asking for details about a session.

  • File protocol: select SCP.
  • Host name: enter the IP address of your Raspberry Pi (You wrote this down before, remember? my example was
  • User name: pi

Press “Login”.

It will prompt you for a password. Enter the password that you have setup for the user “pi” (raspberry by default).

Once it connects, it should show a file browser of your primary computer on the left, and your Raspberry Pi on the right.

On the right (your Raspberry Pi) open the folder “RetroPie”, and then open the folder “roms”.

On the left, open the folder where you keep your ROMs on your primary computer.

Drag and drop the ROMs from your primary computer into the corresponding system’s folders on the Raspberry Pi (SNES ROMs go in the “snes” folder, NES ROMs go in the “nes” folder etc…)

When you drag them over, you will get a prompt to copy the files over, click on copy. Depending on how many files you’re moving, this may take a while. When you are done copying your ROMS over, exit out of WinSCP.

Your Raspberry Pi is more or less ready to play some games. Go back to your Pi, and put in your user ID and password.

EmulationStation should boot up.


Configuring Controllers and Other Settings

While the Raspberry Pi is powered off, plug in one of your USB controllers (if you are using a controller other than the one specified in this guide, you may have to install drivers first, it depends on the controller) – You should also still have your keyboard plugged in.

Power on your Raspberry Pi by unplugging it, and then plugging it back in again.

Your Pi should go through its regular startup, and launch EmulationStation.

Before we can configure your controller for working with EmulationStation, we need to get rid of the .cfg file which currently should be telling ES to work with your keyboard. So from the EmulationStation main menu, press F4 to get back to your terminal.

cd .emulationstation

sudo rm es_input.cfg

Note: If you want the ability to navigate the EmulationStation menu with more than one controller (2 Player), you should shut down your Raspberry Pi now, plug in your second controller, and then power it back on, and skip the next 2 lines.



This should boot right into EmulationStation

It should recognize that a controller has been plugged in. If it does not, your controller may need a driver. Follow the on-screen instructions to setup your controller with EmulationStation. When it says press up, press up on your controller, when it says press down, press down etc…

It will also prompt you to input the 2nd player menu controls, so if you have a second controller plugged in, you can follow the prompt. Otherwise hold down any button on the P1 controller for a bit, and it will skip it.

Once you are done with this, it should boot up EmulationStation. You should now be able to use your controller to navigate the EmulationStation menu. Keep in mind that this is only the controls for the frontend, not for the emulators. We’ll get to that now.

Press F4 to exit EmulationStation and go back to terminal.

cd RetroPie/emulators/RetroArch/installdir/bin
./retroarch-joyconfig >> ~/RetroPie/configs/all/retroarch.cfg

Next you are going to use your controller and follow the prompts. If your controller has less buttons than the config tries to setup (My SNES controllers lack the R2/L2, R3/L3, and Joysticks), then you need to select a dummy button (I used left trigger) for the buttons you don’t have. We will edit those out later. Once this is done, it will bring you back to the terminal.

At this point, you should be ready to game with one controller. If you type sudo reboot in your terminal, it should restart, and bring you into EmulationStation on the restart. You can then use the controller to select a game and play it. To setup a second controller, go back to your terminal (Esc to exit game, F4 to exit EmulationStation) and follow the next steps:

sudo shutdown -h now
When your Pi is done shutting down, unplug your controller, and plug in your mouse. Once you have done this, unplug the power from your Pi, and plug it back in. When EmulationStation boots up, press F4 to exit it and go to the terminal.


This will boot you up into the Raspian LXDE GUI, it should look pretty similar to a Windows desktop.

First, click on the LXDE menu in the bottom left (What would be your “start” menu if this was windows), and then select “Accessories” and then “File Manager” – This is your file explorer. Open the folder “Retro Pie” and then open “configs” and then open “all”

In here, you can find the retroarch.cfg file. This is a configuration file that applies its properties to all of the emulators. Open this text file.

Alternatively, you could have opened the folder/config for a specific Emulator. This could be useful for making configuration settings specific for each console. Let’s say you want the controller mappings for NES to be different than what you have setup for SNES. You could go into the NES folder under “configs” and edit the retroarch.cgfto your likings, and do the same for the retroarch.cfg file inside of the SNES folder. The code written in the folders for the specific emulator will override the code written in the “all” folder/config.

Scroll down to the bottom of the retroarch.cfg file, and you should see the lines for all of the button mappings that you did just a minute ago.

If you used a “dummy” button like I did, you are going to see that a lot of the buttons will have the same value. Because I am using a SNES USB controller, I’m going to delete the lines that I won’t be using. I am going to delete the lines:

input_player1_l2_btn = "4"
input_player1_r2_btn = "4"
input_player1_l3_btn = "4"
input_player1_r3_btn = "4"

I am deleting these because I have no L2 or R2 buttons on the controller, and I also have no L3 or R3 buttons.

Further down in the .cfg file, I am also going to delete the Joystick configurations, because the controllers I have, use only a D-Pad. So delete all the line “input_player1_l_x_plus_btn = “x”” and all of the lines under it.

Now the only things you should have left, are the buttons that exist on an SNES controller (A, B, Y, X, L, R, Start, Select, Up, Down, Left, Right), and one line at the top defining the first controller plugged in as “Player 1″

Now highlight the line:

input_player1_joypad_index = “0″

and also highlight all of the lines under that.

Copy that block of text, and then under it, press enter to add a space, and paste a second copy of it. You should now have 2 blocks of identical text. In the second block, we are going to make some changes to let the system know there will be a Player 2 controller, and map the buttons for it.

Change the top line of your second block of text to:

input_player2_joypad_index = “1″

Now go down the lines of code, and wherever it says “player1″ change it to “player2″

For example, in the second block of text, change

"input_player1_a_btn = "1"

input_player2_a_btn = "1"
Keep in mind that this specific setup will only work if you are using 2 identical controllers. In my setup, I have 2 of the same SNES USB controllers, so the button mappings are exactly the same. If you have 2 different controllers, you will have to run the retroarch-joyconfig again for the second controller, and make the appropriate changes to the retroarch.cfg for the mappings of Player2_joypad to reflect the correct controls.


You can setup an “exit emulator” button combination that will bring you back to the emulator/game selection screen. When you do this, it will dump the ROM and keep any save files that you have. There are other ways this can be accomplished; we will go over those later.

So at the bottom of the retroarch.cfg, enter these two lines

input_enable_hotkey_btn = "X"
input_exit_emulator_btn = "Y"

Replace X with one of the numbers that corresponds to a button on your controller, and replace Y with a different number. In my setup, I wanted it to exit the emulator by pressing Select + Start. So I replaced X with the number corresponding to my select button (I think it was 8), and I replaced Y with the number corresponding to my start button (I think it was 9)

Once you have made all the changes you need, press ctrl+s to save the configuration file. You can now close the configuration file. Back at the desktop, click on the LXDE Start menu, and select “logout”. It will prompt you again, so click “logout”.

Back at the terminal.

sudo shutdown -h now

Once the Pi is done shutting down, unplug your mouse, keyboard and power supply. With the Pi powered off, plug in your two USB controllers. Plug the power supply back into the Pi.

You should now be ready to rock some oldschool emulation with 2 controllers plugged into your Pi, and no mouse or keyboard necessary. Your system will boot into EmulationStation. Use the P1 controller to select and play a game, and P2 will act as P2 in the games (usually… Some ROMs seem to have difficulties). The only thing left is making RetroPie look nice.

Note: If you did not setup an “exit emulator” button combo, there will be no way for you to keep your save files. Here are some other options for setting up a way to dump your save files.

Solution 1: Wire a button to your GPIO pins to act as a keyboard that presses “esc” – you can then use this button to dump the save files and go back to the EmulationStation. Any time the Pi is powered off after that, your save files will still be in tact

Solution 2: Use a Powered USB hub/splitter and also have a keyboard plugged in. You can then use the keyboard to exit the game. You can also use the keyboard for other features like save and load state. (In my personal setup, I programmed a Teensy to act as a keyboard. I then wired it to my reset switch. When the reset switch is pressed, the Teensy presses “esc” and exits the emulator – this will not be covered in this tutorial, as it is likely unnecessary)

Solution 3: If you have a controller that is not a SNES replica, you can add the line “input_exit_emulator_btn = “x”” where “x” is the extra button on your controller that you have set aside to save and exit the game. You can find out what the definition of “x” is by using the retroarch-joyconfig tool and pressing that button (it should display the number associated with the button you are pressing as you go through the script)

Solution 4: (advanced and requires soldering): This is actually the preferred method for advanced users/hobbyists. For your entire controller setup, use a RetroPie GPIO Adapter (http://petrockblog.wordpress.com/2012/10/21/the-retropie-gpio-adapter/) or make your own GPIO setup . This way, you can use authentic SNES controllers, and the Adapter has a button on it that can be programmed as the exit emulator button (or you can make your own button hooked up to the GPIO). You will also have to install the gamecon GPIO driver which is available in the RetroPie-Setup.


Making EmulationStation Look Pretty

Now that you have a sweet micro retro gaming rig, it’s time to make it look nice. Plug in a keyboard into your Raspberry Pi and turn it on. When it boots into EmulationStation, press F4 to quit. This will bring you back to the terminal.

cd RetroPie/supplementary
git clone http://github.com/elpendor/ES-scraper
cd RetroPie-Setup
sudo ./retropie_setup.sh

When the RetroPie setup starts, select the 3rd option, “Setup” (only if you have run one of the installations above) and press enter.

We need to turn off the EmulationStation on boot for this next part, so go down to the 5th option – “Start Emulationstation on boot?” and press enter.

Select option 11 - “Run ‘ES-scraper” and press enter.

At the next menu, select the first option “(Re-)scape of the ROMs directory”, and press enter. If you add more games to your directories in the future, just run this again, and it will download art for all of the missing games.

Keep in mind that you need to be connected to the internet for this to work

It’s now going to search for, download, and install box art and game descriptions for all of the ROMs that you have. Depending on how many roms you have, this will take a different amount of time. When that is done, it will bring you back to the RetroPie setup screen. Press tab to select cancel, and then press enter.

sudo shutdown -h now

After your Pi is powered down, unplug the power supply. Then plug in your 2 controllers, and plug the powersupply back in.

You are now done with your Setup.