From a4f43f2afd8b016ed1cd977d942a492f5b46d1d7 Mon Sep 17 00:00:00 2001 From: pokecal Date: Sun, 16 Apr 2017 15:14:07 +0900 Subject: [PATCH] add Gen3 Badge without RS --- .../Save Editors/SAV_SimpleTrainer.cs | 15 ++++++++++-- PKHeX/Saves/SAV3.cs | 24 ++++++++++++++++++- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_SimpleTrainer.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_SimpleTrainer.cs index bd64bdd63..256e659d7 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/SAV_SimpleTrainer.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_SimpleTrainer.cs @@ -88,12 +88,17 @@ public SAV_SimpleTrainer() if (SAV is SAV3) { GB_Map.Visible = false; - GB_Badges.Visible = false; // todo + SAV3 sav3 = (SAV3)SAV; + switch (sav3.Version) + { + case GameVersion.E: badgeval = sav3.Badges; break; + case GameVersion.FRLG: badgeval = sav3.Badges; break; + default: GB_Badges.Visible = false; break; // RS + } L_Started.Visible = L_Fame.Visible = false; CAL_AdventureStartDate.Visible = CAL_HoFDate.Visible = false; CAL_AdventureStartTime.Visible = CAL_HoFTime.Visible = false; - return; } if (SAV is SAV3Colosseum || SAV is SAV3XD) { @@ -203,6 +208,12 @@ private void B_Save_Click(object sender, EventArgs e) sav2.TextSpeed = CB_TextSpeed.SelectedIndex; } + if (SAV is SAV3) + { + SAV3 sav3 = (SAV3)SAV; + sav3.Badges = badgeval & 0xFF; + } + if (SAV is SAV4) { SAV4 s = (SAV4)SAV; diff --git a/PKHeX/Saves/SAV3.cs b/PKHeX/Saves/SAV3.cs index 74c2f2551..b5f9732fe 100644 --- a/PKHeX/Saves/SAV3.cs +++ b/PKHeX/Saves/SAV3.cs @@ -286,7 +286,29 @@ public int PlayedFrames get { return Data[BlockOfs[0] + 0x12]; } set { Data[BlockOfs[0] + 0x12] = (byte)value; } } - + public int Badges + { + get + { + switch (Version) + { + case GameVersion.E: return BitConverter.ToUInt16(Data, BlockOfs[2] + 0x3FC) >> 7 & 0xFF; + case GameVersion.FRLG: return Data[BlockOfs[2] + 0x64]; + default: return 0; // RS + } + } + set + { + switch (Version) + { + case GameVersion.E: + BitConverter.GetBytes(BitConverter.ToUInt16(Data, BlockOfs[2] + 0x3FC) & ~(0xFF << 7) | (value << 7)).CopyTo(Data, BlockOfs[2] + 0x3FC); + break; + case GameVersion.FRLG: Data[BlockOfs[2] + 0x64] = (byte)value; break; + default: return; // RS + } + } + } public override uint Money { get