Debugger: Fixed issues when switching from one game to another
This commit is contained in:
parent
85c84146bf
commit
5b1f62ab8e
3 changed files with 23 additions and 12 deletions
|
@ -49,7 +49,6 @@ void Console::Stop()
|
||||||
_cpu.reset();
|
_cpu.reset();
|
||||||
_ppu.reset();
|
_ppu.reset();
|
||||||
_memoryManager.reset();
|
_memoryManager.reset();
|
||||||
_debugger.reset();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Console::LoadRom(VirtualFile romFile, VirtualFile patchFile)
|
void Console::LoadRom(VirtualFile romFile, VirtualFile patchFile)
|
||||||
|
@ -64,7 +63,13 @@ void Console::LoadRom(VirtualFile romFile, VirtualFile patchFile)
|
||||||
_memoryManager->Initialize(cart, shared_from_this());
|
_memoryManager->Initialize(cart, shared_from_this());
|
||||||
|
|
||||||
_cpu.reset(new Cpu(_memoryManager));
|
_cpu.reset(new Cpu(_memoryManager));
|
||||||
_debugger.reset(new Debugger(shared_from_this()));
|
|
||||||
|
if(_debugger) {
|
||||||
|
//Reset debugger if it was running before
|
||||||
|
auto lock = _debuggerLock.AcquireSafe();
|
||||||
|
_debugger.reset();
|
||||||
|
GetDebugger();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,9 +113,19 @@ shared_ptr<MemoryManager> Console::GetMemoryManager()
|
||||||
return _memoryManager;
|
return _memoryManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
shared_ptr<Debugger> Console::GetDebugger(bool allowStart)
|
shared_ptr<Debugger> Console::GetDebugger(bool autoStart)
|
||||||
{
|
{
|
||||||
return _debugger;
|
shared_ptr<Debugger> debugger = _debugger;
|
||||||
|
if(!debugger && autoStart) {
|
||||||
|
//Lock to make sure we don't try to start debuggers in 2 separate threads at once
|
||||||
|
auto lock = _debuggerLock.AcquireSafe();
|
||||||
|
debugger = _debugger;
|
||||||
|
if(!debugger) {
|
||||||
|
debugger.reset(new Debugger(shared_from_this()));
|
||||||
|
_debugger = debugger;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return debugger;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Console::ProcessCpuRead(uint32_t addr, uint8_t value, MemoryOperationType type)
|
void Console::ProcessCpuRead(uint32_t addr, uint8_t value, MemoryOperationType type)
|
||||||
|
|
|
@ -29,6 +29,7 @@ private:
|
||||||
shared_ptr<DebugHud> _debugHud;
|
shared_ptr<DebugHud> _debugHud;
|
||||||
|
|
||||||
SimpleLock _runLock;
|
SimpleLock _runLock;
|
||||||
|
SimpleLock _debuggerLock;
|
||||||
atomic<bool> _stopFlag;
|
atomic<bool> _stopFlag;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -49,7 +50,7 @@ public:
|
||||||
shared_ptr<Ppu> GetPpu();
|
shared_ptr<Ppu> GetPpu();
|
||||||
shared_ptr<BaseCartridge> GetCartridge();
|
shared_ptr<BaseCartridge> GetCartridge();
|
||||||
shared_ptr<MemoryManager> GetMemoryManager();
|
shared_ptr<MemoryManager> GetMemoryManager();
|
||||||
shared_ptr<Debugger> GetDebugger(bool allowStart = true);
|
shared_ptr<Debugger> GetDebugger(bool autoStart = true);
|
||||||
|
|
||||||
void ProcessCpuRead(uint32_t addr, uint8_t value, MemoryOperationType type);
|
void ProcessCpuRead(uint32_t addr, uint8_t value, MemoryOperationType type);
|
||||||
void ProcessCpuWrite(uint32_t addr, uint8_t value, MemoryOperationType type);
|
void ProcessCpuWrite(uint32_t addr, uint8_t value, MemoryOperationType type);
|
||||||
|
|
|
@ -6,15 +6,10 @@
|
||||||
#include "../Core/DebugTypes.h"
|
#include "../Core/DebugTypes.h"
|
||||||
|
|
||||||
extern shared_ptr<Console> _console;
|
extern shared_ptr<Console> _console;
|
||||||
shared_ptr<Debugger> _debugger;
|
|
||||||
|
|
||||||
shared_ptr<Debugger> GetDebugger()
|
shared_ptr<Debugger> GetDebugger()
|
||||||
{
|
{
|
||||||
if(!_debugger) {
|
return _console->GetDebugger();
|
||||||
_debugger = _console->GetDebugger();
|
|
||||||
}
|
|
||||||
|
|
||||||
return _debugger;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
|
@ -27,7 +22,7 @@ extern "C"
|
||||||
|
|
||||||
DllExport void __stdcall ReleaseDebugger()
|
DllExport void __stdcall ReleaseDebugger()
|
||||||
{
|
{
|
||||||
_debugger.reset();
|
//_debugger.reset();
|
||||||
//_console->StopDebugger();
|
//_console->StopDebugger();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue