# Firefighter：将反编译的 DOS 游戏移植为 Rust

> Eric S. Raymond 将 Eben Sprinsock 于 1985 年发布的 DOS 共享软件游戏 Firefighter 移植为终端游戏。项目历史记载，ChatGPT 5.5 先将 DOS 二进制反编译为 Borland Pascal，再译为 Rust；之后 Raymond 改进了界面，并修正一处计分不符。玩法未变是作者的说法；中间 Pascal 代码及任何对照运行均未公开。

- 类型：案例
- 目标：游戏
- 类别：独立重建案例
- 关联：独立重建项目
- 来源复核于：2026-10-18
- 收录于：2026-10-18
- 原始资源：<https://gitlab.com/esr/firefighter>
- 一手来源：<https://gitlab.com/esr/firefighter/-/blob/84861db110928202571af2042cb9762720dc2c3e/history.adoc>
- 目录页面：<https://awesomerea.org/zh/resources/firefighter-rust-port-case/>
- 记录 JSON：<https://awesomerea.org/resources/firefighter-rust-port-case/record.json>
- 英文版：[English](https://awesomerea.org/resources/firefighter-rust-port-case/index.md)

## 使用条件与局限

- **前提条件：**使用 Cargo 构建（依赖 crossterm 与 rand）；Makefile 封装 cargo build、安装可执行文件，并用 Asciidoctor 生成手册页。构建或游玩该移植版无需原 DOS 二进制或游戏数据；历史文档链接了 Internet Archive 上的共享软件原版。
- **范围：**审阅版本为 1.2.0（2026-06-08），是面向类 Unix 系统的 Rust 终端游戏：25×25 的森林火灾棋盘，提供简单、中等、困难三种模式，支持可选的随机数种子和鼠标移动光标。需要至少 80×25、支持 UTF-8 与 ANSI 控制序列、备用屏幕及原始模式输入的终端；鼠标移动还需终端支持鼠标报告。
- **署名：**历史文档列出的恢复步骤为：借助 ChatGPT 5.5 将 DOS 二进制反编译为 Borland Pascal，再译为 Rust，随后加入界面改动、种子选项，并修正各难度最高分与计分方式不符的问题。反编译得到的 Pascal、提示词及原二进制均未收录在仓库中。
- **测试证据：**验证仅限 make check（cargo check 与 clippy）及少量单元测试，覆盖参数解析、显示测试图案和最高分一致性。未公开与原程序的对照；“玩法逻辑未变”是作者的说法。
- **许可：**COPYING 为 BSD-2-Clause，源码头部将 Raymond 与 Sprinsock 列为共同版权人；README 称该移植经原作者许可发布。共享软件原版仍保有各自权利。

## 一手来源

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>

## 同分区更多条目：游戏

- [Halo: Combat Evolved：逐步重新实现并修补进原版 Xbox 可执行文件](https://awesomerea.org/zh/resources/halo-ce-xbox-reimplementation-case/index.md) · 案例
- [keen-clone：Commander Keen 1 的 C/SDL2 移植](https://awesomerea.org/zh/resources/keen-clone-rea-commander-keen-case/index.md) · 案例
- [Metroid Dread：进行中的手工反编译](https://awesomerea.org/zh/resources/dreadcomp-case/index.md) · 案例
- [OpenGOAL：恢复 GOAL 代码并重建 Jak 系列游戏](https://awesomerea.org/zh/resources/opengoal-jak-case/index.md) · 案例
- [Paleblood：带自有运行时的 Bloodborne 功能等价反编译](https://awesomerea.org/zh/resources/paleblood-bloodborne-functional-decomp-case/index.md) · 案例
- [R.E.L.I.V.E.：Oddworld: Abe’s Oddysee 与 Abe’s Exoddus 引擎的重新实现](https://awesomerea.org/zh/resources/relive-oddworld-abe-engine-case/index.md) · 案例

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
