Add new system, better submissioninfo, future

This commit is contained in:
Matt Nadareski
2019-05-11 22:32:22 -07:00
parent 44e75a50d7
commit f372ec4ccd
5 changed files with 334 additions and 147 deletions

View File

@@ -59,6 +59,96 @@
public const string VideoNow = "/vn";
}
/// <summary>
/// Internal names of fields on the New Disc page
/// </summary>
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";
}
/// <summary>
/// Template field values for submission info
/// </summary>
@@ -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";

View File

@@ -1,5 +1,23 @@
namespace DICUI.Data
{
/// <summary>
/// Category for Redump
/// </summary>
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,
}
/// <summary>
/// Supported DIC commands
/// </summary>
@@ -61,6 +79,16 @@
VideoNow,
}
/// <summary>
/// Dump status for Redump
/// </summary>
public enum DumpStatus
{
PossibleBadDumpYellow = 3,
OriginalMediaBlue = 4,
TwoOrMoreDumpsGreen = 5,
}
/// <summary>
/// Known systems
/// </summary>
@@ -251,6 +279,7 @@
DVDVideo,
EnhancedCD,
HDDVDVideo,
NavisoftNaviken21,
PalmOS,
PhilipsCDiDigitalVideo,
PhotoCD,
@@ -331,4 +360,13 @@
Cartridge,
CED,
}
/// <summary>
/// Generic yes/no values for Redump
/// </summary>
public enum RedumpYesNo
{
No = 1,
Yes = 2,
}
}

View File

@@ -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;

View File

@@ -435,6 +435,7 @@ namespace DICUI.Utilities
Dictionary<string, string> mappings = new Dictionary<string, string>
{
{ 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
/// </summary>
/// <param name="info">Information dictionary that should contain normalized values</param>
/// <returns>List of strings representing each line of an output file, null on error</returns>
/// <remarks>TODO: Get full list of customizable stuff for other systems</remarks>
private List<string> FormatOutputData(Dictionary<string, string> info)
{
// Check to see if the inputs are valid
@@ -708,6 +770,7 @@ namespace DICUI.Utilities
List<string> output = new List<string>
{
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
/// <param name="picPath">Path to the PIC.bin file associated with the dump</param>
/// <returns>PIC data as a hex string if possible, null on error</returns>
/// <remarks>https://stackoverflow.com/questions/9932096/add-separator-to-string-at-every-n-characters</remarks>
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))

View File

@@ -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);