feat(apu): add timer/sequencer/LFSR fields for channel output tracking
This commit is contained in:
@@ -112,6 +112,31 @@ impl NativeBus {
|
||||
let frame_reset_delay = sio::take_u8(data, &mut cursor, BUS_STATE_CTX)?;
|
||||
let pending_frame_mode_5step = sio::take_u8(data, &mut cursor, BUS_STATE_CTX)? != 0;
|
||||
let pending_frame_irq_inhibit = sio::take_u8(data, &mut cursor, BUS_STATE_CTX)? != 0;
|
||||
let pulse_timer_counter = [
|
||||
u16::from_le_bytes([
|
||||
sio::take_u8(data, &mut cursor, BUS_STATE_CTX)?,
|
||||
sio::take_u8(data, &mut cursor, BUS_STATE_CTX)?,
|
||||
]),
|
||||
u16::from_le_bytes([
|
||||
sio::take_u8(data, &mut cursor, BUS_STATE_CTX)?,
|
||||
sio::take_u8(data, &mut cursor, BUS_STATE_CTX)?,
|
||||
]),
|
||||
];
|
||||
let mut pulse_duty_step = [0u8; 2];
|
||||
pulse_duty_step.copy_from_slice(sio::take_exact(data, &mut cursor, 2, BUS_STATE_CTX)?);
|
||||
let triangle_timer_counter = u16::from_le_bytes([
|
||||
sio::take_u8(data, &mut cursor, BUS_STATE_CTX)?,
|
||||
sio::take_u8(data, &mut cursor, BUS_STATE_CTX)?,
|
||||
]);
|
||||
let triangle_step = sio::take_u8(data, &mut cursor, BUS_STATE_CTX)?;
|
||||
let noise_timer_counter = u16::from_le_bytes([
|
||||
sio::take_u8(data, &mut cursor, BUS_STATE_CTX)?,
|
||||
sio::take_u8(data, &mut cursor, BUS_STATE_CTX)?,
|
||||
]);
|
||||
let noise_lfsr = u16::from_le_bytes([
|
||||
sio::take_u8(data, &mut cursor, BUS_STATE_CTX)?,
|
||||
sio::take_u8(data, &mut cursor, BUS_STATE_CTX)?,
|
||||
]);
|
||||
self.apu.load_state_tail(ApuStateTail {
|
||||
frame_cycle,
|
||||
frame_mode_5step,
|
||||
@@ -143,6 +168,12 @@ impl NativeBus {
|
||||
frame_reset_delay,
|
||||
pending_frame_mode_5step,
|
||||
pending_frame_irq_inhibit,
|
||||
pulse_timer_counter,
|
||||
pulse_duty_step,
|
||||
triangle_timer_counter,
|
||||
triangle_step,
|
||||
noise_timer_counter,
|
||||
noise_lfsr,
|
||||
});
|
||||
let mapper_len = sio::take_u32(data, &mut cursor, BUS_STATE_CTX)? as usize;
|
||||
let mapper_state = sio::take_exact(data, &mut cursor, mapper_len, BUS_STATE_CTX)?;
|
||||
|
||||
Reference in New Issue
Block a user