In the past month I have seen a few guides about configuring RetroArch, while good some fail to explain some concepts, so I thought why not, I’ll make a series of blog posts about configuring RetroArch, starting from the basics.
- Core — a core is a program that runs in RetroArch (or another libretro frontend)
- Frontend — a frontend in this context is a program that can run libretro cores (RetroArch, Minir, Kodi’s Retroplayer are examples of this)
- Content — content is a game/program that is run by a core, some cores also require no content
- Retropad — retropad is RetroArch’s input abstraction controller, it’s the interface between the physical controller and the core inputs
- Save Files — save files are saves that are made from within a game, usually cross platform and should work across emulators in most cases
- Save States — save states are snapshots of the content menory at a particular moment, these are not always cross platform and most certainly won’t work on a different emulator that the one used to create them
- System Files — additional files that might or not be part of the romset that might be needed to get some content to work (usually referred to by the BIOS term)
- Autoconf Profile — a configuration file that has button definitions for a particular gamepad
First thing is to download RetroArch.
Windows/OSX users should browse to our buildbot and go into the nightlies folder.
For Windows users we have a full package:
Windows users will need to have the DirectX redistributable installed, that is available here.
OSX users should grab the latest dated package, there are usually two downloads, the one with the CG prefix requires the NVIDIA CG toolkit available here.
Linux users usually have to build their own binaries. For Ubuntu users there is a PPA (ppa:libretro/testing).
The process is as follows:
sudo add-apt-repository ppa:libretro/testing
sudo apt-get update
sudo apt-get install retroarch
For mobile users there are two options: install builds manually or use f-droid/cydia to install always up-to-date packages.
The URL for the cydia repository is: http://buildbot.libretro.com/repo/cydia
The URL for the f-droid repository is: http://buildbot.libretro.com/repo/fdroid/repo
For consoles, just grab the bundle and extract to the usual locations, I’ll try to cover specifics on consoles on another post later on.
Windows/Mac/Linux users will be greeted by this screen:
This is one of three menu drivers that are ready for general usage, it’s called XMB and it’s designed to be navigated with a controller.
There is also GLUI/Material:
And RGUI (this is the only available driver on many consoles):
No matter the driver, all of them can be navigated with a gamepad and they share most of their functionality.
Navigating the GUI
RetroArch has an autoconf mechanism with several autoconf profiles preinstalled. Users with pads not supported out of the box will need to map controllers, either with a keyboard or via an on-screen overlay:
For keyboard users, these are the default bindings:
In the menu, is used to accept/select and is used for back/cancel, is used to scroll up and is used to scroll down quickly.
is used to search the current list and is context aware, currently mostly used to trigger a content scan.
is used to reset a setting to default and is used to get information on the current entry if available.
Finally, remember that closes the program. The in-game menu can be toggled with F1.
The rest of the default keyboard bindings can be checkd in Settings/Input/Input Hotkey Binds
The arrows/d-pad should be self explanatory.
Basic Controller Configuration
Users with XINPUT controllers can skip this section, there are a few others that have profiles too depending on the platform. If the controller is auto configured yellow text will indicate that at startup/connection, like this:
If an unsupported gamepad is connected it will be indicated too, like this:
If the controller isn’t automatically configured it’ll have to be mapped. The controller should be mapped with RetroPad in mind, not with the emulated console. Later on I’ll explain how to re-wire the RetroPad to core bindings.
The RetroPad looks like this:
With that in mind let’s bind the buttons:
- Go to settings (the gear icon to the right)
- Go to input
- Select User 1 Bind All
- Press the buttons as the program asks for them
Sometimes some buttons may register too fast, for example the analogs in my NES30 Pro are too sensitive so usually it ends up skipping one or too. In that case might navigate down and check the bindings and fix anything that was bound incorrectly.
The process should be repeated for all the controllers in the desired ports and that’s all there’s to it! (I’ll revisit input later on for controller autoplug, adding labels to buttons, setting hotkeys, etc.).
The second most important aspect in my opinion is to configure paths correctly. In most platforms we have default paths set for most stuff, following should be considered:
- System File Directory, Save File Directory, Save State Directory, are set by default to the directory from were content is being loaded
- The paths mentioned above need write permissions
- File Browser Directory is the location from were the content browser will start, some cores that don’t use the correct interfaces may need to write to the content directory, an example of this behavior is the DOSBox core
- Cache dir is a location for stuff that might be cleaned up after exit, it caches achievement data and extracted roms might be stored there until they are unloaded
Go into Settings/Directory and make sure to set the directories to best suit your environment.
The next step is to get some software running on RetroArch, for this purpose we need cores, and content. Cores can be downloaded using the Online Updater service, and we even have a few public domain games for the game&watch core.
To download cores select Online Updater and then Core Updater, wait a few seconds and the list will be populated with the cores available for the platform in use.
In this example I downloaded 2048 (requires no content), prboom and the game & watch core (content is already available for this game on our downloader)
Update the rest of the entries too, they may contain new shaders, overlays and even autoconf profiles.
Loading, Adding & Scanning Content
After downloading cores it’s time to load a game, to do so select Load Content/Select File And Detect Core. The other options allow loading content too but are more advanced and will be discussed on another article.
In this example I have already set my content dir and I downloaded a SNES core, I’ll be using a public domain rom for demonstration purposes:
Content can be downloaded from our online repository too, it’s a bit bare at the moment but we intend to add some public domain roms, shareware games and demos and open source games that are supported in our cores. To do so select Add Content / Download Content
Note: Doom isn’t actually available there yet, it was done just to illustrate the process, the same process applies for G&W content available now
Finally, users that already have content may want to scan it against known databases, after doing so these games will be easily avialable as systems under the XMB menu.
First of all, update databases under Online Updater, then to initiate a scan go to the plus icon in XMB or go to Add Content/Scan Directory or Add Content/Scan File, after that matched content will be directly available from the system list.
And that’s it! We’re done with the basics, I’ll try to write an in-depth article on some important subsystems later but this should be enough to get started.