mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 10:19:47 -04:00
5ef2ecaccb
The 16:9 dwarf/flower-field void is native-wide 2D-backdrop POSITIONING, not a column-loading problem. The earlier auto_backdrop whole-row preload is proven IRRELEVANT (ws_backdrop_ring: whole 41-col row loads, void persists; margin off vs whole-row pixel-identical). The flower-field is a fixed-screen 2D tile field (static 11-bit vertices, ~4:3 width) that bypasses the GTE, so native-wide (which widens 3D via the GTE) never widens it. Fix = geometric X-stretch about screen-centre of the 2D backdrop in the GL wide-mirror — USER-CONFIRMED it fills the void (with the gate disabled). Full record: BACKDROP_PRELOAD.md (2026-06-16). Remaining: gate the stretch to ONLY the backdrop (currently also stretches Tomba/ HUD/3D). Path forward = draw-time gp0_cmd_source_addr / sprite-tag classification. Runtime WIP checkpoint (all behind native-wide + runtime toggles, 4:3 untouched): - gpu_gl_renderer.c: u_xscale/u_xcenter geometric stretch in the geo+tex wide-mirror passes; per-frame backdrop-phase reset moved to gl_perf_present_enter (both present paths); textured-only phase mode; per-prim trace + dbg counters. - gpu.c: ws_backdrop_ring (always-on rewrite ring); ws_backdrop_margin live column-widen (proven irrelevant); psx_ws_backdrop_value whole-row path. - dirty_ram_interp.c: ring capture (extent/camx/count/a1/dl) at the interp hook. - debug_server.c: ws_backdrop_ring / ws_backdrop_margin / ws_backdrop_stretch. - main.cpp: keyboard ALWAYS drives player 1 (OR'd with any controller). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>