- 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>
51 lines
2.4 KiB
Markdown
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
|
|
```
|