Nintendo|志愿者完成了《塞尔达传说:时之笛》的反编译 C语言代码可读

通过将近两年的努力,一个由志愿者组成的团队,终于完成了对《塞尔达传说:时之笛》的反编译任务 。更确切地说,他们将可执行 ROM 文件转换成了人类可读(且可编辑)的 C 语言代码,为后续的 PC 移植和各种 MOD 奠定了基础 。
访问购买页面:
任天堂Switch自营旗舰店


Nintendo|志愿者完成了《塞尔达传说:时之笛》的反编译 C语言代码可读
文章图片

上周日,ZRET 逆向工程团队成员 Kenix 在该项目的 Discord 服务器上宣布:

在数十人的帮助下,我们最终完成了这个项目,并取得了惊人的成就 。我们一度认为可能永远无法完整每项功能匹配,因而这项激动人心的壮举还是相当让人难以置信的 。
在 100% 完成开源任务之前,最终的反编译功能仍需与 ZRET 的 GitHub 存储库合并 。
直到提交并审核通过,团队才得以通过编译器来运行数万行 C 代码(以及来自合法卡带的图形和声音资源),并最终生成 1:1 的原版《时之笛》ROM 副本 。
完整的反编译过程,持续了至少 21 个月 。虽然自动化软件工具有一定用处,但想要将代码反编译成人类可读的 C 语言,还是需要人工解析 15000 多个函数中的每一个 。
在弄清楚每个部分的用意的同时,ZRET 团队还需要清理代码,以消除任何混淆、或逻辑过程中引入的 bug。

Nintendo|志愿者完成了《塞尔达传说:时之笛》的反编译 C语言代码可读
文章图片

回顾 2019 年完成的类似项目,最终让广大玩家体验到了多个高分辨率的 PC 移植体验 。然而 ZRET 团队成员 Rozlette 在去年接受 ARSTechnica 采访时透露:
从 C 代码到 Windows PC 移植的构建过程,并没有想象中那么容易 。毕竟项目中有许多代码和 N64 硬件的使用有关,比如 N64 的渲染管道,就与现代 PC 平台上的 OpenGL 大不相同 。
在 ZRET 项目的推进过程中,Kenix 表示相关移植工作超出了最初预想的范围 。即便如此,团队还是颇有兴趣地研究了相关代码,以深入了解有关游戏内部运作和创作的细节 。
此外反编译代码能够更加轻松地创建新的游戏模式 / 随机方案,从而进一步拓展游戏的可玩性与观赏性 。

Nintendo|志愿者完成了《塞尔达传说:时之笛》的反编译 C语言代码可读
文章图片

对于为何要投身于这个项目,Rozlette 曾于去年坦言,这一切都是出于对儿时游戏的热爱 。
这对我来说就像一个大谜题,且其中每个函数都是一个片段 。当我处理一个未知的代码函数,然后意识到它在游戏中的作用时,就会让自己感受到相当大的鼓励 。

推荐阅读