news 2026/11/4 2:21:17

用 shadPS4 PS4 模拟器在 PC 上跑《血源诅咒》:从零到第一局

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用 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

《血源诅咒》,60 帧,跑在一台普通 PC 上,这件事现在成立了。shadPS4 是一个用 C++ 写的 PS4 模拟器,《血源诅咒》《黑暗之魂 重制版》《荒野大镖客:救赎》已经在 Windows、Linux、macOS 上能跑。它自认"早期开发阶段,别指望完美体验",但做的事是实的。

先看明白:这是源码,不是安装包

先说清楚一件事:这个仓库是模拟器核心,不含任何图形界面,不是双击就能跑的安装包。只玩游戏的话,去官方 QtLauncher 的 release 页下载安装版就行,不用碰编译。

这个仓库是给想改内核、追崩溃、提 PR 的人准备的。

其实它已经帮你干了一半的活:PS4 的 CPU 是 x86-64 架构,游戏可执行代码在 PC 上原生运行,不需要翻译。真正要重写的只剩内核和系统库,代码在 src/core/libraries/kernel/;GPU 是唯一需要下重功夫的部分。

从 clone 到第一帧:四条命令

先装系统依赖:Clang、CMake、SDL2、Vulkan 等十几个包,完整清单在官方文档 documents/building-linux.md 里。编译器推荐 Clang 23,Ubuntu 24.04 的默认 clang 还停留在 18,得先加 LLVM 23 的仓库,否则和官方构建环境差一截。

然后整个过程就是几条命令:

git clone --depth 1 --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不能省:所有第三方库都用子模块管理,externals/ 目录下能看到一整排,漏了它 clone 下来是不完整的。编译阶段如果卡死电脑,把--parallel $(nproc)去掉,单线程慢慢跑。

编译产物出来直接传游戏 ID:

./build/shadps4 CUSA00900

CUSA00900是《血源诅咒》美版的 ID,游戏目录在 config.toml 里指好,传 ID 就能启动。macOS 用户需要 26.0 以上系统,Intel Mac 不支持;Windows 用 Visual Studio 配 CMake,步骤见 documents/building-windows.md。

着色器重编译器:PC 的 GPU 怎么读懂 GCN

PS4 的 GPU 是 AMD GCN 架构的芯片,代号"利物浦"——仓库里就有 liverpool.cpp 这个文件名。它有自己的指令集,PC 上的 GPU 直接看不懂,中间必须过一道重编译。这是整个项目里分量最重的模块。

代码在 src/shader_recompiler/,流程四步走:frontend/ 下的前端把 GCN 字节码解码成中间表示(IR);IR 本体放在 ir/;ir/passes/ 跑一串优化 pass,看文件名就知道在干什么——constant_propagation_pass.cpp 是常量传播,dead_code_elimination_pass.cpp 是死代码消除,lower_fp64_to_fp32.cpp 把 64 位浮点降到 32 位;最后 backend/spirv/ 产出 SPIR-V 交给 Vulkan 执行。

这套设计参照 yuzu 的 Hades 着色器编译器当蓝本,好处很实际:优化器不用从零写,可以专心解决模拟 AMD GPU 本身的问题。

GPU 模拟本体在 src/video_core/:amdgpu/liverpool.cpp 负责逐条解释 GPU 的寄存器级命令,renderer_vulkan/ 负责 PC 这一侧的命令队列、帧图和交换链。

踩坑清单:大多数人会卡住的几个地方

固件文件,第一道要解决的关。模拟器要加载一批来自 PS4 官方固件的.sprx模块(30 多个,含libSceCesCs.sprx、libSceFontFt.sprx、libSceJson2.sprx),放进sys_modules文件夹:

⚠️ 模拟器本体不带这些文件,需要你从合法持有的 PS4 主机上 dump。没有主机的话这一步是死路,绕不过去。

编译器别乱选,GCC 是坑。官方构建用 Clang 23,GCC 14 只是"CI 测过"。用 GCC 可能撞上未知问题,提交 issue 前对方还会要求你先用 Clang 复现一遍。

先查兼容性再选游戏。项目维护着单独的游戏兼容性列表,逐个记录各作的运行情况。盲选一款没人验证过的游戏,大概率是在重复别人已经记录过的崩溃时间。

没有手柄?内置映射够用。WASD 是左摇杆,IJKL 是右摇杆,三角圆圈叉方块对应小键盘 8/6/2/4(也可以按 C/B/N/V),方向键就是方向键。F11 切全屏,F10 看帧数,F12 触发 RenderDoc 抓帧。Xbox 和 DualShock 手柄即插即用,自定义绑定按游戏保存。

真崩了怎么办。documents/Debugging/Debugging.md 讲了怎么用 RenderDoc 看一帧里到底发生了什么、bug 报告该带什么信息。Linux 上用 RenderDoc 记得设置SDL_VIDEODRIVER=x11,Wayland 下它不工作。

挑一款能玩的

它已经能跑《血源诅咒》《黑暗之魂 重制版》《荒野大镖客:救赎》。去兼容性列表里挑一款确认能玩的下手,卡住了就把日志丢进 issue,一步一步来。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/4 2:20:42

Agent、纯 LLM、Workflow 到底差在哪?一篇讲清楚“决策权“归谁

文章目录先打个比方:把它们想成三种员工纯 LLM:一次调用,一条直线Workflow:人把流程焊死,LLM 只是一颗螺丝Agent:把方向盘交给 LLM一张图看清三种模式的控制流一张表看懂关键差异代码示例纯 LLMWorkflow&am…

作者头像 李华
网站建设 2026/11/4 2:17:56

PlayCover 快速上手:在 Mac 上免费运行 iOS 应用与游戏

PlayCover 快速上手:在 Mac 上免费运行 iOS 应用与游戏 【免费下载链接】PlayCover Community fork of PlayCover 项目地址: https://gitcode.com/gh_mirrors/pl/PlayCover PlayCover 是一款免费开源(GPLv3)工具,它解决的核…

作者头像 李华