Hakchi RetroArch 1.7.2a (bigger, better, badder) What’s new in this release? Core Specifc load screens:. By Default RA neo will display core specific load screens that are bundled into RetroArch `Neo`.
Posted by2 years ago
Archived
1. How do I get started with Retroarch?
This is the most common question I see. Retroarch is the best emulator solution because it unifies very good emulators for nearly all systems through the PSX era under one program. This allows global input configuration, shaders, etc. It has a bit of a learning curve but it is worth it, and ultimately is much more convenient than using 10 different emulators with various configurations and layouts. Retroarch is supported on a variety of platforms including Linux, Mac, Windows, Android, 3DS, Vita, and many more. Retroarch is an open source project with a long development history, and accordingly, it has a variety of idiosyncracies that can be confusing to a new user. You will get used to it, and it is always improving.
One of the nice things about Retroarch is that the setup for each platform is generally the same as on any other platform. I have written this guide from the PC perspective, but it should apply generally as well. In a few cases, there are differences, and with few exceptions, the GUIs are the same across platforms. When necessary and if I'm aware of them, these differences will be discussed throughout. If at any time you are stuck, a good resource is the libretro wiki (http://wiki.libretro.com). Retroarch can be downloaded at http://buildbot.libretro.com.
Cores
Retroarch is a sort of a frontend for the various libretro cores (i.e., emulators). Retroarch can't really do anything without cores. The reason they are called cores instead of emulators is that Retroarch actually supports a variety of media, including video and non-console hardware (e.g., Scumm, CaveStory, etc.) The first thing to do after downloading Retroarch is to go to the 'Online Updater' and select 'Update Core Info Files' (on Linux, cores are obtained through your package manager, Google for details). This syncs to the current manifest of available emulators. Then, enter the Core Updater and download the core for your media. There is no 'update all' option due to bandwidth concerns, so you will need to select the specific cores you want.
Input
The first time someone uses Retroarch they may be confused with how to navigate. Before getting into detail, the main thing you need to know is that on PC platforms with a keyboard, the menus are navigated by keyboard arrows and use of the Z and X keys.
Retroarch uses a virtual gamepad known as the Retropad in order to unify input across the various supported cores. The Retropad is a fake gamepad that, if it existed, would look like a Wii U Pro controllers. The face buttons are laid out like an SNES controller, and the thumbsticks and shoulders resemble a PS2 controller. Retroarch is hardcoded such that 'A' is confirm and 'B' is cancel.
If you have a popular controller, it is likely that Retroarch will automatically configure your controller through the use of Autoconfig profiles. These detect your USB device, They are stored in RetroarchAutoconfig<driver><controller>.cfg. These files are raw text that can be edited or customized. The autoconfigs may also be overwritten through the GUI.
If your device is unsupported, you will need to navigate to Settings>Input>User 1 Configuration and configure your buttons. This can be achieved by the Bind All option.
If you have multiple devices, there are two options here that you will want to be aware of. The first is 'Device Index', which selects the controller that will be active for the selected user (User 1 in this case). Retroarch should automatically assign the first plugged in gamepad to user 1, the second plugged in gamepad to user 2, etc. But if you start Retroarch with controllers already plugged in, and/or if you plan on leaving your gamepads plugged in, Device Index is how you will set which controller corresponds to which user.
The other option that is useful here is 'Save Autoconfig'. If you're device doesn't have an included Autoconfig, you can generate one with this menu item. To do so, first unplug all other gamepads. Second, bind all available buttons. Third, select 'Save Autoconfig'. In order to complete the setup, last you will need to select 'Bind Default All'. At this point, all of your configured inputs should show as 'Auto: <button>'. If you do not select Bind Default All, the hard-configured buttons will override any existing autoconfig profile.
Hotkeys (save state, fast forward, etc.) can be similarly configured in Settings>Input>Hotkey Configuration
Overriding controllers on a console/game basis
The last steps setup the Retropad in general. For certain systems, you may wish to customize the input. In Retroarch, you do not need to alter the basic Retropad configuration for any systems. Instead, you will override the built-in Retropad->Emulator mapping with your preferences. To do so, load a game with the core that you want to override. Then enter the Retroarch menu (F1 on computers) and select 'Controls'. Scroll down to the button you wish to remap and toggle left/right through the list to set the desired buttons. Afterwards, you can select 'Save Core Remap' to generate a remap file that will load each time you play a core. If you wish to have button alteration on a per-game basis, this can be done by selecting 'Save Game Remap'. Thus, you should never need to alter the User 1 Input configuration to adjust buttons for a game system. The exception is for Nintendo 64, further details can be found below. NOTE: Retroarch does not support 2:1 mapping, or settings two buttons on your gamepad/keyboard to a single button in the emulator. It's on the agenda, but it is a laborious job to add this feature, and currently it is not implemented.
BIOS
Many systems require a BIOS in order to run properly. These BIOS files may be different than the ones you typically associate with a system (for example, Playstation in retroarch does not use SCPH1001.bin as most emulators do). If Retroarch is working generally, and you find that games are not loading for a certain system, you will want to verify that you have the correct BIOS files. The required files can be found on the wiki at http://wiki.libretro.com. The default location to place these BIOS files is in RetroarchSystem.
Saving
Retroarch may generate two sorts of save files for any core. These are internal save (.srm) files, and emulator savestate (.state) files. Not all cores support savestates; check the wiki for support information. The SRAM files and savestate files formats are determined by the core, but always use the extension of .srm and .state. So even if for example, VBA-M standalone uses a .sav extension, in Retroarch VBA core, it will be saved as .srm. The files themselves will be identical internally however. In many cases, transferring a save to or from Retroarch can be achieved by a simple file extension renaming.
The important thing here is that there are multiple cores that can be used for a system. Even though the extensions are the same, the save and savestate files are not necessarily compatible amongst cores. It is generally not possible to load a savestate files from one core in another core, and will result in an error message. SRAM often does transfer between cores though. The default location for saves is Retroarchsaves and Retroarchsavestate. If you prefer, you can have saves go to the directory of the ROM. Do this by going into Settings>Directories and pressing the 'set to Default key' (Enter on Keyboard, Start on Gamepad). This will set the save directory to 'Content directory'. (Yes, this default option is even more default than the default configuration, it is just one of those Retroarch idiosyncracies).
If you are on a battery-based system like a 3DS or Vita, you may be interested in the auto-savestate options under Settings>Saving. Also, you may want to adjust the autosave SRAM interval Autosave SRAM can cause problems with system that use SRAM as memory though (NES especially).
Shaders and Audio filters
One of the best things about Retroarch is its global shader support. Contributors have generated 'shaders' which affect the output of a game. These parallel the options in many emulators that are listed as 'filtering', 'scaling', etc. However, the Retroarch shaders are superior in many ways, at least because they offload the shader work to the GPU of the system, leaving the CPU to focus on emulation. Retroarch implements its own shader language, which is a variation on standard shaders. To the end user, you need to be aware of a few things.
There are three types of shaders supported by retroarch: CG (requires hardware support), SLANG (vulkan only), and GLSL (works on nearly everything). Contributors have ported most of these shaders amongst each of the languages. To update the shaders, select the Online Updater and Update Shaders, then choose the appropriate language for your platform. At the time of writing, CG is the fastest and most reliable, if it's supported on your system.
The shaders themselves and the shader presets (discussed below) are simple text files that can be edited to your preferences. While most of the shader code is probably too difficult to edit, the default values for the shaders are usually easy to edit to yoru liking, for things such as Gamma, screen curvature, etc. However, these will be overwritten if you update over them. In many cases, you will not be editing the preset file (.cgp, .slangp, .glslp) to change your preferences, but the shader itself (.cg, .slang, .glsl).
Once shaders are obtained, you can load them using the Quick Menu after loading a game and selecting Shaders. There are multiple directories that correspond to the type of shader and you can select the ones you prefer. For purists, the CRT directory contains a variety of great CRT filters for consoles, and the handheld directory contains filters appropriate to handheld devices. For scaling fans, there are directories for you as well. Within these directory are the shaders themselves and presets.
In most cases, presets are preferred as they are already curated and setup to perform multiple 'shader passes' for the user without configuration. A single shader pass is the use of a single shader, which is normally followed by a second shader for a second shader pass, and so on. When complete, these passes build on each other to present an outstandingly nice image at little to no CPU cost.
If you have difficultly with shaders or your GPU is not strong enough to use them, another option is traditional software filtering as used in many other emulators. These can be accessed from Settings>Video. NOTE: Do not use shaders in combination with software filters. It will ruin the image. If you do have a software filter set up and would like to clear it, press the 'Set to default key' on the menu entry (Enter on Keyboard, Start on Gamepad).
There is also included support for audio DSP filters as well, such as low pass filtering and reverb. These can be selected in Settings>Audio.
Loading content
At this point, you are hopefully up well configured. The last thing I want to mention here is the ways to load content (i.e., games). There are two methods of loading content in Retroarch. Directly selecting a file (Load Content) or use of playlists. Playlists are generated by 'Scanning' for content. Generally, Retroarch detects content based on checksum data from the No-intro rom collections.
If you are not using a no-intro collection or are using a patched rom, it will be unable to detect the game. In this case, you will need to generate a custom playlist. User /u/zenmaster24 has created a Windows script that can automatically generate a playlist based on your rom folder at https://www.reddit.com/r/emulation/comments/43dkd0/playlist_creator_for_retroarch_on_windows/. If all else fails, or if you prefer, you can just use the Load Content option to load the file directly and select the appropriate core for the content manually.
2. Retroarch crashes/returns to menu when I try to load my ROM files
In most cases, Retroarch does not report an error when a core fails to load a ROM (the core is not hooked up to the frontend to send these error messages). If you are getting a crash or return to menu, it is usually caused by one of two things.
First likely cause is a missing BIOS file. Go to http://wiki.libretro.com and verify you have the BIOS files your emulator needs (default to the RetroarchSystem directory). Names are case-sensitive. The wiki lists an md5 for you to check. An md5 is a unique key that is used to verify you have the correct file (like a checksum). On Windows, I recommend Hashtab to check md5 sums. Mac OSX and Linux have built in md5 checkers accessed by the terminal using md5 <filename> and md5sum <filename> respectively. ON android, just search the market.
The second likely cause is that your core is not compatible with the media you are attempting to load with it. In this case, you can try a different core, try updating the core, or try a different dump of the game.
3. Retroarch crashes/returns to menu when I try to load my ISO files
In addition to the information in item 2 above, the third major problem with loading games is specific to iso files. ISOs (and especially isos in retroarch) usually adhere to the bin/cue or iso/cue formats. A .cue file is nothing but a text file that points to your actual CD/DVD data (the bin or iso files). In some cases, you can just load the iso or bin file directly, but certain cores (particularly certain Mednafen cores) require a cue file. The first thing you should do when trying to diagnose a disc error is to view the cue file in a text editor. Look for the part that refers to the actual bin/iso file(s). In most cases, there should not be any directory information, they should point only to the filename of the iso/bin. For whatever reason, many disc images floating around the internet include random directories in the cue file (e.g., C:UsersLarryDocumentsalundra.bin). Since the cue file points at the bin, and it is looking in a weird place, it is impossible to load the non-existant file. If you see something like this, just take everything off but the filename (e.g., you only want 'alundra.bin'). If this doesn't work, you may just have a bad image, and can search another copy from a different source.
4. I can't get cheats to work
Cheats in retroarch are not well-documented. There are two things to consider when trying to get cheats to work. First, does the core support cheats? You can determine this on the wiki. Second, what kind of cheats does it take? The cheats needed vary from the system to system, and the format varies depending on how its particularly implemented in the core. For example, the Quake core takes direct text codes, while the VBA-M core takes direct memory addresses and values, while certain NES cores take raw Game Genie codes. Unfortunately, it will take experimentation to figure out the cheat format, or viewing the core's source code, as it's not well-documented. The Online Updater includes a cheat.zip that can be downloaded and you can use this as ane xample to determine the retroarch file format. You can also try applying those built-in cheats over your games to see if you can get them to activate, then you will at least know the format and can go from there. One last thing you can do is to download the standalone emulator the core is based on (check in RetroarchInfo folder) and see what cheat format it uses.
5. How do I set my buttons to the c-buttons on Nintendo 64?
If you are using a standard controller like an xbox or PS2/3/4 controller, you should be fine. Just use the right analog stick. This section is for people who want to use real buttons as c-buttons.
Due to the way the c-buttons are implemented in Retroarch, it can be tricky to set up the c-buttons to actual buttons in Retroarch. If you are using a real n64 controller, it may autoconfigure by itself. Otherwise, you can set up an autoconfigure profile as discussed in the Input section above, simply setting the c-buttons to correspond to the right analog stick.
If you plan on using your gamepad for other systems, whether an n64 pad or otherwise, you will need to take some further steps:
If you are running a version newer than 1.3.6, the best way is to use a core override. Otherwise, you can setup a custom config.
- Newer than 1.3.6
First, load an n64 game and core. Go to Settings>Input>User 1 Configuration. Scroll down to the Right Analog inputs, and set them to the face buttons for your c-buttons (c-up to up, c-left to left, etc.) Then, return to the main menu and select 'Save Core Override'. This will create an override file that changes only those buttons, and these will then be used for the c-buttons in n64 cores. Now these buttons will load every time you load this core. Now go set the buttons back to normal. To be safe, go ahead and exit Retroarch.
- 1.3.6 and below
First, load an n64 game and core. Go to Settings>Input>User 1 Configuration. Scroll down to the Right Analog inputs, and set them to the face buttons for your c-buttons (c-up to up, c-left to left, etc.) Return to the main menu and go to Settings>Configuration and set 'Save Configuration on Exit' to off. Now choose 'Save Current Config' and name it accordingly (n64.cfg, for example). This will create a full configuration that you can use whenever you want to play n64 games, but will need to be loaded manually through the menu or with the command line. Also, any settings changes you make while the n64.cfg is loaded will not be saved by default, so you will need to manually save any settings changes with 'Save Current Config.' To be safe, go ahead and exit Retroarch now.
6. My menu is showing up with a bunch of black squares everywhere.
Go to Online Updater and choose Update Assets
7. I can't select anything on the Android app.
For some reason, you have to double tap in the Android app.
8. Which core is the best for xyz system?
This varies based on your platform, how good your system is, etc. In general, there are no best cores. For many users, the most accurate cores will be the preferred cores (Note: for general use, you will never need bsnes accuracy cores. They are slow. If you need it you will know), but on certain systems you may want to sacrifice accuracy for faster performance. That said, here are some good starting cores to try, if they don't work, try another one.
- NES: Nestopia
- SNES: bsnes-mercury-balanced
- Gameboy: Gambatte
- GBA: mGBA
- PSX: Mednafen or PCSX Rearmed
- Genesis: Genesis Plus GX
- 32X: PicoDrive
9. I can't get Mame/Final Burn Alpha to work.
These romsets change all the time. The first thing you should do is make sure it works on PC before trying to set up on other platforms. All the different BIOS and dependencies can be tricky to get setup. Since the romsets change often, you need to make sure your romset corresponds to the version you are running. The romset you need corresponds to the version of core that you are running. This can be determined by looking in RetroarchInfo for the core you are interested in. Romsets can be changed to a different version, albeit not perfectly, with use of a rom manager such as RomCenter or CLRMAMEPRO. Here are a few versions:
- MAME2010: 0.139
- MAME2014: 0.159
- MAME: check info file
- FBA2012: 0.2.97.30
- FBA: check info file
10. Which version of MAME/Final Burn Alpha should I use MAME2014/FBA2012 or MAME/FBA?
MAME2014 corresponds to a specific build from 2014 (0.159) and that will never change. The core called MAME without a year is the most current version of MAME (though it may lag a bit behind the official builds). It is the same with FBA2012 and the FBA core.
Generally, FBA2012 and MAME2014 will give the most consistent results, and the older version may be faster or more stable. Moreover, the most recent build with a year (MAME2014 and FBA2012) will never need the romset to be changed.
However, if you want the newest features and rom support, you can use the FBA and MAME cores. You will need to check the info file (Retroarchinfo) for the version of MAME and FBA they are based on and get the corresponding romset. If you have a stable romset going, be hesitant to update the MAME and FBA cores because it might break compatibility with your romset if the version changes.
11. I can't find my ROM/ISO file in the playlist, and I've scanned it.
Retroarch only supports automatic playlists for certain systems. These playlists are based on the no-intro checksums. If your rom doesn't conform to the checksum (maybe it has a header, maybe it is a romhack, maybe just a weird dump), Retroarch will not pick it up. Also, Retroarch generally does not automatically scan CD titles because checksums tend to vary on these. The easiest way to load these files is to use the 'Load Content' menu item and load the file directly. You can also create a custom playlist. User /u/zenmaster24 has created a Windows script that can automatically generate a playlist based on your rom folder at https://www.reddit.com/r/emulation/comments/43dkd0/playlist_creator_for_retroarch_on_windows/.
12. Retroarch was working fine and now I have a problem, but nothing I read has helped.
One thing you can try is running retroarch with --menu --verbose flags. This will generate command line output you can view and look for a problem. On Windows you need to run retroarch_debug.exe --menu --verbose from the command prompt.
You can always go for the nuclear option which is to backup your retroarch.cfg and then delete the file. Test if your problem is fixed and then you can try and figure out what setting caused it, or just reconfigure everything. This fixes a lot of problems because there are so many options you could have accidentally messed up or that simply changed in an update, that it can be hard to troubleshoot.
I look forward to any additions, corrections, or feedback in the comments
6 comments
Cores are essentially other programs and games that run through RetroArch. RetroArch requires cores to run any content.
Tip
Many game console may have multiple emulator cores, the question of which one is the best may come up. Emulators can be designed to be more accurate at the cost of a performance hit, check out the Emulation General Wiki for a good look at what will suit your needs and hardware.
Installing cores through RetroArch interface¶
Tip
If you do not see the 'Core Updater' option, you may have installed RetroArch using a package manager. If so, see Installing cores through package manager (Ubuntu PPA only). Otherwise, to enable it:
- Navigate to Settings
- Navigate to User Interface
- Navigate to Views
- Enable Show Core Updater
- Navigate to Online Updater
- Navigate to Select Core Updater
- Select the core you want to download
Note
If you're using the Ubuntu PPA version of RetroArch and have enabled 'Show Core Updater' manually, your changes will not be reflected unless your the Cores directory setting is set to a writable location in the Directory Cofiguration.
Installing cores through package manager (Ubuntu PPA only)¶
Note
Installing RetroArch through the Ubuntu PPA will disable the 'Core Updater' option in RetroArch's interface, therefore core installation needs to happen through the Ubuntu package manager.
- Open a terminal
- Start typing sudo apt-get install libretro-
- Press tab a few times until all available possibilities show, press space to expand the list.
- Now type the full name of the core you want to install Example: sudo apt-get install libretro-nestopia
- Press enter and follow the process to install