HeadlinesBriefing HeadlinesBriefing.com

PS2游戏浏览器WebAssembly重编译运行

Hacker News •
×

Play Station 2 游戏无需模拟器即可在浏览器中运行。游戏的 Emotion Engine 机器代码被提前翻译为 C++,再编译为 WebAssembly,并与重新实现的 PS2 操作系统和硬件(使用 WebGPU 渲染)进行链接。

这是 psp-web-recomp 的姊妹项目,采用相同方法。首个以此方式运行的游戏是 Gran Turismo 4,因其是系统上最 demanding 的游戏之一:依赖两个向量单元、精确的浮点行为以支持回放和驾照测试,以及将渲染图像作为调色板读取的图形技巧。游戏可从启动画面、开场电影、菜单到比赛完整运行,包含音乐和音效,并保存至浏览器中的记忆卡。在 Chrome 浏览器中,使用笔记本电脑集成显卡,以 PAL 制式 50 帧每秒全速运行,分辨率为 PS2 的两倍。

God of War II 随后通过相同脚本实现运行。它无需特定游戏代码,但发现了两个 Gran Turismo 4 未触发的 bug:一个在重编译器中,另一个在向量单元时序中,以及 PS2 输入/输出处理器的若干缺失部分。目前可从菜单运行至过场动画和战斗,在 Chrome 中以 PS2 分辨率在激烈战斗中维持 60 帧每秒。

此处不包含游戏数据。您需提供自己拥有的游戏光盘镜像,仓库中的脚本将其在您的机器上转换为网页。

关键实体:公司:GitHub, Chrome

FAQ:PS2 到 WebAssembly 重编译如何工作?

eerecomp 读取游戏可执行文件,追踪控制流以识别函数,并以 16 KiB 客户代码为单位为其生成 C++,保留 R5900 的特性,如 128 位寄存器、分支延迟槽和 PS2 的非 IEEE 浮点单元。跳转变为尾调用,线程切换展开主机栈,因此无需每个客户线程的独立栈。

来源: Hacker News · 由HeadlinesBriefing整理摘要