Skip to content

FEAR port: STATUS doc + smart .gitignore + tracked findings/logs#17

Open
skurtyyskirts wants to merge 5 commits into
Ekozmaster:masterfrom
skurtyyskirts:fear-port-status
Open

FEAR port: STATUS doc + smart .gitignore + tracked findings/logs#17
skurtyyskirts wants to merge 5 commits into
Ekozmaster:masterfrom
skurtyyskirts:fear-port-status

Conversation

@skurtyyskirts
Copy link
Copy Markdown

Summary

  • Adds patches/FEAR/STATUS.md as the canonical entry point for the F.E.A.R. Ultimate Shooter Edition → RTX Remix port: mission, toolkit overview, what's been gathered (engine ID, hybrid FFP+shader pipeline, VS register layout from Run 1's 535 KB diagnostic capture, 15-run debugging history), the active blocker (NvRemixBridge.exe aborts before logger init), and parallel next-step tracks (bridge unblock vs. FFP-only iteration on the matrix hook).
  • Reworks .gitignore so per-game patches/<Game>/ work, the rtx_comp/ diagnostic logs, and our PowerShell helper scripts are tracked, while build outputs (patches/FEAR/build/ ≈ 287 MB), large redistributable vendor trees (deps/dxsdk/, deps/remix-bridge-x86/, deps/remix-test-2026-03-13/ ≈ 380 MB), the 199 MB tools/rtx_remix_dl/ archive, the game install (executables, .Arch00, .trex/), and the placeholder FEARRTX/ repo all stay out.
  • Extends the per-game patches/FEAR/.gitignore allowlist to include deploy.ps1, *.template, and bootstrap_report.txt (the upstream template missed them).
  • 216 files, ~6 MB total: per-game source tree, vendored ImGui/MinHook/bridge_api headers, remix-comp-proxy.ini, bridge.conf, the four key markdown docs (STATUS.md, findings.md, HANDOFF.md, README.md), kb.h, and 32 numbered run logs.

Test plan

  • Render patches/FEAR/STATUS.md on GitHub — internal links to findings.md / HANDOFF.md / kb.h / assets/remix-comp-proxy.ini / the diagnostic logs all resolve.
  • git ls-files patches/FEAR/build/ tools/rtx_remix_dl/ returns nothing on the branch.
  • FEAR Ultimate Shooter Edition/rtx_comp/diagnostics_run1_ffponly.log (the 535 KB Run 1 capture) opens on GitHub.
  • Cloning the branch fresh and running cd patches/FEAR && build.bat release --name FEAR still works given the (now ignored) DXSDK + bridge binaries are obtained out-of-band.

🤖 Generated with Claude Code

…nd run logs

Add patches/FEAR/STATUS.md as the canonical entry point for the FEAR port.
Pulls together the static analysis (engine ID, hybrid FFP+shader pipeline,
VS register layout, skinning state, run history), the live tooling state
(remix-comp-proxy build/deploy, Run 1 PASS with 535 KB diagnostic capture,
Runs 2-15 documenting the bridge blocker), the active blocker analysis
(NvRemixBridge.exe aborts via _invalid_parameter_noinfo_noreturn before
logger init; 32-bit client crash signature is a secondary CRT shutdown
race), and the next steps on both the bridge-unblock and FFP-only tracks.

Rework .gitignore to track per-game patches/<Game>/ work alongside the
shared toolkit:

- Drop the blanket patches/ exclusion (was for asi_patcher artifacts;
  nothing under patches/ was previously tracked).
- Allow the rtx_comp/ diagnostic logs and our PowerShell helper scripts
  out of the otherwise-ignored game install dir, but keep game assets,
  the .trex/ Remix runtime, and the game executables out.
- Ignore tools/rtx_remix_dl/ (199 MB downloaded archive) and FEARRTX/
  (separate placeholder git repo).
- Extend patches/FEAR/.gitignore to skip large redistributable vendor
  trees: deps/dxsdk/ (Microsoft DXSDK Jun 2010 redist), deps/remix-bridge-x86/
  (Nvidia bridge binaries), deps/remix-test-2026-03-13/ (380 MB Remix
  runtime test stash), and allowlist deploy.ps1 / *.template /
  bootstrap_report.txt that the original template missed.

216 files / ~6 MB total: per-game source tree, the imgui/minhook vendored
sources, the bridge_api headers, the remix-comp-proxy.ini and bridge.conf,
all of patches/FEAR/{findings.md, HANDOFF.md, kb.h, STATUS.md, README.md},
and 32 numbered run logs from rtx_comp/.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 6, 2026 19:45
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of lines (20,000). Try reducing the number of changed lines and requesting a review from Copilot again.

