Retropie is a special linux distribution containing EmulationStation (a multi-emulation program), including pre-configured the most system emulators, supports most controls and runs on Raspberry Pi. What else to ask for?;
Its installation is very simple, thanks to the RetroPie Project, which gives us an easy way to add the emulator to Raspberry Pi using EmulationStation. And because Raspberry Pi is particularly cheap (~ $50 plus a case for it), you can make it a gift to yourself so you have a machine exclusively for emulators (something I wanted to do and I ended up in this system). It recognized easily an old PS3 wireless controller that I had (MadCatz), while my TV has a USB jack, where Raspberry Pi is powered from, making it even simpler to install.
RetroPie supports the most known systems (view the whole list here) (in brackets the emulator):
Atari 2600 (Stella)
Apple II (LinApple)
Commodore 2001 Series, Commodore VIC-20, Commodore C 64 (και C64 Direct-to-TV), Commodore CBM-II, Commodore Plus/4, Commodoce 128 (Vice)
Atari 800 (Atari800)
Intellivision (jzintv)
Vectrex (Vecx)
ZX Spectrum (Fuse FBZX)
MSX (OpenMSX)
Nintendo Entertainment System (FCEUMM)
Apple Macintosh (Basiliks II)
Amstrad CPC (CPC4Rpi)
Commodore Amiga (UAE4ALL)
Atari ST (Hatari)
Sega Master System, Sega Genesis, Sega CD, Sega 32X (Picodrive)
Sega System 16, CP System, CP System II, CP System III, Neo Geo - Arcade (Final Burn Alpha)
TurboGrafx-16 (Mednafen)
Atari Lynx (Handy)
Nintendo Gameboy (Gambatte)
Sega Game Gear (Osmose)
Super Nintendo Entertainment System (PocketSNES, SNES9X, PiSNES)
Sony Playstation (PCSX Rearmed)
Nintendo 64 (Mupen64plus)
Game Boy Color (Gambatte)
Game Boy Advance (GPSP)
ScummVM (ScummVM)
A Raspberry Pi (This tutorial is based on Raspberry Pi model. For the Raspberry Pi 2 model further settings may needed)
One SD card of at least 4GB
RetroPie image file (see below)
A high capacity USB stick or a USB HDD (for Roms, the external drive may require extra power)
A controller (for games) and a keyboard (for settings/commands)
Internet access for Raspberry Pi
Many Roms and Free Time :)
There are two options to install RetroPie and I will refer to the simplest. The most complex way, which requires you to write the necessary commands in a terminal window of Raspbian (it takes about 17-20 hours to complete the installation and you must already have Raspbian installed, ideal for those who do not want to format their OS), it can be found here.
Download the complete image from here (for Raspberry Pi, you can donwload the image for the Raspberry Pi 2) and write it to an SD card (minimun 4 GB), either with a program (eg Win32 Disk Imager) or with Linux by using the dd command (see here how).
Note: If you got the "illegal instruction: $es_bin $@" message during installation, you have downloaded the wrong image file.
Because, as I mentioned, the image is ready to go, by going to the SD card and booting the Raspberry Pi, you will see the splash screen of Retropie and then the EmulationStation home screen. Also, if you have a controller connected, it will ask you to set it up. Do not worry if it does not show all the emulators, this is because it couldn't find its roms, no matter if it is installed in the system.
Here you need to make some adjustments before your system is ready. To get started, press F4 to enter the terminal screen and write the command:
sudo raspi-config
We will see a new window. From there, select the first option so that we have the entire SD card space at our disposal. Also select "Memory Split" and enter "512". Now press Enter.
Next, select the the next option, "Overclock" and define one of the last two options. Again, press Enter, then Finish and Reboot.
After Rebooting, the EmulationStation screen will appear again. We can now put our Roms either to the SD card or to a USB stick. You will use the second option that is the simplest. Note that RetroPie by default copies any Rom that finds in the "roms" folder of the USB to the SD card, which should be avoided if we have a small capacity card.
So connect the USB HDD/Stick, press F4 again and give the command:
cd /media
ls -l
This command will shows the USB HDD, and you need to write its name somwwhere (eg "/media/usb").
Now we need to open the EmulationStation's configuration file ans set it so it runs the Roms from our USB HDD, before you put your roms to the disk.
To create a backup from the configuration file, give this command:
sudo cp /etc/emulationstation/es_systems.cfg /etc/emulationstation/es_systems.cfg.bak
Now open the configuration file, and from there you can change the roms path for each emulator.
sudo nano /etc/emulationstation/es_systems.cfg
You do not have to do it for each one system but for those you want. For example, setting MAME's emulator to run the roms from the USB HDD should be like this:
fullname = MAME
name = mame-advmame
PATH = /media/usb/roms/mame (the default path is: "~/RetroPie/roms/mame-advmame")
When finish, press "ctrl+O" and then "ctrl+X". Now give this command:
sudo reboot
and when finish, you are ready to play the games of your choice, from your USB HDD or Flash.