The go-getting Game Boy emulator - This is a mirror
at main 50 lines 1.4 kB view raw
1package debug 2 3import ( 4 "fmt" 5 6 "github.com/maxfierke/gogo-gb/cart" 7 "github.com/maxfierke/gogo-gb/cpu" 8 "github.com/maxfierke/gogo-gb/mem" 9) 10 11type Debugger interface { 12 Setup(cpu *cpu.CPU, mmu *mem.MMU, cart *cart.Cartridge) 13 OnDecode(cpu *cpu.CPU, mmu *mem.MMU) 14 OnExecute(cpu *cpu.CPU, mmu *mem.MMU) 15 OnInterrupt(cpu *cpu.CPU, mmu *mem.MMU) 16 OnRead(mmu *mem.MMU, addr uint16) mem.MemRead 17 OnWrite(mmu *mem.MMU, addr uint16, value byte) mem.MemWrite 18} 19 20func NewDebugger(name string) (Debugger, error) { 21 switch name { 22 case "gameboy-doctor": 23 return NewGBDoctorDebugger(), nil 24 case "interactive": 25 return NewInteractiveDebugger() 26 case "", "none": 27 return NewNullDebugger(), nil 28 default: 29 return nil, fmt.Errorf("unrecognized debugger: %v", name) 30 } 31} 32 33type NullDebugger struct{} 34 35func NewNullDebugger() *NullDebugger { 36 return &NullDebugger{} 37} 38 39func (nd *NullDebugger) Setup(cpu *cpu.CPU, mmu *mem.MMU, cart *cart.Cartridge) {} 40func (nd *NullDebugger) OnDecode(cpu *cpu.CPU, mmu *mem.MMU) {} 41func (nd *NullDebugger) OnExecute(cpu *cpu.CPU, mmu *mem.MMU) {} 42func (nd *NullDebugger) OnInterrupt(cpu *cpu.CPU, mmu *mem.MMU) {} 43 44func (nd *NullDebugger) OnRead(mmu *mem.MMU, addr uint16) mem.MemRead { 45 return mem.ReadPassthrough() 46} 47 48func (nd *NullDebugger) OnWrite(mmu *mem.MMU, addr uint16, value byte) mem.MemWrite { 49 return mem.WritePassthrough() 50}