Skip to content

Forza Motorsport: per-pixel W depth, ISO launcher, audio/D3D8 fixes (experimental) - #117

Open
saschawestbrock4-dev wants to merge 1 commit into
phobos665:title/forzafrom
saschawestbrock4-dev:forza-pc-port
Open

saschawestbrock4-dev wants to merge 1 commit into
phobos665:title/forzafrom
saschawestbrock4-dev:forza-pc-port

Conversation

@saschawestbrock4-dev

Copy link
Copy Markdown

Changes from my Forza Motorsport (2005) PC port work, on top of title/forza (afc5ee8). Experimental: tested by playing on one Windows PC (D3D11, XAudio2), menus and races.

What's in it

  • Per-pixel W-buffer depth (RECOMP_D3D8_WDEPTH, on by default when the title uses W): the host interpolated W linearly in screen space, which made coplanar billboards z-fight (white wedges through the Mr. Clean adverts). The VS now passes a perspective-correct and a linear W, and the PS writes SV_Depth from them.
  • Culling and polygon offset taken from title-recorded push buffers (RECOMP_PB_CULL, RECOMP_PB_POLYOFFSET).
  • Launcher: on first start it asks for the player's own disc image (.iso/.xiso, XDVDFS), extracts the game and checks default.xbe against XBE_SHA1 (new recomp_add_launcher option).
  • Stall watchdog (RECOMP_WATCHDOG_STALL=) that dumps the presenting thread's guest stack; long kernel waits are logged.
  • Register promotion for hot functions (tools/recomp/regpromote.py, with tests).
  • D3D8 texture, movie, state and audio fixes, plus F11 frame series + d3d8_replay options (--skip-draw, --draws, --list-draws).

Notes

  • Some files keep their CRLF line endings, as upstream has them.
  • The matching forza-recomp changes come in a separate PR.

Known open issue: Arcade/Free Run can hang on a white screen.

Thanks for the toolkit and the Forza groundwork!

🤖 Generated with Claude Code

…e PC port work

- Per-pixel W-buffer depth (RECOMP_D3D8_WDEPTH): the pixel stage writes the
  exact W, so coplanar billboards no longer z-fight
- Push-buffer cull and polygon offset recorded by the title
- Launcher: takes the game from the player's own disc image (ISO/xiso),
  checks the XBE against XBE_SHA1
- Stall watchdog (RECOMP_WATCHDOG_STALL), long-wait diagnostics
- Register promotion for hot functions (tools/recomp/regpromote.py)
- Many D3D8/texture/audio fixes (see diff)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ntfeax4UkEfQdPwptmpyEK
@phobos665

Copy link
Copy Markdown
Owner

Thanks! I'll take a look through and see what's worth pulling!

I hope your Forza recomp goes well! I did do some widescreen work but it requires extensive UI reworks

@saschawestbrock4-dev

Copy link
Copy Markdown
Author

i did my best i am a beginner afterall

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