ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

shadPS4 PS4 模拟器怎么用:把《血源诅咒》跑进 PC 的完整编译指南

shadPS4 PS4 模拟器怎么用:把《血源诅咒》跑进 PC 的完整编译指南

shadPS4 PS4 模拟器怎么用:把《血源诅咒》跑进 PC 的完整编译指南

【免费下载链接】shadPS4PlayStation 4 emulator for Windows, Linux, macOS and FreeBSD written in C++项目地址: https://gitcode.com/GitHub_Trending/sh/shadPS4

shadPS4 是一个用 C++ 编写的 PS4 模拟器,目前跑通了 Windows、Linux 和 macOS 三个平台,《血源诅咒》《黑暗之魂 重制版》《荒野大镖客:救赎》都已能运行。官方定位仍是早期开发阶段,别指望完美体验,但核心系统都已经就位。

模拟器等于翻译吗?shadPS4 的三层分工

第一层是好消息:PS4 的 CPU 是 x86-64 架构,和大多数 PC 处理器同族,游戏自带的代码在你的机器上原生执行,不做任何翻译。

第二层是内核和系统库。PC 上缺的不是算力,而是 PS4 系统提供的上百个系统 API,shadPS4 逐个重新实现了它们,最核心的部分在 src/core/libraries/kernel/,文件系统与设备层的模拟也归它管。

第三层是 GPU,也是整个项目工作量最大的一层。PS4 的 GPU 是 AMD GCN 芯片,自带一套 PC 显卡看不懂的指令集,游戏的每一帧都要在 shadPS4 里完整"转码"一遍才能显示。

最快上手路径:玩家和开发者各三条路

纯玩家:这个源码仓库是模拟器核心,不带图形界面。只玩游戏的话直接下载项目官方的 QtLauncher,它附带完整的图形界面。步骤只有三:拿到发布包、备好固件文件、在配置里指到游戏安装目录。

开发者:Linux 上走通最顺,推荐编译器是 Clang 23(Ubuntu 24.04 默认 clang 可能还是 18,需要加 apt.llvm.org 源安装)。整个流程四行命令:

git clone --recursive https://gitcode.com/GitHub_Trending/sh/shadPS4 cd shadPS4 cmake -S . -B build/ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ cmake --build ./build --parallel $(nproc)

--recursive参数不能省:所有第三方依赖都靠子模块管理,漏掉它 clone 下来的仓库是不完整的。编译卡死机器就去掉--parallel参数单线程跑。Windows 用户用 Visual Studio 加 CMake,步骤见 documents/building-windows.md;macOS 需要 26.0 以上系统,Intel Mac 不支持。

进阶用户:编译产物出来以后连启动器都不需要,直接传游戏 ID,比如《血源诅咒》美版是CUSA00900:

./build/shadps4 CUSA00900

也可以传一个完整的 elf 路径直接引导可执行文件,--help里列着全部参数。

最难啃的模块:着色器重编译器流水线

shadPS4 里最复杂的工程是 GPU。PS4 游戏每帧都会送来 GCN 写成的着色器字节码,shadPS4 把它分三段处理:

  1. 输入:前端逐条解码 GCN 字节码,还原出控制流图;
  2. 中间表示:指令被翻译成项目自有的 IR(基于 SSA 的程序结构),随后跑一遍十余个优化 pass,包括常量传播、死代码消除、wave 指令降级等;
  3. 输出:SPIR-V 发射器生成最终字节码,交给 Vulkan 在 PC 显卡上直接执行。

三段流水线都在 src/shader_recompiler/ 下:frontend/ 负责解码,ir/passes/ 放着全部优化 pass,backend/spirv/ 负责 SPIR-V 输出。这套设计借鉴了 yuzu 的 Hades 编译器,团队不用从零写优化器,可以集中火力解决模拟 AMD GPU 特有的问题。模拟本体在 src/video_core/ 里:amdgpu/liverpool.cpp 逐条解释 GPU 的寄存器级命令,renderer_vulkan/ 管 PC 侧的队列、帧图与交换链。

启动前检查清单:五个容易翻车的地方

  • 固件是第一道坎。shadPS4 需要加载一批来自 PS4 官方固件的.sprx模块,放进sys_modules文件夹。

    ⚠️libSceCesCs.sprx、libSceFontFt.sprx、libSceJson2.sprx、libSceUlt.sprx等文件模拟器本体不带,必须从你合法持有的 PS4 主机上 dump。

  • 没手柄?内置映射够用。左摇杆是 WASD,右摇杆是 IJKL,四个脸键对应小键盘 8/6/2/4 或 C/B/N/V;F11 切全屏,F10 开帧数统计,F12 触发 RenderDoc 抓帧。Xbox 和 DualShock 手柄即插即用,自定义绑定按游戏单独保存。
  • 先查兼容列表。项目维护着单独的游戏兼容性列表,逐个记录各作运行情况。挑一款没人记录过的游戏,第一个撞上它崩溃墙的很可能就是你。
  • 崩了先看日志再报 issue。报告规范(游戏名 + CUSA 编号 + 版本号 + 日志)在 Debugging.md 里写得很清楚。
  • Linux 用 RenderDoc?记得先设SDL_VIDEODRIVER=x11,Wayland 下它不工作。

shadPS4 目前还跑不了所有游戏,《战神》这类重头作暂时缺席。建议的下一步:去兼容列表挑一款已验证能玩的作品,卡住了就把user/log/里的日志附进 issue,这是推动项目前进最快的方式。这个 PS4 模拟器仍在持续发版,"能玩"的游戏清单正一点点变长。

【免费下载链接】shadPS4PlayStation 4 emulator for Windows, Linux, macOS and FreeBSD written in C++项目地址: https://gitcode.com/GitHub_Trending/sh/shadPS4

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进