From 4f347fbfa99fb5a0e18345f5a25abf8c7e63fd44 Mon Sep 17 00:00:00 2001 From: Kurt Date: Sat, 30 Mar 2019 16:21:45 -0700 Subject: [PATCH] Misc reductions no functional change --- PKHeX.Core/Saves/SAV1.cs | 70 ++++++------------- .../Saves/Substructures/Gen12/SAV1Offsets.cs | 1 + 2 files changed, 21 insertions(+), 50 deletions(-) diff --git a/PKHeX.Core/Saves/SAV1.cs b/PKHeX.Core/Saves/SAV1.cs index 9c83b7c7c..d9401bce6 100644 --- a/PKHeX.Core/Saves/SAV1.cs +++ b/PKHeX.Core/Saves/SAV1.cs @@ -110,7 +110,7 @@ public SAV1(byte[] data = null, GameVersion versionOverride = GameVersion.Any) private readonly SAV1Offsets Offsets; // Event Flags - protected override int EventFlagMax => EventFlag > 0 ? 0xA00 : int.MinValue; // 320 * 8 + protected override int EventFlagMax => 0xA00; // 320 * 8 protected override int EventConstMax => 0; private const int SIZE_RESERVED = 0x8000; // unpacked box data @@ -207,16 +207,14 @@ private int GetBoxRawDataOffset(int i) public override bool IsPKMPresent(int offset) => PKX.IsPKMPresentGB(Data, offset); // Checksums - protected override void SetChecksums() => Data[Offsets.ChecksumOfs] = GetRBYChecksum(Offsets.ChecksumOfs); - public override bool ChecksumsValid => Data[Offsets.ChecksumOfs] == GetRBYChecksum(Offsets.ChecksumOfs); + protected override void SetChecksums() => Data[Offsets.ChecksumOfs] = GetRBYChecksum(Offsets.OT, Offsets.ChecksumOfs); + public override bool ChecksumsValid => Data[Offsets.ChecksumOfs] == GetRBYChecksum(Offsets.OT, Offsets.ChecksumOfs); public override string ChecksumInfo => ChecksumsValid ? "Checksum valid." : "Checksum invalid"; - private const int CHECKSUM_START = 0x2598; - - private byte GetRBYChecksum(int end) + private byte GetRBYChecksum(int start, int end) { byte chksum = 0; - for (int i = CHECKSUM_START; i < end; i++) + for (int i = start; i < end; i++) chksum += Data[i]; chksum ^= 0xFF; return chksum; @@ -227,11 +225,11 @@ private byte GetRBYChecksum(int end) public override string OT { - get => GetString(0x2598, OTLength); - set => SetString(value, OTLength).CopyTo(Data, 0x2598); + get => GetString(Offsets.OT, OTLength); + set => SetString(value, OTLength).CopyTo(Data, Offsets.OT); } - public byte[] OT_Trash { get => GetData(0x2598, StringLength); set { if (value?.Length == StringLength) SetData(value, 0x2598); } } + public byte[] OT_Trash { get => GetData(Offsets.OT, StringLength); set { if (value?.Length == StringLength) SetData(value, Offsets.OT); } } public override int Gender { @@ -324,29 +322,13 @@ public bool BattleStyleSwitch public int Sound { get => (Options & 0x30) >> 4; - set - { - var new_sound = value; - if (new_sound > 3) - new_sound = 3; - if (new_sound < 0) - new_sound = 0; - Options = (byte)((Options & 0xCF) | (new_sound << 4)); - } + set => Options = (byte)((Options & 0xCF) | ((value & 3) << 4)); } public int TextSpeed { get => Options & 0x7; - set - { - var new_speed = value; - if (new_speed > 7) - new_speed = 7; - if (new_speed < 0) - new_speed = 0; - Options = (byte)((Options & 0xF8) | new_speed); - } + set => Options = (byte)((Options & 0xF8) | (value & 7)); } public override uint Money @@ -383,10 +365,7 @@ public override InventoryPouch[] Inventory }; return pouch.LoadAll(Data); } - set - { - value.SaveAll(Data); - } + set => value.SaveAll(Data); } public override int GetDaycareSlotOffset(int loc, int slot) @@ -484,32 +463,23 @@ private bool CanSetDex(int species) return true; } - public override void SetSeen(int species, bool seen) + public override bool GetSeen(int species) => GetDexFlag(Offsets.DexSeen, species); + public override bool GetCaught(int species) => GetDexFlag(Offsets.DexCaught, species); + public override void SetSeen(int species, bool seen) => SetDexFlag(Offsets.DexSeen, species, seen); + public override void SetCaught(int species, bool caught) => SetDexFlag(Offsets.DexCaught, species, caught); + + private bool GetDexFlag(int region, int species) { int bit = species - 1; int ofs = bit >> 3; - SetFlag(Offsets.DexSeen + ofs, bit & 7, seen); + return GetFlag(region + ofs, bit & 7); } - public override void SetCaught(int species, bool caught) + private void SetDexFlag(int region, int species, bool value) { int bit = species - 1; int ofs = bit >> 3; - SetFlag(Offsets.DexCaught + ofs, bit & 7, caught); - } - - public override bool GetSeen(int species) - { - int bit = species - 1; - int ofs = bit >> 3; - return GetFlag(Offsets.DexSeen + ofs, bit & 7); - } - - public override bool GetCaught(int species) - { - int bit = species - 1; - int ofs = bit >> 3; - return GetFlag(Offsets.DexCaught + ofs, bit & 7); + SetFlag(region + ofs, bit & 7, value); } public override void SetStoredSlot(PKM pkm, int offset, PKMImportSetting trade = PKMImportSetting.UseDefault, PKMImportSetting dex = PKMImportSetting.UseDefault) diff --git a/PKHeX.Core/Saves/Substructures/Gen12/SAV1Offsets.cs b/PKHeX.Core/Saves/Substructures/Gen12/SAV1Offsets.cs index 627b5b3f8..3d4f75372 100644 --- a/PKHeX.Core/Saves/Substructures/Gen12/SAV1Offsets.cs +++ b/PKHeX.Core/Saves/Substructures/Gen12/SAV1Offsets.cs @@ -51,6 +51,7 @@ internal class SAV1Offsets ChecksumOfs = 0x3594, }; + public int OT { get; } = 0x2598; public int DexCaught { get; private set; } public int DexSeen { get; private set; } public int Items { get; private set; }