全能模拟器RetroArch配置生效规则
前言
RetroArch 的设置分散在多个文件里:配置文件 retroarch.cfg、覆盖文件(独立配置)、着色器预设、核心选项、按键重映射等。
改完选项却「没生效」,多半是保存到了错误的层级,或被更具体的配置覆盖。
本文梳理各类配置的加载顺序、优先级与保存入口,便于判断当前生效的到底是哪一层设置。
配置文件概览
RetroArch 的配置不是单文件,而是按机制分成四套并行体系。先分清「存什么、怎么加载」,后面各节再展开细节。
四套配置体系
| 体系 | 典型文件 | 加载方式 | 可细分范围 |
|---|---|---|---|
| 通用设置 | 配置文件 retroarch.cfg + 覆盖文件 config/<核心>/*.cfg |
加载时增量叠加,覆盖优先;保存时互斥(见 # 配置文件 vs 覆盖文件) | 全局 → 核心 → 目录 → 游戏 |
| 着色器预设 | config/global.slangp、config/<核心>/... |
整份替换,取最具体的一份 | 全局 → 核心 → 目录 → 游戏 |
| 核心选项 | retroarch-core-options.cfg;config/<核心>/*.opt |
全局默认 + 可选游戏级替换 | 全局 / 核心;可选目录、游戏 |
| 按键重映射 | config/remaps/<核心>/*.rmp |
增量叠加 | 核心 → 目录 → 游戏 |
以下两项不单独占一套体系,归属见上表:
- 叠加层:布局定义在
overlays/*.cfg;选用与参数(input_overlay等)走 通用设置 的.cfg覆盖链。 - 视频滤镜:
retroarch.cfg里的video_filter字段,仅全局,无覆盖入口。
存档、即时存档、播放列表等与「设置生效」无关,见 # 其他独立项。
配置文件(retroarch.cfg)生效范围
retroarch.cfg 是整机基线:RetroArch 启动时首先加载,主菜单里已生效;进游戏后,若存在覆盖文件,同名项以覆盖为准(见 # 覆盖文件)。
| 维度 | 说明 |
|---|---|
| 影响对象 | 所有核心、所有游戏,以及主菜单界面本身(驱动、热键、菜单主题等) |
| 典型内容 | 视频 / 音频驱动、目录路径、热键、菜单主题、默认缩放与滤波、视频滤镜 |
| 可被覆盖 | 整数缩放、纵横比、叠加层选用、倒带等多数「设置 → xxx」项——进游戏后由覆盖文件替换同名项 |
| 不可被覆盖 | 视频驱动、视频滤镜等只能写在配置文件的项 |
| 保存入口 | 仅当覆盖未激活时:主菜单 → 配置文件 → 保存当前配置;或 设置 → 配置 → 退出时保存配置 |
全局里改一项,凡未被覆盖文件替换的核心 / 游戏都会跟着变。按平台或单游戏差异化应保存覆盖文件,而不是反复改配置文件。
目录结构示例
便携版常见根目录如下(与上表对应)。
1 | RetroArch-Win64/ |
配置文件 vs 覆盖文件
「通用设置」实际是两种 .cfg,加载与保存规则不同,也是最容易搞混的地方。
两种文件
| 配置文件 | 覆盖文件(独立配置) | |
|---|---|---|
| 磁盘文件 | retroarch.cfg |
config/<核心名>/xxx.cfg |
| 保存菜单 | 主菜单 → 配置文件 → 保存当前配置 | 快捷菜单 → 覆盖 → 保存核心 / 内容目录 / 游戏覆盖 |
| 作用 | 整机基线,所有游戏默认值 | 仅对当前核心 / ROM 文件夹 / 单个游戏生效 |
加载:覆盖优先
进游戏时,若磁盘上存在对应覆盖文件且已开启 设置 → 配置 → 自动加载覆盖文件,RetroArch 先读 retroarch.cfg,再依次合并覆盖链:
1 | retroarch.cfg(配置文件) → 核心.cfg → 内容目录.cfg → 游戏.cfg(覆盖文件) |
运行时看到的是合并后的值;同名项以覆盖文件为准。
保存:互斥,覆盖激活时只能存覆盖
覆盖激活后,配置文件无法保存。此时点 配置文件 → 保存当前配置,会提示类似 「覆盖已激活,不保存」(Overrides active, not saving);退出时保存配置 同样不会写入 retroarch.cfg——这是刻意设计,防止把游戏内设置误写进全局。
此时要持久化改动,只能走 快捷菜单 → 覆盖 保存覆盖文件。
覆盖未激活时(未加载游戏,或当前游戏没有可加载的覆盖文件),才可正常保存配置文件。
何时算覆盖激活(满足任一即可):
- 进游戏时自动加载了核心 / 目录 / 游戏级覆盖文件。
- 本次游戏会话中已通过 覆盖 成功保存过。
若要改全局基线(驱动、热键等):先 关闭内容 回到主菜单,待覆盖卸载后再改设置并 配置文件 → 保存当前配置。
不要和「设置 → 配置」混淆:后者是开关页(自动加载覆盖、退出时保存等),不是保存按钮。
快捷菜单里改视频、叠加层等不会自动持久化;覆盖激活后须走 覆盖 保存。着色器、核心选项、按键重映射另有独立入口,见下文各节。
配置文件(全局)
retroarch.cfg 存放整机基线,生效范围见 # 配置文件概览 → 配置文件生效范围。
何时写入
仅在覆盖未激活时:
- 主菜单 → 配置文件 → 保存当前配置(Save Current Configuration)。
- 或开启 设置 → 配置 → 退出时保存配置(
config_save_on_exit = true),退出 RetroArch 时自动写入。
覆盖激活时:上述两种方式均被阻断,提示「覆盖已激活,不保存」;须改用 快捷菜单 → 覆盖(见 # 覆盖文件),或先 关闭内容 回到主菜单。
何时生效
- 启动 RetroArch 时加载;主菜单中已按配置文件值运行。
- 进游戏后,覆盖文件会替换同名项(见 # 覆盖文件)。
注意
- 改驱动、热键、菜单主题等全局项,应在未加载游戏时操作并保存。
- 设置 → 视频 → 视频滤镜 仅写在配置文件里,无覆盖入口。
- 视频驱动等不可覆盖项,只能在此层修改。
覆盖文件
覆盖(Overrides)即 独立配置,对应 config/<核心>/ 下的 .cfg 文件。在配置文件基线之上,按核心 / ROM 目录 / 单个游戏差异化设置。
典型场景:SFC 开 CRT 扫描线、GBA 开整数缩放、某款游戏单独设纵横比。
加载顺序
进游戏加载内容时,RetroArch 按以下顺序依次叠加(后者覆盖前者同名项):
1 | retroarch.cfg → 核心.cfg → 内容目录.cfg → 游戏.cfg |
越靠右优先级越高。
若只有 gambatte.cfg 和 GBA.cfg,没有游戏级文件,则 GBA 文件夹里的 ROM 使用 gambatte.cfg + GBA.cfg 合并结果。
增量保存
覆盖文件只保存与上层不同的项,不是整份复制。
例如配置文件里关叠加层、核心覆盖里只写一行开启叠加层,则 .cfg 里通常只有这一处差异。
保存入口
须先进入游戏,在 快捷菜单 → 覆盖(Overrides)中:
- 保存核心覆盖(Save Core Overrides)
- 保存内容目录覆盖(Save Content Directory Overrides)
- 保存游戏覆盖(Save Game Overrides)
覆盖激活期间,这是唯一能持久化通用设置改动的途径。改完快捷菜单里的选项后必须再点保存覆盖,否则下次进游戏会丢;已创建覆盖文件后,后续修改也要通过同一入口保存,不会自动写入。
若未做任何改动就保存,可能提示「无内容可保存,覆盖未保存」(Nothing to save, Overrides not saved)。
与按键重映射
按键映射走独立的 .rmp 文件,逻辑与 .cfg 覆盖相同(核心 → 目录 → 游戏),但在 快捷菜单 → 控制(Controls)里保存,不要和 Overrides 混淆。
着色器预设
着色器自动预设与 .cfg 覆盖分开存储,优先级规则类似,但加载方式是整份替换,不是增量合并。
自动预设优先级
若同时存在多个自动预设,最具体的生效:
1 | 全局预设 → 核心预设 → 内容目录预设 → 游戏预设 |
举例:既有 config/global.slangp 又有 config/snes9x/SFC/超级马里奥.slangp,玩该 ROM 时用游戏预设。
只保存了核心预设、目录下已有目录预设时,目录预设优先于核心预设——只改核心预设不会覆盖目录级着色器。
保存入口
快捷菜单 → 着色器 → 保存:
- 保存全局预设
- 保存核心预设
- 保存内容目录预设
- 保存游戏预设
默认路径示例:config/<核心名>/<目录名或游戏名>.slangp;全局为 config/global.slangp。
目录与游戏预设也绑定核心(同一 ROM 换核心则预设路径变)。
手动加载 vs 自动预设
- 加载着色器预设:临时加载,退出游戏可能不保留(除非再保存为自动预设)。
- 自动预设:进对应游戏时自动套用。
- 命令行
--set-shader ""可禁用自动预设;--set-shader "路径"可强制指定,绕过自动预设。
简单预设与完整预设
- 简单预设(Simple Preset):用
#reference引用原预设,只保存参数差异。 - 完整预设(Full Preset):包含全部 pass,改着色器链结构时会保存为此类。
核心选项
核心选项(Quick Menu → 选项 / Options)是模拟核心内部的参数,如 SNES 芯片超频、GB 调色板、PS1 分辨率等。
加载规则
1 | retroarch-core-options.cfg(全局) → 游戏.opt(若存在且开启自动加载) |
- 全局文件:首次加载带 Options 的核心时自动生成。
- 游戏级
*.opt:在 快捷菜单 → 选项 → 管理核心选项 中保存为游戏选项文件。
须在 设置 → 配置 中开启 自动加载内容专属核心选项(Load Content Specific Core Options Automatically),游戏 .opt 才会在启动时自动加载。
保存入口
快捷菜单 → 选项 → 管理核心选项:
- 保存为游戏选项
- 保存为内容目录选项(部分版本)
与 Overrides、着色器预设是三套独立文件,互不影响。
叠加层
叠加层配置分两处:定义文件在 overlays/ 目录,选用与参数写在 retroarch.cfg 或覆盖 .cfg 里。
与着色器不同:叠加层没有独立的 .slangp 预设链,完全走 Overrides 覆盖系统。
定义与引用
| 项目 | 位置 | 说明 |
|---|---|---|
| 定义文件 | overlays/ 下各 .cfg |
叠加层的布局与行为定义 |
| 目录根路径 | overlay_directory |
默认 retroarch.exe 同级 overlays/;可在 设置 → 目录 → 叠加层 修改 |
| 引用路径 | input_overlay 等字段 |
指向某个 overlays/.../*.cfg 的完整或相对路径 |
用户在菜单里「选择叠加层」,本质是让 RetroArch 把 input_overlay 写入对应层级的 .cfg。
生效方式
input_overlay 及相关字段走 .cfg 覆盖链,与整数缩放、纵横比相同:
1 | retroarch.cfg → 核心.cfg → 内容目录.cfg → 游戏.cfg |
越靠右优先。
例如全局 input_overlay 指向 A,但 config/snes9x/SFC.cfg 里改为 B,则 SFC 目录下 ROM 使用 B。
常见配置项(可出现在 retroarch.cfg 或任意覆盖 .cfg 中):
| 配置项 | 含义 |
|---|---|
input_overlay |
指向 overlays/ 下某个 .cfg |
input_overlay_enable |
是否启用 |
input_overlay_opacity |
不透明度 |
input_overlay_scale |
整体缩放 |
input_overlay_center_x / input_overlay_center_y |
中心偏移 |
input_overlay_behind_menu |
是否在菜单后面显示 |
input_overlay_hide_in_menu |
菜单中是否隐藏 |
加载游戏时,RetroArch 按覆盖链合并上述字段;不存在类似着色器的 global.slangp 自动预设文件。
保存入口
整机默认(覆盖未激活时)
- 设置 → 屏幕显示 → 屏幕叠加层 中选取并调整参数。
- 主菜单 → 配置文件 → 保存当前配置,写入
retroarch.cfg。
按核心 / 目录 / 游戏(覆盖激活时)
- 须开启 设置 → 配置 → 自动加载覆盖文件。
- 进入游戏,快捷菜单 → 屏幕叠加层 中选取。
- 快捷菜单 → 覆盖 → 保存核心 / 内容目录 / 游戏覆盖。
- 仅差异项写入
config/<核心名>/xxx.cfg,常见只有input_overlay = "..."等几行。
覆盖激活期间无法保存配置文件;游戏中改叠加层只能走 覆盖 保存。改菜单选项后须保存对应层级,否则仅本次会话有效。
与着色器的配置差异
| 叠加层 | 着色器 | |
|---|---|---|
| 存储 | input_overlay 等在 .cfg 覆盖链 |
独立 config/*.slangp |
| 保存 | 覆盖激活:快捷菜单 → 覆盖;未激活:配置文件 → 保存当前配置 | 快捷菜单 → 着色器 → 保存 |
| 优先级 | 覆盖链右端优先 | 最具体自动预设优先 |
二者配置互不影响;可同时启用,分别保存到各自位置。
配置注意
input_overlay路径必须指向存在的.cfg;路径错或文件缺失则加载失败。- 手动编辑覆盖
.cfg时,只写需要覆盖的字段即可。 - 保存配置文件会改
retroarch.cfg,影响所有未被覆盖文件替换的游戏;按平台差异化请用覆盖文件。
其他独立项
以下配置有各自的保存位置,不参与 .cfg 覆盖链,或仅部分参与。
| 项目 | 保存位置 | 说明 |
|---|---|---|
| 视频滤镜 | retroarch.cfg |
主菜单设置,全局 |
| 即时存档 | states/ 或自定义目录 |
按 ROM 路径 + 槽位 |
| 游戏存档 | saves/ 或自定义目录 |
核心自带 SRAM / 内存卡 |
| 播放列表 | playlists/ |
与游戏内设置无关 |
目录根路径可在 设置 → 目录 中修改;改路径后旧存档不会自动迁移。
叠加层配置见 # 叠加层 一节,走 .cfg 覆盖链,无独立预设文件。
查看生效配置
覆盖是否激活
进游戏后点 配置文件 → 保存当前配置:若提示 「覆盖已激活,不保存」,说明当前处于覆盖激活状态,运行时生效的是覆盖文件合并后的值,此时只能走 快捷菜单 → 覆盖 保存。
总结
配置文件 vs 覆盖文件
- 两种 .cfg:配置文件(
retroarch.cfg)与 覆盖文件(config/<核心>/xxx.cfg,即独立配置)。 - 加载:覆盖链右端优先;保存:互斥——覆盖激活时配置文件不可保存,只能走 快捷菜单 → 覆盖。
- 改全局基线须先 关闭内容 回到主菜单,再 配置文件 → 保存当前配置。
覆盖与重映射(.cfg / .rmp)
- 加载顺序:
retroarch.cfg→ 核心 → 内容目录 → 游戏;右端优先。 - 覆盖文件只存差异项;须在 快捷菜单 → 覆盖 显式保存。
- 按键重映射走 .rmp,在 控制 菜单单独保存。
着色器预设
- 自动预设:全局 → 核心 → 内容目录 → 游戏;最具体者整份生效。
- 在 快捷菜单 → 着色器 → 保存 中选对的层级。
核心选项
- 全局
retroarch-core-options.cfg+ 可选游戏.opt;需开启自动加载内容专属选项。
叠加层
- 定义文件在
overlays/*.cfg;选用写在input_overlay等字段。 - 走覆盖链:配置文件 → 核心 → 目录 → 游戏;覆盖激活时 快捷菜单 → 覆盖,未激活时 配置文件 → 保存当前配置。
- 无独立
.slangp式预设,与着色器配置分开保存。
仅配置文件
- 视频滤镜、视频驱动等仅
retroarch.cfg;须覆盖未激活时 配置文件 → 保存当前配置,或开启 退出时保存配置。
搞不清当前生效哪一层时,见 # 查看生效配置 一节。