/// <summary> /// Clone construct /// </summary> /// <param name="toClone">Object to clone</param> public Binslot(Binslot toClone) { this.originPath = toClone.originPath; this.head = toClone.head; this.mysteryHash = toClone.mysteryHash; this.saveFileHash = toClone.saveFileHash; this.sdSlotData = toClone.sdSlotData; }
/// <summary> /// Convert the sdslot.bin (Vita) into *.binslot (Steam). Save files must follow the data00XX.bin pattern. /// </summary> /// <param name="outputPath">Output result</param> /// <param name="inputSavePath">Input path of the save files</param> public void convertToBinslot(string outputPath, string inputSavePath) { for (int i = 1; i <= 16; i++) { if (this.usedSlots[i] == 0x00) { continue; } if (!File.Exists($@"{inputSavePath}\data00{i}.bin") && !File.Exists($@"{inputSavePath}\data000{i}.bin")) { throw new FileNotFoundException($"File data00XX.bin not found (index {i})"); } Binslot binslot = new Binslot(this.dataBinSlots[i - 1], false); binslot.mysteryHash = binslot.calculateMysteryHash(); binslot.saveFileHash = HashMD5.getMd5BytesHash(File.ReadAllBytes($@"{inputSavePath}\data00{(i < 10 ? $"0{i}" : i.ToString())}.bin")); binslot.originPath = outputPath + $@"\data00{(i < 10 ? $"0{i}": i.ToString())}.binslot"; binslot.saveBinslot(); } }