Star on GitHubStar1.1k stars

Case study

Firefighter: a decompiled DOS game ported to Rust

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.

Targets
Game
Category
Independent reconstruction cases
Relationship
Independent reconstruction project
Sources reviewed

Requirements & limits

  • Prerequisites: 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.
  • Scope: 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.
  • Attribution: 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.
  • Testing evidence: 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.
  • License: 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.

About this entry

The description was reviewed against primary sources.

Report an outdated entry Suggest a translation fix

Primary sources

  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

More in Games

All 318 entries in GamesGames case studies (239)

↑↓ move↵ open⌘↵ new tab