コード例 #1
0
ファイル: MemoryLink.cs プロジェクト: Dim145/BW_tool
            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
            }
コード例 #2
0
ファイル: MemoryLink.cs プロジェクト: Dim145/BW_tool
            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);
            }