public static PatchResult PatchPSV(string filename, List <AsmPatch> asmPatches, ASMEncoding.ASMEncodingUtility asmUtility) { ConflictResolveResult conflictResolveResult = ConflictHelper.ResolveConflicts(asmPatches, asmUtility); asmPatches = conflictResolveResult.Patches; List <PatchedByteArray> patches = new List <PatchedByteArray>(); foreach (AsmPatch asmPatch in asmPatches) { asmPatch.Update(asmUtility); foreach (PatchedByteArray innerPatch in asmPatch) { patches.Add(innerPatch); } } PatchPsxSaveStateResult patchResult; using (BinaryReader reader = new BinaryReader(File.Open(filename, FileMode.Open))) { patchResult = PatcherLib.Iso.PsxIso.PatchPsxSaveState(reader, patches); } StringBuilder sbResultMessage = new StringBuilder(); sbResultMessage.AppendLine("Complete!"); sbResultMessage.AppendLine(); if (!string.IsNullOrEmpty(conflictResolveResult.Message)) { sbResultMessage.AppendLine(conflictResolveResult.Message); sbResultMessage.AppendLine(); } if (patchResult.UnsupportedFiles.Count > 0) { sbResultMessage.AppendLine("Files not supported for savestate patching:"); foreach (PsxIso.Sectors sector in patchResult.UnsupportedFiles) { sbResultMessage.AppendFormat("\t{0}{1}", PsxIso.GetSectorName(sector), Environment.NewLine); } sbResultMessage.AppendLine(); } if (patchResult.AbsentFiles.Count > 0) { sbResultMessage.AppendLine("Files not present in savestate:"); foreach (PsxIso.Sectors sector in patchResult.AbsentFiles) { sbResultMessage.AppendFormat("\t{0}{1}", PsxIso.GetSectorName(sector), Environment.NewLine); } sbResultMessage.AppendLine(); } return(new PatchResult(true, sbResultMessage.ToString())); }
private void btnPatchSaveState_Click(object sender, EventArgs e) { //Patchbutton copy. Modify to patch byte array right to savestate. saveFileDialog1.Filter = "PSV files (*.psv)|*.psv|All files (*.*)|*.*"; saveFileDialog1.FileName = string.Empty; StringBuilder sbResultMessage = new StringBuilder(); if (saveFileDialog1.ShowDialog(this) == DialogResult.OK) { using (BinaryReader reader = new BinaryReader(File.Open(saveFileDialog1.FileName, FileMode.Open))) { List <PatchedByteArray> patches = new List <PatchedByteArray>(); foreach (AsmPatch asmPatch in clb_Patches.CheckedItems) { //ModifyPatch(asmPatch); asmPatch.Update(asmUtility); foreach (PatchedByteArray innerPatch in asmPatch) { patches.Add(innerPatch); } } PatchPsxSaveStateResult patchResult = PatcherLib.Iso.PsxIso.PatchPsxSaveState(reader, patches); sbResultMessage.AppendLine("Complete!"); sbResultMessage.AppendLine(); if (patchResult.UnsupportedFiles.Count > 0) { sbResultMessage.AppendLine("Files not supported for savestate patching:"); foreach (PsxIso.Sectors sector in patchResult.UnsupportedFiles) { sbResultMessage.AppendFormat("\t{0}{1}", PsxIso.GetSectorName(sector), Environment.NewLine); } sbResultMessage.AppendLine(); } if (patchResult.AbsentFiles.Count > 0) { sbResultMessage.AppendLine("Files not present in savestate:"); foreach (PsxIso.Sectors sector in patchResult.AbsentFiles) { sbResultMessage.AppendFormat("\t{0}{1}", PsxIso.GetSectorName(sector), Environment.NewLine); } sbResultMessage.AppendLine(); } } PatcherLib.MyMessageBox.Show(this, sbResultMessage.ToString(), "Complete!", MessageBoxButtons.OK); } }
public static string GetSectorName(Enum sector) { Type type = sector.GetType(); if (type == typeof(PsxIso.Sectors)) { return(PsxIso.GetSectorName((PsxIso.Sectors)sector)); } else if (type == typeof(PspIso.Sectors)) { return(PspIso.GetSectorName((PspIso.Sectors)sector)); } else if (type == typeof(FFTPack.Files)) { return(PspIso.GetFileName((FFTPack.Files)sector)); } else { return(string.Empty); } }