MCPcopy Create free account
hub / github.com/PCSX2/pcsx2 / SaveState_DownloadState

Function SaveState_DownloadState

pcsx2/SaveState.cpp:713–756  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

711};
712
713std::unique_ptr<ArchiveEntryList> SaveState_DownloadState(Error* error)
714{
715 std::unique_ptr<ArchiveEntryList> destlist = std::make_unique<ArchiveEntryList>();
716 destlist->GetBuffer().resize(1024 * 1024 * 64);
717
718 memSavingState saveme(destlist->GetBuffer());
719 ArchiveEntry internals(EntryFilename_InternalStructures);
720 internals.SetDataIndex(saveme.GetCurrentPos());
721
722 if (!saveme.FreezeBios())
723 {
724 Error::SetString(error, "FreezeBios() failed");
725 return nullptr;
726 }
727
728 if (!saveme.FreezeInternals(error))
729 {
730 if (!error->IsValid())
731 Error::SetString(error, "FreezeInternals() failed");
732
733 return nullptr;
734 }
735
736 internals.SetDataSize(saveme.GetCurrentPos() - internals.GetDataIndex());
737 destlist->Add(internals);
738
739 for (const std::unique_ptr<BaseSavestateEntry>& entry : SavestateEntries)
740 {
741 uint startpos = saveme.GetCurrentPos();
742 if (!entry->FreezeOut(saveme))
743 {
744 Error::SetString(error, fmt::format("FreezeOut() failed for {}.", entry->GetFilename()));
745 destlist.reset();
746 break;
747 }
748
749 destlist->Add(
750 ArchiveEntry(entry->GetFilename())
751 .SetDataIndex(startpos)
752 .SetDataSize(saveme.GetCurrentPos() - startpos));
753 }
754
755 return destlist;
756}
757
758std::unique_ptr<SaveStateScreenshotData> SaveState_SaveScreenshot()
759{

Callers 1

DoSaveStateMethod · 0.85

Calls 13

ArchiveEntryClass · 0.85
GetCurrentPosMethod · 0.80
FreezeBiosMethod · 0.80
FreezeInternalsMethod · 0.80
GetDataIndexMethod · 0.80
formatFunction · 0.50
resizeMethod · 0.45
GetBufferMethod · 0.45
IsValidMethod · 0.45
AddMethod · 0.45
FreezeOutMethod · 0.45
GetFilenameMethod · 0.45

Tested by

no test coverage detected