mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-28 02:56:36 -04:00
d4e7c25a9b
WipEout 3 gates widescreen to GTE-active frames (game.toml gte_game_mode), so the title, menus and loading screens present at native 4:3 by design. On a 32:9 display that leaves them as a small island with black over most of the screen. Extend the frame's own leftmost and rightmost columns across those margins. PRESENT_VS interpolates v_uv.x as mix(u_uv_rect.x, u_uv_rect.z, p.x), so passing the same u for both ends makes a quad sample exactly one texture column -- clamp-to-edge, which the present texture is already set to. The 4:3 content is untouched: same position, same scale, no distortion. Only the margins change, which is why this beats stretching (2.67x-wide text at 32:9) and cropping (cuts off menu rows you have to read). Both GL present paths need it. gl_renderer_present is the CPU-readback path; the FBO path (GL_PRES_VRAM, via present_target_quad) is the one that actually runs at internal scale > 1, which is every configuration this matters for -- patching only the first looked like the feature silently doing nothing. Not applied to MDEC video (depth24), whose edge pixels are real picture content and would smear, nor to the depth24 trailing-margin crop, which leaves black on the right deliberately. Live A/B via the ws_menu_edge_fill command rather than a rebuild, since this is a look and not a correctness fix. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>