use super::disasm::GbCpuDisasmLineSnapshot;
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
pub struct GbCpuRegsSnapshot {
pub a: u8,
pub f: u8, pub b: u8,
pub c: u8,
pub d: u8,
pub e: u8,
pub h: u8,
pub l: u8,
pub af: u16,
pub bc: u16,
pub de: u16,
pub hl: u16,
pub sp: u16,
pub pc: u16,
pub z_flag: bool, pub n_flag: bool, pub h_flag: bool, pub c_flag: bool,
pub cycles: u64, pub frame_count: u64,
pub scanline: u8, pub dot: u16, pub ppu_mode: u8,
pub ime: bool, pub halted: bool, pub halt_bug: bool,
pub ie: u8, pub if_reg: u8, }
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct GbCpuTraceLineSnapshot {
pub addr: u16,
pub bytes: Vec<u8>,
pub text: String,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct GbMemoryWatchEntrySnapshot {
pub address: u16,
pub value: u8,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct GbDebuggerSnapshot {
pub cpu_regs: GbCpuRegsSnapshot,
pub wram_hexdump_base: u16,
pub wram_hexdump_bytes: Vec<u8>,
pub vram_hexdump_base: u16,
pub vram_hexdump_bytes: Vec<u8>,
pub cpu_disasm: Vec<GbCpuDisasmLineSnapshot>,
pub cpu: String,
pub watch_values: Vec<GbMemoryWatchEntrySnapshot>,
pub recent_trace: Vec<GbCpuTraceLineSnapshot>,
}
impl Default for GbDebuggerSnapshot {
fn default() -> Self {
Self {
cpu_regs: GbCpuRegsSnapshot::default(),
wram_hexdump_base: 0xC000,
wram_hexdump_bytes: vec![0; 256],
vram_hexdump_base: 0x8000,
vram_hexdump_bytes: vec![0; 256],
cpu_disasm: Vec::new(),
cpu: String::new(),
watch_values: Vec::new(),
recent_trace: Vec::new(),
}
}
}