handoff: VSync/event-wedge fixes + iterate 2.A–2.BC research notes

Source changes (dormant parity infra, retained from iterate 2.AI/2.AO):
- xenia-kernel/exports.rs: nt_create_event manual_reset polarity +
  related event wiring
- xenia-gpu/mmio_region.rs: D1MODE_VBLANK_VLINE_STATUS hardcode parity

Also lands the audit-runs/ analysis notes (.md/.txt/.json digests) for the
iterate 2.x VSync/0x10e8/0x1004 wedge investigation. Raw trace dumps
(.jsonl/.gz/.csv/.stdout) and agent worktrees (.claude/) are gitignored as
regenerable local artifacts — see memory + HANDOFF for the running findings.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
MechaCat02
2026-06-05 07:19:08 +02:00
parent acd1656753
commit ef93a4fa14
620 changed files with 108303 additions and 1 deletions

View File

@@ -56,7 +56,15 @@ pub fn build_region(mmio: &GpuMmio) -> MmioRegion {
// — serve the last-written value.
reg::CP_INT_ACK => read_int_ack.load(Ordering::Relaxed),
reg::D1MODE_VBLANK_VLINE_STATUS => {
read_vblank_status.load(Ordering::Relaxed)
// 2.AO: hardcode to 1 to match canary
// (`graphics_system.cc:309-310`). The guest VSync
// callback (`sub_824BE9A0` @ PC 0x824BEA38-0x824BEA44)
// reads bit 0 to decide whether vblank fired; if the
// first delivery precedes `tick_vsync_instr`'s first
// bit-set the callback silently no-ops. Canary returns
// 1 unconditionally; we mirror that.
let _ = &read_vblank_status; // keep clone alive
1
}
_ => {
tracing::trace!(