Debugger: Fixed PPU-related issues when using the debugger & the HD pack recorder at the same time

This commit is contained in:
Sour 2018-09-07 21:12:30 -04:00
parent d305abe8fe
commit f69b891d53
3 changed files with 20 additions and 2 deletions

View file

@ -1141,6 +1141,11 @@ void Console::StartRecordingHdPack(string saveFolder, ScaleFilterType filterType
_ppu.reset(new HdBuilderPpu(shared_from_this(), _hdPackBuilder.get(), chrRamBankSize));
_memoryManager->RegisterIODevice(_ppu.get());
shared_ptr<Debugger> debugger = _debugger;
if(debugger) {
debugger->SetPpu(_ppu);
}
LoadState(saveState);
Resume();
}
@ -1158,6 +1163,11 @@ void Console::StopRecordingHdPack()
_memoryManager->RegisterIODevice(_ppu.get());
_hdPackBuilder.reset();
shared_ptr<Debugger> debugger = _debugger;
if(debugger) {
debugger->SetPpu(_ppu);
}
LoadState(saveState);
Resume();
}

View file

@ -38,7 +38,6 @@ Debugger::Debugger(shared_ptr<Console> console, shared_ptr<CPU> cpu, shared_ptr<
_romName = console->GetRomInfo().RomName;
_console = console;
_cpu = cpu;
_ppu = ppu;
_apu = apu;
_memoryManager = memoryManager;
_mapper = mapper;
@ -47,7 +46,9 @@ Debugger::Debugger(shared_ptr<Console> console, shared_ptr<CPU> cpu, shared_ptr<
_assembler.reset(new Assembler(_labelManager));
_disassembler.reset(new Disassembler(memoryManager.get(), mapper.get(), this));
_codeDataLogger.reset(new CodeDataLogger(this, mapper->GetMemorySize(DebugMemoryType::PrgRom), mapper->GetMemorySize(DebugMemoryType::ChrRom)));
_memoryDumper.reset(new MemoryDumper(_ppu, _memoryManager, _mapper, _codeDataLogger, this, _disassembler));
SetPpu(ppu);
_memoryAccessCounter.reset(new MemoryAccessCounter(this));
_profiler.reset(new Profiler(this));
_traceLogger.reset(new TraceLogger(this, memoryManager, _labelManager));
@ -131,6 +132,12 @@ Debugger::~Debugger()
_console->Resume();
}
void Debugger::SetPpu(shared_ptr<PPU> ppu)
{
_ppu = ppu;
_memoryDumper.reset(new MemoryDumper(_ppu, _memoryManager, _mapper, _codeDataLogger, this, _disassembler));
}
Console* Debugger::GetConsole()
{
return _console.get();

View file

@ -147,6 +147,7 @@ public:
Debugger(shared_ptr<Console> console, shared_ptr<CPU> cpu, shared_ptr<PPU> ppu, shared_ptr<APU> apu, shared_ptr<MemoryManager> memoryManager, shared_ptr<BaseMapper> mapper);
~Debugger();
void SetPpu(shared_ptr<PPU> ppu);
Console* GetConsole();
void SetFlags(uint32_t flags);