mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 02:11:36 -04:00
bd6ddc32f1
Menu fix (user-validated): per-prim center-squash mangled composite 2D UI (dialog boxes built from tiled cap/middle/cap SPRTs no longer aligned). Root cause was decoupling — content was squashed while the frame presented 4:3. Now squash applies IFF the frame is stretched: gpu_ws_present_native_43() is the single predicate (FMV video OR a full-2D screen = no character billboards this frame), shared by the GTE squash, the GPU per-prim squash, and the present 4:3 pin. Full-2D menus get zero squash + 4:3 pillarbox = pixel-native. Removed the old menu-2D squash paths (lines/flat-rects/mono-sprites/polylines). Cull-margin widening (recompiler feature): the game's per-object draw classifier tests (objX-camX+BIAS) <u RANGE sized for the 4:3 screen; the GTE squash shows ~33% more world so the margin collapses and objects pop near the wide edges. New [widescreen.cull] config emits those immediates with a runtime term psx_ws_x_margin() (bias +margin, range +2*margin, plus a1+=margin for param-margin variants) — 0 at 4:3/boot/menu/FMV so the original cull is byte-identical, ~53px when stretching 16:9. Site instruction types are verified at emit (fatal on mismatch). Requires regen. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>