DebugAgentClient.call() hardcoded a 60s socket timeout that also bounded recv(), so any continue_execution call asking for a longer wait (e.g. waiting for a user to alt-tab) would time out on the client side while the debug agent was still legitimately waiting. call() now accepts an optional socket_timeout override, and the continue_execution tool passes timeout + 30 so the client socket outlives the agent's own timeout + 10s of headroom. Also adds a round-trip test for encode_message/decode_message (the wire contract between the two independently-built sides of this protocol), and corrects the WatchpointSlots docstring, which overstated what Wow64SetThreadContext does -- the agent actually arms the hardware watchpoints via a native x64 SetThreadContext call, with the Wow64 variant used only for 32-bit register readback. Claude-Session: https://claude.ai/code/session_01E4YCRPfAE3328FcYPyKu9T |
||
|---|---|---|
| docs | ||
| tests | ||
| tools | ||
| .gitignore | ||
| README.md | ||
| requirements.txt | ||
| run_and_log.bat | ||
| run_probe.bat | ||
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.EXEare 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.EXEon Windows 11 (dgVoodoo2) — NOCD + copy-protection fix, see docs/PATCHES.md. - [~] Crack graphics formats:
GRAFIX*.DATdone (docs/FORMATS.md);LAND*.DAT,MAP*.MAP,STUF*.DATnext. - 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