RetroArch 是一个功能强大的模拟器前端。它的核心是一个叫做 libretro 的开源软件项目,基于 libretro 开发的 RetroArch 提供了一套管理多个不同模拟器系统的界面。这篇文章是关于 RetroArch 的配置和使用,并且会根据 RetroArch 的发展持续更新。
文章中的配图来自 RetroArch 运行在 Windows 下的效果。但是 RetroArch 几乎可以运行在所有主流软硬件平台上。
Menu 菜单
RetroArch 提供了多种不同的使用界面方案。其中一个类似 PlayStation 的 XMB 界面方案,非常方便用手柄导航。如果你安装的 RetroArch 没有默认使用这个界面的话,你可以在这个位置打开:
Settings -> Drivers -> Menu -> xmb
Core 核心
配置 RetroArch 的第一步,就是为你打算模拟的平台下载 Core。RetroArch 本身是一个启动器,对具体游戏平台的模拟,是通过不同的 Core 来实现。比如打算模拟 NES 的话,你可能会需要下载 FCEUmm 这个 Core。
作为一个已经发展了多年的成熟项目,RetroArch 包括了几乎所有游戏平台的模拟器 Core。甚至包括了一些非常专用的 Core,比如 OpenLara 和 PrBoom 这样专用于特定 PC 游戏的 Core。
下载新的 Core 的菜单位置:
Main Menu -> Load Core -> Download a Core
Scan 扫描内容
在 Core 安装完成之后,接下来需要做的就是把内容添加到 RetroArch。
建议把不同平台的 ROM 文件分别放到不同的文件夹里,比如分别为 NES 和 SNES 建立不同的文件夹。然后在 RetroArch 菜单中选择:
Import Content -> Scan Directory -> 选择你存放 ROM 的目录
通常,这样就可以找到你组织好的内容。扫描完成后,RetroArch 界面里就会多出来刚刚找到的新游戏的 Playlist。RetroArch 会为每个平台的所有游戏建立一个 Playlist。
但是,在某些情况下,如果上面的方法没有找到新内容,那么你还可以试试:
Import Content -> Manual Scan
在 Manual Scan 模式下,你需要指定用哪个 Core 来扫描内容。Manual Scan 每次会用一个指定的 Core 扫描指定的一个文件夹,所以可以用这样的方式来一次性为一个平台生成 Playlist。
ROM
使用类似 Retrode 这样的设备,你可以从卡带中获得游戏内容,也就是 ROM 文件。
互联网上的一群经典游戏的爱好者维护了一个叫做 no-intro 的数据库,记录所有完整的 ROM 文件的特征,比如游戏的官方名称、CRC32 校验值、MD5 值等等。
Shader 画面特效
针对 CRT 显示器设计的老游戏,分辨率相比现代 PC,是很低的 240p 分辨率:
Platform 平台 | Resolution 分辨率 |
---|---|
NES/Famicom | 256×224 |
Super NES/Super Famicom | 256×224 |
Geneis/Mega Drive | 320×224 |
Game Boy | 160×144 |
Game Boy Color | 160×144 |
Game Boy Advance | 240×160 |
Virtual Boy | 384×224 |
Nintendo 64 | 320×240 |
因此,如果要在现代的高分辨率 LCD 屏幕上模拟老旧 CRT 电视机的效果,你可以使用 RetroArch 的 Shader 功能。在运行游戏的过程中呼出快捷菜单,然后在 Shader 菜单中选择一款 CRT Shader(适用于主机平台)或者 Handheld Shader(适用于手持平台)即可。
比如这是在 4K 分辨率下,没有使用 Shader 时的效果:
作为对比,这是使用了 CRT Caligari 之后的效果:
RetroArch 内置了几十款不同的 Shader。
为了让 Shader 获得最好的显示效果,下面的这个设置选项推荐打开:
Settings -> Video -> Scaling -> Integer Scale
这样 RetroArch 在将模拟器输出的视频画面填充当前分辨率时,会确保按照整数倍来进行放大。这样可以避免因为画面被非整数倍放大而带来的一些 Shader 的渲染问题。这些问题当你在使用扫描线类型的 CRT Shader 时会尤其明显。
Rewind 回退
以前的很多游戏的难度非常具有挑战性。比如在 Konami 的经典游戏 Contra 魂斗罗 和 Life Force 沙罗曼蛇 里,无论你积攒了多少火力,只要吃一颗子弹就全部重来。并且游戏里只有三条命。
RetroArch 提供了一种让苦手玩家有可能可以一命通关的方法——当在游戏里出现失误的时候,只要按住 R 就可以回退。直到退回到失误出现之前。借助这种方式,一命通关很多很难的游戏,或者在彩蛋区域进行反复探索,就只是时间问题了。
可以在 Quick Menu 的这个位置设置 Rewind 的速度,默认是 1 帧:
Quick Menu -> Rewind -> Rewind Frames
如果你基本上只用 RetroArch 来玩那些不需要手柄 L2 键的游戏,那么可以考虑把 L2 映射为 Rewind 回退功能。
Auto Save Load 自动保存和加载
以前的游戏大部分都没有提供存盘功能,尤其是 8 位机时代的游戏。其中一些游戏提供的解决方案是通关密码 Password,即你在打通了每一关之后会获得一个通关密码,之后只要输入这个通关密码就可以从这一关开始游戏。
而另外一种更简单的方式就是用 RetroArch 来自动记录和恢复游戏状态。你可以在设置菜单中的这个位置找到相关设置:
Settings -> Saving
推荐把下面的这两个选项都打开:
- Auto Save State
- Load State Automatically
这样在你每次关闭游戏时,状态会被自动保存。下次打开游戏时,状态会被自动加载。如果你的整个 RetroArch 文件夹是放在一个云同步的目录中的话,那么这些游戏状态就可以在你的电脑之间同步。然后就可以在任何一台电脑上继续你的任何游戏的进度。
Screenshot 截图
按下 F8 就可以保存当前游戏的截图。RetroArch 提供了一个设置,让你可以保存 8-bit/16-bit 的原始像素的 PNG 格式,而不是应用了 Shader 之后的效果。
可以从菜单的这个位置打开或者关闭这个设置:
Settings -> Video -> GPU Screenshot
或者直接编辑 retroarch.cfg
中的这个属性:
video_gpu_screenshot = "false"
当 GPU Screenshot 设置打开时,截图保存的是带有 Shader 的效果及分辨率。当 GPU Screenshot 设置关闭时,截图保存的是游戏的原始分辨率,比如 NES 的 256×224。
部分 NES 模拟器 Core 支持剪裁掉横向或者竖向的 overscan 内容区域,因为某些游戏比如 Super Mario Bros. 3 的 overscan 区域会有一些垃圾渲染(这些区域在真实硬件及 CRT 显示上不可见)。如果所有 overscan 内容区域都被保留,那么 NES 游戏的截图分辨率会是 256×240,如果都被剪裁,那么会是 240×224。
No Crop | Crop Horizontal | Crop Vertical | Crop Both |
---|---|---|---|
256×240 | 240×240 | 256×224 | 240×224 |
FCEUmm 的默认设置是:
- Crop Horizontal -> Off
- Crop Vertical -> On
这样出来的截图的分辨率是 256×224
你可以在 RetroArch 的 screenshots 目录找到截图的 .png 文件。
Recording 视频录制
虽然用 OBS 或者 GeForce Experience 也可以录下游戏过程,但是 RetroArch 内置的游戏录制功能的特殊之处在于可以用一种无损(lossless)的方式以游戏的原始分辨率保存为一个 .mkv 文件。如果使用 RetroArch 本身来播放这个 .mkv 文件,那么还可以在上面应用 Shader 效果。
按下一次 O 即可开始录制,再按下一次 O 即可停止录制。你可以在 RetroArch 的 recordings 目录找到录制的 .mkv 文件。
macOS 上使用的注意事项
推荐使用 Homebrew 安装最新版本:
brew install retroarch-metal
如果无法识别 PS5 的 DualSense Controller,请确认 controller driver 用的是 mfi
。
tvOS / Apple TV 上使用的注意事项
在游戏进行过程中,如果直接按手柄上的 Logo 按键,会被 tvOS 自身的功能拦截而无法生效。需要用特殊的 combo 才能把 RetroArch 的 Quick Menu 给呼出来:
L1+R1+DPad Down+Y