skurtyyskirts and others added 4 commits May 6, 2026 23:01
…ression notes

Adds a generic game-supplied matrix injection seam in ffp_state
(on_game_view/proj/world setters; takes priority over VS-const path; no
transpose since LithTech matrices are already row-major). Wires the
proxy's SetTransform interceptor to feed those setters from FEAR's
per-draw W/V/P calls (caller FEAR.exe!0x004FF99C). Logs proxy vtable
slot addresses at CreateDevice for live-BP targeting. Adopts the
infiniteRetries=True bridge.conf fix from earlier today, but documents
that vanilla launches have regressed — bridge IPC now hangs at SYN-ACK
without Frida instrumentation. Updates STATUS/HANDOFF with the new plan
(SetTransform path replaces the abandoned D3DXMatrixMultiply hook) and
captures the static-analyzer's matrix-hook discovery section in
findings.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
After progressing past the FEAR launcher with [Remix]=0 [FFP]=1, the
proxy's console.log shows the expected one-shot lines:
  [FFP] Game-supplied World matrix received from per-game hook
  [FFP] Game-supplied View  matrix received from per-game hook
  [FFP] Game-supplied Proj  matrix received from per-game hook
The seam is wired correctly end-to-end. Visual confirmation that world
geometry renders in correct positions is still pending for the next
session.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…inimal bridge.conf

First successful end-to-end render through the RTX Remix bridge. Three
combined fixes resolved cascading failures across driver, bridge handshake,
and proxy init order:

* Bridge swap b7de9a96 -> a03c16db (Brotherhood's working build) -- escapes
  the driver-9636 RegisterWaitForSingleObject(parent) hang documented in
  HANDOFF Cause A. Old runtime preserved as .trex.b7de9a96.bak/ in both
  game installs; patches/FEAR/deps/remix-bridge-x86/d3d9.dll deploy source
  updated separately on the user's local install.

* bridge.conf minimized to three load-bearing overrides: exposeRemixApi
  (proxy requires), infiniteRetries + disableTimeouts (CONTINUE-wait race
  exists in BOTH bridge versions; FEAR's slow LithTech+DirectInput client
  triggers it). All other FEAR overrides reverted to defaults.

* Deferred init_debug_lines() from remix_api::initialize() to
  begin_scene_callback_internal(). Creating materials inside
  Direct3DCreate9 (before any IDirect3DDevice9 exists) posted
  RemixApi_CreateMaterial on the Device queue while no device existed,
  stalling the Module queue so FEAR's GetDeviceCaps hung forever. Moving
  to BeginScene runs once after CreateDevice; guarded by existing
  m_debug_lines_initialized flag.

Plus formal capture of prior FFP fixes that already worked in [Remix]=0:
fog disable around FFP draws (renderer.cpp), SELECTARG1 stage 0
(ffp_state.cpp), [FFP] Enabled=1 (remix-comp-proxy.ini).

deploy.ps1 gains -GameDir param for targeting alternate installs (CLEAN).
HANDOFF.md updated with breakthrough TL;DR; remaining open issue is
d3d9_remix.dll+0xf0cc crash ~3min in after window-focus toggle.

Verified on CLEAN install 02:29:19 -> 02:32:35:
- Bridge: "Handshake completed!" -> "Server side D3D9 Device created successfully!"
- Proxy: CreateDevice succeeds, SetTransform interceptor captures W/V/P
- 72,060 bridge commands processed over 3 minutes of steady-state rendering

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…forms fix

Per-draw matrix dump in diagnostics revealed that SetTransform(WORLDMATRIX(0))
is identity for every draw in FEAR, with vertex positions already in world
space (e.g. DIP Ekozmaster#9 pos=(26116, -1289, -13774)). This matches Remix's documented
"baked transforms" case: instanced meshes appearing with identity xform matrices.

Two rtx.conf options resolve the wrong positions/scale/orientation symptom:
  rtx.leftHandedCoordinateSystem = True       # LithTech Jupiter EX
  rtx.capture.correctBakedTransforms = True   # derive transforms from vertex AABBs

After the fix, the warehouse scene renders with geometry in plausibly correct
positions, but surfaces appear washed-out white -- textures/lighting now the
new blocker. The rtx.conf files themselves are gitignored per-install; this
commit captures the source changes and full diagnosis in HANDOFF.md.

Source changes:
- diagnostics.cpp: per-draw game_WORLD/VIEW/PROJ dump for first 20 draws
- ffp_state.hpp: 3 public accessors (game_view/proj/world)
- remix-comp-proxy.ini: DelayMs 180000 -> 60000 (capture fires in-level before crash)
- HANDOFF.md: 03:04 TL;DR with the matrix dump, the fix, the new blocker

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants