havoc-remaster/README.md
pyr0ball 198977ed2b feat: crack GRAFIX0N.DAT texture format + extractor
WORLDS/GRAFIX0N.DAT is a big-endian (Mac-origin) tileset: an 8-byte header
(file size at 0x08, entry count at 0x0c), 16-byte entry records (BE offset +
id), and per-graphic blocks with a BE width/height/frames/id header followed by
w*h*frames 8-bit palette indices. Confirmed against the in-game loader at
0x444db0 (16-byte record stride, BE->LE dword swap).

GRAFIX00.DAT decodes to 29 graphics: explosion (id 901, 8 frames), smoke
(id 911, 8 frames), and 27 single-frame 64x64 structure/wall textures
(ids 8001-8028). tools/grafix_extract.py renders them to PNG with any
768-byte RGB palette (the XPAL palettes from INTRFACE.FF work).

- tools/grafix_extract.py: parser + PNG renderer
- docs/FORMATS.md: GRAFIX0N.DAT spec
- README: status update

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TN4Ytn3gdWRonNmHpisWQv
2026-07-03 09:36:41 -07:00

52 lines
2.6 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).
- [x] Boot `HAVOC.EXE` on Windows 11 (dgVoodoo2) — NOCD + copy-protection fix, see [docs/PATCHES.md](docs/PATCHES.md).
- [~] Crack graphics formats: `GRAFIX*.DAT` done ([docs/FORMATS.md](docs/FORMATS.md)); `LAND*.DAT`, `MAP*.MAP`, `STUF*.DAT` next.
- [ ] 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
```