-------------------------------------------------------------------------------------- CompressThread_VmState --------------------------------------------------------------------------------------
| 925 | // CompressThread_VmState |
| 926 | // -------------------------------------------------------------------------------------- |
| 927 | static 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 | { |
no test coverage detected