From 54bc0b320da8a66003c525a0d8b8c549a2bbf853 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 2 Jul 2016 20:24:17 -0700 Subject: [PATCH] Add PersonalInfo for gens4/5 Abstracted the PersonalInfo class to the multi-generation format. Structure hasn't changed since BW sans a few additions. --- Legality/Checks.cs | 4 +- Legality/Core.cs | 16 +++- Legality/Data.cs | 121 ------------------------- PKHeX.csproj | 11 +++ PKM/PKX.cs | 8 +- PKX/f1-Main.cs | 16 +--- PersonalInfo/PersonalInfo.cs | 151 +++++++++++++++++++++++++++++++ PersonalInfo/PersonalInfoB2W2.cs | 36 ++++++++ PersonalInfo/PersonalInfoBW.cs | 95 +++++++++++++++++++ PersonalInfo/PersonalInfoG4.cs | 89 ++++++++++++++++++ PersonalInfo/PersonalInfoORAS.cs | 36 ++++++++ PersonalInfo/PersonalInfoXY.cs | 26 ++++++ Properties/Resources.Designer.cs | 50 ++++++++++ Properties/Resources.resx | 15 +++ Resources/byte/personal_b2w2 | Bin 0 -> 53884 bytes Resources/byte/personal_bw | Bin 0 -> 40080 bytes Resources/byte/personal_dp | Bin 0 -> 22044 bytes Resources/byte/personal_hgss | Bin 0 -> 22352 bytes Resources/byte/personal_pt | Bin 0 -> 22352 bytes SAV/SAV_SecretBase.cs | 2 +- Saves/SAV4.cs | 7 +- Saves/SAV5.cs | 5 +- Saves/SaveUtil.cs | 4 +- 23 files changed, 544 insertions(+), 148 deletions(-) create mode 100644 PersonalInfo/PersonalInfo.cs create mode 100644 PersonalInfo/PersonalInfoB2W2.cs create mode 100644 PersonalInfo/PersonalInfoBW.cs create mode 100644 PersonalInfo/PersonalInfoG4.cs create mode 100644 PersonalInfo/PersonalInfoORAS.cs create mode 100644 PersonalInfo/PersonalInfoXY.cs create mode 100644 Resources/byte/personal_b2w2 create mode 100644 Resources/byte/personal_bw create mode 100644 Resources/byte/personal_dp create mode 100644 Resources/byte/personal_hgss create mode 100644 Resources/byte/personal_pt diff --git a/Legality/Checks.cs b/Legality/Checks.cs index f7c884dd0..1586c0ae6 100644 --- a/Legality/Checks.cs +++ b/Legality/Checks.cs @@ -424,8 +424,8 @@ private LegalityCheck verifyRibbons() private LegalityCheck verifyAbility() { int index = Legal.PersonalAO[pk6.Species].FormeIndex(pk6.Species, pk6.AltForm); - byte[] abilities = Legal.PersonalAO[index].Abilities; - int abilval = Array.IndexOf(abilities, (byte)pk6.Ability); + int[] abilities = Legal.PersonalAO[index].Abilities; + int abilval = Array.IndexOf(abilities, pk6.Ability); if (abilval < 0) return new LegalityCheck(Severity.Invalid, "Ability is not valid for species/form."); diff --git a/Legality/Core.cs b/Legality/Core.cs index 8a9454ab5..05da7a600 100644 --- a/Legality/Core.cs +++ b/Legality/Core.cs @@ -8,8 +8,14 @@ public static partial class Legal // PKHeX master Wonder Card Database internal static WC6[] WC6DB; // PKHeX master personal.dat - internal static readonly PersonalInfo[] PersonalAO = PersonalInfo.getArray(Properties.Resources.personal_ao, PersonalInfo.SizeAO); - internal static readonly PersonalInfo[] PersonalXY = PersonalInfo.getArray(Properties.Resources.personal_xy, PersonalInfo.SizeXY); + internal static readonly PersonalInfo[] PersonalAO = PersonalInfo.getArray(Properties.Resources.personal_ao, GameVersion.ORAS); + internal static readonly PersonalInfo[] PersonalXY = PersonalInfo.getArray(Properties.Resources.personal_xy, GameVersion.XY); + internal static readonly PersonalInfo[] PersonalB2W2 = PersonalInfo.getArray(Properties.Resources.personal_b2w2, GameVersion.B2W2); + internal static readonly PersonalInfo[] PersonalBW = PersonalInfo.getArray(Properties.Resources.personal_bw, GameVersion.BW); + internal static readonly PersonalInfo[] PersonalHGSS = PersonalInfo.getArray(Properties.Resources.personal_hgss, GameVersion.HGSS); + internal static readonly PersonalInfo[] PersonalPt = PersonalInfo.getArray(Properties.Resources.personal_pt, GameVersion.Pt); + internal static readonly PersonalInfo[] PersonalDP = PersonalInfo.getArray(Properties.Resources.personal_dp, GameVersion.DP); + private static readonly EggMoves[] EggMoveXY = EggMoves.getArray(Data.unpackMini(Properties.Resources.eggmove_xy, "xy")); private static readonly Learnset[] LevelUpXY = Learnset.getArray(Data.unpackMini(Properties.Resources.lvlmove_xy, "xy")); private static readonly EggMoves[] EggMoveAO = EggMoves.getArray(Data.unpackMini(Properties.Resources.eggmove_ao, "ao")); @@ -595,16 +601,16 @@ private static IEnumerable getEggMoves(int species, int formnum) } private static IEnumerable getTutorMoves(int species, int formnum, bool ORASTutors) { - PersonalInfo pkAO = PersonalAO[PersonalAO[species].FormeIndex(species, formnum)]; + PersonalInfoORAS pkAO = (PersonalInfoORAS)PersonalAO[PersonalAO[species].FormeIndex(species, formnum)]; // Type Tutor - List moves = TypeTutor.Where((t, i) => pkAO.Tutors[i]).ToList(); + List moves = TypeTutor.Where((t, i) => pkAO.TypeTutors[i]).ToList(); // Varied Tutors if (ORASTutors) for (int i = 0; i < Tutors_AO.Length; i++) for (int b = 0; b < Tutors_AO[i].Length; b++) - if (pkAO.ORASTutors[i][b]) + if (pkAO.SpecialTutors[i][b]) moves.Add(Tutors_AO[i][b]); // Keldeo - Secret Sword diff --git a/Legality/Data.cs b/Legality/Data.cs index 0e0c79f5e..5e76c58a8 100644 --- a/Legality/Data.cs +++ b/Legality/Data.cs @@ -234,127 +234,6 @@ public enum Nature Bashful, Rash, Calm, Gentle, Sassy, Careful, Quirky, } - public class PersonalInfo - { - internal static int SizeAO = 0x50; - internal static int SizeXY = 0x40; - public byte HP, ATK, DEF, SPE, SPA, SPD; - public int BST; - public int EV_HP, EV_ATK, EV_DEF, EV_SPE, EV_SPA, EV_SPD; - public byte[] Types = new byte[2]; - public byte CatchRate, EvoStage; - public ushort[] Items = new ushort[3]; - public byte Gender, HatchCycles, BaseFriendship, EXPGrowth; - public byte[] EggGroups = new byte[2]; - public byte[] Abilities = new byte[3]; - public ushort FormStats, FormeSprite, BaseEXP; - public byte FormeCount, Color; - public float Height, Weight; - public bool[] TMHM; - public bool[] Tutors; - public bool[][] ORASTutors = new bool[4][]; - public byte EscapeRate; - - public PersonalInfo(byte[] data) - { - using (BinaryReader br = new BinaryReader(new MemoryStream(data))) - { - HP = br.ReadByte(); ATK = br.ReadByte(); DEF = br.ReadByte(); - SPE = br.ReadByte(); SPA = br.ReadByte(); SPD = br.ReadByte(); - BST = HP + ATK + DEF + SPE + SPA + SPD; - - Types = new[] { br.ReadByte(), br.ReadByte() }; - CatchRate = br.ReadByte(); - EvoStage = br.ReadByte(); - - ushort EVs = br.ReadUInt16(); - EV_HP = EVs >> 0 & 0x3; - EV_ATK = EVs >> 2 & 0x3; - EV_DEF = EVs >> 4 & 0x3; - EV_SPE = EVs >> 6 & 0x3; - EV_SPA = EVs >> 8 & 0x3; - EV_SPD = EVs >> 10 & 0x3; - - Items = new[] { br.ReadUInt16(), br.ReadUInt16(), br.ReadUInt16() }; - Gender = br.ReadByte(); - HatchCycles = br.ReadByte(); - BaseFriendship = br.ReadByte(); - - EXPGrowth = br.ReadByte(); - EggGroups = new[] { br.ReadByte(), br.ReadByte() }; - Abilities = new[] { br.ReadByte(), br.ReadByte(), br.ReadByte() }; - EscapeRate = br.ReadByte(); - FormStats = br.ReadUInt16(); - - FormeSprite = br.ReadUInt16(); - FormeCount = br.ReadByte(); - Color = br.ReadByte(); - BaseEXP = br.ReadUInt16(); - - Height = br.ReadUInt16(); - Weight = br.ReadUInt16(); - - byte[] TMHMData = br.ReadBytes(0x10); - TMHM = new bool[8 * TMHMData.Length]; - for (int j = 0; j < TMHM.Length; j++) - TMHM[j] = (TMHMData[j / 8] >> (j % 8) & 0x1) == 1; //Bitflags for TMHM - - byte[] TutorData = br.ReadBytes(8); - Tutors = new bool[8 * TutorData.Length]; - for (int j = 0; j < Tutors.Length; j++) - Tutors[j] = (TutorData[j / 8] >> (j % 8) & 0x1) == 1; //Bitflags for Tutors - - if (br.BaseStream.Length - br.BaseStream.Position == 0x10) // ORAS - { - byte[][] ORASTutorData = - { - br.ReadBytes(4), // 15 - br.ReadBytes(4), // 17 - br.ReadBytes(4), // 16 - br.ReadBytes(4), // 15 - }; - for (int i = 0; i < 4; i++) - { - ORASTutors[i] = new bool[8 * ORASTutorData[i].Length]; - for (int b = 0; b < 8 * ORASTutorData[i].Length; b++) - ORASTutors[i][b] = (ORASTutorData[i][b / 8] >> b % 8 & 0x1) == 1; - } - } - } - } - - // Data Manipulation - public int FormeIndex(int species, int forme) - { - return forme == 0 || FormStats == 0 ? species : FormStats + forme - 1; - } - public int RandomGender - { - get - { - switch (Gender) - { - case 255: // Genderless - return 2; - case 254: // Female - return 1; - case 0: // Male - return 0; - default: - return (int)(Util.rnd32() % 2); - } - } - } - public bool HasFormes => FormeCount > 1; - - internal static PersonalInfo[] getArray(byte[] data, int size) - { - PersonalInfo[] d = new PersonalInfo[data.Length / size]; - for (int i = 0; i < d.Length; i++) - d[i] = new PersonalInfo(data.Skip(i * size).Take(size).ToArray()); - return d; - } - } internal static class Data { diff --git a/PKHeX.csproj b/PKHeX.csproj index c3c813445..b93da15f7 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -75,6 +75,12 @@ + + + + + + @@ -380,6 +386,11 @@ + + + + + diff --git a/PKM/PKX.cs b/PKM/PKX.cs index 922bdf9e5..8967c5f94 100644 --- a/PKM/PKX.cs +++ b/PKM/PKX.cs @@ -243,7 +243,7 @@ internal static byte[] getRandomEVs() Util.Shuffle(evs); return evs; } - internal static byte getBaseFriendship(int species) + internal static int getBaseFriendship(int species) { return Personal[species].BaseFriendship; } @@ -267,14 +267,14 @@ internal static uint getEXP(int level, int species) if (level > 100) level = 100; return ExpTable[level, Personal[species].EXPGrowth]; } - internal static byte[] getAbilities(int species, int formnum) + internal static int[] getAbilities(int species, int formnum) { return Personal[Personal[species].FormeIndex(species, formnum)].Abilities; } internal static int getAbilityNumber(int species, int ability, int formnum) { - byte[] spec_abilities = getAbilities(species, formnum); - int abilval = Array.IndexOf(spec_abilities, (byte)ability); + int[] spec_abilities = getAbilities(species, formnum); + int abilval = Array.IndexOf(spec_abilities, ability); if (abilval >= 0) return 1 << abilval; return -1; diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index abc515ee1..22252fb1e 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -376,8 +376,8 @@ private void clickShowdownImportPK6(object sender, EventArgs e) CB_Form.SelectedIndex = form; // Set Ability - byte[] abilities = PKX.getAbilities(Set.Species, form); - int ability = Array.IndexOf(abilities, (byte)Set.Ability); + int[] abilities = PKX.getAbilities(Set.Species, form); + int ability = Array.IndexOf(abilities, Set.Ability); if (ability < 0) ability = 0; CB_Ability.SelectedIndex = ability; ComboBox[] m = { CB_Move1, CB_Move2, CB_Move3, CB_Move4, }; @@ -1581,15 +1581,9 @@ private void setAbilityList() if (SAV.Generation > 3) // has forms formnum = CB_Form.SelectedIndex; - byte[] abils = SAV.Personal[SAV.Personal[species].FormeIndex(species, formnum)].Abilities; - - List ability_list = new List - { - abilitylist[abils[0]] + " (1)", - abilitylist[abils[1]] + " (2)", - }; - if (SAV.Generation >= 5) // hidden ability - ability_list.Add(abilitylist[abils[2]] + " (H)"); + int[] abils = SAV.Personal[SAV.Personal[species].FormeIndex(species, formnum)].Abilities; + string[] abilIdentifier = {" (1)", " (2)", " (H)"}; + List ability_list = abils.Select((t, i) => abilitylist[t] + abilIdentifier[i]).ToList(); int curAbil = CB_Ability.SelectedIndex; CB_Ability.DataSource = ability_list; diff --git a/PersonalInfo/PersonalInfo.cs b/PersonalInfo/PersonalInfo.cs new file mode 100644 index 000000000..d623102c8 --- /dev/null +++ b/PersonalInfo/PersonalInfo.cs @@ -0,0 +1,151 @@ +using System; + +namespace PKHeX +{ + public abstract class PersonalInfo + { + protected const int SIZE_G4 = 0x2C; + protected const int SIZE_BW = 0x3C; + protected const int SIZE_B2W2 = 0x4C; + protected const int SIZE_XY = 0x40; + protected const int SIZE_AO = 0x50; + + protected byte[] Data; + public abstract int HP { get; set; } + public abstract int ATK { get; set; } + public abstract int DEF { get; set; } + public abstract int SPE { get; set; } + public abstract int SPA { get; set; } + public abstract int SPD { get; set; } + public abstract int EV_HP { get; set; } + public abstract int EV_ATK { get; set; } + public abstract int EV_DEF { get; set; } + public abstract int EV_SPE { get; set; } + public abstract int EV_SPA { get; set; } + public abstract int EV_SPD { get; set; } + + public abstract int[] Types { get; set; } + public abstract int CatchRate { get; set; } + public virtual int EvoStage { get; set; } + public abstract int[] Items { get; set; } + public abstract int Gender { get; set; } + public abstract int HatchCycles { get; set; } + public abstract int BaseFriendship { get; set; } + public abstract int EXPGrowth { get; set; } + public abstract int[] EggGroups { get; set; } + public abstract int [] Abilities { get; set; } + public abstract int EscapeRate { get; set; } + public virtual int FormeCount { get; set; } + protected virtual int FormStatsIndex { get; set; } + public virtual int FormeSprite { get; set; } + public abstract int BaseEXP { get; set; } + public abstract int Color { get; set; } + + public virtual int Height { get; set; } = 0; + public virtual int Weight { get; set; } = 0; + + public bool[] TMHM { get; set; } + public bool[] TypeTutors { get; set; } + public bool[][] SpecialTutors { get; set; } = new bool[0][]; + + protected bool[] getBits(byte[] data) + { + bool[] r = new bool[8 * data.Length]; + for (int i = 0; i < r.Length; i++) + r[i] = (data[i/8] >> (i&7) & 0x1) == 1; + return r; + } + protected byte[] setBits(bool[] bits) + { + byte[] data = new byte[bits.Length/8]; + for (int i = 0; i < bits.Length; i++) + data[i / 8] |= (byte)(bits[i] ? 1 << (i&0x7) : 0); + return data; + } + public virtual byte[] Write() { return Data; } + + // Data Manipulation + public int FormeIndex(int species, int forme) + { + return forme == 0 || FormStatsIndex == 0 ? species : FormStatsIndex + forme - 1; + } + public int RandomGender + { + get + { + switch (Gender) + { + case 255: // Genderless + return 2; + case 254: // Female + return 1; + case 0: // Male + return 0; + default: + return (int)(Util.rnd32() % 2); + } + } + } + public bool HasFormes => FormeCount > 1; + public int BST => HP + ATK + DEF + SPE + SPA + SPD; + + // Array Retrieval + internal static PersonalInfo[] getArray(byte[] data, GameVersion format) + { + int size = 0; + switch (format) + { + case GameVersion.DP: + case GameVersion.Pt: + case GameVersion.HGSS: size = SIZE_G4; break; + case GameVersion.BW: size = SIZE_BW; break; + case GameVersion.B2W2: size = SIZE_B2W2; break; + case GameVersion.XY: size = SIZE_XY; break; + case GameVersion.ORAS: size = SIZE_AO; break; + } + + if (size == 0) + return null; + + byte[][] entries = splitBytes(data, size); + PersonalInfo[] d = new PersonalInfo[data.Length / size]; + + switch (format) + { + case GameVersion.DP: + case GameVersion.Pt: + case GameVersion.HGSS: + for (int i = 0; i < d.Length; i++) + d[i] = new PersonalInfoG4(entries[i]); + break; + case GameVersion.BW: + for (int i = 0; i < d.Length; i++) + d[i] = new PersonalInfoBW(entries[i]); + break; + case GameVersion.B2W2: + for (int i = 0; i < d.Length; i++) + d[i] = new PersonalInfoB2W2(entries[i]); + break; + case GameVersion.XY: + for (int i = 0; i < d.Length; i++) + d[i] = new PersonalInfoXY(entries[i]); + break; + case GameVersion.ORAS: + for (int i = 0; i < d.Length; i++) + d[i] = new PersonalInfoORAS(entries[i]); + break; + } + return d; + } + private static byte[][] splitBytes(byte[] data, int size) + { + byte[][] r = new byte[data.Length/size][]; + for (int i = 0; i < data.Length; i += size) + { + r[i] = new byte[size]; + Array.Copy(data, i, r[i/size], 0, size); + } + return r; + } + } +} diff --git a/PersonalInfo/PersonalInfoB2W2.cs b/PersonalInfo/PersonalInfoB2W2.cs new file mode 100644 index 000000000..a080f2920 --- /dev/null +++ b/PersonalInfo/PersonalInfoB2W2.cs @@ -0,0 +1,36 @@ +using System.Linq; + +namespace PKHeX +{ + public class PersonalInfoB2W2 : PersonalInfoBW + { + public PersonalInfoB2W2(byte[] data) + { + if (data.Length != SIZE_B2W2) + return; + Data = data; + + // Unpack TMHM & Tutors + TMHM = getBits(Data.Skip(0x28).Take(0x10).ToArray()); + TypeTutors = getBits(Data.Skip(0x38).Take(0x4).ToArray()); + SpecialTutors = new[] + { + getBits(Data.Skip(0x3C).Take(0x04).ToArray()), + getBits(Data.Skip(0x40).Take(0x04).ToArray()), + getBits(Data.Skip(0x44).Take(0x04).ToArray()), + getBits(Data.Skip(0x48).Take(0x04).ToArray()), + }; + } + + public override byte[] Write() + { + setBits(TMHM).CopyTo(Data, 0x28); + setBits(TypeTutors).CopyTo(Data, 0x38); + setBits(SpecialTutors[0]).CopyTo(Data, 0x3C); + setBits(SpecialTutors[1]).CopyTo(Data, 0x40); + setBits(SpecialTutors[2]).CopyTo(Data, 0x44); + setBits(SpecialTutors[3]).CopyTo(Data, 0x48); + return Data; + } + } +} diff --git a/PersonalInfo/PersonalInfoBW.cs b/PersonalInfo/PersonalInfoBW.cs new file mode 100644 index 000000000..60cffb035 --- /dev/null +++ b/PersonalInfo/PersonalInfoBW.cs @@ -0,0 +1,95 @@ +using System; +using System.Linq; + +namespace PKHeX +{ + public class PersonalInfoBW : PersonalInfo + { + protected PersonalInfoBW() { } + public PersonalInfoBW(byte[] data) + { + if (data.Length != SIZE_BW) + return; + Data = data; + + TMHM = getBits(Data.Skip(0x28).Take(0x10).ToArray()); + TypeTutors = getBits(Data.Skip(0x38).Take(0x4).ToArray()); + } + public override byte[] Write() + { + setBits(TMHM).CopyTo(Data, 0x28); + setBits(TypeTutors).CopyTo(Data, 0x38); + return Data; + } + + public override int HP { get { return Data[0x00]; } set { Data[0x00] = (byte)value; } } + public override int ATK { get { return Data[0x01]; } set { Data[0x01] = (byte)value; } } + public override int DEF { get { return Data[0x02]; } set { Data[0x02] = (byte)value; } } + public override int SPE { get { return Data[0x03]; } set { Data[0x03] = (byte)value; } } + public override int SPA { get { return Data[0x04]; } set { Data[0x04] = (byte)value; } } + public override int SPD { get { return Data[0x05]; } set { Data[0x05] = (byte)value; } } + public override int[] Types + { + get { return new int[] { Data[0x06], Data[0x07] }; } + set + { + if (value?.Length != 2) return; + Data[0x06] = (byte)value[0]; + Data[0x07] = (byte)value[1]; + } + } + public override int CatchRate { get { return Data[0x08]; } set { Data[0x08] = (byte)value; } } + public override int EvoStage { get { return Data[0x09]; } set { Data[0x09] = (byte)value; } } + private int EVYield { get { return BitConverter.ToUInt16(Data, 0x0A); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x0A); } } + public override int EV_HP { get { return EVYield >> 0 & 0x3; } set { EVYield = (EVYield & (0x3 << 0)) | (value & 0x3); } } + public override int EV_ATK { get { return EVYield >> 2 & 0x3; } set { EVYield = (EVYield & (0x3 << 2)) | (value & 0x3); } } + public override int EV_DEF { get { return EVYield >> 4 & 0x3; } set { EVYield = (EVYield & (0x3 << 4)) | (value & 0x3); } } + public override int EV_SPE { get { return EVYield >> 6 & 0x3; } set { EVYield = (EVYield & (0x3 << 6)) | (value & 0x3); } } + public override int EV_SPA { get { return EVYield >> 8 & 0x3; } set { EVYield = (EVYield & (0x3 << 8)) | (value & 0x3); } } + public override int EV_SPD { get { return EVYield >> 16 & 0x3; } set { EVYield = (EVYield & (0x3 << 10)) | (value & 0x3); } } + public override int[] Items + { + get { return new int[] { BitConverter.ToInt16(Data, 0xC), BitConverter.ToInt16(Data, 0xE), BitConverter.ToInt16(Data, 0x10) }; } + set + { + if (value?.Length != 3) return; + BitConverter.GetBytes((short)value[0]).CopyTo(Data, 0xC); + BitConverter.GetBytes((short)value[0]).CopyTo(Data, 0xE); + BitConverter.GetBytes((short)value[0]).CopyTo(Data, 0x10); + } + } + public override int Gender { get { return Data[0x12]; } set { Data[0x12] = (byte)value; } } + public override int HatchCycles { get { return Data[0x13]; } set { Data[0x13] = (byte)value; } } + public override int BaseFriendship { get { return Data[0x14]; } set { Data[0x14] = (byte)value; } } + public override int EXPGrowth { get { return Data[0x15]; } set { Data[0x15] = (byte)value; } } + public override int[] EggGroups + { + get { return new int[] { Data[0x16], Data[0x17] }; } + set + { + if (value?.Length != 2) return; + Data[0x16] = (byte)value[0]; + Data[0x17] = (byte)value[1]; + } + } + public override int[] Abilities + { + get { return new int[] { Data[0x18], Data[0x19], Data[0x1A] }; } + set + { + if (value?.Length != 2) return; + Data[0x18] = (byte)value[0]; + Data[0x19] = (byte)value[1]; + Data[0x1A] = (byte)value[2]; + } + } + public override int EscapeRate { get { return Data[0x1B]; } set { Data[0x1B] = (byte)value; } } + protected override int FormStatsIndex { get { return BitConverter.ToUInt16(Data, 0x1C); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x1C); } } + public override int FormeSprite { get { return BitConverter.ToUInt16(Data, 0x1E); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x1E); } } + public override int FormeCount { get { return Data[0x20]; } set { Data[0x20] = (byte)value; } } + public override int Color { get { return Data[0x21]; } set { Data[0x21] = (byte)value; } } + public override int BaseEXP { get { return BitConverter.ToUInt16(Data, 0x22); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x22); } } + public override int Height { get { return BitConverter.ToUInt16(Data, 0x24); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x24); } } + public override int Weight { get { return BitConverter.ToUInt16(Data, 0x26); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x26); } } + } +} diff --git a/PersonalInfo/PersonalInfoG4.cs b/PersonalInfo/PersonalInfoG4.cs new file mode 100644 index 000000000..6e7d507b0 --- /dev/null +++ b/PersonalInfo/PersonalInfoG4.cs @@ -0,0 +1,89 @@ +using System; +using System.Linq; + +namespace PKHeX +{ + public class PersonalInfoG4 : PersonalInfo + { + public PersonalInfoG4(byte[] data) + { + if (data.Length != SIZE_G4) + return; + Data = data; + + // Unpack TMHM & Tutors + TMHM = getBits(Data.Skip(0x1C).Take(0x0D).ToArray()); + TypeTutors = new bool[0]; // not stored in personal + } + public override byte[] Write() + { + setBits(TMHM).CopyTo(Data, 0x28); + setBits(TypeTutors).CopyTo(Data, 0x38); + return Data; + } + + public override int HP { get { return Data[0x00]; } set { Data[0x00] = (byte)value; } } + public override int ATK { get { return Data[0x01]; } set { Data[0x01] = (byte)value; } } + public override int DEF { get { return Data[0x02]; } set { Data[0x02] = (byte)value; } } + public override int SPE { get { return Data[0x03]; } set { Data[0x03] = (byte)value; } } + public override int SPA { get { return Data[0x04]; } set { Data[0x04] = (byte)value; } } + public override int SPD { get { return Data[0x05]; } set { Data[0x05] = (byte)value; } } + public override int[] Types + { + get { return new int[] { Data[0x06], Data[0x07] }; } + set + { + if (value?.Length != 2) return; + Data[0x06] = (byte)value[0]; + Data[0x07] = (byte)value[1]; + } + } + public override int CatchRate { get { return Data[0x08]; } set { Data[0x08] = (byte)value; } } + public override int BaseEXP { get { return Data[0x09]; } set { Data[0x09] = (byte)value; } } + private int EVYield { get { return BitConverter.ToUInt16(Data, 0x0A); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x0A); } } + public override int EV_HP { get { return EVYield >> 0 & 0x3; } set { EVYield = (EVYield & (0x3 << 0)) | (value & 0x3); } } + public override int EV_ATK { get { return EVYield >> 2 & 0x3; } set { EVYield = (EVYield & (0x3 << 2)) | (value & 0x3); } } + public override int EV_DEF { get { return EVYield >> 4 & 0x3; } set { EVYield = (EVYield & (0x3 << 4)) | (value & 0x3); } } + public override int EV_SPE { get { return EVYield >> 6 & 0x3; } set { EVYield = (EVYield & (0x3 << 6)) | (value & 0x3); } } + public override int EV_SPA { get { return EVYield >> 8 & 0x3; } set { EVYield = (EVYield & (0x3 << 8)) | (value & 0x3); } } + public override int EV_SPD { get { return EVYield >> 16 & 0x3; } set { EVYield = (EVYield & (0x3 << 10)) | (value & 0x3); } } + + + public override int[] Items + { + get { return new int[] { BitConverter.ToInt16(Data, 0xC), BitConverter.ToInt16(Data, 0xE) }; } + set + { + if (value?.Length != 2) return; + BitConverter.GetBytes((short)value[0]).CopyTo(Data, 0xC); + BitConverter.GetBytes((short)value[0]).CopyTo(Data, 0xE); + } + } + public override int Gender { get { return Data[0x10]; } set { Data[0x10] = (byte)value; } } + public override int HatchCycles { get { return Data[0x11]; } set { Data[0x11] = (byte)value; } } + public override int BaseFriendship { get { return Data[0x12]; } set { Data[0x12] = (byte)value; } } + public override int EXPGrowth { get { return Data[0x13]; } set { Data[0x13] = (byte)value; } } + public override int[] EggGroups + { + get { return new int[] { Data[0x14], Data[0x15] }; } + set + { + if (value?.Length != 2) return; + Data[0x14] = (byte)value[0]; + Data[0x15] = (byte)value[1]; + } + } + public override int[] Abilities + { + get { return new int[] { Data[0x18], Data[0x19] }; } + set + { + if (value?.Length != 2) return; + Data[0x16] = (byte)value[0]; + Data[0x17] = (byte)value[1]; + } + } + public override int EscapeRate { get { return Data[0x18]; } set { Data[0x18] = (byte)value; } } + public override int Color { get { return Data[0x19]; } set { Data[0x19] = (byte)value; } } + } +} diff --git a/PersonalInfo/PersonalInfoORAS.cs b/PersonalInfo/PersonalInfoORAS.cs new file mode 100644 index 000000000..b71d8b218 --- /dev/null +++ b/PersonalInfo/PersonalInfoORAS.cs @@ -0,0 +1,36 @@ +using System.Linq; + +namespace PKHeX +{ + public class PersonalInfoORAS : PersonalInfoXY + { + public PersonalInfoORAS(byte[] data) + { + if (data.Length != SIZE_AO) + return; + Data = data; + + // Unpack TMHM & Tutors + TMHM = getBits(Data.Skip(0x28).Take(0x10).ToArray()); + TypeTutors = getBits(Data.Skip(0x38).Take(0x4).ToArray()); + // 0x3C-0x40 unknown + SpecialTutors = new[] + { + getBits(Data.Skip(0x40).Take(0x04).ToArray()), + getBits(Data.Skip(0x44).Take(0x04).ToArray()), + getBits(Data.Skip(0x48).Take(0x04).ToArray()), + getBits(Data.Skip(0x4C).Take(0x04).ToArray()), + }; + } + public override byte[] Write() + { + setBits(TMHM).CopyTo(Data, 0x28); + setBits(TypeTutors).CopyTo(Data, 0x38); + setBits(SpecialTutors[0]).CopyTo(Data, 0x40); + setBits(SpecialTutors[1]).CopyTo(Data, 0x44); + setBits(SpecialTutors[2]).CopyTo(Data, 0x48); + setBits(SpecialTutors[3]).CopyTo(Data, 0x4C); + return Data; + } + } +} diff --git a/PersonalInfo/PersonalInfoXY.cs b/PersonalInfo/PersonalInfoXY.cs new file mode 100644 index 000000000..2857fcfe1 --- /dev/null +++ b/PersonalInfo/PersonalInfoXY.cs @@ -0,0 +1,26 @@ +using System; +using System.Linq; + +namespace PKHeX +{ + public class PersonalInfoXY : PersonalInfoBW + { + protected PersonalInfoXY() { } // For ORAS + public PersonalInfoXY(byte[] data) + { + if (data.Length != SIZE_XY) + return; + Data = data; + + TMHM = getBits(Data.Skip(0x28).Take(0x10).ToArray()); + TypeTutors = getBits(Data.Skip(0x38).Take(0x4).ToArray()); + // 0x3C-0x40 unknown + } + public override byte[] Write() + { + setBits(TMHM).CopyTo(Data, 0x28); + setBits(TypeTutors).CopyTo(Data, 0x38); + return Data; + } + } +} diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index 9e278c637..9056c20f0 100644 --- a/Properties/Resources.Designer.cs +++ b/Properties/Resources.Designer.cs @@ -14635,6 +14635,56 @@ internal class Resources { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] personal_b2w2 { + get { + object obj = ResourceManager.GetObject("personal_b2w2", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] personal_bw { + get { + object obj = ResourceManager.GetObject("personal_bw", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] personal_dp { + get { + object obj = ResourceManager.GetObject("personal_dp", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] personal_hgss { + get { + object obj = ResourceManager.GetObject("personal_hgss", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] personal_pt { + get { + object obj = ResourceManager.GetObject("personal_pt", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// diff --git a/Properties/Resources.resx b/Properties/Resources.resx index 14e9b3472..531ab0d6a 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -5869,4 +5869,19 @@ ..\Resources\img\Program\showdown.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\byte\personal_b2w2;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\personal_bw;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\personal_dp;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\personal_hgss;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\personal_pt;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/Resources/byte/personal_b2w2 b/Resources/byte/personal_b2w2 new file mode 100644 index 0000000000000000000000000000000000000000..dbe6c87e3eea722f48833ab081a8a9167447b9c3 GIT binary patch literal 53884 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 J73HY2`VUb?Ug7`% literal 0 HcmV?d00001 diff --git a/Resources/byte/personal_bw b/Resources/byte/personal_bw new file mode 100644 index 0000000000000000000000000000000000000000..78c862814ee2345d1f4a00bfcd04062daf2dc8a0 GIT binary patch literal 40080 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

