mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 02:11:36 -04:00
d78e7a784f
Two interlocking pieces from the Tsumu HUD/menu-label investigation: - GP0 ring builder attribution (gpu.h/gpu.c/debug_server.c): op-0x80 entries now carry a bounded guest-stack unwind (bld[6]) + copy-time $sp (csp); gpu_frame_dump emits func/ra per entry and csp+bld[] for copies. This cracked the HUD compose: whole label strips are MoveImaged from the glyph sheet (src 834/852,352 -> HUD cache y=32). - [[vram_patch]] (text_xlate.cpp/.h + gpu.c hook): third translation layer for text that exists only as pre-rendered pixels in an uploaded texture asset (Tsumu HUD labels, menus, prompts live in the glyph-sheet image; the 144-glyph font has no katakana at all). On every GP0 0xA0 upload completion the configured rects are verified halfword-for-halfword against expected JP pixels and only then rewritten with the target-language pixels via the renderer facade (software/GL/supersample coherent). Re-applies on every re-upload; verify-fail leaves foreign assets untouched. Debug: xlate stats gains vram_patches/vram_applied; new "vpatch" force-apply subcommand for config iteration without rebuild. Verified on-screen: HUD "STAGE: 1-1 / BATTERY: 100", pause menu (CONTINUE/RESTART/GIVE UP/CHANGE CONTROLS, TARGET BATT), title-menu strips. docs/STRING_TRANSLATION.md Appendix Z documents the model, mechanism, authoring recipe, and remaining strip backlog. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>