Core: Fix bug in not creating save state correctly
This commit is contained in:
parent
10b550bb63
commit
15175d3fe2
|
@ -1671,11 +1671,11 @@ bool CN64System::SaveState()
|
||||||
zipWriteInFileInZip(file, g_Rom->GetRomAddress(), 0x40);
|
zipWriteInFileInZip(file, g_Rom->GetRomAddress(), 0x40);
|
||||||
}
|
}
|
||||||
zipWriteInFileInZip(file, &NextViTimer, sizeof(uint32_t));
|
zipWriteInFileInZip(file, &NextViTimer, sizeof(uint32_t));
|
||||||
int32_t WriteProgramCounter = ((int32_t)m_Reg.m_PROGRAM_COUNTER);
|
int64_t WriteProgramCounter = ((int32_t)m_Reg.m_PROGRAM_COUNTER);
|
||||||
zipWriteInFileInZip(file, &WriteProgramCounter, sizeof(int64_t));
|
zipWriteInFileInZip(file, &WriteProgramCounter, sizeof(int64_t));
|
||||||
zipWriteInFileInZip(file, m_Reg.m_GPR, sizeof(int64_t) * 32);
|
zipWriteInFileInZip(file, m_Reg.m_GPR, sizeof(int64_t) * 32);
|
||||||
zipWriteInFileInZip(file, m_Reg.m_FPR, sizeof(int64_t) * 32);
|
zipWriteInFileInZip(file, m_Reg.m_FPR, sizeof(int64_t) * 32);
|
||||||
zipWriteInFileInZip(file, m_Reg.m_CP0, sizeof(uint32_t) * 32);
|
zipWriteInFileInZip(file, m_Reg.m_CP0, sizeof(uint64_t) * 32);
|
||||||
zipWriteInFileInZip(file, m_Reg.m_FPCR, sizeof(uint32_t) * 32);
|
zipWriteInFileInZip(file, m_Reg.m_FPCR, sizeof(uint32_t) * 32);
|
||||||
zipWriteInFileInZip(file, &m_Reg.m_HI, sizeof(int64_t));
|
zipWriteInFileInZip(file, &m_Reg.m_HI, sizeof(int64_t));
|
||||||
zipWriteInFileInZip(file, &m_Reg.m_LO, sizeof(int64_t));
|
zipWriteInFileInZip(file, &m_Reg.m_LO, sizeof(int64_t));
|
||||||
|
@ -1742,7 +1742,7 @@ bool CN64System::SaveState()
|
||||||
hSaveFile.Write(g_Rom->GetRomAddress(), 0x40);
|
hSaveFile.Write(g_Rom->GetRomAddress(), 0x40);
|
||||||
}
|
}
|
||||||
hSaveFile.Write(&NextViTimer, sizeof(uint32_t));
|
hSaveFile.Write(&NextViTimer, sizeof(uint32_t));
|
||||||
int32_t WriteProgramCounter = ((int32_t)m_Reg.m_PROGRAM_COUNTER);
|
int64_t WriteProgramCounter = ((int32_t)m_Reg.m_PROGRAM_COUNTER);
|
||||||
hSaveFile.Write(&WriteProgramCounter, sizeof(int64_t));
|
hSaveFile.Write(&WriteProgramCounter, sizeof(int64_t));
|
||||||
hSaveFile.Write(m_Reg.m_GPR, sizeof(int64_t) * 32);
|
hSaveFile.Write(m_Reg.m_GPR, sizeof(int64_t) * 32);
|
||||||
hSaveFile.Write(m_Reg.m_FPR, sizeof(int64_t) * 32);
|
hSaveFile.Write(m_Reg.m_FPR, sizeof(int64_t) * 32);
|
||||||
|
|
|
@ -109,8 +109,6 @@ void CRSP_Plugin::RomClose(RenderWindow * Render)
|
||||||
}
|
}
|
||||||
CPlugin::RomClose(Render);
|
CPlugin::RomClose(Render);
|
||||||
m_RunEvent.Reset();
|
m_RunEvent.Reset();
|
||||||
m_Plugins = nullptr;
|
|
||||||
m_System = nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CRSP_Plugin::Initiate(CPlugins * Plugins, CN64System * System)
|
bool CRSP_Plugin::Initiate(CPlugins * Plugins, CN64System * System)
|
||||||
|
@ -563,7 +561,7 @@ uint32_t CRSP_Plugin::RspThread(void)
|
||||||
CRegisters & Reg = m_System->m_Reg;
|
CRegisters & Reg = m_System->m_Reg;
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
if ((Reg.SP_STATUS_REG & SP_STATUS_HALT) != 0)
|
if ((Reg.SP_STATUS_REG & SP_STATUS_HALT) != 0 || !RspMultiThreaded())
|
||||||
{
|
{
|
||||||
m_RunEvent.Reset();
|
m_RunEvent.Reset();
|
||||||
m_RunEvent.IsTriggered(SyncEvent::INFINITE_TIMEOUT);
|
m_RunEvent.IsTriggered(SyncEvent::INFINITE_TIMEOUT);
|
||||||
|
|
|
@ -59,6 +59,9 @@ public:
|
||||||
void * GetDebugMenu(void);
|
void * GetDebugMenu(void);
|
||||||
void ProcessMenuItem(int32_t id);
|
void ProcessMenuItem(int32_t id);
|
||||||
|
|
||||||
|
void PauseRSPThread(void);
|
||||||
|
void ResumeRSPThread(void);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CRSP_Plugin(const CRSP_Plugin &);
|
CRSP_Plugin(const CRSP_Plugin &);
|
||||||
CRSP_Plugin & operator=(const CRSP_Plugin &);
|
CRSP_Plugin & operator=(const CRSP_Plugin &);
|
||||||
|
|
Loading…
Reference in New Issue