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:
@@ -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!(
|
||||
|
||||
Reference in New Issue
Block a user