全能模拟器RetroArch配置生效规则

前言

RetroArch 的设置分散在多个文件里:配置文件 retroarch.cfg、覆盖文件(独立配置)、着色器预设、核心选项、按键重映射等。
改完选项却「没生效」,多半是保存到了错误的层级,或被更具体的配置覆盖
本文梳理各类配置的加载顺序、优先级与保存入口,便于判断当前生效的到底是哪一层设置。

配置文件概览

RetroArch 的配置不是单文件,而是按机制分成四套并行体系。先分清「存什么、怎么加载」,后面各节再展开细节。

四套配置体系

体系 典型文件 加载方式 可细分范围
通用设置 配置文件 retroarch.cfg + 覆盖文件 config/<核心>/*.cfg 加载时增量叠加,覆盖优先;保存时互斥(见 # 配置文件 vs 覆盖文件 全局 → 核心 → 目录 → 游戏
着色器预设 config/global.slangpconfig/<核心>/... 整份替换,取最具体的一份 全局 → 核心 → 目录 → 游戏
核心选项 retroarch-core-options.cfgconfig/<核心>/*.opt 全局默认 + 可选游戏级替换 全局 / 核心;可选目录、游戏
按键重映射 config/remaps/<核心>/*.rmp 增量叠加 核心 → 目录 → 游戏

以下两项不单独占一套体系,归属见上表:

  • 叠加层:布局定义在 overlays/*.cfg;选用与参数(input_overlay 等)走 通用设置.cfg 覆盖链。
  • 视频滤镜retroarch.cfg 里的 video_filter 字段,仅全局,无覆盖入口。

存档、即时存档、播放列表等与「设置生效」无关,见 # 其他独立项

配置文件(retroarch.cfg)生效范围

retroarch.cfg整机基线:RetroArch 启动时首先加载,主菜单里已生效;进游戏后,若存在覆盖文件,同名项以覆盖为准(见 # 覆盖文件)。

维度 说明
影响对象 所有核心、所有游戏,以及主菜单界面本身(驱动、热键、菜单主题等)
典型内容 视频 / 音频驱动、目录路径、热键、菜单主题、默认缩放与滤波、视频滤镜
可被覆盖 整数缩放、纵横比、叠加层选用、倒带等多数「设置 → xxx」项——进游戏后由覆盖文件替换同名项
不可被覆盖 视频驱动、视频滤镜等只能写在配置文件的项
保存入口 仅当覆盖未激活时:主菜单 → 配置文件 → 保存当前配置;或 设置 → 配置 → 退出时保存配置

全局里改一项,凡未被覆盖文件替换的核心 / 游戏都会跟着变。按平台或单游戏差异化应保存覆盖文件,而不是反复改配置文件。

目录结构示例

便携版常见根目录如下(与上表对应)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
RetroArch-Win64/
├── retroarch.cfg # 配置文件(全局基线)
├── retroarch-core-options.cfg # 核心选项 · 全局
└── config/
├── global.slangp # 着色器 · 全局预设
├── gambatte/
│ ├── gambatte.cfg # 覆盖文件 · 核心
│ ├── GBA.cfg # 覆盖文件 · 内容目录
│ ├── 口袋妖怪 火红.cfg # 覆盖文件 · 游戏
│ ├── 口袋妖怪 火红.opt # 核心选项 · 游戏级(若已保存)
│ ├── GBA.slangp # 着色器 · 目录预设
│ └── 口袋妖怪 火红.slangp # 着色器 · 游戏预设
└── remaps/
└── gambatte/
├── gambatte.rmp # 按键重映射 · 核心
└── 口袋妖怪 火红.rmp # 按键重映射 · 游戏
├── overlays/ # 叠加层定义(选用写入上方 .cfg 链)
└── ...

配置文件 vs 覆盖文件

「通用设置」实际是两种 .cfg,加载与保存规则不同,也是最容易搞混的地方。

两种文件

配置文件 覆盖文件(独立配置)
磁盘文件 retroarch.cfg config/<核心名>/xxx.cfg
保存菜单 主菜单 → 配置文件 → 保存当前配置 快捷菜单 → 覆盖 → 保存核心 / 内容目录 / 游戏覆盖
作用 整机基线,所有游戏默认值 仅对当前核心 / ROM 文件夹 / 单个游戏生效

加载:覆盖优先

进游戏时,若磁盘上存在对应覆盖文件且已开启 设置 → 配置 → 自动加载覆盖文件,RetroArch 先读 retroarch.cfg,再依次合并覆盖链:

1
2
retroarch.cfg(配置文件)  →  核心.cfg  →  内容目录.cfg  →  游戏.cfg(覆盖文件)
越靠右,同名项优先级越高

运行时看到的是合并后的值;同名项以覆盖文件为准。

保存:互斥,覆盖激活时只能存覆盖

覆盖激活后,配置文件无法保存。此时点 配置文件 → 保存当前配置,会提示类似 「覆盖已激活,不保存」(Overrides active, not saving);退出时保存配置 同样不会写入 retroarch.cfg——这是刻意设计,防止把游戏内设置误写进全局。

此时要持久化改动,只能快捷菜单 → 覆盖 保存覆盖文件。

覆盖未激活时(未加载游戏,或当前游戏没有可加载的覆盖文件),才可正常保存配置文件。

何时算覆盖激活(满足任一即可):

  1. 进游戏时自动加载了核心 / 目录 / 游戏级覆盖文件。
  2. 本次游戏会话中已通过 覆盖 成功保存过。

若要改全局基线(驱动、热键等):先 关闭内容 回到主菜单,待覆盖卸载后再改设置并 配置文件 → 保存当前配置

不要和「设置 → 配置」混淆:后者是开关页(自动加载覆盖、退出时保存等),不是保存按钮。

快捷菜单里改视频、叠加层等不会自动持久化;覆盖激活后须走 覆盖 保存。着色器、核心选项、按键重映射另有独立入口,见下文各节。

配置文件(全局)

retroarch.cfg 存放整机基线,生效范围见 # 配置文件概览 → 配置文件生效范围

何时写入

仅在覆盖未激活时:

  1. 主菜单 → 配置文件保存当前配置(Save Current Configuration)。
  2. 或开启 设置 → 配置 → 退出时保存配置config_save_on_exit = true),退出 RetroArch 时自动写入。

覆盖激活时:上述两种方式均被阻断,提示「覆盖已激活,不保存」;须改用 快捷菜单 → 覆盖(见 # 覆盖文件),或先 关闭内容 回到主菜单。

何时生效

  • 启动 RetroArch 时加载;主菜单中已按配置文件值运行。
  • 进游戏后,覆盖文件会替换同名项(见 # 覆盖文件)。

注意

  • 改驱动、热键、菜单主题等全局项,应在未加载游戏时操作并保存。
  • 设置 → 视频 → 视频滤镜 仅写在配置文件里,无覆盖入口。
  • 视频驱动等不可覆盖项,只能在此层修改。

覆盖文件

覆盖(Overrides)即 独立配置,对应 config/<核心>/ 下的 .cfg 文件。在配置文件基线之上,按核心 / ROM 目录 / 单个游戏差异化设置。
典型场景:SFC 开 CRT 扫描线、GBA 开整数缩放、某款游戏单独设纵横比。

加载顺序

进游戏加载内容时,RetroArch 按以下顺序依次叠加(后者覆盖前者同名项):

1
2
retroarch.cfg  →  核心.cfg  →  内容目录.cfg  →  游戏.cfg
(配置文件) (覆盖) (覆盖) (覆盖)

越靠右优先级越高
若只有 gambatte.cfgGBA.cfg,没有游戏级文件,则 GBA 文件夹里的 ROM 使用 gambatte.cfg + GBA.cfg 合并结果。

增量保存

覆盖文件只保存与上层不同的项,不是整份复制。
例如配置文件里关叠加层、核心覆盖里只写一行开启叠加层,则 .cfg 里通常只有这一处差异。

保存入口

先进入游戏,在 快捷菜单 → 覆盖(Overrides)中:

  1. 保存核心覆盖(Save Core Overrides)
  2. 保存内容目录覆盖(Save Content Directory Overrides)
  3. 保存游戏覆盖(Save Game Overrides)

覆盖激活期间,这是唯一能持久化通用设置改动的途径。改完快捷菜单里的选项后必须再点保存覆盖,否则下次进游戏会丢;已创建覆盖文件后,后续修改也要通过同一入口保存,不会自动写入。

若未做任何改动就保存,可能提示「无内容可保存,覆盖未保存」(Nothing to save, Overrides not saved)。

与按键重映射

按键映射走独立的 .rmp 文件,逻辑与 .cfg 覆盖相同(核心 → 目录 → 游戏),但在 快捷菜单 → 控制(Controls)里保存,不要和 Overrides 混淆

着色器预设

着色器自动预设与 .cfg 覆盖分开存储,优先级规则类似,但加载方式是整份替换,不是增量合并。

自动预设优先级

若同时存在多个自动预设,最具体的生效

1
2
全局预设  →  核心预设  →  内容目录预设  →  游戏预设
↑ 最高

举例:既有 config/global.slangp 又有 config/snes9x/SFC/超级马里奥.slangp,玩该 ROM 时用游戏预设
只保存了核心预设、目录下已有目录预设时,目录预设优先于核心预设——只改核心预设不会覆盖目录级着色器。

保存入口

快捷菜单 → 着色器 → 保存

  1. 保存全局预设
  2. 保存核心预设
  3. 保存内容目录预设
  4. 保存游戏预设

默认路径示例: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 自动预设文件。

保存入口

整机默认(覆盖未激活时)

  1. 设置 → 屏幕显示 → 屏幕叠加层 中选取并调整参数。
  2. 主菜单 → 配置文件保存当前配置,写入 retroarch.cfg

按核心 / 目录 / 游戏(覆盖激活时)

  1. 须开启 设置 → 配置 → 自动加载覆盖文件
  2. 进入游戏,快捷菜单 → 屏幕叠加层 中选取。
  3. 快捷菜单 → 覆盖 → 保存核心 / 内容目录 / 游戏覆盖
  4. 仅差异项写入 config/<核心名>/xxx.cfg,常见只有 input_overlay = "..." 等几行。

覆盖激活期间无法保存配置文件;游戏中改叠加层只能覆盖 保存。改菜单选项后须保存对应层级,否则仅本次会话有效。

与着色器的配置差异

叠加层 着色器
存储 input_overlay 等在 .cfg 覆盖链 独立 config/*.slangp
保存 覆盖激活:快捷菜单 → 覆盖;未激活:配置文件 → 保存当前配置 快捷菜单 → 着色器 → 保存
优先级 覆盖链右端优先 最具体自动预设优先

二者配置互不影响;可同时启用,分别保存到各自位置。

配置注意

  1. input_overlay 路径必须指向存在的 .cfg;路径错或文件缺失则加载失败。
  2. 手动编辑覆盖 .cfg 时,只写需要覆盖的字段即可。
  3. 保存配置文件会改 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;须覆盖未激活时 配置文件 → 保存当前配置,或开启 退出时保存配置

搞不清当前生效哪一层时,见 # 查看生效配置 一节。