# Patched Binary Version Log Tracks every patched `HAVOC_NOCD*.EXE` variant we've built, working or not. All binaries are gitignored (copyrighted game code) -- this file is the durable record of what was tried. Non-working / superseded binaries live in `archive/`. The current best-known-working one for each patch line stays at the repo root so tooling (Ghidra project, scripts) doesn't need updating every iteration. | File | Based on | Patch (see `docs/PATCHES.md`) | Status | Notes | |---|---|---|---|---| | `HAVOC_NOCD.EXE` | `HAVOC.EXE` | Copy-protection + NOCD patch set (full table in `docs/PATCHES.md`) | **Working, in active use** | The baseline. Boots and plays correctly; FPS-coupling bug still present (mitigated via dgVoodoo config, not a binary patch) | | `archive/HAVOC_NOCD_FPSFIX_v1.EXE` | `HAVOC_NOCD.EXE` | NOP the 9-byte min-1-tick clamp at FO `0x0871d` | **Broken -- archived** | Crashes on level load. Root cause: only 2 of 203 read sites of the shared delta value (`DAT_0047c488`) were checked for zero-safety before patching; one of the ~38 unaudited consumer functions almost certainly divides by it. See `docs/PATCHES.md` "FPS-coupling" section for the full writeup | | `HAVOC_NOCD_FPSFIX_v2.EXE` (not yet built) | `HAVOC_NOCD.EXE` | Same 9-byte region, corrected: turn the clamp into a busy-wait spin instead of a lie (see `docs/PATCHES.md`) | *(design only, deprioritized)* | Preserves "return value is never 0" for all 203 read sites while still fixing the actual bug. Paused in favor of the pause-loop hang fix and the "maximized = 2x normal speed" lead, which turned out to be a separate mechanism -- see `docs/FUNCTIONS.md` | | `HAVOC_NOCD_PAUSEFIX_v1.EXE` | `HAVOC_NOCD.EXE` | Redirect the pause-loop's back-edge through a small code cave that pumps one Windows message per iteration (FO `0x1fbcf` + cave at FO `0x66fdf`, see `docs/PATCHES.md`) | **Working, confirmed by play-test** | Fixes the "greys out / Not Responding, TAB stops working" hang when paused too long, and the "alt-tab while paused resets to menu" symptom (same root cause). Does NOT fix a separate symptom: alt-tab while *not* paused still resets to menu -- that's a different, still-open bug, see `docs/FUNCTIONS.md`. Isolated fix, doesn't touch the FPS-coupling code path | ## Conventions - Version suffix `_v2`, `_v3`, ... increments per patch *line* (e.g. all FPS-coupling fix attempts), not globally across every patch ever made to the binary. - A version only earns a plain (non-archived) spot at the repo root once it's confirmed working by play-testing. Anything superseded or confirmed broken moves to `archive/` immediately -- don't leave dead/broken binaries at the root where they could get mixed up with the current candidate. - Every entry here should link back to the relevant `docs/PATCHES.md` section for the actual byte-level detail; this file is the index/status tracker, not the technical writeup. - Update this table in the same commit/session as any patch build or status change (working -> broken, experimental -> confirmed, etc).