mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 18:25:35 -04:00
3cfcdaba17
Always-on ring captures every GP0 command (header + first 6 payload words) stamped with the frame number issued. Hooked at gp0_execute_command() for fixed-length commands and at the polyline start path for variable-length ones. ~70 MB at 1 048 576 entries (34 bytes/entry); lazy-allocated on first record. New debug-server commands: - gpu_ring_stats: total/capacity/oldest+newest frame in buffer - gpu_frame_dump frame=N count=M: per-frame GP0 entries with raw words Designed per CLAUDE.md ring-buffer rule (CLAUDE.md global #2): capture is continuous; observers query a window of interest post-hoc. No arming, no timed attach. Use case driving this: fuzzy menu text bug on Tomba title screen (TombaRecomp ISSUES.md #3 'D'). Lifetime opcode counts couldn't distinguish which 0x64/0x2C calls draw the menu vs the static text. With per-frame dump we can now show that frame N has 88 GP0 commands and isolate the 6 0x2C entries that render with degenerate top-right vertices (= the fuzzy text). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>