首页 / 资讯中心 / 文章详情

在 PC 上跑《血源诅咒》:shadPS4 PS4 模拟器从编译到第一帧

在 PC 上跑《血源诅咒》:shadPS4 PS4 模拟器从编译到第一帧 ★ FEATURED ARTICLE
在 PC 上跑《血源诅咒》shadPS4 PS4 模拟器从编译到第一帧【免费下载链接】shadPS4PlayStation 4 emulator for Windows, Linux, macOS and FreeBSD written in C项目地址: https://gitcode.com/GitHub_Trending/sh/shadPS4shadPS4 是一个 C 写的 PS4 模拟器现在能在一台 PC 上把《血源诅咒》跑到 60 帧。官方给它定的调子是早期开发阶段别指望完美体验。方向是实的但别当成品用。 架构全景三块模拟策略先建立心智模型再看怎么动手。CPU 这块几乎不用翻译。PS4 的 CPU 是 x86-64游戏可执行代码在 PC 上原生跑。GPU 是真正的硬骨头。PS4 的 GPU 是 AMD 的 GCN 架构代号利物浦有自己的指令集PC 显卡看不懂。中间必须过一道重编译把着色器转成 PC 能执行的 SPIR-V。内核和系统库需要重写。代码在src/core/libraries/kernel/把 PS4 的系统调用逐个实现成 C 模块。音频和输入走原生代码手柄、键盘、鼠标统一由src/input/处理开销可以忽略。选择你的入口只玩游戏还是改代码这条分界线值得先说清楚。我只想玩游戏直接下载官方的 QtLauncher它有完整的图形界面管理游戏、装固件、跑模拟器一站式搞定。不需要碰本仓库也不需要会编译。我想改代码 / 提贡献这个仓库才是你要的。它是模拟器核心不带图形界面编出来是一个命令行可执行文件。改完跑--help看参数对着日志调。提 PR 前读一遍 CONTRIBUTING.md。编译实战Linux 三条命令起步Linux 完整动线系统依赖约 20 个包Clang、CMake、SDL、Vulkan 开发库完整列表在 building-linux.md。Ubuntu 24.04 默认仓库里只有 Clang 18需要先加 LLVM 23 的源。sudo apt install build-essential clang-23 cmake libsdl2-dev libvulkan-dev libpng-dev第三方库全靠 git 子模块管理clone 时不能漏一个参数。git clone --depth 1 --recursive https://gitcode.com/GitHub_Trending/sh/shadPS4 cd shadPS4漏了--recursive子模块全是空目录cmake 配置阶段直接报错。cmake -S . -B build/ -DCMAKE_C_COMPILERclang-23 -DCMAKE_CXX_COMPILERclang-23 cmake --build ./build --parallel $(nproc)不显式指定编译器CMake 可能默认选到 GCC。官方文档明确提示用 GCC 可能撞上未知问题提 bug 前请先用 Clang 复现。整机卡死的话去掉--parallel $(nproc)单线程慢慢跑。编完直接跑。CUSA00900是《血源诅咒》美版 ID前提是配置里指好了游戏目录。./build/shadps4 CUSA00900不传参数就列出全部选项--help是第一个该看的文档。macOS需要 macOS 26.0 以上系统Intel Mac 不支持。步骤见 building-macos.md。Windows用 Visual Studio 2022 加 C Clang 工具链CMake 自动接入ARM64 不支持。细节见 building-windows.md。着色器重编译数据流GCN 字节码怎么变成 SPIR-V这部分是 shadPS4 技术分量最重的模块代码在src/shader_recompiler/。数据流向一条线走到底。输入是 PS4 GPU 吐出的 GCN 字节码。前端在frontend/负责把字节码解码成中间表示IR。IR 之后是一串优化 pass全在ir/passes/常数传播、死代码消除、64 位浮点降级到 32 位、wave64 指令降低逐个跑。最后是后端backend/spirv/把优化后的 IR 生成 SPIR-V交给 Vulkan 执行。这套架构参照了 yuzu 的 Hades 编译器。好处是省掉了从零写优化器的工作量团队可以专心解决模拟 AMD GPU 本身的问题。GPU 模拟本体在src/video_core/amdgpu/liverpool.cpp逐条解释 GPU 的寄存器级命令renderer_vulkan/负责 PC 这一侧的队列、帧图和交换链。踩坑手册高频问题按出现顺序排固件模块缺失游戏启动报错。原因shadPS4 本体不带固件文件libSceFontFt.sprx、libSceJson2.sprx、libSceUlt.sprx等模块需要你自己 dump。 解法从自己合法持有的 PS4 主机上导出这些.sprx放进模拟器的sys_modules文件夹。列表在 README 里一个都不能少。用 GCC 构建出来行为诡异。原因官方 CI 用的是 ClangGCC 构建路径只做了部分测试。 解法换 Clang 23 重编。坚持用 GCC 的话提[APP BUG]前先确认 Clang 下同样能复现。编译阶段整机卡死。原因--parallel $(nproc)把内存吃满低内存机器会卡住。 解法去掉这个参数单线程慢慢跑。Linux 上 RenderDoc 抓不到帧。原因RenderDoc 不支持 Wayland。 解法用 x11 驱动启动。SDL_VIDEODRIVERx11 ./build/shadps4 CUSA00900具体怎么看一帧、bug 报告该带什么见 Debugging.md。盲选了一款没人玩过的游戏直接崩了。原因兼容性列表之外意味着没人替你记录过崩溃细节。 解法先查项目的游戏兼容性列表再选游戏。大概率是在浪费已经有人记录过的崩溃时间。它现在还跑不了《战神》。下一步就一件事去兼容性列表挑一款已验证的游戏开跑卡住就把日志丢进 issue。每发一个版本能玩的清单就长一点。【免费下载链接】shadPS4PlayStation 4 emulator for Windows, Linux, macOS and FreeBSD written in C项目地址: https://gitcode.com/GitHub_Trending/sh/shadPS4创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站