Preservation + Godot remaster of Havoc (Reality Bytes, 1995): .FF asset extraction, format docs, and reverse-engineering toolkit.
Find a file
pyr0ball 481b2e1dbf docs: record live runtime confirmation of alt-tab state transition (2026-07-04)
Hardware watchpoint on game_object+0x18 (runtime addr 0x2361064) fired during
active gameplay via MCP debug agent. Write at 0x4360A7 (MOV [ECX+18h], 0xB0)
inside on_deactivate_force_pause_state. Confirms existing static analysis:
- eax=0x47 (old gameplay state read just before write)
- esi=0x1c (WM_ACTIVATEAPP -- exact match to documented WM message)
- DAT_0047E578=0x47 (prev-state global saved correctly)
- game_object+0x20=0x47 (target state still 0x47, round-trip intact)
State 0xB0 (pause/deactivate) was already documented; this adds live confirmation.
The still-open symptom-2 (reset to menu on re-focus during gameplay) is not in
this state write -- it lies further along in ddraw_full_display_reinit.

Also records Item 3 watchpoint result: watchpoint on DAT_0047c488 fired at
0x40E998 (MOV [DAT_0047c488], EAX in player_cooldown_timers_tick -- the store
is in the caller, not inside compute_frame_delta_ticks_60hz_min1_clamp).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TN4Ytn3gdWRonNmHpisWQv
2026-07-04 14:23:48 -07:00
docs docs: record live runtime confirmation of alt-tab state transition (2026-07-04) 2026-07-04 14:23:48 -07:00
tests fix: close timing-attack and empty-secret auth bypass in MCP server 2026-07-04 07:22:55 -07:00
tools fix: harden debug agent for reliable WOW64 watchpoints and multi-run stability 2026-07-04 14:05:24 -07:00
.gitignore feat: set up Linux Ghidra pipeline, find and patch FPS-coupling and pause-hang bugs 2026-07-03 22:32:28 -07:00
README.md feat: crack GRAFIX0N.DAT texture format + extractor 2026-07-03 09:36:41 -07:00
requirements.txt feat: wire MCP tool definitions and bearer-token auth into server 2026-07-04 07:13:36 -07:00
run_and_log.bat feat: NOCD patch boots Havoc on modern Windows (defeats CD copy protection) 2026-07-03 09:29:59 -07:00
run_probe.bat feat: NOCD patch boots Havoc on modern Windows (defeats CD copy protection) 2026-07-03 09:29:59 -07:00

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 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

  • Identified binaries: HAVOC.EXE/LAUNCHER.EXE/SETUP.EXE are 32-bit PE (i386), DirectDraw + DirectSound, not 16-bit/DOS.
  • Cracked the .FF ("FlashFile") archive format — see docs/FORMATS.md.
  • Extracted MUSIC.FF: 97 WAV segments + 17 playlist-sequenced songs (verified correct).
  • FL Studio pack: per-song MIDI + sample mapping (tools/ff_extract.py --fl).
  • ogg/mp3 conversion (--convert, needs ffmpeg).
  • Boot HAVOC.EXE on Windows 11 (dgVoodoo2) — NOCD + copy-protection fix, see docs/PATCHES.md.
  • [~] Crack graphics formats: GRAFIX*.DAT done (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.

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