RetroArch based emulators [RetroPie series]
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
You may not want to follow these instructions if you use GPIO for controllers, and possibly use only (e.g.) SNES controllers for every emulator.
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
- Make sure the controllers is being registered
- 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)