← 返回信息流
GitHub 热榜GitHub Trending · 日·1 小时前

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 指令,初步实现指令集模拟。
  • 元数据读取:从游戏中读取标题、版本等基本信息。
  • 系统模块加载:支持加载 .prxsys_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 RemakePoppy Playtime Chapter 1SILENT HILL: The Short MessageDreaming Sarah 等)。
  • 局限:项目仍处于早期阶段,许多关键组件缺失(如完整的 GPU 渲染、音频、输入等),目前仅能加载游戏并执行部分初始化流程,尚不能完整运行商业游戏。

适合谁用 / 上手

适合的人群

  • 系统架构研究者:想了解 PS5 的固件加载、CPU 指令集内核接口的开发者。
  • 逆向工程爱好者:对 PS5 系统模块(.prx)和 PlayGo 场景有研究兴趣。
  • 模拟器学习者:希望从零开始学习如何构建现代主机模拟器(尤其用 C#)。
  • 普通玩家不推荐:目前无法实际游玩任何游戏,仅作为技术参考。

上手步骤

  1. 安装 .NET SDK(.NET 6 或更高版本)。
  2. 克隆仓库
    git clone https://github.com/par274/sharpemu.git
    
  3. 构建项目(在仓库根目录):
    dotnet build
    
    或发布:
    dotnet publish
    
  4. 运行
    • 使用 GUI(启动 SharpEmu.GUI 项目);或
    • 使用命令行(PowerShell):
      .\SharpEmu "eboot.bin" 2>&1 | Tee-Object -FilePath "log.txt"
      
  5. 注意:仅支持使用合法转储的游戏文件(eboot.bin)。项目不提供任何游戏或固件。
查看原文 →github.com