Fix various issues

This commit is contained in:
Chris Spegal 2023-10-10 21:55:54 -04:00
parent 1b7c4d8a2f
commit f44e12f4d8
16 changed files with 216 additions and 84 deletions

View file

@ -1003,10 +1003,7 @@ namespace CafeSystem
PauseTitle();
// memory
memory_Serialize(writer);
// gpu
writer.writeData(LatteGPUState.contextRegister, sizeof(LatteGPUState.contextRegister));
writer.writeData(LatteGPUState.contextRegisterShadowAddr, sizeof(LatteGPUState.contextRegister));
writer.writeData(LatteGPUState.sharedArea, sizeof(gx2GPUSharedArea_t));
nn::temp::save(writer);
nn::aoc::save(writer);
@ -1015,6 +1012,11 @@ namespace CafeSystem
iosu::fsa::save(writer);
iosu::odm::save(writer);
// gpu
writer.writeData(LatteGPUState.contextRegister, sizeof(LatteGPUState.contextRegister));
writer.writeData(LatteGPUState.contextRegisterShadowAddr, sizeof(LatteGPUState.contextRegister));
writer.writeData(LatteGPUState.sharedArea, sizeof(gx2GPUSharedArea_t));
FileStream* stream = FileStream::createFile(path);
stream->writeData(writer.getResult().data(), writer.getResult().size_bytes());
delete stream;
@ -1025,8 +1027,10 @@ namespace CafeSystem
void LoadState(std::string path)
{
PauseTitle();
//coreinit::__OSDeleteAllActivePPCThreads();
DestroyMemorySpace();
cemuLog_log(LogType::SaveStates, "Loading state...", path);
auto data = FileStream::LoadIntoMemory(path);
@ -1034,12 +1038,8 @@ namespace CafeSystem
MemStreamReader reader(data->data(), data->size());
// memory
DestroyMemorySpace();
memory_Deserialize(reader);
// gpu
reader.readData(LatteGPUState.contextRegister, sizeof(LatteGPUState.contextRegister));
reader.readData(LatteGPUState.contextRegisterShadowAddr, sizeof(LatteGPUState.contextRegister));
reader.readData(LatteGPUState.sharedArea, sizeof(gx2GPUSharedArea_t));
nn::temp::restore(reader);
nn::aoc::restore(reader);
@ -1048,6 +1048,11 @@ namespace CafeSystem
iosu::fsa::restore(reader);
iosu::odm::restore(reader);
// gpu
reader.readData(LatteGPUState.contextRegister, sizeof(LatteGPUState.contextRegister));
reader.readData(LatteGPUState.contextRegisterShadowAddr, sizeof(LatteGPUState.contextRegister));
reader.readData(LatteGPUState.sharedArea, sizeof(gx2GPUSharedArea_t));
cemuLog_log(LogType::SaveStates, "Loaded state from {}.", path);
ResumeTitle(/*isThreadRunning*/);