shadPS4 PS4 模拟器:从 clone 到第一帧的 3 条命令
【免费下载链接】shadPS4PlayStation 4 emulator for Windows, Linux, macOS and FreeBSD written in C++项目地址: https://gitcode.com/GitHub_Trending/sh/shadPS4
《黑暗之魂 重制版》能在你的 PC 桌面上以完整 3D 图形跑起来,这件事现在成立。shadPS4 是一个用 C++ 写的 PS4 模拟器,支持 Windows、Linux、macOS;官方定位很直接:早期开发阶段,别指望完美体验。《荒野大镖客:救赎》《初音未来 歌姬计划 Future Tone》等一批作品已能跑通。想从源码上手,这条动线够用。
这个仓库是什么:核心,不是安装包
先消除第一个误解:clone 下来的是模拟器核心,没有图形界面,不能双击运行。只想玩游戏的用户用项目单独的 QtLauncher 启动器,改内核、提代码才需要碰这个仓库。
架构上有个关键决策:PS4 的 CPU 是 x86-64,游戏可执行代码在 PC 上原生运行,不用翻译。要重写的只有内核与系统库(src/core/libraries/kernel/)和 GPU 路径,后者才是工程量所在。
从零编译:三条命令到第一帧
先装系统依赖:Clang、CMake、SDL2、Vulkan 等约 20 个包,完整清单见官方文档 building-linux.md。编译器认准 Clang,官方构建与 CI 都用它,换 GCC 可能撞上未知问题。
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不能省:第三方库全靠 git 子模块管理,漏掉它 clone 下来的是残缺代码。编译时电脑卡死,去掉--parallel $(nproc),单线程慢跑。
产物出来就完事了。
./build/shadps4 CUSA00900CUSA00900是《血源诅咒》美版 ID,前提是配置里已指好游戏目录,直接传 ID 启动;也可传 ELF 文件路径直接启动可执行文件。macOS 需要 26.0 以上系统,Intel Mac 不支持。
最重的工程:GCN 着色器重编译
解决什么问题:PS4 的 GPU 是 AMD 的 GCN 架构芯片,代号"利物浦",指令集 PC 上的 GPU 看不懂,GPU 侧模拟是整个项目最硬的骨头。
怎么解的:前端解码 GCN 字节码,转成中间表示 IR,跑一串优化 pass,最后产出 SPIR-V 交给 Vulkan 执行。设计参照了 yuzu 的 Hades 着色器编译器,优化器不从零写,精力集中在模拟 AMD GPU 本身。
代码在哪:重编译器在src/shader_recompiler/,前端frontend/,优化 pass 在ir/passes/,SPIR-V 后端在backend/spirv/;GPU 命令解释在src/video_core/amdgpu/liverpool.cpp,Vulkan 侧在src/video_core/renderer_vulkan/。
第一帧出来之前,先备好的四样东西
固件模块,模拟器不带。⚠️libSceFontFt.sprx、libSceJson2.sprx、libSceUlt.sprx等一批.sprx文件,要自己从合法持有的 PS4 主机上 dump,放进sys_modules文件夹。
没有手柄,内置映射够用。WASD 左摇杆,IJKL 右摇杆,三角圆圈叉方块对应小键盘 8/6/2/4,也可用 C/B/N/V。F11 切全屏,F10 看帧数,F12 触发 RenderDoc 抓帧。Xbox 和 DualShock 手柄即插即用,自定义绑定按游戏保存。
选游戏前,先查兼容性列表。项目维护着单独的游戏兼容性记录,逐个标注各作运行情况。盲选没验证过的游戏,大概率是重复别人已记录过的崩溃。
真崩了,先看这份文档。Debugging.md 讲怎么用 RenderDoc 检查一帧里发生了什么、bug 报告该带什么信息;Linux 上用 RenderDoc 要设SDL_VIDEODRIVER=x11,它不支持 Wayland。
还差什么
官方明说,更复杂的游戏还需要时间。Star 仓库,从兼容性列表里挑一款能玩的,卡住就把日志带进 issue。每发一个版本,可玩名单就近一步。
【免费下载链接】shadPS4PlayStation 4 emulator for Windows, Linux, macOS and FreeBSD written in C++项目地址: https://gitcode.com/GitHub_Trending/sh/shadPS4
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考