havoc-remaster/README.md
pyr0ball 2287f3be12 Initial commit: Havoc preservation toolkit + format docs
- ff_extract.py: .FF (FlashFile) archive extractor with music song
  assembly (WAVE+PLST), ogg/mp3 conversion, and FL Studio pack export
  (samples + per-song MIDI + mapping).
- docs/FORMATS.md: reverse-engineered file formats (.FF, WAVE/PLST music,
  world data + binary notes).
- Original game data is gitignored (copyright Reality Bytes, 1995).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 23:33:30 -07:00

51 lines
2.4 KiB
Markdown

# Havoc — Preservation & Godot Remaster
Reverse-engineering, asset-extraction, and Godot remaster of **Havoc** (Reality Bytes, Inc.,
1995) — a first-person **vehicular-combat shooter** for Windows 95/98.
Havoc renders a **software-rasterized 3D world** (textured terrain, low-poly enemy/pickup
models, drivable *and* flyable vehicles, dithered 8-bit color) into a DirectDraw framebuffer,
framed by an elaborate **2D cockpit HUD** (mirrors, radar, gauges, weapon icons). Biomes
include desert, snow/ice, lava, and ocean.
The original 32-bit executable (DirectDraw + DirectSound, **no Direct3D** — the 3D is all
software) no longer runs reliably on modern Windows (legacy DirectDraw + a 16-bit
installer/DirectX setup path). Rather than only emulate it, this project extracts the original
data into open formats and rebuilds the game in [Godot](https://godotengine.org/) as a
quality-of-life remaster.
> **Legal:** Havoc is 30-year-old abandonware. This repository contains **only** original
> reverse-engineering code and documentation. It does **not** redistribute the game's
> executables, DLLs, or data files (see `.gitignore`). You must supply your own copy of the
> game data to run the tools.
## Status
- [x] Identified binaries: `HAVOC.EXE`/`LAUNCHER.EXE`/`SETUP.EXE` are 32-bit PE (i386),
DirectDraw + DirectSound, **not** 16-bit/DOS.
- [x] Cracked the `.FF` ("FlashFile") archive format — see [docs/FORMATS.md](docs/FORMATS.md).
- [x] Extracted `MUSIC.FF`: 97 WAV segments + 17 playlist-sequenced songs (verified correct).
- [x] FL Studio pack: per-song MIDI + sample mapping (`tools/ff_extract.py --fl`).
- [ ] ogg/mp3 conversion (`--convert`, needs ffmpeg).
- [ ] Crack graphics formats: `GRAFIX*.DAT`, `LAND*.DAT`, `MAP*.MAP`, `STUF*.DAT`.
- [ ] Decompile `HAVOC.EXE` (Ghidra) to recover game logic.
- [ ] Godot remaster project (widescreen, higher-res, rebindable input).
## Tools
`tools/ff_extract.py` — extract any `.FF` archive.
```sh
python tools/ff_extract.py MUSIC.FF -o out_music --songs # raw entries + assembled songs
python tools/ff_extract.py MUSIC.FF -o out_music --songs --convert ogg
python tools/ff_extract.py MUSIC.FF -o Havoc_MUSIC_FLStudio --fl # FL Studio samples + MIDI
```
## Layout
```
tools/ reverse-engineering & extraction scripts (tracked)
docs/ format documentation (tracked)
godot/ Godot remaster project (tracked, WIP)
<game files> original data — supplied by you, gitignored
```