1993年巴格达Amiga游戏借LLM读68000汇编移植Godot:伊拉克首款商业游戏上iOS

1993年巴格达Amiga游戏借LLM读68000汇编移植Godot:伊拉克首款商业游戏上iOS

512KB内存里的巴比伦双子

9月1日,开发者Rabah Shihab发表长文,讲述把1993年在巴格达制作的Amiga游戏Babylonian Twins移植到Godot引擎的全过程——由LLM逐行阅读68000汇编完成移植。1993年的原始开发条件是:Amiga 500,512KB内存,无硬盘,整机接在电视机上。当时二十多岁的工程系学生Shihab用纯68000汇编写下全部代码,Murtadha Salman绘制美术,Mahir AlSalman创作音乐。

开发环境的恶劣程度超出大多数人的想象:伊拉克正处于制裁之下,没有互联网,没有游戏开发资料,手头只有一本Amiga Hardware Reference Manual,用来直接对硬件编程;每天只有几个小时供电。频繁的软盘换盘加上50摄氏度的夏季高温,先后烧坏了他三个软驱。游戏在1993年完成,成为伊拉克历史上第一款商业游戏,却因Commodore倒闭与制裁吓跑发行商而长期封存。

直接接管硬件的1993年代码

在Amiga上,纯手工意味着游戏运行时完全不经过操作系统。启动时保存中断向量,关闭OS中断,接管整台机器:基址寄存器指向$dff000硬件寄存器区,intena写入$4000关掉系统中断。从那一刻起,显示输出由游戏自己的copper list驱动——Amiga的可编程视频协处理器,逐场重写以控制精灵与天空颜色。图块移动靠直接写blitter寄存器并等待完成标志,摇杆直接读硬件端口,开火键是CIA芯片上的一个引脚。OS只在关卡之间短暂回归,从软盘载入下一关的文件,然后再次被关掉。

游戏的命运在2008年出现转机:一个Amiga论坛通过Shihab兄弟上传的YouTube视频找到了他,顺着线索要走了当年的磁盘,当年的论坛帖至今还在。原始1993版磁盘如今在itch.io免费提供。游戏曾在2010年被手工移植过一次,由原班人马在自研引擎上重制并登陆iPhone。而这次发布的Definitive Edition基于Godot引擎重制,已经登陆iOS与Android,今年秋天登陆Steam。

LLM读汇编:这次移植的真正看点

与2010年的手工移植不同,2026年的移植把最艰难的部分交给了LLM:阅读30多年前的68000汇编,理解每一处硬件寄存器操作,再翻译成Godot的场景与脚本。汇编里满是当年的非标准技巧——自修改代码、copper list的动态改写、与中断时序的精妙配合——这些恰恰是LLM最容易被考倒的部分。Shihab在文中保留了LLM出错的段落,包括误读硬件时序导致的物理表现异常,然后完整展示修正过程,而不是只报喜。

Hacker News评论区的反应两极分明。高赞评论认为这是LLM辅助逆向工程的标杆案例,希望Claude Code能导出一份通用的移植工程指南,包括它自建工具链的描述——毕竟做过二进制逆向的人不少,能做到这种完成度的没有。另一派则直言文中的AI味文风让人读不下去。第三种观点带着欣慰:很高兴看到它也会绊倒,古老硬件里的非标准黑客技巧依然是代理难以一次性啃下的硬骨头。

从巴格达封存到全球商店

Babylonian Twins的故事内核是游戏史上少见的完整弧线:制裁下的业余开发、封存十余年、社区考古式的找回、相隔16年的两次移植。1993年那台Amiga 500上的512KB内存,装下了双角色平台跳跃的全部逻辑;2026年,LLM用几天时间读懂了那512KB里的每一个字节。两个时代的开发效率差了几个数量级,但游戏的设计乐趣在移植后依然成立——这也是评论区试玩玩家给出的共识。

对移植与保存社区,这个案例给出了可复制的方法论:LLM不需要完美理解汇编,只需要给出可信的初版翻译,再由原开发者凭记忆与试玩校准。Shihab在文末放出了移植过程中的工具链与代码结构说明。当年一本硬件手册加上每天几小时供电能做出一款游戏,如今一台笔记本加上一个LLM能让它再活33年。Definitive Edition的Steam版本预计今秋上线,原始磁盘则永久免费。