private void B_Save_Click(object sender, EventArgs e) { byte[] bgdata = bg.Write(); if (bgdata.SequenceEqual(new byte[CGearBackground.SIZE_CGB])) { return; } // Data present bgdata = CGearBackground.CGBtoPSK(bgdata, SAV.B2W2); Array.Copy(bgdata, 0, SAV.Data, SAV.CGearDataOffset, bgdata.Length); ushort chk = SaveUtil.CRC16_CCITT(bgdata); BitConverter.GetBytes(chk).CopyTo(SAV.Data, SAV.CGearDataOffset + bgdata.Length + 2); BitConverter.GetBytes(chk).CopyTo(SAV.Data, SAV.CGearDataOffset + bgdata.Length + 0x100); ushort skinchkval = SaveUtil.CRC16_CCITT(SAV.Data, bgdata.Length + 0x100, 4); BitConverter.GetBytes(skinchkval).CopyTo(SAV.Data, SAV.CGearDataOffset + bgdata.Length + 0x112); // Indicate in the save file that data is present BitConverter.GetBytes((ushort)0xC21E).CopyTo(SAV.Data, 0x19438); SAV.Data[SAV.CGearInfoOffset + 0x26] = 1; // data present BitConverter.GetBytes(chk).CopyTo(SAV.Data, SAV.CGearInfoOffset + 0x24); Origin.SetData(SAV.Data, 0); Close(); }
private void B_Save_Click(object sender, EventArgs e) { byte[] data = new byte[SAV.LinkBlock.Length]; Array.Copy(LinkInfo.Data, 0, data, 0x1FF, LinkInfo.Data.Length); // Fix Checksum just in case. ushort ccitt = SaveUtil.CRC16_CCITT(data, 0x200, data.Length - 4 - 0x200); // [app,chk) BitConverter.GetBytes(ccitt).CopyTo(data, data.Length - 4); SAV.LinkBlock = data; Origin.SetData(SAV.Data, 0); Close(); }
private void SaveBattleFrontier() { if (ofsPrints > 0) { for (int i = 0; i < Prints.Length; i++) { if (Prints[i] == 1 + Math.Sign((BitConverter.ToUInt16(SAV.Data, ofsPrints + (i << 1)) >> 1) - 1)) { continue; } BitConverter.GetBytes(Prints[i] << 1).CopyTo(SAV.Data, ofsPrints + (i << 1)); } } if (HallStatUpdated) { BitConverter.GetBytes(SaveUtil.CRC16_CCITT(SAV.Data, ofsHallStat, 0xBAE)).CopyTo(SAV.Data, ofsHallStat + 0xBAE); } }