mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-28 10:59:16 -04:00
cad8c96ae1
User-validated on Tomba: world, characters and HUD all present at native proportions on the 16:9 stretch. Mechanism (all parameterized via game.toml [widescreen], inert by default and at 4:3): - recompiler: [widescreen] sprite_tag_funcs emits a psx_ws_sprite_tag(cpu) callback at the entry of each listed function (the game engine's shared per-prim helper). The runtime records prim pointer ($a0) -> GTE-projected anchor (read from sprite_anchor_addr scratchpad) in a frame-stamped hash. - gpu.c: at GP0 execution, prims whose guest address (from the DMA linked-list walk's source tracking) is tagged get every X re-squashed around their own anchor — undoing the present stretch for CPU-computed pixel offsets the GTE squash never saw. Covers POLY_FT4 billboards and SPRT parts; SPRT texels keep full coverage via gr_draw_textured_rect_scaled. - hud_sprt_squash: untagged textured rects (SPRT family — pure screen-space 2D: HUD, menus) center-squash around the display centre. Untextured TILEs (fades) untouched. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>