diff --git a/PKHeX.Core/Saves/SAV8SWSH.cs b/PKHeX.Core/Saves/SAV8SWSH.cs
index 4decb853b..209156fff 100644
--- a/PKHeX.Core/Saves/SAV8SWSH.cs
+++ b/PKHeX.Core/Saves/SAV8SWSH.cs
@@ -7,7 +7,7 @@ namespace PKHeX.Core
///
/// Generation 8 object for games.
///
- public sealed class SAV8SWSH : SAV8, ISaveBlock8SWSH, ITrainerStatRecord
+ public sealed class SAV8SWSH : SAV8, ISaveBlock8SWSH, ITrainerStatRecord, ISaveFileRevision
{
public SAV8SWSH(byte[] data) : this(data, SwishCrypto.Decrypt(data))
{
@@ -18,6 +18,7 @@ private SAV8SWSH(byte[] data, IReadOnlyList blocks) : base(data)
Data = Array.Empty();
AllBlocks = blocks;
Blocks = new SaveBlockAccessor8SWSH(this);
+ SaveRevision = Zukan.GetRevision();
Initialize();
}
@@ -25,6 +26,7 @@ public SAV8SWSH()
{
AllBlocks = Meta8.GetBlankDataSWSH();
Blocks = new SaveBlockAccessor8SWSH(this);
+ SaveRevision = Zukan.GetRevision();
Initialize();
ClearBoxes();
}
@@ -40,6 +42,16 @@ public override void CopyChangesFrom(SaveFile sav)
Edited = true;
}
+ public int SaveRevision { get; }
+
+ public string SaveRevisionString => SaveRevision switch
+ {
+ 0 => "-Base", // Vanilla
+ 1 => "-IoA", // DLC 1: Isle of Armor
+ 2 => "-CT", // DLC 2: Crown Tundra
+ _ => throw new ArgumentOutOfRangeException(nameof(SaveRevision)),
+ };
+
public IReadOnlyList AllBlocks { get; }
public override bool ChecksumsValid => true;
public override string ChecksumInfo => string.Empty;
@@ -103,7 +115,7 @@ private void Initialize()
PokeDex = 0;
TeamIndexes.LoadBattleTeams();
- int rev = Zukan.GetRevision();
+ int rev = SaveRevision;
if (rev == 0)
{
m_move = Legal.MaxMoveID_8_O0;
diff --git a/PKHeX.Core/Saves/Substructures/Misc/ISaveFileRevision.cs b/PKHeX.Core/Saves/Substructures/Misc/ISaveFileRevision.cs
new file mode 100644
index 000000000..864a07231
--- /dev/null
+++ b/PKHeX.Core/Saves/Substructures/Misc/ISaveFileRevision.cs
@@ -0,0 +1,8 @@
+namespace PKHeX.Core
+{
+ public interface ISaveFileRevision
+ {
+ public int SaveRevision { get; }
+ string SaveRevisionString { get; }
+ }
+}
diff --git a/PKHeX.WinForms/MainWindow/Main.cs b/PKHeX.WinForms/MainWindow/Main.cs
index 192cfac7a..a4196474b 100644
--- a/PKHeX.WinForms/MainWindow/Main.cs
+++ b/PKHeX.WinForms/MainWindow/Main.cs
@@ -819,6 +819,8 @@ private static string GetProgramTitle()
private static string GetProgramTitle(SaveFile sav)
{
string title = GetProgramTitle() + $" - {sav.GetType().Name}: ";
+ if (sav is ISaveFileRevision rev)
+ title = title.Insert(title.Length - 2, rev.SaveRevisionString);
var ver = GameInfo.GetVersionName(sav.Version);
if (Settings.Default.HideSAVDetails)
return title + $"[{ver}]";