Ghidra decompilation environment stood up on Linux (headless, no sudo): JDK 21 + Ghidra 12.1.2 in ~/tools, reusing the existing analyzed project at tools/ghidra_project/ from the prior Windows session instead of starting fresh. FPS-coupling investigation: traced the main game loop's per-frame path and found the real root cause - compute_frame_delta_ticks_60hz_min1_clamp (0x4092D0) computes correct delta-time from timeGetTime(), but clamps the minimum return value to 1 tick even when zero ticks truly elapsed, causing simulation speed to scale with framerate above 60fps. First patch attempt (NOP the clamp) crashed on level load because the shared delta value has 203 read sites across 40+ functions and only 2 were checked for zero-safety; reverted and archived as a documented lesson. The corrected fix (busy-wait instead of lying) is designed but not yet built. Pause-loop hang fixed: the pause command handler blocks the Windows message queue in a tight GetAsyncKeyState polling loop (found while locating the cheat code handler), which trips modern Windows' "Not Responding" hang detection if left paused too long, permanently disconnecting input. Patched (HAVOC_NOCD_PAUSEFIX_v1.EXE) to pump one message per loop iteration via the game's own existing message-drain function; confirmed fixed by play-testing, including the related "alt-tab while paused resets to menu" symptom. A separate "alt-tab while not paused" reset symptom remains open. New tracking docs: docs/FUNCTIONS.md (function-by-function RE progress), docs/PATCH_VERSIONS.md (binary patch version log), docs/LEVEL_NOTES.md (level/AI design quirks for the Remaster variant). Extended docs/PATCHES.md and docs/METHODOLOGY.md with full discovery narratives including dead ends.
74 lines
1.1 KiB
Text
74 lines
1.1 KiB
Text
# --- Original game data (copyright Reality Bytes, Inc. 1995) — DO NOT COMMIT ---
|
|
*.EXE
|
|
*.exe
|
|
*.DLL
|
|
*.dll
|
|
*.VXD
|
|
*.FF
|
|
*.DAT
|
|
*.MAP
|
|
*.ICO
|
|
*.INF
|
|
*.INI
|
|
*.ini
|
|
.windows-serial
|
|
BIGFILE.DAT
|
|
WORLDS/
|
|
DIRECTX/
|
|
LICENSE.TXT
|
|
|
|
# --- CD images (copyright) ---
|
|
*.cue
|
|
*.bin
|
|
tmp_cd/
|
|
|
|
# --- Third-party (dgVoodoo2 DirectDraw wrapper) - not ours to redistribute ---
|
|
dgVoodoo.conf
|
|
dgVoodoo*.conf
|
|
dgVoodooCpl.exe
|
|
ddraw.dll
|
|
DSETUP*.DLL
|
|
|
|
# --- Archived/experimental patched binaries (still original game code, copyright) ---
|
|
archive/
|
|
|
|
# --- Ghidra: install is third-party; project + decompile output embed the binary ---
|
|
ghidra/
|
|
tools/ghidra_*/
|
|
tools/ghidra_decompile*.txt
|
|
|
|
# --- Derived audio / extracted assets (also copyrighted) ---
|
|
tools/out_*/
|
|
tools/Havoc_*/
|
|
*.wav
|
|
*.ogg
|
|
*.mp3
|
|
*.mid
|
|
*.zip
|
|
|
|
# --- Python / tooling cruft ---
|
|
__pycache__/
|
|
*.pyc
|
|
.venv/
|
|
venv/
|
|
|
|
# --- Godot ---
|
|
.godot/
|
|
*.import
|
|
export_presets.cfg
|
|
|
|
# --- Reference material (third-party copyrighted screenshots) — local only ---
|
|
tools/refs/
|
|
|
|
# --- Claude Code local session/settings ---
|
|
.claude/
|
|
|
|
# --- Editor / OS ---
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# --- Tool session cruft ---
|
|
.playwright-mcp/
|