How to Create a Retro Gaming System

This tutorial describes how to create a Retro Gaming system using Emulation Station graphical front-end with Libretro, PCSX-Reloaded, and PCSX2 Emulators
Use this tutorial in conjunction with my YouTube video: How to Create a Retro Gaming System with Ubuntu


Libretro with its basic front-end RetroArch can emulate a wide range of systems using "Cores" from other standalone emulators.

In this setup I will be using the following emulators:

  • Stella - Atari 2600
  • Nestopia - NES
  • Snes9x - SNES
  • TGBDual - GameBoy, GameBoy Colour
  • VBAM - Game Boy Advance
  • GenesisPlusGX - Sega MegaDrive / Genesis, and SegaCD

Emulation Station is a nice Game Launcher and provides a "10 foot" GUI Interface, we will be using it with all the above Emulators.

sudo add-apt-repository ppa:libretro/testing
sudo add-apt-repository ppa:emulationstation/ppa
sudo apt-get update
sudo apt-get install retroarch
sudo apt-get install libretro-genesisplusgx libretro-snes9x libretro-vbam libretro-nestopia libretro-tgbdual libretro-stella
sudo apt-get install emulationstation emulationstation-theme-simple
RetroArch Config

Download Config file for RetroArch (optional)

wget http://quidsup.net/tutorials/retro/retroarch.zip

Unzip to /home/you/.config/retroarch

RetroArch Joypad setup

Navigation through the menus in RetroArch is done using the arrow keys, x to enter menu, and z to go back.

  • Launch RetroArch either via desktop shortcut, or typing retroarch in terminal
  • Press F1 to enter menu
  • Navigate to Settings > Input
  • Scroll down to Player 1 Joypad controls
  • Highlight each item, and press x, and then the appropriate button on your joypad
  • Navigate back through the menus by pressing z
  • Then Esc to exit
  • Your joypad settings will save when you close RetroArch
Sega 32x

I use Kega Fusion for Sega 32x, since GenesisPlusGX doesn't work with 32x CD games.

Note: You will need 32x BIOS Files, search on Google for them.

wget http://www.carpeludum.com/download/kega-fusion_3.63-2_i386.deb
sudo dpkg --force-architecture -i kega-fusion_3.63-2_i386.deb
sudo apt-get install -f
PCSX1

PlayStation 1 / PSX

Note: You will need PS1 BIOS Files, search on Google for them.

sudo apt-get install pcsxr
PCSX2

PlayStation 2 / PS2

Note: You will need PS2 BIOS Files, as always you can search on Google for them.

sudo add-apt-repository ppa:gregory-hainaut/pcsx2.official.ppa
sudo apt-get update
sudo apt-get install pcsx2-unstable
Emulation Station

Setup folders for your games

Store all your games in /home/you/ConsoleGames/System, e.g.

  • /home/you/ConsoleGames/32x
  • /home/you/ConsoleGames/Atari2600
  • /home/you/ConsoleGames/GameBoy
  • /home/you/ConsoleGames/GameBoyAdvanced
  • /home/you/ConsoleGames/GameBoyColour
  • /home/you/ConsoleGames/MegaDrive
  • /home/you/ConsoleGames/Sega CD
  • /home/you/ConsoleGames/SegaBios
  • /home/you/ConsoleGames/SNES
  • /home/you/ConsoleGames/SonyBios
  • /home/you/ConsoleGames/SonyPS1
  • /home/you/ConsoleGames/SonyPS2

Pre-Setup Emulation Station Config

I have provided a pre-setup Config file

wget http://quidsup.net/tutorials/retro/emulationstation.zip

Unzip to /home/you/.emulationstation

Customising Emulation Station Systems Config

The Systems config can be found in ~/.emulationstation/es_system.cfg, and consists of the format:

<systemList>
  <system>
    <name></name>
    <fullname></fullname>
    <path>~/ConsoleGames/</path>
    <extension></extension>
    <command>%ROM%</command>
    <platform></platform>
    <theme></theme>
  </system>
</systemList>

For Example:

