案例
Firefighter:将反编译的 DOS 游戏移植为 Rust
Eric S. Raymond 将 Eben Sprinsock 于 1985 年发布的 DOS 共享软件游戏 Firefighter 移植为终端游戏。项目历史记载,ChatGPT 5.5 先将 DOS 二进制反编译为 Borland Pascal,再译为 Rust;之后 Raymond 改进了界面,并修正一处计分不符。玩法未变是作者的说法;中间 Pascal 代码及任何对照运行均未公开。
使用条件与局限
- 审阅版本为 1.2.0(2026-06-08),是面向类 Unix 系统的 Rust 终端游戏:25×25 的森林火灾棋盘,提供简单、中等、困难三种模式,支持可选的随机数种子和鼠标移动光标。需要至少 80×25、支持 UTF-8 与 ANSI 控制序列、备用屏幕及原始模式输入的终端;鼠标移动还需终端支持鼠标报告。
- 使用 Cargo 构建(依赖 crossterm 与 rand);Makefile 封装 cargo build、安装可执行文件,并用 Asciidoctor 生成手册页。构建或游玩该移植版无需原 DOS 二进制或游戏数据;历史文档链接了 Internet Archive 上的共享软件原版。
- 历史文档列出的恢复步骤为:借助 ChatGPT 5.5 将 DOS 二进制反编译为 Borland Pascal,再译为 Rust,随后加入界面改动、种子选项,并修正各难度最高分与计分方式不符的问题。反编译得到的 Pascal、提示词及原二进制均未收录在仓库中,因此无法检查反编译过程本身。
- 验证仅限 make check(cargo check 与 clippy)及少量单元测试,覆盖参数解析、显示测试图案和最高分一致性。未公开与原程序的对照;“玩法逻辑未变”是作者的说法,本次审阅未运行任何程序。
- COPYING 为 BSD-2-Clause,源码头部将 Raymond 与 Sprinsock 列为共同版权人;README 称该移植经原作者许可发布。共享软件原版仍保有各自权利。所审来源归功于 ChatGPT,未确立与 REA 的关联。
关于此条目
- 类型
- 案例
- 类别
- 独立重建案例
- 关联
- 独立重建项目
- 目标
- 游戏
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/history.adoc
- https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/README.adoc
- https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/NEWS.adoc
- https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/firefighter.adoc
- https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/Makefile
- https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/Cargo.toml
- https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/src/main.rs
- https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/COPYING