mirror of
https://github.com/SourMesen/Mesen2.git
synced 2025-04-02 10:21:44 -04:00
Debugger: Reset counters when resetting game or loading a save state
This commit is contained in:
parent
99846954af
commit
2310e8d0e9
7 changed files with 29 additions and 18 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,5 +9,7 @@ enum class EventType
|
|||
Reset,
|
||||
ScriptEnded,
|
||||
InputPolled,
|
||||
StateLoaded,
|
||||
StateSaved,
|
||||
EventTypeSize
|
||||
};
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
|
@ -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." },
|
||||
|
|
Loading…
Add table
Reference in a new issue