diff --git a/pcsx2-qt/Settings/AdvancedSettingsWidget.ui b/pcsx2-qt/Settings/AdvancedSettingsWidget.ui
index 3fb770858a..393528742d 100644
--- a/pcsx2-qt/Settings/AdvancedSettingsWidget.ui
+++ b/pcsx2-qt/Settings/AdvancedSettingsWidget.ui
@@ -474,7 +474,7 @@
-
- Deflate64
+ Deflate
-
@@ -482,11 +482,6 @@
Zstandard
- -
-
- LZMA2
-
-
diff --git a/pcsx2/Config.h b/pcsx2/Config.h
index cc67c55fa6..c88ca7eff6 100644
--- a/pcsx2/Config.h
+++ b/pcsx2/Config.h
@@ -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
diff --git a/pcsx2/ImGui/FullscreenUI_Settings.cpp b/pcsx2/ImGui/FullscreenUI_Settings.cpp
index 41625a7f29..336f524a01 100644
--- a/pcsx2/ImGui/FullscreenUI_Settings.cpp
+++ b/pcsx2/ImGui/FullscreenUI_Settings.cpp
@@ -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[] = {
diff --git a/pcsx2/SaveState.cpp b/pcsx2/SaveState.cpp
index 324c312854..239737c51d 100644
--- a/pcsx2/SaveState.cpp
+++ b/pcsx2/SaveState.cpp
@@ -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();