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

Function SaveState_AddToZip

pcsx2/SaveState.cpp:927–1030  ·  view source on GitHub ↗

-------------------------------------------------------------------------------------- CompressThread_VmState --------------------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

925// CompressThread_VmState
926// --------------------------------------------------------------------------------------
927static bool SaveState_AddToZip(zip_t* zf, ArchiveEntryList* srclist, SaveStateScreenshotData* screenshot)
928{
929 u32 compression = ZIP_CM_DEFAULT;
930 u32 compression_level = 0;
931
932 if (EmuConfig.Savestate.CompressionType == SavestateCompressionMethod::Zstandard)
933 {
934 compression = ZIP_CM_ZSTD;
935
936 if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::Low)
937 compression_level = 1;
938 else if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::Medium)
939 compression_level = 3;
940 else if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::High)
941 compression_level = 10;
942 else if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::VeryHigh)
943 compression_level = 22;
944 }
945 else if (EmuConfig.Savestate.CompressionType == SavestateCompressionMethod::Deflate)
946 {
947 compression = ZIP_CM_DEFLATE;
948 if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::Low)
949 compression_level = 1;
950 else if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::Medium)
951 compression_level = 5;
952 else if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::High)
953 compression_level = 7;
954 else if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::VeryHigh)
955 compression_level = 9;
956 }
957 else if (EmuConfig.Savestate.CompressionType == SavestateCompressionMethod::Uncompressed)
958 {
959 compression = ZIP_CM_STORE;
960 compression_level = 0;
961 }
962
963 // version indicator
964 {
965 struct VersionIndicator
966 {
967 u32 save_version;
968 char version[STATE_PCSX2_VERSION_SIZE];
969 };
970
971 VersionIndicator* vi = static_cast<VersionIndicator*>(std::malloc(sizeof(VersionIndicator)));
972 vi->save_version = g_SaveVersion;
973 if (BuildVersion::GitTaggedCommit)
974 {
975 StringUtil::Strlcpy(vi->version, BuildVersion::GitTag, std::size(vi->version));
976 }
977 else
978 {
979 StringUtil::Strlcpy(vi->version, "Unknown", std::size(vi->version));
980 }
981
982 zip_source_t* const zs = zip_source_buffer(zf, vi, sizeof(*vi), 1);
983 if (!zs)
984 {

Callers 1

SaveState_ZipToDiskFunction · 0.85

Calls 13

StrlcpyFunction · 0.85
zip_source_bufferFunction · 0.85
zip_file_addFunction · 0.85
zip_source_freeFunction · 0.85
zip_set_file_compressionFunction · 0.85
GetDataIndexMethod · 0.80
sizeFunction · 0.50
GetLengthMethod · 0.45
GetDataSizeMethod · 0.45
GetPtrMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected