案例

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 的关联。

关于此条目

类型
案例
类别
独立重建案例
关联
独立重建项目
目标
游戏

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

一手来源

  1. https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/history.adoc
  2. https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/README.adoc
  3. https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/NEWS.adoc
  4. https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/firefighter.adoc
  5. https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/Makefile
  6. https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/Cargo.toml
  7. https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/src/main.rs
  8. https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/COPYING