private void load_blocks() { byte[] decrypt1 = new byte[ML_BLOCK1.Size]; byte[] decrypt2 = new byte[ML_BLOCK2.Size]; decrypt1 = SAV5.cryptoArray(getData(0, ML_BLOCK1.Size), 0xC, 0x364, 0x374 - 4); decrypt2 = SAV5.cryptoArray(getData(0x400, ML_BLOCK1.Size), 0xC, 0x364, 0x374 - 4); block1 = new ML_BLOCK1(decrypt1); block1_mirror = new ML_BLOCK1(decrypt2); block2 = new ML_BLOCK2(getData(0x800, ML_BLOCK2.Size)); //Not encrypted, but has CRC }
public void set_blocks() { //Block 1 //Recrypt byte[] encrypt1 = new byte[ML_BLOCK1.Size]; encrypt1 = SAV5.cryptoArray(block1.Data, 0xC, 0x364, 0x374 - 4); //Recalculate CRC ushort crc = SAV5.ccitt16(encrypt1.Skip(0xC).Take(0x368).ToArray()); BitConverter.GetBytes(crc).CopyTo(encrypt1, 0x8); //Set new data setData(encrypt1, 0); //Block 1 Mirror //Just put block 1 for now as mirror setData(encrypt1, 0x400); /* * //Recrypt * byte[] encrypt_mirror = new byte[ML_BLOCK1.Size]; * encrypt_mirror = SAV5.cryptoArray(block1_mirror.Data, 0xC, 0x364, 0x374-4); * //Recalculate CRC * ushort crc_mirror = SAV5.ccitt16(encrypt_mirror.Skip(0xC).Take(0x368).ToArray()); * BitConverter.GetBytes(crc_mirror).CopyTo(encrypt_mirror, 0x8); * //Set new data * setData(encrypt_mirror, 0x400); */ //Block 2 //Recalculate CRC ushort crc2 = SAV5.ccitt16(block2.Data.Skip(0xC).Take(0x214).ToArray()); block2.crc = crc2; //Set new data setData(block2.Data, 0x800); }