pub struct AudioProvenanceStash { /* private fields */ }Expand description
Both audio stores, lifted out of the APU so a same-timeline restore can put them back.
This exists because of a shipped bug, not a hypothetical one. Pixel Provenance was non-functional from v2.3.2 to v2.3.6 because run-ahead’s per-frame rollback cleared the provenance store after the visible frame was produced and before the UI could read it — so the panel could never observe a populated record, and a comment two lines above the clear asserted the opposite. Audio Provenance rides the identical rollback.
The frontend takes this before restore_quiet and puts it back after, which
leaves the restore’s own reasoning completely intact: a save-state load and a
netplay rollback still clear, because those are genuine timeline changes.
Run-ahead’s rollback is not — it returns to the timeline it just left.
Implementations§
Source§impl AudioProvenanceStash
impl AudioProvenanceStash
Sourcepub const fn is_armed(&self) -> bool
pub const fn is_armed(&self) -> bool
Whether the store was armed when this stash was taken, so the caller can skip the put-back on the common path where nothing is armed.
Sourcepub fn mix_trace(&self) -> Option<&MixTrace>
pub fn mix_trace(&self) -> Option<&MixTrace>
The stashed per-CPU-cycle mix trace, or None when unarmed.
v2.3.8 — read-only, so a detached stash can be inspected without being
put back into an emulator first. rustynes-probe captures a trial’s
provenance precisely so it never touches a live Nes again; routing the
read through a scratch instance would undo that.
Sourcepub fn register_attribution(&self) -> Option<&RegisterAttribution>
pub fn register_attribution(&self) -> Option<&RegisterAttribution>
The stashed per-register write attribution, or None when unarmed.
Companion to Self::mix_trace.