From 2f9d50308bba583d6815dcc4585ba47545f6fc6c Mon Sep 17 00:00:00 2001 From: Kurt Date: Fri, 31 Jul 2026 16:50:20 -0500 Subject: [PATCH] Revise savefile subversion indication in title Ensure all have dashes at front for multiple strings, separate out the GB/VC to a separate tag. No longer does the program show `SAV3FRLGUGBA` instead of `SAV3FRLG-U [GBA]`, which is a little more transparent to the end user. --- PKHeX.Core/Saves/SAV1.cs | 2 +- PKHeX.Core/Saves/SAV1Stadium.cs | 2 +- PKHeX.Core/Saves/SAV1StadiumJ.cs | 2 +- PKHeX.Core/Saves/SAV2.cs | 2 +- PKHeX.Core/Saves/SAV2Stadium.cs | 2 +- PKHeX.Core/Saves/SAV3.cs | 2 +- PKHeX.Core/Saves/Substructures/Gen8/BS/Gem8Version.cs | 8 ++++---- PKHeX.WinForms/MainWindow/Main.cs | 6 ++++-- 8 files changed, 14 insertions(+), 12 deletions(-) diff --git a/PKHeX.Core/Saves/SAV1.cs b/PKHeX.Core/Saves/SAV1.cs index 15bef975a..2e781f3d5 100644 --- a/PKHeX.Core/Saves/SAV1.cs +++ b/PKHeX.Core/Saves/SAV1.cs @@ -14,7 +14,7 @@ public sealed class SAV1 : SaveFile, ILangDeviantSave, IEventFlagArray, IEventWo public bool IsVirtualConsole => State.Exportable && Metadata.FileName is { } s && s.StartsWith("sav", StringComparison.Ordinal) && s.Contains(".dat"); // default to GB-Era for non-exportable public int SaveRevision => Japanese ? 0 : 1; - public string SaveRevisionString => (Japanese ? "J" : "U") + (IsVirtualConsole ? "VC" : "GB"); + public string SaveRevisionString => (Japanese ? "-J" : "-U") + (IsVirtualConsole ? " [VC]" : " [GB]"); public bool Japanese { get; } public bool Korean => false; public override int Language { get; set; } diff --git a/PKHeX.Core/Saves/SAV1Stadium.cs b/PKHeX.Core/Saves/SAV1Stadium.cs index 8d9310805..3dfd006d2 100644 --- a/PKHeX.Core/Saves/SAV1Stadium.cs +++ b/PKHeX.Core/Saves/SAV1Stadium.cs @@ -10,7 +10,7 @@ namespace PKHeX.Core; public sealed class SAV1Stadium : SAV_STADIUM, IStorageCleanup { public override int SaveRevision => Japanese ? 0 : 1; - public override string SaveRevisionString => Japanese ? "J" : "U"; + public override string SaveRevisionString => Japanese ? "-J" : "-U"; public override PersonalTable1 Personal => PersonalTable.Y; public override int MaxEV => EffortValues.Max12; diff --git a/PKHeX.Core/Saves/SAV1StadiumJ.cs b/PKHeX.Core/Saves/SAV1StadiumJ.cs index 5937b94eb..40363c347 100644 --- a/PKHeX.Core/Saves/SAV1StadiumJ.cs +++ b/PKHeX.Core/Saves/SAV1StadiumJ.cs @@ -10,7 +10,7 @@ public sealed class SAV1StadiumJ : SAV_STADIUM { // Required since PK1 logic comparing a save file assumes the save file can be U/J public override int SaveRevision => 0; - public override string SaveRevisionString => "0"; // so we're different from Japanese SAV1Stadium naming... + public override string SaveRevisionString => "-0"; // so we're different from Japanese SAV1Stadium naming... public override PersonalTable1 Personal => PersonalTable.Y; public override int MaxEV => EffortValues.Max12; diff --git a/PKHeX.Core/Saves/SAV2.cs b/PKHeX.Core/Saves/SAV2.cs index f7302a9fa..5d6e11cca 100644 --- a/PKHeX.Core/Saves/SAV2.cs +++ b/PKHeX.Core/Saves/SAV2.cs @@ -14,7 +14,7 @@ public sealed class SAV2 : SaveFile, ILangDeviantSave, IEventFlagArray, IEventWo public bool IsVirtualConsole => State.Exportable && Metadata.FileName is { } s && s.StartsWith("sav", StringComparison.Ordinal) && s.Contains(".dat"); // default to GB-Era for non-exportable public int SaveRevision => Japanese ? 0 : !Korean ? 1 : 2; - public string SaveRevisionString => (Japanese ? "J" : !Korean ? "U" : "K") + (IsVirtualConsole ? "VC" : "GB"); + public string SaveRevisionString => (Japanese ? "-J" : !Korean ? "-U" : "-K") + (IsVirtualConsole ? " [VC]" : " [GB]"); public bool Japanese { get; } public bool Korean { get; } public override int Language { get; set; } diff --git a/PKHeX.Core/Saves/SAV2Stadium.cs b/PKHeX.Core/Saves/SAV2Stadium.cs index 3bf06359f..68c9c35be 100644 --- a/PKHeX.Core/Saves/SAV2Stadium.cs +++ b/PKHeX.Core/Saves/SAV2Stadium.cs @@ -9,7 +9,7 @@ namespace PKHeX.Core; public sealed class SAV2Stadium : SAV_STADIUM, IBoxDetailName { public override int SaveRevision => Japanese ? 0 : 1; - public override string SaveRevisionString => Japanese ? "J" : "U"; + public override string SaveRevisionString => Japanese ? "-J" : "-U"; public override PersonalTable2 Personal => PersonalTable.C; public override int MaxEV => EffortValues.Max12; diff --git a/PKHeX.Core/Saves/SAV3.cs b/PKHeX.Core/Saves/SAV3.cs index a48eb570c..11d8a9839 100644 --- a/PKHeX.Core/Saves/SAV3.cs +++ b/PKHeX.Core/Saves/SAV3.cs @@ -13,7 +13,7 @@ public abstract class SAV3 : SaveFile, ILangDeviantSave, IEventFlag37, IBoxDetai public sealed override string Extension => ".sav"; public int SaveRevision => Japanese ? 0 : 1; - public string SaveRevisionString => (Japanese ? "J" : "U") + (IsVirtualConsole ? "VC" : "GBA"); + public string SaveRevisionString => (Japanese ? "-J" : "-U") + (IsVirtualConsole ? " [VC]" : " [GBA]"); public bool Japanese { get; } public bool Korean => false; diff --git a/PKHeX.Core/Saves/Substructures/Gen8/BS/Gem8Version.cs b/PKHeX.Core/Saves/Substructures/Gen8/BS/Gem8Version.cs index bd790131c..191977b0b 100644 --- a/PKHeX.Core/Saves/Substructures/Gen8/BS/Gem8Version.cs +++ b/PKHeX.Core/Saves/Substructures/Gen8/BS/Gem8Version.cs @@ -43,10 +43,10 @@ public static class Gem8VersionExtensions /// Stored version value in the save data. public static string GetSuffixString(this Gem8Version version) => version switch { - V1_0 => "-1.0.0", // Launch Revision - V1_1 => "-1.1.0", // 1.1.0 - V1_2 => "-1.2.0", // 1.2.0 - V1_3 => "-1.3.0", // 1.3.0 + V1_0 => "-1.0", // Launch Revision + V1_1 => "-1.1", // 1.1.0 + V1_2 => "-1.2", // 1.2.0 + V1_3 => "-1.3", // 1.3.0 _ => throw new ArgumentOutOfRangeException(nameof(version)), }; } diff --git a/PKHeX.WinForms/MainWindow/Main.cs b/PKHeX.WinForms/MainWindow/Main.cs index 540d1a6d0..305e412c8 100644 --- a/PKHeX.WinForms/MainWindow/Main.cs +++ b/PKHeX.WinForms/MainWindow/Main.cs @@ -838,9 +838,11 @@ private static string GetProgramTitle() private static string GetProgramTitle(SaveFile sav) { - string title = GetProgramTitle() + $" - {sav.GetType().Name}: "; + var type = sav.GetType().Name; if (sav is ISaveFileRevision rev) - title = title.Insert(title.Length - 2, rev.SaveRevisionString); + type += rev.SaveRevisionString; + + var title = GetProgramTitle() + $" - {type}: "; var version = GameInfo.GetVersionName(sav.Version); if (Settings.Privacy.HideSAVDetails) return title + $"[{version}]";