diff --git a/PKHeX.Core/Saves/SAV4.cs b/PKHeX.Core/Saves/SAV4.cs index 9533b0ce2..c46087cd1 100644 --- a/PKHeX.Core/Saves/SAV4.cs +++ b/PKHeX.Core/Saves/SAV4.cs @@ -300,18 +300,44 @@ public override int Language set => General[Trainer1 + 0x19] = (byte)value; } - public int Badges + public byte Badges { get => General[Trainer1 + 0x1A]; - set { if (value < 0) return; General[Trainer1 + 0x1A] = (byte)value; } + set => General[Trainer1 + 0x1A] = value; } - public int Sprite + public byte Sprite { get => General[Trainer1 + 0x1B]; - set { if (value < 0) return; General[Trainer1 + 0x1B] = (byte)value; } + set => General[Trainer1 + 0x1B] = value; } + public byte ROMCode // Unused by D/P + { + get => General[Trainer1 + 0x1C]; + set => General[Trainer1 + 0x1C] = value; + } + + public byte ProgressFlags + { + get => General[Trainer1 + 0x1D]; + set => General[Trainer1 + 0x1D] = value; + } + + public bool GameClear + { + get => (ProgressFlags & 1) == 1; + set => ProgressFlags = (byte)((ProgressFlags & 0xFE) | (value ? 1 : 0)); + } + + public bool NationalDex + { + get => (ProgressFlags & 2) == 2; + set => ProgressFlags = (byte)((ProgressFlags & 0xFD) | (value ? 2 : 0)); + } + + // 1E-1F are unused (alignment) + public uint Coin { get => ReadUInt16LittleEndian(General[(Trainer1 + 0x20)..]); diff --git a/PKHeX.Core/Saves/SAV4HGSS.cs b/PKHeX.Core/Saves/SAV4HGSS.cs index 09b7d7706..d05523d71 100644 --- a/PKHeX.Core/Saves/SAV4HGSS.cs +++ b/PKHeX.Core/Saves/SAV4HGSS.cs @@ -26,7 +26,7 @@ public SAV4HGSS(Memory data) : base(data, GeneralSize, StorageSize, Genera public override Zukan4 Dex { get; } protected override SAV4 CloneInternal4() => State.Exportable ? new SAV4HGSS(Data.ToArray()) : new SAV4HGSS(); - public override GameVersion Version { get => GameVersion.HGSS; set { } } + public override GameVersion Version { get => (GameVersion)ROMCode; set => ROMCode = (byte)value; } public override PersonalTable4 Personal => PersonalTable.HGSS; public override ReadOnlySpan HeldItems => Legal.HeldItems_HGSS; public override int MaxItemID => Legal.MaxItemID_4_HGSS; diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_SimpleTrainer.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_SimpleTrainer.cs index d2fbceeac..57256d805 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/SAV_SimpleTrainer.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_SimpleTrainer.cs @@ -288,7 +288,7 @@ private void B_Save_Click(object sender, EventArgs e) sav4.Z = (int)NUD_Z.Value; sav4.Y = (int)NUD_Y.Value; } - sav4.Badges = badgeval & 0xFF; + sav4.Badges = (byte)badgeval; if (sav4 is SAV4HGSS hgss) { hgss.Badges16 = badgeval >> 8;