The RetroPie Project

Welcome to the RetroPie Project. This page provides information about all the pieces of the projects, the goals and should give you an understanding of what the RetroPie Project is.

The RetroPie Project started with the idea of turning the Raspberry Pi into a retro-gaming console and evolved ever since. Besides emulators and front-ends, a full retro-gaming experience also involves game pads or joysticks. The project offers approaches for software as well as hardware questions. In the following, you can find more detailed descriptions about the individual components of the project. The rest of this article is structured according to the following questions:

Let us start with the question:

What is the RetroPie Project?

The RetroPie Project is a collection of works that all have the overall goal to turn the Raspberry Pi into a dedicated retro-gaming console. The project uses Raspbian as OS at the bottom and integrates a large set of emulators for a wide variety of computer systems from the past decades. Besides the emulators, also a graphical front end and a lot of other software features are part of the project to let your nostalgic memories revive. The RetroPie Setup Script is a central piece of software for the installation and configuration of these components. There exists an SD-card image with a complete installation by the RetroPie Setup Script that comes with all supported emulators and functions. Besides the software aspects the RetroPie Project also consists of a solution for connecting certain original game pads directly to the Raspberry Pi. The RetroPie GPIO Adapter is a small piece of hardware that supports the connection of the game pads while also adding a push button and circuitry protection.

What is the RetroPie Setup Script?

retropiesetup2The RetroPie Setup Script lets you install and configure all the emulators, front-ends, drivers, and other components for your retro-gaming console. Technically, it is a bash script that consists of a few thousand lines of code and is run from the command line. The complete sources are hosted at Github to support collaboration, feedback, bug reporting, and pull requests.

And what is the RetroPie GPIO Adapter?

wpid-Photo-19.10.2012-1955.jpgThe RetroPie GPIO Adapter is a dedicated GPIO adapter for the Raspberry Pi that allows an easy and safe connection to, for example, two NES or SNES controllers. It provides circuitry protection against transients and over currents as well as a momentary switch button for arbitrary use. A step-by-step guide for getting started with the RetroPie GPIO Adapter can be found here.

The adapter is designed such that it fits perfectly in the laser-cut acrylic case "PetrockBlock PIE". While the case has openings for power supply, HDMI, Ethernet, RCA and audio, it also has cut-outs for a GPIO ribbon cable and, furthermore, for two SNES connectors.


SNESDev is a user-space device driver especially written for the RetroPie GPIO Adapter. It implements two (S)NES game controllers and a virtual keyboard for up to two (S)NES controllers and a button that are connected to the GPIO pins of the Raspberry Pivia the RetroPie GPIO Adapter. The sources of SNESDev are hosted at Github and everyone is invited to contribute!

What is the RetroPie SD-card image and it's features?

The RetroPie SD-card image is a ready-to-use image that provides a full installation of all systems and functions that are supported by the RetroPie Setup Script. Here is a short description about the features of the image:


  • Complete installation of all available emulators that are supported by the RetroPie Setup Script (see section "supported systems/emulators for details")
  • Automatic start of Emulation Station, the front-end for browsing and running the ROMs. Emulation Station is maintained by Aloshi, who is also hosting the sources of Emulation Station at Github.
  • Pre-configured splash screen that can be customized with the RetroPie-Setup Script
  • SAMBA shares for each system for copying ROMs on the RPi via network
  • USB daemon for copying ROMs on the RPi via USB stick

Supported systems/emulators

Version 1.9 of the RetroPie SD-card includes emulators for the following systems:

  • Amiga (UAE4All)
  • Apple II (LinApple)
  • Apple Macintosh (Basilisk II)
  • Armstrad CPC (CPC4RPi)
  • Arcade (PiFBA, Mame4All-RPi)
  • Atari 800
  • Atari 2600 (RetroArch)
  • Atari ST/STE/TT/Falcon
  • C64 (VICE)
  • CaveStory (NXEngine)
  • Doom (RetroArch)
  • Duke Nukem 3D
  • Final Burn Alpha (RetroArch)
  • Game Boy Advance (gpSP)
  • Game Boy Color (RetroArch)
  • Game Gear (Osmose)
  • Intellivision (RetroArch)
  • MAME (RetroArch)
  • MAME (AdvMAME)
  • NeoGeo (GnGeo)
  • NeoGeo (Genesis-GX, RetroArch)
  • Sega Master System (Osmose)
  • Sega Megadrive/Genesis (DGEN, Picodrive)
  • Sega Mega-CD (Picodrive)
  • Sega 32X (Picodrive)
  • Nintendo Entertainment System (RetroArch)
  • N64 (Mupen64Plus-RPi)
  • PC Engine / Turbo Grafx 16 (RetroArch)
  • Playstation 1 (RetroArch)
  • ScummVM
  • Super Nintendo Entertainment System (RetroArch, PiSNES, SNES-Rpi)
  • Sinclair ZX Spectrum (Fuse)
  • PC / x86 (rpix86)
  • Z Machine emulator (Frotz)

If you would like to have another emulator supported by RetroPie, feel free to post it!

I would like to contribute! How could I do that?

The RetroPie Project would not exist, if there were not all the other great open-source projects that are combined and remixed here. All these projects evolve by the support of many people. The RetroPie Project evolves in the same way and there are many possibilities for every single one who likes to contribute in one or another way:

  • Take part in the discussions in the comments sections of the blog
  • Join the forum to post questions and support others
  • Propose enhancements or report bugs at the repositories of the individual projects
  • Inspire others by writing about your project in the forum
  • Get gadgets from the store or donate a coffee or two