<systemList>
  <system>
    <name>snes</name>
    <fullname>Super Nintendo Entertainment System</fullname>
    <path>~/ConsoleGames/SNES</path>
    <extension>.smc .sfc .SMC .SFC</extension>
    <!--<command>snes9x-gtk %ROM%</command>-->
    <command>retroarch -L /usr/lib/libretro/snes9x_libretro.so %ROM%</command>
    <platform>snes</platform>
    <theme>snes</theme>
  </system>
  
  <system>
    <name>megadrive</name>
    <fullname>Sega Mega Drive</fullname>
    <path>~/ConsoleGames/MegaDrive</path>
    <extension>.bin .smd .BIN .SMD</extension>
    <command>retroarch -L /usr/lib/libretro/genesis_plus_gx_libretro.so %ROM%</command>
    <platform>megadrive</platform>
    <theme>megadrive</theme>
  </system>
  
  <system>
    <name>segacd</name>
    <fullname>Sega CD</fullname>
    <path>~/ConsoleGames/Sega CD</path>
    <extension>.bin .iso</extension>
    <command>retroarch -L /usr/lib/libretro/genesis_plus_gx_libretro.so %ROM%</command>
    <platform>segacd</platform>
    <theme>segacd</theme>
  </system>
  
  <system>
    <name>sega32x</name>
    <fullname>Sega 32x</fullname>
    <path>~/ConsoleGames/32x</path>
    <extension>.bin .32x .iso</extension>
    <command>kega-fusion %ROM%</command>
    <platform>sega32x</platform>
    <theme>sega32x</theme>
  </system>
  
  <system>
    <name>atari2600</name>
    <fullname>Atari 2600</fullname>
    <path>~/ConsoleGames/Atari 2600</path>
    <extension>.bin .BIN</extension>
    <command>retroarch -L /usr/lib/libretro/stella_libretro.so %ROM%</command>
    <platform>atari2600</platform>
    <theme>atari2600</theme>
  </system>
  
  <system>
    <name>gb</name>
    <fullname>GameBoy</fullname>
    <path>~/ConsoleGames/GameBoy</path>
    <extension>.gb .GB</extension>
    <command>retroarch -L /usr/lib/libretro/tgbdual_libretro.so %ROM%</command>
    <platform>gb</platform>
    <theme>gb</theme>
  </system>
  
  <system>
    <name>gbc</name>
    <fullname>GameBoy Colour</fullname>
    <path>~/ConsoleGames/GameBoyColour</path>
    <extension>.gbc .GBC</extension>
    <command>retroarch -L /usr/lib/libretro/tgbdual_libretro.so %ROM%</command>
    <platform>gbc</platform>
    <theme>gbc</theme>
  </system>
  
  <system>
    <name>gba</name>
    <fullname>GameBoy Advanced</fullname>
    <path>~/ConsoleGames/GameBoyAdvanced</path>
    <extension>.gba .GBA</extension>
    <command>retroarch -L /usr/lib/libretro/vba_next_libretro.so %ROM%</command>
    <!--<command>retroarch -L /usr/lib/libretro/vbam_libretro.so %ROM%</command>-->
    <platform>gba</platform>
    <theme>gba</theme>
  </system>
  
  <system>
    <name>psx</name>
    <fullname>Sony PSX</fullname>
    <path>~/ConsoleGames/SonyPS1</path>
    <extension>.iso .ISO .bin .BIN</extension>
    <command>pcsx -nogui -cdfile %ROM%</command>
    <platform>psx</platform>
    <theme>psx</theme>
  </system>

  <system>
    <name>ps2</name>
    <fullname>Sony PS2</fullname>
    <path>~/ConsoleGames/SonyPS2</path>
    <extension>.iso .ISO .bin .BIN</extension>
    <command>pcsx2 --fullscreen %ROM%</command>
    <platform>ps2</platform>
    <theme>ps2</theme>
  </system>
</systemList>
Test it out

Now to take it for a test run...

Emualtion Station will automatically ask you to configure a joypad on first run.


Back