par274/sharpemu —— 一个实验性的PlayStation 5模拟器项目
原标题:par274/sharpemu
C#★ 997 stars+436 今日
速览
基于C#开发的实验性PS5模拟器,目前处于早期阶段,展示了在PC上模拟PS5硬件的可能性,适合对主机模拟技术感兴趣的开发者探索。
AI 深度解读
这是什么
SharpEmu(GitHub 仓库 par274/sharpemu)是一个实验性的 PlayStation 5 模拟器,完全从零开始使用 C# 开发。项目目标是为 Windows、Linux 和 macOS 提供跨平台支持,但目前主要开发精力集中在 Windows 上,以简化早期阶段的调试与迭代。SharpEmu 目前处于非常早期的开发阶段,关注点在于模拟器的准确性和基础设施搭建,而非特定游戏的兼容性。
解决的问题
PS5 模拟器领域长期存在空白。虽然 PS4 已有成熟的开源模拟器 ShadPS4,但 PS5 的系统架构、CPU 指令集和 GPU 管线与 PS4 差异巨大,需要全新的实现。SharpEmu 旨在为研究与教育提供参考:它允许开发者探索 PS5 的 eboot.bin 加载流程、原生 CPU 指令执行、内核功能(如 Fiber、AMPR 导出)以及 PlayGo 场景等底层机制。项目不包含任何版权固件、游戏数据或索尼专有资产,所有开发过程中使用的游戏均为开发者个人合法转储,且明确反对盗版。
核心功能
- 文件加载:能够加载真实游戏的
eboot.bin和.elf文件。 - CPU 模拟:执行原生 CPU 指令,初步实现指令集模拟。
- 元数据读取:从游戏中读取标题、版本等基本信息。
- 系统模块加载:支持加载
.prx和sys_module系统模块。 - 内核函数支持:部分实现 Fiber 和 AMPR 导出函数。
- PlayGo 场景:处理 PlayGo 数据布局的初始加载。
- 图形管线:实现着色器/资源提交(submit)和 AGC 初始化;一些游戏已达到
sceVideoOut和 AGC 阶段。 - 视频输出:在部分游戏中出现视频循环输出(如 Demon's Souls Remake),其中 Demon's Souls 已进入视频循环,着色器已可转换为 SPIR-V/Vulkan,开发持续进行中。
- 真实纹理渲染:对 Dreaming Sarah 实现了真实纹理渲染。
亮点 / 与同类相比
- 唯一开源 PS5 模拟器:与 RPCS3(PS3)、ShadPS4(PS4)不同,SharpEmu 是目前唯一公开的、以研究为目的的 PS5 模拟器开源项目。
- C# 开发:相比于常见的 C/C++ 模拟器(如 RPCS3、Yuzu),SharpEmu 选择 .NET 生态,降低了托管代码的 GC 和管理开销,同时便于跨平台(基于 .NET 运行时)。
- 目标明确:明确不模拟 PS4,聚焦于 PS5 独有特性,避免与 ShadPS4 重复。
- 透明开发:通过 Discord 社区公开讨论兼容性、开发进度和技术支持,同时公开了已验证的兼容游戏列表(Demon's Souls Remake、Poppy Playtime Chapter 1、SILENT HILL: The Short Message、Dreaming Sarah 等)。
- 局限:项目仍处于早期阶段,许多关键组件缺失(如完整的 GPU 渲染、音频、输入等),目前仅能加载游戏并执行部分初始化流程,尚不能完整运行商业游戏。
适合谁用 / 上手
适合的人群
- 系统架构研究者:想了解 PS5 的固件加载、CPU 指令集内核接口的开发者。
- 逆向工程爱好者:对 PS5 系统模块(.prx)和 PlayGo 场景有研究兴趣。
- 模拟器学习者:希望从零开始学习如何构建现代主机模拟器(尤其用 C#)。
- 普通玩家不推荐:目前无法实际游玩任何游戏,仅作为技术参考。
上手步骤
- 安装 .NET SDK(.NET 6 或更高版本)。
- 克隆仓库:
git clone https://github.com/par274/sharpemu.git - 构建项目(在仓库根目录):
或发布:dotnet builddotnet publish - 运行:
- 使用 GUI(启动
SharpEmu.GUI项目);或 - 使用命令行(PowerShell):
.\SharpEmu "eboot.bin" 2>&1 | Tee-Object -FilePath "log.txt"
- 使用 GUI(启动
- 注意:仅支持使用合法转储的游戏文件(eboot.bin)。项目不提供任何游戏或固件。
查看原文 →github.com
