📌 项目地址:boykopovar/AnyPS5 | ⭐ 4,727 颗星 | 🔧 C++ | 📜 未标注

4700星的C++项目,做的事有点特别

PS3有RPCS3,NS有Yuzu(已死),而PS5目前没有能跑大作的模拟器。AnyPS5(boykopovar/AnyPS5,4727 star,GPLv2-only)选了另一条路:不做模拟,直接把PS5的可执行文件转换成Linux或Windows的原生格式。

转换后游戏就是一个普通的本地进程。没有模拟层,没有独立的运行时进程,理论上性能上限比模拟器高。

重链接,不是模拟

AnyPS5的思路在原理上接近WINE早期的做法。它包含两部分:

一是relinker(位于core/relinker),负责把PS5格式的可执行文件转成目标系统的原生格式。二是一套PS5系统prx库的实现(core/libs/prx),转换后的程序动态链接到这些库上。也就是说,游戏调用的每个系统函数,AnyPS5都得自己实现一份。

项目进度用“已声明函数占已知函数的比例”来衡量。README特意说明:这个百分比的分母是项目目前知道的函数,不是PS5全部系统函数,随着发现新函数分母还会变大。这是很诚实的写法,但也说明覆盖度统计没有看上去那么直观。

另外它带一个shader重编译器(core/shader/recompiler/Recompiler.cpp),把PS5着色器转成SPIR-V。构建时开启ANYPS5_ENABLE_SPIRV_TOOLS,输出会用Spirv-Tools验证。

现在能跑什么

标志性成果是一款2D平台游戏Dreaming Sarah,在GTX 1050 Ti加i5-7500 3.4GHz的配置下稳定60帧。注意体量:这是一款小独立游戏,不是《战神》。完整测试列表在docs/user/COMPATIBILITY.md。

遇到没实现的功能,AnyPS5直接抛std::runtime_error,把what()打到stderr然后退出进程。粗暴,但早期阶段实用:崩在哪,就知道缺哪个函数。

手柄和键鼠

支持SDL映射的手柄,摇杆和扳机都能用。键鼠可以通过anyps5-input.ini配置文件自定义映射,格式见docs/user/INPUT_MAPPING.md。

法律边界写得很清楚

Disclaimer部分值得注意:AnyPS5用于互操作、研究、保存和兼容目的,不包含也不分发任何受版权保护的软件、固件、密钥或专有库。游戏二进制要用户自己合法获取,责任在用户。这个姿态和当年WINE、RPCS3的处理方式一致。

该怎么看这个项目

README没给运行命令,用法要看docs/user/USAGE.md,构建看docs/dev/BUILD.md。想参与的开发者可以读CONTRIBUTING.md和docs/dev/CONVENTIONS.md,项目还有一份docs/dev/TechnicalDebt.md直接公开技术债,这个少见。

我的判断:现阶段它不适合玩家,没有一款主流商业游戏能跑。但对逆向工程和系统编程方向的人来说,这是少数公开可参与的“静态移植”路线样本。PS5系统库还有大量函数没声明,relinker和shader重编译器都是硬核工程,缺人手。值得先收藏,定期看看兼容性列表的进展。

这篇文章对你有帮助吗?

发表回复