From 1c525a6d2eb57fc2a66b03ca284fe7fa1a6153dd Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 18 Aug 2021 22:13:38 -0700 Subject: [PATCH] Update library, move more things there --- MPF.Check/Program.cs | 26 +- MPF.Library/Aaru/Parameters.cs | 20 +- MPF.Library/CleanRIp/Parameters.cs | 2 +- MPF.Library/Converters/EnumConverter.cs | 1771 +---------------- .../Converters/KnownSystemConverter.cs | 28 - MPF.Library/DD/Parameters.cs | 12 +- MPF.Library/Data/BaseParameters.cs | 6 +- MPF.Library/Data/DumpEnvironment.cs | 106 +- MPF.Library/Data/Enumerations.cs | 235 --- MPF.Library/Data/Options.cs | 9 +- MPF.Library/DiscImageCreator/Converters.cs | 19 +- MPF.Library/DiscImageCreator/Parameters.cs | 70 +- MPF.Library/UmdImageCreator/Parameters.cs | 2 +- MPF.Library/Utilities/EnumExtensions.cs | 72 +- MPF.Library/Utilities/Validators.cs | 286 +-- MPF.Test/Converters/EnumConverterTest.cs | 57 +- .../Converters/KnownSystemExtensionsTest.cs | 31 +- MPF.Test/Utilities/DumpEnvironmentTest.cs | 3 +- MPF.Test/Utilities/ParametersTest.cs | 39 +- MPF.Test/Utilities/ValidatorsTest.cs | 23 +- MPF/ComboBoxItems/KnownSystemComboBoxItem.cs | 39 +- MPF/ViewModels/DiscInformationViewModel.cs | 28 +- MPF/ViewModels/MainViewModel.cs | 21 +- MPF/ViewModels/OptionsViewModel.cs | 6 +- MPF/Windows/DiscInformationWindow.xaml.cs | 4 +- .../Attributes/HumanReadableAttribute.cs | 11 + RedumpLib/Attributes/SystemAttribute.cs | 7 + RedumpLib/Converters/DiscTypeConverter.cs | 32 + RedumpLib/Converters/YesNoConverter.cs | 32 + RedumpLib/Data/Enumerations.cs | 723 +++++-- RedumpLib/Data/Extensions.cs | 925 ++++++--- .../Data/SubmissionInfo.cs | 17 +- RedumpLib/Web/RedumpWebClient.cs | 8 +- 33 files changed, 1814 insertions(+), 2856 deletions(-) delete mode 100644 MPF.Library/Converters/KnownSystemConverter.cs create mode 100644 RedumpLib/Converters/DiscTypeConverter.cs create mode 100644 RedumpLib/Converters/YesNoConverter.cs rename {MPF.Library => RedumpLib}/Data/SubmissionInfo.cs (98%) diff --git a/MPF.Check/Program.cs b/MPF.Check/Program.cs index bc0adb8b..f5a32839 100644 --- a/MPF.Check/Program.cs +++ b/MPF.Check/Program.cs @@ -1,9 +1,11 @@ using System; using System.IO; +using System.Linq; using BurnOutSharp; using MPF.Converters; using MPF.Data; using MPF.Utilities; +using RedumpLib.Data; using RedumpLib.Web; namespace MPF.Check @@ -34,7 +36,7 @@ namespace MPF.Check } else if (args[0] == "-ls" || args[0] == "--listsystems") { - ListKnownSystems(); + ListSystems(); Console.ReadLine(); return; } @@ -54,9 +56,9 @@ namespace MPF.Check return; } - // Check the KnownSystem - var knownSystem = EnumConverter.ToKnownSystem(args[1].Trim('"')); - if (knownSystem == KnownSystem.NONE) + // Check the RedumpSystem + var knownSystem = Extensions.ToRedumpSystem(args[1].Trim('"')); + if (knownSystem == null) { DisplayHelp($"{args[1]} is not a recognized system"); return; @@ -244,17 +246,19 @@ namespace MPF.Check } /// - /// List all known systems with their short usable names + /// List all systems with their short usable names /// - private static void ListKnownSystems() + private static void ListSystems() { Console.WriteLine("Supported Known Systems:"); - foreach (var val in Enum.GetValues(typeof(KnownSystem))) - { - if (((KnownSystem)val) == KnownSystem.NONE) - continue; + var knownSystems = Enum.GetValues(typeof(RedumpSystem)) + .OfType() + .Where(s => s != null && !s.IsMarker() && s.GetCategory() != SystemCategory.NONE) + .OrderBy(s => s.LongName() ?? string.Empty); - Console.WriteLine($"{((KnownSystem?)val).ShortName()} - {((KnownSystem?)val).LongName()}"); + foreach (var val in knownSystems) + { + Console.WriteLine($"{val.ShortName()} - {val.LongName()}"); } } diff --git a/MPF.Library/Aaru/Parameters.cs b/MPF.Library/Aaru/Parameters.cs index 7133cec2..84579398 100644 --- a/MPF.Library/Aaru/Parameters.cs +++ b/MPF.Library/Aaru/Parameters.cs @@ -128,7 +128,7 @@ namespace MPF.Aaru public Parameters(string parameters) : base(parameters) { } /// - public Parameters(KnownSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options) + public Parameters(RedumpSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options) : base(system, type, driveLetter, filename, driveSpeed, options) { } @@ -263,12 +263,12 @@ namespace MPF.Aaru // TODO: Can we get PS1 EDC status? // TODO: Can we get PS1 LibCrypt status? - case KnownSystem.DVDAudio: - case KnownSystem.DVDVideo: + case RedumpSystem.DVDAudio: + case RedumpSystem.DVDVideo: info.CopyProtection.Protection = GetDVDProtection(sidecar) ?? ""; break; - case KnownSystem.KonamiPython2: + case RedumpSystem.KonamiPython2: if (GetPlayStationExecutableInfo(drive?.Letter, out string pythonTwoSerial, out Region? pythonTwoRegion, out string pythonTwoDate)) { info.CommonDiscInfo.Comments += $"Internal Disc Serial: {pythonTwoSerial}\n"; @@ -279,7 +279,7 @@ namespace MPF.Aaru info.VersionAndEditions.Version = GetPlayStation2Version(drive?.Letter) ?? ""; break; - case KnownSystem.MicrosoftXBOX: + case RedumpSystem.MicrosoftXbox: if (GetXgdAuxInfo(sidecar, out string dmihash, out string pfihash, out string sshash, out string ss, out string ssver)) { info.CommonDiscInfo.Comments += $"{Template.XBOXDMIHash}: {dmihash ?? ""}\n" + @@ -298,7 +298,7 @@ namespace MPF.Aaru break; - case KnownSystem.MicrosoftXBOX360: + case RedumpSystem.MicrosoftXbox360: if (GetXgdAuxInfo(sidecar, out string dmi360hash, out string pfi360hash, out string ss360hash, out string ss360, out string ssver360)) { info.CommonDiscInfo.Comments += $"{Template.XBOXDMIHash}: {dmi360hash ?? ""}\n" + @@ -316,7 +316,7 @@ namespace MPF.Aaru } break; - case KnownSystem.SonyPlayStation: + case RedumpSystem.SonyPlayStation: if (GetPlayStationExecutableInfo(drive?.Letter, out string playstationSerial, out Region? playstationRegion, out string playstationDate)) { info.CommonDiscInfo.Comments += $"Internal Disc Serial: {playstationSerial}\n"; @@ -327,7 +327,7 @@ namespace MPF.Aaru info.CopyProtection.AntiModchip = GetPlayStationAntiModchipDetected(drive?.Letter) ? YesNo.Yes : YesNo.No; break; - case KnownSystem.SonyPlayStation2: + case RedumpSystem.SonyPlayStation2: if (GetPlayStationExecutableInfo(drive?.Letter, out string playstationTwoSerial, out Region? playstationTwoRegion, out string playstationTwoDate)) { info.CommonDiscInfo.Comments += $"Internal Disc Serial: {playstationTwoSerial}\n"; @@ -338,11 +338,11 @@ namespace MPF.Aaru info.VersionAndEditions.Version = GetPlayStation2Version(drive?.Letter) ?? ""; break; - case KnownSystem.SonyPlayStation4: + case RedumpSystem.SonyPlayStation4: info.VersionAndEditions.Version = GetPlayStation4Version(drive?.Letter) ?? ""; break; - case KnownSystem.SonyPlayStation5: + case RedumpSystem.SonyPlayStation5: info.VersionAndEditions.Version = GetPlayStation5Version(drive?.Letter) ?? ""; break; } diff --git a/MPF.Library/CleanRIp/Parameters.cs b/MPF.Library/CleanRIp/Parameters.cs index 79768e9a..f9cda276 100644 --- a/MPF.Library/CleanRIp/Parameters.cs +++ b/MPF.Library/CleanRIp/Parameters.cs @@ -23,7 +23,7 @@ namespace MPF.CleanRip public Parameters(string parameters) : base(parameters) { } /// - public Parameters(KnownSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options) + public Parameters(RedumpSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options) : base(system, type, driveLetter, filename, driveSpeed, options) { } diff --git a/MPF.Library/Converters/EnumConverter.cs b/MPF.Library/Converters/EnumConverter.cs index d8f2fd97..0e4b0207 100644 --- a/MPF.Library/Converters/EnumConverter.cs +++ b/MPF.Library/Converters/EnumConverter.cs @@ -16,6 +16,40 @@ namespace MPF.Converters { #region Cross-enumeration conversions + /// + /// Convert master list of all media types to currently known Redump disc types + /// + /// MediaType value to check + /// DiscType if possible, null on error + public static DiscType? ToDiscType(this MediaType? mediaType) + { + switch (mediaType) + { + case MediaType.BluRay: + return DiscType.BD50; + case MediaType.CDROM: + return DiscType.CD; + case MediaType.DVD: + return DiscType.DVD9; + case MediaType.GDROM: + return DiscType.GDROM; + case MediaType.HDDVD: + return DiscType.HDDVDSL; + // case MediaType.MILCD: // TODO: Support this? + // return DiscType.MILCD; + case MediaType.NintendoGameCubeGameDisc: + return DiscType.NintendoGameCubeGameDisc; + case MediaType.NintendoWiiOpticalDisc: + return DiscType.NintendoWiiOpticalDiscDL; + case MediaType.NintendoWiiUOpticalDisc: + return DiscType.NintendoWiiUOpticalDiscSL; + case MediaType.UMD: + return DiscType.UMDDL; + default: + return null; + } + } + /// /// Convert drive type to internal version, if possible /// @@ -36,181 +70,6 @@ namespace MPF.Converters } } - /// - /// Convert currently known Redump systems to the master list of systems - /// - /// Redump system value to check - /// KnownSystem if possible, null on error - public static KnownSystem? ToKnownSystem(this RedumpSystem? system) - { - switch (system) - { - // Special BIOS sets - case RedumpSystem.MicrosoftXboxBIOS: - return KnownSystem.MicrosoftXBOX; - case RedumpSystem.NintendoGameCubeBIOS: - return KnownSystem.NintendoGameCube; - case RedumpSystem.SonyPlayStationBIOS: - return KnownSystem.SonyPlayStation; - case RedumpSystem.SonyPlayStation2BIOS: - return KnownSystem.SonyPlayStation2; - - // Regular systems - case RedumpSystem.AcornArchimedes: - return KnownSystem.AcornArchimedes; - case RedumpSystem.AppleMacintosh: - return KnownSystem.AppleMacintosh; - case RedumpSystem.AudioCD: - return KnownSystem.AudioCD; - case RedumpSystem.BandaiPippin: - return KnownSystem.BandaiApplePippin; - case RedumpSystem.BandaiPlaydiaQuickInteractiveSystem: - return KnownSystem.BandaiPlaydiaQuickInteractiveSystem; - case RedumpSystem.BDVideo: - return KnownSystem.BDVideo; - case RedumpSystem.CommodoreAmigaCD: - return KnownSystem.CommodoreAmiga; - case RedumpSystem.CommodoreAmigaCD32: - return KnownSystem.CommodoreAmigaCD32; - case RedumpSystem.CommodoreAmigaCDTV: - return KnownSystem.CommodoreAmigaCDTV; - case RedumpSystem.DVDVideo: - return KnownSystem.DVDVideo; - case RedumpSystem.EnhancedCD: - return KnownSystem.EnhancedCD; - case RedumpSystem.FujitsuFMTownsseries: - return KnownSystem.FujitsuFMTowns; - case RedumpSystem.funworldPhotoPlay: - return KnownSystem.funworldPhotoPlay; - case RedumpSystem.HasbroVideoNow: - return KnownSystem.HasbroVideoNow; - case RedumpSystem.HasbroVideoNowColor: - return KnownSystem.HasbroVideoNowColor; - case RedumpSystem.HasbroVideoNowJr: - return KnownSystem.HasbroVideoNowJr; - case RedumpSystem.HasbroVideoNowXP: - return KnownSystem.HasbroVideoNowXP; - case RedumpSystem.HDDVDVideo: - return KnownSystem.HDDVDVideo; - case RedumpSystem.IBMPCcompatible: - return KnownSystem.IBMPCCompatible; - case RedumpSystem.IncredibleTechnologiesEagle: - return KnownSystem.IncredibleTechnologiesEagle; - case RedumpSystem.KonamieAmusement: - return KnownSystem.KonamieAmusement; - case RedumpSystem.KonamiFireBeat: - return KnownSystem.KonamiFirebeat; - case RedumpSystem.KonamiM2: - return KnownSystem.KonamiM2; - case RedumpSystem.KonamiSystem573: - return KnownSystem.KonamiSystem573; - case RedumpSystem.KonamiSystemGV: - return KnownSystem.KonamiGVSystem; - case RedumpSystem.KonamiTwinkle: - return KnownSystem.KonamiTwinkle; - case RedumpSystem.MattelFisherPriceiXL: - return KnownSystem.MattelFisherPriceiXL; - case RedumpSystem.MattelHyperScan: - return KnownSystem.MattelHyperscan; - case RedumpSystem.MemorexVisualInformationSystem: - return KnownSystem.TandyMemorexVisualInformationSystem; - case RedumpSystem.MicrosoftXbox: - return KnownSystem.MicrosoftXBOX; - case RedumpSystem.MicrosoftXbox360: - return KnownSystem.MicrosoftXBOX360; - case RedumpSystem.MicrosoftXboxOne: - return KnownSystem.MicrosoftXBOXOne; - case RedumpSystem.NECPC88series: - return KnownSystem.NECPC88; - case RedumpSystem.NECPC98series: - return KnownSystem.NECPC98; - case RedumpSystem.NECPCEngineCDTurboGrafxCD: - return KnownSystem.NECPCEngineTurboGrafxCD; - case RedumpSystem.NECPCFXPCFXGA: - return KnownSystem.NECPCFX; - case RedumpSystem.NamcoSegaNintendoTriforce: - return KnownSystem.NamcoSegaNintendoTriforce; - case RedumpSystem.NamcoSystem12: - return KnownSystem.NamcoSystem12; - case RedumpSystem.NamcoSystem246: - return KnownSystem.NamcoCapcomTaitoSystem246; - case RedumpSystem.NavisoftNaviken21: - return KnownSystem.NavisoftNaviken21; - case RedumpSystem.NintendoGameCube: - return KnownSystem.NintendoGameCube; - case RedumpSystem.NintendoWii: - return KnownSystem.NintendoWii; - case RedumpSystem.NintendoWiiU: - return KnownSystem.NintendoWiiU; - case RedumpSystem.PalmOS: - return KnownSystem.PalmOS; - case RedumpSystem.Panasonic3DOInteractiveMultiplayer: - return KnownSystem.Panasonic3DOInteractiveMultiplayer; - case RedumpSystem.PanasonicM2: - return KnownSystem.PanasonicM2; - case RedumpSystem.PhilipsCDi: - return KnownSystem.PhilipsCDi; - case RedumpSystem.PhotoCD: - return KnownSystem.PhotoCD; - case RedumpSystem.PlayStationGameSharkUpdates: - return KnownSystem.PlayStationGameSharkUpdates; - case RedumpSystem.PocketPC: - return KnownSystem.PocketPC; - case RedumpSystem.SegaChihiro: - return KnownSystem.SegaChihiro; - case RedumpSystem.SegaDreamcast: - return KnownSystem.SegaDreamcast; - case RedumpSystem.SegaLindbergh: - return KnownSystem.SegaLindbergh; - case RedumpSystem.SegaMegaCDSegaCD: - return KnownSystem.SegaCDMegaCD; - case RedumpSystem.SegaNaomi: - return KnownSystem.SegaNaomi; - case RedumpSystem.SegaNaomi2: - return KnownSystem.SegaNaomi2; - case RedumpSystem.SegaPrologue21MultimediaKaraokeSystem: - return KnownSystem.SegaPrologue21; - case RedumpSystem.SegaRingEdge: - return KnownSystem.SegaRingEdge; - case RedumpSystem.SegaRingEdge2: - return KnownSystem.SegaRingEdge2; - case RedumpSystem.SegaSaturn: - return KnownSystem.SegaSaturn; - case RedumpSystem.SegaTitanVideo: - return KnownSystem.SegaTitanVideo; - case RedumpSystem.SharpX68000: - return KnownSystem.SharpX68000; - case RedumpSystem.SNKNeoGeoCD: - return KnownSystem.SNKNeoGeoCD; - case RedumpSystem.SonyPlayStation: - return KnownSystem.SonyPlayStation; - case RedumpSystem.SonyPlayStation2: - return KnownSystem.SonyPlayStation2; - case RedumpSystem.SonyPlayStation3: - return KnownSystem.SonyPlayStation3; - case RedumpSystem.SonyPlayStation4: - return KnownSystem.SonyPlayStation4; - case RedumpSystem.SonyPlayStationPortable: - return KnownSystem.SonyPlayStationPortable; - case RedumpSystem.TABAustriaQuizard: - return KnownSystem.TABAustriaQuizard; - case RedumpSystem.TaoiKTV: - return KnownSystem.TaoiKTV; - case RedumpSystem.TomyKissSite: - return KnownSystem.TomyKissSite; - case RedumpSystem.VideoCD: - return KnownSystem.VideoCD; - case RedumpSystem.VMLabsNUON: - return KnownSystem.VMLabsNuon; - case RedumpSystem.VTechVFlashVSmilePro: - return KnownSystem.VTechVFlashVSmilePro; - case RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem: - return KnownSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem; - default: - return null; - } - } - #if NET_FRAMEWORK /// /// Convert IMAPI physical media type to a MediaType @@ -252,6 +111,44 @@ namespace MPF.Converters } #endif + /// + /// Convert currently known Redump disc types to master list of all media types + /// + /// DiscType value to check + /// MediaType if possible, null on error + public static MediaType? ToMediaType(this DiscType? discType) + { + switch (discType) + { + case DiscType.BD25: + case DiscType.BD50: + return MediaType.BluRay; + case DiscType.CD: + return MediaType.CDROM; + case DiscType.DVD5: + case DiscType.DVD9: + return MediaType.DVD; + case DiscType.GDROM: + return MediaType.GDROM; + case DiscType.HDDVDSL: + return MediaType.HDDVD; + // case DiscType.MILCD: // TODO: Support this? + // return MediaType.MILCD; + case DiscType.NintendoGameCubeGameDisc: + return MediaType.NintendoGameCubeGameDisc; + case DiscType.NintendoWiiOpticalDiscSL: + case DiscType.NintendoWiiOpticalDiscDL: + return MediaType.NintendoWiiOpticalDisc; + case DiscType.NintendoWiiUOpticalDiscSL: + return MediaType.NintendoWiiUOpticalDisc; + case DiscType.UMDSL: + case DiscType.UMDDL: + return MediaType.UMD; + default: + return null; + } + } + /// /// Convert physical media type to a MediaType /// @@ -294,170 +191,6 @@ namespace MPF.Converters } } - /// - /// Convert master list of all systems to currently known Redump systems - /// - /// KnownSystem value to check - /// RedumpSystem if possible, null on error - public static RedumpSystem? ToRedumpSystem(this KnownSystem? system) - { - switch (system) - { - case KnownSystem.AcornArchimedes: - return RedumpSystem.AcornArchimedes; - case KnownSystem.AppleMacintosh: - return RedumpSystem.AppleMacintosh; - case KnownSystem.AudioCD: - return RedumpSystem.AudioCD; - case KnownSystem.BandaiApplePippin: - return RedumpSystem.BandaiPippin; - case KnownSystem.BandaiPlaydiaQuickInteractiveSystem: - return RedumpSystem.BandaiPlaydiaQuickInteractiveSystem; - case KnownSystem.BDVideo: - return RedumpSystem.BDVideo; - case KnownSystem.CommodoreAmiga: - return RedumpSystem.CommodoreAmigaCD; - case KnownSystem.CommodoreAmigaCD32: - return RedumpSystem.CommodoreAmigaCD32; - case KnownSystem.CommodoreAmigaCDTV: - return RedumpSystem.CommodoreAmigaCDTV; - case KnownSystem.DVDVideo: - return RedumpSystem.DVDVideo; - case KnownSystem.EnhancedCD: - return RedumpSystem.EnhancedCD; - case KnownSystem.FujitsuFMTowns: - return RedumpSystem.FujitsuFMTownsseries; - case KnownSystem.funworldPhotoPlay: - return RedumpSystem.funworldPhotoPlay; - case KnownSystem.HasbroVideoNow: - return RedumpSystem.HasbroVideoNow; - case KnownSystem.HasbroVideoNowColor: - return RedumpSystem.HasbroVideoNowColor; - case KnownSystem.HasbroVideoNowJr: - return RedumpSystem.HasbroVideoNowJr; - case KnownSystem.HasbroVideoNowXP: - return RedumpSystem.HasbroVideoNowXP; - case KnownSystem.HDDVDVideo: - return RedumpSystem.HDDVDVideo; - case KnownSystem.IBMPCCompatible: - return RedumpSystem.IBMPCcompatible; - case KnownSystem.IncredibleTechnologiesEagle: - return RedumpSystem.IncredibleTechnologiesEagle; - case KnownSystem.KonamieAmusement: - return RedumpSystem.KonamieAmusement; - case KnownSystem.KonamiFirebeat: - return RedumpSystem.KonamiFireBeat; - case KnownSystem.KonamiM2: - return RedumpSystem.KonamiM2; - case KnownSystem.KonamiSystem573: - return RedumpSystem.KonamiSystem573; - case KnownSystem.KonamiGVSystem: - return RedumpSystem.KonamiSystemGV; - case KnownSystem.KonamiTwinkle: - return RedumpSystem.KonamiTwinkle; - case KnownSystem.MattelFisherPriceiXL: - return RedumpSystem.MattelFisherPriceiXL; - case KnownSystem.MattelHyperscan: - return RedumpSystem.MattelHyperScan; - case KnownSystem.TandyMemorexVisualInformationSystem: - return RedumpSystem.MemorexVisualInformationSystem; - case KnownSystem.MicrosoftXBOX: - return RedumpSystem.MicrosoftXbox; // RedumpSystem.MicrosoftXboxBIOS - case KnownSystem.MicrosoftXBOX360: - return RedumpSystem.MicrosoftXbox360; - case KnownSystem.MicrosoftXBOXOne: - return RedumpSystem.MicrosoftXboxOne; - case KnownSystem.NamcoSegaNintendoTriforce: - return RedumpSystem.NamcoSegaNintendoTriforce; - case KnownSystem.NamcoSystem12: - return RedumpSystem.NamcoSystem12; - case KnownSystem.NamcoCapcomTaitoSystem246: - return RedumpSystem.NamcoSystem246; - case KnownSystem.NavisoftNaviken21: - return RedumpSystem.NavisoftNaviken21; - case KnownSystem.NECPCEngineTurboGrafxCD: - return RedumpSystem.NECPCEngineCDTurboGrafxCD; - case KnownSystem.NECPC88: - return RedumpSystem.NECPC88series; - case KnownSystem.NECPC98: - return RedumpSystem.NECPC98series; - case KnownSystem.NECPCFX: - return RedumpSystem.NECPCFXPCFXGA; - case KnownSystem.NintendoGameCube: - return RedumpSystem.NintendoGameCube; // RedumpSystem.NintendoGameCubeBIOS; - case KnownSystem.NintendoWii: - return RedumpSystem.NintendoWii; - case KnownSystem.NintendoWiiU: - return RedumpSystem.NintendoWiiU; - case KnownSystem.PalmOS: - return RedumpSystem.PalmOS; - case KnownSystem.Panasonic3DOInteractiveMultiplayer: - return RedumpSystem.Panasonic3DOInteractiveMultiplayer; - case KnownSystem.PanasonicM2: - return RedumpSystem.PanasonicM2; - case KnownSystem.PhilipsCDi: - return RedumpSystem.PhilipsCDi; - case KnownSystem.PhotoCD: - return RedumpSystem.PhotoCD; - case KnownSystem.PlayStationGameSharkUpdates: - return RedumpSystem.PlayStationGameSharkUpdates; - case KnownSystem.PocketPC: - return RedumpSystem.PocketPC; - case KnownSystem.SegaChihiro: - return RedumpSystem.SegaChihiro; - case KnownSystem.SegaDreamcast: - return RedumpSystem.SegaDreamcast; - case KnownSystem.SegaLindbergh: - return RedumpSystem.SegaLindbergh; - case KnownSystem.SegaCDMegaCD: - return RedumpSystem.SegaMegaCDSegaCD; - case KnownSystem.SegaNaomi: - return RedumpSystem.SegaNaomi; - case KnownSystem.SegaNaomi2: - return RedumpSystem.SegaNaomi2; - case KnownSystem.SegaPrologue21: - return RedumpSystem.SegaPrologue21MultimediaKaraokeSystem; - case KnownSystem.SegaRingEdge: - return RedumpSystem.SegaRingEdge; - case KnownSystem.SegaRingEdge2: - return RedumpSystem.SegaRingEdge2; - case KnownSystem.SegaSaturn: - return RedumpSystem.SegaSaturn; - case KnownSystem.SegaTitanVideo: - return RedumpSystem.SegaTitanVideo; - case KnownSystem.SharpX68000: - return RedumpSystem.SharpX68000; - case KnownSystem.SNKNeoGeoCD: - return RedumpSystem.SNKNeoGeoCD; - case KnownSystem.SonyPlayStation: - return RedumpSystem.SonyPlayStation; // RedumpSystem.SonyPlayStationBIOS; - case KnownSystem.SonyPlayStation2: - return RedumpSystem.SonyPlayStation2; // RedumpSystem.SonyPlayStation2BIOS; - case KnownSystem.SonyPlayStation3: - return RedumpSystem.SonyPlayStation3; - case KnownSystem.SonyPlayStation4: - return RedumpSystem.SonyPlayStation4; - case KnownSystem.SonyPlayStationPortable: - return RedumpSystem.SonyPlayStationPortable; - case KnownSystem.TABAustriaQuizard: - return RedumpSystem.TABAustriaQuizard; - case KnownSystem.TaoiKTV: - return RedumpSystem.TaoiKTV; - case KnownSystem.TomyKissSite: - return RedumpSystem.TomyKissSite; - case KnownSystem.VideoCD: - return RedumpSystem.VideoCD; - case KnownSystem.VMLabsNuon: - return RedumpSystem.VMLabsNUON; - case KnownSystem.VTechVFlashVSmilePro: - return RedumpSystem.VTechVFlashVSmilePro; - case KnownSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem: - return RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem; - default: - return null; - } - } - #endregion #region Convert to Long Name @@ -536,305 +269,6 @@ namespace MPF.Converters } } - /// - /// Get the string representation of the KnownSystem enum values - /// - /// KnownSystem value to convert - /// String representing the value, if possible - public static string LongName(this KnownSystem? sys) - { - switch (sys) - { - #region Consoles - - case KnownSystem.AtariJaguarCD: - return "Atari Jaguar CD"; - case KnownSystem.BandaiPlaydiaQuickInteractiveSystem: - return "Bandai Playdia Quick Interactive System"; - case KnownSystem.BandaiApplePippin: - return "Bandai / Apple Pippin"; - case KnownSystem.CommodoreAmigaCD32: - return "Commodore Amiga CD32"; - case KnownSystem.CommodoreAmigaCDTV: - return "Commodore Amiga CDTV"; - case KnownSystem.EnvizionsEVOSmartConsole: - return "Envizions EVO Smart Console"; - case KnownSystem.FujitsuFMTownsMarty: - return "Fujitsu FM Towns Marty"; - case KnownSystem.HasbroVideoNow: - return "Hasbro VideoNow"; - case KnownSystem.HasbroVideoNowColor: - return "Hasbro VideoNow Color"; - case KnownSystem.HasbroVideoNowJr: - return "Hasbro VideoNow Jr."; - case KnownSystem.HasbroVideoNowXP: - return "Hasbro VideoNow XP"; - case KnownSystem.MattelFisherPriceiXL: - return "Mattel Fisher-Price iXL"; - case KnownSystem.MattelHyperscan: - return "Mattel HyperScan"; - case KnownSystem.MicrosoftXBOX: - return "Microsoft XBOX"; - case KnownSystem.MicrosoftXBOX360: - return "Microsoft XBOX 360"; - case KnownSystem.MicrosoftXBOXOne: - return "Microsoft XBOX One"; - case KnownSystem.MicrosoftXboxSeriesXS: - return "Microsoft XBOX Series X and S"; - case KnownSystem.NECPCEngineTurboGrafxCD: - return "NEC PC-Engine / TurboGrafx CD"; - case KnownSystem.NECPCFX: - return "NEC PC-FX / PC-FXGA"; - case KnownSystem.NintendoGameCube: - return "Nintendo GameCube"; - case KnownSystem.NintendoSonySuperNESCDROMSystem: - return "Nintendo-Sony Super NES CD-ROM System"; - case KnownSystem.NintendoWii: - return "Nintendo Wii"; - case KnownSystem.NintendoWiiU: - return "Nintendo Wii U"; - case KnownSystem.Panasonic3DOInteractiveMultiplayer: - return "Panasonic 3DO Interactive Multiplayer"; - case KnownSystem.PhilipsCDi: - return "Philips CD-i"; - case KnownSystem.PioneerLaserActive: - return "Pioneer LaserActive"; - case KnownSystem.SegaCDMegaCD: - return "Sega CD / Mega CD"; - case KnownSystem.SegaDreamcast: - return "Sega Dreamcast"; - case KnownSystem.SegaSaturn: - return "Sega Saturn"; - case KnownSystem.SNKNeoGeoCD: - return "SNK Neo Geo CD"; - case KnownSystem.SonyPlayStation: - return "Sony PlayStation"; - case KnownSystem.SonyPlayStation2: - return "Sony PlayStation 2"; - case KnownSystem.SonyPlayStation3: - return "Sony PlayStation 3"; - case KnownSystem.SonyPlayStation4: - return "Sony PlayStation 4"; - case KnownSystem.SonyPlayStation5: - return "Sony PlayStation 5"; - case KnownSystem.SonyPlayStationPortable: - return "Sony PlayStation Portable"; - case KnownSystem.TandyMemorexVisualInformationSystem: - return "Tandy / Memorex Visual Information System"; - case KnownSystem.VMLabsNuon: - return "VM Labs NUON"; - case KnownSystem.VTechVFlashVSmilePro: - return "VTech V.Flash - V.Smile Pro"; - case KnownSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem: - return "ZAPiT Games Game Wave Family Entertainment System"; - - #endregion - - #region Computers - - case KnownSystem.AcornArchimedes: - return "Acorn Archimedes"; - case KnownSystem.AppleMacintosh: - return "Apple Macintosh"; - case KnownSystem.CommodoreAmiga: - return "Commodore Amiga"; - case KnownSystem.FujitsuFMTowns: - return "Fujitsu FM Towns series"; - case KnownSystem.IBMPCCompatible: - return "IBM PC Compatible"; - case KnownSystem.NECPC88: - return "NEC PC-88"; - case KnownSystem.NECPC98: - return "NEC PC-98"; - case KnownSystem.SharpX68000: - return "Sharp X68000"; - - #endregion - - #region Arcade - - case KnownSystem.AmigaCUBOCD32: - return "Amiga CUBO CD32"; - case KnownSystem.AmericanLaserGames3DO: - return "American Laser Games 3DO"; - case KnownSystem.Atari3DO: - return "Atari 3DO"; - case KnownSystem.Atronic: - return "Atronic"; - case KnownSystem.AUSCOMSystem1: - return "AUSCOM System 1"; - case KnownSystem.BallyGameMagic: - return "Bally Game Magic"; - case KnownSystem.CapcomCPSystemIII: - return "Capcom CP System III"; - case KnownSystem.funworldPhotoPlay: - return "funworld Photo Play"; - case KnownSystem.GlobalVRVarious: - return "Global VR PC-based Systems"; - case KnownSystem.GlobalVRVortek: - return "Global VR Vortek"; - case KnownSystem.GlobalVRVortekV3: - return "Global VR Vortek V3"; - case KnownSystem.ICEPCHardware: - return "ICE PC-based Hardware"; - case KnownSystem.IncredibleTechnologiesEagle: - return "Incredible Technologies Eagle"; - case KnownSystem.IncredibleTechnologiesVarious: - return "Incredible Technologies PC-based Systems"; - case KnownSystem.KonamieAmusement: - return "Konami e-Amusement"; - case KnownSystem.KonamiFirebeat: - return "Konami Firebeat"; - case KnownSystem.KonamiGVSystem: - return "Konami GV System"; - case KnownSystem.KonamiM2: - return "Konami M2"; - case KnownSystem.KonamiPython: - return "Konami Python"; - case KnownSystem.KonamiPython2: - return "Konami Python 2"; - case KnownSystem.KonamiSystem573: - return "Konami System 573"; - case KnownSystem.KonamiTwinkle: - return "Konami Twinkle"; - case KnownSystem.KonamiVarious: - return "Konami PC-based Systems"; - case KnownSystem.MeritIndustriesBoardwalk: - return "Merit Industries Boardwalk"; - case KnownSystem.MeritIndustriesMegaTouchForce: - return "Merit Industries MegaTouch Force"; - case KnownSystem.MeritIndustriesMegaTouchION: - return "Merit Industries MegaTouch ION"; - case KnownSystem.MeritIndustriesMegaTouchMaxx: - return "Merit Industries MegaTouch Maxx"; - case KnownSystem.MeritIndustriesMegaTouchXL: - return "Merit Industries MegaTouch XL"; - case KnownSystem.NamcoCapcomSystem256: - return "Namco / Capcom System 256/Super System 256"; - case KnownSystem.NamcoCapcomTaitoSystem246: - return "Namco / Capcom / Taito System 246"; - case KnownSystem.NamcoSegaNintendoTriforce: - return "Namco / Sega / Nintendo Triforce"; - case KnownSystem.NamcoSystem12: - return "Namco System 12"; - case KnownSystem.NamcoSystem357: - return "Namco System 357"; - case KnownSystem.NewJatreCDi: - return "New Jatre CD-i"; - case KnownSystem.NichibutsuHighRateSystem: - return "Nichibutsu High Rate System"; - case KnownSystem.NichibutsuSuperCD: - return "Nichibutsu Super CD"; - case KnownSystem.NichibutsuXRateSystem: - return "Nichibutsu X-Rate System"; - case KnownSystem.PanasonicM2: - return "Panasonic M2"; - case KnownSystem.PhotoPlayVarious: - return "PhotoPlay PC-based Systems"; - case KnownSystem.RawThrillsVarious: - return "Raw Thrills PC-based Systems"; - case KnownSystem.SegaChihiro: - return "Sega Chihiro"; - case KnownSystem.SegaEuropaR: - return "Sega Europa-R"; - case KnownSystem.SegaLindbergh: - return "Sega Lindbergh"; - case KnownSystem.SegaNaomi: - return "Sega Naomi"; - case KnownSystem.SegaNaomi2: - return "Sega Naomi 2"; - case KnownSystem.SegaNu: - return "Sega Nu"; - case KnownSystem.SegaRingEdge: - return "Sega RingEdge"; - case KnownSystem.SegaRingEdge2: - return "Sega RingEdge 2"; - case KnownSystem.SegaRingWide: - return "Sega RingWide"; - case KnownSystem.SegaTitanVideo: - return "Sega Titan Video"; - case KnownSystem.SegaSystem32: - return "Sega System 32"; - case KnownSystem.SeibuCATSSystem: - return "Seibu CATS System"; - case KnownSystem.TABAustriaQuizard: - return "TAB-Austria Quizard"; - case KnownSystem.TsunamiTsuMoMultiGameMotionSystem: - return "Tsunami TsuMo Multi-Game Motion System"; - - #endregion - - #region Others - - case KnownSystem.AudioCD: - return "Audio CD"; - case KnownSystem.BDVideo: - return "BD-Video"; - case KnownSystem.DVDAudio: - return "DVD-Audio"; - case KnownSystem.DVDVideo: - return "DVD-Video"; - case KnownSystem.EnhancedCD: - 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.PhotoCD: - return "Photo CD"; - case KnownSystem.PlayStationGameSharkUpdates: - return "PlayStation GameShark Updates"; - case KnownSystem.PocketPC: - return "Pocket PC"; - case KnownSystem.RainbowDisc: - return "Rainbow Disc"; - case KnownSystem.SegaPrologue21: - return "Sega Prologue 21"; - case KnownSystem.SuperAudioCD: - return "Super Audio CD"; - case KnownSystem.TaoiKTV: - return "Tao iKTV"; - case KnownSystem.TomyKissSite: - return "Tomy Kiss-Site"; - case KnownSystem.VideoCD: - return "Video CD"; - - #endregion - - case KnownSystem.NONE: - default: - return "Unknown"; - } - } - - /// - /// Get the string representation of the KnownSystemCategory enum values - /// - /// KnownSystemCategory value to convert - /// String representing the value, if possible - public static string LongName(this KnownSystemCategory? category) - { - switch (category) - { - case KnownSystemCategory.Arcade: - return "Arcade"; - case KnownSystemCategory.Computer: - return "Computers"; - case KnownSystemCategory.DiscBasedConsole: - return "Disc-Based Consoles"; - case KnownSystemCategory.OtherConsole: - return "Other Consoles"; - case KnownSystemCategory.Other: - return "Other"; - case KnownSystemCategory.Custom: - return "Custom"; - default: - return ""; - } - } - /// /// Get the string representation of the MediaType enum values /// @@ -925,25 +359,6 @@ namespace MPF.Converters } } - /// - /// Get the string representation of the YesNo enum values - /// - /// YesNo value to convert - /// String representing the value, if possible - public static string LongName(this YesNo yesno) - { - switch (yesno) - { - case YesNo.No: - return "No"; - case YesNo.Yes: - return "Yes"; - default: - case YesNo.NULL: - return "Yes/No"; - } - } - #endregion #region Convert to Short Name @@ -983,279 +398,6 @@ namespace MPF.Converters } } - /// - /// Get the short string representation of the KnownSystem enum values - /// - /// KnownSystem value to convert - /// Short string representing the value, if possible - public static string ShortName(this KnownSystem? sys) - { - switch (sys) - { - #region Consoles - - case KnownSystem.AtariJaguarCD: - return "jaguar"; - case KnownSystem.BandaiPlaydiaQuickInteractiveSystem: - return "playdia"; - case KnownSystem.BandaiApplePippin: - return "pippin"; - case KnownSystem.CommodoreAmigaCD32: - return "cd32"; - case KnownSystem.EnvizionsEVOSmartConsole: - return "evosc"; - case KnownSystem.FujitsuFMTownsMarty: - return "fmtm"; - case KnownSystem.CommodoreAmigaCDTV: - return "cdtv"; - case KnownSystem.HasbroVideoNow: - return "videonow"; - case KnownSystem.HasbroVideoNowColor: - return "videonowcolor"; - case KnownSystem.HasbroVideoNowJr: - return "videonowjr"; - case KnownSystem.HasbroVideoNowXP: - return "videonowxp"; - case KnownSystem.MattelFisherPriceiXL: - return "ixl"; - case KnownSystem.MattelHyperscan: - return "hyperscan"; - case KnownSystem.MicrosoftXBOX: - return "xbox"; - case KnownSystem.MicrosoftXBOX360: - return "x360"; - case KnownSystem.MicrosoftXBOXOne: - return "xbone"; - case KnownSystem.MicrosoftXboxSeriesXS: - return "xbseries"; - case KnownSystem.NECPCEngineTurboGrafxCD: - return "pcecd"; - case KnownSystem.NECPCFX: - return "pcfx"; - case KnownSystem.NintendoGameCube: - return "gc"; - case KnownSystem.NintendoSonySuperNESCDROMSystem: - return "snescd"; - case KnownSystem.NintendoWii: - return "wii"; - case KnownSystem.NintendoWiiU: - return "wiiu"; - case KnownSystem.Panasonic3DOInteractiveMultiplayer: - return "3do"; - case KnownSystem.PhilipsCDi: - return "cdi"; - case KnownSystem.PioneerLaserActive: - return "laseractive"; - case KnownSystem.SegaCDMegaCD: - return "mcd"; - case KnownSystem.SegaDreamcast: - return "dc"; - case KnownSystem.SegaSaturn: - return "saturn"; - case KnownSystem.SNKNeoGeoCD: - return "ngcd"; - case KnownSystem.SonyPlayStation: - return "psx"; - case KnownSystem.SonyPlayStation2: - return "ps2"; - case KnownSystem.SonyPlayStation3: - return "ps3"; - case KnownSystem.SonyPlayStation4: - return "ps4"; - case KnownSystem.SonyPlayStation5: - return "ps5"; - case KnownSystem.SonyPlayStationPortable: - return "psp"; - case KnownSystem.TandyMemorexVisualInformationSystem: - return "vis"; - case KnownSystem.VMLabsNuon: - return "nuon"; - case KnownSystem.VTechVFlashVSmilePro: - return "vflash"; - case KnownSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem: - return "gamewave"; - - #endregion - - #region Computers - - case KnownSystem.AcornArchimedes: - return "archimedes"; - case KnownSystem.AppleMacintosh: - return "mac"; - case KnownSystem.CommodoreAmiga: - return "amiga"; - case KnownSystem.FujitsuFMTowns: - return "fmtowns"; - case KnownSystem.IBMPCCompatible: - return "ibm"; - case KnownSystem.NECPC88: - return "pc88"; - case KnownSystem.NECPC98: - return "pc98"; - case KnownSystem.SharpX68000: - return "x68k"; - - #endregion - - #region Arcade - - case KnownSystem.AmigaCUBOCD32: - return "cubo"; - case KnownSystem.AmericanLaserGames3DO: - return "alg 3do"; - case KnownSystem.Atari3DO: - return "atari 3do"; - case KnownSystem.Atronic: - return "atronic"; - case KnownSystem.AUSCOMSystem1: - return "auscom"; - case KnownSystem.BallyGameMagic: - return "game magic"; - case KnownSystem.CapcomCPSystemIII: - return "cps3"; - case KnownSystem.funworldPhotoPlay: - return "fpp"; - case KnownSystem.GlobalVRVarious: - return "globalvr"; - case KnownSystem.GlobalVRVortek: - return "vortek"; - case KnownSystem.GlobalVRVortekV3: - return "vortek v3"; - case KnownSystem.ICEPCHardware: - return "ice"; - case KnownSystem.IncredibleTechnologiesEagle: - return "eagle"; - case KnownSystem.IncredibleTechnologiesVarious: - return "itpc"; - case KnownSystem.KonamieAmusement: - return "e-amusement"; - case KnownSystem.KonamiFirebeat: - return "firebeat"; - case KnownSystem.KonamiGVSystem: - return "gv system"; - case KnownSystem.KonamiM2: - return "konami m2"; - case KnownSystem.KonamiPython: - return "python"; - case KnownSystem.KonamiPython2: - return "python 2"; - case KnownSystem.KonamiSystem573: - return "system 573"; - case KnownSystem.KonamiTwinkle: - return "twinkle"; - case KnownSystem.KonamiVarious: - return "konami pc"; - case KnownSystem.MeritIndustriesBoardwalk: - return "boardwalk"; - case KnownSystem.MeritIndustriesMegaTouchForce: - return "megatouch force"; - case KnownSystem.MeritIndustriesMegaTouchION: - return "megatouch ion"; - case KnownSystem.MeritIndustriesMegaTouchMaxx: - return "megatouch maxx"; - case KnownSystem.MeritIndustriesMegaTouchXL: - return "megatouch xl"; - case KnownSystem.NamcoCapcomSystem256: - return "system 256"; - case KnownSystem.NamcoCapcomTaitoSystem246: - return "system 246"; - case KnownSystem.NamcoSegaNintendoTriforce: - return "triforce"; - case KnownSystem.NamcoSystem12: - return "system 12"; - case KnownSystem.NamcoSystem357: - return "system 357"; - case KnownSystem.NewJatreCDi: - return "new jatre cdi"; - case KnownSystem.NichibutsuHighRateSystem: - return "nichibutsu hrs"; - case KnownSystem.NichibutsuSuperCD: - return "nichibutsu scd"; - case KnownSystem.NichibutsuXRateSystem: - return "nichibutsu xrs"; - case KnownSystem.PanasonicM2: - return "panasonic m2"; - case KnownSystem.PhotoPlayVarious: - return "photoplay"; - case KnownSystem.RawThrillsVarious: - return "raw thrills"; - case KnownSystem.SegaChihiro: - return "chihiro"; - case KnownSystem.SegaEuropaR: - return "europar"; - case KnownSystem.SegaLindbergh: - return "lindbergh"; - case KnownSystem.SegaNaomi: - return "naomi"; - case KnownSystem.SegaNaomi2: - return "naomi 2"; - case KnownSystem.SegaNu: - return "nu"; - case KnownSystem.SegaRingEdge: - return "ringedge"; - case KnownSystem.SegaRingEdge2: - return "ringedge 2"; - case KnownSystem.SegaRingWide: - return "ringwide"; - case KnownSystem.SegaTitanVideo: - return "stv"; - case KnownSystem.SegaSystem32: - return "system 32"; - case KnownSystem.SeibuCATSSystem: - return "seibu cats"; - case KnownSystem.TABAustriaQuizard: - return "quizard"; - case KnownSystem.TsunamiTsuMoMultiGameMotionSystem: - return "tsumo"; - - #endregion - - #region Others - - case KnownSystem.AudioCD: - return "audio"; - case KnownSystem.BDVideo: - return "bd-video"; - case KnownSystem.DVDAudio: - return "dvd-audio"; - case KnownSystem.DVDVideo: - return "dvd-video"; - case KnownSystem.EnhancedCD: - return "enhanced cd"; - case KnownSystem.HDDVDVideo: - return "hddvd-video"; - case KnownSystem.NavisoftNaviken21: - return "naviken"; - case KnownSystem.PalmOS: - return "palmos"; - case KnownSystem.PhotoCD: - return "photo cd"; - case KnownSystem.PlayStationGameSharkUpdates: - return "gameshark"; - case KnownSystem.PocketPC: - return "ppc"; - case KnownSystem.RainbowDisc: - return "rainbow"; - case KnownSystem.SegaPrologue21: - return "pl21"; - case KnownSystem.SuperAudioCD: - return "sacd"; - case KnownSystem.TaoiKTV: - return "iktv"; - case KnownSystem.TomyKissSite: - return "kiss-site"; - case KnownSystem.VideoCD: - return "vcd"; - - #endregion - - case KnownSystem.NONE: - default: - return "unknown"; - } - } - /// /// Get the short string representation of the MediaType enum values /// @@ -1392,775 +534,6 @@ namespace MPF.Converters } } - /// - /// Get the KnownSystem enum value for a given string - /// - /// String value to convert - /// KnownSystem represented by the string, if possible - public static KnownSystem? ToKnownSystem(string sys) - { - switch (sys.ToLowerInvariant()) - { - #region Consoles - - case "jaguar": - case "jagcd": - case "jaguarcd": - case "jaguar cd": - case "atarijaguar": - case "atarijagcd": - case "atarijaguarcd": - case "atari jaguar cd": - return KnownSystem.AtariJaguarCD; - case "playdia": - case "playdiaqis": - case "playdiaquickinteractivesystem": - case "bandaiplaydia": - case "bandaiplaydiaquickinteractivesystem": - case "bandai playdia quick interactive system": - return KnownSystem.BandaiPlaydiaQuickInteractiveSystem; - case "pippin": - case "bandaipippin": - case "bandai pippin": - case "applepippin": - case "apple pippin": - case "bandaiapplepippin": - case "bandai apple pippin": - case "bandai / apple pippin": - return KnownSystem.BandaiApplePippin; - case "cd32": - case "amigacd32": - case "amiga cd32": - case "commodoreamigacd32": - case "commodore amiga cd32": - return KnownSystem.CommodoreAmigaCD32; - case "cdtv": - case "amigacdtv": - case "amiga cdtv": - case "commodoreamigacdtv": - case "commodore amiga cdtv": - return KnownSystem.CommodoreAmigaCDTV; - case "evosc": - case "evo sc": - case "evosmartconsole": - case "evo smart console": - case "envizionsevosc": - case "envizion evo sc": - case "envizionevosmartconsole": - case "envizion evo smart console": - return KnownSystem.EnvizionsEVOSmartConsole; - case "fmtm": - case "fmtownsmarty": - case "fm towns marty": - case "fujitsufmtownsmarty": - case "fujitsu fm towns marty": - return KnownSystem.FujitsuFMTownsMarty; - case "videonow": - case "hasbrovideonow": - case "hasbro videonow": - return KnownSystem.HasbroVideoNow; - case "videonowcolor": - case "videonow color": - case "hasbrovideonowcolor": - case "hasbro videonow color": - return KnownSystem.HasbroVideoNowColor; - case "videonowjr": - case "videonow jr": - case "hasbrovideonowjr": - case "hasbro videonow jr": - return KnownSystem.HasbroVideoNowJr; - case "videonowxp": - case "videonow xp": - case "hasbrovideonowxp": - case "hasbro videonow xp": - return KnownSystem.HasbroVideoNowXP; - case "ixl": - case "mattelixl": - case "mattel ixl": - case "fisherpriceixl": - case "fisher price ixl": - case "fisher-price ixl": - case "fisherprice ixl": - case "mattelfisherpriceixl": - case "mattel fisher price ixl": - case "mattelfisherprice ixl": - case "mattel fisherprice ixl": - case "mattel fisher-price ixl": - return KnownSystem.MattelFisherPriceiXL; - case "hyperscan": - case "mattelhyperscan": - case "mattel hyperscan": - return KnownSystem.MattelHyperscan; - case "xbox": - case "microsoftxbox": - case "microsoft xbox": - return KnownSystem.MicrosoftXBOX; - case "x360": - case "xbox360": - case "microsoftx360": - case "microsoftxbox360": - case "microsoft x360": - case "microsoft xbox 360": - return KnownSystem.MicrosoftXBOX360; - case "xb1": - case "xbone": - case "xboxone": - case "microsoftxbone": - case "microsoftxboxone": - case "microsoft xbone": - case "microsoft xbox one": - return KnownSystem.MicrosoftXBOXOne; - case "xbs": - case "xbseries": - case "xbseriess": - case "xbseriesx": - case "xbseriessx": - case "xboxseries": - case "xboxseriess": - case "xboxseriesx": - case "xboxseriesxs": - case "microsoftxboxseries": - case "microsoftxboxseriess": - case "microsoftxboxseriesx": - case "microsoftxboxseriesxs": - case "microsoft xbox series": - case "microsoft xbox series s": - case "microsoft xbox series x": - case "microsoft xbox series x and s": - return KnownSystem.MicrosoftXboxSeriesXS; - case "pcecd": - case "pce-cd": - case "tgcd": - case "tg-cd": - case "necpcecd": - case "nectgcd": - case "nec pc-engine cd": - case "nec turbografx cd": - case "nec pc-engine / turbografx cd": - return KnownSystem.NECPCEngineTurboGrafxCD; - case "pcfx": - case "pc-fx": - case "pcfxga": - case "pc-fxga": - case "necpcfx": - case "necpcfxga": - case "nec pc-fx": - case "nec pc-fxga": - case "nec pc-fx / pc-fxga": - return KnownSystem.NECPCFX; - case "gc": - case "gamecube": - case "ngc": - case "nintendogamecube": - case "nintendo gamecube": - return KnownSystem.NintendoGameCube; - case "snescd": - case "snes cd": - case "snes-cd": - case "supernescd": - case "super nes cd": - case "super nes-cd": - case "supernintendocd": - case "super nintendo cd": - case "super nintendo-cd": - case "nintendosnescd": - case "nintendo snes cd": - case "nintendosnes-cd": - case "nintendosupernescd": - case "nintendo super nes cd": - case "nintendo super nes-cd": - case "nintendosupernintendocd": - case "nintendo super nintendo cd": - case "nintendo super nintendo-cd": - case "sonysnescd": - case "sony snes cd": - case "sonysnes-cd": - case "sonysupernescd": - case "sony super nes cd": - case "sony super nes-cd": - case "sonysupernintendocd": - case "sony super nintendo cd": - case "sony super nintendo-cd": - return KnownSystem.NintendoSonySuperNESCDROMSystem; - case "wii": - case "nintendowii": - case "nintendo wii": - return KnownSystem.NintendoWii; - case "wiiu": - case "wii u": - case "nintendowiiu": - case "nintendo wii u": - return KnownSystem.NintendoWiiU; - case "3do": - case "3do interactive multiplayer": - case "panasonic3do": - case "panasonic 3do": - case "panasonic 3do interactive multiplayer": - return KnownSystem.Panasonic3DOInteractiveMultiplayer; - case "cdi": - case "cd-i": - case "philipscdi": - case "philips cdi": - case "philips cd-i": - return KnownSystem.PhilipsCDi; - case "laseractive": - case "pioneerlaseractive": - case "pioneer laseractive": - return KnownSystem.PioneerLaserActive; - case "scd": - case "mcd": - case "smcd": - case "segacd": - case "megacd": - case "segamegacd": - case "sega cd": - case "mega cd": - case "sega cd / mega cd": - return KnownSystem.SegaCDMegaCD; - case "dc": - case "sdc": - case "dreamcast": - case "segadreamcast": - case "sega dreamcast": - return KnownSystem.SegaDreamcast; - case "saturn": - case "segasaturn": - case "sega saturn": - return KnownSystem.SegaSaturn; - case "ngcd": - case "neogeocd": - case "neogeo cd": - case "neo geo cd": - case "snk ngcd": - case "snk neogeo cd": - case "snk neo geo cd": - return KnownSystem.SNKNeoGeoCD; - case "ps1": - case "psx": - case "playstation": - case "sonyps1": - case "sony ps1": - case "sonypsx": - case "sony psx": - case "sonyplaystation": - case "sony playstation": - return KnownSystem.SonyPlayStation; - case "ps2": - case "playstation2": - case "playstation 2": - case "sonyps2": - case "sony ps2": - case "sonyplaystation2": - case "sony playstation 2": - return KnownSystem.SonyPlayStation2; - case "ps3": - case "playstation3": - case "playstation 3": - case "sonyps3": - case "sony ps3": - case "sonyplaystation3": - case "sony playstation 3": - return KnownSystem.SonyPlayStation3; - case "ps4": - case "playstation4": - case "playstation 4": - case "sonyps4": - case "sony ps4": - case "sonyplaystation4": - case "sony playstation 4": - return KnownSystem.SonyPlayStation4; - case "ps5": - case "playstation5": - case "playstation 5": - case "sonyps5": - case "sony ps5": - case "sonyplaystation5": - case "sony playstation 5": - return KnownSystem.SonyPlayStation5; - case "psp": - case "playstationportable": - case "playstation portable": - case "sonypsp": - case "sony psp": - case "sonyplaystationportable": - case "sony playstation portable": - return KnownSystem.SonyPlayStationPortable; - case "vis": - case "tandyvis": - case "tandy vis": - case "tandyvisualinformationsystem": - case "tandy visual information system": - case "memorexvis": - case "memorex vis": - case "memorexvisualinformationsystem": - case "memorex visual information sytem": - case "tandy / memorex visual information system": - return KnownSystem.TandyMemorexVisualInformationSystem; - case "nuon": - case "vmlabsnuon": - case "vm labs nuon": - return KnownSystem.VMLabsNuon; - case "vflash": - case "vsmile": - case "vsmilepro": - case "vsmile pro": - case "v.flash": - case "v.smile": - case "v.smilepro": - case "v.smile pro": - case "vtechvflash": - case "vtech vflash": - case "vtech v.flash": - case "vtechvsmile": - case "vtech vsmile": - case "vtech v.smile": - case "vtechvsmilepro": - case "vtech vsmile pro": - case "vtech v.smile pro": - case "vtech v.flash - v.smile pro": - return KnownSystem.VTechVFlashVSmilePro; - case "gamewave": - case "game wave": - case "zapit": - case "zapitgamewave": - case "zapit game wave": - case "zapit games game wave family entertainment system": - return KnownSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem; - - #endregion - - #region Computers - - case "acorn": - case "archimedes": - case "acornarchimedes": - case "acorn archimedes": - return KnownSystem.AcornArchimedes; - case "apple": - case "mac": - case "applemac": - case "macintosh": - case "applemacintosh": - case "apple mac": - case "apple macintosh": - return KnownSystem.AppleMacintosh; - case "amiga": - case "commodoreamiga": - case "commodore amiga": - return KnownSystem.CommodoreAmiga; - case "fmtowns": - case "fmt": - case "fm towns": - case "fujitsufmtowns": - case "fujitsu fm towns": - case "fujitsu fm towns series": - return KnownSystem.FujitsuFMTowns; - case "ibm": - case "ibmpc": - case "pc": - case "ibm pc": - case "ibm pc compatible": - return KnownSystem.IBMPCCompatible; - case "pc88": - case "pc-88": - case "necpc88": - case "nec pc88": - case "nec pc-88": - return KnownSystem.NECPC88; - case "pc98": - case "pc-98": - case "necpc98": - case "nec pc98": - case "nec pc-98": - return KnownSystem.NECPC98; - case "x68k": - case "x68000": - case "sharpx68k": - case "sharp x68k": - case "sharpx68000": - case "sharp x68000": - return KnownSystem.SharpX68000; - - #endregion - - #region Arcade - - case "cubo": - case "cubocd32": - case "cubo cd32": - case "amigacubocd32": - case "amiga cubo cd32": - return KnownSystem.AmigaCUBOCD32; - case "alg3do": - case "alg 3do": - case "americanlasergames3do": - case "american laser games 3do": - return KnownSystem.AmericanLaserGames3DO; - case "atari3do": - case "atari 3do": - return KnownSystem.Atari3DO; - case "atronic": - return KnownSystem.Atronic; - case "auscom": - case "auscomsystem1": - case "auscom system 1": - return KnownSystem.AUSCOMSystem1; - case "gamemagic": - case "game magic": - case "ballygamemagic": - case "bally game magic": - return KnownSystem.BallyGameMagic; - case "cps3": - case "cpsiii": - case "cps 3": - case "cp system 3": - case "cp system iii": - case "capcomcps3": - case "capcomcpsiii": - case "capcom cps 3": - case "capcom cps iii": - case "capcom cp system 3": - case "capcom cp system iii": - return KnownSystem.CapcomCPSystemIII; - case "fpp": - case "funworldphotoplay": - case "funworld photoplay": - case "funworld photo play": - return KnownSystem.funworldPhotoPlay; - case "globalvr": - case "global vr": - case "global vr pc-based systems": - return KnownSystem.GlobalVRVarious; - case "vortek": - case "globalvrvortek": - case "global vr vortek": - return KnownSystem.GlobalVRVortek; - case "vortekv3": - case "vortek v3": - case "globalvrvortekv3": - case "global vr vortek v3": - return KnownSystem.GlobalVRVortekV3; - case "ice": - case "icepc": - case "ice pc": - case "ice pc-based hardware": - return KnownSystem.ICEPCHardware; - case "iteagle": - case "eagle": - case "incredible technologies eagle": - return KnownSystem.IncredibleTechnologiesEagle; - case "itpc": - case "incredible technologies pc-based systems": - return KnownSystem.IncredibleTechnologiesVarious; - case "eamusement": - case "e-amusement": - case "konamieamusement": - case "konami eamusement": - case "konamie-amusement": - case "konami e-amusement": - return KnownSystem.KonamieAmusement; - case "firebeat": - case "konamifirebeat": - case "konami firebeat": - return KnownSystem.KonamiFirebeat; - case "gvsystem": - case "gv system": - case "konamigvsystem": - case "konami gv system": - return KnownSystem.KonamiGVSystem; - case "konamim2": - case "konami m2": - return KnownSystem.KonamiM2; - case "python": - case "konamipython": - case "konami python": - return KnownSystem.KonamiPython; - case "python2": - case "python 2": - case "konamipython2": - case "konami python 2": - return KnownSystem.KonamiPython2; - case "system573": - case "system 573": - case "konamisystem573": - case "konami system 573": - return KnownSystem.KonamiSystem573; - case "twinkle": - case "konamitwinkle": - case "konami twinkle": - return KnownSystem.KonamiTwinkle; - case "konamipc": - case "konami pc": - case "konami pc-based systems": - return KnownSystem.KonamiVarious; - case "boardwalk": - case "meritindustriesboardwalk": - case "merit industries boardwalk": - return KnownSystem.MeritIndustriesBoardwalk; - case "megatouchforce": - case "megatouch force": - case "meritindustriesmegatouchforce": - case "merit industries megatouch force": - return KnownSystem.MeritIndustriesMegaTouchForce; - case "megatouchion": - case "megatouch ion": - case "meritindustriesmegatouchion": - case "merit industries megatouch ion": - return KnownSystem.MeritIndustriesMegaTouchION; - case "megatouchmaxx": - case "megatouch maxx": - case "meritindustriesmegatouchmaxx": - case "merit industries megatouch maxx": - return KnownSystem.MeritIndustriesMegaTouchMaxx; - case "megatouchxl": - case "megatouch xl": - case "meritindustriesmegatouchxl": - case "merit industries megatouch xl": - return KnownSystem.MeritIndustriesMegaTouchXL; - case "system256": - case "system 256": - case "supersystem256": - case "super system 256": - case "namcosystem256": - case "namco system 256": - case "namcosupersystem256": - case "namco super system 256": - case "capcomsystem256": - case "capcom system 256": - case "capcomsupersystem256": - case "capcom super system 256": - case "namco / capcom system 256/super system 256": - return KnownSystem.NamcoCapcomSystem256; - case "system246": - case "system 246": - case "namcosystem246": - case "namco system 246": - case "capcomsystem246": - case "capcom system 246": - case "taitosystem246": - case "taito system 246": - case "namco / capcom / taito system 246": - return KnownSystem.NamcoCapcomTaitoSystem246; - case "triforce": - case "namcotriforce": - case "namco triforce": - case "segatriforce": - case "sega triforce": - case "nintendotriforce": - case "nintendo triforce": - case "namco / sega / nintendo triforce": - return KnownSystem.NamcoSegaNintendoTriforce; - case "system12": - case "system 12": - case "namcosystem12": - case "namco system 12": - return KnownSystem.NamcoSystem12; - case "system357": - case "system 357": - case "namcosystem357": - case "namco system 357": - return KnownSystem.NamcoSystem357; - case "newjatrecdi": - case "new jatre cdi": - case "new jatre cd-i": - return KnownSystem.NewJatreCDi; - case "hrs": - case "highratesytem": - case "high rate system": - case "nichibutsuhrs": - case "nichibutsu hrs": - case "nichibutsu high rate system": - return KnownSystem.NichibutsuHighRateSystem; - case "supercd": - case "super cd": - case "nichibutsuscd": - case "nichibutsu scd": - case "nichibutsusupercd": - case "nichibutsu supercd": - case "nichibutsu super cd": - return KnownSystem.NichibutsuSuperCD; - case "xrs": - case "xratesystem": - case "x-rate system": - case "nichibutsuxrs": - case "nichibutsu xrs": - case "nichibutsu x-rate system": - return KnownSystem.NichibutsuXRateSystem; - case "panasonicm2": - case "panasonic m2": - return KnownSystem.PanasonicM2; - case "photoplay": - case "photoplaypc": - case "photoplay pc": - case "photoplay pc-based systems": - return KnownSystem.PhotoPlayVarious; - case "rawthrills": - case "raw thrills": - case "raw thrills pc-based systems": - return KnownSystem.RawThrillsVarious; - case "chihiro": - case "segachihiro": - case "sega chihiro": - return KnownSystem.SegaChihiro; - case "europar": - case "europa-r": - case "segaeuropar": - case "sega europar": - case "sega europa-r": - return KnownSystem.SegaEuropaR; - case "lindbergh": - case "segalindbergh": - case "sega lindbergh": - return KnownSystem.SegaLindbergh; - case "naomi": - case "seganaomi": - case "sega naomi": - return KnownSystem.SegaNaomi; - case "naomi2": - case "naomi 2": - case "seganaomi2": - case "sega naomi 2": - return KnownSystem.SegaNaomi2; - case "nu": - case "seganu": - case "sega nu": - return KnownSystem.SegaNu; - case "ringedge": - case "segaringedge": - case "sega ringedge": - return KnownSystem.SegaRingEdge; - case "ringedge2": - case "ringedge 2": - case "segaringedge2": - case "sega ringedge 2": - return KnownSystem.SegaRingEdge2; - case "ringwide": - case "segaringwide": - case "sega ringwide": - return KnownSystem.SegaRingWide; - case "stv": - case "titanvideo": - case "titan video": - case "segatitanvideo": - case "sega titan video": - return KnownSystem.SegaTitanVideo; - case "system32": - case "system 32": - case "segasystem32": - case "sega system 32": - return KnownSystem.SegaSystem32; - case "cats": - case "seibucats": - case "seibu cats": - case "seibu cats system": - return KnownSystem.SeibuCATSSystem; - case "quizard": - case "tabaustriaquizard": - case "tab-austria quizard": - return KnownSystem.TABAustriaQuizard; - case "tsumo": - case "tsunamitsumo": - case "tsunami tsumo": - case "tsunami tsumo multi-game motion system": - return KnownSystem.TsunamiTsuMoMultiGameMotionSystem; - - #endregion - - #region Others - - case "audio": - case "audiocd": - case "audio cd": - return KnownSystem.AudioCD; - case "bdvideo": - case "bd-video": - case "blurayvideo": - case "bluray video": - return KnownSystem.BDVideo; - case "dvda": - case "dvdaudio": - case "dvd-audio": - return KnownSystem.DVDAudio; - case "dvd": - case "dvdv": - case "dvdvideo": - case "dvd-video": - return KnownSystem.DVDVideo; - case "enhancedcd": - case "enhanced cd": - case "enhancedcdrom": - case "enhanced cdrom": - case "enhanced cd-rom": - return KnownSystem.EnhancedCD; - case "hddvd": - case "hddvdv": - case "hddvdvideo": - 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; - case "photo": - case "photocd": - case "photo cd": - return KnownSystem.PhotoCD; - case "gameshark": - case "psgameshark": - case "ps gameshark": - case "playstationgameshark": - case "playstation gameshark": - case "playstation gameshark updates": - return KnownSystem.PlayStationGameSharkUpdates; - case "pocketpc": - case "pocket pc": - case "ppc": - return KnownSystem.PocketPC; - case "rainbow": - case "rainbowdisc": - case "rainbow disc": - return KnownSystem.RainbowDisc; - case "pl21": - case "prologue21": - case "prologue 21": - case "segaprologue21": - case "sega prologue21": - case "sega prologue 21": - return KnownSystem.SegaPrologue21; - case "sacd": - case "superaudiocd": - case "super audio cd": - return KnownSystem.SuperAudioCD; - case "iktv": - case "taoiktv": - case "tao iktv": - return KnownSystem.TaoiKTV; - case "kisssite": - case "kiss-site": - case "tomykisssite": - case "tomy kisssite": - case "tomy kiss-site": - return KnownSystem.TomyKissSite; - case "vcd": - case "videocd": - case "video cd": - return KnownSystem.VideoCD; - - #endregion - - default: - return KnownSystem.NONE; - } - } - /// /// Get the MediaType enum value for a given string /// diff --git a/MPF.Library/Converters/KnownSystemConverter.cs b/MPF.Library/Converters/KnownSystemConverter.cs deleted file mode 100644 index db349a66..00000000 --- a/MPF.Library/Converters/KnownSystemConverter.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using MPF.Data; -using MPF.Utilities; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using RedumpLib.Data; - -namespace MPF.Converters -{ - /// - /// Serialize KnownSystem enum values - /// - public class KnownSystemConverter : JsonConverter - { - public override bool CanRead { get { return false; } } - - public override KnownSystem? ReadJson(JsonReader reader, Type objectType, KnownSystem? existingValue, bool hasExistingValue, JsonSerializer serializer) - { - throw new NotImplementedException(); - } - - public override void WriteJson(JsonWriter writer, KnownSystem? value, JsonSerializer serializer) - { - JToken t = JToken.FromObject(value.ToRedumpSystem().ShortName() ?? value.ShortName() ?? string.Empty); - t.WriteTo(writer); - } - } -} \ No newline at end of file diff --git a/MPF.Library/DD/Parameters.cs b/MPF.Library/DD/Parameters.cs index c818fd4a..d9d9d8b7 100644 --- a/MPF.Library/DD/Parameters.cs +++ b/MPF.Library/DD/Parameters.cs @@ -60,7 +60,7 @@ namespace MPF.DD public Parameters(string parameters) : base(parameters) { } /// - public Parameters(KnownSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options) + public Parameters(RedumpSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options) : base(system, type, driveLetter, filename, driveSpeed, options) { } @@ -87,7 +87,7 @@ namespace MPF.DD switch (this.System) { - case KnownSystem.KonamiPython2: + case RedumpSystem.KonamiPython2: if (GetPlayStationExecutableInfo(drive?.Letter, out string pythonTwoSerial, out Region? pythonTwoRegion, out string pythonTwoDate)) { info.CommonDiscInfo.Comments += $"Internal Disc Serial: {pythonTwoSerial}\n"; @@ -98,7 +98,7 @@ namespace MPF.DD info.VersionAndEditions.Version = GetPlayStation2Version(drive?.Letter) ?? ""; break; - case KnownSystem.SonyPlayStation: + case RedumpSystem.SonyPlayStation: if (GetPlayStationExecutableInfo(drive?.Letter, out string playstationSerial, out Region? playstationRegion, out string playstationDate)) { info.CommonDiscInfo.Comments += $"Internal Disc Serial: {playstationSerial}\n"; @@ -109,7 +109,7 @@ namespace MPF.DD info.CopyProtection.AntiModchip = GetPlayStationAntiModchipDetected(drive?.Letter) ? YesNo.Yes : YesNo.No; break; - case KnownSystem.SonyPlayStation2: + case RedumpSystem.SonyPlayStation2: if (GetPlayStationExecutableInfo(drive?.Letter, out string playstationTwoSerial, out Region? playstationTwoRegion, out string playstationTwoDate)) { info.CommonDiscInfo.Comments += $"Internal Disc Serial: {playstationTwoSerial}\n"; @@ -120,11 +120,11 @@ namespace MPF.DD info.VersionAndEditions.Version = GetPlayStation2Version(drive?.Letter) ?? ""; break; - case KnownSystem.SonyPlayStation4: + case RedumpSystem.SonyPlayStation4: info.VersionAndEditions.Version = GetPlayStation4Version(drive?.Letter) ?? ""; break; - case KnownSystem.SonyPlayStation5: + case RedumpSystem.SonyPlayStation5: info.VersionAndEditions.Version = GetPlayStation5Version(drive?.Letter) ?? ""; break; } diff --git a/MPF.Library/Data/BaseParameters.cs b/MPF.Library/Data/BaseParameters.cs index fb09a753..32f062a0 100644 --- a/MPF.Library/Data/BaseParameters.cs +++ b/MPF.Library/Data/BaseParameters.cs @@ -104,7 +104,7 @@ namespace MPF.Data /// /// Currently represented system /// - public KnownSystem? System { get; set; } + public RedumpSystem? System { get; set; } /// /// Currently represented media type @@ -127,13 +127,13 @@ namespace MPF.Data /// /// Generate parameters based on a set of known inputs /// - /// KnownSystem value to use + /// RedumpSystem value to use /// MediaType value to use /// Drive letter to use /// Filename to use /// Drive speed to use /// Options object containing all settings that may be used for setting parameters - public BaseParameters(KnownSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options) + public BaseParameters(RedumpSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options) { this.System = system; this.Type = type; diff --git a/MPF.Library/Data/DumpEnvironment.cs b/MPF.Library/Data/DumpEnvironment.cs index adc6cc4a..9f137a14 100644 --- a/MPF.Library/Data/DumpEnvironment.cs +++ b/MPF.Library/Data/DumpEnvironment.cs @@ -13,6 +13,7 @@ using MPF.Converters; using MPF.Utilities; using Newtonsoft.Json; using RedumpLib.Attributes; +using RedumpLib.Converters; using RedumpLib.Data; using RedumpLib.Web; @@ -47,7 +48,7 @@ namespace MPF.Data /// /// Currently selected system /// - public KnownSystem? System { get; private set; } + public RedumpSystem? System { get; private set; } /// /// Currently selected media type @@ -111,7 +112,7 @@ namespace MPF.Data string outputDirectory, string outputFilename, Drive drive, - KnownSystem? system, + RedumpSystem? system, MediaType? type, string parameters) { @@ -202,7 +203,7 @@ namespace MPF.Data public string GetFullParameters(int? driveSpeed) { // Populate with the correct params for inputs (if we're not on the default option) - if (System != KnownSystem.NONE && Type != MediaType.NONE) + if (System != null && Type != MediaType.NONE) { // If drive letter is invalid, skip this if (Drive == null) @@ -589,7 +590,7 @@ namespace MPF.Data CommonDiscInfo = new CommonDiscInfoSection() { System = this.System, - Media = this.Type, + Media = this.Type.ToDiscType(), Title = (Options.AddPlaceholders ? Template.RequiredValue : ""), ForeignTitleNonLatin = (Options.AddPlaceholders ? Template.OptionalValue : ""), DiscNumberLetter = (Options.AddPlaceholders ? Template.OptionalValue : ""), @@ -793,19 +794,19 @@ namespace MPF.Data break; } - // Extract info based specifically on KnownSystem + // Extract info based specifically on RedumpSystem switch (System) { - case KnownSystem.AcornArchimedes: + case RedumpSystem.AcornArchimedes: info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.UK; break; - case KnownSystem.AppleMacintosh: - case KnownSystem.EnhancedCD: - case KnownSystem.IBMPCCompatible: - case KnownSystem.PalmOS: - case KnownSystem.PocketPC: - case KnownSystem.RainbowDisc: + case RedumpSystem.AppleMacintosh: + case RedumpSystem.EnhancedCD: + case RedumpSystem.IBMPCcompatible: + case RedumpSystem.PalmOS: + case RedumpSystem.PocketPC: + case RedumpSystem.RainbowDisc: if (string.IsNullOrWhiteSpace(info.CommonDiscInfo.Comments)) info.CommonDiscInfo.Comments += $"[T:ISBN] {(Options.AddPlaceholders ? Template.OptionalValue : "")}"; @@ -815,141 +816,141 @@ namespace MPF.Data break; - case KnownSystem.AudioCD: - case KnownSystem.DVDAudio: - case KnownSystem.SuperAudioCD: + case RedumpSystem.AudioCD: + case RedumpSystem.DVDAudio: + case RedumpSystem.SuperAudioCD: info.CommonDiscInfo.Category = info.CommonDiscInfo.Category ?? DiscCategory.Audio; break; - case KnownSystem.BandaiPlaydiaQuickInteractiveSystem: + case RedumpSystem.BandaiPlaydiaQuickInteractiveSystem: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan; break; - case KnownSystem.BDVideo: + case RedumpSystem.BDVideo: info.CommonDiscInfo.Category = info.CommonDiscInfo.Category ?? DiscCategory.BonusDiscs; info.CopyProtection.Protection = (Options.AddPlaceholders ? Template.RequiredIfExistsValue : ""); break; - case KnownSystem.CommodoreAmiga: + case RedumpSystem.CommodoreAmigaCD: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.CommodoreAmigaCD32: + case RedumpSystem.CommodoreAmigaCD32: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Europe; break; - case KnownSystem.CommodoreAmigaCDTV: + case RedumpSystem.CommodoreAmigaCDTV: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Europe; break; - case KnownSystem.DVDVideo: + case RedumpSystem.DVDVideo: info.CommonDiscInfo.Category = info.CommonDiscInfo.Category ?? DiscCategory.BonusDiscs; break; - case KnownSystem.FujitsuFMTowns: + case RedumpSystem.FujitsuFMTownsseries: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan; break; - case KnownSystem.FujitsuFMTownsMarty: + case RedumpSystem.FujitsuFMTownsMarty: info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan; break; - case KnownSystem.IncredibleTechnologiesEagle: + case RedumpSystem.IncredibleTechnologiesEagle: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.KonamieAmusement: + case RedumpSystem.KonamieAmusement: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.KonamiFirebeat: + case RedumpSystem.KonamiFireBeat: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.KonamiGVSystem: + case RedumpSystem.KonamiSystemGV: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.KonamiSystem573: + case RedumpSystem.KonamiSystem573: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.KonamiTwinkle: + case RedumpSystem.KonamiTwinkle: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.MattelHyperscan: + case RedumpSystem.MattelHyperScan: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.NamcoSegaNintendoTriforce: + case RedumpSystem.NamcoSegaNintendoTriforce: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.NavisoftNaviken21: + case RedumpSystem.NavisoftNaviken21: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan; break; - case KnownSystem.NECPC88: + case RedumpSystem.NECPC88series: info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan; break; - case KnownSystem.NECPC98: + case RedumpSystem.NECPC98series: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan; break; - case KnownSystem.NECPCFX: + case RedumpSystem.NECPCFXPCFXGA: info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan; break; - case KnownSystem.SegaChihiro: + case RedumpSystem.SegaChihiro: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.SegaDreamcast: + case RedumpSystem.SegaDreamcast: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.SegaNaomi: + case RedumpSystem.SegaNaomi: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.SegaNaomi2: + case RedumpSystem.SegaNaomi2: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.SegaTitanVideo: + case RedumpSystem.SegaTitanVideo: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.SharpX68000: + case RedumpSystem.SharpX68000: info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan; break; - case KnownSystem.SNKNeoGeoCD: + case RedumpSystem.SNKNeoGeoCD: info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.SonyPlayStation2: + case RedumpSystem.SonyPlayStation2: info.CommonDiscInfo.LanguageSelection = new LanguageSelection?[] { LanguageSelection.BiosSettings, LanguageSelection.LanguageSelector, LanguageSelection.OptionsMenu }; break; - case KnownSystem.SonyPlayStation3: + case RedumpSystem.SonyPlayStation3: info.Extras.DiscKey = (Options.AddPlaceholders ? Template.RequiredValue : ""); info.Extras.DiscID = (Options.AddPlaceholders ? Template.RequiredValue : ""); break; - case KnownSystem.TomyKissSite: + case RedumpSystem.TomyKissSite: info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan; break; - case KnownSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem: + case RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem: info.CopyProtection.Protection = (Options.AddPlaceholders ? Template.RequiredIfExistsValue : ""); break; } @@ -979,10 +980,9 @@ namespace MPF.Data { // Sony-printed discs have layers in the opposite order var system = info.CommonDiscInfo.System; - bool reverseOrder = (system == KnownSystem.SonyPlayStation2 - || system == KnownSystem.SonyPlayStation3 - || system == KnownSystem.SonyPlayStation4 - || system == KnownSystem.SonyPlayStation5); + bool reverseOrder = (system == RedumpSystem.SonyPlayStation2 + || system == RedumpSystem.SonyPlayStation3 + || system == RedumpSystem.SonyPlayStation4); // Common Disc Info section List output = new List { "Common Disc Info:" }; @@ -992,7 +992,7 @@ namespace MPF.Data AddIfExists(output, Template.DiscTitleField, info.CommonDiscInfo.DiscTitle, 1); AddIfExists(output, Template.SystemField, info.CommonDiscInfo.System.LongName(), 1); AddIfExists(output, Template.MediaTypeField, GetFixedMediaType( - info.CommonDiscInfo.Media, + info.CommonDiscInfo.Media.ToMediaType(), info.SizeAndChecksums.Size, info.SizeAndChecksums.Layerbreak, info.SizeAndChecksums.Layerbreak2, @@ -1090,7 +1090,7 @@ namespace MPF.Data AddIfExists(output, Template.EditionField, info.VersionAndEditions.OtherEditions, 1); // EDC section - if (info.CommonDiscInfo.System == KnownSystem.SonyPlayStation) + if (info.CommonDiscInfo.System == RedumpSystem.SonyPlayStation) { output.Add(""); output.Add("EDC:"); AddIfExists(output, Template.PlayStationEDCField, info.EDC.EDC.LongName(), 1); @@ -1120,7 +1120,7 @@ namespace MPF.Data || info.CopyProtection.LibCrypt != YesNo.NULL) { output.Add(""); output.Add("Copy Protection:"); - if (info.CommonDiscInfo.System == KnownSystem.SonyPlayStation) + if (info.CommonDiscInfo.System == RedumpSystem.SonyPlayStation) { AddIfExists(output, Template.PlayStationAntiModchipField, info.CopyProtection.AntiModchip.LongName(), 1); AddIfExists(output, Template.PlayStationLibCryptField, info.CopyProtection.LibCrypt.LongName(), 1); diff --git a/MPF.Library/Data/Enumerations.cs b/MPF.Library/Data/Enumerations.cs index d14c4d9c..1f30f6c9 100644 --- a/MPF.Library/Data/Enumerations.cs +++ b/MPF.Library/Data/Enumerations.cs @@ -49,231 +49,6 @@ namespace MPF.Data UmdImageCreator, } - /// - /// Known systems - /// - public enum KnownSystem - { - NONE = 0, - - #region Disc-Based Consoles - - AtariJaguarCD, - BandaiPlaydiaQuickInteractiveSystem, - BandaiApplePippin, - CommodoreAmigaCD32, - CommodoreAmigaCDTV, - EnvizionsEVOSmartConsole, - FujitsuFMTownsMarty, - HasbroVideoNow, - HasbroVideoNowColor, - HasbroVideoNowJr, - HasbroVideoNowXP, - MattelFisherPriceiXL, - MattelHyperscan, - MicrosoftXBOX, - MicrosoftXBOX360, - MicrosoftXBOXOne, - MicrosoftXboxSeriesXS, - NECPCEngineTurboGrafxCD, - NECPCFX, - NintendoGameCube, - NintendoSonySuperNESCDROMSystem, - NintendoWii, - NintendoWiiU, - Panasonic3DOInteractiveMultiplayer, // The 3DO Company 3DO Interactive Multiplayer - PhilipsCDi, - PioneerLaserActive, - SegaCDMegaCD, - SegaDreamcast, - SegaSaturn, - SNKNeoGeoCD, - SonyPlayStation, - SonyPlayStation2, - SonyPlayStation3, - SonyPlayStation4, - SonyPlayStation5, - SonyPlayStationPortable, - TandyMemorexVisualInformationSystem, - VMLabsNuon, - VTechVFlashVSmilePro, - ZAPiTGamesGameWaveFamilyEntertainmentSystem, - - MarkerDiscBasedConsoleEnd, - - #endregion - - #region Cartridge-Based and Other Consoles - - /* - AmstradGX4000, - APFMicrocomputerSystem, - Atari2600VCS, - Atari5200, - Atari7800, - AtariJaguar, - AtariXEVideoGameSystem, - Audiosonic1292AdvancedProgrammableVideoSystem, - BallyAstrocade, - BitCorporationDina, - CasioLoopy, - CasioPV1000, - Commodore64GamesSystem, - DaewooElectronicsZemmix, - EmersonArcadia2001, - EpochCassetteVision, - EpochSuperCassetteVision, - FairchildChannelF, - FuntechSuperACan, - GeneralConsumerElectricVectrex, - HeberBBCBridgeCompanion, - IntertonVC4000, - JungleTacVii, - LeapFrogClickStart, - LJNVideoArt, - MagnavoxOdyssey2, - MattelIntellivision, - NECPCEngineTurboGrafx16, - NichibutsuMyVision, - Nintendo64, - Nintendo64DD, - NintendoFamilyComputerNintendoEntertainmentSystem, - NintendoFamilyComputerDiskSystem, - NintendoSuperFamicomSuperNintendoEntertainmentSystem, - NintendoSwitch, - PhilipsVideopacPlusG7400, - RCAStudioII, - Sega32X, - SegaMarkIIIMasterSystem, - SegaMegaDriveGenesis, - SegaSG1000, - SNKNeoGeo, - SSDCOMPANYLIMITEDXaviXPORT, - ViewMasterInteractiveVision, - VTechCreatiVision, - VTechVSmile, - VTechSocrates, - WorldsOfWonderActionMax, - - MarkerOtherConsoleEnd, - */ - - #endregion - - #region Computers - - AcornArchimedes, - AppleMacintosh, - CommodoreAmiga, - FujitsuFMTowns, - IBMPCCompatible, - NECPC88, - NECPC98, - SharpX68000, - - MarkerComputerEnd, - - #endregion - - #region Arcade - - AmigaCUBOCD32, - AmericanLaserGames3DO, - Atari3DO, - Atronic, - AUSCOMSystem1, - BallyGameMagic, - CapcomCPSystemIII, - funworldPhotoPlay, - GlobalVRVarious, - GlobalVRVortek, - GlobalVRVortekV3, - ICEPCHardware, - IncredibleTechnologiesEagle, - IncredibleTechnologiesVarious, - KonamieAmusement, - KonamiFirebeat, - KonamiGVSystem, - KonamiM2, - KonamiPython, - KonamiPython2, - KonamiSystem573, - KonamiTwinkle, - KonamiVarious, - MeritIndustriesBoardwalk, - MeritIndustriesMegaTouchForce, - MeritIndustriesMegaTouchION, - MeritIndustriesMegaTouchMaxx, - MeritIndustriesMegaTouchXL, - NamcoCapcomSystem256, - NamcoCapcomTaitoSystem246, - NamcoSegaNintendoTriforce, - NamcoSystem12, - NamcoSystem357, - NewJatreCDi, - NichibutsuHighRateSystem, - NichibutsuSuperCD, - NichibutsuXRateSystem, - PanasonicM2, - PhotoPlayVarious, - RawThrillsVarious, - SegaChihiro, - SegaEuropaR, - SegaLindbergh, - SegaNaomi, - SegaNaomi2, - SegaNu, - SegaRingEdge, - SegaRingEdge2, - SegaRingWide, - SegaTitanVideo, - SegaSystem32, - SeibuCATSSystem, - TABAustriaQuizard, - TsunamiTsuMoMultiGameMotionSystem, - - MarkerArcadeEnd, - - #endregion - - #region Other - - AudioCD, - BDVideo, - DVDAudio, - DVDVideo, - EnhancedCD, - HDDVDVideo, - NavisoftNaviken21, - PalmOS, - PhotoCD, - PlayStationGameSharkUpdates, - PocketPC, - RainbowDisc, - SegaPrologue21, - SuperAudioCD, - TaoiKTV, - TomyKissSite, - VideoCD, - - MarkerOtherEnd, - - #endregion - } - - /// - /// Known system category - /// - public enum KnownSystemCategory - { - DiscBasedConsole = 0, - OtherConsole, - Computer, - Arcade, - Other, - Custom - }; - /// /// Known media types /// @@ -407,16 +182,6 @@ namespace MPF.Data TapeDSTLarge = 66, } - /// - /// Generic yes/no values for Redump - /// - public enum YesNo - { - NULL = 0, - No = 1, - Yes = 2, - } - #region Win32_CDROMDrive // https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-cdromdrive diff --git a/MPF.Library/Data/Options.cs b/MPF.Library/Data/Options.cs index 63527f7a..9e3fbc55 100644 --- a/MPF.Library/Data/Options.cs +++ b/MPF.Library/Data/Options.cs @@ -3,6 +3,7 @@ using System.Collections; using System.Collections.Generic; using MPF.Converters; using MPF.Utilities; +using RedumpLib.Data; namespace MPF.Data { @@ -81,13 +82,13 @@ namespace MPF.Data /// /// Default system if none can be detected /// - public KnownSystem DefaultSystem + public RedumpSystem? DefaultSystem { get { - string valueString = GetStringSetting(_settings, "DefaultSystem", KnownSystem.NONE.ToString()); - var valueEnum = EnumConverter.ToKnownSystem(valueString); - return valueEnum ?? KnownSystem.NONE; + string valueString = GetStringSetting(_settings, "DefaultSystem", null); + var valueEnum = Extensions.ToRedumpSystem(valueString); + return valueEnum; } set { diff --git a/MPF.Library/DiscImageCreator/Converters.cs b/MPF.Library/DiscImageCreator/Converters.cs index 836076ea..49655db2 100644 --- a/MPF.Library/DiscImageCreator/Converters.cs +++ b/MPF.Library/DiscImageCreator/Converters.cs @@ -1,4 +1,5 @@ using MPF.Data; +using RedumpLib.Data; namespace MPF.DiscImageCreator { @@ -10,33 +11,33 @@ namespace MPF.DiscImageCreator /// Get the most common known system for a given MediaType /// /// Command value to check - /// KnownSystem if possible, null on error - public static KnownSystem? ToKnownSystem(string baseCommand) + /// RedumpSystem if possible, null on error + public static RedumpSystem? ToRedumpSystem(string baseCommand) { switch (baseCommand) { case CommandStrings.Audio: - return KnownSystem.AudioCD; + return RedumpSystem.AudioCD; case CommandStrings.CompactDisc: case CommandStrings.Data: case CommandStrings.DigitalVideoDisc: case CommandStrings.Disk: case CommandStrings.Floppy: case CommandStrings.Tape: - return KnownSystem.IBMPCCompatible; + return RedumpSystem.IBMPCcompatible; case CommandStrings.GDROM: case CommandStrings.Swap: - return KnownSystem.SegaDreamcast; + return RedumpSystem.SegaDreamcast; case CommandStrings.BluRay: - return KnownSystem.SonyPlayStation3; + return RedumpSystem.SonyPlayStation3; case CommandStrings.SACD: - return KnownSystem.SuperAudioCD; + return RedumpSystem.SuperAudioCD; case CommandStrings.XBOX: case CommandStrings.XBOXSwap: - return KnownSystem.MicrosoftXBOX; + return RedumpSystem.MicrosoftXbox; case CommandStrings.XGD2Swap: case CommandStrings.XGD3Swap: - return KnownSystem.MicrosoftXBOX360; + return RedumpSystem.MicrosoftXbox360; default: return null; } diff --git a/MPF.Library/DiscImageCreator/Parameters.cs b/MPF.Library/DiscImageCreator/Parameters.cs index 727229a1..7f4a0884 100644 --- a/MPF.Library/DiscImageCreator/Parameters.cs +++ b/MPF.Library/DiscImageCreator/Parameters.cs @@ -160,7 +160,7 @@ namespace MPF.DiscImageCreator public Parameters(string parameters) : base(parameters) { } /// - public Parameters(KnownSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options) + public Parameters(RedumpSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options) : base(system, type, driveLetter, filename, driveSpeed, options) { } @@ -436,13 +436,13 @@ namespace MPF.DiscImageCreator break; } - // Extract info based specifically on KnownSystem + // Extract info based specifically on RedumpSystem switch (this.System) { - case KnownSystem.AppleMacintosh: - case KnownSystem.EnhancedCD: - case KnownSystem.IBMPCCompatible: - case KnownSystem.RainbowDisc: + case RedumpSystem.AppleMacintosh: + case RedumpSystem.EnhancedCD: + case RedumpSystem.IBMPCcompatible: + case RedumpSystem.RainbowDisc: if (File.Exists(basePath + "_subIntention.txt")) { FileInfo fi = new FileInfo(basePath + "_subIntention.txt"); @@ -452,12 +452,12 @@ namespace MPF.DiscImageCreator break; - case KnownSystem.DVDAudio: - case KnownSystem.DVDVideo: + case RedumpSystem.DVDAudio: + case RedumpSystem.DVDVideo: info.CopyProtection.Protection = GetDVDProtection(basePath + "_CSSKey.txt", basePath + "_disc.txt") ?? ""; break; - case KnownSystem.KonamiPython2: + case RedumpSystem.KonamiPython2: if (GetPlayStationExecutableInfo(drive?.Letter, out string pythonTwoSerial, out Region? pythonTwoRegion, out string pythonTwoDate)) { info.CommonDiscInfo.Comments += $"Internal Disc Serial: {pythonTwoSerial}\n"; @@ -468,7 +468,7 @@ namespace MPF.DiscImageCreator info.VersionAndEditions.Version = GetPlayStation2Version(drive?.Letter) ?? ""; break; - case KnownSystem.MicrosoftXBOX: + case RedumpSystem.MicrosoftXbox: if (GetXgdAuxInfo(basePath + "_disc.txt", out string dmihash, out string pfihash, out string sshash, out string ss, out string ssver)) { info.CommonDiscInfo.Comments += $"{Template.XBOXDMIHash}: {dmihash ?? ""}\n" + @@ -487,7 +487,7 @@ namespace MPF.DiscImageCreator break; - case KnownSystem.MicrosoftXBOX360: + case RedumpSystem.MicrosoftXbox360: if (GetXgdAuxInfo(basePath + "_disc.txt", out string dmi360hash, out string pfi360hash, out string ss360hash, out string ss360, out string ssver360)) { info.CommonDiscInfo.Comments += $"{Template.XBOXDMIHash}: {dmi360hash ?? ""}\n" + @@ -505,7 +505,7 @@ namespace MPF.DiscImageCreator } break; - case KnownSystem.NamcoSegaNintendoTriforce: + case RedumpSystem.NamcoSegaNintendoTriforce: if (this.Type == MediaType.CDROM) { info.Extras.Header = GetSegaHeader(basePath + "_mainInfo.txt") ?? ""; @@ -524,7 +524,7 @@ namespace MPF.DiscImageCreator break; - case KnownSystem.SegaCDMegaCD: + case RedumpSystem.SegaMegaCDSegaCD: info.Extras.Header = GetSegaHeader(basePath + "_mainInfo.txt") ?? ""; // Take only the last 16 lines for Sega CD @@ -539,7 +539,7 @@ namespace MPF.DiscImageCreator break; - case KnownSystem.SegaChihiro: + case RedumpSystem.SegaChihiro: if (this.Type == MediaType.CDROM) { info.Extras.Header = GetSegaHeader(basePath + "_mainInfo.txt") ?? ""; @@ -558,7 +558,7 @@ namespace MPF.DiscImageCreator break; - case KnownSystem.SegaDreamcast: + case RedumpSystem.SegaDreamcast: if (this.Type == MediaType.CDROM) { info.Extras.Header = GetSegaHeader(basePath + "_mainInfo.txt") ?? ""; @@ -577,7 +577,7 @@ namespace MPF.DiscImageCreator break; - case KnownSystem.SegaNaomi: + case RedumpSystem.SegaNaomi: if (this.Type == MediaType.CDROM) { info.Extras.Header = GetSegaHeader(basePath + "_mainInfo.txt") ?? ""; @@ -596,7 +596,7 @@ namespace MPF.DiscImageCreator break; - case KnownSystem.SegaNaomi2: + case RedumpSystem.SegaNaomi2: if (this.Type == MediaType.CDROM) { info.Extras.Header = GetSegaHeader(basePath + "_mainInfo.txt") ?? ""; @@ -615,7 +615,7 @@ namespace MPF.DiscImageCreator break; - case KnownSystem.SegaSaturn: + case RedumpSystem.SegaSaturn: info.Extras.Header = GetSegaHeader(basePath + "_mainInfo.txt") ?? ""; // Take only the first 16 lines for Saturn @@ -631,7 +631,7 @@ namespace MPF.DiscImageCreator break; - case KnownSystem.SonyPlayStation: + case RedumpSystem.SonyPlayStation: if (GetPlayStationExecutableInfo(drive?.Letter, out string playstationSerial, out Region? playstationRegion, out string playstationDate)) { info.CommonDiscInfo.Comments += $"Internal Serial: {playstationSerial ?? ""}\n"; @@ -688,7 +688,7 @@ namespace MPF.DiscImageCreator break; - case KnownSystem.SonyPlayStation2: + case RedumpSystem.SonyPlayStation2: if (GetPlayStationExecutableInfo(drive?.Letter, out string playstationTwoSerial, out Region? playstationTwoRegion, out string playstationTwoDate)) { info.CommonDiscInfo.Comments += $"Internal Disc Serial: {playstationTwoSerial}\n"; @@ -699,11 +699,11 @@ namespace MPF.DiscImageCreator info.VersionAndEditions.Version = GetPlayStation2Version(drive?.Letter) ?? ""; break; - case KnownSystem.SonyPlayStation4: + case RedumpSystem.SonyPlayStation4: info.VersionAndEditions.Version = GetPlayStation4Version(drive?.Letter) ?? ""; break; - case KnownSystem.SonyPlayStation5: + case RedumpSystem.SonyPlayStation5: info.VersionAndEditions.Version = GetPlayStation5Version(drive?.Letter) ?? ""; break; } @@ -1645,8 +1645,8 @@ namespace MPF.DiscImageCreator switch (this.System) { - case KnownSystem.AppleMacintosh: - case KnownSystem.IBMPCCompatible: + case RedumpSystem.AppleMacintosh: + case RedumpSystem.IBMPCcompatible: this[FlagStrings.NoFixSubQSecuROM] = true; this[FlagStrings.ScanFileProtect] = true; this[FlagStrings.ScanSectorProtect] = options.DICParanoidMode; @@ -1655,17 +1655,17 @@ namespace MPF.DiscImageCreator SubchannelReadLevelValue = 2; break; - case KnownSystem.AtariJaguarCD: + case RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem: this[FlagStrings.AtariJaguar] = true; break; - case KnownSystem.HasbroVideoNow: - case KnownSystem.HasbroVideoNowColor: - case KnownSystem.HasbroVideoNowJr: - case KnownSystem.HasbroVideoNowXP: + case RedumpSystem.HasbroVideoNow: + case RedumpSystem.HasbroVideoNowColor: + case RedumpSystem.HasbroVideoNowJr: + case RedumpSystem.HasbroVideoNowXP: this[FlagStrings.AddOffset] = true; this.AddOffsetValue = 0; // Value needed for first run and placeholder after break; - case KnownSystem.SonyPlayStation: + case RedumpSystem.SonyPlayStation: this[FlagStrings.ScanAntiMod] = true; this[FlagStrings.NoFixSubQLibCrypt] = true; break; @@ -2332,9 +2332,9 @@ namespace MPF.DiscImageCreator /// /// Set the DIC command to be used for a given system and media type /// - /// KnownSystem value to check + /// RedumpSystem value to check /// MediaType value to check - private void SetBaseCommand(KnownSystem? system, MediaType? type) + private void SetBaseCommand(RedumpSystem? system, MediaType? type) { // If we have an invalid combination, we should BaseCommand = null if (!Validators.GetValidMediaTypes(system).Contains(type)) @@ -2346,14 +2346,14 @@ namespace MPF.DiscImageCreator switch (type) { case MediaType.CDROM: - if (system == KnownSystem.SuperAudioCD) + if (system == RedumpSystem.SuperAudioCD) BaseCommand = CommandStrings.SACD; else BaseCommand = CommandStrings.CompactDisc; return; case MediaType.DVD: - if (system == KnownSystem.MicrosoftXBOX - || system == KnownSystem.MicrosoftXBOX360) + if (system == RedumpSystem.MicrosoftXbox + || system == RedumpSystem.MicrosoftXbox360) { BaseCommand = CommandStrings.XBOX; return; diff --git a/MPF.Library/UmdImageCreator/Parameters.cs b/MPF.Library/UmdImageCreator/Parameters.cs index fb0c79ef..e709b100 100644 --- a/MPF.Library/UmdImageCreator/Parameters.cs +++ b/MPF.Library/UmdImageCreator/Parameters.cs @@ -23,7 +23,7 @@ namespace MPF.UmdImageCreator public Parameters(string parameters) : base(parameters) { } /// - public Parameters(KnownSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options) + public Parameters(RedumpSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options) : base(system, type, driveLetter, filename, driveSpeed, options) { } diff --git a/MPF.Library/Utilities/EnumExtensions.cs b/MPF.Library/Utilities/EnumExtensions.cs index ed3140c1..e12d7f10 100644 --- a/MPF.Library/Utilities/EnumExtensions.cs +++ b/MPF.Library/Utilities/EnumExtensions.cs @@ -1,32 +1,10 @@ using MPF.Data; +using RedumpLib.Data; namespace MPF.Utilities { public static class EnumExtensions { - /// - /// Determine the category based on the system - /// - /// KnownSystem value to check - /// KnownSystemCategory related to the system - public static KnownSystemCategory Category(this KnownSystem? system) - { - if (system < KnownSystem.MarkerDiscBasedConsoleEnd) - return KnownSystemCategory.DiscBasedConsole; - /* - else if (system < KnownSystem.MarkerOtherConsoleEnd) - return KnownSystemCategory.OtherConsole; - */ - else if (system < KnownSystem.MarkerComputerEnd) - return KnownSystemCategory.Computer; - else if (system < KnownSystem.MarkerArcadeEnd) - return KnownSystemCategory.Arcade; - else if (system < KnownSystem.MarkerOtherEnd) - return KnownSystemCategory.Other; - else - return KnownSystemCategory.Custom; - } - /// /// Determine if the media supports drive speeds /// @@ -52,25 +30,25 @@ namespace MPF.Utilities /// /// Determine if a system is considered audio-only /// - /// KnownSystem value to check + /// RedumpSystem value to check /// True if the system is audio-only, false otherwise /// /// Philips CD-i should NOT be in this list. It's being included until there's a /// reasonable distinction between CD-i and CD-i ready on the database side. /// - public static bool IsAudio(this KnownSystem? system) + public static bool IsAudio(this RedumpSystem? system) { switch (system) { - case KnownSystem.AtariJaguarCD: - case KnownSystem.AudioCD: - case KnownSystem.DVDAudio: - case KnownSystem.HasbroVideoNow: - case KnownSystem.HasbroVideoNowColor: - case KnownSystem.HasbroVideoNowJr: - case KnownSystem.HasbroVideoNowXP: - case KnownSystem.PhilipsCDi: - case KnownSystem.SuperAudioCD: + case RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem: + case RedumpSystem.AudioCD: + case RedumpSystem.DVDAudio: + case RedumpSystem.HasbroVideoNow: + case RedumpSystem.HasbroVideoNowColor: + case RedumpSystem.HasbroVideoNowJr: + case RedumpSystem.HasbroVideoNowXP: + case RedumpSystem.PhilipsCDi: + case RedumpSystem.SuperAudioCD: return true; default: return false; @@ -80,17 +58,17 @@ namespace MPF.Utilities /// /// Determine if a system is a marker value /// - /// KnownSystem value to check + /// RedumpSystem value to check /// True if the system is a marker value, false otherwise - public static bool IsMarker(this KnownSystem? system) + public static bool IsMarker(this RedumpSystem? system) { switch (system) { - case KnownSystem.MarkerArcadeEnd: - case KnownSystem.MarkerComputerEnd: - case KnownSystem.MarkerDiscBasedConsoleEnd: - // case KnownSystem.MarkerOtherConsoleEnd: - case KnownSystem.MarkerOtherEnd: + case RedumpSystem.MarkerArcadeEnd: + case RedumpSystem.MarkerComputerEnd: + case RedumpSystem.MarkerDiscBasedConsoleEnd: + // case RedumpSystem.MarkerOtherConsoleEnd: + case RedumpSystem.MarkerOtherEnd: return true; default: return false; @@ -100,16 +78,16 @@ namespace MPF.Utilities /// /// Determine if a system is considered XGD /// - /// KnownSystem value to check + /// RedumpSystem value to check /// True if the system is XGD, false otherwise - public static bool IsXGD(this KnownSystem? system) + public static bool IsXGD(this RedumpSystem? system) { switch (system) { - case KnownSystem.MicrosoftXBOX: - case KnownSystem.MicrosoftXBOX360: - case KnownSystem.MicrosoftXBOXOne: - case KnownSystem.MicrosoftXboxSeriesXS: + case RedumpSystem.MicrosoftXbox: + case RedumpSystem.MicrosoftXbox360: + case RedumpSystem.MicrosoftXboxOne: + case RedumpSystem.MicrosoftXboxSeriesXS: return true; default: return false; diff --git a/MPF.Library/Utilities/Validators.cs b/MPF.Library/Utilities/Validators.cs index 024c4319..fc712a17 100644 --- a/MPF.Library/Utilities/Validators.cs +++ b/MPF.Library/Utilities/Validators.cs @@ -7,6 +7,7 @@ using System.Threading.Tasks; using BurnOutSharp; using MPF.Converters; using MPF.Data; +using RedumpLib.Data; #if NET_FRAMEWORK using IMAPI2; #endif @@ -16,11 +17,11 @@ namespace MPF.Utilities public static class Validators { /// - /// Get a list of valid MediaTypes for a given KnownSystem + /// Get a list of valid MediaTypes for a given RedumpSystem /// - /// KnownSystem value to check + /// RedumpSystem value to check /// MediaTypes, if possible - public static List GetValidMediaTypes(KnownSystem? sys) + public static List GetValidMediaTypes(RedumpSystem? sys) { var types = new List(); @@ -29,214 +30,214 @@ namespace MPF.Utilities #region Consoles // https://en.wikipedia.org/wiki/Atari_Jaguar_CD - case KnownSystem.AtariJaguarCD: + case RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Playdia - case KnownSystem.BandaiPlaydiaQuickInteractiveSystem: + case RedumpSystem.BandaiPlaydiaQuickInteractiveSystem: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Apple_Bandai_Pippin - case KnownSystem.BandaiApplePippin: + case RedumpSystem.BandaiPippin: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Amiga_CD32 - case KnownSystem.CommodoreAmigaCD32: + case RedumpSystem.CommodoreAmigaCD32: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Commodore_CDTV - case KnownSystem.CommodoreAmigaCDTV: + case RedumpSystem.CommodoreAmigaCDTV: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/EVO_Smart_Console - case KnownSystem.EnvizionsEVOSmartConsole: + case RedumpSystem.EnvizionsEVOSmartConsole: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); break; // https://en.wikipedia.org/wiki/FM_Towns_Marty - case KnownSystem.FujitsuFMTownsMarty: + case RedumpSystem.FujitsuFMTownsMarty: types.Add(MediaType.CDROM); types.Add(MediaType.FloppyDisk); break; // https://en.wikipedia.org/wiki/VideoNow - case KnownSystem.HasbroVideoNow: + case RedumpSystem.HasbroVideoNow: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/VideoNow - case KnownSystem.HasbroVideoNowColor: + case RedumpSystem.HasbroVideoNowColor: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/VideoNow - case KnownSystem.HasbroVideoNowJr: + case RedumpSystem.HasbroVideoNowJr: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/VideoNow - case KnownSystem.HasbroVideoNowXP: + case RedumpSystem.HasbroVideoNowXP: types.Add(MediaType.CDROM); break; - case KnownSystem.MattelFisherPriceiXL: + case RedumpSystem.MattelFisherPriceiXL: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/HyperScan - case KnownSystem.MattelHyperscan: + case RedumpSystem.MattelHyperScan: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Xbox_(console) - case KnownSystem.MicrosoftXBOX: + case RedumpSystem.MicrosoftXbox: types.Add(MediaType.DVD); types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Xbox_360 - case KnownSystem.MicrosoftXBOX360: + case RedumpSystem.MicrosoftXbox360: types.Add(MediaType.DVD); types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Xbox_One - case KnownSystem.MicrosoftXBOXOne: + case RedumpSystem.MicrosoftXboxOne: types.Add(MediaType.BluRay); break; // https://en.wikipedia.org/wiki/Xbox_Series_X_and_Series_S - case KnownSystem.MicrosoftXboxSeriesXS: + case RedumpSystem.MicrosoftXboxSeriesXS: types.Add(MediaType.BluRay); break; // https://en.wikipedia.org/wiki/TurboGrafx-16 - case KnownSystem.NECPCEngineTurboGrafxCD: + case RedumpSystem.NECPCEngineCDTurboGrafxCD: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/PC-FX - case KnownSystem.NECPCFX: + case RedumpSystem.NECPCFXPCFXGA: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/GameCube - case KnownSystem.NintendoGameCube: + case RedumpSystem.NintendoGameCube: types.Add(MediaType.DVD); // Only added here to help users; not strictly correct types.Add(MediaType.NintendoGameCubeGameDisc); break; // https://en.wikipedia.org/wiki/Super_NES_CD-ROM - case KnownSystem.NintendoSonySuperNESCDROMSystem: + case RedumpSystem.NintendoSonySuperNESCDROMSystem: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Wii - case KnownSystem.NintendoWii: + case RedumpSystem.NintendoWii: types.Add(MediaType.DVD); // Only added here to help users; not strictly correct types.Add(MediaType.NintendoWiiOpticalDisc); break; // https://en.wikipedia.org/wiki/Wii_U - case KnownSystem.NintendoWiiU: + case RedumpSystem.NintendoWiiU: types.Add(MediaType.NintendoWiiUOpticalDisc); break; // https://en.wikipedia.org/wiki/3DO_Interactive_Multiplayer - case KnownSystem.Panasonic3DOInteractiveMultiplayer: + case RedumpSystem.Panasonic3DOInteractiveMultiplayer: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Philips_CD-i - case KnownSystem.PhilipsCDi: + case RedumpSystem.PhilipsCDi: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/LaserActive - case KnownSystem.PioneerLaserActive: + case RedumpSystem.PioneerLaserActive: types.Add(MediaType.CDROM); types.Add(MediaType.LaserDisc); break; // https://en.wikipedia.org/wiki/Sega_CD - case KnownSystem.SegaCDMegaCD: + case RedumpSystem.SegaMegaCDSegaCD: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Dreamcast - case KnownSystem.SegaDreamcast: + case RedumpSystem.SegaDreamcast: types.Add(MediaType.CDROM); // Low density partition, MIL-CD types.Add(MediaType.GDROM); // High density partition break; // https://en.wikipedia.org/wiki/Sega_Saturn - case KnownSystem.SegaSaturn: + case RedumpSystem.SegaSaturn: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Neo_Geo_CD - case KnownSystem.SNKNeoGeoCD: + case RedumpSystem.SNKNeoGeoCD: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/PlayStation_(console) - case KnownSystem.SonyPlayStation: + case RedumpSystem.SonyPlayStation: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/PlayStation_2 - case KnownSystem.SonyPlayStation2: + case RedumpSystem.SonyPlayStation2: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); break; // https://en.wikipedia.org/wiki/PlayStation_3 - case KnownSystem.SonyPlayStation3: + case RedumpSystem.SonyPlayStation3: types.Add(MediaType.BluRay); types.Add(MediaType.CDROM); types.Add(MediaType.DVD); break; // https://en.wikipedia.org/wiki/PlayStation_4 - case KnownSystem.SonyPlayStation4: + case RedumpSystem.SonyPlayStation4: types.Add(MediaType.BluRay); break; // https://en.wikipedia.org/wiki/PlayStation_5 - case KnownSystem.SonyPlayStation5: + case RedumpSystem.SonyPlayStation5: types.Add(MediaType.BluRay); break; // https://en.wikipedia.org/wiki/PlayStation_Portable - case KnownSystem.SonyPlayStationPortable: + case RedumpSystem.SonyPlayStationPortable: types.Add(MediaType.UMD); types.Add(MediaType.CDROM); // Development discs only types.Add(MediaType.DVD); // Development discs only break; // https://en.wikipedia.org/wiki/Tandy_Video_Information_System - case KnownSystem.TandyMemorexVisualInformationSystem: + case RedumpSystem.MemorexVisualInformationSystem: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Nuon_(DVD_technology) - case KnownSystem.VMLabsNuon: + case RedumpSystem.VMLabsNUON: types.Add(MediaType.DVD); break; // https://en.wikipedia.org/wiki/V.Flash - case KnownSystem.VTechVFlashVSmilePro: + case RedumpSystem.VTechVFlashVSmilePro: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Game_Wave_Family_Entertainment_System - case KnownSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem: + case RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem: types.Add(MediaType.DVD); break; @@ -245,13 +246,13 @@ namespace MPF.Utilities #region Computers // https://en.wikipedia.org/wiki/Acorn_Archimedes - case KnownSystem.AcornArchimedes: + case RedumpSystem.AcornArchimedes: types.Add(MediaType.CDROM); types.Add(MediaType.FloppyDisk); break; // https://en.wikipedia.org/wiki/Macintosh - case KnownSystem.AppleMacintosh: + case RedumpSystem.AppleMacintosh: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); types.Add(MediaType.FloppyDisk); @@ -259,18 +260,18 @@ namespace MPF.Utilities break; // https://en.wikipedia.org/wiki/Amiga - case KnownSystem.CommodoreAmiga: + case RedumpSystem.CommodoreAmigaCD: types.Add(MediaType.CDROM); types.Add(MediaType.FloppyDisk); break; // https://en.wikipedia.org/wiki/FM_Towns - case KnownSystem.FujitsuFMTowns: + case RedumpSystem.FujitsuFMTownsseries: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/IBM_PC_compatible - case KnownSystem.IBMPCCompatible: + case RedumpSystem.IBMPCcompatible: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); types.Add(MediaType.BluRay); @@ -280,20 +281,20 @@ namespace MPF.Utilities break; // https://en.wikipedia.org/wiki/PC-8800_series - case KnownSystem.NECPC88: + case RedumpSystem.NECPC88series: types.Add(MediaType.CDROM); types.Add(MediaType.FloppyDisk); break; // https://en.wikipedia.org/wiki/PC-9800_series - case KnownSystem.NECPC98: + case RedumpSystem.NECPC98series: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); types.Add(MediaType.FloppyDisk); break; // https://en.wikipedia.org/wiki/X68000 - case KnownSystem.SharpX68000: + case RedumpSystem.SharpX68000: types.Add(MediaType.CDROM); types.Add(MediaType.FloppyDisk); break; @@ -303,110 +304,110 @@ namespace MPF.Utilities #region Arcade // https://www.bigbookofamigahardware.com/bboah/product.aspx?id=36 - case KnownSystem.AmigaCUBOCD32: + case RedumpSystem.AmigaCUBOCD32: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Orbatak - case KnownSystem.AmericanLaserGames3DO: + case RedumpSystem.AmericanLaserGames3DO: types.Add(MediaType.CDROM); break; // http://system16.com/hardware.php?id=779 - case KnownSystem.Atari3DO: + case RedumpSystem.Atari3DO: types.Add(MediaType.CDROM); break; // http://newlifegames.net/nlg/index.php?topic=22003.0 // http://newlifegames.net/nlg/index.php?topic=5486.msg119440 - case KnownSystem.Atronic: + case RedumpSystem.Atronic: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); break; // https://www.arcade-museum.com/members/member_detail.php?member_id=406530 - case KnownSystem.AUSCOMSystem1: + case RedumpSystem.AUSCOMSystem1: types.Add(MediaType.CDROM); break; // http://newlifegames.net/nlg/index.php?topic=285.0 - case KnownSystem.BallyGameMagic: + case RedumpSystem.BallyGameMagic: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/CP_System_III - case KnownSystem.CapcomCPSystemIII: + case RedumpSystem.CapcomCPSystemIII: types.Add(MediaType.CDROM); break; // UNKNOWN - case KnownSystem.funworldPhotoPlay: + case RedumpSystem.funworldPhotoPlay: types.Add(MediaType.CDROM); break; // UNKNOWN - case KnownSystem.GlobalVRVarious: + case RedumpSystem.GlobalVRVarious: types.Add(MediaType.CDROM); break; // https://service.globalvr.com/troubleshooting/vortek.html - case KnownSystem.GlobalVRVortek: + case RedumpSystem.GlobalVRVortek: types.Add(MediaType.CDROM); break; // https://service.globalvr.com/downloads/v3/040-1001-01c-V3-System-Manual.pdf - case KnownSystem.GlobalVRVortekV3: + case RedumpSystem.GlobalVRVortekV3: types.Add(MediaType.CDROM); break; // https://www.icegame.com/games - case KnownSystem.ICEPCHardware: + case RedumpSystem.ICEPCHardware: types.Add(MediaType.DVD); break; // https://github.com/mamedev/mame/blob/master/src/mame/drivers/iteagle.cpp - case KnownSystem.IncredibleTechnologiesEagle: + case RedumpSystem.IncredibleTechnologiesEagle: types.Add(MediaType.CDROM); break; // UNKNOWN - case KnownSystem.IncredibleTechnologiesVarious: + case RedumpSystem.IncredibleTechnologiesVarious: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); break; // https://en.wikipedia.org/wiki/E-Amusement - case KnownSystem.KonamieAmusement: + case RedumpSystem.KonamieAmusement: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); break; // http://system16.com/hardware.php?id=828 - case KnownSystem.KonamiFirebeat: + case RedumpSystem.KonamiFireBeat: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); break; // http://system16.com/hardware.php?id=577 - case KnownSystem.KonamiGVSystem: + case RedumpSystem.KonamiSystemGV: types.Add(MediaType.CDROM); break; // http://system16.com/hardware.php?id=575 - case KnownSystem.KonamiM2: + case RedumpSystem.KonamiM2: types.Add(MediaType.CDROM); break; // http://system16.com/hardware.php?id=586 // http://system16.com/hardware.php?id=977 - case KnownSystem.KonamiPython: + case RedumpSystem.KonamiPython: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); break; // http://system16.com/hardware.php?id=976 // http://system16.com/hardware.php?id=831 - case KnownSystem.KonamiPython2: + case RedumpSystem.KonamiPython2: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); break; @@ -414,23 +415,23 @@ namespace MPF.Utilities // http://system16.com/hardware.php?id=582 // http://system16.com/hardware.php?id=822 // http://system16.com/hardware.php?id=823 - case KnownSystem.KonamiSystem573: + case RedumpSystem.KonamiSystem573: types.Add(MediaType.CDROM); break; // http://system16.com/hardware.php?id=827 - case KnownSystem.KonamiTwinkle: + case RedumpSystem.KonamiTwinkle: types.Add(MediaType.CDROM); break; // UNKNOWN - case KnownSystem.KonamiVarious: + case RedumpSystem.KonamiVarious: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); break; // http://www.meritgames.com/Support_Center/manuals/PM0591-01.pdf - case KnownSystem.MeritIndustriesBoardwalk: + case RedumpSystem.MeritIndustriesBoardwalk: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); break; @@ -438,12 +439,12 @@ namespace MPF.Utilities // http://www.meritgames.com/Support_Center/Force%20Elite/PM0380-09.pdf // http://www.meritgames.com/Support_Center/Force%20Upright/PM0382-07%20FORCE%20Upright%20manual.pdf // http://www.meritgames.com/Support_Center/Force%20Upright/PM0383-07%20FORCE%20Upright%20manual.pdf - case KnownSystem.MeritIndustriesMegaTouchForce: + case RedumpSystem.MeritIndustriesMegaTouchForce: types.Add(MediaType.CDROM); break; // http://www.meritgames.com/Service%20Center/Ion%20Troubleshooting.pdf - case KnownSystem.MeritIndustriesMegaTouchION: + case RedumpSystem.MeritIndustriesMegaTouchION: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); break; @@ -451,92 +452,92 @@ namespace MPF.Utilities // http://www.meritgames.com/Support_Center/EZ%20Maxx/Manuals/MAXX%20Elite%20with%20coin.pdf // http://www.meritgames.com/Support_Center/EZ%20Maxx/Manuals/MAXX%20Elite.pdf // http://www.meritgames.com/Support_Center/manuals/90003010%20Maxx%20TSM_Rev%20C.pdf - case KnownSystem.MeritIndustriesMegaTouchMaxx: + case RedumpSystem.MeritIndustriesMegaTouchMaxx: types.Add(MediaType.CDROM); break; // http://www.meritgames.com/Support_Center/manuals/pm0076_OA_Megatouch%20XL%20Trouble%20Shooting%20Manual.pdf // http://www.meritgames.com/Support_Center/MEGA%20XL/manuals/Megatouch_XL_pm0109-0D.pdf // http://www.meritgames.com/Support_Center/MEGA%20XL/manuals/Megatouch_XL_Super_5000_manual.pdf - case KnownSystem.MeritIndustriesMegaTouchXL: + case RedumpSystem.MeritIndustriesMegaTouchXL: types.Add(MediaType.CDROM); break; // http://system16.com/hardware.php?id=546 // http://system16.com/hardware.php?id=872 - case KnownSystem.NamcoCapcomSystem256: + case RedumpSystem.NamcoCapcomSystem256: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); break; // http://system16.com/hardware.php?id=543 - case KnownSystem.NamcoCapcomTaitoSystem246: + case RedumpSystem.NamcoSystem246: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); break; // http://system16.com/hardware.php?id=545 - case KnownSystem.NamcoSegaNintendoTriforce: + case RedumpSystem.NamcoSegaNintendoTriforce: types.Add(MediaType.CDROM); // Low density partition types.Add(MediaType.GDROM); // High density partition break; // http://system16.com/hardware.php?id=535 - case KnownSystem.NamcoSystem12: + case RedumpSystem.NamcoSystem12: types.Add(MediaType.CDROM); break; // http://system16.com/hardware.php?id=900 - case KnownSystem.NamcoSystem357: + case RedumpSystem.NamcoSystem357: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); types.Add(MediaType.BluRay); break; // https://www.arcade-history.com/?n=the-yakyuuken-part-1&page=detail&id=33049 - case KnownSystem.NewJatreCDi: + case RedumpSystem.NewJatreCDi: types.Add(MediaType.CDROM); break; // http://blog.system11.org/?p=2499 - case KnownSystem.NichibutsuHighRateSystem: + case RedumpSystem.NichibutsuHighRateSystem: types.Add(MediaType.DVD); break; // http://blog.system11.org/?p=2514 - case KnownSystem.NichibutsuSuperCD: + case RedumpSystem.NichibutsuSuperCD: types.Add(MediaType.CDROM); break; // http://collectedit.com/collectors/shou-time-213/arcade-pcbs-281/x-rate-dvd-series-17-newlywed-life-japan-by-nichibutsu-32245 - case KnownSystem.NichibutsuXRateSystem: + case RedumpSystem.NichibutsuXRateSystem: types.Add(MediaType.DVD); break; // https://en.wikipedia.org/wiki/Panasonic_M2 - case KnownSystem.PanasonicM2: + case RedumpSystem.PanasonicM2: types.Add(MediaType.CDROM); types.Add(MediaType.DVD); break; // https://github.com/mamedev/mame/blob/master/src/mame/drivers/photoply.cpp - case KnownSystem.PhotoPlayVarious: + case RedumpSystem.PhotoPlayVarious: types.Add(MediaType.CDROM); break; // UNKNOWN - case KnownSystem.RawThrillsVarious: + case RedumpSystem.RawThrillsVarious: types.Add(MediaType.DVD); break; // http://system16.com/hardware.php?id=729 - case KnownSystem.SegaChihiro: + case RedumpSystem.SegaChihiro: types.Add(MediaType.CDROM); // Low density partition types.Add(MediaType.GDROM); // High density partition break; // http://system16.com/hardware.php?id=907 - case KnownSystem.SegaEuropaR: + case RedumpSystem.SegaEuropaR: types.Add(MediaType.DVD); break; @@ -544,7 +545,7 @@ namespace MPF.Utilities // http://system16.com/hardware.php?id=731 // http://system16.com/hardware.php?id=984 // http://system16.com/hardware.php?id=986 - case KnownSystem.SegaLindbergh: + case RedumpSystem.SegaLindbergh: types.Add(MediaType.DVD); break; @@ -552,7 +553,7 @@ namespace MPF.Utilities // http://system16.com/hardware.php?id=723 // http://system16.com/hardware.php?id=906 // http://system16.com/hardware.php?id=722 - case KnownSystem.SegaNaomi: + case RedumpSystem.SegaNaomi: types.Add(MediaType.CDROM); // Low density partition types.Add(MediaType.GDROM); // High density partition break; @@ -560,59 +561,59 @@ namespace MPF.Utilities // http://system16.com/hardware.php?id=725 // http://system16.com/hardware.php?id=726 // http://system16.com/hardware.php?id=727 - case KnownSystem.SegaNaomi2: + case RedumpSystem.SegaNaomi2: types.Add(MediaType.CDROM); // Low density partition types.Add(MediaType.GDROM); // High density partition break; // http://system16.com/hardware.php?id=975 // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Nu - case KnownSystem.SegaNu: + case RedumpSystem.SegaNu: types.Add(MediaType.BluRay); break; // http://system16.com/hardware.php?id=910 // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Ring_series - case KnownSystem.SegaRingEdge: + case RedumpSystem.SegaRingEdge: types.Add(MediaType.DVD); break; // http://system16.com/hardware.php?id=982 // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Ring_series - case KnownSystem.SegaRingEdge2: + case RedumpSystem.SegaRingEdge2: types.Add(MediaType.DVD); break; // http://system16.com/hardware.php?id=911 // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Ring_series - case KnownSystem.SegaRingWide: + case RedumpSystem.SegaRingWide: types.Add(MediaType.DVD); break; // http://system16.com/hardware.php?id=711 - case KnownSystem.SegaTitanVideo: + case RedumpSystem.SegaTitanVideo: types.Add(MediaType.CDROM); break; // http://system16.com/hardware.php?id=709 // http://system16.com/hardware.php?id=710 - case KnownSystem.SegaSystem32: + case RedumpSystem.SegaSystem32: types.Add(MediaType.CDROM); break; // https://github.com/mamedev/mame/blob/master/src/mame/drivers/seibucats.cpp - case KnownSystem.SeibuCATSSystem: + case RedumpSystem.SeibuCATSSystem: types.Add(MediaType.DVD); break; // https://www.tab.at/en/support/support/downloads - case KnownSystem.TABAustriaQuizard: + case RedumpSystem.TABAustriaQuizard: types.Add(MediaType.CDROM); break; // https://primetimeamusements.com/product/tsumo-multi-game-motion-system/ // https://www.highwaygames.com/arcade-machines/tsumo-tsunami-motion-8117/ - case KnownSystem.TsunamiTsuMoMultiGameMotionSystem: + case RedumpSystem.TsunamiTsuMoMultiGameMotionSystem: types.Add(MediaType.CDROM); break; @@ -621,93 +622,92 @@ namespace MPF.Utilities #region Others // https://en.wikipedia.org/wiki/Audio_CD - case KnownSystem.AudioCD: + case RedumpSystem.AudioCD: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Blu-ray#Player_profiles - case KnownSystem.BDVideo: + case RedumpSystem.BDVideo: types.Add(MediaType.BluRay); break; // https://en.wikipedia.org/wiki/DVD-Audio - case KnownSystem.DVDAudio: + case RedumpSystem.DVDAudio: types.Add(MediaType.DVD); break; // https://en.wikipedia.org/wiki/DVD-Video - case KnownSystem.DVDVideo: + case RedumpSystem.DVDVideo: types.Add(MediaType.DVD); break; // https://en.wikipedia.org/wiki/Blue_Book_(CD_standard) - case KnownSystem.EnhancedCD: + case RedumpSystem.EnhancedCD: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/HD_DVD - case KnownSystem.HDDVDVideo: + case RedumpSystem.HDDVDVideo: types.Add(MediaType.HDDVD); break; // UNKNOWN - case KnownSystem.NavisoftNaviken21: + case RedumpSystem.NavisoftNaviken21: types.Add(MediaType.CDROM); break; // UNKNOWN - case KnownSystem.PalmOS: + case RedumpSystem.PalmOS: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Photo_CD - case KnownSystem.PhotoCD: + case RedumpSystem.PhotoCD: types.Add(MediaType.CDROM); break; // UNKNOWN - case KnownSystem.PlayStationGameSharkUpdates: + case RedumpSystem.PlayStationGameSharkUpdates: types.Add(MediaType.CDROM); break; // UNKNOWN - case KnownSystem.PocketPC: + case RedumpSystem.PocketPC: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Doors_and_Windows_(EP) - case KnownSystem.RainbowDisc: + case RedumpSystem.RainbowDisc: types.Add(MediaType.CDROM); break; // https://segaretro.org/Prologue_21 - case KnownSystem.SegaPrologue21: + case RedumpSystem.SegaPrologue21MultimediaKaraokeSystem: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Super_Audio_CD - case KnownSystem.SuperAudioCD: + case RedumpSystem.SuperAudioCD: types.Add(MediaType.CDROM); break; // https://www.cnet.com/products/tao-music-iktv-karaoke-station-karaoke-system-series/ - case KnownSystem.TaoiKTV: + case RedumpSystem.TaoiKTV: types.Add(MediaType.CDROM); break; // http://ultimateconsoledatabase.com/golden/kiss_site.htm - case KnownSystem.TomyKissSite: + case RedumpSystem.TomyKissSite: types.Add(MediaType.CDROM); break; // https://en.wikipedia.org/wiki/Video_CD - case KnownSystem.VideoCD: + case RedumpSystem.VideoCD: types.Add(MediaType.CDROM); break; #endregion - case KnownSystem.NONE: default: types.Add(MediaType.NONE); break; @@ -861,7 +861,7 @@ namespace MPF.Utilities /// /// /// - public static KnownSystem? GetKnownSystem(Drive drive, KnownSystem? defaultValue) + public static RedumpSystem? GetRedumpSystem(Drive drive, RedumpSystem? defaultValue) { // If drive or drive letter are provided, we can't do anything if (drive?.Letter == null) @@ -876,19 +876,19 @@ namespace MPF.Utilities // We're going to assume for floppies, HDDs, and removable drives // TODO: Try to be smarter about this if (drive.InternalDriveType != InternalDriveType.Optical) - return KnownSystem.IBMPCCompatible; + return RedumpSystem.IBMPCcompatible; // Audio CD if (drive.VolumeLabel.Equals("Audio CD", StringComparison.OrdinalIgnoreCase)) { - return KnownSystem.AudioCD; + return RedumpSystem.AudioCD; } // DVD-Audio if (Directory.Exists(Path.Combine(drivePath, "AUDIO_TS")) && Directory.EnumerateFiles(Path.Combine(drivePath, "AUDIO_TS")).Count() > 0) { - return KnownSystem.DVDAudio; + return RedumpSystem.DVDAudio; } // DVD-Video and Xbox @@ -897,22 +897,22 @@ namespace MPF.Utilities { // TODO: Maybe add video track hashes to compare for Xbox and X360? if (drive.VolumeLabel.StartsWith("SEP13011042", StringComparison.OrdinalIgnoreCase)) - return KnownSystem.MicrosoftXBOX; + return RedumpSystem.MicrosoftXbox; - return KnownSystem.DVDVideo; + return RedumpSystem.DVDVideo; } // HD-DVD-Video if (Directory.Exists(Path.Combine(drivePath, "HVDVD_TS")) && Directory.EnumerateFiles(Path.Combine(drivePath, "HVDVD_TS")).Count() > 0) { - return KnownSystem.HDDVDVideo; + return RedumpSystem.HDDVDVideo; } // Sega Dreamcast if (File.Exists(Path.Combine(drivePath, "IP.BIN"))) { - return KnownSystem.SegaDreamcast; + return RedumpSystem.SegaDreamcast; } // Sega Mega-CD / Sega-CD @@ -921,7 +921,7 @@ namespace MPF.Utilities || File.Exists(Path.Combine(drivePath, "_BOOT", "SP_AS.BIN")) || File.Exists(Path.Combine(drivePath, "FILESYSTEM.BIN"))) { - return KnownSystem.SegaCDMegaCD; + return RedumpSystem.SegaMegaCDSegaCD; } // Sega Saturn @@ -931,7 +931,7 @@ namespace MPF.Utilities if (sector != null) { if (sector.StartsWith(Interface.SaturnSectorZeroStart)) - return KnownSystem.SegaSaturn; + return RedumpSystem.SegaSaturn; } } catch { } @@ -944,44 +944,44 @@ namespace MPF.Utilities // Check for either BOOT or BOOT2 var systemCnf = new IniFile(systemCnfPath); if (systemCnf.ContainsKey("BOOT")) - return KnownSystem.SonyPlayStation; + return RedumpSystem.SonyPlayStation; else if (systemCnf.ContainsKey("BOOT2")) - return KnownSystem.SonyPlayStation2; + return RedumpSystem.SonyPlayStation2; } else if (File.Exists(psxExePath)) { - return KnownSystem.SonyPlayStation; + return RedumpSystem.SonyPlayStation; } // Sony PlayStation 3 if (drive.VolumeLabel.Equals("PS3VOLUME", StringComparison.OrdinalIgnoreCase)) { - return KnownSystem.SonyPlayStation3; + return RedumpSystem.SonyPlayStation3; } // Sony PlayStation 4 if (drive.VolumeLabel.Equals("PS4VOLUME", StringComparison.OrdinalIgnoreCase)) { - return KnownSystem.SonyPlayStation4; + return RedumpSystem.SonyPlayStation4; } // Sony PlayStation 5 if (drive.VolumeLabel.Equals("PS5VOLUME", StringComparison.OrdinalIgnoreCase)) { - return KnownSystem.SonyPlayStation5; + return RedumpSystem.SonyPlayStation5; } // V.Tech V.Flash / V.Smile Pro if (File.Exists(Path.Combine(drivePath, "0SYSTEM"))) { - return KnownSystem.VTechVFlashVSmilePro; + return RedumpSystem.VTechVFlashVSmilePro; } // VCD if (Directory.Exists(Path.Combine(drivePath, "VCD")) && Directory.EnumerateFiles(Path.Combine(drivePath, "VCD")).Count() > 0) { - return KnownSystem.VideoCD; + return RedumpSystem.VideoCD; } // Default return @@ -991,10 +991,10 @@ namespace MPF.Utilities /// /// Verify that, given a system and a media type, they are correct /// - public static Result GetSupportStatus(KnownSystem? system, MediaType? type) + public static Result GetSupportStatus(RedumpSystem? system, MediaType? type) { // No system chosen, update status - if (system == KnownSystem.NONE) + if (system == null) return Result.Failure("Please select a valid system"); // If we're on an unsupported type, update the status accordingly diff --git a/MPF.Test/Converters/EnumConverterTest.cs b/MPF.Test/Converters/EnumConverterTest.cs index 50d49d6d..0ce07720 100644 --- a/MPF.Test/Converters/EnumConverterTest.cs +++ b/MPF.Test/Converters/EnumConverterTest.cs @@ -3,16 +3,17 @@ using System.Collections.Generic; using System.Linq; using MPF.Data; using MPF.Utilities; +using RedumpLib.Data; using Xunit; -namespace MPF.Test.Utilities +namespace MPF.Test.Converters { - public class ConvertersTest + public class EnumConverterTest { /// /// Set of all known systems for testing /// - public static IEnumerable KnownSystems = KnownSystemComboBoxItem.GenerateElements().Select(e => new object[] { e }); + public static IEnumerable RedumpSystems = RedumpSystemComboBoxItem.GenerateElements().Select(e => new object[] { e }); [Theory] [InlineData(DiscImageCreator.CommandStrings.Audio, MediaType.CDROM)] @@ -39,26 +40,26 @@ namespace MPF.Test.Utilities } [Theory] - [InlineData(DiscImageCreator.CommandStrings.Audio, KnownSystem.AudioCD)] - [InlineData(DiscImageCreator.CommandStrings.BluRay, KnownSystem.SonyPlayStation3)] + [InlineData(DiscImageCreator.CommandStrings.Audio, RedumpSystem.AudioCD)] + [InlineData(DiscImageCreator.CommandStrings.BluRay, RedumpSystem.SonyPlayStation3)] [InlineData(DiscImageCreator.CommandStrings.Close, null)] - [InlineData(DiscImageCreator.CommandStrings.CompactDisc, KnownSystem.IBMPCCompatible)] - [InlineData(DiscImageCreator.CommandStrings.Data, KnownSystem.IBMPCCompatible)] - [InlineData(DiscImageCreator.CommandStrings.DigitalVideoDisc, KnownSystem.IBMPCCompatible)] + [InlineData(DiscImageCreator.CommandStrings.CompactDisc, RedumpSystem.IBMPCcompatible)] + [InlineData(DiscImageCreator.CommandStrings.Data, RedumpSystem.IBMPCcompatible)] + [InlineData(DiscImageCreator.CommandStrings.DigitalVideoDisc, RedumpSystem.IBMPCcompatible)] [InlineData(DiscImageCreator.CommandStrings.Eject, null)] - [InlineData(DiscImageCreator.CommandStrings.Floppy, KnownSystem.IBMPCCompatible)] - [InlineData(DiscImageCreator.CommandStrings.GDROM, KnownSystem.SegaDreamcast)] + [InlineData(DiscImageCreator.CommandStrings.Floppy, RedumpSystem.IBMPCcompatible)] + [InlineData(DiscImageCreator.CommandStrings.GDROM, RedumpSystem.SegaDreamcast)] [InlineData(DiscImageCreator.CommandStrings.MDS, null)] [InlineData(DiscImageCreator.CommandStrings.Reset, null)] - [InlineData(DiscImageCreator.CommandStrings.SACD, KnownSystem.SuperAudioCD)] + [InlineData(DiscImageCreator.CommandStrings.SACD, RedumpSystem.SuperAudioCD)] [InlineData(DiscImageCreator.CommandStrings.Start, null)] [InlineData(DiscImageCreator.CommandStrings.Stop, null)] [InlineData(DiscImageCreator.CommandStrings.Sub, null)] - [InlineData(DiscImageCreator.CommandStrings.Swap, KnownSystem.SegaDreamcast)] - [InlineData(DiscImageCreator.CommandStrings.XBOX, KnownSystem.MicrosoftXBOX)] - public void BaseCommandToKnownSystemTest(string command, KnownSystem? expected) + [InlineData(DiscImageCreator.CommandStrings.Swap, RedumpSystem.SegaDreamcast)] + [InlineData(DiscImageCreator.CommandStrings.XBOX, RedumpSystem.MicrosoftXbox)] + public void BaseCommandToRedumpSystemTest(string command, RedumpSystem? expected) { - KnownSystem? actual = DiscImageCreator.Converters.ToKnownSystem(command); + RedumpSystem? actual = DiscImageCreator.Converters.ToRedumpSystem(command); Assert.Equal(expected, actual); } @@ -77,33 +78,33 @@ namespace MPF.Test.Utilities } [Theory] - [MemberData(nameof(KnownSystems))] - public void KnownSystemHasValidCategory(KnownSystemComboBoxItem system) + [MemberData(nameof(RedumpSystems))] + public void RedumpSystemHasValidCategory(RedumpSystemComboBoxItem system) { - KnownSystem[] markers = { KnownSystem.MarkerArcadeEnd, KnownSystem.MarkerDiscBasedConsoleEnd, /* KnownSystem.MarkerOtherConsoleEnd, */ KnownSystem.MarkerComputerEnd, KnownSystem.MarkerOtherEnd }; + RedumpSystem[] markers = { RedumpSystem.MarkerArcadeEnd, RedumpSystem.MarkerDiscBasedConsoleEnd, /* RedumpSystem.MarkerOtherConsoleEnd, */ RedumpSystem.MarkerComputerEnd, RedumpSystem.MarkerOtherEnd }; // Non-system items won't map if (system.IsHeader) return; - // NONE will never map - if (system == KnownSystem.NONE) + // Null will never map + if (system?.Value == null) return; // we check that the category is the first category value higher than the system - KnownSystemCategory category = ((KnownSystem?)system).Category(); - KnownSystem marker = KnownSystem.NONE; + SystemCategory category = ((RedumpSystem?)system).GetCategory(); + RedumpSystem? marker = null; switch (category) { - case KnownSystemCategory.Arcade: marker = KnownSystem.MarkerArcadeEnd; break; - case KnownSystemCategory.DiscBasedConsole: marker = KnownSystem.MarkerDiscBasedConsoleEnd; break; - /* case KnownSystemCategory.OtherConsole: marker = KnownSystem.MarkerOtherConsoleEnd; break; */ - case KnownSystemCategory.Computer: marker = KnownSystem.MarkerComputerEnd; break; - case KnownSystemCategory.Other: marker = KnownSystem.MarkerOtherEnd; break; + case SystemCategory.Arcade: marker = RedumpSystem.MarkerArcadeEnd; break; + case SystemCategory.DiscBasedConsole: marker = RedumpSystem.MarkerDiscBasedConsoleEnd; break; + /* case SystemCategory.OtherConsole: marker = RedumpSystem.MarkerOtherConsoleEnd; break; */ + case SystemCategory.Computer: marker = RedumpSystem.MarkerComputerEnd; break; + case SystemCategory.Other: marker = RedumpSystem.MarkerOtherEnd; break; } - Assert.NotEqual(KnownSystem.NONE, marker); + Assert.NotEqual(null, marker); Assert.True(marker > system); Array.ForEach(markers, mmarker => diff --git a/MPF.Test/Converters/KnownSystemExtensionsTest.cs b/MPF.Test/Converters/KnownSystemExtensionsTest.cs index 4393118e..473e9630 100644 --- a/MPF.Test/Converters/KnownSystemExtensionsTest.cs +++ b/MPF.Test/Converters/KnownSystemExtensionsTest.cs @@ -2,35 +2,36 @@ using MPF.Converters; using MPF.Data; using MPF.Utilities; +using RedumpLib.Data; using Xunit; namespace MPF.Test.Converters { - public class KnownSystemExtensionsTest + public class RedumpSystemExtensionsTest { [Theory] - [InlineData(KnownSystem.MicrosoftXBOX, "Microsoft XBOX")] - [InlineData(KnownSystem.NECPC88, "NEC PC-88")] - [InlineData(KnownSystem.KonamiPython, "Konami Python")] - [InlineData(KnownSystem.HDDVDVideo, "HD-DVD-Video")] - [InlineData(KnownSystem.NONE, "Unknown")] - public void KnownSystemToStringTest(KnownSystem? knownSystem, string expected) + [InlineData(RedumpSystem.MicrosoftXbox, "Microsoft Xbox")] + [InlineData(RedumpSystem.NECPC88series, "NEC PC-88 series")] + [InlineData(RedumpSystem.KonamiPython, "Konami Python")] + [InlineData(RedumpSystem.HDDVDVideo, "HD DVD-Video")] + [InlineData(null, null)] + public void RedumpSystemToStringTest(RedumpSystem? knownSystem, string expected) { - string actual = EnumConverter.LongName(knownSystem); + string actual = Extensions.LongName(knownSystem); Assert.Equal(expected, actual); } [Fact] public void IsMarkerTest() { - var values = (KnownSystem[])Enum.GetValues(typeof(KnownSystem)); + var values = (RedumpSystem[])Enum.GetValues(typeof(RedumpSystem)); foreach(var system in values) { - bool expected = system == KnownSystem.MarkerArcadeEnd || system == KnownSystem.MarkerComputerEnd || - system == KnownSystem.MarkerOtherEnd || system == KnownSystem.MarkerDiscBasedConsoleEnd; - // || system == KnownSystem.MarkerOtherConsoleEnd; + bool expected = system == RedumpSystem.MarkerArcadeEnd || system == RedumpSystem.MarkerComputerEnd || + system == RedumpSystem.MarkerOtherEnd || system == RedumpSystem.MarkerDiscBasedConsoleEnd; + // || system == RedumpSystem.MarkerOtherConsoleEnd; - bool actual = ((KnownSystem?)system).IsMarker(); + bool actual = ((RedumpSystem?)system).IsMarker(); Assert.Equal(expected, actual); } @@ -39,10 +40,10 @@ namespace MPF.Test.Converters [Fact] public void CategoryNameNotEmptyTest() { - var values = (KnownSystemCategory[])Enum.GetValues(typeof(KnownSystemCategory)); + var values = (SystemCategory[])Enum.GetValues(typeof(SystemCategory)); foreach (var system in values) { - string actual = ((KnownSystem?)system).LongName(); + string actual = ((RedumpSystem?)system).LongName(); Assert.NotEqual("", actual); } } diff --git a/MPF.Test/Utilities/DumpEnvironmentTest.cs b/MPF.Test/Utilities/DumpEnvironmentTest.cs index 1d5bc9c8..dafbd7a1 100644 --- a/MPF.Test/Utilities/DumpEnvironmentTest.cs +++ b/MPF.Test/Utilities/DumpEnvironmentTest.cs @@ -1,6 +1,7 @@ using System.IO; using MPF.Data; using MPF.Utilities; +using RedumpLib.Data; using Xunit; namespace MPF.Test @@ -21,7 +22,7 @@ namespace MPF.Test ? new Drive(InternalDriveType.Floppy, new DriveInfo(letter.ToString())) : new Drive(InternalDriveType.Optical, new DriveInfo(letter.ToString())); - var env = new DumpEnvironment(options, string.Empty, string.Empty, drive, KnownSystem.IBMPCCompatible, mediaType, parameters); + var env = new DumpEnvironment(options, string.Empty, string.Empty, drive, RedumpSystem.IBMPCcompatible, mediaType, parameters); bool actual = env.ParametersValid(); Assert.Equal(expected, actual); diff --git a/MPF.Test/Utilities/ParametersTest.cs b/MPF.Test/Utilities/ParametersTest.cs index aef0c804..664a4c02 100644 --- a/MPF.Test/Utilities/ParametersTest.cs +++ b/MPF.Test/Utilities/ParametersTest.cs @@ -3,6 +3,7 @@ using System.Linq; using MPF.Data; using MPF.DiscImageCreator; using MPF.Utilities; +using RedumpLib.Data; using Xunit; namespace MPF.Test.Utilities @@ -10,13 +11,13 @@ namespace MPF.Test.Utilities public class ParametersTest { [Theory] - [InlineData(KnownSystem.MicrosoftXBOX, MediaType.CDROM, CommandStrings.CompactDisc)] - [InlineData(KnownSystem.MicrosoftXBOX, MediaType.DVD, CommandStrings.XBOX)] - [InlineData(KnownSystem.MicrosoftXBOX, MediaType.LaserDisc, null)] - [InlineData(KnownSystem.SegaNu, MediaType.BluRay, CommandStrings.BluRay)] - [InlineData(KnownSystem.AppleMacintosh, MediaType.FloppyDisk, CommandStrings.Floppy)] - [InlineData(KnownSystem.RawThrillsVarious, MediaType.GDROM, null)] - public void ParametersFromSystemAndTypeTest(KnownSystem? knownSystem, MediaType? mediaType, string expected) + [InlineData(RedumpSystem.MicrosoftXbox, MediaType.CDROM, CommandStrings.CompactDisc)] + [InlineData(RedumpSystem.MicrosoftXbox, MediaType.DVD, CommandStrings.XBOX)] + [InlineData(RedumpSystem.MicrosoftXbox, MediaType.LaserDisc, null)] + [InlineData(RedumpSystem.SegaNu, MediaType.BluRay, CommandStrings.BluRay)] + [InlineData(RedumpSystem.AppleMacintosh, MediaType.FloppyDisk, CommandStrings.Floppy)] + [InlineData(RedumpSystem.RawThrillsVarious, MediaType.GDROM, null)] + public void ParametersFromSystemAndTypeTest(RedumpSystem? knownSystem, MediaType? mediaType, string expected) { var options = new Options { }; var actual = new Parameters(knownSystem, mediaType, 'D', "disc.bin", 16, options); @@ -24,21 +25,21 @@ namespace MPF.Test.Utilities } [Theory] - [InlineData(KnownSystem.AppleMacintosh, MediaType.LaserDisc, true, 20, null, null)] - [InlineData(KnownSystem.NintendoGameCube, MediaType.NintendoGameCubeGameDisc, false, 20, null, new string[] { FlagStrings.Raw })] - [InlineData(KnownSystem.IBMPCCompatible, MediaType.DVD, false, 20, null, new string[] { FlagStrings.CopyrightManagementInformation, FlagStrings.ScanFileProtect })] + [InlineData(RedumpSystem.AppleMacintosh, MediaType.LaserDisc, true, 20, null, null)] + [InlineData(RedumpSystem.NintendoGameCube, MediaType.NintendoGameCubeGameDisc, false, 20, null, new string[] { FlagStrings.Raw })] + [InlineData(RedumpSystem.IBMPCcompatible, MediaType.DVD, false, 20, null, new string[] { FlagStrings.CopyrightManagementInformation, FlagStrings.ScanFileProtect })] /* paranoid mode tests */ - [InlineData(KnownSystem.IBMPCCompatible, MediaType.CDROM, true, 1000, 2, new string[] { FlagStrings.C2Opcode, FlagStrings.NoFixSubQSecuROM, FlagStrings.ScanFileProtect, FlagStrings.ScanSectorProtect, FlagStrings.SubchannelReadLevel })] - [InlineData(KnownSystem.AppleMacintosh, MediaType.CDROM, false, 20, null, new string[] { FlagStrings.C2Opcode, FlagStrings.NoFixSubQSecuROM, FlagStrings.ScanFileProtect, FlagStrings.ScanSectorProtect, FlagStrings.SubchannelReadLevel })] - [InlineData(KnownSystem.IBMPCCompatible, MediaType.DVD, true, 500, null, new string[] { FlagStrings.CopyrightManagementInformation, FlagStrings.ScanFileProtect })] - [InlineData(KnownSystem.HDDVDVideo, MediaType.HDDVD, true, 500, null, new string[] { FlagStrings.CopyrightManagementInformation })] - [InlineData(KnownSystem.IBMPCCompatible, MediaType.DVD, false, 500, null, new string[] { FlagStrings.CopyrightManagementInformation, FlagStrings.ScanFileProtect })] - [InlineData(KnownSystem.HDDVDVideo, MediaType.HDDVD, false, 500, null, new string[] { FlagStrings.CopyrightManagementInformation })] + [InlineData(RedumpSystem.IBMPCcompatible, MediaType.CDROM, true, 1000, 2, new string[] { FlagStrings.C2Opcode, FlagStrings.NoFixSubQSecuROM, FlagStrings.ScanFileProtect, FlagStrings.ScanSectorProtect, FlagStrings.SubchannelReadLevel })] + [InlineData(RedumpSystem.AppleMacintosh, MediaType.CDROM, false, 20, null, new string[] { FlagStrings.C2Opcode, FlagStrings.NoFixSubQSecuROM, FlagStrings.ScanFileProtect, FlagStrings.ScanSectorProtect, FlagStrings.SubchannelReadLevel })] + [InlineData(RedumpSystem.IBMPCcompatible, MediaType.DVD, true, 500, null, new string[] { FlagStrings.CopyrightManagementInformation, FlagStrings.ScanFileProtect })] + [InlineData(RedumpSystem.HDDVDVideo, MediaType.HDDVD, true, 500, null, new string[] { FlagStrings.CopyrightManagementInformation })] + [InlineData(RedumpSystem.IBMPCcompatible, MediaType.DVD, false, 500, null, new string[] { FlagStrings.CopyrightManagementInformation, FlagStrings.ScanFileProtect })] + [InlineData(RedumpSystem.HDDVDVideo, MediaType.HDDVD, false, 500, null, new string[] { FlagStrings.CopyrightManagementInformation })] /* reread c2 */ - [InlineData(KnownSystem.SegaDreamcast, MediaType.GDROM, false, 1000, null, new string[] { FlagStrings.C2Opcode })] - [InlineData(KnownSystem.SegaDreamcast, MediaType.GDROM, false, -1, null, new string[] { FlagStrings.C2Opcode })] + [InlineData(RedumpSystem.SegaDreamcast, MediaType.GDROM, false, 1000, null, new string[] { FlagStrings.C2Opcode })] + [InlineData(RedumpSystem.SegaDreamcast, MediaType.GDROM, false, -1, null, new string[] { FlagStrings.C2Opcode })] - public void ParametersFromOptionsTest(KnownSystem? knownSystem, MediaType? mediaType, bool paranoid, int rereadC2, int? subchannelLevel, string[] expected) + public void ParametersFromOptionsTest(RedumpSystem? knownSystem, MediaType? mediaType, bool paranoid, int rereadC2, int? subchannelLevel, string[] expected) { var options = new Options { DICParanoidMode = paranoid, DICRereadCount = rereadC2 }; var actual = new Parameters(knownSystem, mediaType, 'D', "disc.bin", 16, options); diff --git a/MPF.Test/Utilities/ValidatorsTest.cs b/MPF.Test/Utilities/ValidatorsTest.cs index 4bd3b4c8..7e227570 100644 --- a/MPF.Test/Utilities/ValidatorsTest.cs +++ b/MPF.Test/Utilities/ValidatorsTest.cs @@ -2,6 +2,7 @@ using System.Linq; using MPF.Data; using MPF.Utilities; +using RedumpLib.Data; using Xunit; namespace MPF.Test.Utilities @@ -9,26 +10,18 @@ namespace MPF.Test.Utilities public class ValidatorsTest { [Theory] - [InlineData(KnownSystem.BandaiApplePippin, MediaType.CDROM)] - [InlineData(KnownSystem.MicrosoftXBOX, MediaType.DVD)] - [InlineData(KnownSystem.NintendoGameCube, MediaType.NintendoGameCubeGameDisc)] - [InlineData(KnownSystem.NintendoWii, MediaType.NintendoWiiOpticalDisc)] - [InlineData(KnownSystem.NintendoWiiU, MediaType.NintendoWiiUOpticalDisc)] - [InlineData(KnownSystem.SonyPlayStationPortable, MediaType.UMD)] - public void GetValidMediaTypesTest(KnownSystem? knownSystem, MediaType? expected) + [InlineData(RedumpSystem.BandaiPippin, MediaType.CDROM)] + [InlineData(RedumpSystem.MicrosoftXbox, MediaType.DVD)] + [InlineData(RedumpSystem.NintendoGameCube, MediaType.NintendoGameCubeGameDisc)] + [InlineData(RedumpSystem.NintendoWii, MediaType.NintendoWiiOpticalDisc)] + [InlineData(RedumpSystem.NintendoWiiU, MediaType.NintendoWiiUOpticalDisc)] + [InlineData(RedumpSystem.SonyPlayStationPortable, MediaType.UMD)] + public void GetValidMediaTypesTest(RedumpSystem? knownSystem, MediaType? expected) { var actual = Validators.GetValidMediaTypes(knownSystem); Assert.Contains(expected, actual); } - [Fact] - public void CreateListOfSystemsTest() - { - int expected = Enum.GetValues(typeof(KnownSystem)).Length; - var actual = KnownSystemComboBoxItem.GenerateElements().ToList(); - Assert.Equal(expected, actual.Count); - } - [Fact] public void CreateListOfDrivesTest() { diff --git a/MPF/ComboBoxItems/KnownSystemComboBoxItem.cs b/MPF/ComboBoxItems/KnownSystemComboBoxItem.cs index 5bf1bb97..12ce6085 100644 --- a/MPF/ComboBoxItems/KnownSystemComboBoxItem.cs +++ b/MPF/ComboBoxItems/KnownSystemComboBoxItem.cs @@ -4,20 +4,21 @@ using System.Linq; using MPF.Converters; using MPF.Data; using MPF.Utilities; +using RedumpLib.Data; namespace MPF { /// /// Represents a single item in the System combo box /// - public class KnownSystemComboBoxItem : IElement + public class RedumpSystemComboBoxItem : IElement { private readonly object Data; - public KnownSystemComboBoxItem(KnownSystem? system) => Data = system; - public KnownSystemComboBoxItem(KnownSystemCategory? category) => Data = category; + public RedumpSystemComboBoxItem(RedumpSystem? system) => Data = system; + public RedumpSystemComboBoxItem(SystemCategory? category) => Data = category; - public static implicit operator KnownSystem?(KnownSystemComboBoxItem item) => item.Data as KnownSystem?; + public static implicit operator RedumpSystem?(RedumpSystemComboBoxItem item) => item.Data as RedumpSystem?; /// public string Name @@ -25,9 +26,9 @@ namespace MPF get { if (IsHeader) - return "---------- " + EnumConverter.GetLongName(Data as KnownSystemCategory?) + " ----------"; + return "---------- " + (Data as SystemCategory?).LongName() + " ----------"; else - return EnumConverter.GetLongName(Data as KnownSystem?); + return (Data as RedumpSystem?).LongName() ?? "No system selected"; } } @@ -36,31 +37,31 @@ namespace MPF /// /// Internal enum value /// - public KnownSystem? Value => Data as KnownSystem?; + public RedumpSystem? Value => Data as RedumpSystem?; /// /// Determines if the item is a header value /// - public bool IsHeader => Data is KnownSystemCategory?; + public bool IsHeader => Data is SystemCategory?; /// /// Determines if the item is a standard system value /// - public bool IsSystem => Data is KnownSystem?; + public bool IsSystem => Data is RedumpSystem?; /// /// Generate all elements for the known system combo box /// /// - public static IEnumerable GenerateElements() + public static IEnumerable GenerateElements() { - var knownSystems = Enum.GetValues(typeof(KnownSystem)) - .OfType() - .Where(s => !s.IsMarker() && s != KnownSystem.NONE) + var knownSystems = Enum.GetValues(typeof(RedumpSystem)) + .OfType() + .Where(s => !s.IsMarker() && s.GetCategory() != SystemCategory.NONE) .ToList(); - Dictionary> mapping = knownSystems - .GroupBy(s => s.Category()) + Dictionary> mapping = knownSystems + .GroupBy(s => s.GetCategory()) .ToDictionary( k => k.Key, v => v @@ -68,15 +69,15 @@ namespace MPF .ToList() ); - var systemsValues = new List + var systemsValues = new List { - new KnownSystemComboBoxItem(KnownSystem.NONE), + new RedumpSystemComboBoxItem((RedumpSystem?)null), }; foreach (var group in mapping) { - systemsValues.Add(new KnownSystemComboBoxItem(group.Key)); - group.Value.ForEach(system => systemsValues.Add(new KnownSystemComboBoxItem(system))); + systemsValues.Add(new RedumpSystemComboBoxItem(group.Key)); + group.Value.ForEach(system => systemsValues.Add(new RedumpSystemComboBoxItem(system))); } return systemsValues; diff --git a/MPF/ViewModels/DiscInformationViewModel.cs b/MPF/ViewModels/DiscInformationViewModel.cs index 58a3f2aa..da0aea4d 100644 --- a/MPF/ViewModels/DiscInformationViewModel.cs +++ b/MPF/ViewModels/DiscInformationViewModel.cs @@ -74,16 +74,15 @@ namespace MPF.GUI.ViewModels { // Sony-printed discs have layers in the opposite order var system = SubmissionInfo?.CommonDiscInfo?.System; - bool reverseOrder = system == KnownSystem.SonyPlayStation2 - || system == KnownSystem.SonyPlayStation3 - || system == KnownSystem.SonyPlayStation4 - || system == KnownSystem.SonyPlayStation5; + bool reverseOrder = system == RedumpSystem.SonyPlayStation2 + || system == RedumpSystem.SonyPlayStation3 + || system == RedumpSystem.SonyPlayStation4; // Different media types mean different fields available switch (SubmissionInfo?.CommonDiscInfo?.Media) { - case MediaType.CDROM: - case MediaType.GDROM: + case DiscType.CD: + case DiscType.GDROM: Parent.L0Info.Header = "Data Side"; Parent.L0MasteringRing.Label = "Mastering Ring"; Parent.L0MasteringSID.Label = "Mastering SID"; @@ -99,12 +98,15 @@ namespace MPF.GUI.ViewModels Parent.L1AdditionalMould.Label = "Additional Mould"; break; - case MediaType.DVD: - case MediaType.HDDVD: - case MediaType.BluRay: - case MediaType.NintendoGameCubeGameDisc: - case MediaType.NintendoWiiOpticalDisc: - case MediaType.NintendoWiiUOpticalDisc: + case DiscType.DVD5: + case DiscType.DVD9: + case DiscType.HDDVDSL: + case DiscType.BD25: + case DiscType.BD50: + case DiscType.NintendoGameCubeGameDisc: + case DiscType.NintendoWiiOpticalDiscSL: + case DiscType.NintendoWiiOpticalDiscDL: + case DiscType.NintendoWiiUOpticalDiscSL: // Quad-layer discs if (SubmissionInfo?.SizeAndChecksums?.Layerbreak3 != default(long)) { @@ -211,7 +213,7 @@ namespace MPF.GUI.ViewModels // Different systems mean different fields available switch (system) { - case KnownSystem.SonyPlayStation2: + case RedumpSystem.SonyPlayStation2: Parent.LanguageSelectionGrid.Visibility = Visibility.Visible; break; } diff --git a/MPF/ViewModels/MainViewModel.cs b/MPF/ViewModels/MainViewModel.cs index 9899561c..28a165a7 100644 --- a/MPF/ViewModels/MainViewModel.cs +++ b/MPF/ViewModels/MainViewModel.cs @@ -11,6 +11,7 @@ using MPF.Converters; using MPF.Data; using MPF.Utilities; using MPF.Windows; +using RedumpLib.Data; using WPFCustomMessageBox; namespace MPF.GUI.ViewModels @@ -46,7 +47,7 @@ namespace MPF.GUI.ViewModels /// /// Current list of supported system profiles /// - public List Systems { get; set; } = KnownSystemComboBoxItem.GenerateElements().ToList(); + public List Systems { get; set; } = RedumpSystemComboBoxItem.GenerateElements().ToList(); #endregion @@ -146,7 +147,7 @@ namespace MPF.GUI.ViewModels /// public void PopulateMediaType() { - KnownSystem? currentSystem = App.Instance.SystemTypeComboBox.SelectedItem as KnownSystemComboBoxItem; + RedumpSystem? currentSystem = App.Instance.SystemTypeComboBox.SelectedItem as RedumpSystemComboBoxItem; if (currentSystem != null) { @@ -195,7 +196,7 @@ namespace MPF.GUI.ViewModels /// public void ChangeSystem() { - App.Logger.VerboseLogLn($"Changed system to: {(App.Instance.SystemTypeComboBox.SelectedItem as KnownSystemComboBoxItem).Name}"); + App.Logger.VerboseLogLn($"Changed system to: {(App.Instance.SystemTypeComboBox.SelectedItem as RedumpSystemComboBoxItem).Name}"); PopulateMediaType(); GetOutputNames(false); EnsureDiscInformation(); @@ -640,7 +641,7 @@ namespace MPF.GUI.ViewModels return; // Get reasonable default values based on the current system - KnownSystem? currentSystem = Systems[App.Instance.SystemTypeComboBox.SelectedIndex]; + RedumpSystem? currentSystem = Systems[App.Instance.SystemTypeComboBox.SelectedIndex]; MediaType? defaultMediaType = Validators.GetValidMediaTypes(currentSystem).FirstOrDefault() ?? MediaType.CDROM; if (defaultMediaType == MediaType.NONE) defaultMediaType = MediaType.CDROM; @@ -697,7 +698,7 @@ namespace MPF.GUI.ViewModels App.Instance.OutputDirectoryTextBox.Text, App.Instance.OutputFilenameTextBox.Text, App.Instance.DriveLetterComboBox.SelectedItem as Drive, - App.Instance.SystemTypeComboBox.SelectedItem as KnownSystemComboBoxItem, + App.Instance.SystemTypeComboBox.SelectedItem as RedumpSystemComboBoxItem, App.Instance.MediaTypeComboBox.SelectedItem as Element, App.Instance.ParametersTextBox.Text); @@ -735,10 +736,10 @@ namespace MPF.GUI.ViewModels if (!App.Options.SkipSystemDetection && App.Instance.DriveLetterComboBox.SelectedIndex > -1) { App.Logger.VerboseLog($"Trying to detect system for drive {Drives[App.Instance.DriveLetterComboBox.SelectedIndex].Letter}.. "); - var currentSystem = Validators.GetKnownSystem(Drives[App.Instance.DriveLetterComboBox.SelectedIndex], App.Options.DefaultSystem); - App.Logger.VerboseLogLn(currentSystem == KnownSystem.NONE ? "unable to detect." : ("detected " + EnumConverter.GetLongName(currentSystem) + ".")); + var currentSystem = Validators.GetRedumpSystem(Drives[App.Instance.DriveLetterComboBox.SelectedIndex], App.Options.DefaultSystem); + App.Logger.VerboseLogLn(currentSystem == null ? "unable to detect." : ("detected " + EnumConverter.GetLongName(currentSystem) + ".")); - if (currentSystem != KnownSystem.NONE) + if (currentSystem != null) { int sysIndex = Systems.FindIndex(s => s == currentSystem); App.Instance.SystemTypeComboBox.SelectedIndex = sysIndex; @@ -789,7 +790,7 @@ namespace MPF.GUI.ViewModels public void GetOutputNames(bool driveChanged) { Drive drive = App.Instance.DriveLetterComboBox.SelectedItem as Drive; - KnownSystem? systemType = App.Instance.SystemTypeComboBox.SelectedItem as KnownSystemComboBoxItem; + RedumpSystem? systemType = App.Instance.SystemTypeComboBox.SelectedItem as RedumpSystemComboBoxItem; MediaType? mediaType = App.Instance.MediaTypeComboBox.SelectedItem as Element; // Get the extension for the file for the next two statements @@ -997,7 +998,7 @@ namespace MPF.GUI.ViewModels /// private bool ShouldEnableDumpingButton() { - return App.Instance.SystemTypeComboBox.SelectedItem as KnownSystemComboBoxItem != KnownSystem.NONE + return App.Instance.SystemTypeComboBox.SelectedItem as RedumpSystemComboBoxItem != null && Drives != null && Drives.Count > 0 && !string.IsNullOrEmpty(App.Instance.ParametersTextBox.Text); diff --git a/MPF/ViewModels/OptionsViewModel.cs b/MPF/ViewModels/OptionsViewModel.cs index 4cfc0585..878a0076 100644 --- a/MPF/ViewModels/OptionsViewModel.cs +++ b/MPF/ViewModels/OptionsViewModel.cs @@ -42,7 +42,7 @@ namespace MPF.GUI.ViewModels /// /// Current list of supported system profiles /// - public List Systems { get; private set; } = KnownSystemComboBoxItem.GenerateElements().ToList(); + public List Systems { get; private set; } = RedumpSystemComboBoxItem.GenerateElements().ToList(); #endregion @@ -87,8 +87,8 @@ namespace MPF.GUI.ViewModels { var selectedInternalProgram = Parent.InternalProgramComboBox.SelectedItem as Element; Options.InternalProgram = selectedInternalProgram?.Value ?? InternalProgram.DiscImageCreator; - var selectedDefaultSystem = Parent.DefaultSystemComboBox.SelectedItem as KnownSystemComboBoxItem; - Options.DefaultSystem = selectedDefaultSystem?.Value ?? KnownSystem.NONE; + var selectedDefaultSystem = Parent.DefaultSystemComboBox.SelectedItem as RedumpSystemComboBoxItem; + Options.DefaultSystem = selectedDefaultSystem?.Value ?? null; Options.RedumpPassword = Parent.RedumpPasswordBox.Password; SavedSettings = true; diff --git a/MPF/Windows/DiscInformationWindow.xaml.cs b/MPF/Windows/DiscInformationWindow.xaml.cs index 8e4448aa..d43f59fc 100644 --- a/MPF/Windows/DiscInformationWindow.xaml.cs +++ b/MPF/Windows/DiscInformationWindow.xaml.cs @@ -1,5 +1,5 @@ -using MPF.Data; -using MPF.GUI.ViewModels; +using MPF.GUI.ViewModels; +using RedumpLib.Data; namespace MPF.Windows { diff --git a/RedumpLib/Attributes/HumanReadableAttribute.cs b/RedumpLib/Attributes/HumanReadableAttribute.cs index 74e50861..f4fa22ec 100644 --- a/RedumpLib/Attributes/HumanReadableAttribute.cs +++ b/RedumpLib/Attributes/HumanReadableAttribute.cs @@ -7,8 +7,19 @@ namespace RedumpLib.Attributes /// public class HumanReadableAttribute : Attribute { + /// + /// Item is marked as obsolete or unusable + /// + public bool Available { get; set; } = true; + + /// + /// Human-readable name of the item + /// public string LongName { get; set; } + /// + /// Internally used name of the item + /// public string ShortName { get; set; } } } \ No newline at end of file diff --git a/RedumpLib/Attributes/SystemAttribute.cs b/RedumpLib/Attributes/SystemAttribute.cs index 94292af4..d40e93e4 100644 --- a/RedumpLib/Attributes/SystemAttribute.cs +++ b/RedumpLib/Attributes/SystemAttribute.cs @@ -1,3 +1,5 @@ +using RedumpLib.Data; + namespace RedumpLib.Attributes { /// @@ -5,6 +7,11 @@ namespace RedumpLib.Attributes /// public class SystemAttribute : HumanReadableAttribute { + /// + /// Category for the system + /// + public SystemCategory Category { get; set; } + /// /// System is restricted to dumpers /// diff --git a/RedumpLib/Converters/DiscTypeConverter.cs b/RedumpLib/Converters/DiscTypeConverter.cs new file mode 100644 index 00000000..214fd8d8 --- /dev/null +++ b/RedumpLib/Converters/DiscTypeConverter.cs @@ -0,0 +1,32 @@ +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using RedumpLib.Data; + +namespace RedumpLib.Converters +{ + /// + /// Serialize DiscType enum values + /// + public class DiscTypeConverter : JsonConverter + { + public override bool CanRead { get { return false; } } + + public override DiscType?[] ReadJson(JsonReader reader, Type objectType, DiscType?[] existingValue, bool hasExistingValue, JsonSerializer serializer) + { + throw new NotImplementedException(); + } + + public override void WriteJson(JsonWriter writer, DiscType?[] value, JsonSerializer serializer) + { + JArray array = new JArray(); + foreach (var val in value) + { + JToken t = JToken.FromObject(val.LongName() ?? string.Empty); + array.Add(t); + } + + array.WriteTo(writer); + } + } +} \ No newline at end of file diff --git a/RedumpLib/Converters/YesNoConverter.cs b/RedumpLib/Converters/YesNoConverter.cs new file mode 100644 index 00000000..c657bd80 --- /dev/null +++ b/RedumpLib/Converters/YesNoConverter.cs @@ -0,0 +1,32 @@ +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using RedumpLib.Data; + +namespace RedumpLib.Converters +{ + /// + /// Serialize YesNo enum values + /// + public class YesNoConverter : JsonConverter + { + public override bool CanRead { get { return false; } } + + public override YesNo[] ReadJson(JsonReader reader, Type objectType, YesNo[] existingValue, bool hasExistingValue, JsonSerializer serializer) + { + throw new NotImplementedException(); + } + + public override void WriteJson(JsonWriter writer, YesNo[] value, JsonSerializer serializer) + { + JArray array = new JArray(); + foreach (var val in value) + { + JToken t = JToken.FromObject(val.LongName() ?? string.Empty); + array.Add(t); + } + + array.WriteTo(writer); + } + } +} \ No newline at end of file diff --git a/RedumpLib/Data/Enumerations.cs b/RedumpLib/Data/Enumerations.cs index e2d998bf..b7ea8fdc 100644 --- a/RedumpLib/Data/Enumerations.cs +++ b/RedumpLib/Data/Enumerations.cs @@ -41,6 +41,56 @@ namespace RedumpLib.Data AddOns = 11, } + /// + /// List of all disc types + /// + public enum DiscType + { + NONE = 0, + + [HumanReadable(LongName = "BD-25")] + BD25, + + [HumanReadable(LongName = "BD-50")] + BD50, + + [HumanReadable(LongName = "CD")] + CD, + + [HumanReadable(LongName = "DVD-5")] + DVD5, + + [HumanReadable(LongName = "DVD-9")] + DVD9, + + [HumanReadable(LongName = "GD-ROM")] + GDROM, + + [HumanReadable(LongName = "HD-DVD SL")] + HDDVDSL, + + [HumanReadable(LongName = "MIL-CD")] + MILCD, + + [HumanReadable(LongName = "Nintendo GameCube Game Disc")] + NintendoGameCubeGameDisc, + + [HumanReadable(LongName = "Nintendo Wii Optical Disc SL")] + NintendoWiiOpticalDiscSL, + + [HumanReadable(LongName = "Nintendo Wii Optical Disc DL")] + NintendoWiiOpticalDiscDL, + + [HumanReadable(LongName = "Nintendo Wii U Optical Disc SL")] + NintendoWiiUOpticalDiscSL, + + [HumanReadable(LongName = "UMD SL")] + UMDSL, + + [HumanReadable(LongName = "UMD DL")] + UMDDL, + } + /// /// Dump status /// @@ -224,9 +274,11 @@ namespace RedumpLib.Data /// /// List of all known systems /// + /// TODO: Remove marker items public enum RedumpSystem { - // Special BIOS sets + #region BIOS Sets + [System(LongName = "Microsoft Xbox (BIOS)", ShortName = "xbox-bios", HasDat = true)] MicrosoftXboxBIOS, @@ -239,243 +291,548 @@ namespace RedumpLib.Data [System(LongName = "Sony PlayStation 2 (BIOS)", ShortName = "ps2-bios", HasDat = true)] SonyPlayStation2BIOS, - // Regular systems - [System(LongName = "Acorn Archimedes", ShortName = "archcd", HasCues = true, HasDat = true)] - AcornArchimedes, + #endregion - [System(LongName = "Apple Macintosh", ShortName = "mac", HasCues = true, HasDat = true)] - AppleMacintosh, + #region Disc-Based Consoles - [System(LongName = "Atari Jaguar CD Interactive Multimedia System", ShortName = "ajcd", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Atari Jaguar CD Interactive Multimedia System", ShortName = "ajcd", HasCues = true, HasDat = true)] AtariJaguarCDInteractiveMultimediaSystem, - [System(LongName = "Audio CD", ShortName = "audio-cd", IsBanned = true, HasCues = true, HasDat = true)] - AudioCD, - - [System(LongName = "Bandai Pippin", ShortName = "pippin", HasCues = true, HasDat = true)] - BandaiPippin, - - [System(LongName = "Bandai Playdia Quick Interactive System", ShortName = "qis", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Bandai Playdia Quick Interactive System", ShortName = "qis", HasCues = true, HasDat = true)] BandaiPlaydiaQuickInteractiveSystem, - [System(LongName = "BD-Video", ShortName = "bd-video", IsBanned = true, HasDat = true)] - BDVideo, + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Bandai Pippin", ShortName = "pippin", HasCues = true, HasDat = true)] + BandaiPippin, - [System(LongName = "Commodore Amiga CD", ShortName = "acd", HasCues = true, HasDat = true)] - CommodoreAmigaCD, - - [System(LongName = "Commodore Amiga CD32", ShortName = "cd32", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Commodore Amiga CD32", ShortName = "cd32", HasCues = true, HasDat = true)] CommodoreAmigaCD32, - [System(LongName = "Commodore Amiga CDTV", ShortName = "cdtv", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Commodore Amiga CDTV", ShortName = "cdtv", HasCues = true, HasDat = true)] CommodoreAmigaCDTV, - [System(LongName = "DVD-Video", ShortName = "dvd-video", IsBanned = true, HasDat = true)] - DVDVideo, + [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Envizions EVO Smart Console")] + EnvizionsEVOSmartConsole, - [System(LongName = "Enhanced CD", ShortName = "enhanced-cd", IsBanned = true)] - EnhancedCD, + [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Fujitsu FM Towns Marty")] + FujitsuFMTownsMarty, - [System(LongName = "Fujitsu FM Towns series", ShortName = "fmt", HasCues = true, HasDat = true)] - FujitsuFMTownsseries, - - [System(LongName = "funworld Photo Play", ShortName = "fpp", HasCues = true, HasDat = true)] - funworldPhotoPlay, - - [System(LongName = "Hasbro VideoNow", ShortName = "hvn", IsBanned = true, HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow", ShortName = "hvn", IsBanned = true, HasCues = true, HasDat = true)] HasbroVideoNow, - [System(LongName = "Hasbro VideoNow Color", ShortName = "hvnc", IsBanned = true, HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow Color", ShortName = "hvnc", IsBanned = true, HasCues = true, HasDat = true)] HasbroVideoNowColor, - [System(LongName = "Hasbro VideoNow Jr.", ShortName = "hvnjr", IsBanned = true, HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow Jr.", ShortName = "hvnjr", IsBanned = true, HasCues = true, HasDat = true)] HasbroVideoNowJr, - [System(LongName = "Hasbro VideoNow XP", ShortName = "hvnxp", IsBanned = true, HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow XP", ShortName = "hvnxp", IsBanned = true, HasCues = true, HasDat = true)] HasbroVideoNowXP, - [System(LongName = "HD DVD-Video", ShortName = "hddvd-video", IsBanned = true, HasDat = true)] - HDDVDVideo, - - [System(LongName = "IBM PC compatible", ShortName = "pc", HasCues = true, HasDat = true, HasLsd = true, HasSbi = true)] - IBMPCcompatible, - - [System(LongName = "Incredible Technologies Eagle", ShortName = "ite", HasCues = true, HasDat = true)] - IncredibleTechnologiesEagle, - - [System(LongName = "Konami e-Amusement", ShortName = "kea", HasCues = true, HasDat = true)] - KonamieAmusement, - - [System(LongName = "Konami FireBeat", ShortName = "kfb", HasCues = true, HasDat = true)] - KonamiFireBeat, - - [System(LongName = "Konami M2", ShortName = "km2", IsBanned = true, HasCues = true, HasDat = true)] - KonamiM2, - - [System(LongName = "Konami System 573", ShortName = "ks573")] - KonamiSystem573, - - [System(LongName = "Konami System GV", ShortName = "ksgv", HasCues = true, HasDat = true)] - KonamiSystemGV, - - [System(LongName = "Konami Twinkle", ShortName = "kt")] - KonamiTwinkle, - - [System(LongName = "Mattel Fisher-Price iXL", ShortName = "ixl", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Mattel Fisher-Price iXL", ShortName = "ixl", HasCues = true, HasDat = true)] MattelFisherPriceiXL, - [System(LongName = "Mattel HyperScan", ShortName = "hs", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Mattel HyperScan", ShortName = "hs", HasCues = true, HasDat = true)] MattelHyperScan, - [System(LongName = "Memorex Visual Information System", ShortName = "vis", HasCues = true, HasDat = true)] - MemorexVisualInformationSystem, - - [System(LongName = "Microsoft Xbox", ShortName = "xbox", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox", ShortName = "xbox", HasCues = true, HasDat = true)] MicrosoftXbox, - [System(LongName = "Microsoft Xbox 360", ShortName = "xbox360", IsBanned = true, HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox 360", ShortName = "xbox360", IsBanned = true, HasCues = true, HasDat = true)] MicrosoftXbox360, - [System(LongName = "Microsoft Xbox One", ShortName = "xboxone", IsBanned = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox One", ShortName = "xboxone", IsBanned = true, HasDat = true)] MicrosoftXboxOne, - //[System(LongName = "Microsoft Xbox Series X/S", ShortName = "xboxxs", IsBanned = true)] - //MicrosoftXboxSeriesXandS, // TODO: Not available yet + [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Microsoft Xbox Series X/S")] + MicrosoftXboxSeriesXS, - [System(LongName = "Namco · Sega · Nintendo Triforce", ShortName = "triforce", HasCues = true, HasDat = true, HasGdi = true)] - NamcoSegaNintendoTriforce, + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Memorex Visual Information System", ShortName = "vis", HasCues = true, HasDat = true)] + MemorexVisualInformationSystem, - [System(LongName = "Namco System 12", ShortName = "ns12")] - NamcoSystem12, - - [System(LongName = "Namco System 246", ShortName = "ns246", HasCues = true, HasDat = true)] - NamcoSystem246, - - [System(LongName = "Navisoft Naviken 2.1", ShortName = "navi21", IsBanned = true, HasCues = true, HasDat = true)] - NavisoftNaviken21, - - [System(LongName = "NEC PC Engine CD & TurboGrafx CD", ShortName = "pce", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "NEC PC Engine CD & TurboGrafx CD", ShortName = "pce", HasCues = true, HasDat = true)] NECPCEngineCDTurboGrafxCD, - [System(LongName = "NEC PC-88 series", ShortName = "pc-88", HasCues = true, HasDat = true)] - NECPC88series, - - [System(LongName = "NEC PC-98 series", ShortName = "pc-98", HasCues = true, HasDat = true)] - NECPC98series, - - [System(LongName = "NEC PC-FX & PC-FXGA", ShortName = "pc-fx", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "NEC PC-FX & PC-FXGA", ShortName = "pc-fx", HasCues = true, HasDat = true)] NECPCFXPCFXGA, - [System(LongName = "Nintendo GameCube", ShortName = "gc", HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo GameCube", ShortName = "gc", HasDat = true)] NintendoGameCube, - [System(LongName = "Nintendo Wii", ShortName = "wii", IsBanned = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Nintendo-Sony Super NES CD-ROM System")] + NintendoSonySuperNESCDROMSystem, + + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo Wii", ShortName = "wii", IsBanned = true, HasDat = true)] NintendoWii, - [System(LongName = "Nintendo Wii U", ShortName = "wiiu", IsBanned = true, HasDat = true, HasKeys = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo Wii U", ShortName = "wiiu", IsBanned = true, HasDat = true, HasKeys = true)] NintendoWiiU, - [System(LongName = "Palm OS", ShortName = "palm", HasCues = true, HasDat = true)] - PalmOS, - - [System(LongName = "Panasonic 3DO Interactive Multiplayer", ShortName = "3do", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Panasonic 3DO Interactive Multiplayer", ShortName = "3do", HasCues = true, HasDat = true)] Panasonic3DOInteractiveMultiplayer, - [System(LongName = "Panasonic M2", ShortName = "m2", IsBanned = true, HasCues = true, HasDat = true)] - PanasonicM2, - - [System(LongName = "Philips CD-i", ShortName = "cdi", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Philips CD-i", ShortName = "cdi", HasCues = true, HasDat = true)] PhilipsCDi, - [System(LongName = "Philips CD-i Digital Video", ShortName = "cdi-video", IsBanned = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Philips CD-i Digital Video", ShortName = "cdi-video", IsBanned = true)] PhilipsCDiDigitalVideo, - [System(LongName = "Photo CD", ShortName = "photo-cd", HasCues = true, HasDat = true)] - PhotoCD, + [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Pioneer LaserActive")] + PioneerLaserActive, - [System(LongName = "PlayStation GameShark Updates", ShortName = "psxgs", HasCues = true, HasDat = true)] - PlayStationGameSharkUpdates, - - [System(LongName = "Pocket PC", ShortName = "ppc", HasCues = true, HasDat = true)] - PocketPC, - - [System(LongName = "Sega Chihiro", ShortName = "chihiro", HasCues = true, HasDat = true, HasGdi = true)] - SegaChihiro, - - [System(LongName = "Sega Dreamcast", ShortName = "dc", HasCues = true, HasDat = true, HasGdi = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Dreamcast", ShortName = "dc", HasCues = true, HasDat = true, HasGdi = true)] SegaDreamcast, - [System(LongName = "Sega Lindbergh", ShortName = "lindbergh", HasDat = true)] - SegaLindbergh, - - [System(LongName = "Sega Mega CD & Sega CD", ShortName = "mcd", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Mega CD & Sega CD", ShortName = "mcd", HasCues = true, HasDat = true)] SegaMegaCDSegaCD, - [System(LongName = "Sega Naomi", ShortName = "naomi", HasCues = true, HasDat = true, HasGdi = true)] - SegaNaomi, - - [System(LongName = "Sega Naomi 2", ShortName = "naomi2", HasCues = true, HasDat = true, HasGdi = true)] - SegaNaomi2, - - [System(LongName = "Sega Prologue 21 Multimedia Karaoke System", ShortName = "sp21", HasCues = true, HasDat = true)] - SegaPrologue21MultimediaKaraokeSystem, - - [System(LongName = "Sega RingEdge", ShortName = "sre", IsBanned = true, HasDat = true)] - SegaRingEdge, - - [System(LongName = "Sega RingEdge 2", ShortName = "sre2", IsBanned = true, HasDat = true)] - SegaRingEdge2, - - [System(LongName = "Sega Saturn", ShortName = "ss", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Saturn", ShortName = "ss", HasCues = true, HasDat = true)] SegaSaturn, - [System(LongName = "Sega Titan Video", ShortName = "stv")] - SegaTitanVideo, - - [System(LongName = "Sharp X68000", ShortName = "x86kcd", HasCues = true, HasDat = true)] - SharpX68000, - - [System(LongName = "Neo Geo CD", ShortName = "ngcd", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Neo Geo CD", ShortName = "ngcd", HasCues = true, HasDat = true)] SNKNeoGeoCD, - [System(LongName = "Sony PlayStation", ShortName = "psx", HasCues = true, HasDat = true, HasLsd = true, HasSbi = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation", ShortName = "psx", HasCues = true, HasDat = true, HasLsd = true, HasSbi = true)] SonyPlayStation, - [System(LongName = "Sony PlayStation 2", ShortName = "ps2", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 2", ShortName = "ps2", HasCues = true, HasDat = true)] SonyPlayStation2, - [System(LongName = "Sony PlayStation 3", ShortName = "ps3", IsBanned = true, HasCues = true, HasDat = true, HasDkeys = true, HasKeys = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 3", ShortName = "ps3", IsBanned = true, HasCues = true, HasDat = true, HasDkeys = true, HasKeys = true)] SonyPlayStation3, - [System(LongName = "Sony PlayStation 4", ShortName = "ps4", IsBanned = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 4", ShortName = "ps4", IsBanned = true, HasDat = true)] SonyPlayStation4, - //[System(LongName = "Sony PlayStation 5", ShortName = "ps5", IsBanned = true)] - //SonyPlayStation5, // TODO: Not available yet + [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Sony PlayStation 5")] + SonyPlayStation5, - [System(LongName = "Sony PlayStation Portable", ShortName = "psp", HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation Portable", ShortName = "psp", HasDat = true)] SonyPlayStationPortable, - [System(LongName = "TAB-Austria Quizard", ShortName = "quizard", HasCues = true, HasDat = true)] - TABAustriaQuizard, - - [System(LongName = "Tao iKTV", ShortName = "iktv")] - TaoiKTV, - - [System(LongName = "Tomy Kiss-Site", ShortName = "ksite", HasCues = true, HasDat = true)] - TomyKissSite, - - [System(LongName = "Video CD", ShortName = "vcd", IsBanned = true, HasCues = true, HasDat = true)] - VideoCD, - - [System(LongName = "VM Labs NUON", ShortName = "nuon", HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "VM Labs NUON", ShortName = "nuon", HasDat = true)] VMLabsNUON, - [System(LongName = "VTech V.Flash & V.Smile Pro", ShortName = "vflash", HasCues = true, HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "VTech V.Flash & V.Smile Pro", ShortName = "vflash", HasCues = true, HasDat = true)] VTechVFlashVSmilePro, - [System(LongName = "ZAPiT Games Game Wave Family Entertainment System", ShortName = "gamewave", HasDat = true)] + [System(Category = SystemCategory.DiscBasedConsole, LongName = "ZAPiT Games Game Wave Family Entertainment System", ShortName = "gamewave", HasDat = true)] ZAPiTGamesGameWaveFamilyEntertainmentSystem, + + // End of console section delimiter + MarkerDiscBasedConsoleEnd, + + #endregion + + #region Cartridge-Based and Other Consoles + + /* + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Amstrad GX-4000")] + AmstradGX4000, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "APF Microcomputer System")] + APFMicrocomputerSystem, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Atari 2600 & VCS")] + Atari2600VCS, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Atari 5200")] + Atari5200, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Atari 7800")] + Atari7800, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Atari Jaguar")] + AtariJaguar, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Atari XEGS")] + AtariXEGS, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Audiosonic 1292 Advanced Programmable Video System")] + Audiosonic1292AdvancedProgrammableVideoSystem, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Bally Astrocade")] + BallyAstrocade, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Bit Corporation Dina")] + BitCorporationDina, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Casio Loopy")] + CasioLoopy, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Casio PV-1000")] + CasioPV1000, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Commodore 64 Games System")] + Commodore64GamesSystem, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Daewoo Electronics Zemmix")] + DaewooElectronicsZemmix, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Emerson Arcadia 2001")] + EmersonArcadia2001, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Epoch Cassette Vision")] + EpochCassetteVision, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Epoch Super Cassette Vision")] + EpochSuperCassetteVision, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Fairchild Channel F")] + FairchildChannelF, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Funtech Super A'Can")] + FuntechSuperACan, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "GCE Vectrex")] + GCEVectrex, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Heber BBC Bridge Companion")] + HeberBBCBridgeCompanion, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Interton VC-4000")] + IntertonVC4000, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "JungleTac Vii")] + JungleTacVii, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "LeapFrog ClickStart")] + LeapFrogClickStart, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "LJN VideoArt")] + LJNVideoArt, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Magnavox Odyssey 2")] + MagnavoxOdyssey2, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Mattel Intellivision")] + MattelIntellivision, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "NEC PC Engine & TurboGrafx-16")] + NECPCEngineTurboGrafx16, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nichibutsu MyVision")] + NichibutsuMyVision, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo 64")] + Nintendo64, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo 64DD")] + Nintendo64DD, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo Famicom & Nintendo Entertainment System")] + NintendoFamicomNintendoEntertainmentSystem, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo Famicom Disk System")] + NintendoFamicomDiskSystem, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo Super Famicom & Super Nintendo Entertainment System")] + NintendoSuperFamicomSuperNintendoEntertainmentSystem, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo Switch")] + NintendoSwitch, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Philips Videopac+ & G7400")] + PhilipsVideopacPlusG7400, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "RCA Studio-II")] + RCAStudioII, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Sega 32X")] + Sega32X, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Sega Mark III & Master System")] + SegaMarkIIIMasterSystem, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Sega MegaDrive & Genesis")] + SegaMegaDriveGenesis, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Sega SG-1000")] + SegaSG1000, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "SNK NeoGeo")] + SNKNeoGeo, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "SSD COMPANY LIMITED XaviXPORT")] + SSDCOMPANYLIMITEDXaviXPORT, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "ViewMaster Interactive Vision")] + ViewMasterInteractiveVision, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "V.Tech CreatiVision")] + VTechCreatiVision, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "V.Tech V.Smile")] + VTechVSmile, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "V.Tech Socrates")] + VTechSocrates, + + [System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Worlds of Wonder ActionMax")] + WorldsOfWonderActionMax, + + // End of other console delimiter + MarkerOtherConsoleEnd, + */ + + #endregion + + #region Computers + + [System(Category = SystemCategory.Computer, LongName = "Acorn Archimedes", ShortName = "archcd", HasCues = true, HasDat = true)] + AcornArchimedes, + + [System(Category = SystemCategory.Computer, LongName = "Apple Macintosh", ShortName = "mac", HasCues = true, HasDat = true)] + AppleMacintosh, + + [System(Category = SystemCategory.Computer, LongName = "Commodore Amiga CD", ShortName = "acd", HasCues = true, HasDat = true)] + CommodoreAmigaCD, + + [System(Category = SystemCategory.Computer, LongName = "Fujitsu FM Towns series", ShortName = "fmt", HasCues = true, HasDat = true)] + FujitsuFMTownsseries, + + [System(Category = SystemCategory.Computer, LongName = "IBM PC compatible", ShortName = "pc", HasCues = true, HasDat = true, HasLsd = true, HasSbi = true)] + IBMPCcompatible, + + [System(Category = SystemCategory.Computer, LongName = "NEC PC-88 series", ShortName = "pc-88", HasCues = true, HasDat = true)] + NECPC88series, + + [System(Category = SystemCategory.Computer, LongName = "NEC PC-98 series", ShortName = "pc-98", HasCues = true, HasDat = true)] + NECPC98series, + + [System(Category = SystemCategory.Computer, LongName = "Sharp X68000", ShortName = "x86kcd", HasCues = true, HasDat = true)] + SharpX68000, + + // End of computer section delimiter + MarkerComputerEnd, + + #endregion + + #region Arcade + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Amiga CUBO CD32")] + AmigaCUBOCD32, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "American Laser Games 3DO")] + AmericanLaserGames3DO, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Atari 3DO")] + Atari3DO, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Atronic")] + Atronic, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "AUSCOM System 1")] + AUSCOMSystem1, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Bally Game Magic")] + BallyGameMagic, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Capcom CP System III")] + CapcomCPSystemIII, + + [System(Category = SystemCategory.Arcade, LongName = "funworld Photo Play", ShortName = "fpp", HasCues = true, HasDat = true)] + funworldPhotoPlay, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Global VR PC-based Systems")] + GlobalVRVarious, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Global VR Vortek")] + GlobalVRVortek, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Global VR Vortek V3")] + GlobalVRVortekV3, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "ICE PC-based Hardware")] + ICEPCHardware, + + [System(Category = SystemCategory.Arcade, LongName = "Incredible Technologies Eagle", ShortName = "ite", HasCues = true, HasDat = true)] + IncredibleTechnologiesEagle, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Incredible Technologies PC-based Systems")] + IncredibleTechnologiesVarious, + + [System(Category = SystemCategory.Arcade, LongName = "Konami e-Amusement", ShortName = "kea", HasCues = true, HasDat = true)] + KonamieAmusement, + + [System(Category = SystemCategory.Arcade, LongName = "Konami FireBeat", ShortName = "kfb", HasCues = true, HasDat = true)] + KonamiFireBeat, + + [System(Category = SystemCategory.Arcade, LongName = "Konami M2", ShortName = "km2", IsBanned = true, HasCues = true, HasDat = true)] + KonamiM2, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Konami Python")] + KonamiPython, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Konami Python 2")] + KonamiPython2, + + [System(Category = SystemCategory.Arcade, LongName = "Konami System 573", ShortName = "ks573")] + KonamiSystem573, + + [System(Category = SystemCategory.Arcade, LongName = "Konami System GV", ShortName = "ksgv", HasCues = true, HasDat = true)] + KonamiSystemGV, + + [System(Category = SystemCategory.Arcade, LongName = "Konami Twinkle", ShortName = "kt")] + KonamiTwinkle, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Konami PC-based Systems")] + KonamiVarious, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Merit Industries Boardwalk")] + MeritIndustriesBoardwalk, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Merit Industries MegaTouch Force")] + MeritIndustriesMegaTouchForce, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Merit Industries MegaTouch ION")] + MeritIndustriesMegaTouchION, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Merit Industries MegaTouch Maxx")] + MeritIndustriesMegaTouchMaxx, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Merit Industries MegaTouch XL")] + MeritIndustriesMegaTouchXL, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Namco · Capcom System 256/Super System 256")] + NamcoCapcomSystem256, + + [System(Category = SystemCategory.Arcade, LongName = "Namco · Sega · Nintendo Triforce", ShortName = "triforce", HasCues = true, HasDat = true, HasGdi = true)] + NamcoSegaNintendoTriforce, + + [System(Category = SystemCategory.Arcade, LongName = "Namco System 12", ShortName = "ns12")] + NamcoSystem12, + + [System(Category = SystemCategory.Arcade, LongName = "Namco System 246", ShortName = "ns246", HasCues = true, HasDat = true)] + NamcoSystem246, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Namco System 357")] + NamcoSystem357, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "New Jatre CD-i")] + NewJatreCDi, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Nichibutsu High Rate System")] + NichibutsuHighRateSystem, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Nichibutsu Super CD")] + NichibutsuSuperCD, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Nichibutsu X-Rate System")] + NichibutsuXRateSystem, + + [System(Category = SystemCategory.Arcade, LongName = "Panasonic M2", ShortName = "m2", IsBanned = true, HasCues = true, HasDat = true)] + PanasonicM2, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "PhotoPlay PC-based Systems")] + PhotoPlayVarious, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Raw Thrills PC-based Systems")] + RawThrillsVarious, + + [System(Category = SystemCategory.Arcade, LongName = "Sega Chihiro", ShortName = "chihiro", HasCues = true, HasDat = true, HasGdi = true)] + SegaChihiro, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Europa-R")] + SegaEuropaR, + + [System(Category = SystemCategory.Arcade, LongName = "Sega Lindbergh", ShortName = "lindbergh", HasDat = true)] + SegaLindbergh, + + [System(Category = SystemCategory.Arcade, LongName = "Sega Naomi", ShortName = "naomi", HasCues = true, HasDat = true, HasGdi = true)] + SegaNaomi, + + [System(Category = SystemCategory.Arcade, LongName = "Sega Naomi 2", ShortName = "naomi2", HasCues = true, HasDat = true, HasGdi = true)] + SegaNaomi2, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu")] + SegaNu, + + [System(Category = SystemCategory.Arcade, LongName = "Sega RingEdge", ShortName = "sre", IsBanned = true, HasDat = true)] + SegaRingEdge, + + [System(Category = SystemCategory.Arcade, LongName = "Sega RingEdge 2", ShortName = "sre2", IsBanned = true, HasDat = true)] + SegaRingEdge2, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega RingWide")] + SegaRingWide, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega System 32")] + SegaSystem32, + + [System(Category = SystemCategory.Arcade, LongName = "Sega Titan Video", ShortName = "stv")] + SegaTitanVideo, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Seibu CATS System")] + SeibuCATSSystem, + + [System(Category = SystemCategory.Arcade, LongName = "TAB-Austria Quizard", ShortName = "quizard", HasCues = true, HasDat = true)] + TABAustriaQuizard, + + [System(Category = SystemCategory.Arcade, Available = false, LongName = "Tsunami TsuMo Multi-Game Motion System")] + TsunamiTsuMoMultiGameMotionSystem, + + // End of arcade section delimiter + MarkerArcadeEnd, + + #endregion + + #region Other + + [System(Category = SystemCategory.Other, LongName = "Audio CD", ShortName = "audio-cd", IsBanned = true, HasCues = true, HasDat = true)] + AudioCD, + + [System(Category = SystemCategory.Other, LongName = "BD-Video", ShortName = "bd-video", IsBanned = true, HasDat = true)] + BDVideo, + + [System(Category = SystemCategory.Other, Available = false, LongName = "DVD-Audio")] + DVDAudio, + + [System(Category = SystemCategory.Other, LongName = "DVD-Video", ShortName = "dvd-video", IsBanned = true, HasDat = true)] + DVDVideo, + + [System(Category = SystemCategory.Other, LongName = "Enhanced CD", ShortName = "enhanced-cd", IsBanned = true)] + EnhancedCD, + + [System(Category = SystemCategory.Other, LongName = "HD DVD-Video", ShortName = "hddvd-video", IsBanned = true, HasDat = true)] + HDDVDVideo, + + [System(Category = SystemCategory.Other, LongName = "Navisoft Naviken 2.1", ShortName = "navi21", IsBanned = true, HasCues = true, HasDat = true)] + NavisoftNaviken21, + + [System(Category = SystemCategory.Other, LongName = "Palm OS", ShortName = "palm", HasCues = true, HasDat = true)] + PalmOS, + + [System(Category = SystemCategory.Other, LongName = "Photo CD", ShortName = "photo-cd", HasCues = true, HasDat = true)] + PhotoCD, + + [System(Category = SystemCategory.Other, LongName = "PlayStation GameShark Updates", ShortName = "psxgs", HasCues = true, HasDat = true)] + PlayStationGameSharkUpdates, + + [System(Category = SystemCategory.Other, LongName = "Pocket PC", ShortName = "ppc", HasCues = true, HasDat = true)] + PocketPC, + + [System(Category = SystemCategory.Other, Available = false, LongName = "Rainbow Disc")] + RainbowDisc, + + [System(Category = SystemCategory.Other, LongName = "Sega Prologue 21 Multimedia Karaoke System", ShortName = "sp21", HasCues = true, HasDat = true)] + SegaPrologue21MultimediaKaraokeSystem, + + [System(Category = SystemCategory.Other, Available = false, LongName = "Super Audio CD")] + SuperAudioCD, + + [System(Category = SystemCategory.Other, LongName = "Tao iKTV", ShortName = "iktv")] + TaoiKTV, + + [System(Category = SystemCategory.Other, LongName = "Tomy Kiss-Site", ShortName = "ksite", HasCues = true, HasDat = true)] + TomyKissSite, + + [System(Category = SystemCategory.Other, LongName = "Video CD", ShortName = "vcd", IsBanned = true, HasCues = true, HasDat = true)] + VideoCD, + + // End of other section delimiter + MarkerOtherEnd, + + #endregion } /// @@ -717,4 +1074,42 @@ namespace RedumpLib.Data [HumanReadable(LongName = "World", ShortName = "W")] World, } + + /// + /// List of system categories + /// + public enum SystemCategory + { + NONE = 0, + + [HumanReadable(LongName = "Disc-Based Consoles")] + DiscBasedConsole, + + [HumanReadable(LongName = "Other Consoles")] + OtherConsole, + + [HumanReadable(LongName = "Computers")] + Computer, + + [HumanReadable(LongName = "Arcade")] + Arcade, + + [HumanReadable(LongName = "Other")] + Other, + }; + + /// + /// Generic yes/no values + /// + public enum YesNo + { + [HumanReadable(LongName = "Yes/No")] + NULL = 0, + + [HumanReadable(LongName = "No")] + No = 1, + + [HumanReadable(LongName = "Yes")] + Yes = 2, + } } diff --git a/RedumpLib/Data/Extensions.cs b/RedumpLib/Data/Extensions.cs index b16b3762..2d1abc9f 100644 --- a/RedumpLib/Data/Extensions.cs +++ b/RedumpLib/Data/Extensions.cs @@ -7,7 +7,7 @@ namespace RedumpLib.Data /// public static class Extensions { - #region Category + #region Disc Category /// /// Get the Redump longnames for each known category @@ -56,6 +56,77 @@ namespace RedumpLib.Data #endregion + #region Disc Type + + /// + /// Get the Redump longnames for each known disc type + /// + /// + /// + public static string LongName(this DiscType? discType) => AttributeHelper.GetAttribute(discType)?.LongName; + + /// + /// Get the DiscType enum value for a given string + /// + /// String value to convert + /// DiscType represented by the string, if possible + public static DiscType? ToDiscType(string discType) + { + switch (discType.ToLowerInvariant()) + { + case "bd25": + case "bd-25": + return DiscType.BD25; + case "bd50": + case "bd-50": + return DiscType.BD50; + case "cd": + case "cdrom": + case "cd-rom": + return DiscType.CD; + case "dvd5": + case "dvd-5": + return DiscType.DVD5; + case "dvd9": + case "dvd-9": + return DiscType.DVD9; + case "gd": + case "gdrom": + case "gd-rom": + return DiscType.GDROM; + case "hddvd": + case "hddvdsl": + case "hd-dvd sl": + return DiscType.HDDVDSL; + case "milcd": + case "mil-cd": + return DiscType.MILCD; + case "nintendogamecubegamedisc": + case "nintendo game cube game disc": + return DiscType.NintendoGameCubeGameDisc; + case "nintendowiiopticaldiscsl": + case "nintendo wii optical disc sl": + return DiscType.NintendoWiiOpticalDiscSL; + case "nintendowiiopticaldiscdl": + case "nintendo wii optical disc dl": + return DiscType.NintendoWiiOpticalDiscDL; + case "nintendowiiuopticaldiscsl": + case "nintendo wii u optical disc sl": + return DiscType.NintendoWiiUOpticalDiscSL; + case "umd": + case "umdsl": + case "umd sl": + return DiscType.UMDSL; + case "umddl": + case "umd dl": + return DiscType.UMDDL; + default: + return null; + } + } + + #endregion + #region Language /// @@ -393,6 +464,16 @@ namespace RedumpLib.Data /// public static string ShortName(this RedumpSystem? system) => AttributeHelper.GetAttribute(system)?.ShortName; + /// + /// Determine the category of a system + /// + public static SystemCategory GetCategory(this RedumpSystem? system) => ((SystemAttribute)AttributeHelper.GetAttribute(system))?.Category ?? SystemCategory.NONE; + + /// + /// Determine if a system is available in Redump yet + /// + public static bool IsAvailable(this RedumpSystem? system) => ((SystemAttribute)AttributeHelper.GetAttribute(system))?.Available ?? false; + /// /// Determine if a system is restricted to dumpers /// @@ -442,7 +523,8 @@ namespace RedumpLib.Data { switch (sys) { - // Special BIOS Sets + #region BIOS Sets + case "xboxbios": case "xbox bios": case "microsoftxboxbios": @@ -486,20 +568,10 @@ namespace RedumpLib.Data case "sony playstation 2 bios": return RedumpSystem.SonyPlayStation2BIOS; - // Regular systems - case "acorn": - case "archimedes": - case "acornarchimedes": - case "acorn archimedes": - return RedumpSystem.AcornArchimedes; - case "apple": - case "mac": - case "applemac": - case "macintosh": - case "applemacintosh": - case "apple mac": - case "apple macintosh": - return RedumpSystem.AppleMacintosh; + #endregion + + #region Consoles + case "jaguar": case "jagcd": case "jaguarcd": @@ -509,10 +581,6 @@ namespace RedumpLib.Data case "atarijaguarcd": case "atari jaguar cd": return RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem; - case "audio": - case "audiocd": - case "audio cd": - return RedumpSystem.AudioCD; case "playdia": case "playdiaqis": case "playdiaquickinteractivesystem": @@ -529,20 +597,6 @@ namespace RedumpLib.Data case "bandai apple pippin": case "bandai / apple pippin": return RedumpSystem.BandaiPippin; - case "bdvideo": - case "bd-video": - case "blurayvideo": - case "bluray video": - return RedumpSystem.BDVideo; - case "amiga": - case "amigacd": - case "amiga cd": - case "commodoreamiga": - case "commodoreamigacd": - case "commodoreamiga cd": - case "commodore amiga": - case "commodore amiga cd": - return RedumpSystem.CommodoreAmigaCD; case "cd32": case "amigacd32": case "amiga cd32": @@ -555,27 +609,21 @@ namespace RedumpLib.Data case "commodoreamigacdtv": case "commodore amiga cdtv": return RedumpSystem.CommodoreAmigaCDTV; - case "dvdvideo": - case "dvd-video": - return RedumpSystem.DVDVideo; - case "enhancedcd": - case "enhanced cd": - case "enhancedcdrom": - case "enhanced cdrom": - case "enhanced cd-rom": - return RedumpSystem.EnhancedCD; - case "fmtowns": - case "fmt": - case "fm towns": - case "fujitsufmtowns": - case "fujitsu fm towns": - case "fujitsu fm towns series": - return RedumpSystem.FujitsuFMTownsseries; - case "fpp": - case "funworldphotoplay": - case "funworld photoplay": - case "funworld photo play": - return RedumpSystem.funworldPhotoPlay; + case "evosc": + case "evo sc": + case "evosmartconsole": + case "evo smart console": + case "envizionsevosc": + case "envizion evo sc": + case "envizionevosmartconsole": + case "envizion evo smart console": + return RedumpSystem.EnvizionsEVOSmartConsole; + case "fmtm": + case "fmtownsmarty": + case "fm towns marty": + case "fujitsufmtownsmarty": + case "fujitsu fm towns marty": + return RedumpSystem.FujitsuFMTownsMarty; case "videonow": case "hasbrovideonow": case "hasbro videonow": @@ -589,60 +637,12 @@ namespace RedumpLib.Data case "videonow jr": case "hasbrovideonowjr": case "hasbro videonow jr": - return RedumpSystem.HasbroVideoNowColor; + return RedumpSystem.HasbroVideoNowJr; case "videonowxp": case "videonow xp": case "hasbrovideonowxp": case "hasbro videonow xp": - return RedumpSystem.HasbroVideoNowColor; - case "hddvd-video": - case "hd dvd video": - case "hd-dvd video": - case "hd dvd-video": - case "hd-dvd-video": - return RedumpSystem.HDDVDVideo; - case "ibm": - case "ibmpc": - case "pc": - case "ibm pc": - case "ibm pc compatible": - return RedumpSystem.IBMPCcompatible; - case "iteagle": - case "eagle": - case "incredible technologies eagle": - return RedumpSystem.IncredibleTechnologiesEagle; - case "eamusement": - case "e-amusement": - case "konamieamusement": - case "konami eamusement": - case "konamie-amusement": - case "konami e-amusement": - return RedumpSystem.KonamieAmusement; - case "firebeat": - case "konamifirebeat": - case "konami firebeat": - return RedumpSystem.KonamiFireBeat; - case "konamim2": - case "konami m2": - return RedumpSystem.KonamiM2; - case "system573": - case "system 573": - case "konamisystem573": - case "konami system 573": - return RedumpSystem.KonamiSystem573; - case "gvsystem": - case "systemgv": - case "gv system": - case "system gv": - case "konamigvsystem": - case "konamisystemgv": - case "konami gv system": - case "konami system gv": - return RedumpSystem.KonamiSystemGV; - case "twinkle": - case "konamitwinkle": - case "konami twinkle": - return RedumpSystem.KonamiTwinkle; + return RedumpSystem.HasbroVideoNowXP; case "ixl": case "mattelixl": case "mattel ixl": @@ -660,17 +660,6 @@ namespace RedumpLib.Data case "mattelhyperscan": case "mattel hyperscan": return RedumpSystem.MattelHyperScan; - case "vis": - case "tandyvis": - case "tandy vis": - case "tandyvisualinformationsystem": - case "tandy visual information system": - case "memorexvis": - case "memorex vis": - case "memorexvisualinformationsystem": - case "memorex visual information sytem": - case "tandy / memorex visual information system": - return RedumpSystem.MemorexVisualInformationSystem; case "xbox": case "microsoftxbox": case "microsoft xbox": @@ -690,38 +679,24 @@ namespace RedumpLib.Data case "microsoft xbone": case "microsoft xbox one": return RedumpSystem.MicrosoftXboxOne; - case "triforce": - case "namcotriforce": - case "namco triforce": - case "segatriforce": - case "sega triforce": - case "nintendotriforce": - case "nintendo triforce": - case "namco / sega / nintendo triforce": - return RedumpSystem.NamcoSegaNintendoTriforce; - case "system12": - case "system 12": - case "namcosystem12": - case "namco system 12": - return RedumpSystem.NamcoSystem12; - case "system246": - case "system 246": - case "namcosystem246": - case "namco system 246": - case "capcomsystem246": - case "capcom system 246": - case "taitosystem246": - case "taito system 246": - case "namco / capcom / taito system 246": - return RedumpSystem.NamcoSystem246; - case "naviken": - case "naviken21": - case "naviken 2.1": - case "navisoftnaviken": - case "navisoft naviken": - case "navisoftnaviken21": - case "navisoft naviken 2.1": - return RedumpSystem.NavisoftNaviken21; + case "xbs": + case "xbseries": + case "xbseriess": + case "xbseriesx": + case "xbseriessx": + case "xboxseries": + case "xboxseriess": + case "xboxseriesx": + case "xboxseriesxs": + case "microsoftxboxseries": + case "microsoftxboxseriess": + case "microsoftxboxseriesx": + case "microsoftxboxseriesxs": + case "microsoft xbox series": + case "microsoft xbox series s": + case "microsoft xbox series x": + case "microsoft xbox series x and s": + return RedumpSystem.MicrosoftXboxSeriesXS; case "pcecd": case "pce-cd": case "tgcd": @@ -732,18 +707,6 @@ namespace RedumpLib.Data case "nec turbografx cd": case "nec pc-engine / turbografx cd": return RedumpSystem.NECPCEngineCDTurboGrafxCD; - case "pc88": - case "pc-88": - case "necpc88": - case "nec pc88": - case "nec pc-88": - return RedumpSystem.NECPC88series; - case "pc98": - case "pc-98": - case "necpc98": - case "nec pc98": - case "nec pc-98": - return RedumpSystem.NECPC98series; case "pcfx": case "pc-fx": case "pcfxga": @@ -760,6 +723,34 @@ namespace RedumpLib.Data case "nintendogamecube": case "nintendo gamecube": return RedumpSystem.NintendoGameCube; + case "snescd": + case "snes cd": + case "snes-cd": + case "supernescd": + case "super nes cd": + case "super nes-cd": + case "supernintendocd": + case "super nintendo cd": + case "super nintendo-cd": + case "nintendosnescd": + case "nintendo snes cd": + case "nintendosnes-cd": + case "nintendosupernescd": + case "nintendo super nes cd": + case "nintendo super nes-cd": + case "nintendosupernintendocd": + case "nintendo super nintendo cd": + case "nintendo super nintendo-cd": + case "sonysnescd": + case "sony snes cd": + case "sonysnes-cd": + case "sonysupernescd": + case "sony super nes cd": + case "sony super nes-cd": + case "sonysupernintendocd": + case "sony super nintendo cd": + case "sony super nintendo-cd": + return RedumpSystem.NintendoSonySuperNESCDROMSystem; case "wii": case "nintendowii": case "nintendo wii": @@ -769,71 +760,22 @@ namespace RedumpLib.Data case "nintendowiiu": case "nintendo wii u": return RedumpSystem.NintendoWiiU; - case "palm": - case "palmos": - return RedumpSystem.PalmOS; case "3do": case "3do interactive multiplayer": case "panasonic3do": case "panasonic 3do": case "panasonic 3do interactive multiplayer": return RedumpSystem.Panasonic3DOInteractiveMultiplayer; - case "panasonicm2": - case "panasonic m2": - return RedumpSystem.PanasonicM2; case "cdi": case "cd-i": case "philipscdi": case "philips cdi": case "philips cd-i": return RedumpSystem.PhilipsCDi; - case "cdi-video": - case "cdi video": - case "cd-i-video": - case "cd-i video": - case "cdidigitalvideo": - case "cdi digital video": - case "cd-i digital video": - case "philipscdivideo": - case "philips cdi-video": - case "philips cdi video": - case "philips cd-ivideo": - case "philips cd-i-video": - case "philips cd-i video": - case "philipscdidigitalvideo": - case "philips cdi digital video": - case "philips cd-idigitalvideo": - case "philips cd-i digital video": - return RedumpSystem.PhilipsCDiDigitalVideo; - case "photo": - case "photocd": - case "photo cd": - return RedumpSystem.PhotoCD; - case "gameshark": - case "psgameshark": - case "ps gameshark": - case "playstationgameshark": - case "playstation gameshark": - case "playstation gameshark updates": - return RedumpSystem.PlayStationGameSharkUpdates; - case "ppc": - case "pocketpc": - case "pocket pc": - return RedumpSystem.PocketPC; - case "chihiro": - case "segachihiro": - case "sega chihiro": - return RedumpSystem.SegaChihiro; - case "dc": - case "sdc": - case "dreamcast": - case "segadreamcast": - case "sega dreamcast": - return RedumpSystem.SegaDreamcast; - case "lindbergh": - case "segalindbergh": - case "sega lindbergh": - return RedumpSystem.SegaLindbergh; + case "laseractive": + case "pioneerlaseractive": + case "pioneer laseractive": + return RedumpSystem.PioneerLaserActive; case "scd": case "mcd": case "smcd": @@ -844,51 +786,16 @@ namespace RedumpLib.Data case "mega cd": case "sega cd / mega cd": return RedumpSystem.SegaMegaCDSegaCD; - case "naomi": - case "seganaomi": - case "sega naomi": - return RedumpSystem.SegaNaomi; - case "naomi2": - case "naomi 2": - case "seganaomi2": - case "sega naomi 2": - return RedumpSystem.SegaNaomi2; - case "sp21": - case "prologue21": - case "prologue 21": - case "segaprologue21": - case "sega prologue21": - case "sega prologue 21": - case "segaprologue21multimediakaraokesystem": - case "sega prologue21 multimedia karaoke system": - case "sega prologue 21 multimedia karaoke system": - return RedumpSystem.SegaPrologue21MultimediaKaraokeSystem; - case "ringedge": - case "segaringedge": - case "sega ringedge": - return RedumpSystem.SegaRingEdge; - case "ringedge2": - case "ringedge 2": - case "segaringedge2": - case "sega ringedge 2": - return RedumpSystem.SegaRingEdge2; + case "dc": + case "sdc": + case "dreamcast": + case "segadreamcast": + case "sega dreamcast": + return RedumpSystem.SegaDreamcast; case "saturn": case "segasaturn": case "sega saturn": return RedumpSystem.SegaSaturn; - case "stv": - case "titanvideo": - case "titan video": - case "segatitanvideo": - case "sega titan video": - return RedumpSystem.SegaTitanVideo; - case "x68k": - case "x68000": - case "sharpx68k": - case "sharp x68k": - case "sharpx68000": - case "sharp x68000": - return RedumpSystem.SharpX68000; case "ngcd": case "neogeocd": case "neogeo cd": @@ -931,6 +838,14 @@ namespace RedumpLib.Data case "sonyplaystation4": case "sony playstation 4": return RedumpSystem.SonyPlayStation4; + case "ps5": + case "playstation5": + case "playstation 5": + case "sonyps5": + case "sony ps5": + case "sonyplaystation5": + case "sony playstation 5": + return RedumpSystem.SonyPlayStation5; case "psp": case "playstationportable": case "playstation portable": @@ -939,24 +854,17 @@ namespace RedumpLib.Data case "sonyplaystationportable": case "sony playstation portable": return RedumpSystem.SonyPlayStationPortable; - case "quizard": - case "tabaustriaquizard": - case "tab-austria quizard": - return RedumpSystem.TABAustriaQuizard; - case "iktv": - case "taoiktv": - case "tao iktv": - return RedumpSystem.TaoiKTV; - case "kisssite": - case "kiss-site": - case "tomykisssite": - case "tomy kisssite": - case "tomy kiss-site": - return RedumpSystem.TomyKissSite; - case "vcd": - case "videocd": - case "video cd": - return RedumpSystem.VideoCD; + case "vis": + case "tandyvis": + case "tandy vis": + case "tandyvisualinformationsystem": + case "tandy visual information system": + case "memorexvis": + case "memorex vis": + case "memorexvisualinformationsystem": + case "memorex visual information sytem": + case "tandy / memorex visual information system": + return RedumpSystem.MemorexVisualInformationSystem; case "nuon": case "vmlabsnuon": case "vm labs nuon": @@ -988,11 +896,484 @@ namespace RedumpLib.Data case "zapit games game wave family entertainment system": return RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem; + #endregion + + #region Computers + + case "acorn": + case "archimedes": + case "acornarchimedes": + case "acorn archimedes": + return RedumpSystem.AcornArchimedes; + case "apple": + case "mac": + case "applemac": + case "macintosh": + case "applemacintosh": + case "apple mac": + case "apple macintosh": + return RedumpSystem.AppleMacintosh; + case "amiga": + case "commodoreamiga": + case "commodore amiga": + return RedumpSystem.CommodoreAmigaCD; + case "fmtowns": + case "fmt": + case "fm towns": + case "fujitsufmtowns": + case "fujitsu fm towns": + case "fujitsu fm towns series": + return RedumpSystem.FujitsuFMTownsseries; + case "ibm": + case "ibmpc": + case "pc": + case "ibm pc": + case "ibm pc compatible": + return RedumpSystem.IBMPCcompatible; + case "pc88": + case "pc-88": + case "necpc88": + case "nec pc88": + case "nec pc-88": + return RedumpSystem.NECPC88series; + case "pc98": + case "pc-98": + case "necpc98": + case "nec pc98": + case "nec pc-98": + return RedumpSystem.NECPC98series; + case "x68k": + case "x68000": + case "sharpx68k": + case "sharp x68k": + case "sharpx68000": + case "sharp x68000": + return RedumpSystem.SharpX68000; + + #endregion + + #region Arcade + + case "cubo": + case "cubocd32": + case "cubo cd32": + case "amigacubocd32": + case "amiga cubo cd32": + return RedumpSystem.AmigaCUBOCD32; + case "alg3do": + case "alg 3do": + case "americanlasergames3do": + case "american laser games 3do": + return RedumpSystem.AmericanLaserGames3DO; + case "atari3do": + case "atari 3do": + return RedumpSystem.Atari3DO; + case "atronic": + return RedumpSystem.Atronic; + case "auscom": + case "auscomsystem1": + case "auscom system 1": + return RedumpSystem.AUSCOMSystem1; + case "gamemagic": + case "game magic": + case "ballygamemagic": + case "bally game magic": + return RedumpSystem.BallyGameMagic; + case "cps3": + case "cpsiii": + case "cps 3": + case "cp system 3": + case "cp system iii": + case "capcomcps3": + case "capcomcpsiii": + case "capcom cps 3": + case "capcom cps iii": + case "capcom cp system 3": + case "capcom cp system iii": + return RedumpSystem.CapcomCPSystemIII; + case "fpp": + case "funworldphotoplay": + case "funworld photoplay": + case "funworld photo play": + return RedumpSystem.funworldPhotoPlay; + case "globalvr": + case "global vr": + case "global vr pc-based systems": + return RedumpSystem.GlobalVRVarious; + case "vortek": + case "globalvrvortek": + case "global vr vortek": + return RedumpSystem.GlobalVRVortek; + case "vortekv3": + case "vortek v3": + case "globalvrvortekv3": + case "global vr vortek v3": + return RedumpSystem.GlobalVRVortekV3; + case "ice": + case "icepc": + case "ice pc": + case "ice pc-based hardware": + return RedumpSystem.ICEPCHardware; + case "iteagle": + case "eagle": + case "incredible technologies eagle": + return RedumpSystem.IncredibleTechnologiesEagle; + case "itpc": + case "incredible technologies pc-based systems": + return RedumpSystem.IncredibleTechnologiesVarious; + case "eamusement": + case "e-amusement": + case "konamieamusement": + case "konami eamusement": + case "konamie-amusement": + case "konami e-amusement": + return RedumpSystem.KonamieAmusement; + case "firebeat": + case "konamifirebeat": + case "konami firebeat": + return RedumpSystem.KonamiFireBeat; + case "gvsystem": + case "gv system": + case "konamigvsystem": + case "konami gv system": + case "systemgv": + case "system gv": + case "konamisystemgv": + case "konami system gv": + return RedumpSystem.KonamiSystemGV; + case "konamim2": + case "konami m2": + return RedumpSystem.KonamiM2; + case "python": + case "konamipython": + case "konami python": + return RedumpSystem.KonamiPython; + case "python2": + case "python 2": + case "konamipython2": + case "konami python 2": + return RedumpSystem.KonamiPython2; + case "system573": + case "system 573": + case "konamisystem573": + case "konami system 573": + return RedumpSystem.KonamiSystem573; + case "twinkle": + case "konamitwinkle": + case "konami twinkle": + return RedumpSystem.KonamiTwinkle; + case "konamipc": + case "konami pc": + case "konami pc-based systems": + return RedumpSystem.KonamiVarious; + case "boardwalk": + case "meritindustriesboardwalk": + case "merit industries boardwalk": + return RedumpSystem.MeritIndustriesBoardwalk; + case "megatouchforce": + case "megatouch force": + case "meritindustriesmegatouchforce": + case "merit industries megatouch force": + return RedumpSystem.MeritIndustriesMegaTouchForce; + case "megatouchion": + case "megatouch ion": + case "meritindustriesmegatouchion": + case "merit industries megatouch ion": + return RedumpSystem.MeritIndustriesMegaTouchION; + case "megatouchmaxx": + case "megatouch maxx": + case "meritindustriesmegatouchmaxx": + case "merit industries megatouch maxx": + return RedumpSystem.MeritIndustriesMegaTouchMaxx; + case "megatouchxl": + case "megatouch xl": + case "meritindustriesmegatouchxl": + case "merit industries megatouch xl": + return RedumpSystem.MeritIndustriesMegaTouchXL; + case "system256": + case "system 256": + case "supersystem256": + case "super system 256": + case "namcosystem256": + case "namco system 256": + case "namcosupersystem256": + case "namco super system 256": + case "capcomsystem256": + case "capcom system 256": + case "capcomsupersystem256": + case "capcom super system 256": + case "namco / capcom system 256/super system 256": + return RedumpSystem.NamcoCapcomSystem256; + case "system246": + case "system 246": + case "namcosystem246": + case "namco system 246": + case "capcomsystem246": + case "capcom system 246": + case "taitosystem246": + case "taito system 246": + case "namco / capcom / taito system 246": + return RedumpSystem.NamcoSystem246; + case "triforce": + case "namcotriforce": + case "namco triforce": + case "segatriforce": + case "sega triforce": + case "nintendotriforce": + case "nintendo triforce": + case "namco / sega / nintendo triforce": + return RedumpSystem.NamcoSegaNintendoTriforce; + case "system12": + case "system 12": + case "namcosystem12": + case "namco system 12": + return RedumpSystem.NamcoSystem12; + case "system357": + case "system 357": + case "namcosystem357": + case "namco system 357": + return RedumpSystem.NamcoSystem357; + case "newjatrecdi": + case "new jatre cdi": + case "new jatre cd-i": + return RedumpSystem.NewJatreCDi; + case "hrs": + case "highratesytem": + case "high rate system": + case "nichibutsuhrs": + case "nichibutsu hrs": + case "nichibutsu high rate system": + return RedumpSystem.NichibutsuHighRateSystem; + case "supercd": + case "super cd": + case "nichibutsuscd": + case "nichibutsu scd": + case "nichibutsusupercd": + case "nichibutsu supercd": + case "nichibutsu super cd": + return RedumpSystem.NichibutsuSuperCD; + case "xrs": + case "xratesystem": + case "x-rate system": + case "nichibutsuxrs": + case "nichibutsu xrs": + case "nichibutsu x-rate system": + return RedumpSystem.NichibutsuXRateSystem; + case "panasonicm2": + case "panasonic m2": + return RedumpSystem.PanasonicM2; + case "photoplay": + case "photoplaypc": + case "photoplay pc": + case "photoplay pc-based systems": + return RedumpSystem.PhotoPlayVarious; + case "rawthrills": + case "raw thrills": + case "raw thrills pc-based systems": + return RedumpSystem.RawThrillsVarious; + case "chihiro": + case "segachihiro": + case "sega chihiro": + return RedumpSystem.SegaChihiro; + case "europar": + case "europa-r": + case "segaeuropar": + case "sega europar": + case "sega europa-r": + return RedumpSystem.SegaEuropaR; + case "lindbergh": + case "segalindbergh": + case "sega lindbergh": + return RedumpSystem.SegaLindbergh; + case "naomi": + case "seganaomi": + case "sega naomi": + return RedumpSystem.SegaNaomi; + case "naomi2": + case "naomi 2": + case "seganaomi2": + case "sega naomi 2": + return RedumpSystem.SegaNaomi2; + case "nu": + case "seganu": + case "sega nu": + return RedumpSystem.SegaNu; + case "ringedge": + case "segaringedge": + case "sega ringedge": + return RedumpSystem.SegaRingEdge; + case "ringedge2": + case "ringedge 2": + case "segaringedge2": + case "sega ringedge 2": + return RedumpSystem.SegaRingEdge2; + case "ringwide": + case "segaringwide": + case "sega ringwide": + return RedumpSystem.SegaRingWide; + case "stv": + case "titanvideo": + case "titan video": + case "segatitanvideo": + case "sega titan video": + return RedumpSystem.SegaTitanVideo; + case "system32": + case "system 32": + case "segasystem32": + case "sega system 32": + return RedumpSystem.SegaSystem32; + case "cats": + case "seibucats": + case "seibu cats": + case "seibu cats system": + return RedumpSystem.SeibuCATSSystem; + case "quizard": + case "tabaustriaquizard": + case "tab-austria quizard": + return RedumpSystem.TABAustriaQuizard; + case "tsumo": + case "tsunamitsumo": + case "tsunami tsumo": + case "tsunami tsumo multi-game motion system": + return RedumpSystem.TsunamiTsuMoMultiGameMotionSystem; + + #endregion + + #region Others + + case "audio": + case "audiocd": + case "audio cd": + return RedumpSystem.AudioCD; + case "bdvideo": + case "bd-video": + case "blurayvideo": + case "bluray video": + return RedumpSystem.BDVideo; + case "dvda": + case "dvdaudio": + case "dvd-audio": + return RedumpSystem.DVDAudio; + case "dvd": + case "dvdv": + case "dvdvideo": + case "dvd-video": + return RedumpSystem.DVDVideo; + case "enhancedcd": + case "enhanced cd": + case "enhancedcdrom": + case "enhanced cdrom": + case "enhanced cd-rom": + return RedumpSystem.EnhancedCD; + case "hddvd": + case "hddvdv": + case "hddvdvideo": + case "hddvd-video": + case "hd-dvd-video": + return RedumpSystem.HDDVDVideo; + case "naviken": + case "naviken21": + case "naviken 2.1": + case "navisoftnaviken": + case "navisoft naviken": + case "navisoftnaviken21": + case "navisoft naviken 2.1": + return RedumpSystem.NavisoftNaviken21; + case "palm": + case "palmos": + return RedumpSystem.PalmOS; + case "photo": + case "photocd": + case "photo cd": + return RedumpSystem.PhotoCD; + case "gameshark": + case "psgameshark": + case "ps gameshark": + case "playstationgameshark": + case "playstation gameshark": + case "playstation gameshark updates": + return RedumpSystem.PlayStationGameSharkUpdates; + case "pocketpc": + case "pocket pc": + case "ppc": + return RedumpSystem.PocketPC; + case "rainbow": + case "rainbowdisc": + case "rainbow disc": + return RedumpSystem.RainbowDisc; + case "pl21": + case "prologue21": + case "prologue 21": + case "segaprologue21": + case "sega prologue21": + case "sega prologue 21": + return RedumpSystem.SegaPrologue21MultimediaKaraokeSystem; + case "sacd": + case "superaudiocd": + case "super audio cd": + return RedumpSystem.SuperAudioCD; + case "iktv": + case "taoiktv": + case "tao iktv": + return RedumpSystem.TaoiKTV; + case "kisssite": + case "kiss-site": + case "tomykisssite": + case "tomy kisssite": + case "tomy kiss-site": + return RedumpSystem.TomyKissSite; + case "vcd": + case "videocd": + case "video cd": + return RedumpSystem.VideoCD; + + #endregion + default: return null; } } #endregion + + #region System Category + + /// + /// Get the string representation of the system category + /// + /// + /// + public static string LongName(this SystemCategory? category) => AttributeHelper.GetAttribute(category)?.LongName; + + #endregion + + #region Yes/No + + /// + /// Get the string representation of the YesNo value + /// + /// + /// + public static string LongName(this YesNo yesno) => AttributeHelper.GetAttribute(yesno)?.LongName ?? "Yes/No"; + + /// + /// Get the YesNo enum value for a given string + /// + /// String value to convert + /// YesNo represented by the string, if possible + public static YesNo? ToYesNo(string yesno) + { + switch (yesno.ToLowerInvariant()) + { + case "no": + return YesNo.No; + case "yes": + return YesNo.Yes; + default: + return YesNo.NULL; + } + } + + #endregion } } diff --git a/MPF.Library/Data/SubmissionInfo.cs b/RedumpLib/Data/SubmissionInfo.cs similarity index 98% rename from MPF.Library/Data/SubmissionInfo.cs rename to RedumpLib/Data/SubmissionInfo.cs index d05796be..bac1d0e0 100644 --- a/MPF.Library/Data/SubmissionInfo.cs +++ b/RedumpLib/Data/SubmissionInfo.cs @@ -1,14 +1,11 @@ using System; using System.Collections.Generic; using System.Linq; -using MPF.Converters; -using MPF.Utilities; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using RedumpLib.Converters; -using RedumpLib.Data; -namespace MPF.Data +namespace RedumpLib.Data { public class SubmissionInfo : ICloneable { @@ -95,13 +92,13 @@ namespace MPF.Data { // Name not defined by Redump [JsonProperty(PropertyName = "d_system", Required = Required.AllowNull)] - [JsonConverter(typeof(KnownSystemConverter))] - public KnownSystem? System { get; set; } + [JsonConverter(typeof(SystemConverter))] + public RedumpSystem? System { get; set; } // Name not defined by Redump [JsonProperty(PropertyName = "d_media", Required = Required.AllowNull)] - [JsonConverter(typeof(MediaTypeConverter))] - public MediaType? Media { get; set; } + [JsonConverter(typeof(DiscTypeConverter))] + public DiscType? Media { get; set; } [JsonProperty(PropertyName = "d_title", Required = Required.AllowNull)] public string Title { get; set; } @@ -116,6 +113,7 @@ namespace MPF.Data public string DiscTitle { get; set; } [JsonProperty(PropertyName = "d_category", Required = Required.AllowNull)] + [JsonConverter(typeof(DiscCategoryConverter))] public DiscCategory? Category { get; set; } [JsonProperty(PropertyName = "d_region", Required = Required.AllowNull)] @@ -297,6 +295,7 @@ namespace MPF.Data public class EDCSection : ICloneable { [JsonProperty(PropertyName = "d_edc", NullValueHandling = NullValueHandling.Ignore)] + [JsonConverter(typeof(YesNoConverter))] public YesNo EDC { get; set; } public object Clone() @@ -376,9 +375,11 @@ namespace MPF.Data public class CopyProtectionSection : ICloneable { [JsonProperty(PropertyName = "d_protection_a", NullValueHandling = NullValueHandling.Ignore)] + [JsonConverter(typeof(YesNoConverter))] public YesNo AntiModchip { get; set; } [JsonProperty(PropertyName = "d_protection_1", NullValueHandling = NullValueHandling.Ignore)] + [JsonConverter(typeof(YesNoConverter))] public YesNo LibCrypt { get; set; } [JsonProperty(PropertyName = "d_libcrypt", NullValueHandling = NullValueHandling.Ignore)] diff --git a/RedumpLib/Web/RedumpWebClient.cs b/RedumpLib/Web/RedumpWebClient.cs index 241568f3..7e2ab5ac 100644 --- a/RedumpLib/Web/RedumpWebClient.cs +++ b/RedumpLib/Web/RedumpWebClient.cs @@ -611,8 +611,8 @@ namespace RedumpLib.Web Console.WriteLine($"Downloading {title}"); foreach (var system in systems) { - // If the system is null, we can't do anything - if (system == null) + // If the system is invalid, we can't do anything + if (system == null || !system.IsAvailable()) continue; // If we didn't have credentials @@ -649,6 +649,10 @@ namespace RedumpLib.Web Console.WriteLine($"Downloading {title}"); foreach (var system in systems) { + // If the system is invalid, we can't do anything + if (system == null || !system.IsAvailable()) + continue; + // If we didn't have credentials if (!LoggedIn && system.IsBanned()) continue;