コード例 #1
0
        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()));
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
            }
        }