用LLM将1993年Amiga游戏移植到Godot
Porting my 1993 Amiga game to Godot, with an LLM reading the 68000 assembly

1993年,我在Baghdad用68000汇编语言为Amiga 500开发了游戏Babylonian Twins。如今,我尝试用LLM将这段30年前的代码移植到Godot引擎。这次实验不仅成功重建了原始二进制文件,还实现了与现代版本的无缝集成。整个过程展示了AI在处理老旧代码时的惊人能力,同时也揭示了技术传承中的挑战与乐趣。
从那一刻起,显示完全由游戏自己的copper列表控制,这是Amiga的可编程视频协处理器,为精灵和天空颜色实时重写。
HN 评论区
131- gmerc
完全是个新世界。过去几个月我用 LLM 把一些随机复古游戏移植到了现代 WebGL/WebGPU:
- The Adventures of Robin Hood - Opus 4.7/Sonnet
- Syndicate - Sol/Luna 5.6/Opus ( https://this.os.isfine.org/blog/posts/modern-game-port-syndi... )
- Kaiser 2
- Populous Plus - Sol/Luna 5.6/Opus
- Dragon Strike - (Fable 5.1 几乎一次成功)
- War of the Lance - Qwen-3.7-27B-dense (卡住了,最后用 Qwen-3.8-Flash-Next 搞定)
https://this.os.isfine.org/blog/posts/what-reverse-engineeri...
- Dungeon Keeper - 各种模型
- Red Baron - Opus 4.8, DeepSeek 4
- Test Drive 3 (Qwen-3.8-Flash Next, DeepSeek-4-Flash-exp, GLM-5.3-Flash)
- 进行中:Ultima 6 ... 转 3D (Fable, GLM-5.3) ( https://this.os.isfine.org/#ultima6-atlas )
有的是直接源码移植(Kaiser),有的是全逆向工程(Dragon Strike, Test Drive, WOTL)
有的是混合可用源码(Syndicate, Populous)
部分发现记录在这里:https://this.os.isfine.org/blog/
- mattjoyce
几周前我下载了一个 ZX81 游戏的内存转储,让 Claude 用 Go 语言把它重构出来。
它完美搞定了。先把二进制还原成 BASIC,再转成 Go。我的想法是,这个游戏 LLM 的训练数据里应该没有,或许是个不错的基准测试。
想想看,先是在个人计算机的黎明时期,如今又站在 AI 把那段初体验当作考古对象的拐点,这真是疯狂。
- btbuildem
> 一本 Amiga 硬件参考手册
aka The Book... 哇,这勾起了满是灰尘的回忆。
Babylonian Twins 有着强烈的《Gods: Into the Wonderful》的氛围,我好奇那款游戏是否给了你灵感?
- dannyobrien
我只是想表达,我对你在 1993 年用汇编语言开发这款游戏感到无比惊叹。差不多同一时期,我也在尝试为 Atari ST 写游戏,那种对项目的投入——尤其是当时文档极其匮乏、互联网尚未普及的年代——真是非凡。你有关于调试这款游戏的趣事吗?对我来说,那总是最令人沮丧的部分,特别是在满怀希望地手工编写代码,确信它能一次运行成功后……
- cesaref
我注意到他提到游戏运行在 50Hz——如果 Amiga 运行的是 PAL 制式,这没错;但如果是美版机器,使用 NTSC 制式时就是 60Hz。
当年,大多数 Amiga 游戏是在欧洲制作的,所以针对 50Hz 刷新率进行了优化,在我们这里玩起来感觉“正常”。在 60Hz 下,它们玩起来感觉就不对劲;反之,美国的游戏在我们这里玩起来也会觉得迟钝和不爽。
这种将机器锁定在显示器刷新率的方式既是诅咒也是祝福。它让机器能在不同地区驱动标准电视,虽然图像有点模糊,但也意味着一旦开始认真玩,就得用专用显示器。这降低了价格门槛,让很多孩子能说服父母买一台 :) 不过更高分辨率模式效果并不理想,所以很多东西都针对 320x256 分辨率。
一个意外的惊喜是,Amiga 可以 genlock 到电视信号,并叠加到视频流上,从而提供了许多有趣的廉价图形叠加功能,而这些功能是小电视台或爱好者们以前完全无法获得的。
那是快乐的时光。
- Gamemaster1379
很棒的项目。从去年十月开始,我就在尝试制作可复用的主机移植框架。Opus 4.6 是我在 NES 6502 上的第一次成功。
此后,我为 Super NES、GBA、Nintendo DS、Playstation(最受欢迎)甚至 Sega Genesis(也使用 68k 架构)都构建了静态/原生生态系统。
https://github.com/mstan/segagenesisrecomp
我甚至把 68k 解码器提取到了独立的仓库,因为我想把它复用到 Phillips CDI 上。
Sega 这边搞定了 Sonic 1、2 和 3&K,还有 Rocket Knight Adventures。不过目前还处于早期阶段。
CDI 这边搞定了 BIOS。虽然还没能端到端跑通一个游戏。
- kschiffer
我做了 Moonbase Commander,用的是 JS 和 HTML canvas。目前正在构建一个 AI 对手,希望别像原版那么弱智。
这太神奇了,这确实可行。我花了不少精力引导,这绝对不是一次提示就能搞定的,但过程非常有趣。
- hedgehog
太棒了。如果能让 Claude Code 导出一个工程指南,指导如何进行类似的移植,包括描述它为此构建的工具,那将非常有趣。我做过一些二进制逆向工程,但从未取得过这么好的成果。