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.
Requirements and limitations
- 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, so the decompilation itself cannot be inspected.
- 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, and this review ran nothing.
- 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. The reviewed sources credit ChatGPT and establish no REA connection.
About this entry
- Type
- Case study
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Targets
- Game
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- 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