diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs
index 6e868f86..8fcc2bf3 100644
--- a/MainWindow.xaml.cs
+++ b/MainWindow.xaml.cs
@@ -135,7 +135,7 @@ namespace DICUI
// Local variables
string driveLetter = cmb_DriveLetter.Text;
string outputDirectory = txt_OutputDirectory.Text;
- string outputFileName = txt_OutputFilename.Text;
+ string outputFilename = txt_OutputFilename.Text;
int driveSpeed = (int)cmb_DriveSpeed.SelectedItem;
btn_Start.IsEnabled = false;
@@ -165,13 +165,20 @@ namespace DICUI
process.StartInfo.FileName = dicPath;
process.StartInfo.Arguments = discType
+ " " + driveLetter
- + " \"" + Path.Combine(outputDirectory, outputFileName) + "\" "
+ + " \"" + Path.Combine(outputDirectory, outputFilename) + "\" "
+ (selected.Item3 != DiscType.BD25 && selected.Item3 != DiscType.BD50 ? driveSpeed + " " : "")
+ string.Join(" ", defaultParams);
process.Start();
process.WaitForExit();
});
+ // Check to make sure that the output had all the correct files
+ if (!Utilities.FoundAllFiles(outputDirectory, outputFilename))
+ {
+ lbl_Status.Content = "Error! Please check output directory as dump may be incomplete!";
+ return;
+ }
+
// Special cases
switch (selected.Item2)
{
@@ -179,7 +186,7 @@ namespace DICUI
case KnownSystem.SonyPlayStation4:
if (!File.Exists(sgRawPath))
{
- lbl_Status.Content = "Error! Could not find sg-raw!!";
+ lbl_Status.Content = "Error! Could not find sg-raw!";
return;
}
@@ -205,8 +212,8 @@ namespace DICUI
string batchname = "PSX" + Guid.NewGuid() + ".bat";
using (StreamWriter writetext = new StreamWriter(batchname))
{
- writetext.WriteLine(psxtPath + " " + "\"" + Utilities.GetFirstTrack(outputDirectory, outputFileName) + "\" > " + "\"" + Path.Combine(outputDirectory, "psxt001z.txt"));
- writetext.WriteLine(psxtPath + " " + "--libcrypt " + "\"" + Path.Combine(outputDirectory, outputFileName + ".sub") + "\" > " + "\"" + Path.Combine(outputDirectory, "libcrypt.txt"));
+ writetext.WriteLine(psxtPath + " " + "\"" + Utilities.GetFirstTrack(outputDirectory, outputFilename) + "\" > " + "\"" + Path.Combine(outputDirectory, "psxt001z.txt"));
+ writetext.WriteLine(psxtPath + " " + "--libcrypt " + "\"" + Path.Combine(outputDirectory, outputFilename + ".sub") + "\" > " + "\"" + Path.Combine(outputDirectory, "libcrypt.txt"));
writetext.WriteLine(psxtPath + " " + "--libcryptdrvfast " + driveLetter + " > " + "\"" + Path.Combine(outputDirectory, "libcryptdrv.log"));
}
diff --git a/Utilities.cs b/Utilities.cs
index 334d8534..70698597 100644
--- a/Utilities.cs
+++ b/Utilities.cs
@@ -623,41 +623,94 @@ namespace DICUI
.ToList();
}
- ///
- /// Attempts to find the first track of a dumped disc based on the inputs
- ///
- /// Base directory to use
- /// Base filename to use
- /// Proper path to first track, null on error
- ///
- /// By default, this assumes that the outputFilename doesn't contain a proper path, and just a name.
- /// This can lead to a situation where the outputFilename contains a path, but only the filename gets
- /// used in the processing and can lead to a "false null" return
- ///
- public static string GetFirstTrack(string outputDirectory, string outputFilename)
- {
- // First, sanitized the output filename to strip off any potential extension
- outputFilename = Path.GetFileNameWithoutExtension(outputFilename);
+ ///
+ /// Attempts to find the first track of a dumped disc based on the inputs
+ ///
+ /// Base directory to use
+ /// Base filename to use
+ /// Proper path to first track, null on error
+ ///
+ /// By default, this assumes that the outputFilename doesn't contain a proper path, and just a name.
+ /// This can lead to a situation where the outputFilename contains a path, but only the filename gets
+ /// used in the processing and can lead to a "false null" return
+ ///
+ public static string GetFirstTrack(string outputDirectory, string outputFilename)
+ {
+ // First, sanitized the output filename to strip off any potential extension
+ outputFilename = Path.GetFileNameWithoutExtension(outputFilename);
- // Go through all standard output naming schemes
- if (File.Exists(Path.Combine(outputDirectory, outputFilename + ".bin")))
- {
- return Path.Combine(outputDirectory, outputFilename + ".bin");
- }
- if (File.Exists(Path.Combine(outputDirectory, outputFilename + " (Track 1).bin")))
- {
- return Path.Combine(outputDirectory, outputFilename + " (Track 1).bin");
- }
- if (File.Exists(Path.Combine(outputDirectory, outputFilename + " (Track 01).bin")))
- {
- return Path.Combine(outputDirectory, outputFilename + " (Track 01).bin");
- }
- if (File.Exists(Path.Combine(outputDirectory, outputFilename + ".iso")))
- {
- return Path.Combine(outputDirectory, outputFilename + ".iso");
- }
+ // Go through all standard output naming schemes
+ string combinedBase = Path.Combine(outputDirectory, outputFilename);
+ if (File.Exists(combinedBase + ".bin"))
+ {
+ return combinedBase + ".bin";
+ }
+ if (File.Exists(combinedBase + " (Track 1).bin"))
+ {
+ return combinedBase + " (Track 1).bin";
+ }
+ if (File.Exists(combinedBase + " (Track 01).bin"))
+ {
+ return combinedBase + " (Track 01).bin";
+ }
+ if (File.Exists(combinedBase + ".iso"))
+ {
+ return Path.Combine(combinedBase + ".iso");
+ }
- return null;
- }
+ return null;
+ }
+
+ ///
+ /// Ensures that all required output files have been created
+ ///
+ /// Base directory to use
+ /// Base filename to use
+ ///
+ public static bool FoundAllFiles(string outputDirectory, string outputFilename)
+ {
+ // First, sanitized the output filename to strip off any potential extension
+ outputFilename = Path.GetFileNameWithoutExtension(outputFilename);
+
+ // Check to see what type of files we should be expecting
+ string ext = Path.GetExtension(GetFirstTrack(outputDirectory, outputFilename)).TrimStart('.');
+
+ // Now ensure that all required files exist
+ string combinedBase = Path.Combine(outputDirectory, outputFilename);
+ switch(ext)
+ {
+ case "bin":
+ return File.Exists(combinedBase + ".c2")
+ && File.Exists(combinedBase + ".ccd")
+ && File.Exists(combinedBase + ".cue")
+ && File.Exists(combinedBase + ".dat")
+ && File.Exists(combinedBase + ".img")
+ && File.Exists(combinedBase + ".img_EdcEcc.txt")
+ && File.Exists(combinedBase + ".scm")
+ && File.Exists(combinedBase + ".sub")
+ && File.Exists(combinedBase + "_c2Error.txt")
+ && File.Exists(combinedBase + "_cmd.txt")
+ && File.Exists(combinedBase + "_disc.txt")
+ && File.Exists(combinedBase + "_drive.txt")
+ && File.Exists(combinedBase + "_img.cue")
+ && File.Exists(combinedBase + "_mainError.txt")
+ && File.Exists(combinedBase + "_mainInfo.txt")
+ && File.Exists(combinedBase + "_subError.txt")
+ && File.Exists(combinedBase + "_subInfo.txt")
+ && File.Exists(combinedBase + "_subIntention.txt")
+ && File.Exists(combinedBase + "_subReadable.txt")
+ && File.Exists(combinedBase + "_volDesc.txt");
+ case "iso":
+ return File.Exists(combinedBase + ".dat")
+ && File.Exists(combinedBase + "_cmd.txt")
+ && File.Exists(combinedBase + "_disc.txt")
+ && File.Exists(combinedBase + "_drive.txt")
+ && File.Exists(combinedBase + "_mainError.txt")
+ && File.Exists(combinedBase + "_mainInfo.txt")
+ && File.Exists(combinedBase + "_volDesc.txt");
+ default:
+ return false;
+ }
+ }
}
}