SaveState: Fix compression settings

This commit is contained in:
chaoticgd
2026-05-25 20:12:57 +01:00
committed by Ty
parent 23dd23b468
commit 5e150cd3eb
4 changed files with 12 additions and 29 deletions
+1 -6
View File
@@ -474,7 +474,7 @@
</item>
<item>
<property name="text">
<string>Deflate64</string>
<string>Deflate</string>
</property>
</item>
<item>
@@ -482,11 +482,6 @@
<string>Zstandard</string>
</property>
</item>
<item>
<property name="text">
<string>LZMA2</string>
</property>
</item>
</widget>
</item>
</layout>
+2 -3
View File
@@ -384,9 +384,8 @@ enum class GSDumpCompressionMethod : u8
enum class SavestateCompressionMethod : u8
{
Uncompressed = 0,
Deflate64 = 1,
Zstandard = 2,
LZMA2 = 3
Deflate = 1,
Zstandard = 2
};
enum class SavestateCompressionLevel : u8
+1 -2
View File
@@ -4900,9 +4900,8 @@ void FullscreenUI::DrawAdvancedSettingsPage()
static constexpr const char* s_savestate_compression_type[] = {
FSUI_NSTR("Uncompressed"),
FSUI_NSTR("Deflate64"),
FSUI_NSTR("Deflate"),
FSUI_NSTR("Zstandard"),
FSUI_NSTR("LZMA2"),
};
static constexpr const char* s_savestate_compression_ratio[] = {
+8 -18
View File
@@ -926,8 +926,8 @@ static bool SaveState_ReadScreenshot(zip_t* zf, u32* out_width, u32* out_height,
// --------------------------------------------------------------------------------------
static bool SaveState_AddToZip(zip_t* zf, ArchiveEntryList* srclist, SaveStateScreenshotData* screenshot)
{
u32 compression;
u32 compression_level;
u32 compression = ZIP_CM_DEFAULT;
u32 compression_level = 0;
if (EmuConfig.Savestate.CompressionType == SavestateCompressionMethod::Zstandard)
{
@@ -942,25 +942,13 @@ static bool SaveState_AddToZip(zip_t* zf, ArchiveEntryList* srclist, SaveStateSc
else if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::VeryHigh)
compression_level = 22;
}
else if (EmuConfig.Savestate.CompressionType == SavestateCompressionMethod::Deflate64)
else if (EmuConfig.Savestate.CompressionType == SavestateCompressionMethod::Deflate)
{
compression = ZIP_CM_DEFLATE64;
compression = ZIP_CM_DEFLATE;
if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::Low)
compression_level = 1;
else if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::Medium)
compression_level = 3;
else if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::High)
compression_level = 7;
else if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::VeryHigh)
compression_level = 9;
}
else if (EmuConfig.Savestate.CompressionType == SavestateCompressionMethod::LZMA2)
{
compression = ZIP_CM_LZMA2;
if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::Low)
compression_level = 1;
else if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::Medium)
compression_level = 3;
compression_level = 5;
else if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::High)
compression_level = 7;
else if (EmuConfig.Savestate.CompressionRatio == SavestateCompressionLevel::VeryHigh)
@@ -1006,7 +994,9 @@ static bool SaveState_AddToZip(zip_t* zf, ArchiveEntryList* srclist, SaveStateSc
return false;
}
zip_set_file_compression(zf, fi, compression, compression_level);
// Don't compress the version indicator file so that builds that don't
// support a given compression method can at least still read it.
zip_set_file_compression(zf, fi, ZIP_CM_STORE, 0);
}
const uint listlen = srclist->GetLength();