diff --git a/PKHeX.Core/Saves/SaveFileMetadata.cs b/PKHeX.Core/Saves/SaveFileMetadata.cs
index b2c90ae73..8667adebc 100644
--- a/PKHeX.Core/Saves/SaveFileMetadata.cs
+++ b/PKHeX.Core/Saves/SaveFileMetadata.cs
@@ -55,11 +55,11 @@ public sealed record SaveFileMetadata(SaveFile SAV)
/// Final save file data.
public byte[] Finalize(byte[] data, BinaryExportSetting setting)
{
- if (Footer.Length != 0 && setting.HasFlag(BinaryExportSetting.IncludeFooter))
+ if (HasFooter && !setting.HasFlag(BinaryExportSetting.ExcludeFooter))
data = [..data, ..Footer];
- if (Header.Length != 0 && setting.HasFlag(BinaryExportSetting.IncludeHeader))
+ if (HasHeader && !setting.HasFlag(BinaryExportSetting.ExcludeHeader))
data = [..Header, ..data];
- if (setting != BinaryExportSetting.None)
+ if (!setting.HasFlag(BinaryExportSetting.ExcludeFinalize))
Handler?.Finalize(data);
return data;
}
@@ -189,11 +189,17 @@ public string GetSuggestedExtension()
/// Selected export extension
public BinaryExportSetting GetSuggestedFlags(string? ext = null)
{
+ // Do everything as default
var flags = BinaryExportSetting.None;
- if (ext == ".dsv")
- flags |= BinaryExportSetting.IncludeFooter;
- if (ext == ".gci" || SAV is IGCSaveFile {MemoryCard: null} || ext == ".sram")
- flags |= BinaryExportSetting.IncludeHeader;
+
+ if (FileName is not null)
+ {
+ // Try to support a couple formats changes that the user wants to remove from the file
+ if (FileName.EndsWith(".dsv") && ext is not ".dsv")
+ flags |= BinaryExportSetting.ExcludeFooter;
+ else if (FileName.EndsWith(".gci") && ext is not ".gci")
+ flags |= BinaryExportSetting.ExcludeHeader;
+ }
return flags;
}
}
diff --git a/PKHeX.Core/Saves/Util/BinaryExportSetting.cs b/PKHeX.Core/Saves/Util/BinaryExportSetting.cs
index 181dcca6e..8debef8b3 100644
--- a/PKHeX.Core/Saves/Util/BinaryExportSetting.cs
+++ b/PKHeX.Core/Saves/Util/BinaryExportSetting.cs
@@ -6,6 +6,7 @@ namespace PKHeX.Core;
public enum BinaryExportSetting
{
None,
- IncludeFooter = 1 << 0,
- IncludeHeader = 1 << 1,
+ ExcludeFooter = 1 << 0,
+ ExcludeHeader = 1 << 1,
+ ExcludeFinalize = 1 << 2,
}