diff --git a/Legality/Core.cs b/Legality/Core.cs
index f83ce25e9..6bab844ad 100644
--- a/Legality/Core.cs
+++ b/Legality/Core.cs
@@ -8,8 +8,8 @@ public static partial class Legal
// PKHeX master Wonder Card Database
internal static WC6[] WC6DB;
// PKHeX master personal.dat
- internal static readonly PersonalInfo[] PersonalAO = PersonalInfo.getPersonalArray(Properties.Resources.personal_ao, PersonalInfo.SizeAO);
- private static readonly PersonalInfo[] PersonalXY = PersonalInfo.getPersonalArray(Properties.Resources.personal_xy, PersonalInfo.SizeXY);
+ internal static readonly PersonalInfo[] PersonalAO = PersonalInfo.getArray(Properties.Resources.personal_ao, PersonalInfo.SizeAO);
+ private static readonly PersonalInfo[] PersonalXY = PersonalInfo.getArray(Properties.Resources.personal_xy, PersonalInfo.SizeXY);
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"));
diff --git a/Legality/Data.cs b/Legality/Data.cs
index af849bf03..d7d047386 100644
--- a/Legality/Data.cs
+++ b/Legality/Data.cs
@@ -344,7 +344,7 @@ public int RandomGender
}
public bool HasFormes => FormeCount > 1;
- internal static PersonalInfo[] getPersonalArray(byte[] data, int size)
+ internal static PersonalInfo[] getArray(byte[] data, int size)
{
PersonalInfo[] d = new PersonalInfo[data.Length / size];
for (int i = 0; i < d.Length; i++)
diff --git a/Misc/PKX.cs b/Misc/PKX.cs
index d4f9bd107..394f125e0 100644
--- a/Misc/PKX.cs
+++ b/Misc/PKX.cs
@@ -556,20 +556,23 @@ internal static uint getRandomPID(int species, int cg, int origin, int nature, i
// SAV Manipulation
/// Calculates the CRC16-CCITT checksum over an input byte array.
- /// Input byte array
+ /// Input byte array
/// Checksum
- internal static ushort ccitt16(byte[] chunk)
+ internal static ushort ccitt16(byte[] data)
{
- ushort crc = 0xFFFF;
- foreach (byte t in chunk)
+ const ushort init = 0xFFFF;
+ const ushort poly = 0x1021;
+
+ ushort crc = init;
+ foreach (byte b in data)
{
- crc ^= (ushort)(t << 8);
+ crc ^= (ushort)(b << 8);
for (int j = 0; j < 8; j++)
{
- if ((crc & 0x8000) > 0)
- crc = (ushort)(crc << 1 ^ 0x1021);
- else
- crc <<= 1;
+ bool flag = (crc & 0x8000) > 0;
+ crc <<= 1;
+ if (flag)
+ crc ^= poly;
}
}
return crc;