#pragma once #include #include void BreakpointFunc(s64, Disassembler::DisassemblyResult &); void AddressFunc(s64, Disassembler::DisassemblyResult &); void InstructionFunc(s64, Disassembler::DisassemblyResult &); class Debugger final { bool enabled = false; static constexpr auto MAX_LINES_OF_DISASM = 150; struct Column { const char *name = nullptr; void (*func)(s64, Disassembler::DisassemblyResult &) = nullptr; }; std::array columns = { Column{"##BreakpointColumn", &BreakpointFunc}, Column{"Address", &AddressFunc}, Column{"Instruction", &InstructionFunc}, }; public: static void RegisterView(); bool followPC = true; void Open(bool wantFollowPC = true) { enabled = true; followPC = wantFollowPC; } void Close() { enabled = false; } bool render(); };