一款1998年的N64滑雪游戏,被一支小团队用84天做出了字节级完全一致的反编译——编译出的机器码和原版ROM逐字节对齐。作为对照,它的续作《Snowboard Kids 2》用了596天才走完同样的路,速度差了近7倍。开发者Chris Lewis把这归因于AI辅助加上团队经验积累,但报告里藏着一个更值得盘问的数字:批量跑在1830个未匹配函数上的自动化翻译工具m2c,成功率只有0.93%

这提醒我们别急着把84天读成"AI又干成一件事"。反编译不是让游戏能跑起来就算数,而是要求逆向出的C代码经编译后,产生和原版ROM完全相同的机器码——这个门槛比"看起来对"高得多,也正是这类项目里AI真正的边界所在。

一个停产的编译器,比AI更难对付

《Snowboard Kids》用的是SGI的IDO 5.3编译器,续作用的是开源GCC 2.7.2。这个差异才是项目难度的核心变量。GCC至今仍在维护,行为可预测,社区经验丰富;IDO早已随SGI工作站停产,源码不公开,优化和代码生成拆成好几道内部传递,一处C代码的微小改动就可能让寄存器分配整个改写。开发者的原话是:LLM和他自己都不太擅长复现IDO的输出。

闭源IDO vs 开源GCC,谁更难啃 SGI IDO 5.3(本作用) 专有闭源,无官方文档 多阶段激进优化传递 小改动→寄存器分配大变 依赖社区逆向的工具链 难以用直觉推断编译结果 GCC 2.7.2(续作用) 开源,源码可查 沿用至今,持续维护 优化行为相对可预期 社区经验积累更成熟 AI和人类都更容易上手

一个已经停产多年、没有官方文档的闭源编译器,恰恰是permuter、m2c这类自动化工具最吃力的场景——你可以让工具反复排列组合去凑一个字节匹配,但如果C代码的结构本身就写错了,排列组合永远凑不出正确答案。

那个被算糊了的4.8%

报告里另一个数字更值得追问:作者自称仅4.8%的匹配commit涉及专家人工介入,暗示AI和自动化工具包办了剩下九成五以上的工作。但这个数字目前找不到独立来源佐证,统计口径也没说清是按commit数、函数数还是耗时算的。

  • 风险.4.8%这类低比例数字容易掩盖"关键节点上极少数人做了不成比例的工作"——作者自己的脚注也承认,没有几位核心贡献者的IDO专业知识,项目很可能卡在89%到90%就再也推不动。

同一批1830个未匹配函数,m2c批量翻译只精确命中17个,成功率0.93%。这两个数字放在一起看,比"AI贡献了多少百分比"的自我总结更诚实:AI能扫掉标准库代码这类低垂的果实,libultra、libmus之类的现成函数一抓一个准;但真正决定项目能不能封顶的长尾部分,还是要靠人对编译器怪癖的直觉。

反编译速度纪录,四个关键数字 84天 本作反编译耗时 596天 续作耗时,约7倍于本作 0.93% m2c批量翻译成功率(17/1830) 4.8%? 作者自称专家介入率,未见独立佐证

速度纪录,还是workflow的复利

真正拉快速度的,更像是workflow层面的积累,而不是模型本身突然变强了。团队把IDO的编译器怪癖写进了一份共享文档,一个agent踩过的坑能立刻变成另一个agent的经验;四个Git worktree并行工作时,一处新匹配的函数可以跨分支即时被其他agent引用,不用等合并到主干。这些都是流程优化,跟GPT或Claude本身的代码生成能力关系不大。

一个侧面证据是《Pilotwings 64》的反编译只用了74天——虽然它的函数数量比《Snowboard Kids》少一些,编译后代码量却更大,两者不能完全类比,但足以说明:经验丰富的人类团队配上对的工具,本来就能达到类似速度,未必非要归功于AI的跃升。


对速通玩家和modding创作者来说,这份完整源码的实际用处,比"84天"这个数字更值得关注。源码能解释CPU寻路和玩家速度背后的具体机制,帮速通社区把路线和道具操作打磨得更精确;对modding者而言,团队已经在尝试把初代的关卡内容移植进续作的引擎里,这条路径此前只能靠猜。但100%匹配反编译不等于代码已经被读懂——大量变量和结构体现在还是自动生成的占位名字,清理、命名、静态重编译,都是接下来要单独啃的活。