Debugger: Reset counters when resetting game or loading a save state

This commit is contained in:
Sour 2019-10-06 19:06:18 -04:00
parent 99846954af
commit 2310e8d0e9
7 changed files with 29 additions and 18 deletions

View file

@ -100,6 +100,7 @@ void Debugger::Release()
void Debugger::Reset()
{
_memoryAccessCounter->ResetCounts();
_cpuDebugger->Reset();
_spcDebugger->Reset();
if(_sa1Debugger) {
@ -287,6 +288,10 @@ void Debugger::ProcessEvent(EventType type)
case EventType::Reset:
Reset();
break;
case EventType::StateLoaded:
_memoryAccessCounter->ResetCounts();
break;
}
}

View file

@ -9,5 +9,7 @@ enum class EventType
Reset,
ScriptEnded,
InputPolled,
StateLoaded,
StateSaved,
EventTypeSize
};

View file

@ -147,10 +147,10 @@ int LuaApi::GetLibrary(lua_State *lua)
lua_pushintvalue(endFrame, EventType::EndFrame);
lua_pushintvalue(inputPolled, EventType::InputPolled);
lua_pushintvalue(scriptEnded, EventType::ScriptEnded);
//TODO
/*lua_pushintvalue(codeBreak, EventType::CodeBreak);
lua_pushintvalue(stateLoaded, EventType::StateLoaded);
lua_pushintvalue(stateSaved, EventType::StateSaved);
//TODO
/*lua_pushintvalue(codeBreak, EventType::CodeBreak);
*/
lua_settable(lua, -3);

View file

@ -102,6 +102,8 @@ void MemoryAccessCounter::ResetCounts()
memset(_readStamps[i].data(), 0, _readStamps[i].size() * sizeof(uint64_t));
memset(_writeStamps[i].data(), 0, _writeStamps[i].size() * sizeof(uint64_t));
memset(_execStamps[i].data(), 0, _execStamps[i].size() * sizeof(uint64_t));
memset(_uninitReads[i].data(), 0, _uninitReads[i].size() * sizeof(uint8_t));
}
}

View file

@ -20,7 +20,7 @@ private:
vector<uint64_t> _writeStamps[(int)SnesMemoryType::Register];
vector<uint64_t> _execStamps[(int)SnesMemoryType::Register];
vector<bool> _uninitReads[(int)SnesMemoryType::Register];
vector<uint8_t> _uninitReads[(int)SnesMemoryType::Register];
Debugger* _debugger;
MemoryManager* _memoryManager;

View file

@ -9,6 +9,8 @@
#include "VideoDecoder.h"
#include "BaseCartridge.h"
#include "MovieManager.h"
#include "EventType.h"
#include "Debugger.h"
SaveStateManager::SaveStateManager(shared_ptr<Console> console)
{
@ -87,15 +89,15 @@ bool SaveStateManager::SaveState(string filepath)
ofstream file(filepath, ios::out | ios::binary);
if(file) {
auto lock = _console->AcquireLock();
_console->Lock();
SaveState(file);
_console->Unlock();
file.close();
//TODO LUA
/*shared_ptr<Debugger> debugger = _console->GetDebugger(false);
shared_ptr<Debugger> debugger = _console->GetDebugger(false);
if(debugger) {
debugger->ProcessEvent(EventType::StateSaved);
}*/
}
return true;
}
return false;
@ -165,17 +167,17 @@ bool SaveStateManager::LoadState(string filepath, bool hashCheckRequired)
bool result = false;
if(file.good()) {
auto lock = _console->AcquireLock();
if(LoadState(file, hashCheckRequired)) {
result = true;
}
_console->Lock();
result = LoadState(file, hashCheckRequired);
_console->Unlock();
file.close();
//TODO LUA
/*shared_ptr<Debugger> debugger = _console->GetDebugger(false);
if(debugger) {
debugger->ProcessEvent(EventType::StateLoaded);
}*/
if(result) {
shared_ptr<Debugger> debugger = _console->GetDebugger(false);
if(debugger) {
debugger->ProcessEvent(EventType::StateLoaded);
}
}
} else {
MessageManager::DisplayMessage("SaveStates", "SaveStateEmpty");
}

View file

@ -552,8 +552,8 @@ namespace Mesen.GUI.Debugger
new List<string> {"enum","emu.eventType.startFrame","Triggered at the start of a frame (cycle 0, scanline -1)","","",""},
new List<string> {"enum","emu.eventType.endFrame","Triggered at the end of a frame (cycle 0, scanline 241)","","",""},
//new List<string> {"enum","emu.eventType.codeBreak","Triggered when code execution breaks (e.g due to a breakpoint, etc.)","","",""},
//new List<string> {"enum","emu.eventType.stateLoaded","Triggered when a user manually loads a savestate","","",""},
//new List<string> {"enum","emu.eventType.stateSaved","Triggered when a user manually saves a savestate","","",""},
new List<string> {"enum","emu.eventType.stateLoaded","Triggered when a user manually loads a savestate","","",""},
new List<string> {"enum","emu.eventType.stateSaved","Triggered when a user manually saves a savestate","","",""},
new List<string> {"enum","emu.eventType.inputPolled","Triggered when the emulation core polls the state of the input devices for the next frame","","",""},
new List<string> {"enum","emu.eventType.scriptEnded","Triggered when the current Lua script ends (script window closed, execution stopped, etc.)","","",""},
new List<string> {"enum","emu.executeCountType","emu.executeCountType.[value]","","","Values:\ncpuCycles = 0,\nppuCycles = 1,\ncpuInstructions = 2\n\nUsed by execute calls." },