mirror of
https://github.com/SabreTools/MPF.git
synced 2026-07-02 17:24:48 +00:00
Add new system, better submissioninfo, future
This commit is contained in:
@@ -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";
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user