Tell me about the related blog posts!

Here, you find a summary of all essential posts that are related to the RetroPie project, which started with the post about SNESDev.

  • The idea about the Raspberry Pi as a universal console and the description of a hardware interface for NES/SNES controllers. The beginning of the RetroPie project.
  • An assembly guide for connecting the controllers to the Raspberry Pi.
  • The RetroPie Setup script: An auto-installer and maintaining script that should make the whole software part easy.
  • PetRockBlock PIE, the case for the Raspberry Pi with pre-cut slots for two SNES connectors.
  • A wiki for the RetroPie script and all components that can be installed with it.
  • A GPIO driver for connecting (S)NES Controllers via the GPIO pins of the RPi.
  • The RetroPie GPIO adapter board: a dedicated GPIO adapter for the Raspberry Pi that allows an easy and safe connection of up to two NES or SNES controllers.
  • RetroPie Project SD-card image for download.
  • Recipe for creating the RetroPie image download.
  • A step-by-step guide for getting started with the RetroPie GPIO Adapter
  • Pingback: Super Pi Boy, czyli Gamboy DMG i Raspberry Pi

  • Pingback: Super Pi Boy, czyli Gameboy DMG i Raspberry Pi

  • p-dude

    add a nintendo DS emulator. NOW.

  • Pingback: Raspberry Pi fun | Dr Samuel George

  • Pingback: Turning my raspberry pi into a NAS | Dr Samuel George

  • Pingback: The Pac-Man Bus Stop For Gamers at Heart - Tech key | Techzone | Tech data

  • Pingback: The Pac-Man Bus Stop For Gamers at Heart - RaspberryPiBoards

  • Pingback: The Pac-Man Bus Stop For Gamers at Heart | Ad Pub

  • Pingback: The Pac-Man Bus Stop For Gamers at Heart | Hack The Planet

  • FishFishmac

    Can someone help me out?
    I've downloaded the newest file from the download section and if I want to open the file "RetroPieImage_ver2.3.img" it says that it has an error and i've tried everithing.

    Could someone give me a DL Link for an non ".img" file?

  • the person

    its great got super mario bros 3 and for now i play on the keyboard

  • Pingback: Super Mega Ultra Pi Boy 64 Thingy Build -Use Arduino for Projects

  • Pingback: Bus Stop Video Game powered by a Raspberry Pi - Hacked Gadgets – DIY Tech Blog

  • Tom

    Would be nice to include Yabause (Sega Saturn Emulator) so I could play Dragon Force on my TV instead of the computer ;)

  • Pegabyte

    1. I'm planning on using this to make a game console. Is that okay? 2. Does this mean you can play PC exe games like Maplestory(for example)?

  • Pingback: Bus Stop Video Game powered by a Raspberry Pi | Hi-tech news

  • Pingback: RetroPie 安装与使用 | bits

  • Pingback: Retro Gaming Console with Raspberry Pi – Memories of playing River Raid on Atari … | Azee's Blog

  • Jason Whiteman

    I am using retropie as a vehicle for digging into the Raspberry for possible future prototype projects. Emulators provide a platform for taxing embedded hardware as they generally utilize high CPU utilization as well as using most features of the device.

    I am attempting to compile all from source. In doing so, I have a few general observations and then a few specific ones.


    1) My raspberry is unstable (no overclocking) as I am sure others may experience. Building from source takes "forever" and in doing so has a high chance the system will crash/lockup before completing the script. Upon reboot, the setup script does not appear to have an option to pick up where you left off. Selecting all packages (as was the initial run) will end up re-installing most packages as the script appears to delete directory contents as it goes even if a valid compile has taken place. For this use case, I would prefer an option to compile from source without deleting any folder contents. If this policy is followed, the makefiles will generally pick up a build where it left off. This is not an ideal solution, but reasonably simple to implement. A more utopian fix would be to also prevent re-download of source if the source is there (and complete).

    2) A second general failure is network availability or network sub-system failures which do not lock up the RPi. It may be useful to add some form of a retry hook for network commands where perhaps one could also edit this area and add ifdown / ifup or even USB resets to attempt to restore a connection.

    3) As mentioned before (other comments/announcements/TODOs) - some naming convention would be welcomed. One that unifies the directory names under /opt/retropie, the setup script list, and any other place a particular emulator is referenced. In order to figure out which package did not land - one is tasked with detective work reading README files (if available) or otherwise deducing which package in the setup script matches contents in a directory.


    1) I found the jzintv package did not compile. See error details in pastebin:

    The summary is that gcc complained about the "-msse" flag. Removing this flag led to another error (link error).
    2) The PiFBA package also showed a similar link error as jzintv
    3) The apple II package did not compile and required adding libcurl to compile. "out of the box" the apple II package failed on link due to lack of libcurl. There may be other packages - I followed the install instructions for the apple II package to get it to compile.

    • Jason Whiteman

      Some details on the pifba error (not detailed previously) can be found:

      Other general issues:
      4) The log appears to over-write for each package installed. At times during a batch compile-from-scratch run, I would see multiple packages with fatal errors (compile bailed out on link, network error, etc) without abort. The script would continue to run and possibly error on other packages. When reviewing the log files, I would only see the error state of the last package attempted - not a full listing of all errors. This may be by design - but consider perhaps a verbosity switch to allow logging everything.
      5) The error logs do not appear to redirect stderr into the log so some information is missing. The previous pastebins submitted have been generated by manually running make, ensuring the error has been exactly duplicated, and redirecting both stderr and stdout to a text file for submitting to pastebin. Consider adding stderr to the error logs.

%d bloggers like this: