Old Schoold by Harri Kauhanen

RetroArch based emulators [RetroPie series]

An image for RetroArch based emulators [RetroPie series]

RetroArch contributors via Wikipedia

The great things about RetroArch based emulators:

  • No need to learn one another emulator GUI, as we can use EmulationStation for game selection, and launch directly to the game
  • Emulation configuration becomes easier as you share some configs between emulators
  • Emulator-specific configs will use the same syntax on all emulators
  • Great controller mapping
  • Common shaders (scanlines) can be used

Please note that these notes assume RetroPie 2.X is being used, and things might have slightly changed on RetroPIe 3.X and any newer releases.

Controllers

With my RetroPie setup, the automatic controller support of RetroArch cannot be reliably used. If I did not have so many controllers to choose from, and I used GPIO over Retro-Bit USB adapters, I might have less of these issues. For instance, the Sega controllers of mine appear as one single controller (/dev/input/js0) to Linux/RetroArch.

I also don’t want to “Register RetroArch controller” feature of RetroPie as it will be easier to edit configs manually. IF I still wanted to use this tool, the process would be:

  • Exit EmulationStation
  • Remove all other controllers and leave Sega controller connected to Retro-Bit adapter port 1. Then:
    • cd RetroPie-Setup
    • sudo ./retropie_setup.sh
      • 3 SETUP
      • 317 Register RetroArch controller
      • Check RetroArch mappings
      • Enter your choises
      • ..and repeat for the next controller
    • The config will be generated to /opt/retropie/emulators/retroarch/configs

We prefer doing it all by hand:

  • NOTE! Confusingly /opt/retropie/emulators/retroarch/retroarch.cfg is not used
  • The (working) common setting are here: /opt/retropie/configs/all/retroarch.cfg
  • You may want to check out some existing mappings from /opt/retropie/emulators/retroarch/configs
  • ..or use Linux tools to figure them out
    • Make sure the controllers is being registered
      • PS3 #1 (may require PS-button pressed after connecting the controller)
      • jstest /dev/input/js2
    • Create a config
      • /opt/retropie/emulators/retroarch/retroarch-joyconfig -p1 -j2
    • Check RetroArch mappings
  • Remove any default config for emulators to avoid funny button mappings
    • sudo nano /opt/retropie/configs/all/retroarch.cfg
      • Comment out any controller mappings
      • Leave and adjust this line of config:
# Toggles between fast-forwarding and normal speed.
input_toggle_fast_forward = end # to avoid games running too fast
                                # if space bar hitted by accident

With this config none of your RetroArch-based emulators would not respond to your controllers, so we will configure them separately, and by the console. Check out the separate post for each system:

UPDATE: I currently use Bliss-Box 4-Play adapter instead of Retro-Bit controllers. EmulationStation does not work with 4-Play at all, so I use 8Bitdo Zero controller to navigate between emulators and games. Even if I play games with genuine old-school controllers, it’s sometimes handy to play few bits with 8Bitdo Zero. I boot the Zero with START + B mode and configure RetroArch common setting at /opt/retropie/configs/all/retroarch.cfg:

# ...

# 8Bitdo Zero

input_player1_a = "g"
input_player1_b = "j"
input_player1_y = "i"
input_player1_x = "h"
input_player1_start = "o"
input_player1_select = "n"
input_player1_l = "k"
input_player1_r = "m"
input_player1_left = "e"
input_player1_right = "f"
input_player1_up = "c"
input_player1_down = "d"

Scanlines

For my eyes, the original look of CRT and infamous scanlines look much better than big, blocky and sharp pixels.

TODO: finalize this paragraph once these have been set up.

Emulation controls

There are not many buttons to learn in RetroArch based emulators.

  • MENU + SELECT buttons on  game controller
  • Esc → Exit (if keyboard connected)