这个项目始于一个简单的问题:AI 模型能否拿到 Jordan Mechner 公开的 Apple II 源代码——1989 年 Broderbund 公司出品、后被 Ubisoft 收购的游戏的 6502 汇编——并产出一个可用的 C# 移植版?Priyan R. 提供了源代码,自己没有写任何代码,只是亲自试玩结果。
第一段说明,实验始于 Jordan Mechner 公开的 Apple II 源代码——1989 年 Broderbund 公司出品、后被 Ubisoft 收购的游戏的 6502 汇编——Priyan R. 提供的这份源代码是唯一的输入。
第一轮(Claude Opus 4.6,2026 年 2 月)先是生成了一个 C# 控制台游戏,接着是一个关卡编辑器,最后是一个 Raylib 图形版本。它正确解析了原始关卡文件——房间、瓷砖、城门、守卫位置——但引擎是错的。王子每次只能移动一个瓷砖的距离,在格子之间跳跃,而真实游戏每一帧都用手绘动画帧配合亚瓷砖级别的移动。
第二轮(OpenAI Codex,2026 年 3 月)做了些表面上说得过去的修复:更锐利的像素过滤、透明的精灵背景、可打开的城门、不再当墙用的柱顶。但王子最后还是站到了错误的位置,甚至卡住。它只做了表面打磨,没有修好根基。
第三轮(Claude Opus 5,2026 年 9 月)改变了规则。两个 Claude Code 技能用来控制 DOSBox——启动真实游戏、发送按键、截屏——模型再拿这些去比对。Opus 5 诊断出架构问题,围绕原作的帧序列设计重建了引擎,并通过在 Apple II 源码中认出的字节模式,从 PRINCE.EXE 中提取出动画表。在信任每张表之前,它都拿第二个已知值交叉验证过。没有受版权保护的游戏数据进入仓库;C# 程序在运行时从玩家自己合法拥有的 DOS 版本中读取数据。
第四轮(Claude Opus 5.5,2026 年 9 月)只需要一条提示:"角色会移动、奔跑、跳跃,但城门位置全都不同,你是个新模型,看看你还能改进什么。"Opus 5.5 找到了原作的房间绘制例程,该例程由 Dávid Nagy 和 princed.org 社区在开源项目 SDLPoP 中记录在案,并对其进行了移植。得到的 DosRoomDrawer.cs 就是 SDLPoP 的 src/seg008.c 的 C# 移植版,正如文件头所示。
SDLPoP 的文档解释了此前各轮只能猜测的东西:砖块图案由房间号、行号、列号作为种子生成,所以每次进入同一面墙看起来都完全一样;关卡 1 的城门在关卡数据里本来就是开的,而王子掉落时隐藏的一次按键按下,正好解释了那声撞击声。
Opus 5.5 还发现 PRINCE.EXE 用 Microsoft EXEPACK 压缩过——此前的表之所以能用,只是因为它们恰好落在压缩包留下的未压缩区域里。它写了一个解包器,直接读取瓷砖绘制表。与 DOSBox 中真实游戏逐像素比对后,关卡 1 第一屏的差异从 8,429 个降到 2 个(一个火炬火焰恰好被捕捉在不同的瞬间)。第二个房间和关卡 3 的出口门也对上了。
但这并不完美:王子的精灵朝一个方向能正确绘制,朝另一个方向却会陷进墙里几像素。Opus 5.5 测试了所有测试节拍下的移动,定位到精灵问题,并只把这一部分回退——作者称这种自我检查是进展的标志。
项目仓库(github.com/priyanr/PrinceOfPersia_C-Sharp_Port_By_AI)保留了每一次会话,记录在 SESSION_HISTORY.md 中,并以 GPL-3.0-or-later 许可发布,因为 DosRoomDrawer.cs 包含 SDLPoP 的 GPL 声明。它要求玩家自己合法拥有《波斯王子》的 DOS 版本;不发布任何游戏数据。
第九段描述了位于 github.com/priyanr/PrinceOfPersia_C-Sharp_Port_By_AI 的项目仓库,指出它将每一次会话记录在 SESSION_HISTORY.md 中,并因 DosRoomDrawer.cs 包含 SDLPoP 的 GPL 声明而以 GPL-3.0-or-later 许可发布。
仍不确定的地方。Opus 5.5 自己说,单凭一条提示它无法仅从 DOS 二进制文件重建出绘制代码——它依赖的是 SDLPoP 公开的逆向工程成果。守卫、剑斗、宫殿关卡、以及精确的落地位置,目前都还不完整。该实验展示了当给模型提供一种对照现实进行测试的手段时,连续几代模型能取得怎样的成果,但这只是一个开发者的一个项目,不是对照基准测试。
这个实验建立在数十年社区工作的基础之上:Jordan Mechner 公开的 Apple II 源代码、Dávid Nagy 的 SDLPoP 重建项目,以及 Fabien Sanglard 对原作的代码评审。