/// <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();
            }
        }