Nintendo|志愿者完成了《塞尔达传说:时之笛》的反编译 C语言代码可读
通过将近两年的努力,一个由志愿者组成的团队,终于完成了对《塞尔达传说:时之笛》的反编译任务 。更确切地说,他们将可执行 ROM 文件转换成了人类可读(且可编辑)的 C 语言代码,为后续的 PC 移植和各种 MOD 奠定了基础 。
访问购买页面:
任天堂Switch自营旗舰店
文章图片
上周日,ZRET 逆向工程团队成员 Kenix 在该项目的 Discord 服务器上宣布:
在数十人的帮助下,我们最终完成了这个项目,并取得了惊人的成就 。我们一度认为可能永远无法完整每项功能匹配,因而这项激动人心的壮举还是相当让人难以置信的 。完整的反编译过程,持续了至少 21 个月 。虽然自动化软件工具有一定用处,但想要将代码反编译成人类可读的 C 语言,还是需要人工解析 15000 多个函数中的每一个 。
在 100% 完成开源任务之前,最终的反编译功能仍需与 ZRET 的 GitHub 存储库合并 。
直到提交并审核通过,团队才得以通过编译器来运行数万行 C 代码(以及来自合法卡带的图形和声音资源),并最终生成 1:1 的原版《时之笛》ROM 副本 。
在弄清楚每个部分的用意的同时,ZRET 团队还需要清理代码,以消除任何混淆、或逻辑过程中引入的 bug。
文章图片
回顾 2019 年完成的类似项目,最终让广大玩家体验到了多个高分辨率的 PC 移植体验 。然而 ZRET 团队成员 Rozlette 在去年接受 ARSTechnica 采访时透露:
从 C 代码到 Windows PC 移植的构建过程,并没有想象中那么容易 。毕竟项目中有许多代码和 N64 硬件的使用有关,比如 N64 的渲染管道,就与现代 PC 平台上的 OpenGL 大不相同 。在 ZRET 项目的推进过程中,Kenix 表示相关移植工作超出了最初预想的范围 。即便如此,团队还是颇有兴趣地研究了相关代码,以深入了解有关游戏内部运作和创作的细节 。
此外反编译代码能够更加轻松地创建新的游戏模式 / 随机方案,从而进一步拓展游戏的可玩性与观赏性 。
文章图片
对于为何要投身于这个项目,Rozlette 曾于去年坦言,这一切都是出于对儿时游戏的热爱 。
这对我来说就像一个大谜题,且其中每个函数都是一个片段 。当我处理一个未知的代码函数,然后意识到它在游戏中的作用时,就会让自己感受到相当大的鼓励 。推荐阅读
- 莎莉|国一全能王石锤!莎莉完成50把英雄不重复挑战,看完战绩后:佩服
- 完美世界|只剩下7%好评的《三国杀》和随处可见的三国杀玩家
- 原神|原神:策划用心了,悠长岁月的文化PK快餐式的文化,完胜!
- 希尔瓦娜斯|魔兽世界:希女王被联盟接纳,双阵营友善,成为完全中立的角色
- 尼尔|主创半开玩笑《尼尔:机械纪元》系列游戏可能会完结
- 虎牙|虎牙莎啦啦“强解”成功,一叶知秋收到632万,并未完全兑现承诺
- xyg|JXG拿下K甲却被XYG完虐,刺痛发文难掩心酸,大仙表情亮了
- 光·遇|光遇:玩家太惨了,3号13点解封,完美错过武士裤
- 王者荣耀|LOL手游的天使上单打不过?三个英雄能完美压制
- 大锤哥|虎牙为完成KPI,挑起王者荣耀性别之争?还让三年夙敌大锤哥柱子做队友