How to Configure Per-Game Overrides in RetroArch
Use RetroArch overrides safely by separating frontend settings, core options, input remaps, and shader presets across core, directory, and game scopes.
RetroArch does not store every customization in one override file. Frontend configuration, core options, input remaps, and shader presets have separate file types and save menus. Treating them as interchangeable is the main reason a “game override” appears not to remember a shader or control layout.
Create the narrowest configuration that expresses the exception, back up the Config and Remap directories first, and change one value at a time.
Step 1: understand scope and precedence
For ordinary frontend settings, RetroArch loads:
- global
retroarch.cfg; - core override;
- content-directory override;
- game override.
The most specific file changes only values it defines; inherited values continue from broader scopes. A game override does not erase a core override. Content-directory scope is useful when one folder intentionally groups titles with the same display or controller need.
Step 2: distinguish the four configuration systems
- Overrides (
.cfg): supported frontend settings such as video, latency, overlay, directories, or selected general behavior. - Core options (
.optor global core-options file): settings shown in Quick Menu → Core Options/Options, implemented by the core. - Input remaps (
.rmp): RetroPad-to-emulated-device mappings under Quick Menu → Controls. - Shader presets (
.slangp,.glslp,.cgp): shader chain/parameters, saved from Quick Menu → Shaders.
Do not adjust all four and then press Save Game Overrides expecting one file to capture them. Save each through its own interface.
Step 3: make an evidence-preserving baseline
Close RetroArch and copy the configured Config, Input Remapping, and Video Shader preset directories. Record the current global setting and whether a core/directory/game notification appears when content loads.
Launch the exact content through the normal playlist/core association. A game override is tied to the core/config naming context; the same file opened with another core may use a different directory.
Step 4: save an ordinary game override
With content loaded, change one supported setting—for example aspect ratio, overlay path, or audio latency—then choose:
Quick Menu → Overrides → Save Game Overrides
Quit content normally, restart RetroArch, relaunch the same entry, and verify only that value changed. If several unrelated changes appear in the new file, restore the baseline and create it again after changing only the intended setting.
Step 5: use content-directory or core scope deliberately
Choose Save Content Directory Overrides when every title in one curated directory shares the exception. Choose Save Core Overrides when every title loaded with that core should inherit it.
A CRT shader is not a good example of an override because shaders have their own automatic presets. A core’s dynamic recompiler is generally a core option, not an ordinary override. Scope the correct file type rather than using a broader .cfg as a workaround.
Step 6: save game-specific core options
Open Quick Menu → Core Options and change only the documented option. Use Manage Core Options to create a game-specific options file where supported. Ensure RetroArch’s setting to load content-specific core options automatically is enabled, as the official override guide requires.
Restart content if the option says restart. Verify the global core-options file did not change for unrelated games. Never use unsafe CPU overclock, dynarec, or timing hacks without core-specific documentation and a rollback record.
Step 7: save input through Remap Files
Physical controller-to-RetroPad mapping belongs in controller profiles. Game-specific button changes belong here:
Quick Menu → Controls → Save Game Remap File
Core and content-directory remap scopes are also available. A remap changes what the core receives without reversing RetroArch menu navigation. Avoid global bindings to fix one game’s button layout.
Test every button, analog axis, hotkey chord, and player port after restart. Remaps do not safely replace the Device Type required for a multitap, mouse, light gun, or analog controller; configure the emulated device explicitly.
Step 8: save shaders through Shader Presets
Load and tune the shader under Quick Menu → Shaders, then use its Save submenu for Game, Content Directory, Core, or Global preset. Libretro’s shader guide explains that the most specific automatic preset wins.
Prefer a Simple Preset referencing an official maintained base when only parameters differ. Do not overwrite the shipped preset; updater changes can replace it or make provenance unclear.
Step 9: inspect generated files safely
RetroArch’s Config directory is visible under Settings → Directory. Override files normally live below config/<core-name>/; remaps use their configured Remap directory. Paths differ by OS, package, sandbox, and portable installation.
Quit RetroArch before manual editing so it cannot overwrite changes on exit. Copy the file, edit plain text with UTF-8 tooling, and change one documented key. Avoid absolute paths containing usernames or secrets if the profile will move across devices.
Never download a stranger’s full retroarch.cfg to solve one setting. It can redirect cores, content, firmware, network services, and update paths.
Step 10: remove or reset only the intended layer
Use Quick Menu delete/remove actions for the active Game/Core/Directory Override, Remap, Core Options file, or Shader Preset where available. If manual deletion is necessary, close RetroArch, quarantine the exact file outside all configuration paths, and relaunch.
Do not erase the entire config tree. Keep the quarantined file and hash until behavior is verified. If a broader core setting remains after deleting the game file, that is inheritance, not failed deletion.
Step 11: troubleshoot naming and collision problems
Two files with the same displayed base name in one core context can collide. Multi-disc .m3u, archive members, playlists, and manually renamed content can affect the content name used for scope. Inspect the actual generated filename and logs rather than guessing.
If an override notification appears but the value is wrong, inspect broader files and precedence. If no notification appears, confirm automatic override loading, Config directory writability, correct core, and filename. Do not run RetroArch as administrator/root to bypass a path error.
Step 12: build an acceptance matrix
Test the target game, a second game in the same directory/core, and a game in another core. The target should receive the exception, its neighbor only inherited intended broader values, and unrelated content should remain at global defaults.
Back up the small generated files with a manifest listing scope, purpose, RetroArch/core version, content hash, and expected value. Layered configuration succeeds when every exception is traceable to one file type and one narrow scope after restart.
Related:
Sources: