libretro/RetroArch

GitHub: libretro/RetroArch

RetroArch 是一个跨平台的游戏模拟器统一前端,通过 libretro API 整合各类游戏主机和街机模拟核心,实现一次配置、处处运行的游戏体验。

Stars: 12732 | Forks: 2065

[![Build Status](https://travis-ci.org/libretro/RetroArch.svg?branch=master)](https://travis-ci.org/libretro/RetroArch) [![Coverity Scan Build Status](https://scan.coverity.com/projects/8936/badge.svg)](https://scan.coverity.com/projects/retroarch) [![Crowdin](https://badges.crowdin.net/retroarch/localized.svg)](https://crowdin.com/project/retroarch) # RetroArch RetroArch 是 libretro API 的参考前端。 该 API 的常见实现包括视频游戏系统模拟器和游戏引擎,以及更通用的 3D 程序。 这些程序被实例化为动态库。我们称之为“libretro 核心”。 ![XMB 菜单驱动](docs/XMB-main-menu.jpg "XMB 菜单驱动") ![rgui 菜单驱动](docs/rgui-main-menu.jpg "rgui 菜单驱动") ![glui 菜单驱动](docs/glui-main-menu.jpg "glui 菜单驱动") ![ozone 菜单驱动](docs/ozone-main-menu.jpg "ozone 菜单驱动") ## 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, 前端, 动态库加载, 复古游戏, 多媒体框架, 客户端加密, 客户端加密, 开源, 模拟器前端, 游戏引擎, 游戏机, 游戏机模拟, 游戏模拟器, 音频/视频处理