《波斯王子》移植实验:前沿大模型代码能力比拼
作者让 Claude 与 Codex 等前沿模型把《波斯王子》6502 汇编移植为 C#,对比各模型架构理解与代码生成能…
开发者 Priyan R 在博客中分享了一项持续数月的个人实验:他让多款前沿大模型将经典游戏《波斯王子》的 Apple II 6502 汇编源码移植到 C#,全程仅通过提示词驱动,不人工修改代码,最终以"能否真正像原版那样运行"作为评判标准。这项任务对模型提出了几项硬性要求:理解底层架构、解析旧格式数据、还原帧动画逻辑、与原版进行像素级对比。下面按模型轮次回顾整场实验。
第一轮:Claude Opus 4.6——流程通了,架构错了
作者在 2026 年 2 月使用 Claude Opus 4.6 完成首轮尝试。模型花了两天时间,先生成 C# 控制台版本,再扩展出关卡编辑器,最后借助 Raylib 渲染出接近原版的画面。原版的关卡数据(房间、瓦片、闸门、守卫位置)被正确解析,但"跑起来完全不像《波斯王子》"。作者给出的提示记录可见一斑:
- "画面乱糟糟,根本没法玩"
- "角色出来了,但移动全错……王子不在地面上"
- "直接掉到地板下面,方向键也不动了"
事后复盘,问题出在引擎架构:模型让角色一格一格地"跳"过去,而原版是逐帧播放手绘动画、每帧只移动极小距离。
第二轮:OpenAI Codex——表面打磨
2026 年 3 月,作者将 Opus 4.6 留下的代码库交给 OpenAI Codex(具体型号未记录)。Codex 做了一系列"小修小补":开启像素过滤让画面不再模糊、给精灵图加上透明背景、让打开的闸门可以通行、修正柱顶被误判为墙的逻辑。但角色依旧卡在错误位置、引擎层面的根本问题并未触及。
第三轮:Claude Opus 5——一夜之间重建引擎
2026 年 9 月的 Opus 5 是实验的转折点。作者预先写好两个 Claude Code 技能:一个控制 DOSBox(启动程序、发送按键、截图),另一个可控制任意 Windows 程序。他让 Opus 5 对照自己手中的原版 DOS《波斯王子》运行截图,自主迭代直到成功或早晨 6 点。
模型当晚首先诊断出架构问题——旧引擎走的是瓦片网格逻辑,而原版由帧序列驱动。于是它按原版的设计重建了引擎,并进一步读取了 DOS 游戏文件的格式:所有 15 关的美术资源、王子的每一帧动画、地牢绘图数据。它通过字节模式匹配,从 PRINCE.EXE 中定位了原作者的动画表,并在信任前用第二组已知值交叉验证。整个过程中,游戏的版权数据并未进入仓库,C# 程序只在运行时从作者本人的 DOS 安装目录读取。
第二天早晨,作者获得了一个"真正可玩"的版本:王子的下落、着地、转向、奔跑、跳跃、穿过缺口并以蹲姿落地,全部使用了原版动画。但关卡布局仍有偏差——砖块、闸门、装饰物的位置都略有出入,因为 Opus 5 是逐块对照截图摆放,无法解释的部分则靠"猜测"填补。
第四轮:Claude Opus 5.5——一次提示词的飞跃
同样在 2026 年 9 月发布的 Opus 5.5 只收到一条提示:"角色能走能跳,但闸门位置、砖块都错了,你是新模型,看看你能改进什么。"
它选择了完全不同的路线:没有再去微调位置,而是直接找到了原版游戏的房间绘制例程——这部分逻辑在 SDLPoP(由 Dávid Nagy 和 princed.org 社区基于反汇编重构的开源移植版)中有完整文档。Opus 5.5 把那段例程原样移植成 C#,新文件 DosRoomDrawer.cs 的头注释里也注明了这一点。
借助 SDLPoP 的文档,前面几轮靠"猜"得出的结论被纠正:
- 关卡中的"随机"砖块图案其实并非随机。原版以房间编号、行号、列号作为伪随机种子,因此每次进入同一面墙,效果完全一致。
- 第一关开场的闸门在关卡数据里本来是开着的。原版在角色落入时按下了一个隐藏按钮,因此玩家听到的是"闸门砰地一声关上"的声音。
Opus 5.5 还自己发现了几件事:
- PRINCE.EXE 实际上是经过 Microsoft EXEPACK 压缩的;之前几轮读到的表之所以能用,只是因为它们恰好落在压缩器未触及的区域。模型因此写了一个解压器,从作者自己的可执行文件里读出了瓦片绘制表。
- 之前几轮使用的截图裁剪偏了一像素行;此前关于"模板色"的猜测也是错的——那其实就是出口门的青色。
随后,Opus 5.5 把渲染结果与 DOSBox 中运行的真实游戏逐像素对比,在第一关第一屏取得了……(原文在此处截断)。
这项实验的价值与局限
作者最终用同一任务、同一标准,横向比较了至少四个前沿模型版本。结论并非简单的"谁更强",而是揭示了大模型在长任务、跨格式数据处理、对照参考实现进行迭代等维度上的真实差异:对架构的判断、对历史文档(SDLPoP)以及压缩格式(EXEPACK)的主动运用,成为后期模型拉开差距的关键。
不过需要注意,原文给出的时间点(2026 年 2 月、3 月、9 月)属未来日期,文中出现的 Opus 5、Opus 5.5 等版本在作者撰文时尚未公开发布,因此本实验更应被视为作者对前沿模型能力上限的构想性测试,而非已完成的现实工程记录。
