ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

shadPS4 到底能不能在 PC 上玩《血源诅咒》?先做 3 项自查

shadPS4 到底能不能在 PC 上玩《血源诅咒》?先做 3 项自查

shadPS4 到底能不能在 PC 上玩《血源诅咒》?先做 3 项自查

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

shadPS4 是一个 C++ 编写的 PlayStation 4 模拟器,支持 Windows、Linux 和 macOS。它的官方定位是早期开发阶段:《血源诅咒》《黑暗之魂 重制版》《荒野大镖客:救赎》等作品已确认能跑,但不保证任何游戏都能启动,更不保证全程无闪退。想改内核代码或给项目提补丁,才需要自己编译这个仓库;只玩游戏的人走官方 QtLauncher 即可。

动手前先自查这 3 项

三条硬门槛,缺一条后面全白搭:

  1. 固件文件必须自备。模拟器本体不带任何 PS4 官方固件模块,libSceCesCs.sprx、libSceFontFt.sprx、libSceJson2.sprx、libSceLibcInternal.sprx、libSceUlt.sprx等.sprx文件要从你自己合法持有的 PS4 主机上提取,再放进sys_modules文件夹。没有这一步,游戏基本起不来。
  2. macOS 门槛高。需要 macOS 26.0 以上,且只支持 Apple Silicon,Intel Mac 直接出局。
  3. Vulkan 驱动要完整。GPU 走 Vulkan 管线,驱动残缺会导致渲染异常或直接黑屏,编译和运行环境都要装好libvulkan相关依赖。

成品和源码,你走哪条路

只玩游戏 → 下载官方 QtLauncher,有完整图形界面,本文到此为止。要动代码、做调试、提 PR → 自行编译,下面只说 Linux 路线。

先按 building-linux.md 装好约 20 个系统依赖,编译器认准Clang 23(官方 CI 同款),用 GCC 可能撞上未知问题。

git clone --depth 1 --recursive https://gitcode.com/GitHub_Trending/sh/shadPS4 cd shadPS4

--recursive不能省:所有第三方库都放在externals/子模块里,漏掉它 clone 下来是空的。然后配置并编译,把 Clang 23 指定为编译器:

cmake -S . -B build/ -DCMAKE_C_COMPILER=clang++-23 -DCMAKE_CXX_COMPILER=clang++-23 cmake --build ./build --parallel $(nproc)

编译卡死电脑就去掉--parallel单线程跑。产物在build/shadps4,传入游戏 ID 即可启动:

./build/shadps4 CUSA00900

CUSA00900是《血源诅咒》美版的 ID,前提是游戏文件夹已在配置里登记。

最硬的模块:着色器重编译

全仓库最难啃的是 GPU 模拟,核心原因是 PS4 的图形芯片是 AMD GCN 架构(内部代号 Liverpool),PC 上的 GPU 读不懂这套指令。

打个比方:游戏 GPU 的着色器相当于用 GCN 方言写成的原稿,重编译器先逐条"听写"原文(前端解码),改写成一套通用的"标准稿"(中间表示 IR),润色后翻译回 PC GPU 能执行的目标语言 SPIR-V 交给 Vulkan 渲染。代码都集中在src/shader_recompiler/:解码在frontend/,一串优化 pass 在ir/passes/,Vulkan 输出在backend/spirv/。GPU 命令的逐条解释在src/video_core/amdgpu/liverpool.cpp,PC 侧的队列、帧图、交换链在src/video_core/renderer_vulkan/。CPU 这边反而是省心的:PS4 本身就是 x86-64,游戏代码在 PC 上原生执行,模拟器只重写内核和系统库,位置在src/core/libraries/kernel/。

挑一个已验证能跑的游戏

别凭感觉选游戏。项目单独维护一份 shadPS4 Game Compatibility 列表,逐条记录各作的运行情况;README 的 Status 一节也列了已确认能跑的代表作。

优先挑兼容性表里已有记录、且状态良好的作品。冷门游戏的运行状态随时会变,下结论前先刷新列表。启动时用游戏 ID 作为最后一个参数,具体参数含义看--help的输出。

卡住了按这个顺序排查

  1. 先查必备文件:固件.sprx是否已放进sys_modules,游戏文件夹是否写进了配置,Vulkan 驱动是否可用。
  2. 再看终端日志:报错行通常直接指向缺失的库或初始化失败的模块。
  3. 翻官方文档:Debugging.md 讲了怎么用 RenderDoc 检查单帧、bug 报告该附哪些信息。
  4. 最后翻 issue:先搜相同报错,大概率有人踩过;提 issue 时带上日志,别只写"打不开"。

⚠️ 在 Linux 上用 RenderDoc 抓帧前,记得先设置SDL_VIDEODRIVER=x11,否则抓帧流程会失败。

还没做到什么

它还没能跑通所有大作。去兼容性列表里挑一款已验证的游戏开一局;中途崩了就把日志整理好丢进项目 issue。

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

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

RELATED READING

延伸阅读

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