RetroArch
RetroArch 是 libretro API 的参考前端。 该 API 的流行实现示例包括视频游戏系统模拟器和游戏引擎,以及 更通用的 3D 程序。 这些程序被实例化为动态库。我们将其称为“libretro cores”。




libretro
libretro 是一个暴露通用音频/视频/输入回调的 API。 libretro 的前端(例如 RetroArch)负责视频输出、音频输出、输入以及应用程序生命周期。 用可移植的 C 或 C++ 编写的 libretro 核心可以在许多平台上无缝运行,几乎无需移植工作。
虽然 RetroArch 是 libretro 的参考前端,但其他几个项目也使用 libretro 接口来包含对模拟器和/或游戏引擎的支持。libretro 完全开放,任何人都可以免费使用。
Binaries
最新的二进制文件目前托管在 buildbot 上。
Support
要联系开发者,请在此 GitHub 上创建 issue,在 forum 上创建帖子,或在 Discord 上聊天。您可以在 Reddit 上创建带有 Technical Support 标签的帖子。
Documentation
请参阅我们的 Documentation Center。在 Unix 上,提供了 man-pages。 更多面向开发者的内容可以在 here 找到。
Related projects
- Cg/HLSL 着色器:common-shaders
- slang 着色器:slang-shaders
- GLSL 着色器:glsl-shaders
- 用于构建 libretro 实现的辅助脚本:libretro-super
- 项目的 GitHub 镜像,用于生成 diff 文件:libretro-mirrors
Philosophy
RetroArch 力求保持小巧精简, 同时仍具备模拟器所期望的所有实用核心功能。 它被设计为具有极高的可移植性,并采用以游戏手柄为中心且支持触摸屏的用户界面。 它还提供了一个功能齐全的命令行界面。
在某些方面,RetroArch 更进一步,强调了一些不太常见的技术特性,例如多通道着色器支持、 实时回退(Braid 风格)、视频录制(使用 FFmpeg)、提前运行以消除输入延迟等。
RetroArch 还强调易于集成到各种启动器前端中。
平台
RetroArch 已被移植到以下平台:
- Android(2.x 至最新版本)
- Apple iOS
- Apple macOS(PPC、x86-32 和 x86-64)
- Apple tvOS
- Blackberry
- DOS
- Emscripten(WebAssembly 和 JavaScript)
- FreeBSD
- Haiku
- LG webOS
- Linux
- 原始 Microsoft Xbox
- Microsoft Xbox 360(Libxenon/XeXDK)
- Microsoft Xbox One
- Microsoft Xbox Series S/X
- Miyoo
- NetBSD
- Nintendo NES/SNES Classic Edition
- Nintendo GameCube
- Nintendo Wii
- Nintendo Switch
- Nintendo Wii U
- Nintendo 3DS/2DS
- OpenBSD
- OpenDingux
- PlayStation2
- PlayStation3
- PlayStation4
- PlayStation Portable
- PlayStation Vita
- Raspberry Pi
- ReactOS
- Redox OS
- RetroFW
- RS90
- SerenityOS
- Solaris
- Windows NT 3.5
- Windows 95
- Windows 98
- Windows 2000
- Windows XP
- Windows Millennium
- Windows Vista
- Windows 7
- Windows 8
- Windows 10
- Windows 11
依赖项(PC)
严格来说,没有真正的硬性依赖项。
在 Windows 上,RetroArch 仅以 Win32 作为依赖项即可运行。
在 Linux 上,没有真正的依赖项。为了获得最佳使用体验, 以下依赖项作为推荐项提供:
- GL 头文件 / Vulkan 头文件
- X11 头文件和库,或 EGL/KMS/GBM
RetroArch 的 OSX 移植版需要最新版本的 Xcode 才能构建。
如果启用,RetroArch 可以利用这些库:
- nvidia-cg-toolkit
- libfreetype2 (屏幕上的 TTF 字体渲染)
RetroArch 需要至少一个以下音频驱动库:
- ALSA
- OSS
- RoarAudio
- RSound
- OpenAL
- JACK
- SDL
- PulseAudio
- PipeWire
- XAudio2 (Win32, Xbox 360)
- DirectSound (Win32, Xbox 1)
- CoreAudio (OSX, iOS)
为了正常运行,RetroArch 需要存在一个 libretro 实现;然而,由于它通常是在运行时动态加载的,因此在构建时并非必需。
依赖项 (主机移植版,移动端)
主机移植版有其自身的依赖项,但通常不需要 除了各自 SDK 提供的东西之外的其他内容。
要求
OpenGL1
您的显卡至少需要支持 OpenGL 1.1 规范。
着色器: 不适用
菜单驱动支持: MaterialUI、XMB、Ozone 和 RGUI 都应该能正常工作。 由于上述缺乏着色器支持,XMB 将没有着色器管线效果。
OpenGL2
您的显卡至少需要支持 OpenGL 2.1 规范。
着色器: 您可以选择使用 NVIDIA Cg 着色器(已弃用,需要在您的系统上单独安装运行时)或 GLSL 着色器。
菜单驱动支持: MaterialUI、XMB、Ozone 和 RGUI 都应该能正常工作。
OpenGL3
您的显卡至少需要支持 OpenGL 3.2 核心功能规范。
着色器: 使用此驱动,您将能够使用现代 Slang 着色器。
菜单驱动支持: MaterialUI、XMB、Ozone 和 RGUI 均应正常工作。
Direct3D 11
您的显卡至少需要支持 Direct3D11 11.0 规范。该显卡 还必须至少支持 Shader Model 4.0。
着色器: 您可以使用此驱动使用现代 Slang 着色器。
菜单驱动支持: MaterialUI、XMB、Ozone 和 RGUI 均应正常工作。
Vulkan
您的显卡至少需要支持 Vulkan 1.0 规范。
着色器: 您可以使用此驱动使用现代 Slang 着色器。
菜单驱动支持: MaterialUI、XMB、Ozone 和 RGUI 均应正常工作。
配置
默认配置定义在 config.def.h 中。
除非您知道自己在做什么,否则不建议更改此配置。
这些配置可以通过使用配置文件稍后进行调整。
一个示例配置文件已安装到 /etc/retroarch.cfg。这是系统范围的配置文件。
RetroArch 在启动时,如果 $XDG\_CONFIG\_HOME/retroarch/retroarch.cfg 中不存在配置文件,则会创建一个配置文件。
用户只需在期望的值与 config.def.h 中定义的值不一致时,才需要配置特定选项。
要配置手柄,请使用内置菜单或在 retroarch.cfg 中手动配置。
编译和安装
编译和安装 RetroArch 的说明可在 Libretro/RetroArch 文档中心 中找到。
CRT 15Khz 分辨率切换
CRT SwitchRes 将即时开启。但是,您需要重启 RetroArch 才能将其禁用。启用 CRT SwitchRes 后,RetroArch 将以 2560 x 480 @ 60 启动。
如果您正在使用 Windows,在启用 CRT SwitchRes 选项之前,请确保已安装 CRTEmudriver 并安装了一些 modelines。所有游戏正确切换所需的最小 modelines 为:
- 2560 x 192 @ 60.000000
- 2560 x 200 @ 60.000000
- 2560 x 240 @ 60.000000
- 2560 x 224 @ 60.000000
- 2560 x 237 @ 60.000000
- 2560 x 256 @ 50.000000
- 2560 x 254 @ 55.000000
- 2560 x 448 @ 60.000000
- 2560 x 480 @ 60.000000
安装这些 modelines,将 2560 替换为您期望的超分辨率。上述分辨率仅适用于 NTSC,因此如果您要播放任何 PAL 内容,请添加 PAL modelines:
- 2560 x 192 @ 50.000000
- 2560 x 200 @ 50.000000
- 2560 x 240 @ 50.000000
- 2560 x 224 @ 50.000000
- 2560 x 288 @ 50.000000
- 2560 x 237 @ 50.000000
- 2560 x 254 @ 55.000000
- 2560 x 448 @ 50.000000
- 2560 x 480 @ 50.000000
某些游戏需要更高的 PAL 分辨率,这些分辨率也应安装:
- 2560 x 512 @ 50.000000
- 2560 x 576 @ 50.000000
理想情况下,安装所有这些 modelines,一切都会运行良好。
超级分辨率
默认的超级分辨率为 2560。它显示在 CRT 切换选项下方,该选项可在视频设置中找到。这可以在 retroarch.cfg 中更改。唯一兼容的分辨率为 1920、2560 和 3840。任何其他分辨率都将被忽略,并激活原生切换。
原生分辨率
如果激活了原生分辨率,你将需要一整套新的 modelines:
-
256 x 240 @ 50.006977 SNESpal
-
256 x 448 @ 50.006977 SNESpal
-
512 x 224 @ 50.006977 SNESpal
-
512 x 240 @ 50.006977 SNESpal
-
512 x 448 @ 50.006977 SNESpal
-
256 x 240 @ 60.098812 SNESntsc
-
256 x 448 @ 60.098812 SNESntsc
-
512 x 240 @ 60.098812 SNESntsc
-
512 x 224 @ 60.098812 SNESntsc
-
512 x 448 @ 60.098812 SNESntsc
-
256 x 192 @ 59.922745 MDntsc
-
256 x 224 @ 59.922745 MDntsc
-
320 x 224 @ 59.922745 MDntsc
-
320 x 240 @ 59.922745 MDntsc
-
320 x 448 @ 59.922745 MDntsc
-
320 x 480 @ 59.922745 MDntsc
-
256 x 192 @ 49.701458 MDpal
-
256 x 224 @ 49.701458 MDpal
-
320 x 224 @ 49.701458 MDpal
-
320 x 240 @ 49.701458 MDpal
-
320 x 288 @ 49.701458 MDpal
-
320 x 448 @ 49.701458 MDpal
-
320 x 480 @ 49.701458 MDpal
-
320 x 576 @ 49.701458 MDpal
-
256 x 288 @ 49.701458 MSYSpal
-
256 x 240 @ 60.098812 NESntsc
-
256 x 240 @ 50.006977 NESpal
-
640 x 237 @ 60.130001 N64ntsc
-
640 x 240 @ 60.130001 N64ntsc
-
640 x 480 @ 60.130001 N64ntsc
-
640 x 288 @ 50.000000 N64pal
-
640 x 480 @ 50.000000 N64pal
-
640 x 576 @ 50.000000 N64pal
-
256 x 252 @ 49.759998 PSXpal
-
320 x 252 @ 49.759998 PSXpal
-
384 x 252 @ 49.759998 PSXpal
-
640 x 252 @ 49.759998 PSXpal
-
640 x 540 @ 49.759998 PSXpal
-
384 x 240 @ 59.941002 PSXntsc
-
256 x 480 @ 59.941002 PSXntsc
-
352 x 240 @ 59.820000 Saturn/SGFX_NTSCp
-
704 x 240 @ 59.820000 SaturnNTSCp
-
352 x 480 @ 59.820000 SaturnNTSCi
-
704 x 480 @ 59.820000 SaturnNTSCi
-
352 x 288 @ 49.701458 SaturnPALp
-
704 x 288 @ 49.701458 SaturnPALp
-
352 x 576 @ 49.701458 SaturnPALi
-
704 x 576 @ 49.701458 SaturnPALi
-
240 x 160 @ 59.730000 GBA
-
320 x 200 @ 60.000000 Doom
// Arcade
- 400 x 254 @ 54.706841 MK
- 384 x 224 @ 59.637405 CPS1
这些模型行提供了更精确的 hz 值。然而,某些游戏可能会出现不理想的结果。这是由于原始硬件上的扫描线中间分辨率变化所致。为了获得最佳效果,建议使用超分辨率。
CRT 分辨率切换与 MAME
某些街机分辨率可能与消费级 CRT 显示器有很大不同。存在分辨率检测机制,以确保 MAME 游戏以最接近的可用分辨率显示,但在此分辨率内以原生分辨率绘制。这意味着 MAME 游戏看起来将与原始硬件完全一致。
在 MAME 中运行的具有垂直画幅的 ROM(例如 DoDonPachi)需要在 MAME 内部进行旋转,分辨率切换和画幅校正才能生效。请在启用 CRT SwitchRes 之前执行此操作,以便 RetroArch 以桌面分辨率运行。完成所有可能需要旋转的游戏的旋转后,再开启 CRT SwitchRes。
社交
以下链接属于我们的官方渠道。除此之外的链接可能由粉丝、独立成员或追随者创建。我们强烈建议使用我们的原始资源。