mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 02:11:36 -04:00
cc544fdae9
Refined via binary truth + actual code + recomp-debug methodology + ChatGPT. 0x80085900/0x8008AE50 are NOT in the boot EXE (PS-EXE t_size=0x28800) -> disc OVERLAY run by the dirty-RAM interp. The bug is the dirty-interp/overlay<-> compiled-BIOS boundary when an async interrupt (now delivered by the pump fix 0a6920a) lands mid-call. interrupts.c:355-384 overloads guest EPC as a host longjmp sentinel (0x80000048), colliding with the BIOS's architectural EPC/TCB use -> the interrupted continuation's $ra is clobbered to 1 -> wild-return bail storm. NOT a broken BIOS exception handler (recomp-debug 'platform infra is correct' trap). Fix design: separate host exception-return metadata from guest EPC; restore host call-contract on RFE; or defer async IRQs to a safe point. Confirm-first: $ra->1 tripwire. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>