mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-27 10:38:46 -04:00
572b9210d8
Three changes, one fix and two pieces of visibility. 1. ws_ui_group_assign gains a third join: consecutive in the ordering-table walk AND touching. WipEout 3's speed/shield readout ends at x=288 and the meter bar it belongs to starts at x=306 with a different CLUT, so neither shared columns nor a matching key could join them. The readout stood alone, its bbox midpoint 256.5 landed in the middle third against a screen centre of 254, and it stayed pinned near centre while its own meters went to the right edge -- a 2 px gap in 4:3 opening to 159 framebuffer pixels at 32:9. No anchor threshold can fix that: the genuinely centred "pit ... check" message sits FARTHER RIGHT (midpoint 300.5) than the mis-anchored readout, so any threshold reaching the readout drags the message with it. Submission order is the only signal that separates them, and the array already carries it. Simulated against seven captures spanning three aspects and two code states, this forms three unions and changes exactly one anchor: [225,288] centre becomes [225,486] right. The other two unions ([208,240]+[240,361], [364,447]+[450,473]) are within an anchor. Confirmed in-race at 32:9: 7 runs, lap readout left, speed readout and meters together on the right. 2. ws_ui_groups reports why primitives were NOT admitted to the partition. Each gate in ws_ui_prepass_add is a silent return, so a primitive left at its raw 4:3 X while its neighbours are squashed -- which is how a HUD mark ends up stranded mid-screen -- was indistinguishable from one never drawn. In-race at 32:9: opcode 367, not_axis 410, everything else 0. 3. geom_correction reports perspective-UV arming with a real denominator. perspective_triangles could previously only be compared against gp0_draw, which counts untextured primitives that are correctly never armed, so it read as a coverage figure without being one. texcorr.attempts counts exactly the textured triangles reaching the predicate. In-race at 32:9: 199599 submitted, 96.15% armed, 3.85% rejected for a missing per-vertex Z, 0% for correction disabled or a missing packet address. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>