开发者 Priyan 在 2026 年 9 月公开了一项耗时数月的技术实验,利用大语言模型,将 1989 年由 Jordan Mechner 编写的《波斯王子》(Prince of Persia)Apple II 原始 6502 汇编代码,完整移植为现代 C# 版本。在经历了两代模型架构误判与局部修补的失败后,Claude Opus 5 与后续的 Claude Opus 5.5 展现出惊人的重构效率,后者仅凭一条提示词便将验证房间的画面像素差异从 8,429 个骤降至 2 个。这一突破给软件工程带来的真正震撼,并非模型可以在真空中凭空读懂陈旧机器码,而是当大模型获得了外置仿真环境作为检验先知,并能够主动挂载人类开源社区积淀的反汇编知识库时,遗留代码的重构范式发生了根本性转移。

致命的网格陷阱与帧驱动物理

1989 年在 Apple II 上诞生的《波斯王子》,之所以成为游戏史上的里程碑,核心在于作者 Jordan Mechner 开创性地将真人动作拍摄转描(Rotoscoping)引入数字世界。游戏内主角的悬挂、翻滚、落地和冲刺,全部由一连串逐帧动画序列驱动位移与碰撞判定。然而,这种高度特化的物理实现方式,成了早期静态代码生成大模型的认知盲区。

真人逐帧转描的运动逻辑,被早期模型误塞进瓦片网格导致穿模
真人逐帧转描的运动逻辑,被早期模型误塞进瓦片网格导致穿模

在最初的测试中,Claude Opus 4.6 凭借对 6502 汇编的语法理解,迅速给出了控制台版与基于 Raylib 图形库的 C# 框架,但角色一旦起跑就会沉入地底或悬空。原因在于模型下意识地采用了现代 2D 平台游戏惯用的瓦片网格(Tile-grid)架构,让王子以网格单元为基准跳跃。随后介入的 OpenAI Codex 同样没有触及核心症结,只是在错误的地基上修补了半透明像素滤镜与柱子碰撞体。两款模型在纯文本推理空间里,把一套依赖帧动画推进位移的古老物理系统,硬塞进了方块网格逻辑中。

代码移植模式演进:从文本猜想到仿真闭环 静态文本推演(早期路线) 输入:6502 汇编纯文本源码 假设:现代瓦片网格(Tile-Grid)机制 缺陷:缺乏执行反馈,物理碰撞错位 结果:形似神散,角色穿模无法游玩 动态沙盒闭环(Opus 5 / 5.5) 输入:汇编源码 + 原版 DOS 运行环境 验证:DOSBox 自动化截图与按键回传 先验:融合 SDLPoP 逆向渲染逻辑 结果:像素级差分校准,引擎精准复现

DOSBox 先知介入:闭环差分调试打破幻觉

改变发生在开发者改变交互规则之后。Priyan 为 Claude Code 编写了两项外挂自动化技能,一项允许模型直接操控模拟器 DOSBox(包括静默启动游戏、模拟按键注入以及定时截取游戏画面),另一项用于接管 Windows 窗体程序。模型由此获得了一个可以运行、观测并验证真伪的外部检验先知。

运行时挂载正版软盘,动态解包拆出逐帧角色动画与关卡网格(示意图)
运行时挂载正版软盘,动态解包拆出逐帧角色动画与关卡网格(示意图)

在获得真实游戏环境后,Claude Opus 5 连夜自主运行至清晨,自主推翻了之前的网格架构,改为以逐帧动画表驱动角色状态。更进一步的是,为了规避版权风险,该 C# 项目没有打包原版游戏的任何美术与音频文件,而是由模型编写解析代码,在运行时直接挂载用户本地正版 DOS 镜像,从可执行文件中动态抓取 15 个关卡的地图和主角动画帧。

在这场自主调试中,模型通过对比真实游戏截图与自建画面的偏差,精准排查出了窗格边缘与墙沿检测的汇编对应错误。然而,此时的画面布局依旧存在细微的错位与砖石杂色。Opus 5 采取的方式是通过人工截图进行肉眼式逐块对齐,遇到无法推导的局部细节便依赖经验猜测,画面还原度依然停留在相似而非精确的阶段。

