F-15 Strike Eagle II 逆向工程项目达到 v0.9.1 版本
F-15 Strike Eagle II 达到重大重构里程碑
1989 年 DOS 游戏 F-15 Strike Eagle II 的逆向工程项目已成功重构了所有游戏可执行文件的 C 源代码,包括 egame 和 end。这一里程碑标志着从指令码静态分析向主动运行时测试的转变,为未来移植到 Linux 和 Windows 铺平了道路。
当前状态与技术进展
该项目已超越了将汇编语言翻译成 C 语言的初始阶段。目前的重构状态包括:
- 全源码重构:已重构所有可执行文件的所有 C 代码。
- 数据迁移:所有游戏数据已从汇编语言迁移到 C 语言。
- 功能替换:大多数仅限汇编的代码现在已有用 C 语言编写的功能性替换方案。
- 语义标签化:大多数例程和数据结构已分配了具有实际意义的名称,以提高可维护性。
为了确保准确性,项目使用了工具来验证重构后的指令码是否与原始二进制文件保持一致。然而,由于这些工具无法检测数据布局错误,项目已进入手动测试阶段。
测试版本 v0.9.1
v0.9.1 版本现已发布,供社区进行测试。此版本旨在与原版游戏的 451.03 版本以及 Desert Storm 扩展包兼容。
安装与要求
要进行重构版本的测试,用户必须:
- 拥有原版游戏文件(版本
451.03)。 - 将游戏文件夹中的原始可执行文件替换为来自
f15_se2-*.zip发布包中的新文件。 - 在替换之前备份原始文件。
- 删除原始的
f15.com以确保启动新的f15.exe。
已知限制与测试范围
测试人员应注意,当前版本会跳过设置界面,并默认使用无声音且不支持摇杆的 MCGA/VGA 显示模式。尽管存在这些限制,任务简报、飞行和任务总结部分的功能是完全正常的。
开发人员正在寻求以下方面的报告:
- 系统崩溃
- 图像错误
- 输入/按键失效
“逐虫重构”哲学
本项目是一个“逐虫重构”(bug-for-bug reconstruction)项目。这意味着原版 1989 年游戏中的行为必须在重构版本中予以保留。以下是原版中存在的、不应被报告为新问题的原始错误示例:
- 3D 物体消失
- 飞机在倒置且燃油耗尽时向天空坠落
项目路线图
开发过程遵循严格的多步流水线,以确保稳定性和保真度:
- 全量逆向至汇编:理解二进制文件的初始阶段。
- 二进制等效编译的 C 代码:将汇编语言转换为编译后能生成完全相同的二进制文件的 C 代码。
- DOS 验证:在不保留任何汇编代码的情况下,确保游戏在 DOS(或 DOSBox)上功能完全正常。
- 现代平台移植:一旦 DOS 版本通过验证,项目将分叉仓库(fork the repository)以开始将游戏移植到 Linux 和 Windows。
社区观点
虽然一些用户质疑在已有 DOSBox 模拟的情况下进行反编译的必要性,但其他人强调了为心爱的作品确保“四项自由”的重要性。该项目也引起了前玩家们的怀旧之情,他们回忆起这款游戏陡峭的学习曲线以及飞行操作时对原版手册的必要性。