From 68b932bad049efb0c5c4fd084015d4b30efc20bf Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 18 Aug 2021 23:17:47 -0700 Subject: [PATCH] Fix extension and conversion methods --- MPF.Library/Converters/EnumConverter.cs | 259 +-- MPF.Test/Converters/EnumConverterTest.cs | 2 +- .../Converters/MediaTypeExtensionsTest.cs | 2 +- MPF/ViewModels/MainViewModel.cs | 2 +- RedumpLib/Data/Enumerations.cs | 63 + RedumpLib/Data/Extensions.cs | 1494 +++++++++-------- 6 files changed, 866 insertions(+), 956 deletions(-) diff --git a/MPF.Library/Converters/EnumConverter.cs b/MPF.Library/Converters/EnumConverter.cs index 0e4b0207..65cbbbf1 100644 --- a/MPF.Library/Converters/EnumConverter.cs +++ b/MPF.Library/Converters/EnumConverter.cs @@ -16,40 +16,6 @@ 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 /// @@ -111,44 +77,6 @@ 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 /// @@ -214,7 +142,12 @@ namespace MPF.Converters if (!LongNameMethods.TryGetValue(sourceType, out MethodInfo method)) { - method = typeof(EnumConverter).GetMethod("LongName", new[] { typeof(Nullable<>).MakeGenericType(sourceType) }); + + method = typeof(RedumpLib.Data.Extensions).GetMethod("LongName", new[] { typeof(Nullable<>).MakeGenericType(sourceType) }); + if (method == null) + method = typeof(EnumConverter).GetMethod("LongName", new[] { typeof(Nullable<>).MakeGenericType(sourceType) }); + + LongNameMethods.TryAdd(sourceType, method); } @@ -269,96 +202,6 @@ namespace MPF.Converters } } - /// - /// Get the string representation of the MediaType enum values - /// - /// MediaType value to convert - /// String representing the value, if possible - public static string LongName(this MediaType? type) - { - switch (type) - { - #region Punched Media - - case MediaType.ApertureCard: - return "Aperture card"; - case MediaType.JacquardLoomCard: - return "Jacquard Loom card"; - case MediaType.MagneticStripeCard: - return "Magnetic stripe card"; - case MediaType.OpticalPhonecard: - return "Optical phonecard"; - case MediaType.PunchedCard: - return "Punched card"; - case MediaType.PunchedTape: - return "Punched tape"; - - #endregion - - #region Tape - - case MediaType.OpenReel: - return "Open Reel Tape"; - case MediaType.DataCartridge: - return "Data Tape Cartridge"; - case MediaType.Cassette: - return "Cassette Tape"; - - #endregion - - #region Disc / Disc - - case MediaType.BluRay: - return "BD-ROM"; - case MediaType.CDROM: - return "CD-ROM"; - case MediaType.DVD: - return "DVD-ROM"; - case MediaType.FloppyDisk: - return "Floppy Disk"; - case MediaType.Floptical: - return "Floptical"; - case MediaType.GDROM: - return "GD-ROM"; - case MediaType.HDDVD: - return "HD-DVD-ROM"; - case MediaType.HardDisk: - return "Hard Disk"; - case MediaType.IomegaBernoulliDisk: - return "Iomega Bernoulli Disk"; - case MediaType.IomegaJaz: - return "Iomega Jaz"; - case MediaType.IomegaZip: - return "Iomega Zip"; - case MediaType.LaserDisc: - return "LD-ROM / LV-ROM"; - case MediaType.Nintendo64DD: - return "64DD Disk"; - case MediaType.NintendoFamicomDiskSystem: - return "Famicom Disk System Disk"; - case MediaType.NintendoGameCubeGameDisc: - return "GameCube Game Disc"; - case MediaType.NintendoWiiOpticalDisc: - return "Wii Optical Disc"; - case MediaType.NintendoWiiUOpticalDisc: - return "Wii U Optical Disc"; - case MediaType.UMD: - return "UMD"; - - #endregion - - // Unsorted Formats - case MediaType.Cartridge: - return "Cartridge"; - case MediaType.CED: - return "CED"; - - case MediaType.NONE: - default: - return "Unknown"; - } - } - #endregion #region Convert to Short Name @@ -398,96 +241,6 @@ namespace MPF.Converters } } - /// - /// Get the short string representation of the MediaType enum values - /// - /// MediaType value to convert - /// Short string representing the value, if possible - public static string ShortName(this MediaType? type) - { - switch (type) - { - #region Punched Media - - case MediaType.ApertureCard: - return "aperture"; - case MediaType.JacquardLoomCard: - return "jacquard loom card"; - case MediaType.MagneticStripeCard: - return "magnetic stripe"; - case MediaType.OpticalPhonecard: - return "optical phonecard"; - case MediaType.PunchedCard: - return "punchcard"; - case MediaType.PunchedTape: - return "punchtape"; - - #endregion - - #region Tape - - case MediaType.OpenReel: - return "open reel"; - case MediaType.DataCartridge: - return "data cartridge"; - case MediaType.Cassette: - return "cassette"; - - #endregion - - #region Disc / Disc - - case MediaType.BluRay: - return "bdrom"; - case MediaType.CDROM: - return "cdrom"; - case MediaType.DVD: - return "dvd"; - case MediaType.FloppyDisk: - return "fd"; - case MediaType.Floptical: - return "floptical"; - case MediaType.GDROM: - return "gdrom"; - case MediaType.HDDVD: - return "hddvd"; - case MediaType.HardDisk: - return "hdd"; - case MediaType.IomegaBernoulliDisk: - return "bernoulli"; - case MediaType.IomegaJaz: - return "jaz"; - case MediaType.IomegaZip: - return "zip"; - case MediaType.LaserDisc: - return "ldrom"; - case MediaType.Nintendo64DD: - return "64dd"; - case MediaType.NintendoFamicomDiskSystem: - return "fds"; - case MediaType.NintendoGameCubeGameDisc: - return "gc"; - case MediaType.NintendoWiiOpticalDisc: - return "wii"; - case MediaType.NintendoWiiUOpticalDisc: - return "wiiu"; - case MediaType.UMD: - return "umd"; - - #endregion - - // Unsorted Formats - case MediaType.Cartridge: - return "cart"; - case MediaType.CED: - return "ced"; - - case MediaType.NONE: - default: - return "unknown"; - } - } - #endregion #region Convert From String diff --git a/MPF.Test/Converters/EnumConverterTest.cs b/MPF.Test/Converters/EnumConverterTest.cs index 0ce07720..c92449ab 100644 --- a/MPF.Test/Converters/EnumConverterTest.cs +++ b/MPF.Test/Converters/EnumConverterTest.cs @@ -104,7 +104,7 @@ namespace MPF.Test.Converters case SystemCategory.Other: marker = RedumpSystem.MarkerOtherEnd; break; } - Assert.NotEqual(null, marker); + Assert.NotNull(marker); Assert.True(marker > system); Array.ForEach(markers, mmarker => diff --git a/MPF.Test/Converters/MediaTypeExtensionsTest.cs b/MPF.Test/Converters/MediaTypeExtensionsTest.cs index c9bcdfa8..29e29041 100644 --- a/MPF.Test/Converters/MediaTypeExtensionsTest.cs +++ b/MPF.Test/Converters/MediaTypeExtensionsTest.cs @@ -14,7 +14,7 @@ namespace MPF.Test.Converters [InlineData(MediaType.NONE, "Unknown")] public void MediaTypeToStringTest(MediaType? mediaType, string expected) { - string actual = EnumConverter.LongName(mediaType); + string actual = mediaType.LongName(); Assert.Equal(expected, actual); } diff --git a/MPF/ViewModels/MainViewModel.cs b/MPF/ViewModels/MainViewModel.cs index 2a3e0a09..46ec9881 100644 --- a/MPF/ViewModels/MainViewModel.cs +++ b/MPF/ViewModels/MainViewModel.cs @@ -948,7 +948,7 @@ namespace MPF.GUI.ViewModels if (index != -1) App.Instance.MediaTypeComboBox.SelectedIndex = index; else - App.Instance.StatusLabel.Content = $"Disc of type '{EnumConverter.LongName(CurrentMediaType)}' found, but the current system does not support it!"; + App.Instance.StatusLabel.Content = $"Disc of type '{CurrentMediaType.LongName()}' found, but the current system does not support it!"; // Ensure the UI gets updated App.Instance.UpdateLayout(); diff --git a/RedumpLib/Data/Enumerations.cs b/RedumpLib/Data/Enumerations.cs index 5067665b..02fc6278 100644 --- a/RedumpLib/Data/Enumerations.cs +++ b/RedumpLib/Data/Enumerations.cs @@ -276,57 +276,120 @@ namespace RedumpLib.Data /// public enum MediaType { + [HumanReadable(Available = false, LongName = "Unknown", ShortName = "unknown")] NONE = 0, #region Punched Media + [HumanReadable(Available = false, LongName = "Aperture card", ShortName = "aperture")] ApertureCard, + + [HumanReadable(Available = false, LongName = "Jacquard Loom card", ShortName = "jacquard loom card")] JacquardLoomCard, + + [HumanReadable(Available = false, LongName = "Magnetic stripe card", ShortName = "magnetic stripe")] MagneticStripeCard, + + [HumanReadable(Available = false, LongName = "Optical phonecard", ShortName = "optical phonecard")] OpticalPhonecard, + + [HumanReadable(Available = false, LongName = "Punched card", ShortName = "punchcard")] PunchedCard, + + [HumanReadable(Available = false, LongName = "Punched tape", ShortName = "punchtape")] PunchedTape, #endregion #region Tape + [HumanReadable(Available = false, LongName = "Cassette Tape", ShortName = "cassette")] Cassette, + + [HumanReadable(Available = false, LongName = "Data Tape Cartridge", ShortName = "data cartridge")] DataCartridge, + + [HumanReadable(Available = false, LongName = "Open Reel Tape", ShortName = "open reel")] OpenReel, #endregion #region Disc / Disc + [HumanReadable(LongName = "BD-ROM", ShortName = "bdrom")] BluRay, + + [HumanReadable(LongName = "CD-ROM", ShortName = "cdrom")] CDROM, + + [HumanReadable(LongName = "DVD-ROM", ShortName = "dvd")] DVD, + + [HumanReadable(LongName = "Floppy Disk", ShortName = "fd")] FloppyDisk, + + [HumanReadable(Available = false, LongName = "Floptical", ShortName = "floptical")] Floptical, + + [HumanReadable(LongName = "GD-ROM", ShortName = "gdrom")] GDROM, + + [HumanReadable(LongName = "HD-DVD-ROM", ShortName = "hddvd")] HDDVD, + + [HumanReadable(LongName = "Hard Disk", ShortName = "hdd")] HardDisk, + + [HumanReadable(Available = false, LongName = "Iomega Bernoulli Disk", ShortName = "bernoulli")] IomegaBernoulliDisk, + + [HumanReadable(Available = false, LongName = "Iomega Jaz", ShortName = "jaz")] IomegaJaz, + + [HumanReadable(Available = false, LongName = "Iomega Zip", ShortName = "zip")] IomegaZip, + + [HumanReadable(LongName = "LD-ROM / LV-ROM", ShortName = "ldrom")] LaserDisc, // LD-ROM and LV-ROM variants + + [HumanReadable(Available = false, LongName = "64DD Disk", ShortName = "64dd")] Nintendo64DD, + + [HumanReadable(Available = false, LongName = "Famicom Disk System Disk", ShortName = "fds")] NintendoFamicomDiskSystem, + + [HumanReadable(LongName = "GameCube Game Disc", ShortName = "gc")] NintendoGameCubeGameDisc, + + [HumanReadable(LongName = "Wii Optical Disc", ShortName = "wii")] NintendoWiiOpticalDisc, + + [HumanReadable(LongName = "Wii U Optical Disc", ShortName = "wiiu")] NintendoWiiUOpticalDisc, + + [HumanReadable(LongName = "UMD", ShortName = "umd")] UMD, #endregion #region Unsorted Formats + [HumanReadable(Available = false, LongName = "Cartridge", ShortName = "cart")] Cartridge, + + [HumanReadable(Available = false, LongName = "CED", ShortName = "ced")] CED, + + [HumanReadable(Available = false, LongName = "Compact Flash", ShortName = "cf")] CompactFlash, + + [HumanReadable(Available = false, LongName = "MMC", ShortName = "mmc")] MMC, + + [HumanReadable(Available = false, LongName = "SD Card", ShortName = "sd")] SDCard, + + [HumanReadable(Available = false, LongName = "Flash Drive", ShortName = "fkd")] FlashDrive, #endregion diff --git a/RedumpLib/Data/Extensions.cs b/RedumpLib/Data/Extensions.cs index 16244e0a..a981c510 100644 --- a/RedumpLib/Data/Extensions.cs +++ b/RedumpLib/Data/Extensions.cs @@ -8,6 +8,782 @@ namespace RedumpLib.Data /// public static class Extensions { + #region Cross-Enumeration + + /// + /// Get a list of valid MediaTypes for a given RedumpSystem + /// + /// RedumpSystem value to check + /// MediaTypes, if possible + public static List MediaTypes(this RedumpSystem? system) + { + var types = new List(); + + switch (system) + { + #region Consoles + + // https://en.wikipedia.org/wiki/Atari_Jaguar_CD + case RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Playdia + case RedumpSystem.BandaiPlaydiaQuickInteractiveSystem: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Apple_Bandai_Pippin + case RedumpSystem.BandaiPippin: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Amiga_CD32 + case RedumpSystem.CommodoreAmigaCD32: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Commodore_CDTV + case RedumpSystem.CommodoreAmigaCDTV: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/EVO_Smart_Console + case RedumpSystem.EnvizionsEVOSmartConsole: + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + break; + + // https://en.wikipedia.org/wiki/FM_Towns_Marty + case RedumpSystem.FujitsuFMTownsMarty: + types.Add(MediaType.CDROM); + types.Add(MediaType.FloppyDisk); + break; + + // https://en.wikipedia.org/wiki/VideoNow + case RedumpSystem.HasbroVideoNow: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/VideoNow + case RedumpSystem.HasbroVideoNowColor: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/VideoNow + case RedumpSystem.HasbroVideoNowJr: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/VideoNow + case RedumpSystem.HasbroVideoNowXP: + types.Add(MediaType.CDROM); + break; + + case RedumpSystem.MattelFisherPriceiXL: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/HyperScan + case RedumpSystem.MattelHyperScan: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Xbox_(console) + case RedumpSystem.MicrosoftXbox: + types.Add(MediaType.DVD); + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Xbox_360 + case RedumpSystem.MicrosoftXbox360: + types.Add(MediaType.DVD); + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Xbox_One + case RedumpSystem.MicrosoftXboxOne: + types.Add(MediaType.BluRay); + break; + + // https://en.wikipedia.org/wiki/Xbox_Series_X_and_Series_S + case RedumpSystem.MicrosoftXboxSeriesXS: + types.Add(MediaType.BluRay); + break; + + // https://en.wikipedia.org/wiki/TurboGrafx-16 + case RedumpSystem.NECPCEngineCDTurboGrafxCD: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/PC-FX + case RedumpSystem.NECPCFXPCFXGA: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/GameCube + 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 RedumpSystem.NintendoSonySuperNESCDROMSystem: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Wii + 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 RedumpSystem.NintendoWiiU: + types.Add(MediaType.NintendoWiiUOpticalDisc); + break; + + // https://en.wikipedia.org/wiki/3DO_Interactive_Multiplayer + case RedumpSystem.Panasonic3DOInteractiveMultiplayer: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Philips_CD-i + case RedumpSystem.PhilipsCDi: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/LaserActive + case RedumpSystem.PioneerLaserActive: + types.Add(MediaType.CDROM); + types.Add(MediaType.LaserDisc); + break; + + // https://en.wikipedia.org/wiki/Sega_CD + case RedumpSystem.SegaMegaCDSegaCD: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Dreamcast + 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 RedumpSystem.SegaSaturn: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Neo_Geo_CD + case RedumpSystem.SNKNeoGeoCD: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/PlayStation_(console) + case RedumpSystem.SonyPlayStation: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/PlayStation_2 + case RedumpSystem.SonyPlayStation2: + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + break; + + // https://en.wikipedia.org/wiki/PlayStation_3 + case RedumpSystem.SonyPlayStation3: + types.Add(MediaType.BluRay); + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + break; + + // https://en.wikipedia.org/wiki/PlayStation_4 + case RedumpSystem.SonyPlayStation4: + types.Add(MediaType.BluRay); + break; + + // https://en.wikipedia.org/wiki/PlayStation_5 + case RedumpSystem.SonyPlayStation5: + types.Add(MediaType.BluRay); + break; + + // https://en.wikipedia.org/wiki/PlayStation_Portable + 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 RedumpSystem.MemorexVisualInformationSystem: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Nuon_(DVD_technology) + case RedumpSystem.VMLabsNUON: + types.Add(MediaType.DVD); + break; + + // https://en.wikipedia.org/wiki/V.Flash + case RedumpSystem.VTechVFlashVSmilePro: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Game_Wave_Family_Entertainment_System + case RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem: + types.Add(MediaType.DVD); + break; + + #endregion + + #region Computers + + // https://en.wikipedia.org/wiki/Acorn_Archimedes + case RedumpSystem.AcornArchimedes: + types.Add(MediaType.CDROM); + types.Add(MediaType.FloppyDisk); + break; + + // https://en.wikipedia.org/wiki/Macintosh + case RedumpSystem.AppleMacintosh: + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + types.Add(MediaType.FloppyDisk); + types.Add(MediaType.HardDisk); + break; + + // https://en.wikipedia.org/wiki/Amiga + case RedumpSystem.CommodoreAmigaCD: + types.Add(MediaType.CDROM); + types.Add(MediaType.FloppyDisk); + break; + + // https://en.wikipedia.org/wiki/FM_Towns + case RedumpSystem.FujitsuFMTownsseries: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/IBM_PC_compatible + case RedumpSystem.IBMPCcompatible: + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + types.Add(MediaType.BluRay); + types.Add(MediaType.FloppyDisk); + types.Add(MediaType.HardDisk); + types.Add(MediaType.DataCartridge); + break; + + // https://en.wikipedia.org/wiki/PC-8800_series + case RedumpSystem.NECPC88series: + types.Add(MediaType.CDROM); + types.Add(MediaType.FloppyDisk); + break; + + // https://en.wikipedia.org/wiki/PC-9800_series + case RedumpSystem.NECPC98series: + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + types.Add(MediaType.FloppyDisk); + break; + + // https://en.wikipedia.org/wiki/X68000 + case RedumpSystem.SharpX68000: + types.Add(MediaType.CDROM); + types.Add(MediaType.FloppyDisk); + break; + + #endregion + + #region Arcade + + // https://www.bigbookofamigahardware.com/bboah/product.aspx?id=36 + case RedumpSystem.AmigaCUBOCD32: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Orbatak + case RedumpSystem.AmericanLaserGames3DO: + types.Add(MediaType.CDROM); + break; + + // http://system16.com/hardware.php?id=779 + 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 RedumpSystem.Atronic: + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + break; + + // https://www.arcade-museum.com/members/member_detail.php?member_id=406530 + case RedumpSystem.AUSCOMSystem1: + types.Add(MediaType.CDROM); + break; + + // http://newlifegames.net/nlg/index.php?topic=285.0 + case RedumpSystem.BallyGameMagic: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/CP_System_III + case RedumpSystem.CapcomCPSystemIII: + types.Add(MediaType.CDROM); + break; + + // UNKNOWN + case RedumpSystem.funworldPhotoPlay: + types.Add(MediaType.CDROM); + break; + + // UNKNOWN + case RedumpSystem.GlobalVRVarious: + types.Add(MediaType.CDROM); + break; + + // https://service.globalvr.com/troubleshooting/vortek.html + case RedumpSystem.GlobalVRVortek: + types.Add(MediaType.CDROM); + break; + + // https://service.globalvr.com/downloads/v3/040-1001-01c-V3-System-Manual.pdf + case RedumpSystem.GlobalVRVortekV3: + types.Add(MediaType.CDROM); + break; + + // https://www.icegame.com/games + case RedumpSystem.ICEPCHardware: + types.Add(MediaType.DVD); + break; + + // https://github.com/mamedev/mame/blob/master/src/mame/drivers/iteagle.cpp + case RedumpSystem.IncredibleTechnologiesEagle: + types.Add(MediaType.CDROM); + break; + + // UNKNOWN + case RedumpSystem.IncredibleTechnologiesVarious: + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + break; + + // https://en.wikipedia.org/wiki/E-Amusement + case RedumpSystem.KonamieAmusement: + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + break; + + // http://system16.com/hardware.php?id=828 + case RedumpSystem.KonamiFireBeat: + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + break; + + // http://system16.com/hardware.php?id=577 + case RedumpSystem.KonamiSystemGV: + types.Add(MediaType.CDROM); + break; + + // http://system16.com/hardware.php?id=575 + case RedumpSystem.KonamiM2: + types.Add(MediaType.CDROM); + break; + + // http://system16.com/hardware.php?id=586 + // http://system16.com/hardware.php?id=977 + 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 RedumpSystem.KonamiPython2: + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + break; + + // http://system16.com/hardware.php?id=582 + // http://system16.com/hardware.php?id=822 + // http://system16.com/hardware.php?id=823 + case RedumpSystem.KonamiSystem573: + types.Add(MediaType.CDROM); + break; + + // http://system16.com/hardware.php?id=827 + case RedumpSystem.KonamiTwinkle: + types.Add(MediaType.CDROM); + break; + + // UNKNOWN + case RedumpSystem.KonamiVarious: + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + break; + + // http://www.meritgames.com/Support_Center/manuals/PM0591-01.pdf + case RedumpSystem.MeritIndustriesBoardwalk: + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + break; + + // 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 RedumpSystem.MeritIndustriesMegaTouchForce: + types.Add(MediaType.CDROM); + break; + + // http://www.meritgames.com/Service%20Center/Ion%20Troubleshooting.pdf + case RedumpSystem.MeritIndustriesMegaTouchION: + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + break; + + // 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 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 RedumpSystem.MeritIndustriesMegaTouchXL: + types.Add(MediaType.CDROM); + break; + + // http://system16.com/hardware.php?id=546 + // http://system16.com/hardware.php?id=872 + case RedumpSystem.NamcoCapcomSystem256: + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + break; + + // http://system16.com/hardware.php?id=543 + case RedumpSystem.NamcoSystem246: + types.Add(MediaType.CDROM); + types.Add(MediaType.DVD); + break; + + // http://system16.com/hardware.php?id=545 + 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 RedumpSystem.NamcoSystem12: + types.Add(MediaType.CDROM); + break; + + // http://system16.com/hardware.php?id=900 + 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 RedumpSystem.NewJatreCDi: + types.Add(MediaType.CDROM); + break; + + // http://blog.system11.org/?p=2499 + case RedumpSystem.NichibutsuHighRateSystem: + types.Add(MediaType.DVD); + break; + + // http://blog.system11.org/?p=2514 + 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 RedumpSystem.NichibutsuXRateSystem: + types.Add(MediaType.DVD); + break; + + // https://en.wikipedia.org/wiki/Panasonic_M2 + 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 RedumpSystem.PhotoPlayVarious: + types.Add(MediaType.CDROM); + break; + + // UNKNOWN + case RedumpSystem.RawThrillsVarious: + types.Add(MediaType.DVD); + break; + + // http://system16.com/hardware.php?id=729 + 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 RedumpSystem.SegaEuropaR: + types.Add(MediaType.DVD); + break; + + // http://system16.com/hardware.php?id=985 + // http://system16.com/hardware.php?id=731 + // http://system16.com/hardware.php?id=984 + // http://system16.com/hardware.php?id=986 + case RedumpSystem.SegaLindbergh: + types.Add(MediaType.DVD); + break; + + // http://system16.com/hardware.php?id=721 + // http://system16.com/hardware.php?id=723 + // http://system16.com/hardware.php?id=906 + // http://system16.com/hardware.php?id=722 + case RedumpSystem.SegaNaomi: + types.Add(MediaType.CDROM); // Low density partition + types.Add(MediaType.GDROM); // High density partition + break; + + // http://system16.com/hardware.php?id=725 + // http://system16.com/hardware.php?id=726 + // http://system16.com/hardware.php?id=727 + 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 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 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 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 RedumpSystem.SegaRingWide: + types.Add(MediaType.DVD); + break; + + // http://system16.com/hardware.php?id=711 + case RedumpSystem.SegaTitanVideo: + types.Add(MediaType.CDROM); + break; + + // http://system16.com/hardware.php?id=709 + // http://system16.com/hardware.php?id=710 + case RedumpSystem.SegaSystem32: + types.Add(MediaType.CDROM); + break; + + // https://github.com/mamedev/mame/blob/master/src/mame/drivers/seibucats.cpp + case RedumpSystem.SeibuCATSSystem: + types.Add(MediaType.DVD); + break; + + // https://www.tab.at/en/support/support/downloads + 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 RedumpSystem.TsunamiTsuMoMultiGameMotionSystem: + types.Add(MediaType.CDROM); + break; + + #endregion + + #region Others + + // https://en.wikipedia.org/wiki/Audio_CD + case RedumpSystem.AudioCD: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Blu-ray#Player_profiles + case RedumpSystem.BDVideo: + types.Add(MediaType.BluRay); + break; + + // https://en.wikipedia.org/wiki/DVD-Audio + case RedumpSystem.DVDAudio: + types.Add(MediaType.DVD); + break; + + // https://en.wikipedia.org/wiki/DVD-Video + case RedumpSystem.DVDVideo: + types.Add(MediaType.DVD); + break; + + // https://en.wikipedia.org/wiki/Blue_Book_(CD_standard) + case RedumpSystem.EnhancedCD: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/HD_DVD + case RedumpSystem.HDDVDVideo: + types.Add(MediaType.HDDVD); + break; + + // UNKNOWN + case RedumpSystem.NavisoftNaviken21: + types.Add(MediaType.CDROM); + break; + + // UNKNOWN + case RedumpSystem.PalmOS: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Photo_CD + case RedumpSystem.PhotoCD: + types.Add(MediaType.CDROM); + break; + + // UNKNOWN + case RedumpSystem.PlayStationGameSharkUpdates: + types.Add(MediaType.CDROM); + break; + + // UNKNOWN + case RedumpSystem.PocketPC: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Doors_and_Windows_(EP) + case RedumpSystem.RainbowDisc: + types.Add(MediaType.CDROM); + break; + + // https://segaretro.org/Prologue_21 + case RedumpSystem.SegaPrologue21MultimediaKaraokeSystem: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Super_Audio_CD + case RedumpSystem.SuperAudioCD: + types.Add(MediaType.CDROM); + break; + + // https://www.cnet.com/products/tao-music-iktv-karaoke-station-karaoke-system-series/ + case RedumpSystem.TaoiKTV: + types.Add(MediaType.CDROM); + break; + + // http://ultimateconsoledatabase.com/golden/kiss_site.htm + case RedumpSystem.TomyKissSite: + types.Add(MediaType.CDROM); + break; + + // https://en.wikipedia.org/wiki/Video_CD + case RedumpSystem.VideoCD: + types.Add(MediaType.CDROM); + break; + + #endregion + + default: + types.Add(MediaType.NONE); + break; + } + + return types; + } + + /// + /// 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 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; + } + } + + #endregion + #region Disc Category /// @@ -261,6 +1037,24 @@ namespace RedumpLib.Data #endregion + #region Media Type + + /// + /// Get the Redump longnames for each known media type + /// + /// + /// + public static string LongName(this MediaType? mediaType) => AttributeHelper.GetAttribute(mediaType)?.LongName; + + /// + /// Get the Redump shortnames for each known media type + /// + /// + /// + public static string ShortName(this MediaType? mediaType) => AttributeHelper.GetAttribute(mediaType)?.ShortName; + + #endregion + #region Region /// @@ -1335,706 +2129,6 @@ namespace RedumpLib.Data } } - /// - /// Get a list of valid MediaTypes for a given RedumpSystem - /// - /// RedumpSystem value to check - /// MediaTypes, if possible - public static List MediaTypes(this RedumpSystem? system) - { - var types = new List(); - - switch (system) - { - #region Consoles - - // https://en.wikipedia.org/wiki/Atari_Jaguar_CD - case RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Playdia - case RedumpSystem.BandaiPlaydiaQuickInteractiveSystem: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Apple_Bandai_Pippin - case RedumpSystem.BandaiPippin: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Amiga_CD32 - case RedumpSystem.CommodoreAmigaCD32: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Commodore_CDTV - case RedumpSystem.CommodoreAmigaCDTV: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/EVO_Smart_Console - case RedumpSystem.EnvizionsEVOSmartConsole: - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - break; - - // https://en.wikipedia.org/wiki/FM_Towns_Marty - case RedumpSystem.FujitsuFMTownsMarty: - types.Add(MediaType.CDROM); - types.Add(MediaType.FloppyDisk); - break; - - // https://en.wikipedia.org/wiki/VideoNow - case RedumpSystem.HasbroVideoNow: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/VideoNow - case RedumpSystem.HasbroVideoNowColor: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/VideoNow - case RedumpSystem.HasbroVideoNowJr: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/VideoNow - case RedumpSystem.HasbroVideoNowXP: - types.Add(MediaType.CDROM); - break; - - case RedumpSystem.MattelFisherPriceiXL: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/HyperScan - case RedumpSystem.MattelHyperScan: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Xbox_(console) - case RedumpSystem.MicrosoftXbox: - types.Add(MediaType.DVD); - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Xbox_360 - case RedumpSystem.MicrosoftXbox360: - types.Add(MediaType.DVD); - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Xbox_One - case RedumpSystem.MicrosoftXboxOne: - types.Add(MediaType.BluRay); - break; - - // https://en.wikipedia.org/wiki/Xbox_Series_X_and_Series_S - case RedumpSystem.MicrosoftXboxSeriesXS: - types.Add(MediaType.BluRay); - break; - - // https://en.wikipedia.org/wiki/TurboGrafx-16 - case RedumpSystem.NECPCEngineCDTurboGrafxCD: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/PC-FX - case RedumpSystem.NECPCFXPCFXGA: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/GameCube - 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 RedumpSystem.NintendoSonySuperNESCDROMSystem: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Wii - 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 RedumpSystem.NintendoWiiU: - types.Add(MediaType.NintendoWiiUOpticalDisc); - break; - - // https://en.wikipedia.org/wiki/3DO_Interactive_Multiplayer - case RedumpSystem.Panasonic3DOInteractiveMultiplayer: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Philips_CD-i - case RedumpSystem.PhilipsCDi: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/LaserActive - case RedumpSystem.PioneerLaserActive: - types.Add(MediaType.CDROM); - types.Add(MediaType.LaserDisc); - break; - - // https://en.wikipedia.org/wiki/Sega_CD - case RedumpSystem.SegaMegaCDSegaCD: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Dreamcast - 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 RedumpSystem.SegaSaturn: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Neo_Geo_CD - case RedumpSystem.SNKNeoGeoCD: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/PlayStation_(console) - case RedumpSystem.SonyPlayStation: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/PlayStation_2 - case RedumpSystem.SonyPlayStation2: - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - break; - - // https://en.wikipedia.org/wiki/PlayStation_3 - case RedumpSystem.SonyPlayStation3: - types.Add(MediaType.BluRay); - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - break; - - // https://en.wikipedia.org/wiki/PlayStation_4 - case RedumpSystem.SonyPlayStation4: - types.Add(MediaType.BluRay); - break; - - // https://en.wikipedia.org/wiki/PlayStation_5 - case RedumpSystem.SonyPlayStation5: - types.Add(MediaType.BluRay); - break; - - // https://en.wikipedia.org/wiki/PlayStation_Portable - 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 RedumpSystem.MemorexVisualInformationSystem: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Nuon_(DVD_technology) - case RedumpSystem.VMLabsNUON: - types.Add(MediaType.DVD); - break; - - // https://en.wikipedia.org/wiki/V.Flash - case RedumpSystem.VTechVFlashVSmilePro: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Game_Wave_Family_Entertainment_System - case RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem: - types.Add(MediaType.DVD); - break; - - #endregion - - #region Computers - - // https://en.wikipedia.org/wiki/Acorn_Archimedes - case RedumpSystem.AcornArchimedes: - types.Add(MediaType.CDROM); - types.Add(MediaType.FloppyDisk); - break; - - // https://en.wikipedia.org/wiki/Macintosh - case RedumpSystem.AppleMacintosh: - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - types.Add(MediaType.FloppyDisk); - types.Add(MediaType.HardDisk); - break; - - // https://en.wikipedia.org/wiki/Amiga - case RedumpSystem.CommodoreAmigaCD: - types.Add(MediaType.CDROM); - types.Add(MediaType.FloppyDisk); - break; - - // https://en.wikipedia.org/wiki/FM_Towns - case RedumpSystem.FujitsuFMTownsseries: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/IBM_PC_compatible - case RedumpSystem.IBMPCcompatible: - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - types.Add(MediaType.BluRay); - types.Add(MediaType.FloppyDisk); - types.Add(MediaType.HardDisk); - types.Add(MediaType.DataCartridge); - break; - - // https://en.wikipedia.org/wiki/PC-8800_series - case RedumpSystem.NECPC88series: - types.Add(MediaType.CDROM); - types.Add(MediaType.FloppyDisk); - break; - - // https://en.wikipedia.org/wiki/PC-9800_series - case RedumpSystem.NECPC98series: - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - types.Add(MediaType.FloppyDisk); - break; - - // https://en.wikipedia.org/wiki/X68000 - case RedumpSystem.SharpX68000: - types.Add(MediaType.CDROM); - types.Add(MediaType.FloppyDisk); - break; - - #endregion - - #region Arcade - - // https://www.bigbookofamigahardware.com/bboah/product.aspx?id=36 - case RedumpSystem.AmigaCUBOCD32: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Orbatak - case RedumpSystem.AmericanLaserGames3DO: - types.Add(MediaType.CDROM); - break; - - // http://system16.com/hardware.php?id=779 - 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 RedumpSystem.Atronic: - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - break; - - // https://www.arcade-museum.com/members/member_detail.php?member_id=406530 - case RedumpSystem.AUSCOMSystem1: - types.Add(MediaType.CDROM); - break; - - // http://newlifegames.net/nlg/index.php?topic=285.0 - case RedumpSystem.BallyGameMagic: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/CP_System_III - case RedumpSystem.CapcomCPSystemIII: - types.Add(MediaType.CDROM); - break; - - // UNKNOWN - case RedumpSystem.funworldPhotoPlay: - types.Add(MediaType.CDROM); - break; - - // UNKNOWN - case RedumpSystem.GlobalVRVarious: - types.Add(MediaType.CDROM); - break; - - // https://service.globalvr.com/troubleshooting/vortek.html - case RedumpSystem.GlobalVRVortek: - types.Add(MediaType.CDROM); - break; - - // https://service.globalvr.com/downloads/v3/040-1001-01c-V3-System-Manual.pdf - case RedumpSystem.GlobalVRVortekV3: - types.Add(MediaType.CDROM); - break; - - // https://www.icegame.com/games - case RedumpSystem.ICEPCHardware: - types.Add(MediaType.DVD); - break; - - // https://github.com/mamedev/mame/blob/master/src/mame/drivers/iteagle.cpp - case RedumpSystem.IncredibleTechnologiesEagle: - types.Add(MediaType.CDROM); - break; - - // UNKNOWN - case RedumpSystem.IncredibleTechnologiesVarious: - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - break; - - // https://en.wikipedia.org/wiki/E-Amusement - case RedumpSystem.KonamieAmusement: - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - break; - - // http://system16.com/hardware.php?id=828 - case RedumpSystem.KonamiFireBeat: - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - break; - - // http://system16.com/hardware.php?id=577 - case RedumpSystem.KonamiSystemGV: - types.Add(MediaType.CDROM); - break; - - // http://system16.com/hardware.php?id=575 - case RedumpSystem.KonamiM2: - types.Add(MediaType.CDROM); - break; - - // http://system16.com/hardware.php?id=586 - // http://system16.com/hardware.php?id=977 - 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 RedumpSystem.KonamiPython2: - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - break; - - // http://system16.com/hardware.php?id=582 - // http://system16.com/hardware.php?id=822 - // http://system16.com/hardware.php?id=823 - case RedumpSystem.KonamiSystem573: - types.Add(MediaType.CDROM); - break; - - // http://system16.com/hardware.php?id=827 - case RedumpSystem.KonamiTwinkle: - types.Add(MediaType.CDROM); - break; - - // UNKNOWN - case RedumpSystem.KonamiVarious: - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - break; - - // http://www.meritgames.com/Support_Center/manuals/PM0591-01.pdf - case RedumpSystem.MeritIndustriesBoardwalk: - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - break; - - // 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 RedumpSystem.MeritIndustriesMegaTouchForce: - types.Add(MediaType.CDROM); - break; - - // http://www.meritgames.com/Service%20Center/Ion%20Troubleshooting.pdf - case RedumpSystem.MeritIndustriesMegaTouchION: - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - break; - - // 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 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 RedumpSystem.MeritIndustriesMegaTouchXL: - types.Add(MediaType.CDROM); - break; - - // http://system16.com/hardware.php?id=546 - // http://system16.com/hardware.php?id=872 - case RedumpSystem.NamcoCapcomSystem256: - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - break; - - // http://system16.com/hardware.php?id=543 - case RedumpSystem.NamcoSystem246: - types.Add(MediaType.CDROM); - types.Add(MediaType.DVD); - break; - - // http://system16.com/hardware.php?id=545 - 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 RedumpSystem.NamcoSystem12: - types.Add(MediaType.CDROM); - break; - - // http://system16.com/hardware.php?id=900 - 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 RedumpSystem.NewJatreCDi: - types.Add(MediaType.CDROM); - break; - - // http://blog.system11.org/?p=2499 - case RedumpSystem.NichibutsuHighRateSystem: - types.Add(MediaType.DVD); - break; - - // http://blog.system11.org/?p=2514 - 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 RedumpSystem.NichibutsuXRateSystem: - types.Add(MediaType.DVD); - break; - - // https://en.wikipedia.org/wiki/Panasonic_M2 - 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 RedumpSystem.PhotoPlayVarious: - types.Add(MediaType.CDROM); - break; - - // UNKNOWN - case RedumpSystem.RawThrillsVarious: - types.Add(MediaType.DVD); - break; - - // http://system16.com/hardware.php?id=729 - 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 RedumpSystem.SegaEuropaR: - types.Add(MediaType.DVD); - break; - - // http://system16.com/hardware.php?id=985 - // http://system16.com/hardware.php?id=731 - // http://system16.com/hardware.php?id=984 - // http://system16.com/hardware.php?id=986 - case RedumpSystem.SegaLindbergh: - types.Add(MediaType.DVD); - break; - - // http://system16.com/hardware.php?id=721 - // http://system16.com/hardware.php?id=723 - // http://system16.com/hardware.php?id=906 - // http://system16.com/hardware.php?id=722 - case RedumpSystem.SegaNaomi: - types.Add(MediaType.CDROM); // Low density partition - types.Add(MediaType.GDROM); // High density partition - break; - - // http://system16.com/hardware.php?id=725 - // http://system16.com/hardware.php?id=726 - // http://system16.com/hardware.php?id=727 - 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 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 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 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 RedumpSystem.SegaRingWide: - types.Add(MediaType.DVD); - break; - - // http://system16.com/hardware.php?id=711 - case RedumpSystem.SegaTitanVideo: - types.Add(MediaType.CDROM); - break; - - // http://system16.com/hardware.php?id=709 - // http://system16.com/hardware.php?id=710 - case RedumpSystem.SegaSystem32: - types.Add(MediaType.CDROM); - break; - - // https://github.com/mamedev/mame/blob/master/src/mame/drivers/seibucats.cpp - case RedumpSystem.SeibuCATSSystem: - types.Add(MediaType.DVD); - break; - - // https://www.tab.at/en/support/support/downloads - 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 RedumpSystem.TsunamiTsuMoMultiGameMotionSystem: - types.Add(MediaType.CDROM); - break; - - #endregion - - #region Others - - // https://en.wikipedia.org/wiki/Audio_CD - case RedumpSystem.AudioCD: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Blu-ray#Player_profiles - case RedumpSystem.BDVideo: - types.Add(MediaType.BluRay); - break; - - // https://en.wikipedia.org/wiki/DVD-Audio - case RedumpSystem.DVDAudio: - types.Add(MediaType.DVD); - break; - - // https://en.wikipedia.org/wiki/DVD-Video - case RedumpSystem.DVDVideo: - types.Add(MediaType.DVD); - break; - - // https://en.wikipedia.org/wiki/Blue_Book_(CD_standard) - case RedumpSystem.EnhancedCD: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/HD_DVD - case RedumpSystem.HDDVDVideo: - types.Add(MediaType.HDDVD); - break; - - // UNKNOWN - case RedumpSystem.NavisoftNaviken21: - types.Add(MediaType.CDROM); - break; - - // UNKNOWN - case RedumpSystem.PalmOS: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Photo_CD - case RedumpSystem.PhotoCD: - types.Add(MediaType.CDROM); - break; - - // UNKNOWN - case RedumpSystem.PlayStationGameSharkUpdates: - types.Add(MediaType.CDROM); - break; - - // UNKNOWN - case RedumpSystem.PocketPC: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Doors_and_Windows_(EP) - case RedumpSystem.RainbowDisc: - types.Add(MediaType.CDROM); - break; - - // https://segaretro.org/Prologue_21 - case RedumpSystem.SegaPrologue21MultimediaKaraokeSystem: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Super_Audio_CD - case RedumpSystem.SuperAudioCD: - types.Add(MediaType.CDROM); - break; - - // https://www.cnet.com/products/tao-music-iktv-karaoke-station-karaoke-system-series/ - case RedumpSystem.TaoiKTV: - types.Add(MediaType.CDROM); - break; - - // http://ultimateconsoledatabase.com/golden/kiss_site.htm - case RedumpSystem.TomyKissSite: - types.Add(MediaType.CDROM); - break; - - // https://en.wikipedia.org/wiki/Video_CD - case RedumpSystem.VideoCD: - types.Add(MediaType.CDROM); - break; - - #endregion - - default: - types.Add(MediaType.NONE); - break; - } - - return types; - } - #endregion #region System Category