diff --git a/DICUI.Library/Data/Constants.cs b/DICUI.Library/Data/Constants.cs
index 45224c41..ba30f7f3 100644
--- a/DICUI.Library/Data/Constants.cs
+++ b/DICUI.Library/Data/Constants.cs
@@ -59,6 +59,96 @@
public const string VideoNow = "/vn";
}
+ ///
+ /// Internal names of fields on the New Disc page
+ ///
+ public static class NewDiscPageStrings
+ {
+ // Common disc info
+
+ public const string System = ""; // Undefined, use shortnames
+ public const string Media = ""; // Undefined, use shortnames
+ public const string Title = "d_title";
+ public const string ForeignTitleNonLatin = "d_title_foreign";
+ public const string DiscNumberLetter = "d_number";
+ public const string DiscTitle = "d_label";
+ public const string Category = "d_category"; // Category enum
+ public const string Region = "d_region"; // Single region only
+ public const string Languages = "d_languages[]"; // Multiple languages possible
+ public const string LanguageSelectionVia = "d_languages_selection[]"; // PS2; "Bios settings", "Language selector", "Options menu"; Muliple choices possible
+ public const string Serial = "d_serial";
+ public const string Ring = "d_ring";
+ public const string RingId = "d_ring_0_id"; // Hidden
+ public const string MasteringRingFirstLayerDataSide = "d_ring_0_ma1";
+ public const string MasteringSIDCodeFirstLayerDataSide = "d_ring_0_ma1_sid";
+ public const string ToolstampMasteringCodeFirstLayerDataSide = "d_ring_0_ts1";
+ public const string MouldSIDCodeFirstLayerDataSide = "d_ring_0_mo1_sid";
+ public const string AdditionalMouldFirstLayerDataSide = "dr_ring_0_mo1";
+ public const string MasteringRingSecondLayerLabelSide = "d_ring_0_ma2";
+ public const string MasteringSIDCodeSecondLayerLabelSide = "d_ring_0_ma2_sid";
+ public const string ToolstampMasteringCodeSecondLayerLabelSide = "d_ring_0_ts2";
+ public const string MouldSIDCodeSecondLayerLabelSide = "d_ring_0_mo2_sid";
+ public const string AdditionalMouldSecondLayerLabelSide = "dr_ring_0_mo2";
+ public const string RingOffsetsHidden = "d_ring_0_offsets"; // Hidden, value '1'
+ public const string RingZeroId = "d_ring_0_0_id"; // Hidden
+ public const string RingZeroDensity = "d_ring_0_0_density"; // Hidden
+ public const string RingWriteOffset = "d_ring_0_0_value";
+ public const string RingCount = "d_ring_count"; // Hidden, value '1'
+ public const string Barcode = "d_barcode";
+ public const string EXEDateBuildDate = "d_date"; // PSX, PS2, MCD, SS, DC, PC-98, ACD, CD32, CDTV, NGCD, QIS, FMT, HS, ITE, KEA, KFB, KS573, KSGV, KT, CHIHIRO, NAOMI, NAOMI2, STV, TRIFORCE, NAVI21
+ public const string ErrorsCount = "d_errors";
+ public const string Comments = "d_comments";
+ public const string Contents = "d_contents";
+
+ // Version and editions
+
+ public const string Version = "d_version";
+ public const string VersionDatfile = "d_version_datfile";
+ public const string CommonEditions = "d_editions[]"; // Multiple editions possible
+ public const string OtherEditions = "d_editions_text";
+
+ // EDC (PSX)
+ public const string EDC = "d_edc"; // 1 = No, 2 = Yes
+
+ // Parent/Clone relationship
+ public const string ParentID = "d_parent_id";
+ public const string RegionalParent = "d_is_regional_parent"; // Single checkbox
+
+ // Extras
+ public const string PVD = "d_pvd"; // CD,DVD-based (ISO9660 FS only)
+ public const string DiscKey = "d_d1_key"; // PS3 BD-based, WIIU
+ public const string DiscID = "d_d2_key"; // PS3 BD-based
+ public const string PIC = "d_pic_data"; // BD-based
+ public const string Header = "d_header"; // MCD, SS, GD-based
+ public const string BCA = "d_bca"; // GC, WII
+ public const string SecuritySectorRanges = "d_ssranges"; // XBOX DVD-based with SS, XBOX360 DVD-based with SS
+
+ // Copy protection
+ public const string AntiModchip = "d_protection_a"; // PSX; RedumpYesNo enum
+ public const string LibCrypt = "d_protection_1"; // PSX; RedumpYesNo enum
+ public const string LibCryptData = "d_libcrypt"; // PSX
+ public const string Protection = "d_protection"; // PC, MAC, DVD-VIDEO, BD-VIDEO, GAMEWAVE
+ public const string SecuROMData = "d_securom"; // PC
+
+ // Dumpers and status (moderator only)
+ public const string Status = "d_status"; // DumpStatus enum
+ public const string Dumpers = "d_dumpers[]"; // Multiple dumpers possible (by dumper ID)
+ public const string OtherDumpers = "d_dumpers_text";
+
+ // Tracks and write offsets (CD,GD-based)
+ public const string ClrMameProData = "d_tracks";
+ public const string Cuesheet = "d_cue";
+ public const string CommonWriteOffsets = "d_offset[]"; // Multiple offsets possible
+ public const string OtherWriteOffsets = "d_offset_text";
+
+ // Size & checksums (DVD,BD,UMD-based)
+ public const string Layerbreak = "d_layerbreak"; // DVD-9, BD-50, UMD-DL only
+ public const string Size = "d_size";
+ public const string CRC32 = "d_crc32";
+ public const string MD5 = "d_md5";
+ public const string SHA1 = "d_sha1";
+ }
+
///
/// Template field values for submission info
///
@@ -67,6 +157,7 @@
// Manual information
public const string TitleField = "Title";
+ public const string ForeignTitleField = "Foreign Title (Non-latin)";
public const string DiscNumberField = "Disc Number / Letter";
public const string DiscTitleField = "Disc Title";
public const string SystemField = "System";
@@ -74,6 +165,7 @@
public const string CategoryField = "Category";
public const string RegionField = "Region";
public const string LanguagesField = "Languages";
+ public const string PlaystationLanguageSelectionViaField = "Language Selection Via";
public const string DiscSerialField = "Disc Serial";
public const string BarcodeField = "Barcode";
public const string ISBNField = "ISBN";
@@ -81,6 +173,9 @@
public const string ContentsField = "Contents";
public const string VersionField = "Version";
public const string EditionField = "Edition/Release";
+ public const string PlayStation3WiiDiscKeyField = "Disc Key";
+ public const string PlayStation3DiscIDField = "Disc ID";
+ public const string GameCubeWiiBCAField = "BCA";
public const string CopyProtectionField = "Copy Protection";
public const string MasteringRingField = "Mastering Code (laser branded/etched)";
public const string MasteringSIDField = "Mastering SID Code";
@@ -97,13 +192,12 @@
public const string SubIntentionField = "SubIntention Data (SecuROM/LibCrypt)";
public const string WriteOffsetField = "Write Offset";
public const string LayerbreakField = "Layerbreak";
- public const string PlaystationEXEDateField = "EXE Date";
+ public const string EXEDateBuildDate = "EXE/Build Date";
+ public const string HeaderField = "Header";
+ public const string PICField = "Permanent Information & Control (PIC)";
public const string PlayStationEDCField = "EDC";
public const string PlayStationAntiModchipField = "Anti-modchip";
public const string PlayStationLibCryptField = "LibCrypt";
- public const string PlayStation4PICField = "Permanent Information & Control (PIC)";
- public const string SegaHeaderField = "Header";
- public const string SegaBuildDateField = "Build Date";
public const string XBOXDMIHash = "DMI.bin Hashes";
public const string XBOXPFIHash = "PFI.bin Hashes";
public const string XBOXSSHash = "SS.bin Hashes";
diff --git a/DICUI.Library/Data/Enumerations.cs b/DICUI.Library/Data/Enumerations.cs
index 42fec2ec..2eeba883 100644
--- a/DICUI.Library/Data/Enumerations.cs
+++ b/DICUI.Library/Data/Enumerations.cs
@@ -1,5 +1,23 @@
namespace DICUI.Data
{
+ ///
+ /// Category for Redump
+ ///
+ public enum Category
+ {
+ Games = 1,
+ Demos = 2,
+ Video = 3,
+ Audio = 4,
+ Multimedia = 5,
+ Applications = 6,
+ Coverdiscs = 7,
+ Educational = 8,
+ BonusDiscs = 9,
+ Preproduction = 10,
+ AddOns = 11,
+ }
+
///
/// Supported DIC commands
///
@@ -61,6 +79,16 @@
VideoNow,
}
+ ///
+ /// Dump status for Redump
+ ///
+ public enum DumpStatus
+ {
+ PossibleBadDumpYellow = 3,
+ OriginalMediaBlue = 4,
+ TwoOrMoreDumpsGreen = 5,
+ }
+
///
/// Known systems
///
@@ -251,6 +279,7 @@
DVDVideo,
EnhancedCD,
HDDVDVideo,
+ NavisoftNaviken21,
PalmOS,
PhilipsCDiDigitalVideo,
PhotoCD,
@@ -331,4 +360,13 @@
Cartridge,
CED,
}
+
+ ///
+ /// Generic yes/no values for Redump
+ ///
+ public enum RedumpYesNo
+ {
+ No = 1,
+ Yes = 2,
+ }
}
diff --git a/DICUI.Library/Utilities/Converters.cs b/DICUI.Library/Utilities/Converters.cs
index 30919084..b2dcd351 100644
--- a/DICUI.Library/Utilities/Converters.cs
+++ b/DICUI.Library/Utilities/Converters.cs
@@ -408,41 +408,41 @@ namespace DICUI.Utilities
case MediaType.GDROM:
return "gdrom";
case MediaType.HDDVD:
- return "HD-DVD-ROM";
+ return "hddvd";
case MediaType.HardDisk:
- return "Hard Disk";
+ return "hdd";
case MediaType.IomegaBernoulliDisk:
- return "Iomega Bernoulli Disk";
+ return "bernoulli";
case MediaType.IomegaJaz:
- return "Iomega Jaz";
+ return "jaz";
case MediaType.IomegaZip:
- return "Iomega Zip";
+ return "zip";
case MediaType.LaserDisc:
- return "LD-ROM / LV-ROM";
+ return "ldrom";
case MediaType.Nintendo64DD:
- return "64DD Disk";
+ return "64dd";
case MediaType.NintendoFamicomDiskSystem:
- return "Famicom Disk System Disk";
+ return "fds";
case MediaType.NintendoGameCubeGameDisc:
- return "GameCube Game Disc";
+ return "gc";
case MediaType.NintendoWiiOpticalDisc:
- return "Wii Optical Disc";
+ return "wii";
case MediaType.NintendoWiiUOpticalDisc:
- return "Wii U Optical Disc";
+ return "wiiu";
case MediaType.UMD:
- return "UMD";
+ return "umd";
#endregion
// Unsorted Formats
case MediaType.Cartridge:
- return "Cartridge";
+ return "cart";
case MediaType.CED:
- return "CED";
+ return "ced";
case MediaType.NONE:
default:
- return "Unknown";
+ return "unknown";
}
}
@@ -851,6 +851,8 @@ namespace DICUI.Utilities
return "Enhanced CD";
case KnownSystem.HDDVDVideo:
return "HD-DVD-Video";
+ case KnownSystem.NavisoftNaviken21:
+ return "Navisoft Naviken 2.1";
case KnownSystem.PalmOS:
return "PalmOS";
case KnownSystem.PhilipsCDiDigitalVideo:
@@ -1108,6 +1110,8 @@ namespace DICUI.Utilities
return "enhanced cd";
case KnownSystem.HDDVDVideo:
return "hddvd-video";
+ case KnownSystem.NavisoftNaviken21:
+ return "naviken";
case KnownSystem.PalmOS:
return "palmos";
case KnownSystem.PhilipsCDiDigitalVideo:
@@ -1787,6 +1791,14 @@ namespace DICUI.Utilities
case "hddvd-video":
case "hd-dvd-video":
return KnownSystem.HDDVDVideo;
+ case "naviken":
+ case "naviken21":
+ case "naviken 2.1":
+ case "navisoftnaviken":
+ case "navisoft naviken":
+ case "navisoftnaviken21":
+ case "navisoft naviken 2.1":
+ return KnownSystem.NavisoftNaviken21;
case "palm":
case "palmos":
return KnownSystem.PalmOS;
diff --git a/DICUI.Library/Utilities/DumpEnvironment.cs b/DICUI.Library/Utilities/DumpEnvironment.cs
index 67dc04a5..a6fdf299 100644
--- a/DICUI.Library/Utilities/DumpEnvironment.cs
+++ b/DICUI.Library/Utilities/DumpEnvironment.cs
@@ -435,6 +435,7 @@ namespace DICUI.Utilities
Dictionary mappings = new Dictionary
{
{ Template.TitleField, Template.RequiredValue },
+ { Template.ForeignTitleField, Template.OptionalValue },
{ Template.DiscNumberField, Template.OptionalValue },
{ Template.DiscTitleField, Template.OptionalValue },
{ Template.SystemField, System.Name() },
@@ -475,6 +476,10 @@ namespace DICUI.Utilities
mappings[Template.CuesheetField] = GetFullFile(combinedBase + ".cue") ?? "";
mappings[Template.WriteOffsetField] = GetWriteOffset(combinedBase + "_disc.txt") ?? "";
+ // GD-ROM-specfic options
+ if (Type == MediaType.GDROM)
+ mappings[Template.HeaderField] = GetSegaHeader(combinedBase + "_mainInfo.txt") ?? "";
+
// System-specific options
switch (System)
{
@@ -497,38 +502,61 @@ namespace DICUI.Utilities
}
}
+ break;
+ case KnownSystem.BandaiPlaydiaQuickInteractiveSystem:
+ case KnownSystem.CommodoreAmiga:
+ case KnownSystem.CommodoreAmigaCD32:
+ case KnownSystem.CommodoreAmigaCDTV:
+ case KnownSystem.FujitsuFMTowns:
+ case KnownSystem.IncredibleTechnologiesEagle:
+ case KnownSystem.KonamieAmusement:
+ case KnownSystem.KonamiFirebeat:
+ case KnownSystem.KonamiGVSystem:
+ case KnownSystem.KonamiSystem573:
+ case KnownSystem.KonamiTwinkle:
+ case KnownSystem.MattelHyperscan:
+ case KnownSystem.NamcoSegaNintendoTriforce:
+ case KnownSystem.NavisoftNaviken21:
+ case KnownSystem.NECPC98:
+ case KnownSystem.SegaChihiro:
+ case KnownSystem.SegaDreamcast:
+ case KnownSystem.SegaNaomi:
+ case KnownSystem.SegaNaomi2:
+ case KnownSystem.SegaTitanVideo:
+ case KnownSystem.SNKNeoGeoCD:
+ mappings[Template.EXEDateBuildDate] = Template.RequiredValue;
break;
case KnownSystem.SegaCDMegaCD:
- mappings[Template.SegaHeaderField] = GetSegaHeader(combinedBase + "_mainInfo.txt") ?? "";
+ mappings[Template.HeaderField] = GetSegaHeader(combinedBase + "_mainInfo.txt") ?? "";
// Take only the last 16 lines for Sega CD
- if (!string.IsNullOrEmpty(mappings[Template.SegaHeaderField]))
- mappings[Template.SegaHeaderField] = string.Join("\n", mappings[Template.SegaHeaderField].Split('\n').Skip(16));
+ if (!string.IsNullOrEmpty(mappings[Template.HeaderField]))
+ mappings[Template.HeaderField] = string.Join("\n", mappings[Template.HeaderField].Split('\n').Skip(16));
- if (GetSegaCDBuildInfo(mappings[Template.SegaHeaderField], out string scdSerial, out string fixedDate))
+ if (GetSegaCDBuildInfo(mappings[Template.HeaderField], out string scdSerial, out string fixedDate))
{
mappings[Template.DiscSerialField] = scdSerial ?? "";
- mappings[Template.SegaBuildDateField] = fixedDate ?? "";
+ mappings[Template.EXEDateBuildDate] = fixedDate ?? "";
}
break;
case KnownSystem.SegaSaturn:
- mappings[Template.SegaHeaderField] = GetSegaHeader(combinedBase + "_mainInfo.txt") ?? "";
+ mappings[Template.HeaderField] = GetSegaHeader(combinedBase + "_mainInfo.txt") ?? "";
// Take only the first 16 lines for Saturn
- if (!string.IsNullOrEmpty(mappings[Template.SegaHeaderField]))
- mappings[Template.SegaHeaderField] = string.Join("\n", mappings[Template.SegaHeaderField].Split('\n').Take(16));
+ if (!string.IsNullOrEmpty(mappings[Template.HeaderField]))
+ mappings[Template.HeaderField] = string.Join("\n", mappings[Template.HeaderField].Split('\n').Take(16));
- if (GetSaturnBuildInfo(mappings[Template.SegaHeaderField], out string saturnSerial, out string version, out string buildDate))
+ if (GetSaturnBuildInfo(mappings[Template.HeaderField], out string saturnSerial, out string version, out string buildDate))
{
mappings[Template.DiscSerialField] = saturnSerial ?? "";
mappings[Template.VersionField] = version ?? "";
- mappings[Template.SegaBuildDateField] = buildDate ?? "";
+ mappings[Template.EXEDateBuildDate] = buildDate ?? "";
}
break;
case KnownSystem.SonyPlayStation:
- mappings[Template.PlaystationEXEDateField] = GetPlayStationEXEDate(Drive.Letter) ?? "";
+ mappings[Template.EXEDateBuildDate] = GetPlayStationEXEDate(Drive.Letter) ?? "";
mappings[Template.PlayStationEDCField] = GetMissingEDCCount(combinedBase + ".img_EdcEcc.txt") > 0 ? "No" : "Yes";
mappings[Template.PlayStationAntiModchipField] = GetAntiModchipDetected(combinedBase + "_disc.txt") ? "Yes" : "No";
mappings[Template.PlayStationLibCryptField] = "No";
@@ -544,7 +572,8 @@ namespace DICUI.Utilities
break;
case KnownSystem.SonyPlayStation2:
- mappings[Template.PlaystationEXEDateField] = GetPlayStationEXEDate(Drive.Letter) ?? "";
+ mappings[Template.PlaystationLanguageSelectionViaField] = "Bios settings, Language selector, Options menu";
+ mappings[Template.EXEDateBuildDate] = GetPlayStationEXEDate(Drive.Letter) ?? "";
mappings[Template.VersionField] = GetPlayStation2Version(Drive.Letter) ?? "";
break;
}
@@ -601,6 +630,10 @@ namespace DICUI.Utilities
mappings[Template.LayerbreakField] = layerbreak;
}
+ // Bluray-specific options
+ if (Type == MediaType.BluRay)
+ mappings[Template.PICField] = GetPIC(Path.Combine(OutputDirectory, "PIC.bin")) ?? "";
+
// System-specific options
switch (System)
{
@@ -624,9 +657,17 @@ namespace DICUI.Utilities
}
break;
+
+ case KnownSystem.BDVideo:
+ mappings[Template.CopyProtectionField] = Template.RequiredIfExistsValue;
+ break;
case KnownSystem.DVDVideo:
mappings[Template.CopyProtectionField] = GetDVDProtection(combinedBase + "_CSSKey.txt", combinedBase + "_disc.txt") ?? "";
break;
+ case KnownSystem.KonamieAmusement:
+ case KnownSystem.KonamiFirebeat:
+ mappings[Template.EXEDateBuildDate] = Template.RequiredValue;
+ break;
case KnownSystem.MicrosoftXBOX:
if (GetXBOXAuxInfo(combinedBase + "_disc.txt", out string dmihash, out string pfihash, out string sshash, out string ss, out string ssver))
{
@@ -661,16 +702,31 @@ namespace DICUI.Utilities
}
break;
case KnownSystem.SonyPlayStation2:
- mappings[Template.PlaystationEXEDateField] = GetPlayStationEXEDate(Drive.Letter) ?? "";
+ mappings[Template.EXEDateBuildDate] = GetPlayStationEXEDate(Drive.Letter) ?? "";
mappings[Template.VersionField] = GetPlayStation2Version(Drive.Letter) ?? "";
break;
+ case KnownSystem.SonyPlayStation3:
+ mappings[Template.PlayStation3WiiDiscKeyField] = Template.RequiredValue;
+ mappings[Template.PlayStation3DiscIDField] = Template.RequiredValue;
+ break;
case KnownSystem.SonyPlayStation4:
- mappings[Template.PlayStation4PICField] = GetPlayStation4PIC(Path.Combine(OutputDirectory, "PIC.bin")) ?? "";
mappings[Template.VersionField] = GetPlayStation4Version(Drive.Letter) ?? "";
break;
+ case KnownSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem:
+ mappings[Template.CopyProtectionField] = Template.RequiredIfExistsValue;
+ break;
}
break;
+ case MediaType.NintendoGameCubeGameDisc:
+ mappings[Template.GameCubeWiiBCAField] = Template.RequiredValue;
+ break;
+
+ case MediaType.NintendoWiiOpticalDisc:
+ mappings[Template.PlayStation3WiiDiscKeyField] = Template.RequiredValue;
+ mappings[Template.GameCubeWiiBCAField] = Template.RequiredValue;
+ break;
+
case MediaType.UMD:
mappings[Template.PVDField] = GetPVD(combinedBase + "_mainInfo.txt") ?? "";
mappings[Template.DATField] = Template.RequiredValue + " [Not automatically generated for UMD]";
@@ -679,7 +735,14 @@ namespace DICUI.Utilities
mappings[Template.TitleField] = title ?? "";
mappings[Template.VersionField] = umdversion ?? "";
if (!String.IsNullOrWhiteSpace(umdlayer))
+ {
mappings[Template.LayerbreakField] = umdlayer ?? "";
+ mappings[Template.MediaTypeField] += "-DL";
+ }
+ else
+ {
+ mappings[Template.MediaTypeField] += "-SL";
+ }
}
break;
@@ -693,7 +756,6 @@ namespace DICUI.Utilities
///
/// Information dictionary that should contain normalized values
/// List of strings representing each line of an output file, null on error
- /// TODO: Get full list of customizable stuff for other systems
private List FormatOutputData(Dictionary info)
{
// Check to see if the inputs are valid
@@ -708,6 +770,7 @@ namespace DICUI.Utilities
List output = new List
{
Template.TitleField + ": " + info[Template.TitleField],
+ Template.ForeignTitleField + ": " + info[Template.ForeignTitleField],
Template.DiscNumberField + ": " + info[Template.DiscNumberField],
Template.DiscTitleField + ": " + info[Template.DiscTitleField],
Template.SystemField + ": " + info[Template.SystemField],
@@ -718,147 +781,122 @@ namespace DICUI.Utilities
Template.DiscSerialField + ": " + info[Template.DiscSerialField]
};
- switch (System)
- {
- case KnownSystem.SegaCDMegaCD:
- case KnownSystem.SegaSaturn:
- output.Add(Template.SegaBuildDateField + ": " + info[Template.SegaBuildDateField]);
- break;
- case KnownSystem.SonyPlayStation:
- case KnownSystem.SonyPlayStation2:
- output.Add(Template.PlaystationEXEDateField + ": " + info[Template.PlaystationEXEDateField]);
- break;
- }
+ // Known as EXE Date and Build Date depending on the form
+ if (info.ContainsKey(Template.EXEDateBuildDate))
+ output.Add(Template.EXEDateBuildDate + ": " + info[Template.EXEDateBuildDate]);
+
output.Add("Ringcode Information:");
- switch (Type)
+
+ // If we have a dual-layer disc
+ if (info.ContainsKey(Template.LayerbreakField))
{
- case MediaType.CDROM:
- case MediaType.GDROM:
- case MediaType.DVD:
- case MediaType.HDDVD:
- case MediaType.BluRay:
- // If we have a dual-layer disc
- if (info.ContainsKey(Template.LayerbreakField))
- {
- output.Add("\tOuter " + Template.MasteringRingField + ": " + info["Outer " + Template.MasteringRingField]);
- output.Add("\tInner " + Template.MasteringRingField + ": " + info["Inner " + Template.MasteringRingField]);
- output.Add("\tOuter " + Template.MasteringSIDField + ": " + info["Outer " + Template.MasteringSIDField]);
- output.Add("\tInner " + Template.MasteringSIDField + ": " + info["Inner " + Template.MasteringSIDField]);
- output.Add("\tData-Side " + Template.MouldSIDField + ": " + info["Data-Side " + Template.MouldSIDField]);
- output.Add("\tLabel-Side " + Template.MouldSIDField + ": " + info["Label-Side " + Template.MouldSIDField]);
- output.Add("\t" + Template.AdditionalMouldField + ": " + info[Template.AdditionalMouldField]);
- output.Add("\tOuter " + Template.ToolstampField + ": " + info["Outer " + Template.ToolstampField]);
- output.Add("\tInner " + Template.ToolstampField + ": " + info["Inner " + Template.ToolstampField]);
- }
- // If we have a single-layer disc
- else
- {
- output.Add("\t" + Template.MasteringRingField + ": " + info[Template.MasteringRingField]);
- output.Add("\t" + Template.MasteringSIDField + ": " + info[Template.MasteringSIDField]);
- output.Add("\tData-Side " + Template.MouldSIDField + ": " + info["Data-Side " + Template.MouldSIDField]);
- output.Add("\tLabel-Side " + Template.MouldSIDField + ": " + info["Label-Side " + Template.MouldSIDField]);
- output.Add("\t" + Template.AdditionalMouldField + ": " + info[Template.AdditionalMouldField]);
- output.Add("\t" + Template.ToolstampField + ": " + info[Template.ToolstampField]);
- }
- break;
+ output.Add("\tOuter " + Template.MasteringRingField + ": " + info["Outer " + Template.MasteringRingField]);
+ output.Add("\tInner " + Template.MasteringRingField + ": " + info["Inner " + Template.MasteringRingField]);
+ output.Add("\tOuter " + Template.MasteringSIDField + ": " + info["Outer " + Template.MasteringSIDField]);
+ output.Add("\tInner " + Template.MasteringSIDField + ": " + info["Inner " + Template.MasteringSIDField]);
+ output.Add("\tData-Side " + Template.MouldSIDField + ": " + info["Data-Side " + Template.MouldSIDField]);
+ output.Add("\tLabel-Side " + Template.MouldSIDField + ": " + info["Label-Side " + Template.MouldSIDField]);
+ output.Add("\t" + Template.AdditionalMouldField + ": " + info[Template.AdditionalMouldField]);
+ output.Add("\tOuter " + Template.ToolstampField + ": " + info["Outer " + Template.ToolstampField]);
+ output.Add("\tInner " + Template.ToolstampField + ": " + info["Inner " + Template.ToolstampField]);
}
+ // If we have a single-layer disc
+ else
+ {
+ output.Add("\t" + Template.MasteringRingField + ": " + info[Template.MasteringRingField]);
+ output.Add("\t" + Template.MasteringSIDField + ": " + info[Template.MasteringSIDField]);
+ output.Add("\tData-Side " + Template.MouldSIDField + ": " + info["Data-Side " + Template.MouldSIDField]);
+ output.Add("\tLabel-Side " + Template.MouldSIDField + ": " + info["Label-Side " + Template.MouldSIDField]);
+ output.Add("\t" + Template.AdditionalMouldField + ": " + info[Template.AdditionalMouldField]);
+ output.Add("\t" + Template.ToolstampField + ": " + info[Template.ToolstampField]);
+ }
+
output.Add(Template.BarcodeField + ": " + info[Template.BarcodeField]);
- switch (System)
- {
- case KnownSystem.AppleMacintosh:
- case KnownSystem.EnhancedCD:
- case KnownSystem.IBMPCCompatible:
- case KnownSystem.RainbowDisc:
- output.Add(Template.ISBNField + ": " + info[Template.ISBNField]);
- break;
- }
- switch (Type)
- {
- case MediaType.CDROM:
- case MediaType.GDROM:
- output.Add(Template.ErrorCountField + ": " + info[Template.ErrorCountField]);
- break;
- }
+ if (info.ContainsKey(Template.ISBNField))
+ output.Add(Template.ISBNField + ": " + info[Template.ISBNField]);
+
+ if (info.ContainsKey(Template.ErrorCountField))
+ output.Add(Template.ErrorCountField + ": " + info[Template.ErrorCountField]);
+
output.Add(Template.CommentsField + ": " + info[Template.CommentsField]);
output.Add(Template.ContentsField + ": " + info[Template.ContentsField]);
output.Add(Template.VersionField + ": " + info[Template.VersionField]);
output.Add(Template.EditionField + ": " + info[Template.EditionField]);
- switch (System)
+
+ if (info.ContainsKey(Template.HeaderField))
{
- case KnownSystem.SegaCDMegaCD:
- case KnownSystem.SegaSaturn:
- output.Add(Template.SegaHeaderField + ":"); output.Add("");
- output.AddRange(info[Template.SegaHeaderField].Split('\n')); output.Add("");
- break;
- case KnownSystem.SonyPlayStation:
- output.Add(Template.PlayStationEDCField + ": " + info[Template.PlayStationEDCField]);
- output.Add(Template.PlayStationAntiModchipField + ": " + info[Template.PlayStationAntiModchipField]);
- output.Add(Template.PlayStationLibCryptField + ": " + info[Template.PlayStationLibCryptField]);
- break;
+ output.Add(Template.HeaderField + ":"); output.Add("");
+ output.AddRange(info[Template.HeaderField].Split('\n')); output.Add("");
}
- switch (Type)
+
+ if (info.ContainsKey(Template.PlayStationEDCField))
{
- case MediaType.DVD:
- case MediaType.BluRay:
- case MediaType.UMD:
- // If we have a dual-layer disc
- if (info.ContainsKey(Template.LayerbreakField))
- {
- output.Add(Template.LayerbreakField + ": " + info[Template.LayerbreakField]);
- }
- break;
+ output.Add(Template.PlayStationEDCField + ": " + info[Template.PlayStationEDCField]);
+ output.Add(Template.PlayStationAntiModchipField + ": " + info[Template.PlayStationAntiModchipField]);
+ output.Add(Template.PlayStationLibCryptField + ": " + info[Template.PlayStationLibCryptField]);
}
+
+ if (info.ContainsKey(Template.LayerbreakField))
+ output.Add(Template.LayerbreakField + ": " + info[Template.LayerbreakField]);
+
output.Add(Template.PVDField + ":"); output.Add("");
output.AddRange(info[Template.PVDField].Split('\n'));
- switch (System)
+
+ if (info.ContainsKey(Template.PlayStation3WiiDiscKeyField))
+ output.Add(Template.PlayStation3WiiDiscKeyField + ": " + info[Template.PlayStation3WiiDiscKeyField]);
+
+ if (info.ContainsKey(Template.PlayStation3DiscIDField))
+ output.Add(Template.PlayStation3DiscIDField + ": " + info[Template.PlayStation3DiscIDField]);
+
+ if (info.ContainsKey(Template.PICField))
{
- case KnownSystem.AppleMacintosh:
- case KnownSystem.EnhancedCD:
- case KnownSystem.IBMPCCompatible:
- case KnownSystem.RainbowDisc:
- output.Add(Template.CopyProtectionField + ": " + info[Template.CopyProtectionField]); output.Add("");
- break;
- case KnownSystem.DVDVideo:
- output.Add(Template.CopyProtectionField + ":"); output.Add("");
- output.AddRange(info[Template.CopyProtectionField].Split('\n'));
- break;
- case KnownSystem.MicrosoftXBOX:
- case KnownSystem.MicrosoftXBOX360:
- if (Type == MediaType.DVD)
- {
- output.Add(Template.XBOXDMIHash + ": " + info[Template.XBOXDMIHash]);
- output.Add(Template.XBOXPFIHash + ": " + info[Template.XBOXPFIHash]);
- output.Add(Template.XBOXSSHash + ": " + info[Template.XBOXSSHash]); output.Add("");
- output.Add(Template.XBOXSSVersion + ": " + info[Template.XBOXSSVersion]);
- output.Add(Template.XBOXSSRanges + ":"); output.Add("");
- output.AddRange(info[Template.XBOXSSRanges].Split('\n'));
- }
- break;
- case KnownSystem.SonyPlayStation4:
- output.Add(Template.PlayStation4PICField + ":"); output.Add("");
- output.AddRange(info[Template.PlayStation4PICField].Split('\n'));
- break;
+ output.Add(Template.PICField + ":"); output.Add("");
+ output.AddRange(info[Template.PICField].Split('\n'));
}
+
+ if (info.ContainsKey(Template.GameCubeWiiBCAField))
+ {
+ output.Add(Template.GameCubeWiiBCAField + ":"); output.Add("");
+ output.AddRange(info[Template.GameCubeWiiBCAField].Split('\n'));
+ }
+
+ if (info.ContainsKey(Template.CopyProtectionField))
+ {
+ output.Add(Template.CopyProtectionField + ":"); output.Add("");
+ output.AddRange(info[Template.CopyProtectionField].Split('\n'));
+ }
+
+ if (info.ContainsKey(Template.XBOXDMIHash))
+ {
+ output.Add(Template.XBOXDMIHash + ": " + info[Template.XBOXDMIHash]);
+ output.Add(Template.XBOXPFIHash + ": " + info[Template.XBOXPFIHash]);
+ output.Add(Template.XBOXSSHash + ": " + info[Template.XBOXSSHash]); output.Add("");
+ output.Add(Template.XBOXSSVersion + ": " + info[Template.XBOXSSVersion]);
+ output.Add(Template.XBOXSSRanges + ":"); output.Add("");
+ output.AddRange(info[Template.XBOXSSRanges].Split('\n'));
+ }
+
if (info.ContainsKey(Template.SubIntentionField))
{
output.Add(Template.SubIntentionField + ":"); output.Add("");
output.AddRange(info[Template.SubIntentionField].Split('\n')); output.Add("");
}
+
if (info.ContainsKey(Template.DATField))
{
output.Add(Template.DATField + ":"); output.Add("");
output.AddRange(info[Template.DATField].Split('\n')); output.Add("");
}
- switch (Type)
+
+ if (info.ContainsKey(Template.CuesheetField))
{
- case MediaType.CDROM:
- case MediaType.GDROM:
- output.Add(Template.CuesheetField + ":"); output.Add("");
- output.AddRange(info[Template.CuesheetField].Split('\n')); output.Add("");
- output.Add(Template.WriteOffsetField + ": " + info[Template.WriteOffsetField]);
- break;
+ output.Add(Template.CuesheetField + ":"); output.Add("");
+ output.AddRange(info[Template.CuesheetField].Split('\n')); output.Add("");
}
+ if (info.ContainsKey(Template.WriteOffsetField))
+ output.Add(Template.WriteOffsetField + ": " + info[Template.WriteOffsetField]);
+
return output;
}
catch
@@ -1344,7 +1382,7 @@ namespace DICUI.Utilities
/// Path to the PIC.bin file associated with the dump
/// PIC data as a hex string if possible, null on error
/// https://stackoverflow.com/questions/9932096/add-separator-to-string-at-every-n-characters
- private string GetPlayStation4PIC(string picPath)
+ private string GetPIC(string picPath)
{
// If the file doesn't exist, we can't get the info
if (!File.Exists(picPath))
diff --git a/DICUI.Library/Utilities/Validators.cs b/DICUI.Library/Utilities/Validators.cs
index 7b2efa16..4804d9f1 100644
--- a/DICUI.Library/Utilities/Validators.cs
+++ b/DICUI.Library/Utilities/Validators.cs
@@ -617,6 +617,11 @@ namespace DICUI.Utilities
types.Add(MediaType.HDDVD);
break;
+ // UNKNOWN
+ case KnownSystem.NavisoftNaviken21:
+ types.Add(MediaType.CDROM);
+ break;
+
// UNKNOWN
case KnownSystem.PalmOS:
types.Add(MediaType.CDROM);