1989 年 DOS 空战游戏《F-15 Strike Eagle II》的逆向重构项目,已经完成全部可执行文件的 C 代码重建,并开始公开招募玩家测试最新版 v0.9.1。项目目标不是商业复刻,也不是发行商重制,而是通过逆向工程重建原始二进制背后的 C 源码。
这一步的意义在于,项目正在离开相对可控的“代码是否对齐”阶段,进入更麻烦的“游戏是否真能跑”阶段。工具可以检查重建后的指令是否接近原版,却很难替玩家发现任务简报、飞行、结算之间那些由内存布局、输入设备、图形模式引出的细碎故障。
从反汇编工程走向可运行游戏维护
作者在项目日志中称,所有可执行文件的 C 代码已经重建完成,数据也已从汇编迁入 C,多数只存在汇编实现的代码已有 C 替代版本,许多函数和数据结构也获得了更有意义的命名。面向未来,作者还提到可能会为移植项目分叉仓库,但目前没有给出具体平台或时间表。
这类项目和 ScummVM、OpenMW 等复古游戏工程有相似之处:都在解决老游戏如何离开原始运行环境的问题。但路线不同。ScummVM 更像重新实现一批引擎,OpenMW 重写《上古卷轴 III:晨风》的运行时;《F-15 Strike Eagle II》这个项目眼下强调的是 bug-for-bug reconstruction,也就是先尽量保留原版行为,连原版缺陷也不急着“修好”。
| 项目状态 | 过去重点 | 现在重点 | 影响 |
|---|---|---|---|
| 代码重建 | 指令、函数、数据命名 | 可执行文件能否稳定运行 | 需要玩家真实测试 |
| 数据迁移 | 汇编中保留数据 | 数据进入 C 代码 | 数据布局错误更容易暴露 |
| 兼容目标 | 原始二进制参照 | 原版 451.03 加 Desert Storm 扩展包 | 测试范围并非所有版本 |
| 项目性质 | 个人/社区逆向工程 | 公开收集 bug | 不能当作正式重制版使用 |
测试不是下载即玩,玩家要保留原版作参照
最新版 v0.9.1 发布在 GitHub release 页面,目标是原版 451.03 加 Desert Storm 扩展包。测试方式并不复杂:先备份原文件,再把新可执行文件放进游戏目录替换原文件;必要时移除原来的 f15.com,避免系统启动旧文件而不是新的 f15.exe。
当前版本不会进入设置界面,而是默认使用 MCGA/VGA 显示、无声、无摇杆。作者希望三段主要流程——任务简报、飞行、任务结算——都能被跑到。玩家如果遇到崩溃、图形异常、按键失效,应在 GitHub issues 反馈,最好附上 DOSBox 截图和复现过程,例如按了什么键、执行了什么任务、问题出现前飞机处于什么状态。
这对 DOS 复古玩家有现实门槛。它要求测试者不只是“怀旧试玩”,还要能区分原版问题和重构问题。原版本身就存在一些怪异行为,例如 3D 物体消失、倒飞且燃油耗尽时飞机向天空坠落。若这些现象在原版也能复现,就不应被当成重构缺陷上报。
真正受影响的是移植开发者和严肃复古玩家
对普通玩家来说,v0.9.1 还不是一个可替代原版的稳定版本。它没有声音和摇杆默认支持,也不是现代平台的一键安装包。把它当成“高清重制版”会误读项目性质。
更直接的受益者是逆向工程和游戏移植开发者。完整 C 代码重建意味着后续分析、移植、维护的成本可能下降;但在那之前,项目需要用玩家的飞行路线、按键习惯和 DOSBox 环境,把自动化工具扫不到的问题逼出来。
接下来最该观察的不是下载量,而是 issue 质量:错误是否能稳定复现,是否集中在数据结构、图形绘制、输入处理这几类区域,以及项目是否能在保持原版行为的同时,为未来移植留下清晰边界。老游戏保护最怕两头落空:既不像原版,也还不能现代化。这个项目眼下难得清醒,先把“像原版”做扎实。
