PS4 模拟器 shadPS4 上手指南:如何从零编译源码,把《血源诅咒》跑进第一帧
PS4 模拟器 shadPS4 上手指南:如何从零编译源码,把《血源诅咒》跑进第一帧
【免费下载链接】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 上运行《血源诅咒》《黑暗之魂 重制版》《荒野大镖客》这类作品。它不是"能不能玩"的讨论阶段,而是"哪些游戏已经稳了、哪些还在路上"的阶段。这篇文章帮你判断:它适不适合你、从哪一步开始动手、中间会卡在哪里。
先看清现状:它现在能跑到什么程度
官方自己的措辞很直白:项目仍处于早期开发阶段,别指望无瑕疵的体验。README 里列出的可稳定运行名单包括《血源诅咒》《黑暗之魂 重制版》《荒野大镖客》,外加大量其他作品。仓库里这几张截图分别对应《血源诅咒》《初音未来 Project DIVA》《如龙0》和《DRIVECLUB》,覆盖了动作、音游、RPG 和赛车几个类型。
平台门槛也有明确限制:macOS 用户需要 26.0 以上系统,Intel Mac 直接不支持;Windows 和 Linux 没有额外系统版本门槛,但 GPU 必须支持 Vulkan。
复杂一点的游戏可能跑不起来——官方自己说"还有更复杂的游戏要等一段时间"。所以下面所有步骤的前提是:你接受它现在是个"能玩一部分游戏、正在快速补齐"的工具。
两条入口路线:图形客户端和源码自编译,你选哪条
这个仓库只有模拟器核心,不带任何图形界面。README 开头就标了粗体提醒:纯玩游戏的人应该去下载官方的 QtLauncher(独立的 GUI 启动器),它有完整的设置界面和版本下载入口。
两条路线的分工是这样的:
| 你的情况 | 选哪条 | 理由 |
|---|---|---|
| 只想打游戏 | 官方 QtLauncher | 有 GUI,不用碰命令行,固件和配置都有现成入口 |
| 想改内核、调渲染、提代码 | 自己编译本仓库 | 核心逻辑、着色器重编译器、Vulkan 后端全在这里,QtLauncher 只是壳 |
本文后面讲的都是自编译路线,因为 QtLauncher 的每一步操作在这个仓库里都有对应的源码位置,看代码反而更顺。
Linux 编译步骤:从装依赖到第一帧的完整动线
编译器是第一个坑。官方文档推荐Clang 23(官方 Linux 构建和 CI 都用它),GCC 14 虽然也跑 CI,但踩到未知问题的概率更高。注意 Ubuntu 24.04 默认源里的clang还是 18,要装 23 得先加 apt.llvm.org 的源,具体命令在 building-linux.md 里直接抄就行。
依赖一次装齐,以 Debian/Ubuntu 为例:
sudo apt install build-essential clang-23 git cmake libasound2-dev \ libpulse-dev libopenal-dev libssl-dev zlib1g-dev libedit-dev \ libudev-dev libevdev-dev libsdl2-dev libjack-dev libsndio-dev \ libvulkan-dev vulkan-validationlayers libpng-dev它把音频(ALSA/Pulse/OpenAL/JACK/sndio)、SSL、Vulkan 校验层、SDL2 这十几类开发库一次装完,缺哪个后面都会在 cmake 配置阶段报错,不如现在一次到位。Fedora、Arch、OpenSUSE 的对应命令文档里都有。
然后是核心流程,四步:
git clone --depth 1 --recursive https://gitcode.com/GitHub_Trending/sh/shadPS4 cd shadPS4--recursive不能省:externals/下几十个第三方库(Vulkan loader、glslang、imgui、fmt、spdlog 等)全靠 git 子模块管理,漏了这个参数,clone 下来是个空壳,cmake 配置直接失败。--depth 1只拉最新一层历史,clone 速度能快很多。
cmake -S . -B build/ -DCMAKE_C_COMPILER=clang-23 -DCMAKE_CXX_COMPILER=clang++-23它生成build/构建目录并锁定 Clang 23 作为 C/C++ 编译器,指定到具体版本号是为了避免系统默认 clang 悄悄换成旧版本。
cmake --build ./build --parallel $(nproc)它按 CPU 核数并行编译全部源码。已知坑:内存小的机器在这一步可能整个系统卡死——文档的建议很直接,去掉--parallel $(nproc)单线程慢慢跑。
./build/shadps4 CUSA00900它在配置里指定的游戏安装目录中查找CUSA00900文件夹并启动——这是《血源诅咒》美版的 Game ID。前提是你的游戏目录已经在配置文件里指好。游戏参数永远放最后(除非你手动用-g显式指定),另外它还能直接吃 ELF 路径,比如shadps4 /path/to/game.elf。
Windows 用户走 Visual Studio + CMake 的路线,细节在 building-windows.md;用 Nix 的话更简单,nix develop进开发壳然后cmake -S . -B build/即可。
固件准备:sys_modules 里的 .sprx 文件必须先备好
这是新手最常卡住的一步,而且它不是编译问题,是合规问题。
shadPS4 本身不带任何 PS4 固件。它运行时依赖一批.sprx模块——libSceCesCs.sprx、libSceFontFt.sprx、libSceJson2.sprx、libSceLibcInternal.sprx、libSceUlt.sprx等约 37 个,负责字体、JSON 解析、音频解码这些系统能力。它们必须放进模拟器目录下的sys_modules文件夹,缺哪个对应的功能就废掉。
⚠️这些模块必须从你自己合法持有的 PS4 主机上 dump 出来,官方不会、也不会随仓库分发这些文件。没有实体机的话,这一步没有绕过方案,先放下游戏的事。
原理白话:GPU 的"翻译流水线"是怎么走的
PS4 的 CPU 是 x86-64,和 PC 同架构,所以游戏的可执行代码在模拟器里是原生运行的,不用翻译一行。真正要重写的是操作系统层:内核和系统库的实现在src/core/libraries/kernel/这类目录里。
难的部分全在 GPU。PS4 的 GPU 是 AMD 的 GCN 架构芯片,代号"利物浦"(Liverpool),它跑的着色器字节码 PC 上的 GPU 看不懂。shadPS4 的解法是一条四级翻译链,可以用同声传译来打比方:
- 听写:前端解码 GCN 字节码,在
src/shader_recompiler/frontend/; - 整理成笔记:转成中间表示 IR,
src/shader_recompiler/ir/; - 润色:跑一串优化 pass(死代码消除、SSA 变换等),
src/shader_recompiler/ir/passes/; - 说给对方听:产出 SPIR-V 交给 Vulkan 执行,
src/shader_recompiler/backend/spirv/。
这条链路的设计参照了 yuzu 项目的 Hades 着色器编译器——等于站在一个成熟的优化器肩膀上,把精力省下来专门解决模拟 AMD GPU 本身的问题。GPU 模拟本体在src/video_core/:amdgpu/liverpool.cpp逐条解释 GPU 的寄存器级命令,renderer_vulkan/负责 PC 这一侧的命令队列、帧图和交换链。音频和输入走原生路径,手柄、键盘、鼠标统一由src/input/接管,开销基本可以忽略。
常见问题:跑游戏时会问出口的那几句
没有手柄,键盘能玩吗?能。内置映射:WASD 是左摇杆,IJKL 是右摇杆,三角/圆圈/叉/方块对应小键盘 8/6/2/4(也可以按 C/B/N/V),方向键即方向键,Enter 是 OPTIONS,空格是触摸板,Q/U/E/O 对应 L1/R1/L2/R2,X/M 对应 L3/R3。Xbox 和 DualShock 手柄即插即用。自定义绑定在设置的 Controller 页面改,保存是按游戏分开存的,单个按键最多绑三个键,还支持把鼠标移动映射成摇杆输入。Mac 用户注意:用 Command 键代替 Control,全屏是 Command+F11。
选游戏前要不要查什么?要。项目维护着独立的游戏兼容性列表,逐个游戏记录运行状态。盲选一款没人碰过的游戏,大概率是在重复别人已经记录过的崩溃。
画面卡死或崩了怎么办?先按 F12——它会触发 RenderDoc 抓帧(没有 RenderDoc 时降级为游戏内截图),Ctrl+F10 可以打开视频调试信息,F10 看帧数。排查方法、该带什么信息提报告,都写在 Debugging.md 里。一个 Linux 专属坑:RenderDoc 不支持 Wayland,抓帧时必须设置SDL_VIDEODRIVER=x11再启动模拟器。
收尾:它的边界在哪,接下来该做什么
直说局限:它还是早期项目,《血源诅咒》《黑暗之魂 重制版》这种级别的确认清单之外,更复杂的游戏大概率还在排队;固件必须自备;macOS 有系统版本门槛且不支持 Intel Mac。这些不是"即将解决"的口头承诺,是写进文档的现状。
如果你决定试:先去兼容性列表里挑一款确认能跑的游戏,从最容易的入口入手;跑通了给仓库点个 Star,跑不通就把log/里的日志附在 issue 里提出来——这个项目的更新节奏,很大程度上就是被这些带日志的 issue 推着走的。
【免费下载链接】shadPS4PlayStation 4 emulator for Windows, Linux, macOS and FreeBSD written in C++项目地址: https://gitcode.com/GitHub_Trending/sh/shadPS4
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考