libretro/RetroArch
GitHub: libretro/RetroArch
RetroArch 是一个跨平台的游戏模拟器统一前端,通过 libretro API 整合各类游戏主机和街机模拟核心,实现一次配置、处处运行的游戏体验。
Stars: 12732 | Forks: 2065
[](https://travis-ci.org/libretro/RetroArch)
[](https://scan.coverity.com/projects/retroarch)
[](https://crowdin.com/project/retroarch)
# RetroArch
RetroArch 是 libretro API 的参考前端。
该 API 的常见实现包括视频游戏系统模拟器和游戏引擎,以及更通用的 3D 程序。
这些程序被实例化为动态库。我们称之为“libretro 核心”。




## libretro
[libretro](https://www.libretro.com) 是一个暴露通用音频/视频/输入回调的 API。
libretro 的前端(例如 RetroArch)负责处理视频输出、音频输出、输入和应用程序生命周期。
使用可移植 C 或 C++ 编写的 libretro 核心几乎无需移植工作即可在许多平台上无缝运行。
虽然 RetroArch 是 libretro 的参考前端,但其他几个项目也使用 libretro 接口来包含对模拟器和/或游戏引擎的支持。libretro 完全开放且免费供任何人使用。
[libretro API 头文件](https://github.com/libretro/RetroArch/blob/master/libretro-common/include/libretro.h)
## 二进制文件
最新的二进制文件目前托管在 [buildbot](http://buildbot.libretro.com/) 上。
## 支持
要联系开发者,可以在 GitHub 上提交 issue,在 [论坛](https://www.libretro.com/forums/) 上发帖,在 [Discord](https://discord.gg/C4amCeV) 上聊天,或访问我们的 IRC 频道:#retroarch @ irc.freenode.org。您也可以在 [Reddit](https://www.reddit.com/r/RetroArch/) 上创建带有 *Technical Support* 标签的帖子。
## 文档
请参阅我们的 [文档中心](https://docs.libretro.com/)。在 Unix 上,提供了 man-pages。
更多面向开发者的内容可以在 [这里](https://docs.libretro.com/development/libretro-overview/) 找到。
## 相关项目
- Cg/HLSL shaders: [common-shaders](https://github.com/libretro/common-shaders)
- slang shaders: [slang-shaders](https://github.com/libretro/slang-shaders)
- GLSL shaders: [glsl-shaders](https://github.com/libretro/glsl-shaders)
- 用于构建 libretro 实现的辅助脚本:[libretro-super](https://github.com/libretro/libretro-super)
- 项目的 GitHub 镜像,可用于生成 diff 文件:[libretro-mirrors](https://github.com/libretro-mirrors/)
## 理念
RetroArch 力求小巧精简,同时仍具备模拟器应有的所有实用核心功能。
它设计得非常便携,并具有以手柄为中心和触摸屏 UI。
它还具有功能完整的命令行界面。
在某些领域,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
- Original 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 headers / Vulkan headers
- X11 headers 和 libs,或 EGL/KMS/GBM
OSX 版本的 RetroArch 需要最新版本的 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`。这是系统范围的配置文件。
如果 `$XDG\_CONFIG\_HOME/retroarch/retroarch.cfg` 不存在,RetroArch 将在启动时创建一个配置文件。
用户只需在期望值与 `config.def.h` 中定义的值有偏差时配置特定选项。
要配置手柄,请使用内置菜单或在 `retroarch.cfg` 中手动配置。
## 编译和安装
有关编译和安装 RetroArch 的说明,请参阅 [Libretro/RetroArch 文档中心](https://docs.libretro.com/)。
## CRT 15Khz 分辨率切换
CRT SwitchRes 将即时开启。但是,您需要重启 RetroArch 才能将其禁用。启用 CRT SwitchRes 后,RetroArch 将以 2560 x 480 @ 60 启动。
如果您运行的是 Windows,在启用 CRT SwitchRes 选项之前,请确保已安装 CRTEmudriver 并安装了一些 modeline。所有游戏正确切换所需的最低 modeline 为:
- 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
安装这些 modeline 时,请将 2560 替换为您 desired super resolution(所需的超分辨率)。上述分辨率仅适用于 NTSC,因此如果您要游玩任何 PAL 内容,请添加 PAL modeline:
- 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
理想情况下,安装所有这些 modeline,一切都会运行良好。
## 超级分辨率 (Super Resolutions)
默认的超级分辨率为 2560。它显示在 CRT 切换选项正下方,可在视频设置中找到。这可以在 `retroarch.cfg` 中更改。唯一兼容的分辨率是 1920、2560 和 3840。任何其他分辨率将被忽略,并将激活原生切换。
## 原生分辨率
如果激活了原生分辨率,您将需要一套全新的 modeline:
- 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
// 街机
- 400 x 254 @ 54.706841 MK
- 384 x 224 @ 59.637405 CPS1
这些 modeline 更准确,能提供精确的 Hz。但是,某些游戏可能会出现不理想的结果。这是由于原始硬件上的扫描线中段分辨率变化。为了获得最佳效果,超级分辨率是首选。
## CRT 分辨率切换与 MAME
某些街机分辨率可能与消费级 CRT 截然不同。我们提供了分辨率检测,以确保 MAME 游戏以最接近的可用分辨率显示,但在此分辨率内以其原生分辨率绘制。这意味着 MAME 游戏看起来将像原始硬件一样。
像 DoDonPachi 这样以垂直纵横比运行的 MAME ROM 需要在 MAME 内部旋转,然后分辨率切换和纵横比较正才能工作。请在启用 CRT SwitchRes 之前执行此操作,以便 RetroArch 以您的桌面分辨率运行。旋转完任何可能需要的游戏后,打开 CRT SwitchRes。
## 社交媒体
以下链接属于我们的官方渠道。除此之外的链接可能由粉丝、独立成员或关注者创建。我们强烈建议使用我们的原始资源。
- [网站](https://www.retroarch.com/)
- [博客](https://libretro.com/)
- [Facebook](https://www.facebook.com/libretro)
- [Twitter](https://twitter.com/libretro)
- [Reddit](https://www.reddit.com/r/RetroArch/)
- [YouTube](https://www.youtube.com/Libretro)
- [Google Post](https://posts.google.com/share/55Nhs2jG)
- [Steam](https://store.steampowered.com/app/1118310/RetroArch/)
- [YouTube Topic](https://www.youtube.com/channel/UC5q007PYyQPgin0HHbzF0zQ)
- [Patreon](https://www.patreon.com/libretro)
- [BOUNTYSOURCE](https://www.bountysource.com/teams/libretro/issues)
- [Discord](https://discord.gg/C4amCeV)
- [Teespring](https://teespring.com/stores/retroarch)
- [文档](https://docs.libretro.com/)
- [论坛](https://forums.libretro.com/)
标签:C/C++, Emulator, Front-end, GPLv3, Libretro, Python 3.9+, RetroArch, Steam, UI界面, XMB, 事务性I/O, 前端, 动态库加载, 复古游戏, 多媒体框架, 客户端加密, 客户端加密, 开源, 模拟器前端, 游戏引擎, 游戏机, 游戏机模拟, 游戏模拟器, 音频/视频处理