1use crate::ppu::Ppu;
2use std::sync::Arc;
3
4#[derive(Debug, Clone, PartialEq)]
5#[must_use]
6pub enum Debugger {
7 Ppu(PpuDebugger),
8}
9
10impl From<PpuDebugger> for Debugger {
11 fn from(debugger: PpuDebugger) -> Self {
12 Self::Ppu(debugger)
13 }
14}
15
16#[derive(Clone)]
17#[must_use]
18pub struct PpuDebugger {
19 pub cycle: u32,
20 pub scanline: u32,
21 pub callback: Arc<dyn Fn(Ppu) + Send + Sync + 'static>,
22}
23
24impl PartialEq for PpuDebugger {
25 fn eq(&self, other: &Self) -> bool {
26 self.cycle == other.cycle && self.scanline == other.scanline
27 }
28}
29
30impl std::fmt::Debug for PpuDebugger {
31 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
32 f.debug_struct("PpuDebugger")
33 .field("cycle", &self.cycle)
34 .field("scanline", &self.scanline)
35 .finish_non_exhaustive()
36 }
37}