Skip to content

v0.4.0

Choose a tag to compare

@Exoridus Exoridus released this 10 Jul 22:17
· 47 commits to main since this release
Immutable release. Only release title and notes can be modified.

fahrenheit-parry-mod v0.4.0 (2026-07-11)

This release provides pre-built ZIP packages for Windows (FFX/X-2 HD Remaster + Fahrenheit):

Installation

Prerequisite: Microsoft .NET Runtime 10 (x86 recommended).
If missing, fahrenheit/start-fahrenheit.cmd will prompt to install it via winget.

  1. Download one of the ZIP packages above.
  2. Extract into your game directory (folder containing FFX.exe).
  3. For the full package, start via fahrenheit/start-fahrenheit.cmd (recommended).
  4. Alternatively run fahrenheit\bin\fhstage0.exe ..\..\FFX.exe from fahrenheit\bin.

Changes in This Release

View this tag | All Releases

  • chore(release): v0.4.0 (7d69c64)
  • refactor(camera): drop custom saved cameras; keep the static hold + freecam (65ccccb)
  • fix(camera): hold suppresses camera requests too, not just enemy turns (2457e3a)
  • refactor(camera): strip to freecam + one save button; drop encounter table & follow-cam (1e9cc15)
  • feat(debug): selectable, copyable log box; drop timestamps (858f2af)
  • fix(camera): settle-grace fallback keeps the correct default framing; caret to screen corner (13b89e5)
  • feat(camera): zoom-punch on parry — quick eye dolly toward the gaze (f5672ed)
  • chore(mappings): slim runtime bundles from 24MB to 3.5MB (1bdc23f)
  • feat(camera): follow-cam — look-at tracks the acting enemy, damped (5e6b64b)
  • feat(camera): dedicated Camera tab with per-map encounter table (4fbe0f0)
  • feat(freecam): anchors keyed by battle map + enemy constellation (0c04f59)
  • fix(freecam): move back to WASD + Q/E — it reads more natively than the numpad (c87d172)
  • feat(freecam): numpad movement, inverted look, persistent battle-start anchor (b1176bb)
  • feat(freecam): experimental hand-controlled battle camera + angle capture (2470fac)
  • feat(debug): manual screen-shake test buttons; whole-party shake 0.80s (6f60613)
  • feat(camera): AllTurns hard-lock suppresses the ATEL position writers (557baf2)
  • fix(shake): single parry 0.40s, whole-party 0.73s (f2b3354)
  • feat(overlay,shake): whole-party shake, corner-caret window, retire sweep (df10347)
  • refactor(settings): two-column feedback grid, inline checkbox labels (dbd0932)
  • refactor(cleanup): drop write-only CheckHit MISS cache, relocate turn drivers (edf88be)
  • feat(overlay): titleless window, proximity fade, collapse caret, timing readout (3f23624)
  • refactor(debug): drop the cue-preview panel for a slimmer state panel (6ca3e68)
  • refactor(settings): prune dead toggles, fold magic camera into the lock combo (275582d)
  • feat(timing): restore tiered windows, de-toxify Expert, bring back the dodge cooldown (16cc05b)
  • fix(streak): a streak dies when the player regains control; lock all turns by default (5aea319)
  • feat(timing): gameplay timers count ticks; the dodge window comes from the model (4ae29f9)
  • feat(timing): count battle ticks, and stop letting difficulty move the window (2f98c90)
  • refactor(overdrive): move the overdrive code out of the debug file (9bbd9de)
  • feat(ui): move the settings into the mod's own window (8b23cd6)
  • refactor(offsets): drop the FhCall dependency entirely (a7b5de7)
  • refactor(hooks): funnel every orig_fptr call through a single seam (c936f92)
  • fix(evade): identify MISS_ALIVE structurally instead of guessing the enum (60b3220)
  • feat(debug): probe the ATEL opcodes that actually move the battle camera (69ccdfd)
  • fix(parry): reset per-action parry state at cue boundaries (8531445)
  • fix(camera): return -1, not 0, when suppressing MsAtelRequestCamera (a7ea9fb)
  • feat(debug): shake duration sweep with a shuffled bag and a debug-overlay panel (a04e586)
  • fix(parry): stop a successful parry from erasing its own evidence; decorrelate the shake axes (0ef9a4c)
  • feat(dodge): terminate the evade motion deterministically instead of letting it run out (86062bd)
  • build(fahrenheit): pin to v1.0.0-alpha10 (ea602d4)
  • fix(combat): a perfect dodge is a dodge — no impact shake, no parry consequences (c826512)
  • feat(combat): fire the engine's native screen shake on parry and perfect dodge (d6a80bf)
  • docs(overdrive): riposte no longer charges on perfect dodge (22961c1)
  • feat(overdrive): make learn-by-parrying unconditional, remove learn_custom_overdrive setting (c8140f1)
  • feat(combat): overdrive is the parry's reward alone, and the labels read whiter (507ffda)
  • feat(overdrive): learn custom mode by parrying instead of unconditional unlock (062ea22)
  • feat(debug): dump overdrive learn counters in the read-only save probe (ba3bcc2)
  • feat(overdrive): unlock custom mode 0x11 in save mask behind default-off setting (2c45dae)
  • fix(combat): resolve dodge only for slots the attack actually targets (2272a18)
  • feat(debug): add read-only overdrive-mask save probe (777d565)
  • fix(probes): remove the magic-camera probe, correct MsSetMotion's signature (7154893)
  • feat(overlay): remove the parry state HUD (ef28de9)
  • fix(build): preserve state/ and logs/ across a full deploy (62f496b)
  • feat(combat): native evade, perfect dodge and anchored combat labels (a98bf96)
  • feat(startup): bundle splash/launcher skip on the alpha09 baseline (6e73a06)
  • build: pin Fahrenheit ref to fahrenheit.release.ref by default (41f205c)
  • feat(combat): battle camera lock, parry effect, native evasion disable, streak observe (43ef0fb)
  • feat(combat): Stage-1 native observe probes (log-only, opt-in) (#25) (21aa0a8)
  • chore: stabilize parry state machine and native probe logging (#22) (2faa21a)
  • fix(build): resolve Fahrenheit core project under new src/ layout (#24) (72f7d9b)
  • fix(build): normalize line endings in docs-sync (#23) (3e30db7)
  • chore: disable Nuke telemetry, fix warnings, pin vulnerable deps (33ab0a9)
  • feat: scale parry SFX volume to live game audio settings (6639ef3)
  • chore: remove pipeline-owned tooling and stale workspace state (e91fd68)

Full Changelog: v0.3.1...v0.4.0 | README