Wa%2wmvx9{`sM6g3 z3f`Y0v5jisS*N|pv~f$?s6d_>uiH80M*i;sQQ& z980Vre)60vC!s%69OJ?p#Vxd#BpYK4dyRhRv8-bGfP=Mmb=4VNbpEqjXNgVQx_6M? zyR?GGS_z9YZ4g)BV3#HnRmo&Ig0p~$b;h_asw2YgH7Uv5Qp~clkNZfIjJ0D(<frEbpC1D#4n-7;Q|Dw2n z4{MdNWs?yQwh{T;Xzb(I4}O6O+X%47J=jM5n(+7ylwT&s=9x{)Xh)Wf*gAsydKsF zg$7)m;R57jI6QCu<>K*tnE^TZcP!R=V6Yl7WBYl^rE6sJx|I#V&JeS!G8#LCp86O( zIR>`SlOt@jn13{i?yrG`zR`N%UZVRjPtA1N8&BeOsW_{oWPgP7uN>atAsEI`>#+(B z`_j@Dy{FZkN02!lEY2saK)!}NZ-mkO9p^kJ+mq3|@Q&Bgcm^-_|G?6Bg|Fq6gMZyN z#2Sw8xZxX4KPQto91Zr#5*dp<``*iJTRmTbxu3(Df;DvHVl#H2XrD}{(^?}uZlio|LjtR79)naN=3S=m?zFKU*};_XTF)I{XrE<82)#f#Q^by1wz zmCPGKoJZlI>&5zM9UK@No6Kbnpl5vPOjHk+axOM=2V3q> z3%>?oS02o5GU)wfMgKx6R>X}=^tW{2JoBOB{_k2st&V^A5&SodQeOaB#G4As?3NT#9X=%fLR#E`@#a4~W@51Kn)-Tb=Iv zjx9afmERSK$g{FPz}**Uui?s3$`37P=MYoWGRTME>`S#v;fp(UEnBadv>sIx85Fr5 zUFWPRIM>C`R*c1N;v`*XB%n<3PvE{u``JE=sIJ)coJt%LDu~@i!G@g96vN3 z+?sMHV+Q5*xykpl>`Hs2v1WQTtzg%xQ1obLq@H zoRLzT`wq5WV%bUT7l!zwmc&+iu-K*GWTtA+b>_myhzo*0WuL7Bt1Cb^N4}V2XXyOc z>NCHj#DmRlYBjrB>C7JoOLGDK!Hbs5I;Xx0 zo@`SZA}xF08rfZk_X!@g$+G#kZN06jDPXVr^ebVZPbTL`Z1Ag)?JGEZ1bbhHUU%Jn z#q%g;nfjE3UTx=D3#`bqmc0y_gLu&p<}l97#hFeJ12xtp;@%Yg+OyVt(*m~08>6rX zQRnwyzxpKh+OFIUeK}x@I={fWYd7+6FJh?x&f491)9JD+Ry<=(4cc^**`%Q-1Bfed zR#l3f_W7E@$5c4Ztu1FU4*T;1llLjJAg`S55zFEznq6IivMSJhgS~;fM`Qm3Joy^e z&dz(_7_gyGd#y9R*W`9=$+d@Yiei(XgZV4o;|bOkh4P&*X0MjbTTzeqcxvpQFJ9&9 zSJ&*wZE4RTUddfkMqx$1vlgDa;_97$3+%P0im|oV&O_p&{_GwEOpy@lMN-YUZX17*QNW5dGrXrLI_rsCkIesk2zSxGF{F-TN!`l@N?##`}l8mv_4OCQ~0~OFLzT< z#!u&&JL`;S?-3^#5Aj!3h}%5gy5^1C(C+@+v0{7s26Fj_jBL82#t1QT5%#aVcf|yZ(Pp-?Zk4<47gnvx z_4hNxxuw+6IogL6=&_V3z5A+n%qug44nOOs>JFW%D~YeOW8?%Fll@QUck9-0&Kf3c%&v;J zuP7eo&tUVpQ+e^8)-#e2a?<5{TL0ha8mqe|FUSUv`w+v;G=GcvgM=>T4^DUyIVMb- zTa05gmgXlfMPJE0zCVkFJr>wYGtP3v3b&-U_on50)4cD8jS*24WeLS@%^EXi>=5Qc zZ{d@%d6z<)6Ik%`QdX!RD>hFzKeeIjQx$lhNXi*s$oAr1Bfy>q!}-RH+qALB@BSZS z5fA)7#=-{mKgJ?I^#4Cro^gbDGv$+K98o|2xigL=mSVU5r&x-e{vTjVd|tmmEv3(E zDSTd3{+!RNE83OZ+f^psLH4k?8|yyo&*TFVSmgHoDIZXwKi9u%6!B0qj8`s>WO_nv$1IsbF61mXYvr7T&Z7)Hdaqy!IrtE$5EdP)pI@Crh_ zq-kGJDi!0kT@Q-*OiwoJwhioO1^=JJ+8aCUY!=v;g}_W~Lu=Cj$(12Dgb%N6TxjTO zD5MxEf^r?AE$rWkK>OL(rNSJ~h{<$Vky>Hf2Cze^Nqye~+jdi1_Re%jRQ`!ZGhOad z^X_x6Zyma7)`p3CMzTrJS7+@^M%O-Uz3p~ifH2D7r+USZh4 zey-F<;P=CB=*YIEyMa9~L}p^|+0k(>C7lrmzha(>;zLDBC>0ffz<3iIny@=&3SMtH zTMPQ`)R$VJNtKm>KyGcE{cnz4^{!Z5QBB(ph{{n~i(k5O@x&n3*lZrnk5$yj4V_+k zs+^Ei=-?f1Oihss9oUMq|26TKQmH1OgE!Y2pMr%BWGpjYhAmr)9q=k&4r0#Ua&=h4 zuyM2L#ld84O+>zWk#vX$%J=1W`9vXpDna@->sqU- z3S#c={GY{k*wz-)6h!6t$t$rYmm75DO3M>#D-(h+eq9RKGfZEJRtV?E96~?wAg?IQ4))-@B^E-2FhGS$` ztrA4%D|sN_oQ|ELZ$huvTCR|MzVQ#!e)}2M!4G{Ps5;Po?&V}&^n85- z^AA?G$51q%&-t79l~|LogW@_Dt1WI^Aj@9wZ&va>^bYwm|NIRC-qtR=@Yw@NLG;Ai zm@hGttCwq<*PFYCv=;=z#$xY|bvABVZ>7CHDZ=S7k>Xv^I+f~jE#42?e#?#Nv;`f$&s>Qx6-zqonxccLG$eFG z5Qf)?!V#feI1xJN3j~&bM8MK1&;05CTr2Gf*Iw7h)-7YM)6qN`@;1u zcK!m{P~m^anp46<_;Z5n%s+?OZ$sebgSC=4N4(2q6S{7_m2J<4Le`Th-!v>fU2gs* z!-nqaWY}JKKBZC+o>! zl@(a9>=nnCrRb~f9=cXw`yzVv$lz|jD7t&zvQ5XZyrT1W`75z)92;`6imFK#&du>Q zvMjcTyd@hj7L+tYxRwtb=p&IeunMU?C^o zO6T$YA)K2Gn=rLXMGHj6OrOvxY+`%JTQYZ3j<6+7X9trFIJ-YKhh|jI*phAsB3Awb z)3Er6P{YXR?=B`^af|KRmTd$=!Y`h0Lq5aV&a#-^b=jur4)2U3`aYdsuW z&ar0G=LhL*iDM7qIU%hwlTfhd+f#V=+v1*Y<$k?v=%=(Vj+so~gstXO)8|tU=dZ+? z9J|iNVvQYHhOfS!71ACgqcu0p0OKfdjH;?hqWCv506GKymT^oKopO*?ImAgbn6-2^mwcSWW&E^Wz@AqFdhvYT{+7FH-#W`^BY|lGAb|!0MZ~i!VCDy!~ zuvZ0vB^}_+Fu&pO_>C#N`}hma0T|)JIa5Vf?p3EZDVs*SrK!(wP^H=MQicD1dPoa z3|@0BjcviumQnAC2dvs9eWWhMFx@#b8qGdHYw`YAn0ju1IvQ2KL;Gz8_8iGQY}LDR zO-Q#f{<(i5?We;-}xff;r+07w_#>= z_?;76hiO>yJCIxSJF=WG)oj>1)=mBau^jAd)~pY)3?i#u4QxsjYuh%GhPG*B?OfQa z|A?Z^8Q2{h8*;I-ovn~0zi)gU#RR`5U+oQruJ_X#R|m?@?UeEb`w4E7TBbLlD1KjV zApU2uc27ak48KqL7TMW!xl2rvJ6PE4%2m^vW6=5bPzu-+?%q`AkR`75AmUp zv3jJe9gbQfalB)DNGM|Oyu9U|+DFcWjspvogvx}eWVG4Av72dM{HHJuUmXh7`N<~Z z1BX82jS72f%S}WcI4|{#nKNex^+#zmGq9&Pw%)}y8k)WW`&!vbtLSC=`ut1Tev1d% z5rfx?LgTrmG@3+Ou_#_2+eTQ#sn7wQyMfj%9w;lu>oxdL(0gEJI^;e=HaP>^2JCL1 zh%=U95%ejF3ICg&JcmU8;t!K0W!1U+gyhKyzvGy;X=cJP>zni`^HK1>E_MgU4!SCp;ALCbIcK}};aMJC>m}=KePv{-7Jfd~q~*qU^kQS10p*imGIKwGywhi`Mwvun(N~-nErs zbwlqdSS4O%Y%%oG zV}mYMmej1KA;KX>`d72fkU4W7YlpiULNo0s(H{xj-wCf>Er3xA9Ac* z#LBj;E0L)45qHkuCn-kEL2`V5)8}W6l@{WSeFsQRCX?3sjYw4a=ZSS=Sb7&f&9SnJ zRn<&FR(-y)O(a+3zQl8V74wtJ+Rwe2JSqyuxu4YS9!0f%KI`82mDoPQ9uwEPST)zQ zDba&-=&$&k30UJ`up~!valW0R^Eg#Jhq^bcXV`;$-8gpX%~PzmZvW(3c>Gn@Gy7e3;d6b+>^C0gXKZ&NCo782ub-W; z9e)wKr0>E@eaXSVtH*h+_eYQdiEixuaZ%_I{#|%SraViE)7b93{HM439@!JF|8^fc zyA7>Z&&rXA^3@3)1lU6t?P`kc!*s?rcCq-kJ7YVtjXC=U%^Ax#1&^oU?qRIOJ(#o0 z$-&TlM@=?ol5FZG?TZeQ^cyy3Vzl~JdguC`0M0CA3D_4#CY@0br#@Ud1v{T($?r(1 z0OCG|RaWcG3GAWQJ~6r9B9ZC^qz{)1>x7S@PwiWbHN=VOPfX02Fo9)q1rcWl!!Bn>7ZNb-fTJ?)nCd_$C6L|1F%CW@pyS( z8|fe`hLg=jqsk!J~4)XvFF{f!PdRrHMfx` zjGN^z;(V(K*0wS}%1{%T-b^g2+$V^Kg~P%-Y+ppS(>&by$8z|nheBU(;IXICab0&N zJ$ttDr93`u@ia3m6eu8udEvs3IS0b`g^{`L!`U>r%)b@H)mROVT|#1oYP0>HYm*1& z6k~9sKbzLfKtMU;&TpmZ_j(&|XZsB?Vv6nK)(6S|TG>pGY{GUftYNai6Hp$&@{8KO zOZ)pILA>Fp`2t}pLYf_`Kx|);V%Xh&(;taeW3I1!W%@U?>)EiVyyEJ>uvZC`MN>VBJpfdEnSN zEaq-7JC0L~Nb5#VHFV1Tp>KhnT0AdmHa{o{z zfvlWW&E|~un~k`-^a-le|wscjtt zZ|?R5oMYx!h^0B&V@O61;?*Of@Za&LitNEtwwP9NUf)x1_eq0d#I;E$olR%@W1{yb zoHHM{6aH9i5#v^N_Lc8@pv@-^3a1hz*8#ZSnJs#M%43)bEL*ojpLwv&=aoG!HtRV3 zs0Vm|_AXd+<-XCjz?`5fcR@-~RkgHKSxx={K2=Wm#VELKtYWtB)z8eAFv@D4^RBwd zFijKK`)SVJAG>8BgStqmsQjGrtRnVW#-Dw%@72?nw;l|veboE|tY5gJ$0-~^9OeCm zt1nJsHV>HJ-@fywx8MHU;Vo}Guj8nXgCji8VteY{YCc8ml0ey67t3^TYd)c=HJ=Hrx#ZmI(t$a% zzG5;zsT!$;^$k?>;b#ETS6t23m})*JrM!r`6U$=_+g`DqrN1=BNk2pDm@mIq#}V zZv>KguP5HsL4wljQ;wp+=64bo|HyP~-=*IMz^~7WcU_>h&?QN&T~2id=5}1(Gq%)W zezJUY&n{n$ui=#%`ZTMm=K5_^XP|E)u4Xlf*ixOaCdWoxEJ%Az#<@AZ%#H11rVr<4 z1AVW0VAa_@$$fS4T9dY>pe2w^_XI>|z>V#vVowqFV4YlR?xm;7x-7{u>Q2k}T0jSq z8zak)2b#VVL@pYSw=o4x$CPzF;B^MLkD9^Ce_ zyvXTpJDs3;u;$NSy?l9iHqQ(H8_VA!kx)XwhglV|y_7<&gYWtN6)RS+Umu=reTh_> zf!)EeI4_uGRmd?tkwAV?mjag8MPe}=0QhRWZ~=1jR6}87Q!B5D(HalW6MRM9J{IG= zeeJ-fzk4lg61fw@I#Mhq!yKQumaj4K;J^yPec(L@R!+kvDvS!*5QMQC+&#~*TAWq} z*in)jhg=e@$!Xc{7DQ_YU$-h?eF2W0cWULEf4g;GoxG&4h89^?71LCr;@CQxC7zS{ zeAhJ4y2%6D=$?0cHSr~v!}OV9nVF0k6|KKZU5P!#vGS733+Y1*B$J`cp8cDZ6LL|< z!JI)~K4${01)B#Gr<<+Mo}IggW|Zl`v4EpS^#eY?{5*CnOY3!T&c8q!PQl`vh|hqf z8WoSvh>Lf~pFPLVq1{utw$@eCxOlTdl`DuVUcpqL+LuoZES^WP5&04U^DD%=SiF-} zZB-?%_%Ksp0!t&kZ3kfo5tneRneCM%!|ylt$4Oll+lNB_>&ZVXh?bqR!ByDLO^nTS zvhX|KCVi)HuX{-@aj)Q0-FPQ~3^Jib#BtXiXlwz>MKEW?Bj%;j8k_-4K@AzCVnoE; zV7{mW$KunOSW7c|v~)yNzIk#w7Gt9vhvec6;BrkZEyLE8t*Ii`2jAC3dvjj&(r*jN zJ)*a|kJU{j_KHM)(@3*)lIDSGC|ha8!>fa}ZS$!o5md5}+aeAn}c zAj%DWNP;2P=s~1fRt79{epMje{C;5JHsfs_-xaDnV%=Sx?A+ATbz9PPWuo-)6nz!? zCQwI@G1gX&mXGFl`&-1j`5BP0Y$@9lj+!GAw)38xqps`ebh@NOIpm%Jl?fl?jS#fR z(L+xcPIx+M?&dLV!`cS?7mdEQ%Eu;c9EnLRhN0|ZDoy)qta?Rt^$N_xwJ z$J2m#W7y>P@AocrnS5pm-i8xGONu+nEF%?SD` zUnCv=b2``7#<@1Z9HO*OeMfpgGxXc94 z=gmUaKrS7uoXkymE{$(eE`9&55z3{%NMoxAUG#@82K-}osqbMr3)wvQH`1KN1C>LY zv4`$**TU{clRzfmnV$2mNeY;5s*9Y2KU?Sa1!)9F|!^A0H^&cN@jDM@@Fds%lO`?Z9sxiQ}8x zmrP(!Eg85+5+9_R1lgGibtNh0dyTOi42yg|(oQ@j^aZu zcM|&tjy>aIH4P@24*T`HDYpL|vj=gOCXwxIe`fAjJJ#4fX1+i=Bn-H-1kSf9V-q9V ztz-|ipDh1;Z8C*^7#{Cf-ImgA;d~q6d!FV@jQqu|qz_^1leRZh?Q%?-Vi`(IRGv-I z$7Bya(Z3d_0-c-SVUl@qAL;?L!wlIp?So;l@)-Ah;Gj{wuMU&_W_!yAPEtO9)NG-V z8}>m{HiN*%@eXo1jn^bhku+_3qZU5#yjHOwLJ))2jW zq`uj^QQX$a*3EL%Opjd_QqGda&cL>DY-n32TQ>`&ZYC2hRbKKzCFFWE4@F*X2G{23 zI?TuC%iT*Ve4Almlg#&_b~|8CSz{-c!y5a1`u8XoDPr*mtVM&#v74XZHHozC=-nBN zag^&j4jn=v@DF&+|+!Af_S4(lASFdxWs&_yoCF8ts-GnAa7CbNRcSE zZhn8oZG2_e|C;yNe5= z*mL(M1u^v%j#Z?Xkv71~Z4x|1UM>~`FGu$KWcjFPEH8f5<>i#-c^Ly7Ki8M@ax4Zf zP>gs8yj-5eleDOcHLt_e!0+6X5>{h5h?k4Su#NM;28fp{Pz{jTL&omTGOq1RT&Tt$ z^bldr7T--e%Y*C>g~i7)+XCfs*(;2Xa`_T) zAXE7giRn;(s(JL#(ESPdLw$4UndmPu4GnpKk)pS5e=0T#^sO%G2Ty?hoe|z6t0JCE z6Swl&{Ci-(3GBxhS7D}&9L1^1%O|hEE^X}xPw-q+2A0kiMVA%o?Ev@5?4b(hCgU~m z8EUKtU&q-3u7b(c)4G<{Lmp*_``@Y9N5Pj62jUswJ#co;w0lfo|A|d68(UHCw_Ltt z9k8T>YSOuh{KDY-nB;oI)tnPkI}WDEN4YVrnKo734EvPN@pE$q_FRhcA)GC60YbLN zLH`-B=O=Y2%H=(>gCfo>)(4W%5(!BvD;w8Hhc6a6kPP#EQEUvq( z?mX#G#3J4yKiS5yp>5ok%$FAE(gN6*o&vVW!!&Iqzk{AV^n2!UzIAOR|IlWx%BnDJ zCqI>k0Tz#G?Bm#3)m<#sP?SVPg@m5oWo+4)zO1Jga%R4ekRiW#m!4ieh11|@^g(+E z>KBia6{7Eo^$M@yoPxP(G@qR8yLwN#H2E`LsBapogFf9yX}=ZaqIC*SLHs*9I7P0E zoJ>~3k%=4<{TgCPbv>-l-EcffscPjQpA<25+m_4A9PkC%a zd7AI}so2{-sR8>C^}sQEkSR2hBGAE&?IG7+Qp0->N}9m&qsCg>#eB6%w2>Ss%YBwl zD9N3`wl=+yYQF!4nm74AcCtE7&PbW^G`Go_*ptl<{i^QGk3EQ?3bH1pCD{I%l_|XY zKCLnGEci(*`OKbP?9G1aS604~zY;s6rx){^)}*jFmLj?Aj1@%c6^8m$4=C(f15SbW zLF;PPNSmn5jKrs7VX&xo1N$QNReY4J@S4g>xU^{WHzsLFaufb=_?lXhD-S)4o~J#O zJJFUG<|h)WfxfHUK^{N6A9jsl*!`&GqvxNdWxCvRB=@klSj(5CxS=)%!e^RO1ZDdI z$v&I2+GW}Z#RTyNm*3Hoy1fxOdY*P8?_U?aS8;5gHo|PZ0lo-wbXiZxI_$xqcVi@1 z43x}ua`2TU=jh}xG`bt9`t4MGd9q4{QhWMj0>$S_h02GM^*TT+{1ZN zf#d>@tZ{Wu?+swik2gzXq9=x{_h0dCtLSiX&7#QJ4_ zVztE@m(w*319T>A^MElO3twH|$FX%wc;B{ap*P7WD^WheYZALF6X=Otnx(i}iI)G@ z3(b2rChpogheocZ)2gNggB<%D=?fhiuc92Mdh62H@2whK9eTZs@fxa`1*Z`7k8UG7 z!`KoO_knZ7x!D-#7&?!6C_CoH8sJM*HRyL9ioYke-Nl+cqsUu=e&t6ES75bWmtMMz zx(MRFS7={IvZl+LCpx+%g?Hpjs2Al1w&x!oD1XzC21B*q+{N-NUAJuA@1Hj9r!+PFv5DVXJS=dL1SjbJNyvs8piK{)0O7y zd&y5~BaBaN>|uM}T-YQpZ1Q?vvuIzizBVx&PU$(!S?$#txFAnKi1VB`yRJi9*MWYy zV`O!cShC65P1;up8+5UXQ(+ht;j-5@Q!Mu@tZ~90iF|w@u`Kj`O6tD-jwXyi2U?y}ETt)wVd>^CtK=elzL>N{D7Cb@T<-wnD z6x~5TjDC*vg`G{s?%>!#7mMHlHHnaKe6!%8`wV20;9)vx1`&e~?IeE3jL{`c;I?ZB>exgfm~W3!{t z@tbMqzCc)T=8G%nojlZmGuGps@1ETt?QN$g8r4VWWS@e?S}Zu%@g~mWiGCQIZ+O8+ zrD>Mnf5}G$D{drCObN{Wua+_N?0vJ7@u^By386mDUJ=;4}OsL8_t#?d#i6g&VawcTfxrakL@c}ez5NfY>j!((3`-nb+Kw% zPNdOGHO4xZ;^6HQ-jX1O2|?8*O)r)rC#%W2_S>tY^D0uNe~a>=8Q50BK6FD}w&y{5 zs3K!0Td12()Qr8fmJ&{Jum`n5LmLT zb-g+$9^?!x*7zB%o5$}j6NEuQXiC2Q+l$F#E#8q0tWRuRRyVRb?q@wV!JmnK>OH`; z#G{*rB1zok+O~oDK2tNyOxhn+hRF)sh4D($7Yc!2$2<8CbDwD+625=$5gy9{2smMB z580DgypvB|_sl&*;)NnsZCI!;S`hY)-Qw;c*m@)q`FIX~2eBvTqujHwr){0SzBTN# z9-)zP`z0*R8DdX{#k#S*xzIKeD)#1&iallUQDU)&b4B^tGtyB}L|-OMRA|nj8CwgN zJ^U!?3%OIVpW@g9uXC&{Ynp8OqT?%QC%}%`d5n3$IWG^d9K$^9ZFJ{BH@ht}=ZiYu zp|AeO*9%v*Npw-?9ugy(&`3!OlSX{?0OTwPM~+O0GXZ$mECl474^ zvyEDkIHi`9!p)tIX4IXYqIsBsZ6oZSj)iXBsX}%tC8wkW{sDqtbmhVx@J>#aj|#xn zxINRdS*X+tB_+;N#Df>H=r_W<1-r^Gr+}^dAKdqSbWO+7wVNX1na9~s8L#Z2IwZ!{ z(7I|MzZH3RZ5O*!Y#^7;z*nPA1}i*8SY9W?zL1CJj(WdbHj!shCzS=RLi)OE>xkw2 z{zcv7AGYth@Yv<%>hh1jwdp~6YUb*OtFJ~)t-pS9Z^mK>%K2L$CSORq@ruR9ZlDiO zv$G`-y0(|>Ec@i#5sGP#y74;l7QA9H>v?+04D280epNtB`-Iz1YszY+rpChKEGA%f z=0(4KFWd8K2RmbnT#%!iie<*axx71P$Qg>*oingKwqs3TWV{aDoO(T<4b?Q~SKRz7`Q<{m*?6g@z+t%tzV#3ueXv_I$&8 zVwV@O*)yt|_4~a)BP{$n>ji`k*iqHy;g>c>2mfmGVP3Pe)vTI56N{l2kdZbMSlGj@ zJ03pW5*^(8&;$IAf^7|})^ITB{YjiAcv3F*MYZ|x>GQx=9(J*aqIwFYQSSvV_nn-B zK0Npmyppdx|Lmcy6(tLn^zDF3g6-h8Q4hm%11@5r!%S=z{fNT{!(so=$$LNt#%;so zfW4RL3oiZvmm?iM=wuzA&(Hb>i&!{hyq+}w_e+u@QwknD2uVfk zdggzh>AQ6La`Z^xAHHb*iuMra!Lb%U@uCwOz1X=d#ujJsL;b0Tp9T*euCMH)wn0H1 zR)>dG^dtU+CI8d-b>)}OzxDmk9S$Eqyo*Hv+L~0ALY#SuO)uxnXZ8)&cQFpcx;b5| zG0vRlu~oz=yazUOXZLa|9q}nIe}Gh)l)D%H7d?jU{ETIC>sQpTT2W7&d1?ad54H#t z(>@w)KRZ%|-<7EEIz;(qs;#lTt&uqM6q_^BVJi0ZDsbk3 z2Jr1R{H_GB>s)Np(k6M;a&YD?w5nWR(Z8De9o$(ti94i%d~qY$PO4>%+P)sx&k4*? zlH8eCk9_ewOjNk3bF==5+rmNot^~84so0%6P?z3%QoQf@#aC$Iz)zwb5HaoY6yAN8 z;wbt(1;OnFEZ)ybkb;_}+UO^6e@~%^MUOWWoXKUTb0%5`!DSw&?KX+!yiqxmTl_tR zm5N-IkYS5c`VmEc=bcQ4;_oRexX9w24Qahq(}nQvoxzDdN5Ya0^VshxOuN%`#4Q(lU=)X*7Y!SPLAz9DA6emuMow15hqsTSr zKXdQ!?ytS;zYDILn$zDM@mgoe9wzg7fv~MSpO@Wy zes#aR0{1NaQ)5q$=XPe34eTyV9(Q55PrdaqeTAU{J0!k)ou0% zr}VF*n;(k?gKbFSjt%OC=qDH;b{EI~)WymlQffb>pf0kC zA~MV`t94+FX(P;d=_}K<8@dA#<;xV){!#!3f?kx5bB?sNc~lrf4{`(VpES3sEnBIE z@@2}iekp)kp}rN)!_4?y6iKQxr8@Ab%_(6k{!}qL>tom%Dxf#1OSZcp_q!BNzC}8~ zCJ|3!;IOlOgUNlk6VJI@55>dJKuzzynxplSzJP#Icg{qoH=e9r8l)jBGzYUG)3&EIJT8z5&zN>3+o#iYOYH{-*uQ?yqLaW zeFt$tQ{yxG>=PYpuDxX=a>#G8uTIDAC`VsVYNB7x%C_|CEyzW_lc%o&n*|4Q8}A!z z<9&l+w{OrL8imuI{*rbdUqc8ODT5^Ottcp-+eHdfQo6BI;*d9j0PU zj$O30Qzfj{QlGA04j%lb6yALgI$#-s>c`0Up>O**)-5bl^SfNe`kT6!ZG+9TwIJ+4 zV3%`j-zD(BgW+Ix7xOzHVY<7!k>fm1k}$SnZyo829H(%itfS7&akBl5t=*02?|Z)J zcc%3BwekMGklWw4M5{~J&4a$JDMF`H{u>Fc8&h|sklI<#=BHr6 zF#+rTMuND|#VV4j7>EgSHwc&(p5w6C2vf*&9M43K)7-rHh6M|}Wv^`@9Z-*D{F&zt zT8jqMZtI&p1@AU<4jpJ8`|#?UT330?^naqYn1My@mayS%ZLI!w-3L0a{y=9iI=JJ28G*i#I@jx5-s3Vl?p=ZRsdp7j^Td1jpi#0Wb zv*=vGm9TLS`alE^-5G>mkF&fRz1XOs(EV6aL0E4nTW+Zn(8Ect4`&wZ;lytt;cYyM zGZuYJ#TuY`%l5=A+e^x_$H?zMU)t5%-h19T0R#(Yh&%q9w zhf2?GoEO31$2SdQq>o0+f48>zz83M{IFHzIhmr0yydLXm@(;jbUl5k+S&z1H>2%kjJv_ zId(5!O4Zafn5)TwU4Q-hE!TJA9QsoJN-W*W2e!_|Di!Dv$f3V)yL-+6DCLR2ql6yEG_0;YWItNTcpu)JOVw%U`*Dq^8-c7o6Ea=>mD0qAziO zdtt`!DfFZ>a3`p1{XKcNce?{USO`AD??Cq+EP&1Q`K6yt#E5kNcqjSaV$6m6$E;44 z&GxH3Y9u0Eh(j*-Q6-aiickGx@*%Nqw1?T5_372%((<;M)G@E7@k;O$EnKdo!(O>|8H=)Gx@>V80db ziwxo{oVYJ?xrRpGxxO>Ab9q3N*xkvAe)}GpLDU0SzkTty=nQnl>y#J17$>o~Ur4>~ zU0sB2X#M1I+$9k4n?;OIMGL)A$i!mGixig>vF+_-JN&MvAfk@LuvVr&qgXysIvFP@ z*$(0}w->vO_hLJ4FLqDCMw39yr@l0~78AX<4ASw0ofY%2lZ3b zvp1vG+{SCon;++KwUXVh82b@FoG0wNahdl`aGChYj2_#Jl~~W`q0wpTT@(T#%o)C! z{o}(=i&cACo>;=q3st>wOXkMeCCa`OW|WVO_59=C_??l*yo)^L@pg{2tU|^rfG0Q~ zXU=-uKFIkJtW5o>@u$m&?)QRI2$LMUyBq%zmU?6%w}=JTR)6``X;`b@?Cr=*nKpcw_R_KzdasxwBP^B?stgS2(cGo z8Pvtn2mJlizyE)*>S)FAXa(_HQ~5K*QFzVdxm5G0V;&`}YwJZjdpB&x8O_jr-k+Q# zQIl(of6tVwZ|JUFnGX1rFURrej6BwyJ7$m3oglv7^y@RV*JlDj<;xWJU4cc;3+#$c H=9~X7cz*pd literal 0 HcmV?d00001 diff --git a/Resources/byte/personal_hgss b/Resources/byte/personal_hgss new file mode 100644 index 0000000000000000000000000000000000000000..c69332d5028974e14cc882d6bc9f147930d80ac2 GIT binary patch literal 22352 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 literal 0 HcmV?d00001 diff --git a/Resources/byte/personal_pt b/Resources/byte/personal_pt new file mode 100644 index 0000000000000000000000000000000000000000..47154a84f0cc5ab932d8d8246ace4d00db4306e4 GIT binary patch literal 22352 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 F{{q+yH+KL4 literal 0 HcmV?d00001 diff --git a/SAV/SAV_SecretBase.cs b/SAV/SAV_SecretBase.cs index f1a0f5ba4..58db065ff 100644 --- a/SAV/SAV_SecretBase.cs +++ b/SAV/SAV_SecretBase.cs @@ -411,7 +411,7 @@ private void setAbilityList() int newabil = Convert.ToInt16(MT_AbilNo.Text) >> 1; int species = Util.getIndex(CB_Species); int formnum = CB_Form.SelectedIndex; - byte[] abils = Legal.PersonalAO[Legal.PersonalAO[species].FormeIndex(species, formnum)].Abilities; + int[] abils = Legal.PersonalAO[Legal.PersonalAO[species].FormeIndex(species, formnum)].Abilities; // Build Ability List List ability_list = new List diff --git a/Saves/SAV4.cs b/Saves/SAV4.cs index 5356c733f..e28c88812 100644 --- a/Saves/SAV4.cs +++ b/Saves/SAV4.cs @@ -26,7 +26,12 @@ public SAV4(byte[] data = null, GameVersion versionOverride = GameVersion.Any) getActiveBlock(); getSAVOffsets(); - Personal = Legal.PersonalAO; // todo + switch (Version) + { + case GameVersion.DP: Personal = Legal.PersonalDP; break; + case GameVersion.Pt: Personal = Legal.PersonalPt; break; + case GameVersion.HGSS: Personal = Legal.PersonalHGSS; break; + } if (!Exportable) resetBoxes(); diff --git a/Saves/SAV5.cs b/Saves/SAV5.cs index 8b17dc7d9..55f5df0f3 100644 --- a/Saves/SAV5.cs +++ b/Saves/SAV5.cs @@ -52,6 +52,8 @@ public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) LegalTMHMs = Legal.Pouch_TMHM_BW; LegalMedicine = Legal.Pouch_Medicine_BW; LegalBerries = Legal.Pouch_Berries_BW; + + Personal = Legal.PersonalBW; break; case GameVersion.B2W2: // B2W2 BattleBox = 0x20900; @@ -71,10 +73,11 @@ public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any) LegalTMHMs = Legal.Pouch_TMHM_BW; LegalMedicine = Legal.Pouch_Medicine_BW; LegalBerries = Legal.Pouch_Berries_BW; + + Personal = Legal.PersonalB2W2; break; } HeldItems = Legal.HeldItems_BW; - Personal = Legal.PersonalAO; // todo getBlockInfo(); if (!Exportable) diff --git a/Saves/SaveUtil.cs b/Saves/SaveUtil.cs index 4d8019ba6..12d8f07af 100644 --- a/Saves/SaveUtil.cs +++ b/Saves/SaveUtil.cs @@ -18,8 +18,8 @@ public enum GameVersion // Game Groupings (SaveFile type) RS = 100, FRLG = 101, - DP = 103, - HGSS = 104, + DP = 102, + HGSS = 103, BW = 104, B2W2 = 105, XY = 106,