PPU breakpoints resurrected

Now with zero overhead
This commit is contained in:
Nekotekina 2017-02-10 16:13:17 +03:00
parent 8262d56574
commit b20d7ff48c
3 changed files with 54 additions and 3 deletions

View file

@ -13,14 +13,18 @@
#include "Emu/Cell/PPUDisAsm.h"
#include "Emu/Cell/SPUDisAsm.h"
#include "Emu/PSP2/ARMv7DisAsm.h"
#include "Emu/Cell/PPUInterpreter.h"
#include "InstructionEditor.h"
#include "RegisterEditor.h"
//static const int show_lines = 30;
#include <map>
std::map<u32, bool> g_breakpoints;
extern void ppu_breakpoint(u32 addr);
u32 InterpreterDisAsmFrame::GetPc() const
{
const auto cpu = this->cpu.lock();
@ -159,6 +163,11 @@ void InterpreterDisAsmFrame::UpdateUI()
}
}
}
if (Emu.IsStopped())
{
g_breakpoints.clear();
}
}
void InterpreterDisAsmFrame::UpdateUnitList()
@ -516,9 +525,11 @@ bool InterpreterDisAsmFrame::IsBreakPoint(u32 pc)
void InterpreterDisAsmFrame::AddBreakPoint(u32 pc)
{
g_breakpoints.emplace(pc, false);
ppu_breakpoint(pc);
}
bool InterpreterDisAsmFrame::RemoveBreakPoint(u32 pc)
void InterpreterDisAsmFrame::RemoveBreakPoint(u32 pc)
{
return g_breakpoints.erase(pc) != 0;
g_breakpoints.erase(pc);
ppu_breakpoint(pc);
}