Opus 5.5 还原度与版权工程指标 8429→2 首房间差异像素 仅剩动态火把帧相位差异 0 版权素材分发量 运行时读取本地 DOS 安装包 1989 跨语言移植起点 Apple II 软盘汇编跨代迁移

站在巨人肩膀上:SDLPoP 开源先验的降维打击

当测试推进到 Claude Opus 5.5 时,开发者仅仅给出了一句极其简短的提示,告知角色移动正常但砖块门窗位置不对,让新模型自由发挥。

地下城像素石墙与火把两处差异像素高亮:暗道砖石墙面的像素纹理严密咬合,灰褐色石块接缝与裂纹完全重合
地下城像素石墙与火把两处差异像素高亮:暗道砖石墙面的像素纹理严密咬合,灰褐色石块接缝与裂纹完全重合

Opus 5.5 并没有继续在截图比对的死胡同里打转,而是完成了一次开源先验知识检索。它定位到了逆向工程社区 princed.org 和开发者 Dávid Nagy 历经多年反汇编打造的开源项目 SDLPoP。模型直接将其中的房间渲染代码 seg008.c 提炼重写为 C# 模块 DosRoomDrawer.cs。

开源反编译资料让此前困扰模型的诸多诡异现象真相大白。原版游戏中看似随机分布的墙面石纹,实际上是利用房间号、行号和列号作为种子的确定性伪随机算法;第一关初始位置那扇轰然关闭的闸门,在关卡数据里原本就是开启状态,仅仅是因为主角坠落的瞬间触发了地面隐形开关。

与此同时,Opus 5.5 展现出了极高的工程推断力。它识别出原版 PRINCE.EXE 使用了早期的 Microsoft EXEPACK 压缩壳,此前模型之所以能误打误撞搜出部分表格,纯粹是因为那段数据未被压缩。Opus 5.5 随手写了一个解包模块还原可执行文件,并校正了此前截屏比对时产生的单像素偏移。在第一关首个测试房间中,新渲染器与 DOSBox 真实画面的差异像素直接缩小至 2 个点,而这两处色差仅仅是因为背景火把在两帧之间的轻微晃动。

模型的质变并不来自其凭空参透了机器码,而来自它知道去哪里检索前人耗费数年沉淀的反编译智慧。

开源社区对此保持着清醒的评价。多位逆向工程师在 Hacker News 讨论中指出,Opus 5.5 并没有独立破解复杂的 16 位 x86 绘制二进制,它的核心突破在于将高质量人类开源逆向成果迅速理解、转译并接入当前工程。


遗留系统重构的工业价值与未竟挑战

从评测方法学来看,这项实验无法被当作大模型能力的严谨基准天梯榜。整个测试过程中,提示词并未对齐,单次交互时长不同,且最关键的自闭环工具链直到中后期才被引入,存在大量未受控变量。

重构老旧系统不再靠死磕代码,而是搭建自动化差分运行沙盒
重构老旧系统不再靠死磕代码,而是搭建自动化差分运行沙盒

当前项目距离百分之百还原经典神作仍有巨大鸿沟。虽然基础移动与房间渲染达到了像素级一致,但原版游戏中极为精密复杂的守卫拼剑战斗、音效同步机制以及受击硬直判定依然缺失。从一个高度拟真的可玩切片,跨越到商业软件级的完整交付,中间横亘的工程量不容忽视。

但这场实验为金融、通信等深陷遗留系统泥潭的行业提供了极具参考价值的重构样板:

  • 建议.重构陈旧汇编或老旧 COBOL 系统时,团队应放弃单纯依靠模型做静态代码翻译,优先搭建具备自动化测试与输出截获能力的差分运行沙盒。
  • 风险.当前模型重构高度依赖开源生态中已有的逆向工程先验,若面对完全私有且缺乏反编译文档的陈旧系统,单次提示词的有效性将急剧衰减。

大模型在软件工程领域的下一次跃升,已不再由参数规模的军备竞赛单独决定。只有将推理能力、外部仿真验证闭环以及全网开源先验深度咬合,AI 才能真正跨越时间鸿沟,接管那些沉睡在软盘与磁带中的复杂逻辑。