mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-05-23 19:06:10 -05:00
Relocate header/footer checks
This commit is contained in:
parent
c76aa1d5d8
commit
3bb2970d68
|
|
@ -605,26 +605,7 @@ private void openFile(byte[] input, string path, string ext)
|
|||
MysteryGift tg; PKM temp; string c;
|
||||
byte[] footer = new byte[0];
|
||||
byte[] header = new byte[0];
|
||||
#region Header/Footer detect
|
||||
if (input.Length > SaveUtil.SIZE_G4RAW) // DeSmuME
|
||||
{
|
||||
bool dsv = SaveUtil.FOOTER_DSV.SequenceEqual(input.Skip(input.Length - SaveUtil.FOOTER_DSV.Length));
|
||||
if (dsv)
|
||||
{
|
||||
footer = input.Skip(SaveUtil.SIZE_G4RAW).ToArray();
|
||||
input = input.Take(footer.Length).ToArray();
|
||||
}
|
||||
}
|
||||
if (input.Length == SaveUtil.SIZE_G3BOXGCI)
|
||||
{
|
||||
bool gci = SaveUtil.HEADER_GCI.SequenceEqual(input.Take(SaveUtil.HEADER_GCI.Length));
|
||||
if (gci)
|
||||
{
|
||||
header = input.Take(SaveUtil.SIZE_G3BOXGCI - SaveUtil.SIZE_G3BOX).ToArray();
|
||||
input = input.Skip(header.Length).ToArray();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
SaveUtil.CheckHeaderFooter(ref input, ref header, ref footer);
|
||||
#region Powersaves Read-Only Conversion
|
||||
if (input.Length == 0x10009C) // Resize to 1MB
|
||||
{
|
||||
|
|
@ -654,7 +635,11 @@ private void openFile(byte[] input, string path, string ext)
|
|||
#endregion
|
||||
#region SAV/PKM
|
||||
else if (SaveUtil.getSAVGeneration(input) != -1)
|
||||
{ openSAV(input, path); SAV.Footer = footer; SAV.Header = header; }
|
||||
{
|
||||
openSAV(input, path);
|
||||
SAV.Footer = footer;
|
||||
SAV.Header = header;
|
||||
}
|
||||
else if ((temp = PKMConverter.getPKMfromBytes(input)) != null)
|
||||
{
|
||||
PKM pk = PKMConverter.convertToFormat(temp, SAV.Generation, out c);
|
||||
|
|
|
|||
|
|
@ -512,6 +512,27 @@ internal static ushort check32(byte[] data)
|
|||
val += BitConverter.ToUInt32(data, i);
|
||||
return (ushort)((val & 0xFFFF) + (val >> 16));
|
||||
}
|
||||
internal static void CheckHeaderFooter(ref byte[] input, ref byte[] header, ref byte[] footer)
|
||||
{
|
||||
if (input.Length > SIZE_G4RAW) // DeSmuME Gen4/5 DSV
|
||||
{
|
||||
bool dsv = FOOTER_DSV.SequenceEqual(input.Skip(input.Length - FOOTER_DSV.Length));
|
||||
if (dsv)
|
||||
{
|
||||
footer = input.Skip(SIZE_G4RAW).ToArray();
|
||||
input = input.Take(footer.Length).ToArray();
|
||||
}
|
||||
}
|
||||
if (input.Length == SIZE_G3BOXGCI)
|
||||
{
|
||||
bool gci = HEADER_GCI.SequenceEqual(input.Take(HEADER_GCI.Length));
|
||||
if (gci)
|
||||
{
|
||||
header = input.Take(SIZE_G3BOXGCI - SIZE_G3BOX).ToArray();
|
||||
input = input.Skip(header.Length).ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static int getDexFormIndexBW(int species, int formct)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user