RetroPieTerminal [dropcap]S[/dropcap]ome of you might have heard or notices that there has been an update of the RetroPie SD-card image recently. This is a major update with some big changes. This article describes these.

Major Changes

In the following, you will get an overview about the major changes that come with the update to version 2.0 version 2.1 of RetroPie.

EmulationStation 2

EmulationStation 2 was recently released after ten months of development. It is a major update that brings a new rock-solid look-and-feel. Also, it comes with an internal scraper for ROMs meta data and a new input configuration handling.

EmulationStation 2 also introduces some changes regarding a typical RetroPie installation. Here is a short list of important things related to EmulationStation 2:

  • SDL 2.0.1 is needed by EmulationStation 2. This can be installed with the RetroPie-Setup Script and is already located in the RetroPie SD-card image.
  • The binary of EmulationStation is located at /opt/retropie/supplementary/EmulationStation/
  • The theme files are now located at /etc/emulationstation/themes
  • The systems configuration file for EmulationStation, previously located at ~/.emulationstation/es_systems.cfg has moved to /etc/emulationstation/es_systems.cfg If you would like to customize it, you should copy it to ~/.emulationstation/es_systems.cfg and edit that file according to your needs.
  • As with the previous version of EmulationStation the input configuration is located at ~/.emulationstation/
  • EmulationStation 2 makes way more use of graphic elements. Depending on the number of emulated systems it is probable that you need a Raspberry Pi Model B with 512 MB shared RAM, where 256 MB are reserved for the GPU. This is the default configuration of the RetroPie SD-card image.

Also, EmulationStation 2 introduces a much nicer look-and-feel, an internal scraper for ROM meta data, and a simple way for maintaining multiple themes. Overall, it is an awesome update.

Folder Reorganization

The components that can be installed with the RetroPie-Setup Script were relocated to a user-independent location. In future updates, this will be used to better support updates and installation with the APT package system.

  • All components that come with RetroPie are relocated at /opt/retropie as root directory:
pi@raspberrypi ~ $ find /opt/retropie -maxdepth 1
/opt/retropie
/opt/retropie/emulatorcores
/opt/retropie/emulators
/opt/retropie/configs
/opt/retropie/supplementary

It can be seen that

  • The ROMs directory still resides in the user’s home directory and is located at /home/pi/RetroPie/roms per default.
  • Also the BIOS directory is still located in the user’s home directory at /home/pi/RetroPie/BIOS

Rebuild of all Components

All emulators and LibretroCores were compiled with their latest sources.

Reorganization of the RetroPie-Setup Script

The RetroPie-Setup Script has been rewritten and refactored heavily. The recent version of the RetroPie-Setup Script now allows to run all functionalities from command line by using the script retro_packages.sh that has become part of the RetroPie-Setup Script. While most users will not have a direct usage for this command line capability, this will make things easier to maintain in the long-term:

./retropackages.sh [sources|build|install|configure|package]

This is a list of valid commands:

Command-ID: Description: List of available actions [sources|build|install|configure|package]
--------------------------------------------------
100: RetroArch : dependencies sources build install configure
101: AdvMame : dependencies sources build install configure
102: Amiga emulator UAE4All : sources build install configure
103: Atari 800 emulator : sources build install configure
104: Armstrad CPC emulator : sources build configure
105: DOS Emulator Dosbox : install configure
106: Atari2600 emulator STELLA : install configure
107: Macintosh emulator : sources build install configure
108: C64 emulator VICE : sources build install configure
109: C64 ROMs : install
110: Duke3D Port : install
111: GameBoy Advance emulator : sources build configure
112: NeoGeo emulator GnGeoPi : sources build install configure
113: Atari emulator Hatari : install
114: MAME emulator MAME4All-Pi : sources build configure
115: Gamegear emulator Osmose : sources build configure
116: Intellivision emulator : sources build configure
117: Apple 2 emulator Linapple : sources build configure
118: N64 emulator MUPEN64Plus-RPi : sources build configure
119: SNES emulator SNES9X-RPi : dependencies sources build configure
120: FBA emulator PiFBA : sources build install configure
121: SNES emulator PiSNES : sources build configure
122: DOS Emulator rpix86 : install configure
123: ScummVM : install
124: ZMachine : install
125: ZXSpectrum emulator Fuse : install
126: ZXSpectrum emulator FBZX : sources build
127: MSX emulator OpenMSX : dependencies sources build configure
128: DOS emulator FastDosbox : sources build install
200: SNES LibretroCore PocketSNES : sources build configure
201: Genesis LibretroCore Picodrive : sources build install configure
202: Atari 2600 LibretroCore Stella : sources build configure
203: Cave Story LibretroCore : sources build configure
204: Doom LibretroCore : sources build configure
205: Gameboy Color LibretroCore : sources build configure
206: MAME LibretroCore : sources build configure
207: FBA LibretroCore : dependencies sources build configure
208: NES LibretroCore fceu-next : sources build configure
209: Genesis/Megadrive LibretroCore : sources build configure
210: TurboGrafx 16 LibretroCore : sources build configure
211: Playstation 1 LibretroCore : sources build configure
300: Update APT packages : install
301: Package Repository : install
302: SDL 2.0.1 : dependencies sources build install
303: EmulationStation : dependencies sources build install configure package
304: EmulationStation Theme Simple : install
305: Video mode script 'runcommand' : install
306: SNESDev : sources build install configure
307: Xarcade2Jstick : sources build install configure
308: RetroArch-AutoConfigs : install
309: Bash Welcome Tweak : install
310: Samba ROM Shares : install configure
311: USB ROM Service : install configure
312: Enable/disable Splashscreen : configure
313: Select Splashscreen : configure
314: RetroNetplay : configure
315: Modules UInput, Joydev, ALSA : install
316: Set avoid_safe_mode : install
317: Disable system timeouts : install
318: Handle APT packages : install
319: Auto-start EmulationStation : configure
320: Install XBox contr. 360 driver : install
321: Install PS3 controller driver : install
322: Register RetroArch controller : install
323: Install SDL 2.0.1 binaries : install
324: Configure audio settings : configure
==================================================

Later, this interface will also be used for generating Raspbian APT packages.

Upgrading from RetroPie Version 1.X

First of all, there is not automatic upgrade function, if you would like to migrate your configurations from a RetroPie version 1.X installation. That being said a migration is not too difficult. As described above most folder that previously were located at /home/pi/RetroPie are now located at /opt/retropie (Please note the upper and lower case here). So you need to copy the folder shown above to /opt/retropie The ROMs stay in /home/pi/RetroPie/roms Note that RetroPie version 2 has two ROM folders for arcade games now: fba and mame. These two folders are connected with the corresponding emulators (piFBA and imame4all-rpi per default).

Conclusions

The update to version 2.0 of the RetroPie-Setup Script together with the release of EmulationStation 2 and an updated RetroPie SD-card image introduce some major changes to the folder organization. EmulationStation 2 adds a new look-and-feel to the RetroPie experience.

However, all the restructoring and reorganization has probably introduced one or another bug. Please post any findings at the issues list of the RetroPie-Setup Script at Github and discuss possible improvements in the forum.
It is still needed to manually configure the various emulators. An automatic configuration of the controllers for the emulators would be a major gain for the user experience. The realization of this feature is not that easily to accomplish, though. But we will see with which ideas the community members will come up with …

If you think that there are important information missing in this post about the recent update, feel free to say so, e.g. in the comments below.