retroarch 中文文档 下载 App

什么是 Core 核心 为什么 RetroArch 能管 200+ 模拟器

Core 是什么

Core(核心)是 libretro 兼容的模拟器动态库。RetroArch 运行时加载它来完成模拟工作。

可以把 Core 想象成一个独立的小程序——它只负责接收前端发过来的输入、输出一帧帧画面和声音、处理存档,不管任何界面、设置面板、菜单。Core 和前端之间通过 libretro API 这套固定的接口契约来交互。

┌─────────────────────────────────────┐
│         RetroArch 前端(壳)          │
│  UI / 设置 / 视频渲染 / 音频输出      │
│  输入采集 / 存档 / 在线更新           │
├─────────────────────────────────────┤
│         libretro API 接口             │
├─────────────────────────────────────┤
│  Core A  │  Core B  │  Core C  │ ... │
│  (FC模拟)│  (PS1模拟)│  (GBA模拟)│     │
└─────────────────────────────────────┘

Core 不是模拟器,但模拟器是 Core 的前身

绝大多数 libretro Core 都是基于已有的独立模拟器改造的——开发者把独立模拟器的 GUI 和平台相关代码剥离,只留下模拟逻辑,包装成 libretro API 的形式。比如:

这个过程叫"libretro 化"。完成后,原来的独立模拟器功能就变成了一个 libretro Core,可以被 RetroArch 加载运行。

一个主机为什么有多个 Core

同一台主机往往有多个 Core 可选。这不是重复造轮子——每个 Core 有不同的设计取舍:

取舍维度举例
精度 vs 速度Snes9x 追求速度、bsnes 追求 100% 精度
传统渲染 vs Vulkan LLEBeetle PSX HW 用硬件加速 Vulkan、Beetle PSX 用纯软件渲染
兼容性 vs 现代功能某 Core 兼容更多游戏、另一 Core 支持 RetroAchievements
通用 vs 优化通用 Core 覆盖整个主机、专用 Core 针对某类游戏优化

核心选择比反复调设置更影响游戏体验。游戏玩不了时先换个 Core 试试,再谈调视频比例或着色器。

Core 的技术形态

每个 Core 是一个动态库文件:

平台文件格式
Windows.dll
macOS.dylib
Linux.so
Android.so(armeabi-v7a / arm64-v8a)

下载 Core 就是下载一个对应平台的动态库。

Core 的元信息(需要哪些 BIOS、支持哪些功能、推荐的渲染器等)存在 Core Info Files 里——Online Updater 里的 Update Core Info Files 就是在更新这个。

为什么 Core 架构是 RetroArch 的护城河

对比"每台主机一个独立模拟器"的传统方案:

维度独立模拟器RetroArch Core
统一设置❌ 每个模拟器单独配✅ 配一次所有 Core 通用
统一界面❌ 每个界面风格不同✅ 同一套 Ozone/GLUI/XMB/RGUI
功能一致性❌ 有的有联机、有的没有✅ 联机、着色器、倒带跨 Core 一致
跨平台❌ 每个模拟器单独移植✅ Core 一次开发到处运行
生态活力取决于单个模拟器团队Libretro 社区集体维护

这就是为什么 RetroArch 能在十年内从一个小众项目变成复古游戏模拟器的事实标准。