📌 项目地址:par274/sharpemu | ⭐ 1,124 颗星 | 🔧 C# | 📜 未标注
先泼盆冷水:这个项目还远不能玩游戏
SharpEmu 是开发者从零开始用 C# 写的实验性 PS5 模拟器。1124 个 Star 多半来自大家对 PS5 模拟的期待,不代表它能跑出流畅画面。作者在 README 里说得很直接:当前目标是准确性和基础设施,不是让某个游戏直接可玩。
项目目前主要针对 Windows 开发。Linux 和 macOS 虽然写在计划里,但没有交叉编译保证。你拿到的是个研究工具,不是娱乐工具。
技术细节:到底能干什么
基于 README 原文,SharpEmu 已经能做到的事(我按技术逻辑重新归类):
加载与执行
– 加载真实游戏的 eboot.bin 和普通 .elf 文件
– 执行原生 CPU 指令(至少部分指令能跑通)
– 读取游戏元数据(标题、版本号等)
系统模块与内核
– 加载 .prx 和 sys_module(PS5 的系统模块格式)
– 部分内核函数调用已被处理
– 支持 Fiber 和 AMPR 导出:Fiber 是 PS5 的轻量级线程机制,AMPR 涉及内存保护和分区管理。模拟器能识别这些结构,说明对系统底层做了反向工程。
游戏内容流程
– PlayGo 场景处理:这是索尼的按需安装机制,允许游戏边下边玩。模拟器能解析这部分,说明对文件布局有理解。
– 初始加载游戏文件(包括 shader/resource 提交和 AGC 初始化)
– 部分游戏已经走到 sceVideoOut 和 AGC 阶段。sceVideoOut 是视频输出 API,AGC 是 AMD 图形驱动相关的缩写。能走到这一步,说明模拟器已经跑通了部分图形管道。
四个测试游戏的实际进度
| 游戏 | README 描述的真实状态 |
|---|---|
| 恶魔之魂 重制版 | 已进入视频循环,着色器准备转成 SPIR-V/Vulkan,仍在继续 |
| Poppy Playtime 第一章 | 仅提到“初步加载游戏文件”,有 Issue 链接 |
| 寂静岭:短信 | 同上,初步加载 |
| Dreaming Sarah | 有真实纹理渲染(原文:Real texture rendering for this game;) |
Dreaming Sarah 是唯一一个能真正输出纹理画面的游戏。恶魔之魂走到了视频循环,但离渲染出可看画面还有距离。另外两个只是能加载进去,大概率黑屏或崩溃。
唯一正确的使用方式
README 给出了两种用法:
- GUI 模式:直接运行编译好的 exe,或从 Releases 下载。
- 命令行调试模式,把 stdout 和 stderr 同时输出到控制台并保存到文件:
.SharpEmu "eboot.bin" 2>&1 | Tee-Object -FilePath "log.txt"
这条命令用 PowerShell 的管道把错误流合并到标准输出,再通过Tee-Object同时写入log.txt。适合盯着日志看崩溃原因。
构建与运行
README 的构建部分只写了“1. Ins”就断了,明显没写完。我看了下项目文件,没有 .csproj 细节。通常 C# 项目可以用 dotnet build 编译,但我不确定这个项目是否依赖特定 .NET 版本或 NuGet 包。建议直接去 GitHub Actions 里找构建配置,或者提 Issue 问作者。
谁应该关注这个项目
- 对 PS5 系统架构(Zen 2 CPU + RDNA 2 GPU + 索尼定制组件)感兴趣的人。
- 想研究用 C# 写硬件模拟器是否可行的人。大部分模拟器用 C++,SharpEmu 是个异类。
- 喜欢看反编译日志、跟踪内核 API 调用的人。Issue #2(恶魔之魂)下面有几十条讨论,作者贴了不少日志截图。
- 手里有自己合法 dump 的 PS5 游戏,愿意参与测试并提交反馈的玩家。注意作者明确反对盗版,测试必须用自己主机的 dump。
社区与反盗版声明
作者建了 Discord 用于开发讨论、兼容性报告和聊天。GitHub Issue 区每个测试游戏都有独立讨论帖:恶魔之魂 PPSA01341、Poppy Playtime PPSA20591、寂静岭短信 PPSA10112、Dreaming Sarah PPSA02929。如果你要参与测试,先看看已有 Issue 里的已知故障,别重复报同样的问题。
这个项目不支持和纵容盗版。所有游戏 dump 来自开发者自己合法拥有的主机。你也得用自己 dump 的游戏测试。