{
  "added_at": "2026-10-18",
  "additional_evidence_urls": [
    "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"
  ],
  "category": "reconstruction-cases",
  "description_en": "Eric S. Raymond’s terminal port of Firefighter, Eben Sprinsock’s 1985 DOS shareware game. The project history says ChatGPT 5.5 decompiled the DOS binary to Borland Pascal and translated it to Rust, after which Raymond modernized the interface and corrected a scoring mismatch. Unchanged gameplay is the author’s statement; the intermediate Pascal and any comparison runs are not published.",
  "description_zh": "Eric S. Raymond 将 Eben Sprinsock 于 1985 年发布的 DOS 共享软件游戏 Firefighter 移植为终端游戏。项目历史记载，ChatGPT 5.5 先将 DOS 二进制反编译为 Borland Pascal，再译为 Rust；之后 Raymond 改进了界面，并修正一处计分不符。玩法未变是作者的说法；中间 Pascal 代码及任何对照运行均未公开。",
  "entry_url": "https://awesomerea.org/resources/firefighter-rust-port-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/firefighter-rust-port-case/",
  "evidence_url": "https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/history.adoc",
  "group": "cases",
  "id": "firefighter-rust-port-case",
  "json_url": "https://awesomerea.org/resources/firefighter-rust-port-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/firefighter-rust-port-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/firefighter-rust-port-case/index.md",
  "name": "Firefighter: a decompiled DOS game ported to Rust",
  "name_zh": "Firefighter：将反编译的 DOS 游戏移植为 Rust",
  "reconstruction_method": "decompilation",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirement_facets": [
    "scope",
    "prerequisites",
    "attribution",
    "testing",
    "license"
  ],
  "requirements": [
    "The reviewed 1.2.0 release (2026-06-08) is a Rust terminal game for Unix-like systems: a 25×25 forest-fire board with easy, medium and hard modes, an optional RNG seed and mouse cursor movement. It needs a UTF-8 ANSI terminal of at least 80×25 with alternate-screen and raw-mode input; mouse movement also needs mouse reporting.",
    "Build with Cargo (crossterm and rand); the Makefile wraps cargo build, installs the binary and renders the manual page with Asciidoctor. Building or playing the port needs no original DOS binary or game data; the history page links an Internet Archive copy of the shareware original.",
    "The history lists the recovery steps: decompiling the DOS binary to Borland Pascal with ChatGPT 5.5, translating that to Rust, then adding interface changes, a seed option and a fix for per-difficulty maximum scores that did not match the score computation. The decompiled Pascal, prompts and original binary are not in the repository.",
    "Verification is limited to make check (cargo check and clippy) and a few unit tests for option parsing, the display test pattern and maximum-score consistency. No comparison with the original program is published; unchanged gameplay logic is the author’s claim.",
    "COPYING is BSD-2-Clause, and source headers name Raymond and Sprinsock as joint copyright holders; the README says the port is released with the original author’s permission. The shareware original keeps its own rights."
  ],
  "requirements_zh": [
    "审阅版本为 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 称该移植经原作者许可发布。共享软件原版仍保有各自权利。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://gitlab.com/esr/firefighter",
  "verification": "source-reviewed",
  "verified_at": "2026-10-18"
}
