mirror of
https://github.com/N64Recomp/N64Recomp.git
synced 2026-06-15 04:13:20 +00:00
Adds a per-label tick to the recompiler's basic-block emit: increments ctx->watchdog_count and stores the current label PC into ctx->pc_trail (32-entry ring). If the count exceeds 100M basic-block transitions (roughly 1.6s wall-clock at native RSP speed), the function returns RspExitReason::Watchdog with the last 32 PCs and key GPRs dumped to stderr. Cost is ~5 cheap ops per label, <1ms over a typical 50ms audio frame. The mechanism is the canonical "always-on ring buffer" shape from CLAUDE.md global rules: no arming, no instrumentation toggling — recording is continuous, probes query backward. Pairs with the librecomp ultra_trace ring (separate commit) so a hung ucode shows up immediately as `rsp_run_task_enter` with no matching `_exit`. Used this session to localize the Stadium audio aspMain hang at PC cycle 1048→10EC→1038→103C — see project_pokestadium_status.md. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| src | ||