diff --git a/RedumpTool/Features/BuildUrlFeature.cs b/RedumpTool/Features/BuildUrlFeature.cs
index fb0d68f..cb1255e 100644
--- a/RedumpTool/Features/BuildUrlFeature.cs
+++ b/RedumpTool/Features/BuildUrlFeature.cs
@@ -144,7 +144,7 @@ namespace RedumpTool.Features
string? statusString = StatusInput.Value;
DumpStatus? status = statusString.ToDumpStatus();
string? systemString = SystemInput.Value;
- RedumpSystem? system = systemString.ToRedumpSystem();
+ PhysicalSystem? system = systemString.ToPhysicalSystem();
int? tracks = TracksInput.Value;
// Get the downloads path values
diff --git a/RedumpTool/Features/SiteFeature.cs b/RedumpTool/Features/SiteFeature.cs
index 564cf40..994b443 100644
--- a/RedumpTool/Features/SiteFeature.cs
+++ b/RedumpTool/Features/SiteFeature.cs
@@ -143,7 +143,7 @@ namespace RedumpTool.Features
string? statusString = StatusInput.Value;
DumpStatus? status = statusString.ToDumpStatus();
string? systemString = SystemInput.Value;
- RedumpSystem? system = systemString.ToRedumpSystem();
+ PhysicalSystem? system = systemString.ToPhysicalSystem();
int? tracks = TracksInput.Value;
// Get specific values
diff --git a/SabreTools.RedumpLib.Test/Data/ExtensionsTests.cs b/SabreTools.RedumpLib.Test/Data/ExtensionsTests.cs
index 512bc97..d45f4cd 100644
--- a/SabreTools.RedumpLib.Test/Data/ExtensionsTests.cs
+++ b/SabreTools.RedumpLib.Test/Data/ExtensionsTests.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
@@ -9,6 +9,37 @@ namespace SabreTools.RedumpLib.Test.Data
{
public class ExtensionsTests
{
+ #region Cross-Enumeration
+
+ ///
+ /// Check that every supported system has some set of MediaTypes supported
+ ///
+ /// PhysicalSystem value to check
+ [Theory]
+ [MemberData(nameof(GeneratePhysicalSystemMappingTestData))]
+ public void MediaTypesTest(PhysicalSystem? physicalSystem)
+ {
+ var actual = physicalSystem.MediaTypes();
+ Assert.NotEmpty(actual);
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GeneratePhysicalSystemMappingTestData()
+ {
+ var testData = new TheoryData() { null };
+ foreach (PhysicalSystem? physicalSystem in Enum.GetValues().Cast())
+ {
+ testData.Add(physicalSystem);
+ }
+
+ return testData;
+ }
+
+ #endregion
+
#region Language
///
@@ -238,6 +269,1260 @@ namespace SabreTools.RedumpLib.Test.Data
#endregion
+ #region Physical System
+
+ ///
+ /// PhysicalSystem values that are considered Audio
+ ///
+ private static readonly PhysicalSystem?[] _audioSystems =
+ [
+ PhysicalSystem.AtariJaguarCDInteractiveMultimediaSystem,
+ PhysicalSystem.AudioCD,
+ PhysicalSystem.DVDAudio,
+ PhysicalSystem.HasbroiONEducationalGamingSystem,
+ PhysicalSystem.HasbroVideoNow,
+ PhysicalSystem.HasbroVideoNowColor,
+ PhysicalSystem.HasbroVideoNowJr,
+ PhysicalSystem.HasbroVideoNowXP,
+ PhysicalSystem.PlayStationGameSharkUpdates,
+ PhysicalSystem.PhilipsCDi,
+ PhysicalSystem.SuperAudioCD,
+ ];
+
+ ///
+ /// PhysicalSystem values that are available
+ ///
+ private static readonly PhysicalSystem?[] _availableSystems =
+ [
+ // BIOS Sets
+ PhysicalSystem.MicrosoftXboxBIOS,
+ PhysicalSystem.NintendoGameCubeBIOS,
+ PhysicalSystem.SonyPlayStationBIOS,
+ PhysicalSystem.SonyPlayStation2BIOS,
+
+ // Disc-Based Consoles
+ PhysicalSystem.AtariJaguarCDInteractiveMultimediaSystem,
+ PhysicalSystem.BandaiPlaydiaQuickInteractiveSystem,
+ PhysicalSystem.BandaiPippin,
+ PhysicalSystem.CommodoreAmigaCD32,
+ PhysicalSystem.CommodoreAmigaCDTV,
+ PhysicalSystem.HasbroVideoNow,
+ PhysicalSystem.HasbroVideoNowColor,
+ PhysicalSystem.HasbroVideoNowJr,
+ PhysicalSystem.HasbroVideoNowXP,
+ PhysicalSystem.MattelFisherPriceiXL,
+ PhysicalSystem.MattelHyperScan,
+ PhysicalSystem.MemorexVisualInformationSystem,
+ PhysicalSystem.MicrosoftXbox,
+ PhysicalSystem.MicrosoftXbox360,
+ PhysicalSystem.MicrosoftXboxOne,
+ PhysicalSystem.MicrosoftXboxSeriesXS,
+ PhysicalSystem.NECPCEngineCDTurboGrafxCD,
+ PhysicalSystem.NECPCFXPCFXGA,
+ PhysicalSystem.NintendoGameCube,
+ PhysicalSystem.NintendoWii,
+ PhysicalSystem.NintendoWiiU,
+ PhysicalSystem.Panasonic3DOInteractiveMultiplayer,
+ PhysicalSystem.PhilipsCDi,
+ PhysicalSystem.SegaDreamcast,
+ PhysicalSystem.SegaMegaCDSegaCD,
+ PhysicalSystem.SegaSaturn,
+ PhysicalSystem.SNKNeoGeoCD,
+ PhysicalSystem.SonyPlayStation,
+ PhysicalSystem.SonyPlayStation2,
+ PhysicalSystem.SonyPlayStation3,
+ PhysicalSystem.SonyPlayStation4,
+ PhysicalSystem.SonyPlayStation5,
+ PhysicalSystem.SonyPlayStationPortable,
+ PhysicalSystem.VMLabsNUON,
+ PhysicalSystem.VTechVFlashVSmilePro,
+ PhysicalSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem,
+
+ // Computers
+ PhysicalSystem.AcornArchimedes,
+ PhysicalSystem.AppleMacintosh,
+ PhysicalSystem.CommodoreAmigaCD,
+ PhysicalSystem.FujitsuFMTownsseries,
+ PhysicalSystem.IBMPCcompatible,
+ PhysicalSystem.NECPC88series,
+ PhysicalSystem.NECPC98series,
+ PhysicalSystem.SharpX68000,
+
+ // Arcade
+ PhysicalSystem.funworldPhotoPlay,
+ PhysicalSystem.IncredibleTechnologiesEagle,
+ PhysicalSystem.KonamieAmusement,
+ PhysicalSystem.KonamiFireBeat,
+ PhysicalSystem.KonamiM2,
+ PhysicalSystem.KonamiSystem573,
+ PhysicalSystem.KonamiSystemGV,
+ PhysicalSystem.KonamiTwinkle,
+ PhysicalSystem.NamcoSegaNintendoTriforce,
+ PhysicalSystem.NamcoSystem12,
+ PhysicalSystem.NamcoSystem246256,
+ PhysicalSystem.PanasonicM2,
+ PhysicalSystem.SegaChihiro,
+ PhysicalSystem.SegaLindbergh,
+ PhysicalSystem.SegaNaomi,
+ PhysicalSystem.SegaNaomi2,
+ PhysicalSystem.SegaRingEdge,
+ PhysicalSystem.SegaRingEdge2,
+ PhysicalSystem.SegaTitanVideo,
+ PhysicalSystem.TABAustriaQuizard,
+
+ // Other
+ PhysicalSystem.AudioCD,
+ PhysicalSystem.BDVideo,
+ PhysicalSystem.DVDVideo,
+ PhysicalSystem.EnhancedCD,
+ PhysicalSystem.HDDVDVideo,
+ PhysicalSystem.NavisoftNaviken21,
+ PhysicalSystem.PalmOS,
+ PhysicalSystem.PhotoCD,
+ PhysicalSystem.PlayStationGameSharkUpdates,
+ PhysicalSystem.PocketPC,
+ PhysicalSystem.SegaPrologue21MultimediaKaraokeSystem,
+ PhysicalSystem.TaoiKTV,
+ PhysicalSystem.TomyKissSite,
+ PhysicalSystem.VideoCD,
+ ];
+
+ ///
+ /// PhysicalSystem values that are dumper-only
+ ///
+ private static readonly PhysicalSystem?[] _bannedSystems =
+ [
+ // Disc-Based Consoles
+ PhysicalSystem.HasbroVideoNow,
+ PhysicalSystem.HasbroVideoNowColor,
+ PhysicalSystem.HasbroVideoNowJr,
+ PhysicalSystem.HasbroVideoNowXP,
+ PhysicalSystem.MicrosoftXboxOne,
+ PhysicalSystem.MicrosoftXboxSeriesXS,
+ PhysicalSystem.NintendoWiiU,
+ PhysicalSystem.SonyPlayStation4,
+ PhysicalSystem.SonyPlayStation5,
+
+ // Arcade
+ PhysicalSystem.KonamiM2,
+ PhysicalSystem.PanasonicM2,
+
+ // Other
+ PhysicalSystem.AudioCD,
+ PhysicalSystem.BDVideo,
+ PhysicalSystem.DVDVideo,
+ PhysicalSystem.EnhancedCD,
+ PhysicalSystem.HDDVDVideo,
+ PhysicalSystem.NavisoftNaviken21,
+ PhysicalSystem.VideoCD,
+ ];
+
+ ///
+ /// PhysicalSystem values that are considered markers
+ ///
+ private static readonly PhysicalSystem?[] _markerSystems =
+ [
+ PhysicalSystem.MarkerArcadeEnd,
+ PhysicalSystem.MarkerComputerEnd,
+ PhysicalSystem.MarkerDiscBasedConsoleEnd,
+ PhysicalSystem.MarkerOtherEnd,
+ ];
+
+ ///
+ /// PhysicalSystem values that are have reversed ringcodes
+ ///
+ private static readonly PhysicalSystem?[] _reverseRingcodeSystems =
+ [
+ PhysicalSystem.SonyPlayStation2,
+ PhysicalSystem.SonyPlayStation3,
+ PhysicalSystem.SonyPlayStation4,
+ PhysicalSystem.SonyPlayStation5,
+ PhysicalSystem.SonyPlayStationPortable,
+ ];
+
+ ///
+ /// Map of PhysicalSystem values to their corresponding categories
+ ///
+ private static readonly Dictionary _systemCategoryMap = new()
+ {
+ // BIOS
+ [PhysicalSystem.MicrosoftXboxBIOS] = SystemCategory.NONE,
+ [PhysicalSystem.NintendoGameCubeBIOS] = SystemCategory.NONE,
+ [PhysicalSystem.SonyPlayStationBIOS] = SystemCategory.NONE,
+ [PhysicalSystem.SonyPlayStation2BIOS] = SystemCategory.NONE,
+
+ // Disc-Based Consoles
+ [PhysicalSystem.AtariJaguarCDInteractiveMultimediaSystem] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.BandaiPlaydiaQuickInteractiveSystem] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.BandaiPippin] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.CommodoreAmigaCD32] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.CommodoreAmigaCDTV] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.EnvizionsEVOSmartConsole] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.FujitsuFMTownsMarty] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.HasbroiONEducationalGamingSystem] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.HasbroVideoNow] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.HasbroVideoNowColor] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.HasbroVideoNowJr] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.HasbroVideoNowXP] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.MattelFisherPriceiXL] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.MattelHyperScan] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.MemorexVisualInformationSystem] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.MicrosoftXbox] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.MicrosoftXbox360] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.MicrosoftXboxOne] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.MicrosoftXboxSeriesXS] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.NECPCEngineCDTurboGrafxCD] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.NECPCFXPCFXGA] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.NintendoGameCube] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.NintendoSonySuperNESCDROMSystem] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.NintendoWii] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.NintendoWiiU] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.Panasonic3DOInteractiveMultiplayer] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.PhilipsCDi] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.PlaymajiPolymega] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.PioneerLaserActive] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.SegaDreamcast] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.SegaMegaCDSegaCD] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.SegaSaturn] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.SNKNeoGeoCD] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.SonyPlayStation] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.SonyPlayStation2] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.SonyPlayStation3] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.SonyPlayStation4] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.SonyPlayStation5] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.SonyPlayStationPortable] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.VMLabsNUON] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.VTechVFlashVSmilePro] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem] = SystemCategory.DiscBasedConsole,
+ [PhysicalSystem.MarkerDiscBasedConsoleEnd] = SystemCategory.NONE,
+
+ // Computers
+ [PhysicalSystem.AcornArchimedes] = SystemCategory.Computer,
+ [PhysicalSystem.AppleMacintosh] = SystemCategory.Computer,
+ [PhysicalSystem.CommodoreAmigaCD] = SystemCategory.Computer,
+ [PhysicalSystem.FujitsuFMTownsseries] = SystemCategory.Computer,
+ [PhysicalSystem.IBMPCcompatible] = SystemCategory.Computer,
+ [PhysicalSystem.NECPC88series] = SystemCategory.Computer,
+ [PhysicalSystem.NECPC98series] = SystemCategory.Computer,
+ [PhysicalSystem.SharpX68000] = SystemCategory.Computer,
+ [PhysicalSystem.MarkerComputerEnd] = SystemCategory.NONE,
+
+ // Arcade
+ [PhysicalSystem.AmigaCUBOCD32] = SystemCategory.Arcade,
+ [PhysicalSystem.AmericanLaserGames3DO] = SystemCategory.Arcade,
+ [PhysicalSystem.Atari3DO] = SystemCategory.Arcade,
+ [PhysicalSystem.Atronic] = SystemCategory.Arcade,
+ [PhysicalSystem.AUSCOMSystem1] = SystemCategory.Arcade,
+ [PhysicalSystem.BallyGameMagic] = SystemCategory.Arcade,
+ [PhysicalSystem.CapcomCPSystemIII] = SystemCategory.Arcade,
+ [PhysicalSystem.funworldPhotoPlay] = SystemCategory.Arcade,
+ [PhysicalSystem.FuRyuOmronPurikura] = SystemCategory.Arcade,
+ [PhysicalSystem.GlobalVRVarious] = SystemCategory.Arcade,
+ [PhysicalSystem.GlobalVRVortek] = SystemCategory.Arcade,
+ [PhysicalSystem.GlobalVRVortekV3] = SystemCategory.Arcade,
+ [PhysicalSystem.ICEPCHardware] = SystemCategory.Arcade,
+ [PhysicalSystem.IncredibleTechnologiesEagle] = SystemCategory.Arcade,
+ [PhysicalSystem.IncredibleTechnologiesVarious] = SystemCategory.Arcade,
+ [PhysicalSystem.JVLiTouch] = SystemCategory.Arcade,
+ [PhysicalSystem.KonamieAmusement] = SystemCategory.Arcade,
+ [PhysicalSystem.KonamiFireBeat] = SystemCategory.Arcade,
+ [PhysicalSystem.KonamiM2] = SystemCategory.Arcade,
+ [PhysicalSystem.KonamiPython] = SystemCategory.Arcade,
+ [PhysicalSystem.KonamiPython2] = SystemCategory.Arcade,
+ [PhysicalSystem.KonamiSystem573] = SystemCategory.Arcade,
+ [PhysicalSystem.KonamiSystemGV] = SystemCategory.Arcade,
+ [PhysicalSystem.KonamiTwinkle] = SystemCategory.Arcade,
+ [PhysicalSystem.KonamiVarious] = SystemCategory.Arcade,
+ [PhysicalSystem.MeritIndustriesBoardwalk] = SystemCategory.Arcade,
+ [PhysicalSystem.MeritIndustriesMegaTouchForce] = SystemCategory.Arcade,
+ [PhysicalSystem.MeritIndustriesMegaTouchION] = SystemCategory.Arcade,
+ [PhysicalSystem.MeritIndustriesMegaTouchMaxx] = SystemCategory.Arcade,
+ [PhysicalSystem.MeritIndustriesMegaTouchXL] = SystemCategory.Arcade,
+ [PhysicalSystem.NamcoPurikura] = SystemCategory.Arcade,
+ [PhysicalSystem.NamcoSegaNintendoTriforce] = SystemCategory.Arcade,
+ [PhysicalSystem.NamcoSystem12] = SystemCategory.Arcade,
+ [PhysicalSystem.NamcoSystem246256] = SystemCategory.Arcade,
+ [PhysicalSystem.NewJatreCDi] = SystemCategory.Arcade,
+ [PhysicalSystem.NichibutsuHighRateSystem] = SystemCategory.Arcade,
+ [PhysicalSystem.NichibutsuSuperCD] = SystemCategory.Arcade,
+ [PhysicalSystem.NichibutsuXRateSystem] = SystemCategory.Arcade,
+ [PhysicalSystem.PanasonicM2] = SystemCategory.Arcade,
+ [PhysicalSystem.PhotoPlayVarious] = SystemCategory.Arcade,
+ [PhysicalSystem.RawThrillsVarious] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaALLS] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaChihiro] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaEuropaR] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaLindbergh] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaNaomi] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaNaomi2] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaNaomiSatelliteTerminalPC] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaNu] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaNu11] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaNu2] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaNuSX] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaRingEdge] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaRingEdge2] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaRingWide] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaSystem32] = SystemCategory.Arcade,
+ [PhysicalSystem.SegaTitanVideo] = SystemCategory.Arcade,
+ [PhysicalSystem.SeibuCATSSystem] = SystemCategory.Arcade,
+ [PhysicalSystem.TABAustriaQuizard] = SystemCategory.Arcade,
+ [PhysicalSystem.TsunamiTsuMoMultiGameMotionSystem] = SystemCategory.Arcade,
+ [PhysicalSystem.UltraCade] = SystemCategory.Arcade,
+ [PhysicalSystem.MarkerArcadeEnd] = SystemCategory.NONE,
+
+ // Other
+ [PhysicalSystem.AudioCD] = SystemCategory.Other,
+ [PhysicalSystem.BDVideo] = SystemCategory.Other,
+ [PhysicalSystem.DVDAudio] = SystemCategory.Other,
+ [PhysicalSystem.DVDVideo] = SystemCategory.Other,
+ [PhysicalSystem.EnhancedCD] = SystemCategory.Other,
+ [PhysicalSystem.HDDVDVideo] = SystemCategory.Other,
+ [PhysicalSystem.NavisoftNaviken21] = SystemCategory.Other,
+ [PhysicalSystem.PalmOS] = SystemCategory.Other,
+ [PhysicalSystem.PhotoCD] = SystemCategory.Other,
+ [PhysicalSystem.PlayStationGameSharkUpdates] = SystemCategory.Other,
+ [PhysicalSystem.PocketPC] = SystemCategory.Other,
+ [PhysicalSystem.Psion] = SystemCategory.Other,
+ [PhysicalSystem.RainbowDisc] = SystemCategory.Other,
+ [PhysicalSystem.SegaPrologue21MultimediaKaraokeSystem] = SystemCategory.Other,
+ [PhysicalSystem.SharpZaurus] = SystemCategory.Other,
+ [PhysicalSystem.SonyElectronicBook] = SystemCategory.Other,
+ [PhysicalSystem.SuperAudioCD] = SystemCategory.Other,
+ [PhysicalSystem.TaoiKTV] = SystemCategory.Other,
+ [PhysicalSystem.TomyKissSite] = SystemCategory.Other,
+ [PhysicalSystem.VideoCD] = SystemCategory.Other,
+ [PhysicalSystem.MarkerOtherEnd] = SystemCategory.NONE,
+ };
+
+ ///
+ /// PhysicalSystem values that have cuesheet packs
+ ///
+ private static readonly PhysicalSystem?[] _systemsWithCues =
+ [
+ // Disc-Based Consoles
+ PhysicalSystem.AtariJaguarCDInteractiveMultimediaSystem,
+ PhysicalSystem.BandaiPlaydiaQuickInteractiveSystem,
+ PhysicalSystem.BandaiPippin,
+ PhysicalSystem.CommodoreAmigaCD32,
+ PhysicalSystem.CommodoreAmigaCDTV,
+ PhysicalSystem.HasbroVideoNow,
+ PhysicalSystem.HasbroVideoNowColor,
+ PhysicalSystem.HasbroVideoNowJr,
+ PhysicalSystem.HasbroVideoNowXP,
+ PhysicalSystem.MattelFisherPriceiXL,
+ PhysicalSystem.MattelHyperScan,
+ PhysicalSystem.MemorexVisualInformationSystem,
+ PhysicalSystem.MicrosoftXbox,
+ PhysicalSystem.MicrosoftXbox360,
+ PhysicalSystem.NECPCEngineCDTurboGrafxCD,
+ PhysicalSystem.NECPCFXPCFXGA,
+ PhysicalSystem.Panasonic3DOInteractiveMultiplayer,
+ PhysicalSystem.PhilipsCDi,
+ PhysicalSystem.SegaDreamcast,
+ PhysicalSystem.SegaMegaCDSegaCD,
+ PhysicalSystem.SegaSaturn,
+ PhysicalSystem.SNKNeoGeoCD,
+ PhysicalSystem.SonyPlayStation,
+ PhysicalSystem.SonyPlayStation2,
+ PhysicalSystem.SonyPlayStation3,
+ PhysicalSystem.VTechVFlashVSmilePro,
+
+ // Computers
+ PhysicalSystem.AcornArchimedes,
+ PhysicalSystem.AppleMacintosh,
+ PhysicalSystem.CommodoreAmigaCD,
+ PhysicalSystem.FujitsuFMTownsseries,
+ PhysicalSystem.IBMPCcompatible,
+ PhysicalSystem.NECPC88series,
+ PhysicalSystem.NECPC98series,
+ PhysicalSystem.SharpX68000,
+
+ // Arcade
+ PhysicalSystem.funworldPhotoPlay,
+ PhysicalSystem.IncredibleTechnologiesEagle,
+ PhysicalSystem.KonamieAmusement,
+ PhysicalSystem.KonamiFireBeat,
+ PhysicalSystem.KonamiM2,
+ PhysicalSystem.KonamiSystem573,
+ PhysicalSystem.KonamiSystemGV,
+ PhysicalSystem.NamcoSegaNintendoTriforce,
+ PhysicalSystem.NamcoSystem246256,
+ PhysicalSystem.PanasonicM2,
+ PhysicalSystem.SegaChihiro,
+ PhysicalSystem.SegaNaomi,
+ PhysicalSystem.SegaNaomi2,
+ PhysicalSystem.TABAustriaQuizard,
+
+ // Other
+ PhysicalSystem.AudioCD,
+ PhysicalSystem.NavisoftNaviken21,
+ PhysicalSystem.PalmOS,
+ PhysicalSystem.PhotoCD,
+ PhysicalSystem.PlayStationGameSharkUpdates,
+ PhysicalSystem.PocketPC,
+ PhysicalSystem.SegaPrologue21MultimediaKaraokeSystem,
+ PhysicalSystem.TomyKissSite,
+ PhysicalSystem.VideoCD,
+ ];
+
+ ///
+ /// PhysicalSystem values that have dats
+ ///
+ private static readonly PhysicalSystem?[] _systemsWithDats =
+ [
+ // BIOS Sets
+ PhysicalSystem.MicrosoftXboxBIOS,
+ PhysicalSystem.NintendoGameCubeBIOS,
+ PhysicalSystem.SonyPlayStationBIOS,
+ PhysicalSystem.SonyPlayStation2BIOS,
+
+ // Disc-Based Consoles
+ PhysicalSystem.AtariJaguarCDInteractiveMultimediaSystem,
+ PhysicalSystem.BandaiPlaydiaQuickInteractiveSystem,
+ PhysicalSystem.BandaiPippin,
+ PhysicalSystem.CommodoreAmigaCD32,
+ PhysicalSystem.CommodoreAmigaCDTV,
+ PhysicalSystem.HasbroVideoNow,
+ PhysicalSystem.HasbroVideoNowColor,
+ PhysicalSystem.HasbroVideoNowJr,
+ PhysicalSystem.HasbroVideoNowXP,
+ PhysicalSystem.MattelFisherPriceiXL,
+ PhysicalSystem.MattelHyperScan,
+ PhysicalSystem.MemorexVisualInformationSystem,
+ PhysicalSystem.MicrosoftXbox,
+ PhysicalSystem.MicrosoftXbox360,
+ PhysicalSystem.MicrosoftXboxOne,
+ PhysicalSystem.MicrosoftXboxSeriesXS,
+ PhysicalSystem.NECPCEngineCDTurboGrafxCD,
+ PhysicalSystem.NECPCFXPCFXGA,
+ PhysicalSystem.NintendoGameCube,
+ PhysicalSystem.NintendoWii,
+ PhysicalSystem.NintendoWiiU,
+ PhysicalSystem.Panasonic3DOInteractiveMultiplayer,
+ PhysicalSystem.PhilipsCDi,
+ PhysicalSystem.SegaDreamcast,
+ PhysicalSystem.SegaMegaCDSegaCD,
+ PhysicalSystem.SegaSaturn,
+ PhysicalSystem.SNKNeoGeoCD,
+ PhysicalSystem.SonyPlayStation,
+ PhysicalSystem.SonyPlayStation2,
+ PhysicalSystem.SonyPlayStation3,
+ PhysicalSystem.SonyPlayStation4,
+ PhysicalSystem.SonyPlayStation5,
+ PhysicalSystem.SonyPlayStationPortable,
+ PhysicalSystem.VMLabsNUON,
+ PhysicalSystem.VTechVFlashVSmilePro,
+ PhysicalSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem,
+
+ // Computers
+ PhysicalSystem.AcornArchimedes,
+ PhysicalSystem.AppleMacintosh,
+ PhysicalSystem.CommodoreAmigaCD,
+ PhysicalSystem.FujitsuFMTownsseries,
+ PhysicalSystem.IBMPCcompatible,
+ PhysicalSystem.NECPC88series,
+ PhysicalSystem.NECPC98series,
+ PhysicalSystem.SharpX68000,
+
+ // Arcade
+ PhysicalSystem.funworldPhotoPlay,
+ PhysicalSystem.IncredibleTechnologiesEagle,
+ PhysicalSystem.KonamieAmusement,
+ PhysicalSystem.KonamiFireBeat,
+ PhysicalSystem.KonamiM2,
+ PhysicalSystem.KonamiSystem573,
+ PhysicalSystem.KonamiSystemGV,
+ PhysicalSystem.NamcoSegaNintendoTriforce,
+ PhysicalSystem.NamcoSystem246256,
+ PhysicalSystem.PanasonicM2,
+ PhysicalSystem.SegaChihiro,
+ PhysicalSystem.SegaLindbergh,
+ PhysicalSystem.SegaNaomi,
+ PhysicalSystem.SegaNaomi2,
+ PhysicalSystem.SegaRingEdge,
+ PhysicalSystem.SegaRingEdge2,
+ PhysicalSystem.TABAustriaQuizard,
+
+ // Other
+ PhysicalSystem.AudioCD,
+ PhysicalSystem.BDVideo,
+ PhysicalSystem.DVDVideo,
+ PhysicalSystem.HDDVDVideo,
+ PhysicalSystem.NavisoftNaviken21,
+ PhysicalSystem.PalmOS,
+ PhysicalSystem.PhotoCD,
+ PhysicalSystem.PlayStationGameSharkUpdates,
+ PhysicalSystem.PocketPC,
+ PhysicalSystem.SegaPrologue21MultimediaKaraokeSystem,
+ PhysicalSystem.TomyKissSite,
+ PhysicalSystem.VideoCD,
+ ];
+
+ ///
+ /// PhysicalSystem values that have decrypted keys
+ ///
+ private static readonly PhysicalSystem?[] _systemsWithDKeys =
+ [
+ PhysicalSystem.SonyPlayStation3,
+ ];
+
+ ///
+ /// PhysicalSystem values that have GDI packs
+ ///
+ private static readonly PhysicalSystem?[] _systemsWithGdis =
+ [
+ // Disc-Based Consoles
+ PhysicalSystem.SegaDreamcast,
+
+ // Arcade
+ PhysicalSystem.NamcoSegaNintendoTriforce,
+ PhysicalSystem.SegaChihiro,
+ PhysicalSystem.SegaNaomi,
+ PhysicalSystem.SegaNaomi2,
+ ];
+
+ ///
+ /// PhysicalSystem values that have keys
+ ///
+ private static readonly PhysicalSystem?[] _systemsWithKeys =
+ [
+ PhysicalSystem.NintendoWiiU,
+ PhysicalSystem.SonyPlayStation3,
+ ];
+
+ ///
+ /// PhysicalSystem values that have LSD packs
+ ///
+ private static readonly PhysicalSystem?[] _systemsWithLsds =
+ [
+ // Disc-Based Consoles
+ PhysicalSystem.SonyPlayStation,
+
+ // Computers
+ PhysicalSystem.AppleMacintosh,
+ PhysicalSystem.IBMPCcompatible,
+ ];
+
+ ///
+ /// PhysicalSystem values that have SBI packs
+ ///
+ private static readonly PhysicalSystem?[] _systemsWithSbis =
+ [
+ // Disc-Based Consoles
+ PhysicalSystem.SonyPlayStation,
+
+ // Computers
+ PhysicalSystem.AppleMacintosh,
+ PhysicalSystem.IBMPCcompatible,
+ ];
+
+ ///
+ /// PhysicalSystem values that are considered detected by Windows
+ ///
+ private static readonly PhysicalSystem?[] _windowsDetectedSystems =
+ [
+ // Disc-Based Consoles
+ PhysicalSystem.CommodoreAmigaCD32,
+ PhysicalSystem.CommodoreAmigaCDTV,
+ PhysicalSystem.EnvizionsEVOSmartConsole,
+ PhysicalSystem.FujitsuFMTownsMarty,
+ PhysicalSystem.HasbroiONEducationalGamingSystem,
+ PhysicalSystem.MattelFisherPriceiXL,
+ PhysicalSystem.MattelHyperScan,
+ PhysicalSystem.MemorexVisualInformationSystem,
+ PhysicalSystem.MicrosoftXbox,
+ PhysicalSystem.MicrosoftXbox360,
+ PhysicalSystem.MicrosoftXboxOne,
+ PhysicalSystem.MicrosoftXboxSeriesXS,
+ PhysicalSystem.NECPCEngineCDTurboGrafxCD,
+ PhysicalSystem.NECPCFXPCFXGA,
+ PhysicalSystem.NintendoSonySuperNESCDROMSystem,
+ PhysicalSystem.PlaymajiPolymega,
+ PhysicalSystem.SegaDreamcast,
+ PhysicalSystem.SegaMegaCDSegaCD,
+ PhysicalSystem.SegaSaturn,
+ PhysicalSystem.SNKNeoGeoCD,
+ PhysicalSystem.SonyPlayStation,
+ PhysicalSystem.SonyPlayStation2,
+ PhysicalSystem.SonyPlayStation3,
+ PhysicalSystem.SonyPlayStation4,
+ PhysicalSystem.SonyPlayStation5,
+ PhysicalSystem.SonyPlayStationPortable,
+ PhysicalSystem.VMLabsNUON,
+ PhysicalSystem.VTechVFlashVSmilePro,
+ PhysicalSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem,
+
+ // Computers
+ PhysicalSystem.AcornArchimedes,
+ PhysicalSystem.CommodoreAmigaCD,
+ PhysicalSystem.FujitsuFMTownsseries,
+ PhysicalSystem.IBMPCcompatible,
+ PhysicalSystem.NECPC88series,
+ PhysicalSystem.NECPC98series,
+ PhysicalSystem.SharpX68000,
+
+ // Arcade
+ PhysicalSystem.AmigaCUBOCD32,
+ PhysicalSystem.Atronic,
+ PhysicalSystem.AUSCOMSystem1,
+ PhysicalSystem.BallyGameMagic,
+ PhysicalSystem.CapcomCPSystemIII,
+ PhysicalSystem.funworldPhotoPlay,
+ PhysicalSystem.FuRyuOmronPurikura,
+ PhysicalSystem.GlobalVRVarious,
+ PhysicalSystem.GlobalVRVortek,
+ PhysicalSystem.GlobalVRVortekV3,
+ PhysicalSystem.ICEPCHardware,
+ PhysicalSystem.IncredibleTechnologiesEagle,
+ PhysicalSystem.IncredibleTechnologiesVarious,
+ PhysicalSystem.JVLiTouch,
+ PhysicalSystem.KonamieAmusement,
+ PhysicalSystem.KonamiFireBeat,
+ PhysicalSystem.KonamiM2,
+ PhysicalSystem.KonamiPython,
+ PhysicalSystem.KonamiPython2,
+ PhysicalSystem.KonamiSystem573,
+ PhysicalSystem.KonamiSystemGV,
+ PhysicalSystem.KonamiTwinkle,
+ PhysicalSystem.KonamiVarious,
+ PhysicalSystem.MeritIndustriesBoardwalk,
+ PhysicalSystem.MeritIndustriesMegaTouchForce,
+ PhysicalSystem.MeritIndustriesMegaTouchION,
+ PhysicalSystem.MeritIndustriesMegaTouchMaxx,
+ PhysicalSystem.MeritIndustriesMegaTouchXL,
+ PhysicalSystem.NamcoPurikura,
+ PhysicalSystem.NamcoSegaNintendoTriforce,
+ PhysicalSystem.NamcoSystem12,
+ PhysicalSystem.NamcoSystem246256,
+ PhysicalSystem.NichibutsuHighRateSystem,
+ PhysicalSystem.NichibutsuSuperCD,
+ PhysicalSystem.NichibutsuXRateSystem,
+ PhysicalSystem.PhotoPlayVarious,
+ PhysicalSystem.RawThrillsVarious,
+ PhysicalSystem.SegaALLS,
+ PhysicalSystem.SegaChihiro,
+ PhysicalSystem.SegaEuropaR,
+ PhysicalSystem.SegaLindbergh,
+ PhysicalSystem.SegaNaomi,
+ PhysicalSystem.SegaNaomi2,
+ PhysicalSystem.SegaNaomiSatelliteTerminalPC,
+ PhysicalSystem.SegaNu,
+ PhysicalSystem.SegaNu11,
+ PhysicalSystem.SegaNu2,
+ PhysicalSystem.SegaNuSX,
+ PhysicalSystem.SegaRingEdge,
+ PhysicalSystem.SegaRingEdge2,
+ PhysicalSystem.SegaRingWide,
+ PhysicalSystem.SegaSystem32,
+ PhysicalSystem.SegaTitanVideo,
+ PhysicalSystem.SeibuCATSSystem,
+ PhysicalSystem.TABAustriaQuizard,
+ PhysicalSystem.TsunamiTsuMoMultiGameMotionSystem,
+ PhysicalSystem.UltraCade,
+
+ // Other
+ PhysicalSystem.AudioCD,
+ PhysicalSystem.BDVideo,
+ PhysicalSystem.DVDAudio,
+ PhysicalSystem.DVDVideo,
+ PhysicalSystem.EnhancedCD,
+ PhysicalSystem.HDDVDVideo,
+ PhysicalSystem.NavisoftNaviken21,
+ PhysicalSystem.PalmOS,
+ PhysicalSystem.PhotoCD,
+ PhysicalSystem.PocketPC,
+ PhysicalSystem.Psion,
+ PhysicalSystem.RainbowDisc,
+ PhysicalSystem.SharpZaurus,
+ PhysicalSystem.SegaPrologue21MultimediaKaraokeSystem,
+ PhysicalSystem.SonyElectronicBook,
+ PhysicalSystem.TaoiKTV,
+ PhysicalSystem.TomyKissSite,
+ PhysicalSystem.VideoCD,
+ ];
+
+ ///
+ /// PhysicalSystem values that are considered XGD
+ ///
+ private static readonly PhysicalSystem?[] _xgdSystems =
+ [
+ PhysicalSystem.MicrosoftXbox,
+ PhysicalSystem.MicrosoftXbox360,
+ PhysicalSystem.MicrosoftXboxOne,
+ PhysicalSystem.MicrosoftXboxSeriesXS,
+ ];
+
+ ///
+ /// Check that all systems detected by Windows are marked properly
+ ///
+ /// PhysicalSystem value to check
+ /// The expected value to come from the check
+ [Theory]
+ [MemberData(nameof(GenerateWindowsDetectedSystemsTestData))]
+ public void PhysicalSystem_DetectedByWindows(PhysicalSystem? physicalSystem, bool expected)
+ {
+ bool actual = physicalSystem.DetectedByWindows();
+ Assert.Equal(expected, actual);
+ }
+
+ ///
+ /// Check that all systems with reversed ringcodes are marked properly
+ ///
+ /// PhysicalSystem value to check
+ /// The expected value to come from the check
+ [Theory]
+ [MemberData(nameof(GenerateReversedRingcodeSystemsTestData))]
+ public void PhysicalSystem_HasReversedRingcodes(PhysicalSystem? physicalSystem, bool expected)
+ {
+ bool actual = physicalSystem.HasReversedRingcodes();
+ Assert.Equal(expected, actual);
+ }
+
+ ///
+ /// Check that all audio systems are marked properly
+ ///
+ /// PhysicalSystem value to check
+ /// The expected value to come from the check
+ [Theory]
+ [MemberData(nameof(GenerateAudioSystemsTestData))]
+ public void PhysicalSystem_IsAudio(PhysicalSystem? physicalSystem, bool expected)
+ {
+ bool actual = physicalSystem.IsAudio();
+ Assert.Equal(expected, actual);
+ }
+
+ ///
+ /// Check that all marker systems are marked properly
+ ///
+ /// PhysicalSystem value to check
+ /// The expected value to come from the check
+ [Theory]
+ [MemberData(nameof(GenerateMarkerSystemsTestData))]
+ public void PhysicalSystem_IsMarker(PhysicalSystem? physicalSystem, bool expected)
+ {
+ bool actual = physicalSystem.IsMarker();
+ Assert.Equal(expected, actual);
+ }
+
+ ///
+ /// Check that all XGD systems are marked properly
+ ///
+ /// PhysicalSystem value to check
+ /// The expected value to come from the check
+ [Theory]
+ [MemberData(nameof(GenerateXGDSystemsTestData))]
+ public void PhysicalSystem_IsXGD(PhysicalSystem? physicalSystem, bool expected)
+ {
+ bool actual = physicalSystem.IsXGD();
+ Assert.Equal(expected, actual);
+ }
+
+ [Fact]
+ public void PhysicalSystem_ListPhysicalSystem()
+ {
+ var actual = Extensions.ListSystems();
+ Assert.NotEmpty(actual);
+ }
+
+ ///
+ /// Check that every PhysicalSystem has a long name provided
+ ///
+ /// PhysicalSystem value to check
+ /// True to expect a null value, false otherwise
+ [Theory]
+ [MemberData(nameof(GeneratePhysicalSystemTestData))]
+ public void PhysicalSystem_LongName(PhysicalSystem? physicalSystem, bool expectNull)
+ {
+ var actual = physicalSystem.LongName();
+
+ if (expectNull)
+ Assert.Null(actual);
+ else
+ Assert.NotNull(actual);
+ }
+
+ // TODO: Re-enable the following test once non-Redump systems are accounted for
+
+ ///
+ /// Check that every PhysicalSystem has a short name provided
+ ///
+ /// PhysicalSystem value to check
+ /// True to expect a null value, false otherwise
+ // [Theory]
+ // [MemberData(nameof(GeneratePhysicalSystemTestData))]
+ // public void PhysicalSystem_ShortName(PhysicalSystem? physicalSystem, bool expectNull)
+ // {
+ // string? actual = physicalSystem.ShortName();
+
+ // if (expectNull)
+ // Assert.Null(actual);
+ // else
+ // Assert.NotNull(actual);
+ // }
+
+ ///
+ /// Check that every PhysicalSystem has a short name alt provided
+ ///
+ /// PhysicalSystem value to check
+ /// True to expect a null value, false otherwise
+ // [Theory]
+ // [MemberData(nameof(GeneratePhysicalSystemTestData))]
+ // public void PhysicalSystem_ShortNameAlt(PhysicalSystem? physicalSystem, bool expectNull)
+ // {
+ // string? actual = physicalSystem.ShortNameAlt();
+
+ // if (expectNull)
+ // Assert.Null(actual);
+ // else
+ // Assert.NotNull(actual);
+ // }
+
+ ///
+ /// Check that all systems are mapped to a category
+ ///
+ /// PhysicalSystem value to check
+ /// The expected value to come from the check
+ [Theory]
+ [MemberData(nameof(GenerateCategoriesSystemTestData))]
+ public void PhysicalSystem_GetCategory(PhysicalSystem? physicalSystem, SystemCategory expected)
+ {
+ SystemCategory actual = physicalSystem.GetCategory();
+ Assert.Equal(expected, actual);
+ }
+
+ ///
+ /// Check that all available systems are marked properly
+ ///
+ /// PhysicalSystem value to check
+ /// The expected value to come from the check
+ [Theory]
+ [MemberData(nameof(GenerateAvailableSystemsTestData))]
+ public void PhysicalSystem_IsAvailable(PhysicalSystem? physicalSystem, bool expected)
+ {
+ bool actual = physicalSystem.IsAvailable();
+ Assert.Equal(expected, actual);
+ }
+
+ ///
+ /// Check that all banned systems are marked properly
+ ///
+ /// PhysicalSystem value to check
+ /// The expected value to come from the check
+ [Theory]
+ [MemberData(nameof(GenerateBannedSystemsTestData))]
+ public void PhysicalSystem_IsBanned(PhysicalSystem? physicalSystem, bool expected)
+ {
+ bool actual = physicalSystem.IsBanned();
+ Assert.Equal(expected, actual);
+ }
+
+ ///
+ /// Check that all systems with cuesheets are marked properly
+ ///
+ /// PhysicalSystem value to check
+ /// The expected value to come from the check
+ [Theory]
+ [MemberData(nameof(GenerateCuesheetSystemsTestData))]
+ public void PhysicalSystem_HasCues(PhysicalSystem? physicalSystem, bool expected)
+ {
+ bool actual = physicalSystem.HasCues();
+ Assert.Equal(expected, actual);
+ }
+
+ ///
+ /// Check that all systems with DATs are marked properly
+ ///
+ /// PhysicalSystem value to check
+ /// The expected value to come from the check
+ [Theory]
+ [MemberData(nameof(GenerateDatSystemsTestData))]
+ public void PhysicalSystem_HasDat(PhysicalSystem? physicalSystem, bool expected)
+ {
+ bool actual = physicalSystem.HasDat();
+ Assert.Equal(expected, actual);
+ }
+
+ ///
+ /// Check that all systems with decrypted keys are marked properly
+ ///
+ /// PhysicalSystem value to check
+ /// The expected value to come from the check
+ [Theory]
+ [MemberData(nameof(GenerateDKeySystemsTestData))]
+ public void PhysicalSystem_HasDkeys(PhysicalSystem? physicalSystem, bool expected)
+ {
+ bool actual = physicalSystem.HasDkeys();
+ Assert.Equal(expected, actual);
+ }
+
+ ///
+ /// Check that all systems with GDIs are marked properly
+ ///
+ /// PhysicalSystem value to check
+ /// The expected value to come from the check
+ [Theory]
+ [MemberData(nameof(GenerateGdiSystemsTestData))]
+ public void PhysicalSystem_HasGdi(PhysicalSystem? physicalSystem, bool expected)
+ {
+ bool actual = physicalSystem.HasGdi();
+ Assert.Equal(expected, actual);
+ }
+
+ ///
+ /// Check that all systems with keys are marked properly
+ ///
+ /// PhysicalSystem value to check
+ /// The expected value to come from the check
+ [Theory]
+ [MemberData(nameof(GenerateKeySystemsTestData))]
+ public void PhysicalSystem_HasKeys(PhysicalSystem? physicalSystem, bool expected)
+ {
+ bool actual = physicalSystem.HasKeys();
+ Assert.Equal(expected, actual);
+ }
+
+ ///
+ /// Check that all systems with LSDs are marked properly
+ ///
+ /// PhysicalSystem value to check
+ /// The expected value to come from the check
+ [Theory]
+ [MemberData(nameof(GenerateLsdSystemsTestData))]
+ public void PhysicalSystem_HasLsd(PhysicalSystem? physicalSystem, bool expected)
+ {
+ bool actual = physicalSystem.HasLsd();
+ Assert.Equal(expected, actual);
+ }
+
+ ///
+ /// Check that all systems with SBIs are marked properly
+ ///
+ /// PhysicalSystem value to check
+ /// The expected value to come from the check
+ [Theory]
+ [MemberData(nameof(GenerateSbiSystemsTestData))]
+ public void PhysicalSystem_HasSbi(PhysicalSystem? physicalSystem, bool expected)
+ {
+ bool actual = physicalSystem.HasSbi();
+ Assert.Equal(expected, actual);
+ }
+
+ ///
+ /// Check that every PhysicalSystem can be mapped from a string
+ ///
+ /// PhysicalSystem value to check
+ /// True to expect a null value, false otherwise
+ [Theory]
+ [MemberData(nameof(GeneratePhysicalSystemTestData))]
+ public void PhysicalSystem_ToPhysicalSystem(PhysicalSystem? physicalSystem, bool expectNull)
+ {
+ string? longName = physicalSystem.LongName();
+ string? longNameSpaceless = longName?.Replace(" ", string.Empty);
+
+ var actualNormal = longName.ToPhysicalSystem();
+ var actualSpaceless = longNameSpaceless.ToPhysicalSystem();
+
+ if (expectNull)
+ {
+ Assert.Null(actualNormal);
+ Assert.Null(actualSpaceless);
+ }
+ else
+ {
+ Assert.Equal(physicalSystem, actualNormal);
+ Assert.Equal(physicalSystem, actualSpaceless);
+ }
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GeneratePhysicalSystemTestData()
+ {
+ var testData = new TheoryData() { { null, true } };
+ foreach (PhysicalSystem? physicalSystem in Enum.GetValues().Cast())
+ {
+ // We want to skip all markers for this
+ if (physicalSystem.IsMarker())
+ continue;
+
+ testData.Add(physicalSystem, false);
+ }
+
+ return testData;
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values that are considered Audio
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GenerateAudioSystemsTestData()
+ {
+ var testData = new TheoryData() { { null, false } };
+ foreach (PhysicalSystem physicalSystem in Enum.GetValues())
+ {
+ if (_audioSystems.Contains(physicalSystem))
+ testData.Add(physicalSystem, true);
+ else
+ testData.Add(physicalSystem, false);
+ }
+
+ return testData;
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values that are available
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GenerateAvailableSystemsTestData()
+ {
+ var testData = new TheoryData() { { null, false } };
+ foreach (PhysicalSystem physicalSystem in Enum.GetValues())
+ {
+ if (_availableSystems.Contains(physicalSystem))
+ testData.Add(physicalSystem, true);
+ else
+ testData.Add(physicalSystem, false);
+ }
+
+ return testData;
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values that are banned
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GenerateBannedSystemsTestData()
+ {
+ var testData = new TheoryData() { { null, false } };
+ foreach (PhysicalSystem physicalSystem in Enum.GetValues())
+ {
+ if (_bannedSystems.Contains(physicalSystem))
+ testData.Add(physicalSystem, true);
+ else
+ testData.Add(physicalSystem, false);
+ }
+
+ return testData;
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values mapped to their categories
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GenerateCategoriesSystemTestData()
+ {
+ var testData = new TheoryData() { { null, SystemCategory.NONE } };
+ foreach (PhysicalSystem physicalSystem in Enum.GetValues())
+ {
+ testData.Add(physicalSystem, _systemCategoryMap[physicalSystem]);
+ }
+
+ return testData;
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values that have cuesheets
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GenerateCuesheetSystemsTestData()
+ {
+ var testData = new TheoryData() { { null, false } };
+ foreach (PhysicalSystem physicalSystem in Enum.GetValues())
+ {
+ if (_systemsWithCues.Contains(physicalSystem))
+ testData.Add(physicalSystem, true);
+ else
+ testData.Add(physicalSystem, false);
+ }
+
+ return testData;
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values that have DATs
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GenerateDatSystemsTestData()
+ {
+ var testData = new TheoryData() { { null, false } };
+ foreach (PhysicalSystem physicalSystem in Enum.GetValues())
+ {
+ if (_systemsWithDats.Contains(physicalSystem))
+ testData.Add(physicalSystem, true);
+ else
+ testData.Add(physicalSystem, false);
+ }
+
+ return testData;
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values that have decrypted keys
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GenerateDKeySystemsTestData()
+ {
+ var testData = new TheoryData() { { null, false } };
+ foreach (PhysicalSystem physicalSystem in Enum.GetValues())
+ {
+ if (_systemsWithDKeys.Contains(physicalSystem))
+ testData.Add(physicalSystem, true);
+ else
+ testData.Add(physicalSystem, false);
+ }
+
+ return testData;
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values that have GDIs
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GenerateGdiSystemsTestData()
+ {
+ var testData = new TheoryData() { { null, false } };
+ foreach (PhysicalSystem physicalSystem in Enum.GetValues())
+ {
+ if (_systemsWithGdis.Contains(physicalSystem))
+ testData.Add(physicalSystem, true);
+ else
+ testData.Add(physicalSystem, false);
+ }
+
+ return testData;
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values that have keys
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GenerateKeySystemsTestData()
+ {
+ var testData = new TheoryData() { { null, false } };
+ foreach (PhysicalSystem physicalSystem in Enum.GetValues())
+ {
+ if (_systemsWithKeys.Contains(physicalSystem))
+ testData.Add(physicalSystem, true);
+ else
+ testData.Add(physicalSystem, false);
+ }
+
+ return testData;
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values that have LSDs
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GenerateLsdSystemsTestData()
+ {
+ var testData = new TheoryData() { { null, false } };
+ foreach (PhysicalSystem physicalSystem in Enum.GetValues())
+ {
+ if (_systemsWithLsds.Contains(physicalSystem))
+ testData.Add(physicalSystem, true);
+ else
+ testData.Add(physicalSystem, false);
+ }
+
+ return testData;
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values that are considered markers
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GenerateMarkerSystemsTestData()
+ {
+ var testData = new TheoryData() { { null, false } };
+ foreach (PhysicalSystem physicalSystem in Enum.GetValues())
+ {
+ if (_markerSystems.Contains(physicalSystem))
+ testData.Add(physicalSystem, true);
+ else
+ testData.Add(physicalSystem, false);
+ }
+
+ return testData;
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values that are considered markers
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GenerateReversedRingcodeSystemsTestData()
+ {
+ var testData = new TheoryData() { { null, false } };
+ foreach (PhysicalSystem physicalSystem in Enum.GetValues())
+ {
+ if (_reverseRingcodeSystems.Contains(physicalSystem))
+ testData.Add(physicalSystem, true);
+ else
+ testData.Add(physicalSystem, false);
+ }
+
+ return testData;
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values that have SBIs
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GenerateSbiSystemsTestData()
+ {
+ var testData = new TheoryData() { { null, false } };
+ foreach (PhysicalSystem physicalSystem in Enum.GetValues())
+ {
+ if (_systemsWithSbis.Contains(physicalSystem))
+ testData.Add(physicalSystem, true);
+ else
+ testData.Add(physicalSystem, false);
+ }
+
+ return testData;
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values that are detected by Windows
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GenerateWindowsDetectedSystemsTestData()
+ {
+ var testData = new TheoryData() { { null, false } };
+ foreach (PhysicalSystem physicalSystem in Enum.GetValues())
+ {
+ if (_windowsDetectedSystems.Contains(physicalSystem))
+ testData.Add(physicalSystem, true);
+ else
+ testData.Add(physicalSystem, false);
+ }
+
+ return testData;
+ }
+
+ ///
+ /// Generate a test set of PhysicalSystem values that are considered XGD
+ ///
+ /// MemberData-compatible list of PhysicalSystem values
+ public static TheoryData GenerateXGDSystemsTestData()
+ {
+ var testData = new TheoryData() { { null, false } };
+ foreach (PhysicalSystem physicalSystem in Enum.GetValues())
+ {
+ if (_xgdSystems.Contains(physicalSystem))
+ testData.Add(physicalSystem, true);
+ else
+ testData.Add(physicalSystem, false);
+ }
+
+ return testData;
+ }
+
+ #endregion
+
#region Region
///
@@ -388,6 +1673,5 @@ namespace SabreTools.RedumpLib.Test.Data
}
#endregion
-
}
}
diff --git a/SabreTools.RedumpLib.Test/RedumpInfo/ExtensionsTests.cs b/SabreTools.RedumpLib.Test/RedumpInfo/ExtensionsTests.cs
index 326bec8..57adda1 100644
--- a/SabreTools.RedumpLib.Test/RedumpInfo/ExtensionsTests.cs
+++ b/SabreTools.RedumpLib.Test/RedumpInfo/ExtensionsTests.cs
@@ -52,18 +52,6 @@ namespace SabreTools.RedumpLib.Test.RedumpInfo
PhysicalMediaType.UMD,
];
- ///
- /// Check that every supported system has some set of MediaTypes supported
- ///
- /// RedumpSystem value to check
- [Theory]
- [MemberData(nameof(GenerateRedumpSystemMappingTestData))]
- public void MediaTypesTest(RedumpSystem? redumpSystem)
- {
- var actual = redumpSystem.MediaTypes();
- Assert.NotEmpty(actual);
- }
-
///
/// Check that both mappable and unmappable media types output correctly
///
@@ -90,21 +78,6 @@ namespace SabreTools.RedumpLib.Test.RedumpInfo
Assert.Equal(expectNull, actual is null);
}
- ///
- /// Generate a test set of RedumpSystem values
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateRedumpSystemMappingTestData()
- {
- var testData = new TheoryData() { null };
- foreach (RedumpSystem? redumpSystem in Enum.GetValues().Cast())
- {
- testData.Add(redumpSystem);
- }
-
- return testData;
- }
-
///
/// Generate a test set of MediaType values
///
@@ -617,1204 +590,6 @@ namespace SabreTools.RedumpLib.Test.RedumpInfo
#endregion
- #region System
-
- ///
- /// RedumpSystem values that are considered Audio
- ///
- private static readonly RedumpSystem?[] _audioSystems =
- [
- RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem,
- RedumpSystem.AudioCD,
- RedumpSystem.DVDAudio,
- RedumpSystem.HasbroiONEducationalGamingSystem,
- RedumpSystem.HasbroVideoNow,
- RedumpSystem.HasbroVideoNowColor,
- RedumpSystem.HasbroVideoNowJr,
- RedumpSystem.HasbroVideoNowXP,
- RedumpSystem.PlayStationGameSharkUpdates,
- RedumpSystem.PhilipsCDi,
- RedumpSystem.SuperAudioCD,
- ];
-
- ///
- /// RedumpSystem values that are available
- ///
- private static readonly RedumpSystem?[] _availableSystems =
- [
- // BIOS Sets
- RedumpSystem.MicrosoftXboxBIOS,
- RedumpSystem.NintendoGameCubeBIOS,
- RedumpSystem.SonyPlayStationBIOS,
- RedumpSystem.SonyPlayStation2BIOS,
-
- // Disc-Based Consoles
- RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem,
- RedumpSystem.BandaiPlaydiaQuickInteractiveSystem,
- RedumpSystem.BandaiPippin,
- RedumpSystem.CommodoreAmigaCD32,
- RedumpSystem.CommodoreAmigaCDTV,
- RedumpSystem.HasbroVideoNow,
- RedumpSystem.HasbroVideoNowColor,
- RedumpSystem.HasbroVideoNowJr,
- RedumpSystem.HasbroVideoNowXP,
- RedumpSystem.MattelFisherPriceiXL,
- RedumpSystem.MattelHyperScan,
- RedumpSystem.MemorexVisualInformationSystem,
- RedumpSystem.MicrosoftXbox,
- RedumpSystem.MicrosoftXbox360,
- RedumpSystem.MicrosoftXboxOne,
- RedumpSystem.MicrosoftXboxSeriesXS,
- RedumpSystem.NECPCEngineCDTurboGrafxCD,
- RedumpSystem.NECPCFXPCFXGA,
- RedumpSystem.NintendoGameCube,
- RedumpSystem.NintendoWii,
- RedumpSystem.NintendoWiiU,
- RedumpSystem.Panasonic3DOInteractiveMultiplayer,
- RedumpSystem.PhilipsCDi,
- RedumpSystem.SegaDreamcast,
- RedumpSystem.SegaMegaCDSegaCD,
- RedumpSystem.SegaSaturn,
- RedumpSystem.SNKNeoGeoCD,
- RedumpSystem.SonyPlayStation,
- RedumpSystem.SonyPlayStation2,
- RedumpSystem.SonyPlayStation3,
- RedumpSystem.SonyPlayStation4,
- RedumpSystem.SonyPlayStation5,
- RedumpSystem.SonyPlayStationPortable,
- RedumpSystem.VMLabsNUON,
- RedumpSystem.VTechVFlashVSmilePro,
- RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem,
-
- // Computers
- RedumpSystem.AcornArchimedes,
- RedumpSystem.AppleMacintosh,
- RedumpSystem.CommodoreAmigaCD,
- RedumpSystem.FujitsuFMTownsseries,
- RedumpSystem.IBMPCcompatible,
- RedumpSystem.NECPC88series,
- RedumpSystem.NECPC98series,
- RedumpSystem.SharpX68000,
-
- // Arcade
- RedumpSystem.funworldPhotoPlay,
- RedumpSystem.IncredibleTechnologiesEagle,
- RedumpSystem.KonamieAmusement,
- RedumpSystem.KonamiFireBeat,
- RedumpSystem.KonamiM2,
- RedumpSystem.KonamiSystem573,
- RedumpSystem.KonamiSystemGV,
- RedumpSystem.KonamiTwinkle,
- RedumpSystem.NamcoSegaNintendoTriforce,
- RedumpSystem.NamcoSystem12,
- RedumpSystem.NamcoSystem246256,
- RedumpSystem.PanasonicM2,
- RedumpSystem.SegaChihiro,
- RedumpSystem.SegaLindbergh,
- RedumpSystem.SegaNaomi,
- RedumpSystem.SegaNaomi2,
- RedumpSystem.SegaRingEdge,
- RedumpSystem.SegaRingEdge2,
- RedumpSystem.SegaTitanVideo,
- RedumpSystem.TABAustriaQuizard,
-
- // Other
- RedumpSystem.AudioCD,
- RedumpSystem.BDVideo,
- RedumpSystem.DVDVideo,
- RedumpSystem.EnhancedCD,
- RedumpSystem.HDDVDVideo,
- RedumpSystem.NavisoftNaviken21,
- RedumpSystem.PalmOS,
- RedumpSystem.PhotoCD,
- RedumpSystem.PlayStationGameSharkUpdates,
- RedumpSystem.PocketPC,
- RedumpSystem.SegaPrologue21MultimediaKaraokeSystem,
- RedumpSystem.TaoiKTV,
- RedumpSystem.TomyKissSite,
- RedumpSystem.VideoCD,
- ];
-
- ///
- /// RedumpSystem values that are dumper-only
- ///
- private static readonly RedumpSystem?[] _bannedSystems =
- [
- // Disc-Based Consoles
- RedumpSystem.HasbroVideoNow,
- RedumpSystem.HasbroVideoNowColor,
- RedumpSystem.HasbroVideoNowJr,
- RedumpSystem.HasbroVideoNowXP,
- RedumpSystem.MicrosoftXboxOne,
- RedumpSystem.MicrosoftXboxSeriesXS,
- RedumpSystem.NintendoWiiU,
- RedumpSystem.SonyPlayStation4,
- RedumpSystem.SonyPlayStation5,
-
- // Arcade
- RedumpSystem.KonamiM2,
- RedumpSystem.PanasonicM2,
-
- // Other
- RedumpSystem.AudioCD,
- RedumpSystem.BDVideo,
- RedumpSystem.DVDVideo,
- RedumpSystem.EnhancedCD,
- RedumpSystem.HDDVDVideo,
- RedumpSystem.NavisoftNaviken21,
- RedumpSystem.VideoCD,
- ];
-
- ///
- /// RedumpSystem values that are considered markers
- ///
- private static readonly RedumpSystem?[] _markerSystems =
- [
- RedumpSystem.MarkerArcadeEnd,
- RedumpSystem.MarkerComputerEnd,
- RedumpSystem.MarkerDiscBasedConsoleEnd,
- RedumpSystem.MarkerOtherEnd,
- ];
-
- ///
- /// RedumpSystem values that are have reversed ringcodes
- ///
- private static readonly RedumpSystem?[] _reverseRingcodeSystems =
- [
- RedumpSystem.SonyPlayStation2,
- RedumpSystem.SonyPlayStation3,
- RedumpSystem.SonyPlayStation4,
- RedumpSystem.SonyPlayStation5,
- RedumpSystem.SonyPlayStationPortable,
- ];
-
- ///
- /// Map of RedumpSystem values to their corresponding categories
- ///
- private static readonly Dictionary _systemCategoryMap = new()
- {
- // BIOS
- [RedumpSystem.MicrosoftXboxBIOS] = SystemCategory.NONE,
- [RedumpSystem.NintendoGameCubeBIOS] = SystemCategory.NONE,
- [RedumpSystem.SonyPlayStationBIOS] = SystemCategory.NONE,
- [RedumpSystem.SonyPlayStation2BIOS] = SystemCategory.NONE,
-
- // Disc-Based Consoles
- [RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.BandaiPlaydiaQuickInteractiveSystem] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.BandaiPippin] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.CommodoreAmigaCD32] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.CommodoreAmigaCDTV] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.EnvizionsEVOSmartConsole] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.FujitsuFMTownsMarty] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.HasbroiONEducationalGamingSystem] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.HasbroVideoNow] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.HasbroVideoNowColor] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.HasbroVideoNowJr] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.HasbroVideoNowXP] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MattelFisherPriceiXL] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MattelHyperScan] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MemorexVisualInformationSystem] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MicrosoftXbox] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MicrosoftXbox360] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MicrosoftXboxOne] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MicrosoftXboxSeriesXS] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.NECPCEngineCDTurboGrafxCD] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.NECPCFXPCFXGA] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.NintendoGameCube] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.NintendoSonySuperNESCDROMSystem] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.NintendoWii] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.NintendoWiiU] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.Panasonic3DOInteractiveMultiplayer] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.PhilipsCDi] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.PlaymajiPolymega] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.PioneerLaserActive] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SegaDreamcast] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SegaMegaCDSegaCD] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SegaSaturn] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SNKNeoGeoCD] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SonyPlayStation] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SonyPlayStation2] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SonyPlayStation3] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SonyPlayStation4] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SonyPlayStation5] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SonyPlayStationPortable] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.VMLabsNUON] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.VTechVFlashVSmilePro] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MarkerDiscBasedConsoleEnd] = SystemCategory.NONE,
-
- // Computers
- [RedumpSystem.AcornArchimedes] = SystemCategory.Computer,
- [RedumpSystem.AppleMacintosh] = SystemCategory.Computer,
- [RedumpSystem.CommodoreAmigaCD] = SystemCategory.Computer,
- [RedumpSystem.FujitsuFMTownsseries] = SystemCategory.Computer,
- [RedumpSystem.IBMPCcompatible] = SystemCategory.Computer,
- [RedumpSystem.NECPC88series] = SystemCategory.Computer,
- [RedumpSystem.NECPC98series] = SystemCategory.Computer,
- [RedumpSystem.SharpX68000] = SystemCategory.Computer,
- [RedumpSystem.MarkerComputerEnd] = SystemCategory.NONE,
-
- // Arcade
- [RedumpSystem.AmigaCUBOCD32] = SystemCategory.Arcade,
- [RedumpSystem.AmericanLaserGames3DO] = SystemCategory.Arcade,
- [RedumpSystem.Atari3DO] = SystemCategory.Arcade,
- [RedumpSystem.Atronic] = SystemCategory.Arcade,
- [RedumpSystem.AUSCOMSystem1] = SystemCategory.Arcade,
- [RedumpSystem.BallyGameMagic] = SystemCategory.Arcade,
- [RedumpSystem.CapcomCPSystemIII] = SystemCategory.Arcade,
- [RedumpSystem.funworldPhotoPlay] = SystemCategory.Arcade,
- [RedumpSystem.FuRyuOmronPurikura] = SystemCategory.Arcade,
- [RedumpSystem.GlobalVRVarious] = SystemCategory.Arcade,
- [RedumpSystem.GlobalVRVortek] = SystemCategory.Arcade,
- [RedumpSystem.GlobalVRVortekV3] = SystemCategory.Arcade,
- [RedumpSystem.ICEPCHardware] = SystemCategory.Arcade,
- [RedumpSystem.IncredibleTechnologiesEagle] = SystemCategory.Arcade,
- [RedumpSystem.IncredibleTechnologiesVarious] = SystemCategory.Arcade,
- [RedumpSystem.JVLiTouch] = SystemCategory.Arcade,
- [RedumpSystem.KonamieAmusement] = SystemCategory.Arcade,
- [RedumpSystem.KonamiFireBeat] = SystemCategory.Arcade,
- [RedumpSystem.KonamiM2] = SystemCategory.Arcade,
- [RedumpSystem.KonamiPython] = SystemCategory.Arcade,
- [RedumpSystem.KonamiPython2] = SystemCategory.Arcade,
- [RedumpSystem.KonamiSystem573] = SystemCategory.Arcade,
- [RedumpSystem.KonamiSystemGV] = SystemCategory.Arcade,
- [RedumpSystem.KonamiTwinkle] = SystemCategory.Arcade,
- [RedumpSystem.KonamiVarious] = SystemCategory.Arcade,
- [RedumpSystem.MeritIndustriesBoardwalk] = SystemCategory.Arcade,
- [RedumpSystem.MeritIndustriesMegaTouchForce] = SystemCategory.Arcade,
- [RedumpSystem.MeritIndustriesMegaTouchION] = SystemCategory.Arcade,
- [RedumpSystem.MeritIndustriesMegaTouchMaxx] = SystemCategory.Arcade,
- [RedumpSystem.MeritIndustriesMegaTouchXL] = SystemCategory.Arcade,
- [RedumpSystem.NamcoPurikura] = SystemCategory.Arcade,
- [RedumpSystem.NamcoSegaNintendoTriforce] = SystemCategory.Arcade,
- [RedumpSystem.NamcoSystem12] = SystemCategory.Arcade,
- [RedumpSystem.NamcoSystem246256] = SystemCategory.Arcade,
- [RedumpSystem.NewJatreCDi] = SystemCategory.Arcade,
- [RedumpSystem.NichibutsuHighRateSystem] = SystemCategory.Arcade,
- [RedumpSystem.NichibutsuSuperCD] = SystemCategory.Arcade,
- [RedumpSystem.NichibutsuXRateSystem] = SystemCategory.Arcade,
- [RedumpSystem.PanasonicM2] = SystemCategory.Arcade,
- [RedumpSystem.PhotoPlayVarious] = SystemCategory.Arcade,
- [RedumpSystem.RawThrillsVarious] = SystemCategory.Arcade,
- [RedumpSystem.SegaALLS] = SystemCategory.Arcade,
- [RedumpSystem.SegaChihiro] = SystemCategory.Arcade,
- [RedumpSystem.SegaEuropaR] = SystemCategory.Arcade,
- [RedumpSystem.SegaLindbergh] = SystemCategory.Arcade,
- [RedumpSystem.SegaNaomi] = SystemCategory.Arcade,
- [RedumpSystem.SegaNaomi2] = SystemCategory.Arcade,
- [RedumpSystem.SegaNaomiSatelliteTerminalPC] = SystemCategory.Arcade,
- [RedumpSystem.SegaNu] = SystemCategory.Arcade,
- [RedumpSystem.SegaNu11] = SystemCategory.Arcade,
- [RedumpSystem.SegaNu2] = SystemCategory.Arcade,
- [RedumpSystem.SegaNuSX] = SystemCategory.Arcade,
- [RedumpSystem.SegaRingEdge] = SystemCategory.Arcade,
- [RedumpSystem.SegaRingEdge2] = SystemCategory.Arcade,
- [RedumpSystem.SegaRingWide] = SystemCategory.Arcade,
- [RedumpSystem.SegaSystem32] = SystemCategory.Arcade,
- [RedumpSystem.SegaTitanVideo] = SystemCategory.Arcade,
- [RedumpSystem.SeibuCATSSystem] = SystemCategory.Arcade,
- [RedumpSystem.TABAustriaQuizard] = SystemCategory.Arcade,
- [RedumpSystem.TsunamiTsuMoMultiGameMotionSystem] = SystemCategory.Arcade,
- [RedumpSystem.UltraCade] = SystemCategory.Arcade,
- [RedumpSystem.MarkerArcadeEnd] = SystemCategory.NONE,
-
- // Other
- [RedumpSystem.AudioCD] = SystemCategory.Other,
- [RedumpSystem.BDVideo] = SystemCategory.Other,
- [RedumpSystem.DVDAudio] = SystemCategory.Other,
- [RedumpSystem.DVDVideo] = SystemCategory.Other,
- [RedumpSystem.EnhancedCD] = SystemCategory.Other,
- [RedumpSystem.HDDVDVideo] = SystemCategory.Other,
- [RedumpSystem.NavisoftNaviken21] = SystemCategory.Other,
- [RedumpSystem.PalmOS] = SystemCategory.Other,
- [RedumpSystem.PhotoCD] = SystemCategory.Other,
- [RedumpSystem.PlayStationGameSharkUpdates] = SystemCategory.Other,
- [RedumpSystem.PocketPC] = SystemCategory.Other,
- [RedumpSystem.Psion] = SystemCategory.Other,
- [RedumpSystem.RainbowDisc] = SystemCategory.Other,
- [RedumpSystem.SegaPrologue21MultimediaKaraokeSystem] = SystemCategory.Other,
- [RedumpSystem.SharpZaurus] = SystemCategory.Other,
- [RedumpSystem.SonyElectronicBook] = SystemCategory.Other,
- [RedumpSystem.SuperAudioCD] = SystemCategory.Other,
- [RedumpSystem.TaoiKTV] = SystemCategory.Other,
- [RedumpSystem.TomyKissSite] = SystemCategory.Other,
- [RedumpSystem.VideoCD] = SystemCategory.Other,
- [RedumpSystem.MarkerOtherEnd] = SystemCategory.NONE,
- };
-
- ///
- /// RedumpSystem values that have cuesheet packs
- ///
- private static readonly RedumpSystem?[] _systemsWithCues =
- [
- // Disc-Based Consoles
- RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem,
- RedumpSystem.BandaiPlaydiaQuickInteractiveSystem,
- RedumpSystem.BandaiPippin,
- RedumpSystem.CommodoreAmigaCD32,
- RedumpSystem.CommodoreAmigaCDTV,
- RedumpSystem.HasbroVideoNow,
- RedumpSystem.HasbroVideoNowColor,
- RedumpSystem.HasbroVideoNowJr,
- RedumpSystem.HasbroVideoNowXP,
- RedumpSystem.MattelFisherPriceiXL,
- RedumpSystem.MattelHyperScan,
- RedumpSystem.MemorexVisualInformationSystem,
- RedumpSystem.MicrosoftXbox,
- RedumpSystem.MicrosoftXbox360,
- RedumpSystem.NECPCEngineCDTurboGrafxCD,
- RedumpSystem.NECPCFXPCFXGA,
- RedumpSystem.Panasonic3DOInteractiveMultiplayer,
- RedumpSystem.PhilipsCDi,
- RedumpSystem.SegaDreamcast,
- RedumpSystem.SegaMegaCDSegaCD,
- RedumpSystem.SegaSaturn,
- RedumpSystem.SNKNeoGeoCD,
- RedumpSystem.SonyPlayStation,
- RedumpSystem.SonyPlayStation2,
- RedumpSystem.SonyPlayStation3,
- RedumpSystem.VTechVFlashVSmilePro,
-
- // Computers
- RedumpSystem.AcornArchimedes,
- RedumpSystem.AppleMacintosh,
- RedumpSystem.CommodoreAmigaCD,
- RedumpSystem.FujitsuFMTownsseries,
- RedumpSystem.IBMPCcompatible,
- RedumpSystem.NECPC88series,
- RedumpSystem.NECPC98series,
- RedumpSystem.SharpX68000,
-
- // Arcade
- RedumpSystem.funworldPhotoPlay,
- RedumpSystem.IncredibleTechnologiesEagle,
- RedumpSystem.KonamieAmusement,
- RedumpSystem.KonamiFireBeat,
- RedumpSystem.KonamiM2,
- RedumpSystem.KonamiSystem573,
- RedumpSystem.KonamiSystemGV,
- RedumpSystem.NamcoSegaNintendoTriforce,
- RedumpSystem.NamcoSystem246256,
- RedumpSystem.PanasonicM2,
- RedumpSystem.SegaChihiro,
- RedumpSystem.SegaNaomi,
- RedumpSystem.SegaNaomi2,
- RedumpSystem.TABAustriaQuizard,
-
- // Other
- RedumpSystem.AudioCD,
- RedumpSystem.NavisoftNaviken21,
- RedumpSystem.PalmOS,
- RedumpSystem.PhotoCD,
- RedumpSystem.PlayStationGameSharkUpdates,
- RedumpSystem.PocketPC,
- RedumpSystem.SegaPrologue21MultimediaKaraokeSystem,
- RedumpSystem.TomyKissSite,
- RedumpSystem.VideoCD,
- ];
-
- ///
- /// RedumpSystem values that have dats
- ///
- private static readonly RedumpSystem?[] _systemsWithDats =
- [
- // BIOS Sets
- RedumpSystem.MicrosoftXboxBIOS,
- RedumpSystem.NintendoGameCubeBIOS,
- RedumpSystem.SonyPlayStationBIOS,
- RedumpSystem.SonyPlayStation2BIOS,
-
- // Disc-Based Consoles
- RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem,
- RedumpSystem.BandaiPlaydiaQuickInteractiveSystem,
- RedumpSystem.BandaiPippin,
- RedumpSystem.CommodoreAmigaCD32,
- RedumpSystem.CommodoreAmigaCDTV,
- RedumpSystem.HasbroVideoNow,
- RedumpSystem.HasbroVideoNowColor,
- RedumpSystem.HasbroVideoNowJr,
- RedumpSystem.HasbroVideoNowXP,
- RedumpSystem.MattelFisherPriceiXL,
- RedumpSystem.MattelHyperScan,
- RedumpSystem.MemorexVisualInformationSystem,
- RedumpSystem.MicrosoftXbox,
- RedumpSystem.MicrosoftXbox360,
- RedumpSystem.MicrosoftXboxOne,
- RedumpSystem.MicrosoftXboxSeriesXS,
- RedumpSystem.NECPCEngineCDTurboGrafxCD,
- RedumpSystem.NECPCFXPCFXGA,
- RedumpSystem.NintendoGameCube,
- RedumpSystem.NintendoWii,
- RedumpSystem.NintendoWiiU,
- RedumpSystem.Panasonic3DOInteractiveMultiplayer,
- RedumpSystem.PhilipsCDi,
- RedumpSystem.SegaDreamcast,
- RedumpSystem.SegaMegaCDSegaCD,
- RedumpSystem.SegaSaturn,
- RedumpSystem.SNKNeoGeoCD,
- RedumpSystem.SonyPlayStation,
- RedumpSystem.SonyPlayStation2,
- RedumpSystem.SonyPlayStation3,
- RedumpSystem.SonyPlayStation4,
- RedumpSystem.SonyPlayStation5,
- RedumpSystem.SonyPlayStationPortable,
- RedumpSystem.VMLabsNUON,
- RedumpSystem.VTechVFlashVSmilePro,
- RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem,
-
- // Computers
- RedumpSystem.AcornArchimedes,
- RedumpSystem.AppleMacintosh,
- RedumpSystem.CommodoreAmigaCD,
- RedumpSystem.FujitsuFMTownsseries,
- RedumpSystem.IBMPCcompatible,
- RedumpSystem.NECPC88series,
- RedumpSystem.NECPC98series,
- RedumpSystem.SharpX68000,
-
- // Arcade
- RedumpSystem.funworldPhotoPlay,
- RedumpSystem.IncredibleTechnologiesEagle,
- RedumpSystem.KonamieAmusement,
- RedumpSystem.KonamiFireBeat,
- RedumpSystem.KonamiM2,
- RedumpSystem.KonamiSystem573,
- RedumpSystem.KonamiSystemGV,
- RedumpSystem.NamcoSegaNintendoTriforce,
- RedumpSystem.NamcoSystem246256,
- RedumpSystem.PanasonicM2,
- RedumpSystem.SegaChihiro,
- RedumpSystem.SegaLindbergh,
- RedumpSystem.SegaNaomi,
- RedumpSystem.SegaNaomi2,
- RedumpSystem.SegaRingEdge,
- RedumpSystem.SegaRingEdge2,
- RedumpSystem.TABAustriaQuizard,
-
- // Other
- RedumpSystem.AudioCD,
- RedumpSystem.BDVideo,
- RedumpSystem.DVDVideo,
- RedumpSystem.HDDVDVideo,
- RedumpSystem.NavisoftNaviken21,
- RedumpSystem.PalmOS,
- RedumpSystem.PhotoCD,
- RedumpSystem.PlayStationGameSharkUpdates,
- RedumpSystem.PocketPC,
- RedumpSystem.SegaPrologue21MultimediaKaraokeSystem,
- RedumpSystem.TomyKissSite,
- RedumpSystem.VideoCD,
- ];
-
- ///
- /// RedumpSystem values that have decrypted keys
- ///
- private static readonly RedumpSystem?[] _systemsWithDKeys =
- [
- RedumpSystem.SonyPlayStation3,
- ];
-
- ///
- /// RedumpSystem values that have GDI packs
- ///
- private static readonly RedumpSystem?[] _systemsWithGdis =
- [
- // Disc-Based Consoles
- RedumpSystem.SegaDreamcast,
-
- // Arcade
- RedumpSystem.NamcoSegaNintendoTriforce,
- RedumpSystem.SegaChihiro,
- RedumpSystem.SegaNaomi,
- RedumpSystem.SegaNaomi2,
- ];
-
- ///
- /// RedumpSystem values that have keys
- ///
- private static readonly RedumpSystem?[] _systemsWithKeys =
- [
- RedumpSystem.NintendoWiiU,
- RedumpSystem.SonyPlayStation3,
- ];
-
- ///
- /// RedumpSystem values that have LSD packs
- ///
- private static readonly RedumpSystem?[] _systemsWithLsds =
- [
- // Disc-Based Consoles
- RedumpSystem.SonyPlayStation,
-
- // Computers
- RedumpSystem.AppleMacintosh,
- RedumpSystem.IBMPCcompatible,
- ];
-
- ///
- /// RedumpSystem values that have SBI packs
- ///
- private static readonly RedumpSystem?[] _systemsWithSbis =
- [
- // Disc-Based Consoles
- RedumpSystem.SonyPlayStation,
-
- // Computers
- RedumpSystem.AppleMacintosh,
- RedumpSystem.IBMPCcompatible,
- ];
-
- ///
- /// RedumpSystem values that are considered detected by Windows
- ///
- private static readonly RedumpSystem?[] _windowsDetectedSystems =
- [
- // Disc-Based Consoles
- RedumpSystem.CommodoreAmigaCD32,
- RedumpSystem.CommodoreAmigaCDTV,
- RedumpSystem.EnvizionsEVOSmartConsole,
- RedumpSystem.FujitsuFMTownsMarty,
- RedumpSystem.HasbroiONEducationalGamingSystem,
- RedumpSystem.MattelFisherPriceiXL,
- RedumpSystem.MattelHyperScan,
- RedumpSystem.MemorexVisualInformationSystem,
- RedumpSystem.MicrosoftXbox,
- RedumpSystem.MicrosoftXbox360,
- RedumpSystem.MicrosoftXboxOne,
- RedumpSystem.MicrosoftXboxSeriesXS,
- RedumpSystem.NECPCEngineCDTurboGrafxCD,
- RedumpSystem.NECPCFXPCFXGA,
- RedumpSystem.NintendoSonySuperNESCDROMSystem,
- RedumpSystem.PlaymajiPolymega,
- RedumpSystem.SegaDreamcast,
- RedumpSystem.SegaMegaCDSegaCD,
- RedumpSystem.SegaSaturn,
- RedumpSystem.SNKNeoGeoCD,
- RedumpSystem.SonyPlayStation,
- RedumpSystem.SonyPlayStation2,
- RedumpSystem.SonyPlayStation3,
- RedumpSystem.SonyPlayStation4,
- RedumpSystem.SonyPlayStation5,
- RedumpSystem.SonyPlayStationPortable,
- RedumpSystem.VMLabsNUON,
- RedumpSystem.VTechVFlashVSmilePro,
- RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem,
-
- // Computers
- RedumpSystem.AcornArchimedes,
- RedumpSystem.CommodoreAmigaCD,
- RedumpSystem.FujitsuFMTownsseries,
- RedumpSystem.IBMPCcompatible,
- RedumpSystem.NECPC88series,
- RedumpSystem.NECPC98series,
- RedumpSystem.SharpX68000,
-
- // Arcade
- RedumpSystem.AmigaCUBOCD32,
- RedumpSystem.Atronic,
- RedumpSystem.AUSCOMSystem1,
- RedumpSystem.BallyGameMagic,
- RedumpSystem.CapcomCPSystemIII,
- RedumpSystem.funworldPhotoPlay,
- RedumpSystem.FuRyuOmronPurikura,
- RedumpSystem.GlobalVRVarious,
- RedumpSystem.GlobalVRVortek,
- RedumpSystem.GlobalVRVortekV3,
- RedumpSystem.ICEPCHardware,
- RedumpSystem.IncredibleTechnologiesEagle,
- RedumpSystem.IncredibleTechnologiesVarious,
- RedumpSystem.JVLiTouch,
- RedumpSystem.KonamieAmusement,
- RedumpSystem.KonamiFireBeat,
- RedumpSystem.KonamiM2,
- RedumpSystem.KonamiPython,
- RedumpSystem.KonamiPython2,
- RedumpSystem.KonamiSystem573,
- RedumpSystem.KonamiSystemGV,
- RedumpSystem.KonamiTwinkle,
- RedumpSystem.KonamiVarious,
- RedumpSystem.MeritIndustriesBoardwalk,
- RedumpSystem.MeritIndustriesMegaTouchForce,
- RedumpSystem.MeritIndustriesMegaTouchION,
- RedumpSystem.MeritIndustriesMegaTouchMaxx,
- RedumpSystem.MeritIndustriesMegaTouchXL,
- RedumpSystem.NamcoPurikura,
- RedumpSystem.NamcoSegaNintendoTriforce,
- RedumpSystem.NamcoSystem12,
- RedumpSystem.NamcoSystem246256,
- RedumpSystem.NichibutsuHighRateSystem,
- RedumpSystem.NichibutsuSuperCD,
- RedumpSystem.NichibutsuXRateSystem,
- RedumpSystem.PhotoPlayVarious,
- RedumpSystem.RawThrillsVarious,
- RedumpSystem.SegaALLS,
- RedumpSystem.SegaChihiro,
- RedumpSystem.SegaEuropaR,
- RedumpSystem.SegaLindbergh,
- RedumpSystem.SegaNaomi,
- RedumpSystem.SegaNaomi2,
- RedumpSystem.SegaNaomiSatelliteTerminalPC,
- RedumpSystem.SegaNu,
- RedumpSystem.SegaNu11,
- RedumpSystem.SegaNu2,
- RedumpSystem.SegaNuSX,
- RedumpSystem.SegaRingEdge,
- RedumpSystem.SegaRingEdge2,
- RedumpSystem.SegaRingWide,
- RedumpSystem.SegaSystem32,
- RedumpSystem.SegaTitanVideo,
- RedumpSystem.SeibuCATSSystem,
- RedumpSystem.TABAustriaQuizard,
- RedumpSystem.TsunamiTsuMoMultiGameMotionSystem,
- RedumpSystem.UltraCade,
-
- // Other
- RedumpSystem.AudioCD,
- RedumpSystem.BDVideo,
- RedumpSystem.DVDAudio,
- RedumpSystem.DVDVideo,
- RedumpSystem.EnhancedCD,
- RedumpSystem.HDDVDVideo,
- RedumpSystem.NavisoftNaviken21,
- RedumpSystem.PalmOS,
- RedumpSystem.PhotoCD,
- RedumpSystem.PocketPC,
- RedumpSystem.Psion,
- RedumpSystem.RainbowDisc,
- RedumpSystem.SharpZaurus,
- RedumpSystem.SegaPrologue21MultimediaKaraokeSystem,
- RedumpSystem.SonyElectronicBook,
- RedumpSystem.TaoiKTV,
- RedumpSystem.TomyKissSite,
- RedumpSystem.VideoCD,
- ];
-
- ///
- /// RedumpSystem values that are considered XGD
- ///
- private static readonly RedumpSystem?[] _xgdSystems =
- [
- RedumpSystem.MicrosoftXbox,
- RedumpSystem.MicrosoftXbox360,
- RedumpSystem.MicrosoftXboxOne,
- RedumpSystem.MicrosoftXboxSeriesXS,
- ];
-
- ///
- /// Check that all systems detected by Windows are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateWindowsDetectedSystemsTestData))]
- public void RedumpSystem_DetectedByWindows(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.DetectedByWindows();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all systems with reversed ringcodes are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateReversedRingcodeSystemsTestData))]
- public void RedumpSystem_HasReversedRingcodes(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.HasReversedRingcodes();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all audio systems are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateAudioSystemsTestData))]
- public void RedumpSystem_IsAudio(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.IsAudio();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all marker systems are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateMarkerSystemsTestData))]
- public void RedumpSystem_IsMarker(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.IsMarker();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all XGD systems are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateXGDSystemsTestData))]
- public void RedumpSystem_IsXGD(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.IsXGD();
- Assert.Equal(expected, actual);
- }
-
- [Fact]
- public void RedumpSystem_ListRedumpSystem()
- {
- var actual = RedumpLib.RedumpInfo.Data.Extensions.ListSystems();
- Assert.NotEmpty(actual);
- }
-
- ///
- /// Check that every RedumpSystem has a long name provided
- ///
- /// RedumpSystem value to check
- /// True to expect a null value, false otherwise
- [Theory]
- [MemberData(nameof(GenerateRedumpSystemTestData))]
- public void RedumpSystem_LongName(RedumpSystem? redumpSystem, bool expectNull)
- {
- var actual = redumpSystem.LongName();
-
- if (expectNull)
- Assert.Null(actual);
- else
- Assert.NotNull(actual);
- }
-
- // TODO: Re-enable the following test once non-Redump systems are accounted for
-
- ///
- /// Check that every RedumpSystem has a short name provided
- ///
- /// RedumpSystem value to check
- /// True to expect a null value, false otherwise
- // [Theory]
- // [MemberData(nameof(GenerateRedumpSystemTestData))]
- // public void RedumpSystem_ShortName(RedumpSystem? redumpSystem, bool expectNull)
- // {
- // string? actual = redumpSystem.ShortName();
-
- // if (expectNull)
- // Assert.Null(actual);
- // else
- // Assert.NotNull(actual);
- // }
-
- ///
- /// Check that all systems are mapped to a category
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateCategoriesSystemTestData))]
- public void RedumpSystem_GetCategory(RedumpSystem? redumpSystem, SystemCategory expected)
- {
- SystemCategory actual = redumpSystem.GetCategory();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all available systems are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateAvailableSystemsTestData))]
- public void RedumpSystem_IsAvailable(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.IsAvailable();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all banned systems are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateBannedSystemsTestData))]
- public void RedumpSystem_IsBanned(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.IsBanned();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all systems with cuesheets are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateCuesheetSystemsTestData))]
- public void RedumpSystem_HasCues(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.HasCues();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all systems with DATs are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateDatSystemsTestData))]
- public void RedumpSystem_HasDat(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.HasDat();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all systems with keys are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateKeySystemsTestData))]
- public void RedumpSystem_HasKeys(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.HasKeys();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all systems with SBIs are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateSbiSystemsTestData))]
- public void RedumpSystem_HasSbi(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.HasSbi();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that every RedumpSystem can be mapped from a string
- ///
- /// RedumpSystem value to check
- /// True to expect a null value, false otherwise
- [Theory]
- [MemberData(nameof(GenerateRedumpSystemTestData))]
- public void RedumpSystem_ToRedumpSystem(RedumpSystem? redumpSystem, bool expectNull)
- {
- string? longName = redumpSystem.LongName();
- string? longNameSpaceless = longName?.Replace(" ", string.Empty);
-
- var actualNormal = longName.ToRedumpSystem();
- var actualSpaceless = longNameSpaceless.ToRedumpSystem();
-
- if (expectNull)
- {
- Assert.Null(actualNormal);
- Assert.Null(actualSpaceless);
- }
- else
- {
- Assert.Equal(redumpSystem, actualNormal);
- Assert.Equal(redumpSystem, actualSpaceless);
- }
- }
-
- ///
- /// Generate a test set of RedumpSystem values
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateRedumpSystemTestData()
- {
- var testData = new TheoryData() { { null, true } };
- foreach (RedumpSystem? redumpSystem in Enum.GetValues().Cast())
- {
- // We want to skip all markers for this
- if (redumpSystem.IsMarker())
- continue;
-
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that are considered Audio
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateAudioSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_audioSystems.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that are available
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateAvailableSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_availableSystems.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that are banned
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateBannedSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_bannedSystems.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values mapped to their categories
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateCategoriesSystemTestData()
- {
- var testData = new TheoryData() { { null, SystemCategory.NONE } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- testData.Add(redumpSystem, _systemCategoryMap[redumpSystem]);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that have cuesheets
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateCuesheetSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_systemsWithCues.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that have DATs
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateDatSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_systemsWithDats.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that have decrypted keys
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateDKeySystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_systemsWithDKeys.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that have GDIs
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateGdiSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_systemsWithGdis.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that have keys
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateKeySystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_systemsWithKeys.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that have LSDs
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateLsdSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_systemsWithLsds.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that are considered markers
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateMarkerSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_markerSystems.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that are considered markers
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateReversedRingcodeSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_reverseRingcodeSystems.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that have SBIs
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateSbiSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_systemsWithSbis.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that are detected by Windows
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateWindowsDetectedSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_windowsDetectedSystems.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that are considered XGD
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateXGDSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_xgdSystems.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- #endregion
-
#region System Category
///
diff --git a/SabreTools.RedumpLib.Test/RedumpInfo/UrlBuilderTests.cs b/SabreTools.RedumpLib.Test/RedumpInfo/UrlBuilderTests.cs
index a696ccc..8d60070 100644
--- a/SabreTools.RedumpLib.Test/RedumpInfo/UrlBuilderTests.cs
+++ b/SabreTools.RedumpLib.Test/RedumpInfo/UrlBuilderTests.cs
@@ -1,4 +1,5 @@
using System;
+using SabreTools.RedumpLib.Data;
using SabreTools.RedumpLib.RedumpInfo;
using SabreTools.RedumpLib.RedumpInfo.Data;
using Xunit;
@@ -89,20 +90,20 @@ namespace SabreTools.RedumpLib.Test.RedumpInfo
[InlineData(PackType.Sbis, "https://redump.info/sbi/ARCH/")]
public void BuildPackUrl_ValidPackType_ValidSystem_Builds(PackType packType, string expected)
{
- string actual = UrlBuilder.BuildPackUrl(packType, RedumpSystem.AcornArchimedes);
+ string actual = UrlBuilder.BuildPackUrl(packType, PhysicalSystem.AcornArchimedes);
Assert.Equal(expected, actual);
}
[Fact]
public void BuildPackUrl_InvalidPackType_Throws()
{
- Assert.Throws(() => UrlBuilder.BuildPackUrl((PackType)int.MaxValue, RedumpSystem.AcornArchimedes));
+ Assert.Throws(() => UrlBuilder.BuildPackUrl((PackType)int.MaxValue, PhysicalSystem.AcornArchimedes));
}
[Fact]
public void BuildPackUrl_InvalidSystem_Builds()
{
- string actual = UrlBuilder.BuildPackUrl(PackType.Datfile, RedumpSystem.MarkerOtherEnd);
+ string actual = UrlBuilder.BuildPackUrl(PackType.Datfile, PhysicalSystem.MarkerOtherEnd);
Assert.Equal("https://redump.info/datfile//", actual);
}
diff --git a/SabreTools.RedumpLib.Test/RedumpOrg/ExtensionsTests.cs b/SabreTools.RedumpLib.Test/RedumpOrg/ExtensionsTests.cs
index 99917d1..39615cd 100644
--- a/SabreTools.RedumpLib.Test/RedumpOrg/ExtensionsTests.cs
+++ b/SabreTools.RedumpLib.Test/RedumpOrg/ExtensionsTests.cs
@@ -53,18 +53,6 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
PhysicalMediaType.UMD,
];
- ///
- /// Check that every supported system has some set of MediaTypes supported
- ///
- /// RedumpSystem value to check
- [Theory]
- [MemberData(nameof(GenerateRedumpSystemMappingTestData))]
- public void MediaTypesTest(RedumpSystem? redumpSystem)
- {
- var actual = redumpSystem.MediaTypes();
- Assert.NotEmpty(actual);
- }
-
///
/// Check that both mappable and unmappable media types output correctly
///
@@ -109,21 +97,6 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
return testData;
}
- ///
- /// Generate a test set of RedumpSystem values
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateRedumpSystemMappingTestData()
- {
- var testData = new TheoryData() { null };
- foreach (RedumpSystem? redumpSystem in Enum.GetValues().Cast())
- {
- testData.Add(redumpSystem);
- }
-
- return testData;
- }
-
///
/// Generate a test set of mappable media types
///
@@ -1193,1243 +1166,6 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
#endregion
- #region System
-
- ///
- /// RedumpSystem values that are considered Audio
- ///
- private static readonly RedumpSystem?[] _audioSystems =
- [
- RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem,
- RedumpSystem.AudioCD,
- RedumpSystem.DVDAudio,
- RedumpSystem.HasbroiONEducationalGamingSystem,
- RedumpSystem.HasbroVideoNow,
- RedumpSystem.HasbroVideoNowColor,
- RedumpSystem.HasbroVideoNowJr,
- RedumpSystem.HasbroVideoNowXP,
- RedumpSystem.PlayStationGameSharkUpdates,
- RedumpSystem.PhilipsCDi,
- RedumpSystem.SuperAudioCD,
- ];
-
- ///
- /// RedumpSystem values that are available
- ///
- private static readonly RedumpSystem?[] _availableSystems =
- [
- // BIOS Sets
- RedumpSystem.MicrosoftXboxBIOS,
- RedumpSystem.NintendoGameCubeBIOS,
- RedumpSystem.SonyPlayStationBIOS,
- RedumpSystem.SonyPlayStation2BIOS,
-
- // Disc-Based Consoles
- RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem,
- RedumpSystem.BandaiPlaydiaQuickInteractiveSystem,
- RedumpSystem.BandaiPippin,
- RedumpSystem.CommodoreAmigaCD32,
- RedumpSystem.CommodoreAmigaCDTV,
- RedumpSystem.HasbroVideoNow,
- RedumpSystem.HasbroVideoNowColor,
- RedumpSystem.HasbroVideoNowJr,
- RedumpSystem.HasbroVideoNowXP,
- RedumpSystem.MattelFisherPriceiXL,
- RedumpSystem.MattelHyperScan,
- RedumpSystem.MemorexVisualInformationSystem,
- RedumpSystem.MicrosoftXbox,
- RedumpSystem.MicrosoftXbox360,
- RedumpSystem.MicrosoftXboxOne,
- RedumpSystem.MicrosoftXboxSeriesXS,
- RedumpSystem.NECPCEngineCDTurboGrafxCD,
- RedumpSystem.NECPCFXPCFXGA,
- RedumpSystem.NintendoGameCube,
- RedumpSystem.NintendoWii,
- RedumpSystem.NintendoWiiU,
- RedumpSystem.Panasonic3DOInteractiveMultiplayer,
- RedumpSystem.PhilipsCDi,
- RedumpSystem.SegaDreamcast,
- RedumpSystem.SegaMegaCDSegaCD,
- RedumpSystem.SegaSaturn,
- RedumpSystem.SNKNeoGeoCD,
- RedumpSystem.SonyPlayStation,
- RedumpSystem.SonyPlayStation2,
- RedumpSystem.SonyPlayStation3,
- RedumpSystem.SonyPlayStation4,
- RedumpSystem.SonyPlayStation5,
- RedumpSystem.SonyPlayStationPortable,
- RedumpSystem.VMLabsNUON,
- RedumpSystem.VTechVFlashVSmilePro,
- RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem,
-
- // Computers
- RedumpSystem.AcornArchimedes,
- RedumpSystem.AppleMacintosh,
- RedumpSystem.CommodoreAmigaCD,
- RedumpSystem.FujitsuFMTownsseries,
- RedumpSystem.IBMPCcompatible,
- RedumpSystem.NECPC88series,
- RedumpSystem.NECPC98series,
- RedumpSystem.SharpX68000,
-
- // Arcade
- RedumpSystem.funworldPhotoPlay,
- RedumpSystem.IncredibleTechnologiesEagle,
- RedumpSystem.KonamieAmusement,
- RedumpSystem.KonamiFireBeat,
- RedumpSystem.KonamiM2,
- RedumpSystem.KonamiSystem573,
- RedumpSystem.KonamiSystemGV,
- RedumpSystem.KonamiTwinkle,
- RedumpSystem.NamcoSegaNintendoTriforce,
- RedumpSystem.NamcoSystem12,
- RedumpSystem.NamcoSystem246256,
- RedumpSystem.PanasonicM2,
- RedumpSystem.SegaChihiro,
- RedumpSystem.SegaLindbergh,
- RedumpSystem.SegaNaomi,
- RedumpSystem.SegaNaomi2,
- RedumpSystem.SegaRingEdge,
- RedumpSystem.SegaRingEdge2,
- RedumpSystem.SegaTitanVideo,
- RedumpSystem.TABAustriaQuizard,
-
- // Other
- RedumpSystem.AudioCD,
- RedumpSystem.BDVideo,
- RedumpSystem.DVDVideo,
- RedumpSystem.EnhancedCD,
- RedumpSystem.HDDVDVideo,
- RedumpSystem.NavisoftNaviken21,
- RedumpSystem.PalmOS,
- RedumpSystem.PhotoCD,
- RedumpSystem.PlayStationGameSharkUpdates,
- RedumpSystem.PocketPC,
- RedumpSystem.SegaPrologue21MultimediaKaraokeSystem,
- RedumpSystem.TaoiKTV,
- RedumpSystem.TomyKissSite,
- RedumpSystem.VideoCD,
- ];
-
- ///
- /// RedumpSystem values that are dumper-only
- ///
- private static readonly RedumpSystem?[] _bannedSystems =
- [
- // Disc-Based Consoles
- RedumpSystem.HasbroVideoNow,
- RedumpSystem.HasbroVideoNowColor,
- RedumpSystem.HasbroVideoNowJr,
- RedumpSystem.HasbroVideoNowXP,
- RedumpSystem.MicrosoftXboxOne,
- RedumpSystem.MicrosoftXboxSeriesXS,
- RedumpSystem.NintendoWiiU,
- RedumpSystem.SonyPlayStation4,
- RedumpSystem.SonyPlayStation5,
-
- // Arcade
- RedumpSystem.KonamiM2,
- RedumpSystem.PanasonicM2,
-
- // Other
- RedumpSystem.AudioCD,
- RedumpSystem.BDVideo,
- RedumpSystem.DVDVideo,
- RedumpSystem.EnhancedCD,
- RedumpSystem.HDDVDVideo,
- RedumpSystem.NavisoftNaviken21,
- RedumpSystem.VideoCD,
- ];
-
- ///
- /// RedumpSystem values that are considered markers
- ///
- private static readonly RedumpSystem?[] _markerSystems =
- [
- RedumpSystem.MarkerArcadeEnd,
- RedumpSystem.MarkerComputerEnd,
- RedumpSystem.MarkerDiscBasedConsoleEnd,
- RedumpSystem.MarkerOtherEnd,
- ];
-
- ///
- /// RedumpSystem values that are have reversed ringcodes
- ///
- private static readonly RedumpSystem?[] _reverseRingcodeSystems =
- [
- RedumpSystem.SonyPlayStation2,
- RedumpSystem.SonyPlayStation3,
- RedumpSystem.SonyPlayStation4,
- RedumpSystem.SonyPlayStation5,
- RedumpSystem.SonyPlayStationPortable,
- ];
-
- ///
- /// Map of RedumpSystem values to their corresponding categories
- ///
- private static readonly Dictionary _systemCategoryMap = new()
- {
- // BIOS
- [RedumpSystem.MicrosoftXboxBIOS] = SystemCategory.NONE,
- [RedumpSystem.NintendoGameCubeBIOS] = SystemCategory.NONE,
- [RedumpSystem.SonyPlayStationBIOS] = SystemCategory.NONE,
- [RedumpSystem.SonyPlayStation2BIOS] = SystemCategory.NONE,
-
- // Disc-Based Consoles
- [RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.BandaiPlaydiaQuickInteractiveSystem] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.BandaiPippin] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.CommodoreAmigaCD32] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.CommodoreAmigaCDTV] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.EnvizionsEVOSmartConsole] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.FujitsuFMTownsMarty] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.HasbroiONEducationalGamingSystem] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.HasbroVideoNow] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.HasbroVideoNowColor] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.HasbroVideoNowJr] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.HasbroVideoNowXP] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MattelFisherPriceiXL] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MattelHyperScan] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MemorexVisualInformationSystem] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MicrosoftXbox] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MicrosoftXbox360] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MicrosoftXboxOne] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MicrosoftXboxSeriesXS] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.NECPCEngineCDTurboGrafxCD] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.NECPCFXPCFXGA] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.NintendoGameCube] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.NintendoSonySuperNESCDROMSystem] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.NintendoWii] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.NintendoWiiU] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.Panasonic3DOInteractiveMultiplayer] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.PhilipsCDi] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.PlaymajiPolymega] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.PioneerLaserActive] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SegaDreamcast] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SegaMegaCDSegaCD] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SegaSaturn] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SNKNeoGeoCD] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SonyPlayStation] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SonyPlayStation2] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SonyPlayStation3] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SonyPlayStation4] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SonyPlayStation5] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.SonyPlayStationPortable] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.VMLabsNUON] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.VTechVFlashVSmilePro] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem] = SystemCategory.DiscBasedConsole,
- [RedumpSystem.MarkerDiscBasedConsoleEnd] = SystemCategory.NONE,
-
- // Computers
- [RedumpSystem.AcornArchimedes] = SystemCategory.Computer,
- [RedumpSystem.AppleMacintosh] = SystemCategory.Computer,
- [RedumpSystem.CommodoreAmigaCD] = SystemCategory.Computer,
- [RedumpSystem.FujitsuFMTownsseries] = SystemCategory.Computer,
- [RedumpSystem.IBMPCcompatible] = SystemCategory.Computer,
- [RedumpSystem.NECPC88series] = SystemCategory.Computer,
- [RedumpSystem.NECPC98series] = SystemCategory.Computer,
- [RedumpSystem.SharpX68000] = SystemCategory.Computer,
- [RedumpSystem.MarkerComputerEnd] = SystemCategory.NONE,
-
- // Arcade
- [RedumpSystem.AmigaCUBOCD32] = SystemCategory.Arcade,
- [RedumpSystem.AmericanLaserGames3DO] = SystemCategory.Arcade,
- [RedumpSystem.Atari3DO] = SystemCategory.Arcade,
- [RedumpSystem.Atronic] = SystemCategory.Arcade,
- [RedumpSystem.AUSCOMSystem1] = SystemCategory.Arcade,
- [RedumpSystem.BallyGameMagic] = SystemCategory.Arcade,
- [RedumpSystem.CapcomCPSystemIII] = SystemCategory.Arcade,
- [RedumpSystem.funworldPhotoPlay] = SystemCategory.Arcade,
- [RedumpSystem.FuRyuOmronPurikura] = SystemCategory.Arcade,
- [RedumpSystem.GlobalVRVarious] = SystemCategory.Arcade,
- [RedumpSystem.GlobalVRVortek] = SystemCategory.Arcade,
- [RedumpSystem.GlobalVRVortekV3] = SystemCategory.Arcade,
- [RedumpSystem.ICEPCHardware] = SystemCategory.Arcade,
- [RedumpSystem.IncredibleTechnologiesEagle] = SystemCategory.Arcade,
- [RedumpSystem.IncredibleTechnologiesVarious] = SystemCategory.Arcade,
- [RedumpSystem.JVLiTouch] = SystemCategory.Arcade,
- [RedumpSystem.KonamieAmusement] = SystemCategory.Arcade,
- [RedumpSystem.KonamiFireBeat] = SystemCategory.Arcade,
- [RedumpSystem.KonamiM2] = SystemCategory.Arcade,
- [RedumpSystem.KonamiPython] = SystemCategory.Arcade,
- [RedumpSystem.KonamiPython2] = SystemCategory.Arcade,
- [RedumpSystem.KonamiSystem573] = SystemCategory.Arcade,
- [RedumpSystem.KonamiSystemGV] = SystemCategory.Arcade,
- [RedumpSystem.KonamiTwinkle] = SystemCategory.Arcade,
- [RedumpSystem.KonamiVarious] = SystemCategory.Arcade,
- [RedumpSystem.MeritIndustriesBoardwalk] = SystemCategory.Arcade,
- [RedumpSystem.MeritIndustriesMegaTouchForce] = SystemCategory.Arcade,
- [RedumpSystem.MeritIndustriesMegaTouchION] = SystemCategory.Arcade,
- [RedumpSystem.MeritIndustriesMegaTouchMaxx] = SystemCategory.Arcade,
- [RedumpSystem.MeritIndustriesMegaTouchXL] = SystemCategory.Arcade,
- [RedumpSystem.NamcoPurikura] = SystemCategory.Arcade,
- [RedumpSystem.NamcoSegaNintendoTriforce] = SystemCategory.Arcade,
- [RedumpSystem.NamcoSystem12] = SystemCategory.Arcade,
- [RedumpSystem.NamcoSystem246256] = SystemCategory.Arcade,
- [RedumpSystem.NewJatreCDi] = SystemCategory.Arcade,
- [RedumpSystem.NichibutsuHighRateSystem] = SystemCategory.Arcade,
- [RedumpSystem.NichibutsuSuperCD] = SystemCategory.Arcade,
- [RedumpSystem.NichibutsuXRateSystem] = SystemCategory.Arcade,
- [RedumpSystem.PanasonicM2] = SystemCategory.Arcade,
- [RedumpSystem.PhotoPlayVarious] = SystemCategory.Arcade,
- [RedumpSystem.RawThrillsVarious] = SystemCategory.Arcade,
- [RedumpSystem.SegaALLS] = SystemCategory.Arcade,
- [RedumpSystem.SegaChihiro] = SystemCategory.Arcade,
- [RedumpSystem.SegaEuropaR] = SystemCategory.Arcade,
- [RedumpSystem.SegaLindbergh] = SystemCategory.Arcade,
- [RedumpSystem.SegaNaomi] = SystemCategory.Arcade,
- [RedumpSystem.SegaNaomi2] = SystemCategory.Arcade,
- [RedumpSystem.SegaNaomiSatelliteTerminalPC] = SystemCategory.Arcade,
- [RedumpSystem.SegaNu] = SystemCategory.Arcade,
- [RedumpSystem.SegaNu11] = SystemCategory.Arcade,
- [RedumpSystem.SegaNu2] = SystemCategory.Arcade,
- [RedumpSystem.SegaNuSX] = SystemCategory.Arcade,
- [RedumpSystem.SegaRingEdge] = SystemCategory.Arcade,
- [RedumpSystem.SegaRingEdge2] = SystemCategory.Arcade,
- [RedumpSystem.SegaRingWide] = SystemCategory.Arcade,
- [RedumpSystem.SegaSystem32] = SystemCategory.Arcade,
- [RedumpSystem.SegaTitanVideo] = SystemCategory.Arcade,
- [RedumpSystem.SeibuCATSSystem] = SystemCategory.Arcade,
- [RedumpSystem.TABAustriaQuizard] = SystemCategory.Arcade,
- [RedumpSystem.TsunamiTsuMoMultiGameMotionSystem] = SystemCategory.Arcade,
- [RedumpSystem.UltraCade] = SystemCategory.Arcade,
- [RedumpSystem.MarkerArcadeEnd] = SystemCategory.NONE,
-
- // Other
- [RedumpSystem.AudioCD] = SystemCategory.Other,
- [RedumpSystem.BDVideo] = SystemCategory.Other,
- [RedumpSystem.DVDAudio] = SystemCategory.Other,
- [RedumpSystem.DVDVideo] = SystemCategory.Other,
- [RedumpSystem.EnhancedCD] = SystemCategory.Other,
- [RedumpSystem.HDDVDVideo] = SystemCategory.Other,
- [RedumpSystem.NavisoftNaviken21] = SystemCategory.Other,
- [RedumpSystem.PalmOS] = SystemCategory.Other,
- [RedumpSystem.PhotoCD] = SystemCategory.Other,
- [RedumpSystem.PlayStationGameSharkUpdates] = SystemCategory.Other,
- [RedumpSystem.PocketPC] = SystemCategory.Other,
- [RedumpSystem.Psion] = SystemCategory.Other,
- [RedumpSystem.RainbowDisc] = SystemCategory.Other,
- [RedumpSystem.SegaPrologue21MultimediaKaraokeSystem] = SystemCategory.Other,
- [RedumpSystem.SharpZaurus] = SystemCategory.Other,
- [RedumpSystem.SonyElectronicBook] = SystemCategory.Other,
- [RedumpSystem.SuperAudioCD] = SystemCategory.Other,
- [RedumpSystem.TaoiKTV] = SystemCategory.Other,
- [RedumpSystem.TomyKissSite] = SystemCategory.Other,
- [RedumpSystem.VideoCD] = SystemCategory.Other,
- [RedumpSystem.MarkerOtherEnd] = SystemCategory.NONE,
- };
-
- ///
- /// RedumpSystem values that have cuesheet packs
- ///
- private static readonly RedumpSystem?[] _systemsWithCues =
- [
- // Disc-Based Consoles
- RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem,
- RedumpSystem.BandaiPlaydiaQuickInteractiveSystem,
- RedumpSystem.BandaiPippin,
- RedumpSystem.CommodoreAmigaCD32,
- RedumpSystem.CommodoreAmigaCDTV,
- RedumpSystem.HasbroVideoNow,
- RedumpSystem.HasbroVideoNowColor,
- RedumpSystem.HasbroVideoNowJr,
- RedumpSystem.HasbroVideoNowXP,
- RedumpSystem.MattelFisherPriceiXL,
- RedumpSystem.MattelHyperScan,
- RedumpSystem.MemorexVisualInformationSystem,
- RedumpSystem.MicrosoftXbox,
- RedumpSystem.MicrosoftXbox360,
- RedumpSystem.NECPCEngineCDTurboGrafxCD,
- RedumpSystem.NECPCFXPCFXGA,
- RedumpSystem.Panasonic3DOInteractiveMultiplayer,
- RedumpSystem.PhilipsCDi,
- RedumpSystem.SegaDreamcast,
- RedumpSystem.SegaMegaCDSegaCD,
- RedumpSystem.SegaSaturn,
- RedumpSystem.SNKNeoGeoCD,
- RedumpSystem.SonyPlayStation,
- RedumpSystem.SonyPlayStation2,
- RedumpSystem.SonyPlayStation3,
- RedumpSystem.VTechVFlashVSmilePro,
-
- // Computers
- RedumpSystem.AcornArchimedes,
- RedumpSystem.AppleMacintosh,
- RedumpSystem.CommodoreAmigaCD,
- RedumpSystem.FujitsuFMTownsseries,
- RedumpSystem.IBMPCcompatible,
- RedumpSystem.NECPC88series,
- RedumpSystem.NECPC98series,
- RedumpSystem.SharpX68000,
-
- // Arcade
- RedumpSystem.funworldPhotoPlay,
- RedumpSystem.IncredibleTechnologiesEagle,
- RedumpSystem.KonamieAmusement,
- RedumpSystem.KonamiFireBeat,
- RedumpSystem.KonamiM2,
- RedumpSystem.KonamiSystem573,
- RedumpSystem.KonamiSystemGV,
- RedumpSystem.NamcoSegaNintendoTriforce,
- RedumpSystem.NamcoSystem246256,
- RedumpSystem.PanasonicM2,
- RedumpSystem.SegaChihiro,
- RedumpSystem.SegaNaomi,
- RedumpSystem.SegaNaomi2,
- RedumpSystem.TABAustriaQuizard,
-
- // Other
- RedumpSystem.AudioCD,
- RedumpSystem.NavisoftNaviken21,
- RedumpSystem.PalmOS,
- RedumpSystem.PhotoCD,
- RedumpSystem.PlayStationGameSharkUpdates,
- RedumpSystem.PocketPC,
- RedumpSystem.SegaPrologue21MultimediaKaraokeSystem,
- RedumpSystem.TomyKissSite,
- RedumpSystem.VideoCD,
- ];
-
- ///
- /// RedumpSystem values that have dats
- ///
- private static readonly RedumpSystem?[] _systemsWithDats =
- [
- // BIOS Sets
- RedumpSystem.MicrosoftXboxBIOS,
- RedumpSystem.NintendoGameCubeBIOS,
- RedumpSystem.SonyPlayStationBIOS,
- RedumpSystem.SonyPlayStation2BIOS,
-
- // Disc-Based Consoles
- RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem,
- RedumpSystem.BandaiPlaydiaQuickInteractiveSystem,
- RedumpSystem.BandaiPippin,
- RedumpSystem.CommodoreAmigaCD32,
- RedumpSystem.CommodoreAmigaCDTV,
- RedumpSystem.HasbroVideoNow,
- RedumpSystem.HasbroVideoNowColor,
- RedumpSystem.HasbroVideoNowJr,
- RedumpSystem.HasbroVideoNowXP,
- RedumpSystem.MattelFisherPriceiXL,
- RedumpSystem.MattelHyperScan,
- RedumpSystem.MemorexVisualInformationSystem,
- RedumpSystem.MicrosoftXbox,
- RedumpSystem.MicrosoftXbox360,
- RedumpSystem.MicrosoftXboxOne,
- RedumpSystem.MicrosoftXboxSeriesXS,
- RedumpSystem.NECPCEngineCDTurboGrafxCD,
- RedumpSystem.NECPCFXPCFXGA,
- RedumpSystem.NintendoGameCube,
- RedumpSystem.NintendoWii,
- RedumpSystem.NintendoWiiU,
- RedumpSystem.Panasonic3DOInteractiveMultiplayer,
- RedumpSystem.PhilipsCDi,
- RedumpSystem.SegaDreamcast,
- RedumpSystem.SegaMegaCDSegaCD,
- RedumpSystem.SegaSaturn,
- RedumpSystem.SNKNeoGeoCD,
- RedumpSystem.SonyPlayStation,
- RedumpSystem.SonyPlayStation2,
- RedumpSystem.SonyPlayStation3,
- RedumpSystem.SonyPlayStation4,
- RedumpSystem.SonyPlayStation5,
- RedumpSystem.SonyPlayStationPortable,
- RedumpSystem.VMLabsNUON,
- RedumpSystem.VTechVFlashVSmilePro,
- RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem,
-
- // Computers
- RedumpSystem.AcornArchimedes,
- RedumpSystem.AppleMacintosh,
- RedumpSystem.CommodoreAmigaCD,
- RedumpSystem.FujitsuFMTownsseries,
- RedumpSystem.IBMPCcompatible,
- RedumpSystem.NECPC88series,
- RedumpSystem.NECPC98series,
- RedumpSystem.SharpX68000,
-
- // Arcade
- RedumpSystem.funworldPhotoPlay,
- RedumpSystem.IncredibleTechnologiesEagle,
- RedumpSystem.KonamieAmusement,
- RedumpSystem.KonamiFireBeat,
- RedumpSystem.KonamiM2,
- RedumpSystem.KonamiSystem573,
- RedumpSystem.KonamiSystemGV,
- RedumpSystem.NamcoSegaNintendoTriforce,
- RedumpSystem.NamcoSystem246256,
- RedumpSystem.PanasonicM2,
- RedumpSystem.SegaChihiro,
- RedumpSystem.SegaLindbergh,
- RedumpSystem.SegaNaomi,
- RedumpSystem.SegaNaomi2,
- RedumpSystem.SegaRingEdge,
- RedumpSystem.SegaRingEdge2,
- RedumpSystem.TABAustriaQuizard,
-
- // Other
- RedumpSystem.AudioCD,
- RedumpSystem.BDVideo,
- RedumpSystem.DVDVideo,
- RedumpSystem.HDDVDVideo,
- RedumpSystem.NavisoftNaviken21,
- RedumpSystem.PalmOS,
- RedumpSystem.PhotoCD,
- RedumpSystem.PlayStationGameSharkUpdates,
- RedumpSystem.PocketPC,
- RedumpSystem.SegaPrologue21MultimediaKaraokeSystem,
- RedumpSystem.TomyKissSite,
- RedumpSystem.VideoCD,
- ];
-
- ///
- /// RedumpSystem values that have decrypted keys
- ///
- private static readonly RedumpSystem?[] _systemsWithDKeys =
- [
- RedumpSystem.SonyPlayStation3,
- ];
-
- ///
- /// RedumpSystem values that have GDI packs
- ///
- private static readonly RedumpSystem?[] _systemsWithGdis =
- [
- // Disc-Based Consoles
- RedumpSystem.SegaDreamcast,
-
- // Arcade
- RedumpSystem.NamcoSegaNintendoTriforce,
- RedumpSystem.SegaChihiro,
- RedumpSystem.SegaNaomi,
- RedumpSystem.SegaNaomi2,
- ];
-
- ///
- /// RedumpSystem values that have keys
- ///
- private static readonly RedumpSystem?[] _systemsWithKeys =
- [
- RedumpSystem.NintendoWiiU,
- RedumpSystem.SonyPlayStation3,
- ];
-
- ///
- /// RedumpSystem values that have LSD packs
- ///
- private static readonly RedumpSystem?[] _systemsWithLsds =
- [
- // Disc-Based Consoles
- RedumpSystem.SonyPlayStation,
-
- // Computers
- RedumpSystem.AppleMacintosh,
- RedumpSystem.IBMPCcompatible,
- ];
-
- ///
- /// RedumpSystem values that have SBI packs
- ///
- private static readonly RedumpSystem?[] _systemsWithSbis =
- [
- // Disc-Based Consoles
- RedumpSystem.SonyPlayStation,
-
- // Computers
- RedumpSystem.AppleMacintosh,
- RedumpSystem.IBMPCcompatible,
- ];
-
- ///
- /// RedumpSystem values that are considered detected by Windows
- ///
- private static readonly RedumpSystem?[] _windowsDetectedSystems =
- [
- // Disc-Based Consoles
- RedumpSystem.CommodoreAmigaCD32,
- RedumpSystem.CommodoreAmigaCDTV,
- RedumpSystem.EnvizionsEVOSmartConsole,
- RedumpSystem.FujitsuFMTownsMarty,
- RedumpSystem.HasbroiONEducationalGamingSystem,
- RedumpSystem.MattelFisherPriceiXL,
- RedumpSystem.MattelHyperScan,
- RedumpSystem.MemorexVisualInformationSystem,
- RedumpSystem.MicrosoftXbox,
- RedumpSystem.MicrosoftXbox360,
- RedumpSystem.MicrosoftXboxOne,
- RedumpSystem.MicrosoftXboxSeriesXS,
- RedumpSystem.NECPCEngineCDTurboGrafxCD,
- RedumpSystem.NECPCFXPCFXGA,
- RedumpSystem.NintendoSonySuperNESCDROMSystem,
- RedumpSystem.PlaymajiPolymega,
- RedumpSystem.SegaDreamcast,
- RedumpSystem.SegaMegaCDSegaCD,
- RedumpSystem.SegaSaturn,
- RedumpSystem.SNKNeoGeoCD,
- RedumpSystem.SonyPlayStation,
- RedumpSystem.SonyPlayStation2,
- RedumpSystem.SonyPlayStation3,
- RedumpSystem.SonyPlayStation4,
- RedumpSystem.SonyPlayStation5,
- RedumpSystem.SonyPlayStationPortable,
- RedumpSystem.VMLabsNUON,
- RedumpSystem.VTechVFlashVSmilePro,
- RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem,
-
- // Computers
- RedumpSystem.AcornArchimedes,
- RedumpSystem.CommodoreAmigaCD,
- RedumpSystem.FujitsuFMTownsseries,
- RedumpSystem.IBMPCcompatible,
- RedumpSystem.NECPC88series,
- RedumpSystem.NECPC98series,
- RedumpSystem.SharpX68000,
-
- // Arcade
- RedumpSystem.AmigaCUBOCD32,
- RedumpSystem.Atronic,
- RedumpSystem.AUSCOMSystem1,
- RedumpSystem.BallyGameMagic,
- RedumpSystem.CapcomCPSystemIII,
- RedumpSystem.funworldPhotoPlay,
- RedumpSystem.FuRyuOmronPurikura,
- RedumpSystem.GlobalVRVarious,
- RedumpSystem.GlobalVRVortek,
- RedumpSystem.GlobalVRVortekV3,
- RedumpSystem.ICEPCHardware,
- RedumpSystem.IncredibleTechnologiesEagle,
- RedumpSystem.IncredibleTechnologiesVarious,
- RedumpSystem.JVLiTouch,
- RedumpSystem.KonamieAmusement,
- RedumpSystem.KonamiFireBeat,
- RedumpSystem.KonamiM2,
- RedumpSystem.KonamiPython,
- RedumpSystem.KonamiPython2,
- RedumpSystem.KonamiSystem573,
- RedumpSystem.KonamiSystemGV,
- RedumpSystem.KonamiTwinkle,
- RedumpSystem.KonamiVarious,
- RedumpSystem.MeritIndustriesBoardwalk,
- RedumpSystem.MeritIndustriesMegaTouchForce,
- RedumpSystem.MeritIndustriesMegaTouchION,
- RedumpSystem.MeritIndustriesMegaTouchMaxx,
- RedumpSystem.MeritIndustriesMegaTouchXL,
- RedumpSystem.NamcoPurikura,
- RedumpSystem.NamcoSegaNintendoTriforce,
- RedumpSystem.NamcoSystem12,
- RedumpSystem.NamcoSystem246256,
- RedumpSystem.NichibutsuHighRateSystem,
- RedumpSystem.NichibutsuSuperCD,
- RedumpSystem.NichibutsuXRateSystem,
- RedumpSystem.PhotoPlayVarious,
- RedumpSystem.RawThrillsVarious,
- RedumpSystem.SegaALLS,
- RedumpSystem.SegaChihiro,
- RedumpSystem.SegaEuropaR,
- RedumpSystem.SegaLindbergh,
- RedumpSystem.SegaNaomi,
- RedumpSystem.SegaNaomi2,
- RedumpSystem.SegaNaomiSatelliteTerminalPC,
- RedumpSystem.SegaNu,
- RedumpSystem.SegaNu11,
- RedumpSystem.SegaNu2,
- RedumpSystem.SegaNuSX,
- RedumpSystem.SegaRingEdge,
- RedumpSystem.SegaRingEdge2,
- RedumpSystem.SegaRingWide,
- RedumpSystem.SegaSystem32,
- RedumpSystem.SegaTitanVideo,
- RedumpSystem.SeibuCATSSystem,
- RedumpSystem.TABAustriaQuizard,
- RedumpSystem.TsunamiTsuMoMultiGameMotionSystem,
- RedumpSystem.UltraCade,
-
- // Other
- RedumpSystem.AudioCD,
- RedumpSystem.BDVideo,
- RedumpSystem.DVDAudio,
- RedumpSystem.DVDVideo,
- RedumpSystem.EnhancedCD,
- RedumpSystem.HDDVDVideo,
- RedumpSystem.NavisoftNaviken21,
- RedumpSystem.PalmOS,
- RedumpSystem.PhotoCD,
- RedumpSystem.PocketPC,
- RedumpSystem.Psion,
- RedumpSystem.RainbowDisc,
- RedumpSystem.SharpZaurus,
- RedumpSystem.SegaPrologue21MultimediaKaraokeSystem,
- RedumpSystem.SonyElectronicBook,
- RedumpSystem.TaoiKTV,
- RedumpSystem.TomyKissSite,
- RedumpSystem.VideoCD,
- ];
-
- ///
- /// RedumpSystem values that are considered XGD
- ///
- private static readonly RedumpSystem?[] _xgdSystems =
- [
- RedumpSystem.MicrosoftXbox,
- RedumpSystem.MicrosoftXbox360,
- RedumpSystem.MicrosoftXboxOne,
- RedumpSystem.MicrosoftXboxSeriesXS,
- ];
-
- ///
- /// Check that all systems detected by Windows are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateWindowsDetectedSystemsTestData))]
- public void RedumpSystem_DetectedByWindows(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.DetectedByWindows();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all systems with reversed ringcodes are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateReversedRingcodeSystemsTestData))]
- public void RedumpSystem_HasReversedRingcodes(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.HasReversedRingcodes();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all audio systems are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateAudioSystemsTestData))]
- public void RedumpSystem_IsAudio(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.IsAudio();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all marker systems are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateMarkerSystemsTestData))]
- public void RedumpSystem_IsMarker(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.IsMarker();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all XGD systems are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateXGDSystemsTestData))]
- public void RedumpSystem_IsXGD(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.IsXGD();
- Assert.Equal(expected, actual);
- }
-
- [Fact]
- public void RedumpSystem_ListRedumpSystem()
- {
- var actual = RedumpLib.RedumpOrg.Data.Extensions.ListSystems();
- Assert.NotEmpty(actual);
- }
-
- ///
- /// Check that every RedumpSystem has a long name provided
- ///
- /// RedumpSystem value to check
- /// True to expect a null value, false otherwise
- [Theory]
- [MemberData(nameof(GenerateRedumpSystemTestData))]
- public void RedumpSystem_LongName(RedumpSystem? redumpSystem, bool expectNull)
- {
- var actual = redumpSystem.LongName();
-
- if (expectNull)
- Assert.Null(actual);
- else
- Assert.NotNull(actual);
- }
-
- // TODO: Re-enable the following test once non-Redump systems are accounted for
-
- ///
- /// Check that every RedumpSystem has a short name provided
- ///
- /// RedumpSystem value to check
- /// True to expect a null value, false otherwise
- // [Theory]
- // [MemberData(nameof(GenerateRedumpSystemTestData))]
- // public void RedumpSystem_ShortName(RedumpSystem? redumpSystem, bool expectNull)
- // {
- // string? actual = redumpSystem.ShortName();
-
- // if (expectNull)
- // Assert.Null(actual);
- // else
- // Assert.NotNull(actual);
- // }
-
- ///
- /// Check that all systems are mapped to a category
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateCategoriesSystemTestData))]
- public void RedumpSystem_GetCategory(RedumpSystem? redumpSystem, SystemCategory expected)
- {
- SystemCategory actual = redumpSystem.GetCategory();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all available systems are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateAvailableSystemsTestData))]
- public void RedumpSystem_IsAvailable(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.IsAvailable();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all banned systems are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateBannedSystemsTestData))]
- public void RedumpSystem_IsBanned(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.IsBanned();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all systems with cuesheets are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateCuesheetSystemsTestData))]
- public void RedumpSystem_HasCues(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.HasCues();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all systems with DATs are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateDatSystemsTestData))]
- public void RedumpSystem_HasDat(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.HasDat();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all systems with decrypted keys are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateDKeySystemsTestData))]
- public void RedumpSystem_HasDkeys(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.HasDkeys();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all systems with GDIs are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateGdiSystemsTestData))]
- public void RedumpSystem_HasGdi(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.HasGdi();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all systems with keys are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateKeySystemsTestData))]
- public void RedumpSystem_HasKeys(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.HasKeys();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all systems with LSDs are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateLsdSystemsTestData))]
- public void RedumpSystem_HasLsd(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.HasLsd();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that all systems with SBIs are marked properly
- ///
- /// RedumpSystem value to check
- /// The expected value to come from the check
- [Theory]
- [MemberData(nameof(GenerateSbiSystemsTestData))]
- public void RedumpSystem_HasSbi(RedumpSystem? redumpSystem, bool expected)
- {
- bool actual = redumpSystem.HasSbi();
- Assert.Equal(expected, actual);
- }
-
- ///
- /// Check that every RedumpSystem can be mapped from a string
- ///
- /// RedumpSystem value to check
- /// True to expect a null value, false otherwise
- [Theory]
- [MemberData(nameof(GenerateRedumpSystemTestData))]
- public void RedumpSystem_ToRedumpSystem(RedumpSystem? redumpSystem, bool expectNull)
- {
- string? longName = redumpSystem.LongName();
- string? longNameSpaceless = longName?.Replace(" ", string.Empty);
-
- var actualNormal = longName.ToRedumpSystem();
- var actualSpaceless = longNameSpaceless.ToRedumpSystem();
-
- if (expectNull)
- {
- Assert.Null(actualNormal);
- Assert.Null(actualSpaceless);
- }
- else
- {
- Assert.Equal(redumpSystem, actualNormal);
- Assert.Equal(redumpSystem, actualSpaceless);
- }
- }
-
- ///
- /// Generate a test set of RedumpSystem values
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateRedumpSystemTestData()
- {
- var testData = new TheoryData() { { null, true } };
- foreach (RedumpSystem? redumpSystem in Enum.GetValues().Cast())
- {
- // We want to skip all markers for this
- if (redumpSystem.IsMarker())
- continue;
-
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that are considered Audio
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateAudioSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_audioSystems.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that are available
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateAvailableSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_availableSystems.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that are banned
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateBannedSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_bannedSystems.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values mapped to their categories
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateCategoriesSystemTestData()
- {
- var testData = new TheoryData() { { null, SystemCategory.NONE } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- testData.Add(redumpSystem, _systemCategoryMap[redumpSystem]);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that have cuesheets
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateCuesheetSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_systemsWithCues.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that have DATs
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateDatSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_systemsWithDats.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that have decrypted keys
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateDKeySystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_systemsWithDKeys.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that have GDIs
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateGdiSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_systemsWithGdis.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that have keys
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateKeySystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_systemsWithKeys.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that have LSDs
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateLsdSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_systemsWithLsds.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that are considered markers
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateMarkerSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_markerSystems.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that are considered markers
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateReversedRingcodeSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_reverseRingcodeSystems.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that have SBIs
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateSbiSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_systemsWithSbis.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that are detected by Windows
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateWindowsDetectedSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_windowsDetectedSystems.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- ///
- /// Generate a test set of RedumpSystem values that are considered XGD
- ///
- /// MemberData-compatible list of RedumpSystem values
- public static TheoryData GenerateXGDSystemsTestData()
- {
- var testData = new TheoryData() { { null, false } };
- foreach (RedumpSystem redumpSystem in Enum.GetValues())
- {
- if (_xgdSystems.Contains(redumpSystem))
- testData.Add(redumpSystem, true);
- else
- testData.Add(redumpSystem, false);
- }
-
- return testData;
- }
-
- #endregion
-
#region System Category
///
diff --git a/SabreTools.RedumpLib.Test/RedumpOrg/FormatterTests.cs b/SabreTools.RedumpLib.Test/RedumpOrg/FormatterTests.cs
index 71a4d3e..34048f8 100644
--- a/SabreTools.RedumpLib.Test/RedumpOrg/FormatterTests.cs
+++ b/SabreTools.RedumpLib.Test/RedumpOrg/FormatterTests.cs
@@ -92,7 +92,7 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
var builder = new StringBuilder();
EDCSection? section = null;
- RedumpSystem? system = RedumpSystem.SonyPlayStation;
+ PhysicalSystem? system = PhysicalSystem.SonyPlayStation;
Formatter.FormatOutputData(builder, section, system);
@@ -107,7 +107,7 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
var builder = new StringBuilder();
EDCSection? section = null;
- RedumpSystem? system = RedumpSystem.IBMPCcompatible;
+ PhysicalSystem? system = PhysicalSystem.IBMPCcompatible;
Formatter.FormatOutputData(builder, section, system);
@@ -122,7 +122,7 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
var builder = new StringBuilder();
EDCSection? section = new() { EDC = YesNo.Yes };
- RedumpSystem? system = RedumpSystem.SonyPlayStation;
+ PhysicalSystem? system = PhysicalSystem.SonyPlayStation;
Formatter.FormatOutputData(builder, section, system);
@@ -202,7 +202,7 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
var builder = new StringBuilder();
CopyProtectionSection? section = null;
- RedumpSystem? system = RedumpSystem.IBMPCcompatible;
+ PhysicalSystem? system = PhysicalSystem.IBMPCcompatible;
Formatter.FormatOutputData(builder, section, system);
@@ -224,7 +224,7 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
LibCryptData = null,
SecuROMData = null,
};
- RedumpSystem? system = RedumpSystem.IBMPCcompatible;
+ PhysicalSystem? system = PhysicalSystem.IBMPCcompatible;
Formatter.FormatOutputData(builder, section, system);
@@ -246,7 +246,7 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
Protection = "XXXXXX",
SecuROMData = "XXXXXX",
};
- RedumpSystem? system = RedumpSystem.IBMPCcompatible;
+ PhysicalSystem? system = PhysicalSystem.IBMPCcompatible;
Formatter.FormatOutputData(builder, section, system);
@@ -268,7 +268,7 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
Protection = "XXXXXX",
SecuROMData = "XXXXXX",
};
- RedumpSystem? system = RedumpSystem.SonyPlayStation;
+ PhysicalSystem? system = PhysicalSystem.SonyPlayStation;
Formatter.FormatOutputData(builder, section, system);
diff --git a/SabreTools.RedumpLib.Test/RedumpOrg/UrlBuilderTests.cs b/SabreTools.RedumpLib.Test/RedumpOrg/UrlBuilderTests.cs
index 3d6be40..50ff996 100644
--- a/SabreTools.RedumpLib.Test/RedumpOrg/UrlBuilderTests.cs
+++ b/SabreTools.RedumpLib.Test/RedumpOrg/UrlBuilderTests.cs
@@ -1,4 +1,5 @@
using System;
+using SabreTools.RedumpLib.Data;
using SabreTools.RedumpLib.RedumpOrg;
using SabreTools.RedumpLib.RedumpOrg.Data;
using Xunit;
@@ -118,21 +119,21 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
[InlineData(null, "http://redump.org/list/user/arch/")]
public void BuildListUrl_HaveMissSet(bool? have, string expected)
{
- string actual = UrlBuilder.BuildListUrl("user", have, system: RedumpSystem.AcornArchimedes);
+ string actual = UrlBuilder.BuildListUrl("user", have, system: PhysicalSystem.AcornArchimedes);
Assert.Equal(expected, actual);
}
[Fact]
public void BuildListUrl_InvalidUsername_Builds()
{
- string actual = UrlBuilder.BuildListUrl(string.Empty, have: true, system: RedumpSystem.AcornArchimedes);
+ string actual = UrlBuilder.BuildListUrl(string.Empty, have: true, system: PhysicalSystem.AcornArchimedes);
Assert.Equal("http://redump.org/list/have//arch/", actual);
}
[Theory]
- [InlineData(RedumpSystem.MarkerOtherEnd)]
- [InlineData(RedumpSystem.RainbowDisc)]
- public void BuildListUrl_InvalidSystem_Builds(RedumpSystem? system)
+ [InlineData(PhysicalSystem.MarkerOtherEnd)]
+ [InlineData(PhysicalSystem.RainbowDisc)]
+ public void BuildListUrl_InvalidSystem_Builds(PhysicalSystem? system)
{
string actual = UrlBuilder.BuildListUrl("user", have: true, system: system);
Assert.Equal("http://redump.org/list/have/user/", actual);
@@ -176,20 +177,20 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
[InlineData(PackType.Sbis, "http://redump.org/sbi/arch/")]
public void BuildPackUrl_ValidPackType_ValidSystem_Builds(PackType packType, string expected)
{
- string actual = UrlBuilder.BuildPackUrl(packType, RedumpSystem.AcornArchimedes);
+ string actual = UrlBuilder.BuildPackUrl(packType, PhysicalSystem.AcornArchimedes);
Assert.Equal(expected, actual);
}
[Fact]
public void BuildPackUrl_InvalidPackType_Throws()
{
- Assert.Throws(() => UrlBuilder.BuildPackUrl((PackType)int.MaxValue, RedumpSystem.AcornArchimedes));
+ Assert.Throws(() => UrlBuilder.BuildPackUrl((PackType)int.MaxValue, PhysicalSystem.AcornArchimedes));
}
[Fact]
public void BuildPackUrl_InvalidSystem_Builds()
{
- string actual = UrlBuilder.BuildPackUrl(PackType.Datfile, RedumpSystem.MarkerOtherEnd);
+ string actual = UrlBuilder.BuildPackUrl(PackType.Datfile, PhysicalSystem.MarkerOtherEnd);
Assert.Equal("http://redump.org/datfile//", actual);
}
diff --git a/SabreTools.RedumpLib.Test/SubmissionInfoTests.cs b/SabreTools.RedumpLib.Test/SubmissionInfoTests.cs
index 95d74e2..737544a 100644
--- a/SabreTools.RedumpLib.Test/SubmissionInfoTests.cs
+++ b/SabreTools.RedumpLib.Test/SubmissionInfoTests.cs
@@ -51,7 +51,7 @@ namespace SabreTools.RedumpLib.Test
CommonDiscInfo = new CommonDiscInfoSection()
{
- System = RedumpSystem.IBMPCcompatible,
+ System = PhysicalSystem.IBMPCcompatible,
Media = DiscType.CD,
Title = "Game Title",
ForeignTitleNonLatin = "Foreign Game Title",
diff --git a/SabreTools.RedumpLib/RedumpOrg/SystemAttribute.cs b/SabreTools.RedumpLib/Attributes/SystemAttribute.cs
similarity index 79%
rename from SabreTools.RedumpLib/RedumpOrg/SystemAttribute.cs
rename to SabreTools.RedumpLib/Attributes/SystemAttribute.cs
index 40be192..cd0dec1 100644
--- a/SabreTools.RedumpLib/RedumpOrg/SystemAttribute.cs
+++ b/SabreTools.RedumpLib/Attributes/SystemAttribute.cs
@@ -1,13 +1,17 @@
-using SabreTools.RedumpLib.Attributes;
-using SabreTools.RedumpLib.RedumpOrg.Data;
+using SabreTools.RedumpLib.Data;
-namespace SabreTools.RedumpLib.RedumpOrg
+namespace SabreTools.RedumpLib.Attributes
{
///
/// Attribute specifc to Redump System values
///
public class SystemAttribute : HumanReadableAttribute
{
+ ///
+ /// redump.org short code
+ ///
+ public string? RedumpOrgCode { get; set; }
+
///
/// Category for the system
///
@@ -31,11 +35,13 @@ namespace SabreTools.RedumpLib.RedumpOrg
///
/// System has a decrypted keys pack
///
+ /// redump.org only
public bool HasDkeys { get; set; } = false;
///
/// System has a GDI pack
///
+ /// redump.org only
public bool HasGdi { get; set; } = false;
///
@@ -46,6 +52,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
///
/// System has an LSD pack
///
+ /// redump.org only
public bool HasLsd { get; set; } = false;
///
diff --git a/SabreTools.RedumpLib/Builder.cs b/SabreTools.RedumpLib/Builder.cs
index c767517..1e1fcf7 100644
--- a/SabreTools.RedumpLib/Builder.cs
+++ b/SabreTools.RedumpLib/Builder.cs
@@ -180,15 +180,15 @@ namespace SabreTools.RedumpLib
}
else if (string.Equals(gameInfoNodeHeader.InnerText, "System", StringComparison.OrdinalIgnoreCase))
{
- info.CommonDiscInfo.System = RedumpOrg.Data.Extensions.ToRedumpSystem(gameInfoNodeData["a"]?.InnerText ?? string.Empty);
+ info.CommonDiscInfo.System = (gameInfoNodeData["a"]?.InnerText ?? string.Empty).ToPhysicalSystem();
}
else if (string.Equals(gameInfoNodeHeader.InnerText, "Media", StringComparison.OrdinalIgnoreCase))
{
- info.CommonDiscInfo.Media = RedumpOrg.Data.Extensions.ToDiscType(gameInfoNodeData.InnerText);
+ info.CommonDiscInfo.Media = gameInfoNodeData.InnerText.ToDiscType();
}
else if (string.Equals(gameInfoNodeHeader.InnerText, "Category", StringComparison.OrdinalIgnoreCase))
{
- info.CommonDiscInfo.Category = RedumpOrg.Data.Extensions.ToDiscCategory(gameInfoNodeData.InnerText);
+ info.CommonDiscInfo.Category = gameInfoNodeData.InnerText.ToDiscCategory();
}
else if (string.Equals(gameInfoNodeHeader.InnerText, "Region", StringComparison.OrdinalIgnoreCase))
{
diff --git a/SabreTools.RedumpLib/Data/Enumerations.cs b/SabreTools.RedumpLib/Data/Enumerations.cs
index c13bacc..cd2c133 100644
--- a/SabreTools.RedumpLib/Data/Enumerations.cs
+++ b/SabreTools.RedumpLib/Data/Enumerations.cs
@@ -1755,6 +1755,606 @@ namespace SabreTools.RedumpLib.Data
#endregion
}
+ ///
+ /// List of all known systems not bound to specific site limitations
+ ///
+ /// TODO: Remove marker items
+ /// TODO: Double check all flags once the site is live
+ /// TODO: Add MAXTEST as a debug-only system
+ /// TODO: Does "Banned" now only mean that things like keys can't be downloaded?
+ public enum PhysicalSystem
+ {
+ #region BIOS Sets
+
+ [System(LongName = "Microsoft Xbox (BIOS)", ShortName = "xbox-bios", HasDat = true)]
+ MicrosoftXboxBIOS,
+
+ [System(LongName = "Nintendo GameCube (BIOS)", ShortName = "gc-bios", HasDat = true)]
+ NintendoGameCubeBIOS,
+
+ [System(LongName = "Sony PlayStation (BIOS)", ShortName = "psx-bios", HasDat = true)]
+ SonyPlayStationBIOS,
+
+ [System(LongName = "Sony PlayStation 2 (BIOS)", ShortName = "ps2-bios", HasDat = true)]
+ SonyPlayStation2BIOS,
+
+ #endregion
+
+ #region Disc-Based Consoles
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Atari Jaguar CD Interactive Multimedia System", ShortName = "AJCD", RedumpOrgCode = "ajcd", HasCues = true, HasDat = true)]
+ AtariJaguarCDInteractiveMultimediaSystem,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Bandai Pippin", ShortName = "PIPPIN", RedumpOrgCode = "pippin", HasCues = true, HasDat = true)]
+ BandaiPippin,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Bandai Playdia Quick Interactive System", RedumpOrgCode = "qis", ShortName = "QIS", HasCues = true, HasDat = true)]
+ BandaiPlaydiaQuickInteractiveSystem,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Commodore Amiga CD32", ShortName = "CD32", RedumpOrgCode = "cd32", HasCues = true, HasDat = true)]
+ CommodoreAmigaCD32,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Commodore Amiga CDTV", ShortName = "CDTV", RedumpOrgCode = "cdtv", HasCues = true, HasDat = true)]
+ CommodoreAmigaCDTV,
+
+ [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Envizions EVO Smart Console")]
+ EnvizionsEVOSmartConsole,
+
+ [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Fujitsu FM Towns Marty")]
+ FujitsuFMTownsMarty,
+
+ [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Hasbro iON Educational Gaming System")]
+ HasbroiONEducationalGamingSystem,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow", ShortName = "HVN", RedumpOrgCode = "hvn", IsBanned = true, HasCues = true, HasDat = true)]
+ HasbroVideoNow,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow Color", ShortName = "HVNC", RedumpOrgCode = "hvnc", IsBanned = true, HasCues = true, HasDat = true)]
+ HasbroVideoNowColor,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow Jr.", ShortName = "HVNJR", RedumpOrgCode = "hvnjr", IsBanned = true, HasCues = true, HasDat = true)]
+ HasbroVideoNowJr,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow XP", ShortName = "HVNXP", RedumpOrgCode = "hvnxp", IsBanned = true, HasCues = true, HasDat = true)]
+ HasbroVideoNowXP,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Mattel Fisher-Price iXL", ShortName = "IXL", RedumpOrgCode = "ixl", HasCues = true, HasDat = true)]
+ MattelFisherPriceiXL,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Mattel HyperScan", ShortName = "HS", RedumpOrgCode = "hs", HasCues = true, HasDat = true)]
+ MattelHyperScan,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Memorex Visual Information System", ShortName = "VIS", RedumpOrgCode = "vis", HasCues = true, HasDat = true)]
+ MemorexVisualInformationSystem,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox", ShortName = "XBOX", RedumpOrgCode = "xbox", HasCues = true, HasDat = true)]
+ MicrosoftXbox,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox 360", ShortName = "XBOX360", RedumpOrgCode = "xbox360", HasCues = true, HasDat = true)]
+ MicrosoftXbox360,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox One", ShortName = "XBOXONE", RedumpOrgCode = "xboxone", IsBanned = true, HasDat = true)]
+ MicrosoftXboxOne,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox Series X", ShortName = "XBOXSX", RedumpOrgCode = "xboxsx", IsBanned = true, HasDat = true)]
+ MicrosoftXboxSeriesXS,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "NEC PC Engine CD & TurboGrafx CD", ShortName = "PCE", RedumpOrgCode = "pce", HasCues = true, HasDat = true)]
+ NECPCEngineCDTurboGrafxCD,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "NEC PC-FX & PC-FXGA", ShortName = "PC-FX", RedumpOrgCode = "pc-fx", HasCues = true, HasDat = true)]
+ NECPCFXPCFXGA,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo GameCube", ShortName = "GC", RedumpOrgCode = "gc", HasDat = true)]
+ NintendoGameCube,
+
+ [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Nintendo-Sony Super NES CD-ROM System")]
+ NintendoSonySuperNESCDROMSystem,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo Wii", ShortName = "WII", RedumpOrgCode = "wii", HasDat = true)]
+ NintendoWii,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo Wii U", ShortName = "WIIU", RedumpOrgCode = "wiiu", IsBanned = true, HasDat = true, HasKeys = true)]
+ NintendoWiiU,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Panasonic 3DO Interactive Multiplayer", ShortName = "3DO", RedumpOrgCode = "3do", HasCues = true, HasDat = true)]
+ Panasonic3DOInteractiveMultiplayer,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Philips CD-i", ShortName = "CDI", RedumpOrgCode = "cdi", HasCues = true, HasDat = true)]
+ PhilipsCDi,
+
+ [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Playmaji Polymega")]
+ PlaymajiPolymega,
+
+ [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Pioneer LaserActive")]
+ PioneerLaserActive,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Dreamcast", ShortName = "DC", RedumpOrgCode = "dc", HasCues = true, HasDat = true)]
+ SegaDreamcast,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Mega CD & Sega CD", ShortName = "MCD", RedumpOrgCode = "mcd", HasCues = true, HasDat = true)]
+ SegaMegaCDSegaCD,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Saturn", ShortName = "SS", RedumpOrgCode = "ss", HasCues = true, HasDat = true)]
+ SegaSaturn,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Neo Geo CD", ShortName = "NGCD", RedumpOrgCode = "ngcd", HasCues = true, HasDat = true)]
+ SNKNeoGeoCD,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation", ShortName = "PSX", RedumpOrgCode = "psx", HasCues = true, HasDat = true, HasSbi = true)]
+ SonyPlayStation,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 2", ShortName = "PS2", RedumpOrgCode = "ps2", HasCues = true, HasDat = true)]
+ SonyPlayStation2,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 3", ShortName = "PS3", RedumpOrgCode = "ps3", HasCues = true, HasDat = true, HasKeys = true)]
+ SonyPlayStation3,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 4", ShortName = "PS4", RedumpOrgCode = "ps4", IsBanned = true, HasDat = true)]
+ SonyPlayStation4,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 5", ShortName = "PS5", RedumpOrgCode = "ps5", IsBanned = true, HasDat = true)]
+ SonyPlayStation5,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation Portable", ShortName = "PSP", RedumpOrgCode = "psp", HasDat = true)]
+ SonyPlayStationPortable,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "VM Labs NUON", ShortName = "NUON", RedumpOrgCode = "nuon", HasDat = true)]
+ VMLabsNUON,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "VTech V.Flash & V.Smile Pro", ShortName = "VFLASH", RedumpOrgCode = "vflash", HasCues = true, HasDat = true)]
+ VTechVFlashVSmilePro,
+
+ [System(Category = SystemCategory.DiscBasedConsole, LongName = "ZAPiT Games Game Wave Family Entertainment System", ShortName = "GAMEWAVE", RedumpOrgCode = "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 = "ARCH", RedumpOrgCode = "arch", HasCues = true, HasDat = true)]
+ AcornArchimedes,
+
+ [System(Category = SystemCategory.Computer, LongName = "Apple Macintosh", ShortName = "MAC", RedumpOrgCode = "mac", HasCues = true, HasDat = true, HasSbi = true)]
+ AppleMacintosh,
+
+ [System(Category = SystemCategory.Computer, LongName = "Commodore Amiga CD", ShortName = "ACD", RedumpOrgCode = "acd", HasCues = true, HasDat = true)]
+ CommodoreAmigaCD,
+
+ [System(Category = SystemCategory.Computer, LongName = "Fujitsu FM Towns series", ShortName = "FMT", RedumpOrgCode = "fmt", HasCues = true, HasDat = true)]
+ FujitsuFMTownsseries,
+
+ [System(Category = SystemCategory.Computer, LongName = "IBM PC compatible", ShortName = "PC", RedumpOrgCode = "pc", HasCues = true, HasDat = true, HasSbi = true)]
+ IBMPCcompatible,
+
+ [System(Category = SystemCategory.Computer, LongName = "NEC PC-88 series", ShortName = "PC-88", RedumpOrgCode = "pc-88", HasCues = true, HasDat = true)]
+ NECPC88series,
+
+ [System(Category = SystemCategory.Computer, LongName = "NEC PC-98 series", ShortName = "PC-98", RedumpOrgCode = "pc-98", HasCues = true, HasDat = true)]
+ NECPC98series,
+
+ [System(Category = SystemCategory.Computer, LongName = "Sharp X68000", ShortName = "X68K", RedumpOrgCode = "x68k", 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", RedumpOrgCode = "fpp", HasCues = true, HasDat = true)]
+ funworldPhotoPlay,
+
+ [System(Category = SystemCategory.Arcade, Available = false, LongName = "FuRyu & Omron Purikura")]
+ FuRyuOmronPurikura,
+
+ [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", RedumpOrgCode = "ite", HasCues = true, HasDat = true)]
+ IncredibleTechnologiesEagle,
+
+ [System(Category = SystemCategory.Arcade, Available = false, LongName = "Incredible Technologies PC-based Systems")]
+ IncredibleTechnologiesVarious,
+
+ [System(Category = SystemCategory.Arcade, Available = false, LongName = "JVL iTouch")]
+ JVLiTouch,
+
+ [System(Category = SystemCategory.Arcade, LongName = "Konami e-Amusement", ShortName = "KEA", RedumpOrgCode = "kea", HasCues = true, HasDat = true)]
+ KonamieAmusement,
+
+ [System(Category = SystemCategory.Arcade, LongName = "Konami FireBeat", ShortName = "KFB", RedumpOrgCode = "kfb", HasCues = true, HasDat = true)]
+ KonamiFireBeat,
+
+ [System(Category = SystemCategory.Arcade, LongName = "Konami M2", ShortName = "KM2", RedumpOrgCode = "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", RedumpOrgCode = "ks573", HasCues = true, HasDat = true)]
+ KonamiSystem573,
+
+ [System(Category = SystemCategory.Arcade, LongName = "Konami System GV", ShortName = "KSGV", RedumpOrgCode = "ksgv", HasCues = true, HasDat = true)]
+ KonamiSystemGV,
+
+ [System(Category = SystemCategory.Arcade, LongName = "Konami Twinkle", ShortName = "kt", RedumpOrgCode = "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 Purikura")]
+ NamcoPurikura,
+
+ [System(Category = SystemCategory.Arcade, LongName = "Namco · Sega · Nintendo Triforce", ShortName = "TRF", RedumpOrgCode = "trf", HasCues = true, HasDat = true)]
+ NamcoSegaNintendoTriforce,
+
+ [System(Category = SystemCategory.Arcade, LongName = "Namco System 12", ShortName = "ns12", RedumpOrgCode = "ns12")]
+ NamcoSystem12,
+
+ [System(Category = SystemCategory.Arcade, LongName = "Namco System 246 / System 256", ShortName = "NS246", RedumpOrgCode = "ns246", HasCues = true, HasDat = true)]
+ NamcoSystem246256,
+
+ [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", RedumpOrgCode = "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, Available = false, LongName = "Sega ALLS")]
+ SegaALLS,
+
+ [System(Category = SystemCategory.Arcade, LongName = "Sega Chihiro", ShortName = "CHIHIRO", RedumpOrgCode = "chihiro", HasCues = true, HasDat = true)]
+ SegaChihiro,
+
+ [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Europa-R")]
+ SegaEuropaR,
+
+ [System(Category = SystemCategory.Arcade, LongName = "Sega Lindbergh", ShortName = "LINDBERGH", RedumpOrgCode = "lindbergh", HasDat = true)]
+ SegaLindbergh,
+
+ [System(Category = SystemCategory.Arcade, LongName = "Sega Naomi", ShortName = "NAOMI", RedumpOrgCode = "naomi", HasCues = true, HasDat = true)]
+ SegaNaomi,
+
+ [System(Category = SystemCategory.Arcade, LongName = "Sega Naomi 2", ShortName = "NAOMI2", RedumpOrgCode = "naomi2", HasCues = true, HasDat = true)]
+ SegaNaomi2,
+
+ [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega NAOMI Satellite Terminal PC")]
+ SegaNaomiSatelliteTerminalPC,
+
+ [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu")]
+ SegaNu,
+
+ [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu 1.1")]
+ SegaNu11,
+
+ [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu 2")]
+ SegaNu2,
+
+ [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu SX")]
+ SegaNuSX,
+
+ [System(Category = SystemCategory.Arcade, LongName = "Sega RingEdge", ShortName = "SRE", RedumpOrgCode = "sre", HasDat = true)]
+ SegaRingEdge,
+
+ [System(Category = SystemCategory.Arcade, LongName = "Sega RingEdge 2", ShortName = "SRE2", RedumpOrgCode = "sre2", 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", RedumpOrgCode = "stv")]
+ SegaTitanVideo,
+
+ [System(Category = SystemCategory.Arcade, Available = false, LongName = "Seibu CATS System")]
+ SeibuCATSSystem,
+
+ [System(Category = SystemCategory.Arcade, LongName = "TAB-Austria Quizard", ShortName = "QUIZARD", RedumpOrgCode = "quizard", HasCues = true, HasDat = true)]
+ TABAustriaQuizard,
+
+ [System(Category = SystemCategory.Arcade, Available = false, LongName = "Tsunami TsuMo Multi-Game Motion System")]
+ TsunamiTsuMoMultiGameMotionSystem,
+
+ [System(Category = SystemCategory.Arcade, Available = false, LongName = "UltraCade PC-based Systems")]
+ UltraCade,
+
+ // End of arcade section delimiter
+ MarkerArcadeEnd,
+
+ #endregion
+
+ #region Other
+
+ [System(Category = SystemCategory.Other, LongName = "Audio CD", ShortName = "AUDIO-CD", RedumpOrgCode = "audio-cd", IsBanned = true, HasCues = true, HasDat = true)]
+ AudioCD,
+
+ [System(Category = SystemCategory.Other, LongName = "BD-Video", ShortName = "BD-VIDEO", RedumpOrgCode = "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", RedumpOrgCode = "dvd-video", IsBanned = true, HasDat = true)]
+ DVDVideo,
+
+ [System(Category = SystemCategory.Other, LongName = "Enhanced CD", ShortName = "ENHANCED-CD", RedumpOrgCode = "enhanced-cd", IsBanned = true)]
+ EnhancedCD,
+
+ [System(Category = SystemCategory.Other, LongName = "HD DVD-Video", ShortName = "HDDVD-VIDEO", RedumpOrgCode = "hddvd-video", IsBanned = true, HasDat = true)]
+ HDDVDVideo,
+
+ [System(Category = SystemCategory.Other, LongName = "Navisoft Naviken 2.1", ShortName = "NAVI21", RedumpOrgCode = "navi21", IsBanned = true, HasCues = true, HasDat = true)]
+ NavisoftNaviken21,
+
+ [System(Category = SystemCategory.Other, LongName = "Palm OS", ShortName = "PALM", RedumpOrgCode = "palm", HasCues = true, HasDat = true)]
+ PalmOS,
+
+ [System(Category = SystemCategory.Other, LongName = "Photo CD", ShortName = "PHOTO-CD", RedumpOrgCode = "photo-cd", HasCues = true, HasDat = true)]
+ PhotoCD,
+
+ [System(Category = SystemCategory.Other, LongName = "PlayStation GameShark Updates", ShortName = "PSXGS", RedumpOrgCode = "psxgs", HasCues = true, HasDat = true)]
+ PlayStationGameSharkUpdates,
+
+ [System(Category = SystemCategory.Other, LongName = "Pocket PC", ShortName = "PPC", RedumpOrgCode = "ppc", HasCues = true, HasDat = true)]
+ PocketPC,
+
+ [System(Category = SystemCategory.Other, Available = false, LongName = "Psion")]
+ Psion,
+
+ [System(Category = SystemCategory.Other, Available = false, LongName = "Rainbow Disc")]
+ RainbowDisc,
+
+ [System(Category = SystemCategory.Other, LongName = "Sega Prologue 21 Multimedia Karaoke System", ShortName = "SP21", RedumpOrgCode = "sp21", HasCues = true, HasDat = true)]
+ SegaPrologue21MultimediaKaraokeSystem,
+
+ [System(Category = SystemCategory.Other, Available = false, LongName = "Sharp Zaurus")]
+ SharpZaurus,
+
+ [System(Category = SystemCategory.Other, Available = false, LongName = "Sony Electronic Book")]
+ SonyElectronicBook,
+
+ [System(Category = SystemCategory.Other, Available = false, LongName = "Super Audio CD")]
+ SuperAudioCD,
+
+ [System(Category = SystemCategory.Other, LongName = "Tao iKTV", ShortName = "IKTV", RedumpOrgCode = "iktv")]
+ TaoiKTV,
+
+ [System(Category = SystemCategory.Other, LongName = "Tomy Kiss-Site", ShortName = "KSITE", RedumpOrgCode = "ksite", HasCues = true, HasDat = true)]
+ TomyKissSite,
+
+ [System(Category = SystemCategory.Other, LongName = "Video CD", ShortName = "VCD", RedumpOrgCode = "vcd", IsBanned = true, HasCues = true, HasDat = true)]
+ VideoCD,
+
+ // End of other section delimiter
+ MarkerOtherEnd,
+
+ #endregion
+ }
+
///
/// List of all known regions
///
@@ -1924,149 +2524,149 @@ namespace SabreTools.RedumpLib.Data
#region B
- [RegionCode(LongName = "Bahamas", ShortName="bs", RedumpOrgCode="Bs")]
+ [RegionCode(LongName = "Bahamas", ShortName = "bs", RedumpOrgCode = "Bs")]
Bahamas,
- [RegionCode(LongName = "Bahrain", ShortName="bh", RedumpOrgCode="Bh")]
+ [RegionCode(LongName = "Bahrain", ShortName = "bh", RedumpOrgCode = "Bh")]
Bahrain,
- [RegionCode(LongName = "Bangladesh", ShortName="bd", RedumpOrgCode="Bd")]
+ [RegionCode(LongName = "Bangladesh", ShortName = "bd", RedumpOrgCode = "Bd")]
Bangladesh,
- [RegionCode(LongName = "Barbados", ShortName="bb", RedumpOrgCode="Bb")]
+ [RegionCode(LongName = "Barbados", ShortName = "bb", RedumpOrgCode = "Bb")]
Barbados,
- [RegionCode(LongName = "Belarus", ShortName="by", RedumpOrgCode="By")]
+ [RegionCode(LongName = "Belarus", ShortName = "by", RedumpOrgCode = "By")]
Belarus,
- [RegionCode(LongName = "Belgium", ShortName="be", RedumpOrgCode="Be")]
+ [RegionCode(LongName = "Belgium", ShortName = "be", RedumpOrgCode = "Be")]
Belgium,
- [RegionCode(LongName = "Belize", ShortName="bz", RedumpOrgCode="Bz")]
+ [RegionCode(LongName = "Belize", ShortName = "bz", RedumpOrgCode = "Bz")]
Belize,
- [RegionCode(LongName = "Benin", ShortName="bj", RedumpOrgCode="Bj")]
+ [RegionCode(LongName = "Benin", ShortName = "bj", RedumpOrgCode = "Bj")]
Benin,
- [RegionCode(LongName = "Bermuda", ShortName="bm", RedumpOrgCode="Bm")]
+ [RegionCode(LongName = "Bermuda", ShortName = "bm", RedumpOrgCode = "Bm")]
Bermuda,
- [RegionCode(LongName = "Bhutan", ShortName="bt", RedumpOrgCode="Bt")]
+ [RegionCode(LongName = "Bhutan", ShortName = "bt", RedumpOrgCode = "Bt")]
Bhutan,
- [RegionCode(LongName = "Bolivia", ShortName="bo", RedumpOrgCode="Bo")]
+ [RegionCode(LongName = "Bolivia", ShortName = "bo", RedumpOrgCode = "Bo")]
Bolivia,
- [RegionCode(LongName = "Bonaire, Sint Eustatius and Saba", ShortName="bq", RedumpOrgCode="Bq")]
+ [RegionCode(LongName = "Bonaire, Sint Eustatius and Saba", ShortName = "bq", RedumpOrgCode = "Bq")]
Bonaire,
- [RegionCode(LongName = "Bosnia and Herzegovina", ShortName="ba", RedumpOrgCode="Ba")]
+ [RegionCode(LongName = "Bosnia and Herzegovina", ShortName = "ba", RedumpOrgCode = "Ba")]
BosniaAndHerzegovina,
- [RegionCode(LongName = "Botswana", ShortName="bw", RedumpOrgCode="Bw")]
+ [RegionCode(LongName = "Botswana", ShortName = "bw", RedumpOrgCode = "Bw")]
Botswana,
- [RegionCode(LongName = "Bouvet Island", ShortName="bv", RedumpOrgCode="Bv")]
+ [RegionCode(LongName = "Bouvet Island", ShortName = "bv", RedumpOrgCode = "Bv")]
BouvetIsland,
- [RegionCode(LongName = "Brazil", ShortName="br", RedumpOrgCode="B")]
+ [RegionCode(LongName = "Brazil", ShortName = "br", RedumpOrgCode = "B")]
Brazil,
- [RegionCode(LongName = "British Indian Ocean Territory", ShortName="io", RedumpOrgCode="Io")]
+ [RegionCode(LongName = "British Indian Ocean Territory", ShortName = "io", RedumpOrgCode = "Io")]
BritishIndianOceanTerritory,
- [RegionCode(LongName = "Brunei Darussalam", ShortName="bn", RedumpOrgCode="Bn")]
+ [RegionCode(LongName = "Brunei Darussalam", ShortName = "bn", RedumpOrgCode = "Bn")]
BruneiDarussalam,
- [RegionCode(LongName = "Bulgaria", ShortName="bg", RedumpOrgCode="Bg")]
+ [RegionCode(LongName = "Bulgaria", ShortName = "bg", RedumpOrgCode = "Bg")]
Bulgaria,
- [RegionCode(LongName = "Burkina Faso", ShortName="bf", RedumpOrgCode="Bf")]
+ [RegionCode(LongName = "Burkina Faso", ShortName = "bf", RedumpOrgCode = "Bf")]
BurkinaFaso,
- [RegionCode(LongName = "Burundi", ShortName="bi", RedumpOrgCode="Bi")]
+ [RegionCode(LongName = "Burundi", ShortName = "bi", RedumpOrgCode = "Bi")]
Burundi,
#endregion
#region C
- [RegionCode(LongName = "Cabo Verde", ShortName="cv", RedumpOrgCode="Cv")]
+ [RegionCode(LongName = "Cabo Verde", ShortName = "cv", RedumpOrgCode = "Cv")]
CaboVerde,
- [RegionCode(LongName = "Cambodia", ShortName="kh", RedumpOrgCode="Kh")]
+ [RegionCode(LongName = "Cambodia", ShortName = "kh", RedumpOrgCode = "Kh")]
Cambodia,
- [RegionCode(LongName = "Cameroon", ShortName="cm", RedumpOrgCode="Cm")]
+ [RegionCode(LongName = "Cameroon", ShortName = "cm", RedumpOrgCode = "Cm")]
Cameroon,
- [RegionCode(LongName = "Canada", ShortName="ca", RedumpOrgCode="Ca")]
+ [RegionCode(LongName = "Canada", ShortName = "ca", RedumpOrgCode = "Ca")]
Canada,
- [RegionCode(LongName = "Canary Islands", ShortName="ic", RedumpOrgCode="Ic")]
+ [RegionCode(LongName = "Canary Islands", ShortName = "ic", RedumpOrgCode = "Ic")]
CanaryIslands,
- [RegionCode(LongName = "Cayman Islands", ShortName="ky", RedumpOrgCode="Ky")]
+ [RegionCode(LongName = "Cayman Islands", ShortName = "ky", RedumpOrgCode = "Ky")]
CaymanIslands,
- [RegionCode(LongName = "Central African Republic", ShortName="cf", RedumpOrgCode="Cf")]
+ [RegionCode(LongName = "Central African Republic", ShortName = "cf", RedumpOrgCode = "Cf")]
CentralAfricanRepublic,
- [RegionCode(LongName = "Ceuta, Melilla", ShortName="ea", RedumpOrgCode="Ea")]
+ [RegionCode(LongName = "Ceuta, Melilla", ShortName = "ea", RedumpOrgCode = "Ea")]
CeutaMelilla,
- [RegionCode(LongName = "Chad", ShortName="td", RedumpOrgCode="Td")]
+ [RegionCode(LongName = "Chad", ShortName = "td", RedumpOrgCode = "Td")]
Chad,
- [RegionCode(LongName = "Chile", ShortName="cl", RedumpOrgCode="Cl")]
+ [RegionCode(LongName = "Chile", ShortName = "cl", RedumpOrgCode = "Cl")]
Chile,
- [RegionCode(LongName = "China", ShortName="cn", RedumpOrgCode="C")]
+ [RegionCode(LongName = "China", ShortName = "cn", RedumpOrgCode = "C")]
China,
- [RegionCode(LongName = "Christmas Island", ShortName="cx", RedumpOrgCode="Cx")]
+ [RegionCode(LongName = "Christmas Island", ShortName = "cx", RedumpOrgCode = "Cx")]
ChristmasIsland,
- [RegionCode(LongName = "Clipperton Island", ShortName="cp", RedumpOrgCode="Cp")]
+ [RegionCode(LongName = "Clipperton Island", ShortName = "cp", RedumpOrgCode = "Cp")]
ClippertonIsland,
- [RegionCode(LongName = "Cocos (Keeling) Islands", ShortName="cc", RedumpOrgCode="Cc")]
+ [RegionCode(LongName = "Cocos (Keeling) Islands", ShortName = "cc", RedumpOrgCode = "Cc")]
CocosIslands,
- [RegionCode(LongName = "Colombia", ShortName="co", RedumpOrgCode="Co")]
+ [RegionCode(LongName = "Colombia", ShortName = "co", RedumpOrgCode = "Co")]
Colombia,
- [RegionCode(LongName = "Comoros", ShortName="km", RedumpOrgCode="Km")]
+ [RegionCode(LongName = "Comoros", ShortName = "km", RedumpOrgCode = "Km")]
Comoros,
- [RegionCode(LongName = "Congo", ShortName="cg", RedumpOrgCode="Cg")]
+ [RegionCode(LongName = "Congo", ShortName = "cg", RedumpOrgCode = "Cg")]
Congo,
- [RegionCode(LongName = "Cook Islands", ShortName="ck", RedumpOrgCode="Ck")]
+ [RegionCode(LongName = "Cook Islands", ShortName = "ck", RedumpOrgCode = "Ck")]
CookIslands,
- [RegionCode(LongName = "Costa Rica", ShortName="cr", RedumpOrgCode="Cr")]
+ [RegionCode(LongName = "Costa Rica", ShortName = "cr", RedumpOrgCode = "Cr")]
CostaRica,
- [RegionCode(LongName = "Côte d'Ivoire", ShortName="ci", RedumpOrgCode="Ci")]
+ [RegionCode(LongName = "Côte d'Ivoire", ShortName = "ci", RedumpOrgCode = "Ci")]
CoteDIvoire,
- [RegionCode(LongName = "Croatia", ShortName="hr", RedumpOrgCode="Hr")]
+ [RegionCode(LongName = "Croatia", ShortName = "hr", RedumpOrgCode = "Hr")]
Croatia,
- [RegionCode(LongName = "Cuba", ShortName="cu", RedumpOrgCode="Cu")]
+ [RegionCode(LongName = "Cuba", ShortName = "cu", RedumpOrgCode = "Cu")]
Cuba,
- [RegionCode(LongName = "Curaçao", ShortName="cw", RedumpOrgCode="Cw")]
+ [RegionCode(LongName = "Curaçao", ShortName = "cw", RedumpOrgCode = "Cw")]
Curacao,
- [RegionCode(LongName = "Cyprus", ShortName="cy", RedumpOrgCode="Cy")]
+ [RegionCode(LongName = "Cyprus", ShortName = "cy", RedumpOrgCode = "Cy")]
Cyprus,
- [RegionCode(LongName = "Czechia", ShortName="cz", RedumpOrgCode="Cz")]
+ [RegionCode(LongName = "Czechia", ShortName = "cz", RedumpOrgCode = "Cz")]
Czechia,
- [RegionCode(LongName = "Czechoslovakia", ShortName="cs", RedumpOrgCode="Cs")]
+ [RegionCode(LongName = "Czechoslovakia", ShortName = "cs", RedumpOrgCode = "Cs")]
Czechoslovakia,
#endregion
@@ -2074,50 +2674,50 @@ namespace SabreTools.RedumpLib.Data
#region D
// Zaire was "Zr"
- [RegionCode(LongName = "Democratic Republic of the Congo (Zaire)", ShortName="cd", RedumpOrgCode="Cd")]
+ [RegionCode(LongName = "Democratic Republic of the Congo (Zaire)", ShortName = "cd", RedumpOrgCode = "Cd")]
DemocraticRepublicOfTheCongo,
- [RegionCode(LongName = "Denmark", ShortName="dk", RedumpOrgCode="Dk")]
+ [RegionCode(LongName = "Denmark", ShortName = "dk", RedumpOrgCode = "Dk")]
Denmark,
- [RegionCode(LongName = "Diego Garcia", ShortName="dg", RedumpOrgCode="Dg")]
+ [RegionCode(LongName = "Diego Garcia", ShortName = "dg", RedumpOrgCode = "Dg")]
DiegoGarcia,
- [RegionCode(LongName = "Djibouti", ShortName="dj", RedumpOrgCode="Dj")]
+ [RegionCode(LongName = "Djibouti", ShortName = "dj", RedumpOrgCode = "Dj")]
Djibouti,
- [RegionCode(LongName = "Dominica", ShortName="dm", RedumpOrgCode="Dm")]
+ [RegionCode(LongName = "Dominica", ShortName = "dm", RedumpOrgCode = "Dm")]
Dominica,
- [RegionCode(LongName = "Dominican Republic", ShortName="do", RedumpOrgCode="Do")]
+ [RegionCode(LongName = "Dominican Republic", ShortName = "do", RedumpOrgCode = "Do")]
DominicanRepublic,
#endregion
#region E
- [RegionCode(LongName = "Ecuador", ShortName="ec", RedumpOrgCode="Ec")]
+ [RegionCode(LongName = "Ecuador", ShortName = "ec", RedumpOrgCode = "Ec")]
Ecuador,
- [RegionCode(LongName = "Egypt", ShortName="eg", RedumpOrgCode="Eg")]
+ [RegionCode(LongName = "Egypt", ShortName = "eg", RedumpOrgCode = "Eg")]
Egypt,
- [RegionCode(LongName = "El Salvador", ShortName="sv", RedumpOrgCode="Sv")]
+ [RegionCode(LongName = "El Salvador", ShortName = "sv", RedumpOrgCode = "Sv")]
ElSalvador,
- [RegionCode(LongName = "Equatorial Guinea", ShortName="gq", RedumpOrgCode="Gq")]
+ [RegionCode(LongName = "Equatorial Guinea", ShortName = "gq", RedumpOrgCode = "Gq")]
EquatorialGuinea,
- [RegionCode(LongName = "Eritrea", ShortName="er", RedumpOrgCode="Er")]
+ [RegionCode(LongName = "Eritrea", ShortName = "er", RedumpOrgCode = "Er")]
Eritrea,
- [RegionCode(LongName = "Estonia", ShortName="ee", RedumpOrgCode="Ee")]
+ [RegionCode(LongName = "Estonia", ShortName = "ee", RedumpOrgCode = "Ee")]
Estonia,
- [RegionCode(LongName = "Eswatini", ShortName="sz", RedumpOrgCode="Sz")]
+ [RegionCode(LongName = "Eswatini", ShortName = "sz", RedumpOrgCode = "Sz")]
Eswatini,
- [RegionCode(LongName = "Ethiopia", ShortName="et", RedumpOrgCode="Et")]
+ [RegionCode(LongName = "Ethiopia", ShortName = "et", RedumpOrgCode = "Et")]
Ethiopia,
// Commented out to avoid confusion
@@ -2132,646 +2732,669 @@ namespace SabreTools.RedumpLib.Data
#region F
- [RegionCode(LongName = "Falkland Islands (Malvinas)", ShortName="fk", RedumpOrgCode="Fk")]
+ [RegionCode(LongName = "Falkland Islands (Malvinas)", ShortName = "fk", RedumpOrgCode = "Fk")]
FalklandIslands,
- [RegionCode(LongName = "Faroe Islands", ShortName="fo", RedumpOrgCode="Fo")]
+ [RegionCode(LongName = "Faroe Islands", ShortName = "fo", RedumpOrgCode = "Fo")]
FaroeIslands,
- [RegionCode(LongName = "Federated States of Micronesia", ShortName="fm", RedumpOrgCode="Fm")]
+ [RegionCode(LongName = "Federated States of Micronesia", ShortName = "fm", RedumpOrgCode = "Fm")]
FederatedStatesOfMicronesia,
- [RegionCode(LongName = "Fiji", ShortName="fj", RedumpOrgCode="Fj")]
+ [RegionCode(LongName = "Fiji", ShortName = "fj", RedumpOrgCode = "Fj")]
Fiji,
// Formerly "Sf"
- [RegionCode(LongName = "Finland", ShortName="fi", RedumpOrgCode="Fi")]
+ [RegionCode(LongName = "Finland", ShortName = "fi", RedumpOrgCode = "Fi")]
Finland,
- [RegionCode(LongName = "France", ShortName="fr", RedumpOrgCode="F")]
+ [RegionCode(LongName = "France", ShortName = "fr", RedumpOrgCode = "F")]
France,
// Commented out to avoid confusion
//[RegionCode(LongName = "France, Metropolitan", ShortName="fx", RedumpOrgCode="Fx")]
//FranceMetropolitan,
- [RegionCode(LongName = "French Guiana", ShortName="gf", RedumpOrgCode="Gf")]
+ [RegionCode(LongName = "French Guiana", ShortName = "gf", RedumpOrgCode = "Gf")]
FrenchGuiana,
- [RegionCode(LongName = "French Polynesia", ShortName="pf", RedumpOrgCode="Pf")]
+ [RegionCode(LongName = "French Polynesia", ShortName = "pf", RedumpOrgCode = "Pf")]
FrenchPolynesia,
- [RegionCode(LongName = "French Southern Territories", ShortName="tf", RedumpOrgCode="Tf")]
+ [RegionCode(LongName = "French Southern Territories", ShortName = "tf", RedumpOrgCode = "Tf")]
FrenchSouthernTerritories,
#endregion
#region G
- [RegionCode(LongName = "Gabon", ShortName="ga", RedumpOrgCode="Ga")]
+ [RegionCode(LongName = "Gabon", ShortName = "ga", RedumpOrgCode = "Ga")]
Gabon,
- [RegionCode(LongName = "Gambia", ShortName="gm", RedumpOrgCode="Gm")]
+ [RegionCode(LongName = "Gambia", ShortName = "gm", RedumpOrgCode = "Gm")]
Gambia,
- [RegionCode(LongName = "Georgia", ShortName="ge", RedumpOrgCode="Ge")]
+ [RegionCode(LongName = "Georgia", ShortName = "ge", RedumpOrgCode = "Ge")]
Georgia,
- [RegionCode(LongName = "Germany", ShortName="de", RedumpOrgCode="G")]
+ [RegionCode(LongName = "Germany", ShortName = "de", RedumpOrgCode = "G")]
Germany,
- [RegionCode(LongName = "Ghana", ShortName="gh", RedumpOrgCode="Gh")]
+ [RegionCode(LongName = "Ghana", ShortName = "gh", RedumpOrgCode = "Gh")]
Ghana,
- [RegionCode(LongName = "Gibraltar", ShortName="gi", RedumpOrgCode="Gi")]
+ [RegionCode(LongName = "Gibraltar", ShortName = "gi", RedumpOrgCode = "Gi")]
Gibraltar,
- [RegionCode(LongName = "Greece", ShortName="gr", RedumpOrgCode="Gr")]
+ [RegionCode(LongName = "Greece", ShortName = "gr", RedumpOrgCode = "Gr")]
Greece,
- [RegionCode(LongName = "Greenland", ShortName="gl", RedumpOrgCode="Gl")]
+ [RegionCode(LongName = "Greenland", ShortName = "gl", RedumpOrgCode = "Gl")]
Greenland,
- [RegionCode(LongName = "Grenada", ShortName="gd", RedumpOrgCode="Gd")]
+ [RegionCode(LongName = "Grenada", ShortName = "gd", RedumpOrgCode = "Gd")]
Grenada,
- [RegionCode(LongName = "Guadeloupe", ShortName="gp", RedumpOrgCode="Gp")]
+ [RegionCode(LongName = "Guadeloupe", ShortName = "gp", RedumpOrgCode = "Gp")]
Guadeloupe,
- [RegionCode(LongName = "Guam", ShortName="gu", RedumpOrgCode="Gu")]
+ [RegionCode(LongName = "Guam", ShortName = "gu", RedumpOrgCode = "Gu")]
Guam,
- [RegionCode(LongName = "Guatemala", ShortName="gt", RedumpOrgCode="Gt")]
+ [RegionCode(LongName = "Guatemala", ShortName = "gt", RedumpOrgCode = "Gt")]
Guatemala,
- [RegionCode(LongName = "Guernsey", ShortName="gg", RedumpOrgCode="Gg")]
+ [RegionCode(LongName = "Guernsey", ShortName = "gg", RedumpOrgCode = "Gg")]
Guernsey,
- [RegionCode(LongName = "Guinea", ShortName="gn", RedumpOrgCode="Gn")]
+ [RegionCode(LongName = "Guinea", ShortName = "gn", RedumpOrgCode = "Gn")]
Guinea,
- [RegionCode(LongName = "Guinea-Bissau", ShortName="gw", RedumpOrgCode="Gw")]
+ [RegionCode(LongName = "Guinea-Bissau", ShortName = "gw", RedumpOrgCode = "Gw")]
GuineaBissau,
- [RegionCode(LongName = "Guyana", ShortName="gy", RedumpOrgCode="Gy")]
+ [RegionCode(LongName = "Guyana", ShortName = "gy", RedumpOrgCode = "Gy")]
Guyana,
#endregion
#region H
- [RegionCode(LongName = "Haiti", ShortName="ht", RedumpOrgCode="Ht")]
+ [RegionCode(LongName = "Haiti", ShortName = "ht", RedumpOrgCode = "Ht")]
Haiti,
- [RegionCode(LongName = "Heard Island and McDonald Islands", ShortName="hm", RedumpOrgCode="Hm")]
+ [RegionCode(LongName = "Heard Island and McDonald Islands", ShortName = "hm", RedumpOrgCode = "Hm")]
HeardIslandAndMcDonaldIslands,
- [RegionCode(LongName = "Holy See (Vatican City)", ShortName="va", RedumpOrgCode="Va")]
+ [RegionCode(LongName = "Holy See (Vatican City)", ShortName = "va", RedumpOrgCode = "Va")]
HolySee,
- [RegionCode(LongName = "Honduras", ShortName="hn", RedumpOrgCode="Hn")]
+ [RegionCode(LongName = "Honduras", ShortName = "hn", RedumpOrgCode = "Hn")]
Honduras,
- [RegionCode(LongName = "Hong Kong", ShortName="hk", RedumpOrgCode="Hk")]
+ [RegionCode(LongName = "Hong Kong", ShortName = "hk", RedumpOrgCode = "Hk")]
HongKong,
- [RegionCode(LongName = "Hungary", ShortName="hu", RedumpOrgCode="H")]
+ [RegionCode(LongName = "Hungary", ShortName = "hu", RedumpOrgCode = "H")]
Hungary,
#endregion
#region I
- [RegionCode(LongName = "Iceland", ShortName="is", RedumpOrgCode="Is")]
+ [RegionCode(LongName = "Iceland", ShortName = "is", RedumpOrgCode = "Is")]
Iceland,
- [RegionCode(LongName = "India", ShortName="in", RedumpOrgCode="In")]
+ [RegionCode(LongName = "India", ShortName = "in", RedumpOrgCode = "In")]
India,
- [RegionCode(LongName = "Indonesia", ShortName="id", RedumpOrgCode="Id")]
+ [RegionCode(LongName = "Indonesia", ShortName = "id", RedumpOrgCode = "Id")]
Indonesia,
- [RegionCode(LongName = "Iran", ShortName="ir", RedumpOrgCode="Ir")]
+ [RegionCode(LongName = "Iran", ShortName = "ir", RedumpOrgCode = "Ir")]
Iran,
- [RegionCode(LongName = "Iraq", ShortName="iq", RedumpOrgCode="Iq")]
+ [RegionCode(LongName = "Iraq", ShortName = "iq", RedumpOrgCode = "Iq")]
Iraq,
- [RegionCode(LongName = "Ireland", ShortName="ie", RedumpOrgCode="Ie")]
+ [RegionCode(LongName = "Ireland", ShortName = "ie", RedumpOrgCode = "Ie")]
Ireland,
- [RegionCode(LongName = "Island of Sark", ShortName="cq", RedumpOrgCode="Cq")]
+ [RegionCode(LongName = "Island of Sark", ShortName = "cq", RedumpOrgCode = "Cq")]
IslandOfSark,
- [RegionCode(LongName = "Isle of Man", ShortName="im", RedumpOrgCode="Im")]
+ [RegionCode(LongName = "Isle of Man", ShortName = "im", RedumpOrgCode = "Im")]
IsleOfMan,
- [RegionCode(LongName = "Israel", ShortName="il", RedumpOrgCode="Il")]
+ [RegionCode(LongName = "Israel", ShortName = "il", RedumpOrgCode = "Il")]
Israel,
- [RegionCode(LongName = "Italy", ShortName="it", RedumpOrgCode="I")]
+ [RegionCode(LongName = "Italy", ShortName = "it", RedumpOrgCode = "I")]
Italy,
#endregion
#region J
- [RegionCode(LongName = "Jamaica", ShortName="jm", RedumpOrgCode="Jm")]
+ [RegionCode(LongName = "Jamaica", ShortName = "jm", RedumpOrgCode = "Jm")]
Jamaica,
- [RegionCode(LongName = "Japan", ShortName="jp", RedumpOrgCode="J")]
+ [RegionCode(LongName = "Japan", ShortName = "jp", RedumpOrgCode = "J")]
Japan,
- [RegionCode(LongName = "Jersey", ShortName="je", RedumpOrgCode="Je")]
+ [RegionCode(LongName = "Jersey", ShortName = "je", RedumpOrgCode = "Je")]
Jersey,
- [RegionCode(LongName = "Jordan", ShortName="jo", RedumpOrgCode="Jo")]
+ [RegionCode(LongName = "Jordan", ShortName = "jo", RedumpOrgCode = "Jo")]
Jordan,
#endregion
#region K
- [RegionCode(LongName = "Kazakhstan", ShortName="kz", RedumpOrgCode="Kz")]
+ [RegionCode(LongName = "Kazakhstan", ShortName = "kz", RedumpOrgCode = "Kz")]
Kazakhstan,
- [RegionCode(LongName = "Kenya", ShortName="ke", RedumpOrgCode="Ke")]
+ [RegionCode(LongName = "Kenya", ShortName = "ke", RedumpOrgCode = "Ke")]
Kenya,
- [RegionCode(LongName = "Kiribati", ShortName="ki", RedumpOrgCode="Ki")]
+ [RegionCode(LongName = "Kiribati", ShortName = "ki", RedumpOrgCode = "Ki")]
Kiribati,
- [RegionCode(LongName = "Korea (Democratic People's Republic of Korea)", ShortName="kp", RedumpOrgCode="Kp")]
+ [RegionCode(LongName = "Korea (Democratic People's Republic of Korea)", ShortName = "kp", RedumpOrgCode = "Kp")]
NorthKorea,
- [RegionCode(LongName = "Korea (Republic of Korea)", ShortName="kr", RedumpOrgCode="K")]
+ [RegionCode(LongName = "Korea (Republic of Korea)", ShortName = "kr", RedumpOrgCode = "K")]
SouthKorea,
- [RegionCode(LongName = "Kuwait", ShortName="kw", RedumpOrgCode="Kw")]
+ [RegionCode(LongName = "Kuwait", ShortName = "kw", RedumpOrgCode = "Kw")]
Kuwait,
- [RegionCode(LongName = "Kyrgyzstan", ShortName="kg", RedumpOrgCode="Kg")]
+ [RegionCode(LongName = "Kyrgyzstan", ShortName = "kg", RedumpOrgCode = "Kg")]
Kyrgyzstan,
#endregion
#region L
- [RegionCode(LongName = "(Laos) Lao People's Democratic Republic", ShortName="la", RedumpOrgCode="La")]
+ [RegionCode(LongName = "(Laos) Lao People's Democratic Republic", ShortName = "la", RedumpOrgCode = "La")]
Laos,
- [RegionCode(LongName = "Latvia", ShortName="lv", RedumpOrgCode="Lv")]
+ [RegionCode(LongName = "Latvia", ShortName = "lv", RedumpOrgCode = "Lv")]
Latvia,
- [RegionCode(LongName = "Lebanon", ShortName="lb", RedumpOrgCode="Lb")]
+ [RegionCode(LongName = "Lebanon", ShortName = "lb", RedumpOrgCode = "Lb")]
Lebanon,
- [RegionCode(LongName = "Lesotho", ShortName="ls", RedumpOrgCode="Ls")]
+ [RegionCode(LongName = "Lesotho", ShortName = "ls", RedumpOrgCode = "Ls")]
Lesotho,
- [RegionCode(LongName = "Liberia", ShortName="lr", RedumpOrgCode="Lr")]
+ [RegionCode(LongName = "Liberia", ShortName = "lr", RedumpOrgCode = "Lr")]
Liberia,
- [RegionCode(LongName = "Libya", ShortName="ly", RedumpOrgCode="Ly")]
+ [RegionCode(LongName = "Libya", ShortName = "ly", RedumpOrgCode = "Ly")]
Libya,
- [RegionCode(LongName = "Liechtenstein", ShortName="li", RedumpOrgCode="Li")]
+ [RegionCode(LongName = "Liechtenstein", ShortName = "li", RedumpOrgCode = "Li")]
Liechtenstein,
- [RegionCode(LongName = "Lithuania", ShortName="lt", RedumpOrgCode="Lt")]
+ [RegionCode(LongName = "Lithuania", ShortName = "lt", RedumpOrgCode = "Lt")]
Lithuania,
- [RegionCode(LongName = "Luxembourg", ShortName="lu", RedumpOrgCode="Lu")]
+ [RegionCode(LongName = "Luxembourg", ShortName = "lu", RedumpOrgCode = "Lu")]
Luxembourg,
#endregion
#region M
- [RegionCode(LongName = "Macao", ShortName="mo", RedumpOrgCode="Mo")]
+ [RegionCode(LongName = "Macao", ShortName = "mo", RedumpOrgCode = "Mo")]
Macao,
- [RegionCode(LongName = "Madagascar", ShortName="mg", RedumpOrgCode="Mg")]
+ [RegionCode(LongName = "Madagascar", ShortName = "mg", RedumpOrgCode = "Mg")]
Madagascar,
- [RegionCode(LongName = "Malawi", ShortName="mw", RedumpOrgCode="Mw")]
+ [RegionCode(LongName = "Malawi", ShortName = "mw", RedumpOrgCode = "Mw")]
Malawi,
- [RegionCode(LongName = "Malaysia", ShortName="my", RedumpOrgCode="My")]
+ [RegionCode(LongName = "Malaysia", ShortName = "my", RedumpOrgCode = "My")]
Malaysia,
- [RegionCode(LongName = "Maldives", ShortName="mv", RedumpOrgCode="Mv")]
+ [RegionCode(LongName = "Maldives", ShortName = "mv", RedumpOrgCode = "Mv")]
Maldives,
- [RegionCode(LongName = "Mali", ShortName="ml", RedumpOrgCode="Ml")]
+ [RegionCode(LongName = "Mali", ShortName = "ml", RedumpOrgCode = "Ml")]
Mali,
- [RegionCode(LongName = "Malta", ShortName="mt", RedumpOrgCode="Mt")]
+ [RegionCode(LongName = "Malta", ShortName = "mt", RedumpOrgCode = "Mt")]
Malta,
- [RegionCode(LongName = "Marshall Islands", ShortName="mh", RedumpOrgCode="Mh")]
+ [RegionCode(LongName = "Marshall Islands", ShortName = "mh", RedumpOrgCode = "Mh")]
MarshallIslands,
- [RegionCode(LongName = "Martinique", ShortName="mq", RedumpOrgCode="Mq")]
+ [RegionCode(LongName = "Martinique", ShortName = "mq", RedumpOrgCode = "Mq")]
Martinique,
- [RegionCode(LongName = "Mauritania", ShortName="mr", RedumpOrgCode="Mr")]
+ [RegionCode(LongName = "Mauritania", ShortName = "mr", RedumpOrgCode = "Mr")]
Mauritania,
- [RegionCode(LongName = "Mauritius", ShortName="mu", RedumpOrgCode="Mu")]
+ [RegionCode(LongName = "Mauritius", ShortName = "mu", RedumpOrgCode = "Mu")]
Mauritius,
- [RegionCode(LongName = "Mayotte", ShortName="yt", RedumpOrgCode="Yt")]
+ [RegionCode(LongName = "Mayotte", ShortName = "yt", RedumpOrgCode = "Yt")]
Mayotte,
- [RegionCode(LongName = "Mexico", ShortName="mx", RedumpOrgCode="Mx")]
+ [RegionCode(LongName = "Mexico", ShortName = "mx", RedumpOrgCode = "Mx")]
Mexico,
- [RegionCode(LongName = "Monaco", ShortName="mc", RedumpOrgCode="Mc")]
+ [RegionCode(LongName = "Monaco", ShortName = "mc", RedumpOrgCode = "Mc")]
Monaco,
- [RegionCode(LongName = "Mongolia", ShortName="mn", RedumpOrgCode="Mn")]
+ [RegionCode(LongName = "Mongolia", ShortName = "mn", RedumpOrgCode = "Mn")]
Mongolia,
- [RegionCode(LongName = "Montenegro", ShortName="me", RedumpOrgCode="Me")]
+ [RegionCode(LongName = "Montenegro", ShortName = "me", RedumpOrgCode = "Me")]
Montenegro,
- [RegionCode(LongName = "Montserrat", ShortName="ms", RedumpOrgCode="Ms")]
+ [RegionCode(LongName = "Montserrat", ShortName = "ms", RedumpOrgCode = "Ms")]
Montserrat,
- [RegionCode(LongName = "Morocco", ShortName="ma", RedumpOrgCode="Ma")]
+ [RegionCode(LongName = "Morocco", ShortName = "ma", RedumpOrgCode = "Ma")]
Morocco,
- [RegionCode(LongName = "Mozambique", ShortName="mz", RedumpOrgCode="Mz")]
+ [RegionCode(LongName = "Mozambique", ShortName = "mz", RedumpOrgCode = "Mz")]
Mozambique,
// Burma was "Bu"
- [RegionCode(LongName = "Myanmar (Burma)", ShortName="mm", RedumpOrgCode="Mm")]
+ [RegionCode(LongName = "Myanmar (Burma)", ShortName = "mm", RedumpOrgCode = "Mm")]
Myanmar,
#endregion
#region N
- [RegionCode(LongName = "Namibia", ShortName="na", RedumpOrgCode="Na")]
+ [RegionCode(LongName = "Namibia", ShortName = "na", RedumpOrgCode = "Na")]
Namibia,
- [RegionCode(LongName = "Nauru", ShortName="nr", RedumpOrgCode="Nr")]
+ [RegionCode(LongName = "Nauru", ShortName = "nr", RedumpOrgCode = "Nr")]
Nauru,
- [RegionCode(LongName = "Nepal", ShortName="np", RedumpOrgCode="Np")]
+ [RegionCode(LongName = "Nepal", ShortName = "np", RedumpOrgCode = "Np")]
Nepal,
- [RegionCode(LongName = "Netherlands", ShortName="nl", RedumpOrgCode="N")]
+ [RegionCode(LongName = "Netherlands", ShortName = "nl", RedumpOrgCode = "N")]
Netherlands,
- [RegionCode(LongName = "Netherlands Antilles", ShortName="an", RedumpOrgCode="An")]
+ [RegionCode(LongName = "Netherlands Antilles", ShortName = "an", RedumpOrgCode = "An")]
NetherlandsAntilles,
// Commented out to avoid confusion
//[RegionCode(LongName = "Neutral Zone", ShortName="nt", RedumpOrgCode="Nt")]
//NeutralZone,
- [RegionCode(LongName = "New Caledonia", ShortName="nc", RedumpOrgCode="Nc")]
+ [RegionCode(LongName = "New Caledonia", ShortName = "nc", RedumpOrgCode = "Nc")]
NewCaledonia,
- [RegionCode(LongName = "New Zealand", ShortName="nz", RedumpOrgCode="Nz")]
+ [RegionCode(LongName = "New Zealand", ShortName = "nz", RedumpOrgCode = "Nz")]
NewZealand,
- [RegionCode(LongName = "Nicaragua", ShortName="ni", RedumpOrgCode="Ni")]
+ [RegionCode(LongName = "Nicaragua", ShortName = "ni", RedumpOrgCode = "Ni")]
Nicaragua,
- [RegionCode(LongName = "Niger", ShortName="ne", RedumpOrgCode="Ne")]
+ [RegionCode(LongName = "Niger", ShortName = "ne", RedumpOrgCode = "Ne")]
Niger,
- [RegionCode(LongName = "Nigeria", ShortName="ng", RedumpOrgCode="Ng")]
+ [RegionCode(LongName = "Nigeria", ShortName = "ng", RedumpOrgCode = "Ng")]
Nigeria,
- [RegionCode(LongName = "Niue", ShortName="nu", RedumpOrgCode="Nu")]
+ [RegionCode(LongName = "Niue", ShortName = "nu", RedumpOrgCode = "Nu")]
Niue,
- [RegionCode(LongName = "Norfolk Island", ShortName="nf", RedumpOrgCode="Nf")]
+ [RegionCode(LongName = "Norfolk Island", ShortName = "nf", RedumpOrgCode = "Nf")]
NorfolkIsland,
- [RegionCode(LongName = "North Macedonia", ShortName="mk", RedumpOrgCode="Mk")]
+ [RegionCode(LongName = "North Macedonia", ShortName = "mk", RedumpOrgCode = "Mk")]
NorthMacedonia,
- [RegionCode(LongName = "Northern Mariana Islands", ShortName="mp", RedumpOrgCode="Mp")]
+ [RegionCode(LongName = "Northern Mariana Islands", ShortName = "mp", RedumpOrgCode = "Mp")]
NorthernMarianaIslands,
- [RegionCode(LongName = "Norway", ShortName="no", RedumpOrgCode="No")]
+ [RegionCode(LongName = "Norway", ShortName = "no", RedumpOrgCode = "No")]
Norway,
#endregion
#region O
- [RegionCode(LongName = "Oman", ShortName="om", RedumpOrgCode="Om")]
+ [RegionCode(LongName = "Oman", ShortName = "om", RedumpOrgCode = "Om")]
Oman,
#endregion
#region P
- [RegionCode(LongName = "Pakistan", ShortName="pk", RedumpOrgCode="Pk")]
+ [RegionCode(LongName = "Pakistan", ShortName = "pk", RedumpOrgCode = "Pk")]
Pakistan,
- [RegionCode(LongName = "Palau", ShortName="pw", RedumpOrgCode="Pw")]
+ [RegionCode(LongName = "Palau", ShortName = "pw", RedumpOrgCode = "Pw")]
Palau,
- [RegionCode(LongName = "Panama", ShortName="pa", RedumpOrgCode="Pa")]
+ [RegionCode(LongName = "Panama", ShortName = "pa", RedumpOrgCode = "Pa")]
Panama,
- [RegionCode(LongName = "Papua New Guinea", ShortName="pg", RedumpOrgCode="Pg")]
+ [RegionCode(LongName = "Papua New Guinea", ShortName = "pg", RedumpOrgCode = "Pg")]
PapuaNewGuinea,
- [RegionCode(LongName = "Paraguay", ShortName="py", RedumpOrgCode="Py")]
+ [RegionCode(LongName = "Paraguay", ShortName = "py", RedumpOrgCode = "Py")]
Paraguay,
- [RegionCode(LongName = "Peru", ShortName="pe", RedumpOrgCode="Pe")]
+ [RegionCode(LongName = "Peru", ShortName = "pe", RedumpOrgCode = "Pe")]
Peru,
- [RegionCode(LongName = "Philippines", ShortName="ph", RedumpOrgCode="Ph")]
+ [RegionCode(LongName = "Philippines", ShortName = "ph", RedumpOrgCode = "Ph")]
Philippines,
- [RegionCode(LongName = "Pitcairn", ShortName="pn", RedumpOrgCode="Pn")]
+ [RegionCode(LongName = "Pitcairn", ShortName = "pn", RedumpOrgCode = "Pn")]
Pitcairn,
- [RegionCode(LongName = "Poland", ShortName="pl", RedumpOrgCode="P")]
+ [RegionCode(LongName = "Poland", ShortName = "pl", RedumpOrgCode = "P")]
Poland,
- [RegionCode(LongName = "Portugal", ShortName="pt", RedumpOrgCode="Pt")]
+ [RegionCode(LongName = "Portugal", ShortName = "pt", RedumpOrgCode = "Pt")]
Portugal,
- [RegionCode(LongName = "Puerto Rico", ShortName="pr", RedumpOrgCode="Pr")]
+ [RegionCode(LongName = "Puerto Rico", ShortName = "pr", RedumpOrgCode = "Pr")]
PuertoRico,
#endregion
#region Q
- [RegionCode(LongName = "Qatar", ShortName="qa", RedumpOrgCode="Qa")]
+ [RegionCode(LongName = "Qatar", ShortName = "qa", RedumpOrgCode = "Qa")]
Qatar,
#endregion
#region R
- [RegionCode(LongName = "Republic of Moldova", ShortName="md", RedumpOrgCode="Md")]
+ [RegionCode(LongName = "Republic of Moldova", ShortName = "md", RedumpOrgCode = "Md")]
RepublicOfMoldova,
- [RegionCode(LongName = "Réunion", ShortName="re", RedumpOrgCode="Re")]
+ [RegionCode(LongName = "Réunion", ShortName = "re", RedumpOrgCode = "Re")]
Reunion,
- [RegionCode(LongName = "Romania", ShortName="ro", RedumpOrgCode="Ro")]
+ [RegionCode(LongName = "Romania", ShortName = "ro", RedumpOrgCode = "Ro")]
Romania,
- [RegionCode(LongName = "Russian Federation", ShortName="ru", RedumpOrgCode="R")]
+ [RegionCode(LongName = "Russian Federation", ShortName = "ru", RedumpOrgCode = "R")]
RussianFederation,
- [RegionCode(LongName = "Rwanda", ShortName="rw", RedumpOrgCode="Rw")]
+ [RegionCode(LongName = "Rwanda", ShortName = "rw", RedumpOrgCode = "Rw")]
Rwanda,
#endregion
#region S
- [RegionCode(LongName = "Saint Barthélemy", ShortName="bl", RedumpOrgCode="Bl")]
+ [RegionCode(LongName = "Saint Barthélemy", ShortName = "bl", RedumpOrgCode = "Bl")]
SaintBarthelemy,
- [RegionCode(LongName = "Saint Helena, Ascension and Tristan da Cunha", ShortName="sh", RedumpOrgCode="Sh")]
+ [RegionCode(LongName = "Saint Helena, Ascension and Tristan da Cunha", ShortName = "sh", RedumpOrgCode = "Sh")]
SaintHelena,
- [RegionCode(LongName = "Saint Kitts and Nevis", ShortName="kn", RedumpOrgCode="Kn")]
+ [RegionCode(LongName = "Saint Kitts and Nevis", ShortName = "kn", RedumpOrgCode = "Kn")]
SaintKittsAndNevis,
- [RegionCode(LongName = "Saint Lucia", ShortName="lc", RedumpOrgCode="Lc")]
+ [RegionCode(LongName = "Saint Lucia", ShortName = "lc", RedumpOrgCode = "Lc")]
SaintLucia,
- [RegionCode(LongName = "Saint Martin", ShortName="mf", RedumpOrgCode="Mf")]
+ [RegionCode(LongName = "Saint Martin", ShortName = "mf", RedumpOrgCode = "Mf")]
SaintMartin,
- [RegionCode(LongName = "Saint Pierre and Miquelon", ShortName="pm", RedumpOrgCode="Pm")]
+ [RegionCode(LongName = "Saint Pierre and Miquelon", ShortName = "pm", RedumpOrgCode = "Pm")]
SaintPierreAndMiquelon,
- [RegionCode(LongName = "Saint Vincent and the Grenadines", ShortName="vc", RedumpOrgCode="Vc")]
+ [RegionCode(LongName = "Saint Vincent and the Grenadines", ShortName = "vc", RedumpOrgCode = "Vc")]
SaintVincentAndTheGrenadines,
- [RegionCode(LongName = "Samoa", ShortName="ws", RedumpOrgCode="Ws")]
+ [RegionCode(LongName = "Samoa", ShortName = "ws", RedumpOrgCode = "Ws")]
Samoa,
- [RegionCode(LongName = "San Marino", ShortName="sm", RedumpOrgCode="Sm")]
+ [RegionCode(LongName = "San Marino", ShortName = "sm", RedumpOrgCode = "Sm")]
SanMarino,
- [RegionCode(LongName = "Sao Tome and Principe", ShortName="st", RedumpOrgCode="St")]
+ [RegionCode(LongName = "Sao Tome and Principe", ShortName = "st", RedumpOrgCode = "St")]
SaoTomeAndPrincipe,
- [RegionCode(LongName = "Saudi Arabia", ShortName="sa", RedumpOrgCode="Sa")]
+ [RegionCode(LongName = "Saudi Arabia", ShortName = "sa", RedumpOrgCode = "Sa")]
SaudiArabia,
- [RegionCode(LongName = "Senegal", ShortName="sn", RedumpOrgCode="Sn")]
+ [RegionCode(LongName = "Senegal", ShortName = "sn", RedumpOrgCode = "Sn")]
Senegal,
- [RegionCode(LongName = "Serbia", ShortName="rs", RedumpOrgCode="Rs")]
+ [RegionCode(LongName = "Serbia", ShortName = "rs", RedumpOrgCode = "Rs")]
Serbia,
- [RegionCode(LongName = "Seychelles", ShortName="sc", RedumpOrgCode="Sc")]
+ [RegionCode(LongName = "Seychelles", ShortName = "sc", RedumpOrgCode = "Sc")]
Seychelles,
- [RegionCode(LongName = "Sierra Leone", ShortName="sl", RedumpOrgCode="Sl")]
+ [RegionCode(LongName = "Sierra Leone", ShortName = "sl", RedumpOrgCode = "Sl")]
SierraLeone,
- [RegionCode(LongName = "Singapore", ShortName="sg", RedumpOrgCode="Sg")]
+ [RegionCode(LongName = "Singapore", ShortName = "sg", RedumpOrgCode = "Sg")]
Singapore,
- [RegionCode(LongName = "Sint Maarten", ShortName="sx", RedumpOrgCode="Sx")]
+ [RegionCode(LongName = "Sint Maarten", ShortName = "sx", RedumpOrgCode = "Sx")]
SintMaarten,
- [RegionCode(LongName = "Slovakia", ShortName="sk", RedumpOrgCode="Sk")]
+ [RegionCode(LongName = "Slovakia", ShortName = "sk", RedumpOrgCode = "Sk")]
Slovakia,
- [RegionCode(LongName = "Slovenia", ShortName="si", RedumpOrgCode="Si")]
+ [RegionCode(LongName = "Slovenia", ShortName = "si", RedumpOrgCode = "Si")]
Slovenia,
- [RegionCode(LongName = "Solomon Islands", ShortName="sb", RedumpOrgCode="Sb")]
+ [RegionCode(LongName = "Solomon Islands", ShortName = "sb", RedumpOrgCode = "Sb")]
SolomonIslands,
- [RegionCode(LongName = "Somalia", ShortName="so", RedumpOrgCode="So")]
+ [RegionCode(LongName = "Somalia", ShortName = "so", RedumpOrgCode = "So")]
Somalia,
- [RegionCode(LongName = "South Africa", ShortName="za", RedumpOrgCode="Za")]
+ [RegionCode(LongName = "South Africa", ShortName = "za", RedumpOrgCode = "Za")]
SouthAfrica,
- [RegionCode(LongName = "South Georgia and the South Sandwich Islands", ShortName="gs", RedumpOrgCode="Gs")]
+ [RegionCode(LongName = "South Georgia and the South Sandwich Islands", ShortName = "gs", RedumpOrgCode = "Gs")]
SouthGeorgia,
- [RegionCode(LongName = "South Sudan", ShortName="ss", RedumpOrgCode="Ss")]
+ [RegionCode(LongName = "South Sudan", ShortName = "ss", RedumpOrgCode = "Ss")]
SouthSudan,
- [RegionCode(LongName = "Spain", ShortName="es", RedumpOrgCode="S")]
+ [RegionCode(LongName = "Spain", ShortName = "es", RedumpOrgCode = "S")]
Spain,
- [RegionCode(LongName = "Sri Lanka", ShortName="lk", RedumpOrgCode="Lk")]
+ [RegionCode(LongName = "Sri Lanka", ShortName = "lk", RedumpOrgCode = "Lk")]
SriLanka,
- [RegionCode(LongName = "State of Palestine", ShortName="ps", RedumpOrgCode="Ps")]
+ [RegionCode(LongName = "State of Palestine", ShortName = "ps", RedumpOrgCode = "Ps")]
StateOfPalestine,
- [RegionCode(LongName = "Sudan", ShortName="sd", RedumpOrgCode="Sd")]
+ [RegionCode(LongName = "Sudan", ShortName = "sd", RedumpOrgCode = "Sd")]
Sudan,
- [RegionCode(LongName = "Suriname", ShortName="sr", RedumpOrgCode="Sr")]
+ [RegionCode(LongName = "Suriname", ShortName = "sr", RedumpOrgCode = "Sr")]
Suriname,
- [RegionCode(LongName = "Svalbard and Jan Mayen", ShortName="sj", RedumpOrgCode="Sj")]
+ [RegionCode(LongName = "Svalbard and Jan Mayen", ShortName = "sj", RedumpOrgCode = "Sj")]
SvalbardAndJanMayen,
- [RegionCode(LongName = "Sweden", ShortName="se", RedumpOrgCode="Sw")]
+ [RegionCode(LongName = "Sweden", ShortName = "se", RedumpOrgCode = "Sw")]
Sweden,
- [RegionCode(LongName = "Switzerland", ShortName="ch", RedumpOrgCode="Ch")]
+ [RegionCode(LongName = "Switzerland", ShortName = "ch", RedumpOrgCode = "Ch")]
Switzerland,
- [RegionCode(LongName = "Syrian Arab Republic", ShortName="sy", RedumpOrgCode="Sy")]
+ [RegionCode(LongName = "Syrian Arab Republic", ShortName = "sy", RedumpOrgCode = "Sy")]
SyrianArabRepublic,
#endregion
#region T
- [RegionCode(LongName = "Taiwan", ShortName="tw", RedumpOrgCode="Tw")]
+ [RegionCode(LongName = "Taiwan", ShortName = "tw", RedumpOrgCode = "Tw")]
Taiwan,
- [RegionCode(LongName = "Tajikistan", ShortName="tj", RedumpOrgCode="Tj")]
+ [RegionCode(LongName = "Tajikistan", ShortName = "tj", RedumpOrgCode = "Tj")]
Tajikistan,
- [RegionCode(LongName = "Thailand", ShortName="th", RedumpOrgCode="Th")]
+ [RegionCode(LongName = "Thailand", ShortName = "th", RedumpOrgCode = "Th")]
Thailand,
// East Timor was "Tp"
- [RegionCode(LongName = "Timor-Leste (East Timor)", ShortName="tl", RedumpOrgCode="Tl")]
+ [RegionCode(LongName = "Timor-Leste (East Timor)", ShortName = "tl", RedumpOrgCode = "Tl")]
TimorLeste,
- [RegionCode(LongName = "Togo", ShortName="tg", RedumpOrgCode="Tg")]
+ [RegionCode(LongName = "Togo", ShortName = "tg", RedumpOrgCode = "Tg")]
Togo,
- [RegionCode(LongName = "Tokelau", ShortName="tk", RedumpOrgCode="Tk")]
+ [RegionCode(LongName = "Tokelau", ShortName = "tk", RedumpOrgCode = "Tk")]
Tokelau,
- [RegionCode(LongName = "Tonga", ShortName="to", RedumpOrgCode="To")]
+ [RegionCode(LongName = "Tonga", ShortName = "to", RedumpOrgCode = "To")]
Tonga,
- [RegionCode(LongName = "Trinidad and Tobago", ShortName="tt", RedumpOrgCode="Tt")]
+ [RegionCode(LongName = "Trinidad and Tobago", ShortName = "tt", RedumpOrgCode = "Tt")]
TrinidadAndTobago,
- [RegionCode(LongName = "Tristan da Cunha", ShortName="ta", RedumpOrgCode="Ta")]
+ [RegionCode(LongName = "Tristan da Cunha", ShortName = "ta", RedumpOrgCode = "Ta")]
TristanDaCunha,
- [RegionCode(LongName = "Tunisia", ShortName="tn", RedumpOrgCode="Tn")]
+ [RegionCode(LongName = "Tunisia", ShortName = "tn", RedumpOrgCode = "Tn")]
Tunisia,
- [RegionCode(LongName = "Turkey", ShortName="tr", RedumpOrgCode="Tr")]
+ [RegionCode(LongName = "Turkey", ShortName = "tr", RedumpOrgCode = "Tr")]
Turkey,
- [RegionCode(LongName = "Turkmenistan", ShortName="tm", RedumpOrgCode="Tm")]
+ [RegionCode(LongName = "Turkmenistan", ShortName = "tm", RedumpOrgCode = "Tm")]
Turkmenistan,
- [RegionCode(LongName = "Turks and Caicos Islands", ShortName="tc", RedumpOrgCode="Tc")]
+ [RegionCode(LongName = "Turks and Caicos Islands", ShortName = "tc", RedumpOrgCode = "Tc")]
TurksAndCaicosIslands,
- [RegionCode(LongName = "Tuvalu", ShortName="tv", RedumpOrgCode="Tv")]
+ [RegionCode(LongName = "Tuvalu", ShortName = "tv", RedumpOrgCode = "Tv")]
Tuvalu,
#endregion
#region U
- [RegionCode(LongName = "Uganda", ShortName="ug", RedumpOrgCode="Ug")]
+ [RegionCode(LongName = "Uganda", ShortName = "ug", RedumpOrgCode = "Ug")]
Uganda,
// Should be both "Gb" and "Uk"
// United Kingdom of Great Britain and Northern Ireland
- [RegionCode(LongName = "UK", ShortName="gb", RedumpOrgCode="Uk")]
+ [RegionCode(LongName = "UK", ShortName = "gb", RedumpOrgCode = "Uk")]
UnitedKingdom,
- [RegionCode(LongName = "Ukraine", ShortName="ue", RedumpOrgCode="Ue")]
+ [RegionCode(LongName = "Ukraine", ShortName = "ue", RedumpOrgCode = "Ue")]
Ukraine,
- [RegionCode(LongName = "United Arab Emirates", ShortName="ae", RedumpOrgCode="Ae")]
+ [RegionCode(LongName = "United Arab Emirates", ShortName = "ae", RedumpOrgCode = "Ae")]
UnitedArabEmirates,
// Commented out to avoid confusion
//[RegionCode(LongName = "United Nations", ShortName="un", RedumpOrgCode="Un")]
//UnitedNations,
- [RegionCode(LongName = "United Republic of Tanzania", ShortName="tz", RedumpOrgCode="Tz")]
+ [RegionCode(LongName = "United Republic of Tanzania", ShortName = "tz", RedumpOrgCode = "Tz")]
UnitedRepublicOfTanzania,
- [RegionCode(LongName = "United States Minor Outlying Islands", ShortName="um", RedumpOrgCode="Um")]
+ [RegionCode(LongName = "United States Minor Outlying Islands", ShortName = "um", RedumpOrgCode = "Um")]
UnitedStatesMinorOutlyingIslands,
- [RegionCode(LongName = "Uruguay", ShortName="uy", RedumpOrgCode="Uy")]
+ [RegionCode(LongName = "Uruguay", ShortName = "uy", RedumpOrgCode = "Uy")]
Uruguay,
// United States of America
- [RegionCode(LongName = "USA", ShortName="us", RedumpOrgCode="U")]
+ [RegionCode(LongName = "USA", ShortName = "us", RedumpOrgCode = "U")]
UnitedStatesOfAmerica,
- [RegionCode(LongName = "USSR", ShortName="su", RedumpOrgCode="Su")]
+ [RegionCode(LongName = "USSR", ShortName = "su", RedumpOrgCode = "Su")]
USSR,
- [RegionCode(LongName = "Uzbekistan", ShortName="uz", RedumpOrgCode="Uz")]
+ [RegionCode(LongName = "Uzbekistan", ShortName = "uz", RedumpOrgCode = "Uz")]
Uzbekistan,
#endregion
#region V
- [RegionCode(LongName = "Vanuatu", ShortName="vu", RedumpOrgCode="Vu")]
+ [RegionCode(LongName = "Vanuatu", ShortName = "vu", RedumpOrgCode = "Vu")]
Vanuatu,
- [RegionCode(LongName = "Venezuela", ShortName="ve", RedumpOrgCode="Ve")]
+ [RegionCode(LongName = "Venezuela", ShortName = "ve", RedumpOrgCode = "Ve")]
Venezuela,
- [RegionCode(LongName = "Viet Nam", ShortName="vn", RedumpOrgCode="Vn")]
+ [RegionCode(LongName = "Viet Nam", ShortName = "vn", RedumpOrgCode = "Vn")]
VietNam,
- [RegionCode(LongName = "Virgin Islands (British)", ShortName="vg", RedumpOrgCode="Vg")]
+ [RegionCode(LongName = "Virgin Islands (British)", ShortName = "vg", RedumpOrgCode = "Vg")]
BritishVirginIslands,
- [RegionCode(LongName = "Virgin Islands (US)", ShortName="vi", RedumpOrgCode="Vi")]
+ [RegionCode(LongName = "Virgin Islands (US)", ShortName = "vi", RedumpOrgCode = "Vi")]
USVirginIslands,
#endregion
#region W
- [RegionCode(LongName = "Wallis and Futuna", ShortName="wf", RedumpOrgCode="Wf")]
+ [RegionCode(LongName = "Wallis and Futuna", ShortName = "wf", RedumpOrgCode = "Wf")]
WallisAndFutuna,
- [RegionCode(LongName = "Western Sahara", ShortName="eh", RedumpOrgCode="Eh")]
+ [RegionCode(LongName = "Western Sahara", ShortName = "eh", RedumpOrgCode = "Eh")]
WesternSahara,
#endregion
#region Y
- [RegionCode(LongName = "Yemen", ShortName="ye", RedumpOrgCode="Ye")]
+ [RegionCode(LongName = "Yemen", ShortName = "ye", RedumpOrgCode = "Ye")]
Yemen,
- [RegionCode(LongName = "Yugoslavia", ShortName="yu", RedumpOrgCode="Yu")]
+ [RegionCode(LongName = "Yugoslavia", ShortName = "yu", RedumpOrgCode = "Yu")]
Yugoslavia,
#endregion
#region Z
- [RegionCode(LongName = "Zambia", ShortName="zm", RedumpOrgCode="Zm")]
+ [RegionCode(LongName = "Zambia", ShortName = "zm", RedumpOrgCode = "Zm")]
Zambia,
- [RegionCode(LongName = "Zimbabwe", ShortName="zw", RedumpOrgCode="Zw")]
+ [RegionCode(LongName = "Zimbabwe", ShortName = "zw", RedumpOrgCode = "Zw")]
Zimbabwe,
#endregion
}
+
+ ///
+ /// 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,
+ };
}
diff --git a/SabreTools.RedumpLib/Data/Extensions.cs b/SabreTools.RedumpLib/Data/Extensions.cs
index bf41805..c003464 100644
--- a/SabreTools.RedumpLib/Data/Extensions.cs
+++ b/SabreTools.RedumpLib/Data/Extensions.cs
@@ -36,6 +36,776 @@ namespace SabreTools.RedumpLib.Data
#endregion
+ #region Cross-Enumeration
+
+ ///
+ /// Get a list of valid MediaTypes for a given PhysicalSystem
+ ///
+ /// PhysicalSystem value to check
+ /// MediaTypes, if possible
+ public static List MediaTypes(this PhysicalSystem? system)
+ {
+ var types = new List();
+
+#pragma warning disable IDE0010 // Add missing cases
+ switch (system)
+ {
+ #region Consoles
+
+ // https://en.wikipedia.org/wiki/Atari_Jaguar_CD
+ case PhysicalSystem.AtariJaguarCDInteractiveMultimediaSystem:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Playdia
+ case PhysicalSystem.BandaiPlaydiaQuickInteractiveSystem:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Apple_Bandai_Pippin
+ case PhysicalSystem.BandaiPippin:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Amiga_CD32
+ case PhysicalSystem.CommodoreAmigaCD32:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Commodore_CDTV
+ case PhysicalSystem.CommodoreAmigaCDTV:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/EVO_Smart_Console
+ case PhysicalSystem.EnvizionsEVOSmartConsole:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://en.wikipedia.org/wiki/FM_Towns_Marty
+ case PhysicalSystem.FujitsuFMTownsMarty:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.FloppyDisk);
+ break;
+
+ // http://videogamekraken.com/ion-educational-gaming-system-by-hasbro
+ case PhysicalSystem.HasbroiONEducationalGamingSystem:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/VideoNow
+ case PhysicalSystem.HasbroVideoNow:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/VideoNow
+ case PhysicalSystem.HasbroVideoNowColor:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/VideoNow
+ case PhysicalSystem.HasbroVideoNowJr:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/VideoNow
+ case PhysicalSystem.HasbroVideoNowXP:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ case PhysicalSystem.MattelFisherPriceiXL:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/HyperScan
+ case PhysicalSystem.MattelHyperScan:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Xbox_(console)
+ case PhysicalSystem.MicrosoftXbox:
+ types.Add(PhysicalMediaType.DVD);
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Xbox_360
+ case PhysicalSystem.MicrosoftXbox360:
+ types.Add(PhysicalMediaType.DVD);
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Xbox_One
+ case PhysicalSystem.MicrosoftXboxOne:
+ types.Add(PhysicalMediaType.BluRay);
+ break;
+
+ // https://en.wikipedia.org/wiki/Xbox_Series_X_and_Series_S
+ case PhysicalSystem.MicrosoftXboxSeriesXS:
+ types.Add(PhysicalMediaType.BluRay);
+ break;
+
+ // https://en.wikipedia.org/wiki/TurboGrafx-16
+ case PhysicalSystem.NECPCEngineCDTurboGrafxCD:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/PC-FX
+ case PhysicalSystem.NECPCFXPCFXGA:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/GameCube
+ case PhysicalSystem.NintendoGameCube:
+ types.Add(PhysicalMediaType.DVD); // Only added here to help users; not strictly correct
+ types.Add(PhysicalMediaType.NintendoGameCubeGameDisc);
+ break;
+
+ // https://en.wikipedia.org/wiki/Super_NES_CD-ROM
+ case PhysicalSystem.NintendoSonySuperNESCDROMSystem:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Wii
+ case PhysicalSystem.NintendoWii:
+ types.Add(PhysicalMediaType.DVD); // Only added here to help users; not strictly correct
+ types.Add(PhysicalMediaType.NintendoWiiOpticalDisc);
+ break;
+
+ // https://en.wikipedia.org/wiki/Wii_U
+ case PhysicalSystem.NintendoWiiU:
+ types.Add(PhysicalMediaType.NintendoWiiUOpticalDisc);
+ break;
+
+ // https://en.wikipedia.org/wiki/3DO_Interactive_Multiplayer
+ case PhysicalSystem.Panasonic3DOInteractiveMultiplayer:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Philips_CD-i
+ case PhysicalSystem.PhilipsCDi:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Polymega
+ case PhysicalSystem.PlaymajiPolymega:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://en.wikipedia.org/wiki/LaserActive
+ case PhysicalSystem.PioneerLaserActive:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.LaserDisc);
+ break;
+
+ // https://en.wikipedia.org/wiki/Sega_CD
+ case PhysicalSystem.SegaMegaCDSegaCD:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Dreamcast
+ case PhysicalSystem.SegaDreamcast:
+ types.Add(PhysicalMediaType.CDROM); // Low density partition, MIL-CD
+ types.Add(PhysicalMediaType.GDROM); // High density partition
+ break;
+
+ // https://en.wikipedia.org/wiki/Sega_Saturn
+ case PhysicalSystem.SegaSaturn:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Neo_Geo_CD
+ case PhysicalSystem.SNKNeoGeoCD:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/PlayStation_(console)
+ case PhysicalSystem.SonyPlayStation:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/PlayStation_2
+ case PhysicalSystem.SonyPlayStation2:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://en.wikipedia.org/wiki/PlayStation_3
+ case PhysicalSystem.SonyPlayStation3:
+ types.Add(PhysicalMediaType.BluRay);
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://en.wikipedia.org/wiki/PlayStation_4
+ case PhysicalSystem.SonyPlayStation4:
+ types.Add(PhysicalMediaType.BluRay);
+ break;
+
+ // https://en.wikipedia.org/wiki/PlayStation_5
+ case PhysicalSystem.SonyPlayStation5:
+ types.Add(PhysicalMediaType.BluRay);
+ break;
+
+ // https://en.wikipedia.org/wiki/PlayStation_Portable
+ case PhysicalSystem.SonyPlayStationPortable:
+ types.Add(PhysicalMediaType.UMD);
+ types.Add(PhysicalMediaType.CDROM); // Development discs only
+ types.Add(PhysicalMediaType.DVD); // Development discs only
+ break;
+
+ // https://en.wikipedia.org/wiki/Tandy_Video_Information_System
+ case PhysicalSystem.MemorexVisualInformationSystem:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Nuon_(DVD_technology)
+ case PhysicalSystem.VMLabsNUON:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://en.wikipedia.org/wiki/V.Flash
+ case PhysicalSystem.VTechVFlashVSmilePro:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Game_Wave_Family_Entertainment_System
+ case PhysicalSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem:
+ types.Add(PhysicalMediaType.CDROM); // Firmware discs only(?)
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ #endregion
+
+ #region Computers
+
+ // https://en.wikipedia.org/wiki/Acorn_Archimedes
+ case PhysicalSystem.AcornArchimedes:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.FloppyDisk);
+ break;
+
+ // https://en.wikipedia.org/wiki/Macintosh
+ case PhysicalSystem.AppleMacintosh:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ types.Add(PhysicalMediaType.FloppyDisk);
+ types.Add(PhysicalMediaType.HardDisk);
+ break;
+
+ // https://en.wikipedia.org/wiki/Amiga
+ case PhysicalSystem.CommodoreAmigaCD:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.FloppyDisk);
+ break;
+
+ // https://en.wikipedia.org/wiki/FM_Towns
+ case PhysicalSystem.FujitsuFMTownsseries:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/IBM_PC_compatible
+ case PhysicalSystem.IBMPCcompatible:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ types.Add(PhysicalMediaType.BluRay);
+ types.Add(PhysicalMediaType.FloppyDisk);
+ types.Add(PhysicalMediaType.HardDisk);
+ types.Add(PhysicalMediaType.DataCartridge);
+ break;
+
+ // https://en.wikipedia.org/wiki/PC-8800_series
+ case PhysicalSystem.NECPC88series:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.FloppyDisk);
+ break;
+
+ // https://en.wikipedia.org/wiki/PC-9800_series
+ case PhysicalSystem.NECPC98series:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ types.Add(PhysicalMediaType.FloppyDisk);
+ break;
+
+ // https://en.wikipedia.org/wiki/X68000
+ case PhysicalSystem.SharpX68000:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.FloppyDisk);
+ break;
+
+ #endregion
+
+ #region Arcade
+
+ // https://www.bigbookofamigahardware.com/bboah/product.aspx?id=36
+ case PhysicalSystem.AmigaCUBOCD32:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Orbatak
+ case PhysicalSystem.AmericanLaserGames3DO:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // http://system16.com/hardware.php?id=779
+ case PhysicalSystem.Atari3DO:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // http://newlifegames.net/nlg/index.php?topic=22003.0
+ // http://newlifegames.net/nlg/index.php?topic=5486.msg119440
+ case PhysicalSystem.Atronic:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://www.arcade-museum.com/members/member_detail.php?member_id=406530
+ case PhysicalSystem.AUSCOMSystem1:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // http://newlifegames.net/nlg/index.php?topic=285.0
+ case PhysicalSystem.BallyGameMagic:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/CP_System_III
+ case PhysicalSystem.CapcomCPSystemIII:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // UNKNOWN
+ case PhysicalSystem.funworldPhotoPlay:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/FuRyu
+ case PhysicalSystem.FuRyuOmronPurikura:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // UNKNOWN
+ case PhysicalSystem.GlobalVRVarious:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://service.globalvr.com/troubleshooting/vortek.html
+ case PhysicalSystem.GlobalVRVortek:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://service.globalvr.com/downloads/v3/040-1001-01c-V3-System-Manual.pdf
+ case PhysicalSystem.GlobalVRVortekV3:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://www.icegame.com/games
+ case PhysicalSystem.ICEPCHardware:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://github.com/mamedev/mame/blob/master/src/mame/drivers/iteagle.cpp
+ case PhysicalSystem.IncredibleTechnologiesEagle:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // UNKNOWN
+ case PhysicalSystem.IncredibleTechnologiesVarious:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // UNKNOWN
+ case PhysicalSystem.JVLiTouch:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://en.wikipedia.org/wiki/E-Amusement
+ case PhysicalSystem.KonamieAmusement:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // http://system16.com/hardware.php?id=828
+ case PhysicalSystem.KonamiFireBeat:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // http://system16.com/hardware.php?id=577
+ case PhysicalSystem.KonamiSystemGV:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // http://system16.com/hardware.php?id=575
+ case PhysicalSystem.KonamiM2:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // http://system16.com/hardware.php?id=586
+ // http://system16.com/hardware.php?id=977
+ case PhysicalSystem.KonamiPython:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // http://system16.com/hardware.php?id=976
+ // http://system16.com/hardware.php?id=831
+ case PhysicalSystem.KonamiPython2:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // http://system16.com/hardware.php?id=582
+ // http://system16.com/hardware.php?id=822
+ // http://system16.com/hardware.php?id=823
+ case PhysicalSystem.KonamiSystem573:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // http://system16.com/hardware.php?id=827
+ case PhysicalSystem.KonamiTwinkle:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // UNKNOWN
+ case PhysicalSystem.KonamiVarious:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // http://www.meritgames.com/Support_Center/manuals/PM0591-01.pdf
+ case PhysicalSystem.MeritIndustriesBoardwalk:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.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 PhysicalSystem.MeritIndustriesMegaTouchForce:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // http://www.meritgames.com/Service%20Center/Ion%20Troubleshooting.pdf
+ case PhysicalSystem.MeritIndustriesMegaTouchION:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.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 PhysicalSystem.MeritIndustriesMegaTouchMaxx:
+ types.Add(PhysicalMediaType.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 PhysicalSystem.MeritIndustriesMegaTouchXL:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // UNKNOWN
+ case PhysicalSystem.NamcoPurikura:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // http://system16.com/hardware.php?id=543
+ // http://system16.com/hardware.php?id=546
+ // http://system16.com/hardware.php?id=872
+ case PhysicalSystem.NamcoSystem246256:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // http://system16.com/hardware.php?id=545
+ case PhysicalSystem.NamcoSegaNintendoTriforce:
+ types.Add(PhysicalMediaType.CDROM); // Low density partition
+ types.Add(PhysicalMediaType.GDROM); // High density partition
+ break;
+
+ // http://system16.com/hardware.php?id=535
+ case PhysicalSystem.NamcoSystem12:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://www.arcade-history.com/?n=the-yakyuuken-part-1&page=detail&id=33049
+ case PhysicalSystem.NewJatreCDi:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // http://blog.system11.org/?p=2499
+ case PhysicalSystem.NichibutsuHighRateSystem:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // http://blog.system11.org/?p=2514
+ case PhysicalSystem.NichibutsuSuperCD:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // http://collectedit.com/collectors/shou-time-213/arcade-pcbs-281/x-rate-dvd-series-17-newlywed-life-japan-by-nichibutsu-32245
+ case PhysicalSystem.NichibutsuXRateSystem:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://en.wikipedia.org/wiki/Panasonic_M2
+ case PhysicalSystem.PanasonicM2:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://github.com/mamedev/mame/blob/master/src/mame/drivers/photoply.cpp
+ case PhysicalSystem.PhotoPlayVarious:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // UNKNOWN
+ case PhysicalSystem.RawThrillsVarious:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // UNKNOWN
+ case PhysicalSystem.SegaALLS:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // http://system16.com/hardware.php?id=729
+ case PhysicalSystem.SegaChihiro:
+ types.Add(PhysicalMediaType.CDROM); // Low density partition
+ types.Add(PhysicalMediaType.GDROM); // High density partition
+ break;
+
+ // http://system16.com/hardware.php?id=907
+ case PhysicalSystem.SegaEuropaR:
+ types.Add(PhysicalMediaType.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 PhysicalSystem.SegaLindbergh:
+ types.Add(PhysicalMediaType.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 PhysicalSystem.SegaNaomi:
+ types.Add(PhysicalMediaType.CDROM); // Low density partition
+ types.Add(PhysicalMediaType.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 PhysicalSystem.SegaNaomi2:
+ types.Add(PhysicalMediaType.CDROM); // Low density partition
+ types.Add(PhysicalMediaType.GDROM); // High density partition
+ break;
+
+ // https://segaretro.org/Sega_NAOMI#NAOMI_Satellite_Terminal
+ case PhysicalSystem.SegaNaomiSatelliteTerminalPC:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Nu
+ case PhysicalSystem.SegaNu:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Nu
+ case PhysicalSystem.SegaNu11:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Nu
+ case PhysicalSystem.SegaNu2:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://segaretro.org/Nu_SX
+ case PhysicalSystem.SegaNuSX:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // http://system16.com/hardware.php?id=910
+ // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Ring_series
+ case PhysicalSystem.SegaRingEdge:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // http://system16.com/hardware.php?id=982
+ // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Ring_series
+ case PhysicalSystem.SegaRingEdge2:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // http://system16.com/hardware.php?id=911
+ // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Ring_series
+ case PhysicalSystem.SegaRingWide:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // http://system16.com/hardware.php?id=711
+ case PhysicalSystem.SegaTitanVideo:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // http://system16.com/hardware.php?id=709
+ // http://system16.com/hardware.php?id=710
+ case PhysicalSystem.SegaSystem32:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://github.com/mamedev/mame/blob/master/src/mame/drivers/seibucats.cpp
+ case PhysicalSystem.SeibuCATSSystem:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://www.tab.at/en/support/support/downloads
+ case PhysicalSystem.TABAustriaQuizard:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://primetimeamusements.com/product/tsumo-multi-game-motion-system/
+ // https://www.highwaygames.com/arcade-machines/tsumo-tsunami-motion-8117/
+ case PhysicalSystem.TsunamiTsuMoMultiGameMotionSystem:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/UltraCade_Technologies
+ case PhysicalSystem.UltraCade:
+ types.Add(PhysicalMediaType.CDROM);
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ #endregion
+
+ #region Others
+
+ // https://en.wikipedia.org/wiki/Audio_CD
+ case PhysicalSystem.AudioCD:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Blu-ray#Player_profiles
+ case PhysicalSystem.BDVideo:
+ types.Add(PhysicalMediaType.BluRay);
+ break;
+
+ // https://en.wikipedia.org/wiki/DVD-Audio
+ case PhysicalSystem.DVDAudio:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://en.wikipedia.org/wiki/DVD-Video
+ case PhysicalSystem.DVDVideo:
+ types.Add(PhysicalMediaType.DVD);
+ break;
+
+ // https://en.wikipedia.org/wiki/Blue_Book_(CD_standard)
+ case PhysicalSystem.EnhancedCD:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/HD_DVD
+ case PhysicalSystem.HDDVDVideo:
+ types.Add(PhysicalMediaType.HDDVD);
+ break;
+
+ // UNKNOWN
+ case PhysicalSystem.NavisoftNaviken21:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // UNKNOWN
+ case PhysicalSystem.PalmOS:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Photo_CD
+ case PhysicalSystem.PhotoCD:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // UNKNOWN
+ case PhysicalSystem.PlayStationGameSharkUpdates:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // UNKNOWN
+ case PhysicalSystem.PocketPC:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // UNKNOWN
+ case PhysicalSystem.Psion:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Doors_and_Windows_(EP)
+ case PhysicalSystem.RainbowDisc:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://segaretro.org/Prologue_21
+ case PhysicalSystem.SegaPrologue21MultimediaKaraokeSystem:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // UNKNOWN
+ case PhysicalSystem.SharpZaurus:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // UNKNOWN
+ case PhysicalSystem.SonyElectronicBook:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Super_Audio_CD
+ case PhysicalSystem.SuperAudioCD:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://www.cnet.com/products/tao-music-iktv-karaoke-station-karaoke-system-series/
+ case PhysicalSystem.TaoiKTV:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // http://ultimateconsoledatabase.com/golden/kiss_site.htm
+ case PhysicalSystem.TomyKissSite:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ // https://en.wikipedia.org/wiki/Video_CD
+ case PhysicalSystem.VideoCD:
+ types.Add(PhysicalMediaType.CDROM);
+ break;
+
+ #endregion
+
+ default:
+ types.Add(PhysicalMediaType.NONE);
+ break;
+ }
+#pragma warning restore IDE0010 // Add missing cases
+
+ return types;
+ }
+
+ #endregion
+
#region Language
///
@@ -196,6 +966,372 @@ namespace SabreTools.RedumpLib.Data
#endregion
+ #region Physical System
+
+ ///
+ /// Determine if a system is okay if it's not detected by Windows
+ ///
+ /// PhysicalSystem value to check
+ /// True if Windows show see a disc when dumping, false otherwise
+ public static bool DetectedByWindows(this PhysicalSystem? system)
+ {
+#pragma warning disable IDE0072 // Add missing cases
+ return system switch
+ {
+ // BIOS Sets
+ PhysicalSystem.MicrosoftXboxBIOS
+ or PhysicalSystem.NintendoGameCubeBIOS
+ or PhysicalSystem.SonyPlayStationBIOS
+ or PhysicalSystem.SonyPlayStation2BIOS => false,
+
+ // Disc-Based Consoles
+ PhysicalSystem.AtariJaguarCDInteractiveMultimediaSystem
+ or PhysicalSystem.BandaiPlaydiaQuickInteractiveSystem
+ or PhysicalSystem.BandaiPippin
+ or PhysicalSystem.HasbroVideoNow
+ or PhysicalSystem.HasbroVideoNowColor
+ or PhysicalSystem.HasbroVideoNowJr
+ or PhysicalSystem.HasbroVideoNowXP
+ or PhysicalSystem.NintendoGameCube
+ or PhysicalSystem.NintendoWii
+ or PhysicalSystem.NintendoWiiU
+ or PhysicalSystem.Panasonic3DOInteractiveMultiplayer
+ or PhysicalSystem.PhilipsCDi
+ or PhysicalSystem.PioneerLaserActive
+ or PhysicalSystem.MarkerDiscBasedConsoleEnd => false,
+
+ // Computers
+ PhysicalSystem.AppleMacintosh
+ or PhysicalSystem.MarkerComputerEnd => false,
+
+ // Arcade
+ PhysicalSystem.AmericanLaserGames3DO
+ or PhysicalSystem.Atari3DO
+ or PhysicalSystem.NewJatreCDi
+ or PhysicalSystem.PanasonicM2
+ or PhysicalSystem.MarkerArcadeEnd => false,
+
+ // Other
+ PhysicalSystem.PlayStationGameSharkUpdates
+ or PhysicalSystem.SuperAudioCD
+ or PhysicalSystem.MarkerOtherEnd => false,
+
+ null => false,
+ _ => true,
+ };
+#pragma warning restore IDE0072 // Add missing cases
+ }
+
+ ///
+ /// Determine if a system has reversed ringcodes
+ ///
+ /// PhysicalSystem value to check
+ /// True if the system has reversed ringcodes, false otherwise
+ public static bool HasReversedRingcodes(this PhysicalSystem? system)
+ {
+#pragma warning disable IDE0072 // Add missing cases
+ return system switch
+ {
+ PhysicalSystem.SonyPlayStation2
+ or PhysicalSystem.SonyPlayStation3
+ or PhysicalSystem.SonyPlayStation4
+ or PhysicalSystem.SonyPlayStation5
+ or PhysicalSystem.SonyPlayStationPortable => true,
+ _ => false,
+ };
+#pragma warning restore IDE0072 // Add missing cases
+ }
+
+ ///
+ /// Determine if a system is considered audio-only
+ ///
+ /// PhysicalSystem 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 PhysicalSystem? system)
+ {
+#pragma warning disable IDE0072 // Add missing cases
+ return system switch
+ {
+ PhysicalSystem.AtariJaguarCDInteractiveMultimediaSystem
+ or PhysicalSystem.AudioCD
+ or PhysicalSystem.DVDAudio
+ or PhysicalSystem.HasbroiONEducationalGamingSystem
+ or PhysicalSystem.HasbroVideoNow
+ or PhysicalSystem.HasbroVideoNowColor
+ or PhysicalSystem.HasbroVideoNowJr
+ or PhysicalSystem.HasbroVideoNowXP
+ or PhysicalSystem.PhilipsCDi
+ or PhysicalSystem.PlayStationGameSharkUpdates
+ or PhysicalSystem.SuperAudioCD => true,
+ _ => false,
+ };
+#pragma warning restore IDE0072 // Add missing cases
+ }
+
+ ///
+ /// Determine if a system is a marker value
+ ///
+ /// PhysicalSystem value to check
+ /// True if the system is a marker value, false otherwise
+ public static bool IsMarker(this PhysicalSystem system)
+ => ((PhysicalSystem?)system).IsMarker();
+
+ ///
+ /// Determine if a system is a marker value
+ ///
+ /// PhysicalSystem value to check
+ /// True if the system is a marker value, false otherwise
+ public static bool IsMarker(this PhysicalSystem? system)
+ {
+#pragma warning disable IDE0072 // Add missing cases
+ return system switch
+ {
+ PhysicalSystem.MarkerArcadeEnd
+ or PhysicalSystem.MarkerComputerEnd
+ or PhysicalSystem.MarkerDiscBasedConsoleEnd
+ or PhysicalSystem.MarkerOtherEnd => true,
+ _ => false,
+ };
+#pragma warning restore IDE0072 // Add missing cases
+ }
+
+ ///
+ /// Determine if a system is considered XGD
+ ///
+ /// PhysicalSystem value to check
+ /// True if the system is XGD, false otherwise
+ public static bool IsXGD(this PhysicalSystem? system)
+ {
+#pragma warning disable IDE0072 // Add missing cases
+ return system switch
+ {
+ PhysicalSystem.MicrosoftXbox
+ or PhysicalSystem.MicrosoftXbox360
+ or PhysicalSystem.MicrosoftXboxOne
+ or PhysicalSystem.MicrosoftXboxSeriesXS => true,
+ _ => false,
+ };
+#pragma warning restore IDE0072 // Add missing cases
+ }
+
+ ///
+ /// List all systems with their short usable names
+ ///
+ public static List ListSystems()
+ {
+ var systems = (PhysicalSystem[])Enum.GetValues(typeof(PhysicalSystem));
+ var knownSystems = Array.FindAll(systems, s => !s.IsMarker() && s.GetCategory() != SystemCategory.NONE);
+ Array.Sort(knownSystems, (x, y) => (x.LongName() ?? string.Empty).CompareTo(y.LongName() ?? string.Empty));
+ return [.. Array.ConvertAll(knownSystems, val => $"{val.ShortName()} - {val.LongName()}")];
+ }
+
+ ///
+ /// Get the Redump longnames for each known system
+ ///
+ ///
+ ///
+ public static string? LongName(this PhysicalSystem system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.LongName;
+
+ ///
+ /// Get the Redump longnames for each known system
+ ///
+ ///
+ ///
+ public static string? LongName(this PhysicalSystem? system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.LongName;
+
+ ///
+ /// Get the Redump shortnames for each known system
+ ///
+ ///
+ ///
+ public static string? ShortName(this PhysicalSystem system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.ShortName;
+
+ ///
+ /// Get the Redump shortnames for each known system
+ ///
+ ///
+ ///
+ public static string? ShortName(this PhysicalSystem? system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.ShortName;
+
+ ///
+ /// Get the Redump shortnames for each known system
+ ///
+ ///
+ ///
+ public static string? ShortNameAlt(this PhysicalSystem system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.RedumpOrgCode;
+
+ ///
+ /// Get the Redump shortnames for each known system
+ ///
+ ///
+ ///
+ public static string? ShortNameAlt(this PhysicalSystem? system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.RedumpOrgCode;
+
+ ///
+ /// Determine the category of a system
+ ///
+ public static SystemCategory GetCategory(this PhysicalSystem system)
+ => ((PhysicalSystem?)system).GetCategory();
+
+ ///
+ /// Determine the category of a system
+ ///
+ public static SystemCategory GetCategory(this PhysicalSystem? system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.Category ?? SystemCategory.NONE;
+
+ ///
+ /// Determine if a system is available in Redump yet
+ ///
+ public static bool IsAvailable(this PhysicalSystem system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.Available ?? false;
+
+ ///
+ /// Determine if a system is available in Redump yet
+ ///
+ public static bool IsAvailable(this PhysicalSystem? system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.Available ?? false;
+
+ ///
+ /// Determine if a system is restricted to dumpers
+ ///
+ public static bool IsBanned(this PhysicalSystem system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.IsBanned ?? false;
+
+ ///
+ /// Determine if a system is restricted to dumpers
+ ///
+ public static bool IsBanned(this PhysicalSystem? system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.IsBanned ?? false;
+
+ ///
+ /// Determine if a system has a CUE pack
+ ///
+ public static bool HasCues(this PhysicalSystem system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasCues ?? false;
+
+ ///
+ /// Determine if a system has a CUE pack
+ ///
+ public static bool HasCues(this PhysicalSystem? system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasCues ?? false;
+
+ ///
+ /// Determine if a system has a DAT
+ ///
+ public static bool HasDat(this PhysicalSystem system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasDat ?? false;
+
+ ///
+ /// Determine if a system has a DAT
+ ///
+ public static bool HasDat(this PhysicalSystem? system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasDat ?? false;
+
+ ///
+ /// Determine if a system has a decrypted keys pack
+ ///
+ public static bool HasDkeys(this PhysicalSystem system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasDkeys ?? false;
+
+ ///
+ /// Determine if a system has a decrypted keys pack
+ ///
+ public static bool HasDkeys(this PhysicalSystem? system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasDkeys ?? false;
+
+ ///
+ /// Determine if a system has a GDI pack
+ ///
+ public static bool HasGdi(this PhysicalSystem system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasGdi ?? false;
+
+ ///
+ /// Determine if a system has a GDI pack
+ ///
+ public static bool HasGdi(this PhysicalSystem? system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasGdi ?? false;
+
+ ///
+ /// Determine if a system has a keys pack
+ ///
+ public static bool HasKeys(this PhysicalSystem system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasKeys ?? false;
+
+ ///
+ /// Determine if a system has a keys pack
+ ///
+ public static bool HasKeys(this PhysicalSystem? system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasKeys ?? false;
+
+ ///
+ /// Determine if a system has an LSD pack
+ ///
+ public static bool HasLsd(this PhysicalSystem system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasLsd ?? false;
+
+ ///
+ /// Determine if a system has an LSD pack
+ ///
+ public static bool HasLsd(this PhysicalSystem? system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasLsd ?? false;
+
+ ///
+ /// Determine if a system has an SBI pack
+ ///
+ public static bool HasSbi(this PhysicalSystem system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasSbi ?? false;
+
+ ///
+ /// Determine if a system has an SBI pack
+ ///
+ public static bool HasSbi(this PhysicalSystem? system)
+ => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasSbi ?? false;
+
+ ///
+ /// Get the PhysicalSystem enum value for a given string
+ ///
+ /// String value to convert
+ /// PhysicalSystem represented by the string, if possible
+ public static PhysicalSystem? ToPhysicalSystem(this string? system)
+ {
+ // No value means no match
+ if (system is null || system.Length == 0)
+ return null;
+
+ system = system.ToLowerInvariant();
+ var redumpSystems = (PhysicalSystem[])Enum.GetValues(typeof(PhysicalSystem));
+
+ // Check short names
+ int index = Array.FindIndex(redumpSystems, s => system == s.ShortName()?.ToLowerInvariant());
+ if (index > -1)
+ return redumpSystems[index];
+
+ // Check redump.org short names
+ index = Array.FindIndex(redumpSystems, s => system == s.ShortNameAlt()?.ToLowerInvariant());
+ if (index > -1)
+ return redumpSystems[index];
+
+ // Check long names
+ index = Array.FindIndex(redumpSystems, s => system == s.LongName()?.ToLowerInvariant()
+ || system == s.LongName()?.Replace(" ", string.Empty)?.ToLowerInvariant());
+ if (index > -1)
+ return redumpSystems[index];
+
+ return null;
+ }
+
+ #endregion
+
#region Region
///
diff --git a/SabreTools.RedumpLib/Data/Sections/CommonDiscInfoSection.cs b/SabreTools.RedumpLib/Data/Sections/CommonDiscInfoSection.cs
index 6de0085..2e4fb4b 100644
--- a/SabreTools.RedumpLib/Data/Sections/CommonDiscInfoSection.cs
+++ b/SabreTools.RedumpLib/Data/Sections/CommonDiscInfoSection.cs
@@ -14,8 +14,8 @@ namespace SabreTools.RedumpLib.Data.Sections
{
// Name not defined by Redump
[JsonProperty(PropertyName = "d_system", DefaultValueHandling = DefaultValueHandling.Include)]
- [JsonConverter(typeof(SystemConverter))]
- public RedumpSystem? System { get; set; }
+ [JsonConverter(typeof(PhysicalSystemConverter))]
+ public PhysicalSystem? System { get; set; }
// Name not defined by Redump
[JsonProperty(PropertyName = "d_media", DefaultValueHandling = DefaultValueHandling.Include)]
diff --git a/SabreTools.RedumpLib/RedumpInfo/Client.cs b/SabreTools.RedumpLib/RedumpInfo/Client.cs
index dd89def..c185745 100644
--- a/SabreTools.RedumpLib/RedumpInfo/Client.cs
+++ b/SabreTools.RedumpLib/RedumpInfo/Client.cs
@@ -417,7 +417,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
RedumpOrg.Data.SortCategory? sort = null,
RedumpOrg.Data.SortDirection? sortDir = null,
DumpStatus? status = null,
- RedumpSystem? system = null,
+ PhysicalSystem? system = null,
int? page = null)
{
// Normalize the search query, if needed
@@ -512,7 +512,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
RedumpOrg.Data.SortCategory? sort = null,
RedumpOrg.Data.SortDirection? sortDir = null,
DumpStatus? status = null,
- RedumpSystem? system = null,
+ PhysicalSystem? system = null,
int? page = null,
DiscSubpath[]? discSubpaths = null)
{
@@ -679,7 +679,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// Pack type to use to determine the download URL
/// System to download packs for
/// Byte array containing the downloaded pack, null on error
- public async Task DownloadSinglePack(PackType packType, RedumpSystem? system)
+ public async Task DownloadSinglePack(PackType packType, PhysicalSystem? system)
{
try
{
@@ -731,7 +731,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// Pack type to use to determine the download URL
/// System to download packs for
/// Output directory to save data to
- public async Task DownloadSinglePack(PackType packType, RedumpSystem? system, string? outDir)
+ public async Task DownloadSinglePack(PackType packType, PhysicalSystem? system, string? outDir)
{
try
{
@@ -799,7 +799,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// System to download packs for
/// Output directory to save data to
/// Named subfolder for the pack, used optionally
- public async Task DownloadSinglePack(PackType packType, RedumpSystem? system, string? outDir, string? subfolder)
+ public async Task DownloadSinglePack(PackType packType, PhysicalSystem? system, string? outDir, string? subfolder)
{
try
{
@@ -1218,7 +1218,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
///
/// Pack type to use to determine the download URL
/// Systems to download packs for
- public async Task> DownloadPacks(PackType packType, RedumpSystem[] systems)
+ public async Task> DownloadPacks(PackType packType, PhysicalSystem[] systems)
{
// Determine if the pack type is valid
if (!Enum.IsDefined(typeof(PackType), packType))
@@ -1227,7 +1227,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
return [];
}
- var packsDictionary = new Dictionary();
+ var packsDictionary = new Dictionary();
foreach (var system in systems)
{
string longName = system.LongName() ?? $"UNKNOWN_{system}";
@@ -1257,7 +1257,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// Pack type to use to determine the download URL
/// Systems to download packs for
/// Output directory to save data to
- public async Task DownloadPacks(PackType packType, RedumpSystem[] systems, string? outDir)
+ public async Task DownloadPacks(PackType packType, PhysicalSystem[] systems, string? outDir)
{
// Determine if the pack type is valid
if (!Enum.IsDefined(typeof(PackType), packType))
@@ -1293,7 +1293,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// Systems to download packs for
/// Output directory to save data to
/// Named subfolder for the pack, used optionally
- public async Task DownloadPacks(PackType packType, RedumpSystem[] systems, string? outDir, string? subfolder)
+ public async Task DownloadPacks(PackType packType, PhysicalSystem[] systems, string? outDir, string? subfolder)
{
// Determine if the pack type is valid
if (!Enum.IsDefined(typeof(PackType), packType))
@@ -1410,7 +1410,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// Pack type to use to determine the support status
/// Systems to determine pack availability for
/// True if the pack is available for a system, false otherwise
- private static bool PackTypeToAvailable(PackType packType, RedumpSystem system)
+ private static bool PackTypeToAvailable(PackType packType, PhysicalSystem system)
{
return packType switch
{
diff --git a/SabreTools.RedumpLib/RedumpInfo/Converters/SystemConverter.cs b/SabreTools.RedumpLib/RedumpInfo/Converters/PhysicalSystemConverter.cs
similarity index 60%
rename from SabreTools.RedumpLib/RedumpInfo/Converters/SystemConverter.cs
rename to SabreTools.RedumpLib/RedumpInfo/Converters/PhysicalSystemConverter.cs
index d844f6f..4cf58e1 100644
--- a/SabreTools.RedumpLib/RedumpInfo/Converters/SystemConverter.cs
+++ b/SabreTools.RedumpLib/RedumpInfo/Converters/PhysicalSystemConverter.cs
@@ -1,18 +1,19 @@
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
+using SabreTools.RedumpLib.Data;
using SabreTools.RedumpLib.RedumpInfo.Data;
namespace SabreTools.RedumpLib.RedumpInfo.Converters
{
///
- /// Serialize RedumpSystem enum values
+ /// Serialize PhysicalSystem enum values
///
- public class SystemConverter : JsonConverter
+ public class PhysicalSystemConverter : JsonConverter
{
public override bool CanRead { get { return true; } }
- public override RedumpSystem? ReadJson(JsonReader reader, Type objectType, RedumpSystem? existingValue, bool hasExistingValue, JsonSerializer serializer)
+ public override PhysicalSystem? ReadJson(JsonReader reader, Type objectType, PhysicalSystem? existingValue, bool hasExistingValue, JsonSerializer serializer)
{
// If we have a value already, don't overwrite it
if (hasExistingValue)
@@ -23,10 +24,10 @@ namespace SabreTools.RedumpLib.RedumpInfo.Converters
return null;
// Try to parse the value
- return value.ToRedumpSystem();
+ return value.ToPhysicalSystem();
}
- public override void WriteJson(JsonWriter writer, RedumpSystem? value, JsonSerializer serializer)
+ public override void WriteJson(JsonWriter writer, PhysicalSystem? value, JsonSerializer serializer)
{
JToken t = JToken.FromObject(value.ShortName() ?? string.Empty);
t.WriteTo(writer);
diff --git a/SabreTools.RedumpLib/RedumpInfo/Data/Enumerations.cs b/SabreTools.RedumpLib/RedumpInfo/Data/Enumerations.cs
index a82cc96..6a50cff 100644
--- a/SabreTools.RedumpLib/RedumpInfo/Data/Enumerations.cs
+++ b/SabreTools.RedumpLib/RedumpInfo/Data/Enumerations.cs
@@ -157,628 +157,4 @@ namespace SabreTools.RedumpLib.RedumpInfo.Data
[HumanReadable(LongName = "SBI", ShortName = "sbi")]
Sbis,
}
-
- ///
- /// List of all known systems
- ///
- /// TODO: Remove marker items
- /// TODO: Double check all flags once the site is live
- /// TODO: Add MAXTEST as a debug-only system
- /// TODO: Does "Banned" now only mean that things like keys can't be downloaded?
- public enum RedumpSystem
- {
- // TODO: Somehow indicate that these are static paths
- #region BIOS Sets
-
- [System(LongName = "Microsoft Xbox (BIOS)", ShortName = "xbox-bios", HasDat = true)]
- MicrosoftXboxBIOS,
-
- [System(LongName = "Nintendo GameCube (BIOS)", ShortName = "gc-bios", HasDat = true)]
- NintendoGameCubeBIOS,
-
- [System(LongName = "Sony PlayStation (BIOS)", ShortName = "psx-bios", HasDat = true)]
- SonyPlayStationBIOS,
-
- [System(LongName = "Sony PlayStation 2 (BIOS)", ShortName = "ps2-bios", HasDat = true)]
- SonyPlayStation2BIOS,
-
- #endregion
-
- #region Disc-Based Consoles
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Atari Jaguar CD Interactive Multimedia System", ShortName = "AJCD", HasCues = true, HasDat = true)]
- AtariJaguarCDInteractiveMultimediaSystem,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Bandai Pippin", ShortName = "PIPPIN", HasCues = true, HasDat = true)]
- BandaiPippin,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Bandai Playdia Quick Interactive System", ShortName = "QIS", HasCues = true, HasDat = true)]
- BandaiPlaydiaQuickInteractiveSystem,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Commodore Amiga CD32", ShortName = "CD32", HasCues = true, HasDat = true)]
- CommodoreAmigaCD32,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Commodore Amiga CDTV", ShortName = "CDTV", HasCues = true, HasDat = true)]
- CommodoreAmigaCDTV,
-
- [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Envizions EVO Smart Console")]
- EnvizionsEVOSmartConsole,
-
- [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Fujitsu FM Towns Marty")]
- FujitsuFMTownsMarty,
-
- [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Hasbro iON Educational Gaming System")]
- HasbroiONEducationalGamingSystem,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow", ShortName = "HVN", IsBanned = true, HasCues = true, HasDat = true)]
- HasbroVideoNow,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow Color", ShortName = "HVNC", IsBanned = true, HasCues = true, HasDat = true)]
- HasbroVideoNowColor,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow Jr.", ShortName = "HVNJR", IsBanned = true, HasCues = true, HasDat = true)]
- HasbroVideoNowJr,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow XP", ShortName = "HVNXP", IsBanned = true, HasCues = true, HasDat = true)]
- HasbroVideoNowXP,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Mattel Fisher-Price iXL", ShortName = "IXL", HasCues = true, HasDat = true)]
- MattelFisherPriceiXL,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Mattel HyperScan", ShortName = "HS", HasCues = true, HasDat = true)]
- MattelHyperScan,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Memorex Visual Information System", ShortName = "VIS", HasCues = true, HasDat = true)]
- MemorexVisualInformationSystem,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox", ShortName = "XBOX", HasCues = true, HasDat = true)]
- MicrosoftXbox,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox 360", ShortName = "XBOX360", HasCues = true, HasDat = true)]
- MicrosoftXbox360,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox One", ShortName = "XBOXONE", IsBanned = true, HasDat = true)]
- MicrosoftXboxOne,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox Series X", ShortName = "XBOXSX", IsBanned = true, HasDat = true)]
- MicrosoftXboxSeriesXS,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "NEC PC Engine CD & TurboGrafx CD", ShortName = "PCE", HasCues = true, HasDat = true)]
- NECPCEngineCDTurboGrafxCD,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "NEC PC-FX & PC-FXGA", ShortName = "PC-FX", HasCues = true, HasDat = true)]
- NECPCFXPCFXGA,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo GameCube", ShortName = "GC", HasDat = true)]
- NintendoGameCube,
-
- [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Nintendo-Sony Super NES CD-ROM System")]
- NintendoSonySuperNESCDROMSystem,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo Wii", ShortName = "WII", HasDat = true)]
- NintendoWii,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo Wii U", ShortName = "WIIU", IsBanned = true, HasDat = true, HasKeys = true)]
- NintendoWiiU,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Panasonic 3DO Interactive Multiplayer", ShortName = "3DO", HasCues = true, HasDat = true)]
- Panasonic3DOInteractiveMultiplayer,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Philips CD-i", ShortName = "CDI", HasCues = true, HasDat = true)]
- PhilipsCDi,
-
- [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Playmaji Polymega")]
- PlaymajiPolymega,
-
- [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Pioneer LaserActive")]
- PioneerLaserActive,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Dreamcast", ShortName = "DC", HasCues = true, HasDat = true)]
- SegaDreamcast,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Mega CD & Sega CD", ShortName = "MCD", HasCues = true, HasDat = true)]
- SegaMegaCDSegaCD,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Saturn", ShortName = "SS", HasCues = true, HasDat = true)]
- SegaSaturn,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Neo Geo CD", ShortName = "NGCD", HasCues = true, HasDat = true)]
- SNKNeoGeoCD,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation", ShortName = "PSX", HasCues = true, HasDat = true, HasSbi = true)]
- SonyPlayStation,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 2", ShortName = "PS2", HasCues = true, HasDat = true)]
- SonyPlayStation2,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 3", ShortName = "PS3", HasCues = true, HasDat = true, HasKeys = true)]
- SonyPlayStation3,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 4", ShortName = "PS4", IsBanned = true, HasDat = true)]
- SonyPlayStation4,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 5", ShortName = "PS5", IsBanned = true, HasDat = true)]
- SonyPlayStation5,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation Portable", ShortName = "PSP", HasDat = true)]
- SonyPlayStationPortable,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "VM Labs NUON", ShortName = "NUON", HasDat = true)]
- VMLabsNUON,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "VTech V.Flash & V.Smile Pro", ShortName = "VFLASH", HasCues = true, HasDat = true)]
- VTechVFlashVSmilePro,
-
- [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 = "ARCH", HasCues = true, HasDat = true)]
- AcornArchimedes,
-
- [System(Category = SystemCategory.Computer, LongName = "Apple Macintosh", ShortName = "MAC", HasCues = true, HasDat = true, HasSbi = 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, 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 = "X68K", 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 = "FuRyu & Omron Purikura")]
- FuRyuOmronPurikura,
-
- [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, Available = false, LongName = "JVL iTouch")]
- JVLiTouch,
-
- [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", HasCues = true, HasDat = true)]
- 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 Purikura")]
- NamcoPurikura,
-
- [System(Category = SystemCategory.Arcade, LongName = "Namco · Sega · Nintendo Triforce", ShortName = "TRF", HasCues = true, HasDat = true)]
- NamcoSegaNintendoTriforce,
-
- [System(Category = SystemCategory.Arcade, LongName = "Namco System 12", ShortName = "ns12")]
- NamcoSystem12,
-
- [System(Category = SystemCategory.Arcade, LongName = "Namco System 246 / System 256", ShortName = "NS246", HasCues = true, HasDat = true)]
- NamcoSystem246256,
-
- [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, Available = false, LongName = "Sega ALLS")]
- SegaALLS,
-
- [System(Category = SystemCategory.Arcade, LongName = "Sega Chihiro", ShortName = "CHIHIRO", HasCues = true, HasDat = 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)]
- SegaNaomi,
-
- [System(Category = SystemCategory.Arcade, LongName = "Sega Naomi 2", ShortName = "NAOMI2", HasCues = true, HasDat = true)]
- SegaNaomi2,
-
- [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega NAOMI Satellite Terminal PC")]
- SegaNaomiSatelliteTerminalPC,
-
- [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu")]
- SegaNu,
-
- [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu 1.1")]
- SegaNu11,
-
- [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu 2")]
- SegaNu2,
-
- [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu SX")]
- SegaNuSX,
-
- [System(Category = SystemCategory.Arcade, LongName = "Sega RingEdge", ShortName = "SRE", HasDat = true)]
- SegaRingEdge,
-
- [System(Category = SystemCategory.Arcade, LongName = "Sega RingEdge 2", ShortName = "SRE2", 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,
-
- [System(Category = SystemCategory.Arcade, Available = false, LongName = "UltraCade PC-based Systems")]
- UltraCade,
-
- // 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 = "Psion")]
- Psion,
-
- [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 = "Sharp Zaurus")]
- SharpZaurus,
-
- [System(Category = SystemCategory.Other, Available = false, LongName = "Sony Electronic Book")]
- SonyElectronicBook,
-
- [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
- }
-
- ///
- /// 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,
- };
}
diff --git a/SabreTools.RedumpLib/RedumpInfo/Data/Extensions.cs b/SabreTools.RedumpLib/RedumpInfo/Data/Extensions.cs
index ea591c6..e856b71 100644
--- a/SabreTools.RedumpLib/RedumpInfo/Data/Extensions.cs
+++ b/SabreTools.RedumpLib/RedumpInfo/Data/Extensions.cs
@@ -12,772 +12,6 @@ namespace SabreTools.RedumpLib.RedumpInfo.Data
{
#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();
-
-#pragma warning disable IDE0010 // Add missing cases
- switch (system)
- {
- #region Consoles
-
- // https://en.wikipedia.org/wiki/Atari_Jaguar_CD
- case RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Playdia
- case RedumpSystem.BandaiPlaydiaQuickInteractiveSystem:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Apple_Bandai_Pippin
- case RedumpSystem.BandaiPippin:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Amiga_CD32
- case RedumpSystem.CommodoreAmigaCD32:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Commodore_CDTV
- case RedumpSystem.CommodoreAmigaCDTV:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/EVO_Smart_Console
- case RedumpSystem.EnvizionsEVOSmartConsole:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/FM_Towns_Marty
- case RedumpSystem.FujitsuFMTownsMarty:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.FloppyDisk);
- break;
-
- // http://videogamekraken.com/ion-educational-gaming-system-by-hasbro
- case RedumpSystem.HasbroiONEducationalGamingSystem:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/VideoNow
- case RedumpSystem.HasbroVideoNow:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/VideoNow
- case RedumpSystem.HasbroVideoNowColor:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/VideoNow
- case RedumpSystem.HasbroVideoNowJr:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/VideoNow
- case RedumpSystem.HasbroVideoNowXP:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- case RedumpSystem.MattelFisherPriceiXL:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/HyperScan
- case RedumpSystem.MattelHyperScan:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Xbox_(console)
- case RedumpSystem.MicrosoftXbox:
- types.Add(PhysicalMediaType.DVD);
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Xbox_360
- case RedumpSystem.MicrosoftXbox360:
- types.Add(PhysicalMediaType.DVD);
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Xbox_One
- case RedumpSystem.MicrosoftXboxOne:
- types.Add(PhysicalMediaType.BluRay);
- break;
-
- // https://en.wikipedia.org/wiki/Xbox_Series_X_and_Series_S
- case RedumpSystem.MicrosoftXboxSeriesXS:
- types.Add(PhysicalMediaType.BluRay);
- break;
-
- // https://en.wikipedia.org/wiki/TurboGrafx-16
- case RedumpSystem.NECPCEngineCDTurboGrafxCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/PC-FX
- case RedumpSystem.NECPCFXPCFXGA:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/GameCube
- case RedumpSystem.NintendoGameCube:
- types.Add(PhysicalMediaType.DVD); // Only added here to help users; not strictly correct
- types.Add(PhysicalMediaType.NintendoGameCubeGameDisc);
- break;
-
- // https://en.wikipedia.org/wiki/Super_NES_CD-ROM
- case RedumpSystem.NintendoSonySuperNESCDROMSystem:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Wii
- case RedumpSystem.NintendoWii:
- types.Add(PhysicalMediaType.DVD); // Only added here to help users; not strictly correct
- types.Add(PhysicalMediaType.NintendoWiiOpticalDisc);
- break;
-
- // https://en.wikipedia.org/wiki/Wii_U
- case RedumpSystem.NintendoWiiU:
- types.Add(PhysicalMediaType.NintendoWiiUOpticalDisc);
- break;
-
- // https://en.wikipedia.org/wiki/3DO_Interactive_Multiplayer
- case RedumpSystem.Panasonic3DOInteractiveMultiplayer:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Philips_CD-i
- case RedumpSystem.PhilipsCDi:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Polymega
- case RedumpSystem.PlaymajiPolymega:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/LaserActive
- case RedumpSystem.PioneerLaserActive:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.LaserDisc);
- break;
-
- // https://en.wikipedia.org/wiki/Sega_CD
- case RedumpSystem.SegaMegaCDSegaCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Dreamcast
- case RedumpSystem.SegaDreamcast:
- types.Add(PhysicalMediaType.CDROM); // Low density partition, MIL-CD
- types.Add(PhysicalMediaType.GDROM); // High density partition
- break;
-
- // https://en.wikipedia.org/wiki/Sega_Saturn
- case RedumpSystem.SegaSaturn:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Neo_Geo_CD
- case RedumpSystem.SNKNeoGeoCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/PlayStation_(console)
- case RedumpSystem.SonyPlayStation:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/PlayStation_2
- case RedumpSystem.SonyPlayStation2:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/PlayStation_3
- case RedumpSystem.SonyPlayStation3:
- types.Add(PhysicalMediaType.BluRay);
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/PlayStation_4
- case RedumpSystem.SonyPlayStation4:
- types.Add(PhysicalMediaType.BluRay);
- break;
-
- // https://en.wikipedia.org/wiki/PlayStation_5
- case RedumpSystem.SonyPlayStation5:
- types.Add(PhysicalMediaType.BluRay);
- break;
-
- // https://en.wikipedia.org/wiki/PlayStation_Portable
- case RedumpSystem.SonyPlayStationPortable:
- types.Add(PhysicalMediaType.UMD);
- types.Add(PhysicalMediaType.CDROM); // Development discs only
- types.Add(PhysicalMediaType.DVD); // Development discs only
- break;
-
- // https://en.wikipedia.org/wiki/Tandy_Video_Information_System
- case RedumpSystem.MemorexVisualInformationSystem:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Nuon_(DVD_technology)
- case RedumpSystem.VMLabsNUON:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/V.Flash
- case RedumpSystem.VTechVFlashVSmilePro:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Game_Wave_Family_Entertainment_System
- case RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem:
- types.Add(PhysicalMediaType.CDROM); // Firmware discs only(?)
- types.Add(PhysicalMediaType.DVD);
- break;
-
- #endregion
-
- #region Computers
-
- // https://en.wikipedia.org/wiki/Acorn_Archimedes
- case RedumpSystem.AcornArchimedes:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.FloppyDisk);
- break;
-
- // https://en.wikipedia.org/wiki/Macintosh
- case RedumpSystem.AppleMacintosh:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- types.Add(PhysicalMediaType.FloppyDisk);
- types.Add(PhysicalMediaType.HardDisk);
- break;
-
- // https://en.wikipedia.org/wiki/Amiga
- case RedumpSystem.CommodoreAmigaCD:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.FloppyDisk);
- break;
-
- // https://en.wikipedia.org/wiki/FM_Towns
- case RedumpSystem.FujitsuFMTownsseries:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/IBM_PC_compatible
- case RedumpSystem.IBMPCcompatible:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- types.Add(PhysicalMediaType.BluRay);
- types.Add(PhysicalMediaType.FloppyDisk);
- types.Add(PhysicalMediaType.HardDisk);
- types.Add(PhysicalMediaType.DataCartridge);
- break;
-
- // https://en.wikipedia.org/wiki/PC-8800_series
- case RedumpSystem.NECPC88series:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.FloppyDisk);
- break;
-
- // https://en.wikipedia.org/wiki/PC-9800_series
- case RedumpSystem.NECPC98series:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- types.Add(PhysicalMediaType.FloppyDisk);
- break;
-
- // https://en.wikipedia.org/wiki/X68000
- case RedumpSystem.SharpX68000:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.FloppyDisk);
- break;
-
- #endregion
-
- #region Arcade
-
- // https://www.bigbookofamigahardware.com/bboah/product.aspx?id=36
- case RedumpSystem.AmigaCUBOCD32:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Orbatak
- case RedumpSystem.AmericanLaserGames3DO:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // http://system16.com/hardware.php?id=779
- case RedumpSystem.Atari3DO:
- types.Add(PhysicalMediaType.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(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://www.arcade-museum.com/members/member_detail.php?member_id=406530
- case RedumpSystem.AUSCOMSystem1:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // http://newlifegames.net/nlg/index.php?topic=285.0
- case RedumpSystem.BallyGameMagic:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/CP_System_III
- case RedumpSystem.CapcomCPSystemIII:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.funworldPhotoPlay:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/FuRyu
- case RedumpSystem.FuRyuOmronPurikura:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // UNKNOWN
- case RedumpSystem.GlobalVRVarious:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://service.globalvr.com/troubleshooting/vortek.html
- case RedumpSystem.GlobalVRVortek:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://service.globalvr.com/downloads/v3/040-1001-01c-V3-System-Manual.pdf
- case RedumpSystem.GlobalVRVortekV3:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://www.icegame.com/games
- case RedumpSystem.ICEPCHardware:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://github.com/mamedev/mame/blob/master/src/mame/drivers/iteagle.cpp
- case RedumpSystem.IncredibleTechnologiesEagle:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.IncredibleTechnologiesVarious:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // UNKNOWN
- case RedumpSystem.JVLiTouch:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/E-Amusement
- case RedumpSystem.KonamieAmusement:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://system16.com/hardware.php?id=828
- case RedumpSystem.KonamiFireBeat:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://system16.com/hardware.php?id=577
- case RedumpSystem.KonamiSystemGV:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // http://system16.com/hardware.php?id=575
- case RedumpSystem.KonamiM2:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // http://system16.com/hardware.php?id=586
- // http://system16.com/hardware.php?id=977
- case RedumpSystem.KonamiPython:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://system16.com/hardware.php?id=976
- // http://system16.com/hardware.php?id=831
- case RedumpSystem.KonamiPython2:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.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(PhysicalMediaType.CDROM);
- break;
-
- // http://system16.com/hardware.php?id=827
- case RedumpSystem.KonamiTwinkle:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.KonamiVarious:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://www.meritgames.com/Support_Center/manuals/PM0591-01.pdf
- case RedumpSystem.MeritIndustriesBoardwalk:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.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(PhysicalMediaType.CDROM);
- break;
-
- // http://www.meritgames.com/Service%20Center/Ion%20Troubleshooting.pdf
- case RedumpSystem.MeritIndustriesMegaTouchION:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.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(PhysicalMediaType.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(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.NamcoPurikura:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://system16.com/hardware.php?id=543
- // http://system16.com/hardware.php?id=546
- // http://system16.com/hardware.php?id=872
- case RedumpSystem.NamcoSystem246256:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://system16.com/hardware.php?id=545
- case RedumpSystem.NamcoSegaNintendoTriforce:
- types.Add(PhysicalMediaType.CDROM); // Low density partition
- types.Add(PhysicalMediaType.GDROM); // High density partition
- break;
-
- // http://system16.com/hardware.php?id=535
- case RedumpSystem.NamcoSystem12:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://www.arcade-history.com/?n=the-yakyuuken-part-1&page=detail&id=33049
- case RedumpSystem.NewJatreCDi:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // http://blog.system11.org/?p=2499
- case RedumpSystem.NichibutsuHighRateSystem:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://blog.system11.org/?p=2514
- case RedumpSystem.NichibutsuSuperCD:
- types.Add(PhysicalMediaType.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(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/Panasonic_M2
- case RedumpSystem.PanasonicM2:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://github.com/mamedev/mame/blob/master/src/mame/drivers/photoply.cpp
- case RedumpSystem.PhotoPlayVarious:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.RawThrillsVarious:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // UNKNOWN
- case RedumpSystem.SegaALLS:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://system16.com/hardware.php?id=729
- case RedumpSystem.SegaChihiro:
- types.Add(PhysicalMediaType.CDROM); // Low density partition
- types.Add(PhysicalMediaType.GDROM); // High density partition
- break;
-
- // http://system16.com/hardware.php?id=907
- case RedumpSystem.SegaEuropaR:
- types.Add(PhysicalMediaType.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(PhysicalMediaType.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(PhysicalMediaType.CDROM); // Low density partition
- types.Add(PhysicalMediaType.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(PhysicalMediaType.CDROM); // Low density partition
- types.Add(PhysicalMediaType.GDROM); // High density partition
- break;
-
- // https://segaretro.org/Sega_NAOMI#NAOMI_Satellite_Terminal
- case RedumpSystem.SegaNaomiSatelliteTerminalPC:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Nu
- case RedumpSystem.SegaNu:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Nu
- case RedumpSystem.SegaNu11:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Nu
- case RedumpSystem.SegaNu2:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://segaretro.org/Nu_SX
- case RedumpSystem.SegaNuSX:
- types.Add(PhysicalMediaType.DVD);
- 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(PhysicalMediaType.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(PhysicalMediaType.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(PhysicalMediaType.DVD);
- break;
-
- // http://system16.com/hardware.php?id=711
- case RedumpSystem.SegaTitanVideo:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // http://system16.com/hardware.php?id=709
- // http://system16.com/hardware.php?id=710
- case RedumpSystem.SegaSystem32:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://github.com/mamedev/mame/blob/master/src/mame/drivers/seibucats.cpp
- case RedumpSystem.SeibuCATSSystem:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://www.tab.at/en/support/support/downloads
- case RedumpSystem.TABAustriaQuizard:
- types.Add(PhysicalMediaType.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(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/UltraCade_Technologies
- case RedumpSystem.UltraCade:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- #endregion
-
- #region Others
-
- // https://en.wikipedia.org/wiki/Audio_CD
- case RedumpSystem.AudioCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Blu-ray#Player_profiles
- case RedumpSystem.BDVideo:
- types.Add(PhysicalMediaType.BluRay);
- break;
-
- // https://en.wikipedia.org/wiki/DVD-Audio
- case RedumpSystem.DVDAudio:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/DVD-Video
- case RedumpSystem.DVDVideo:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/Blue_Book_(CD_standard)
- case RedumpSystem.EnhancedCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/HD_DVD
- case RedumpSystem.HDDVDVideo:
- types.Add(PhysicalMediaType.HDDVD);
- break;
-
- // UNKNOWN
- case RedumpSystem.NavisoftNaviken21:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.PalmOS:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Photo_CD
- case RedumpSystem.PhotoCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.PlayStationGameSharkUpdates:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.PocketPC:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.Psion:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Doors_and_Windows_(EP)
- case RedumpSystem.RainbowDisc:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://segaretro.org/Prologue_21
- case RedumpSystem.SegaPrologue21MultimediaKaraokeSystem:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.SharpZaurus:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.SonyElectronicBook:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Super_Audio_CD
- case RedumpSystem.SuperAudioCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://www.cnet.com/products/tao-music-iktv-karaoke-station-karaoke-system-series/
- case RedumpSystem.TaoiKTV:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // http://ultimateconsoledatabase.com/golden/kiss_site.htm
- case RedumpSystem.TomyKissSite:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Video_CD
- case RedumpSystem.VideoCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- #endregion
-
- default:
- types.Add(PhysicalMediaType.NONE);
- break;
- }
-#pragma warning restore IDE0010 // Add missing cases
-
- return types;
- }
-
///
/// Convert master list of all media types to currently known Redump disc types
///
@@ -1194,315 +428,6 @@ namespace SabreTools.RedumpLib.RedumpInfo.Data
#endregion
- #region System
-
- ///
- /// Determine if a system is okay if it's not detected by Windows
- ///
- /// RedumpSystem value to check
- /// True if Windows show see a disc when dumping, false otherwise
- public static bool DetectedByWindows(this RedumpSystem? system)
- {
-#pragma warning disable IDE0072 // Add missing cases
- return system switch
- {
- // BIOS Sets
- RedumpSystem.MicrosoftXboxBIOS
- or RedumpSystem.NintendoGameCubeBIOS
- or RedumpSystem.SonyPlayStationBIOS
- or RedumpSystem.SonyPlayStation2BIOS => false,
-
- // Disc-Based Consoles
- RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem
- or RedumpSystem.BandaiPlaydiaQuickInteractiveSystem
- or RedumpSystem.BandaiPippin
- or RedumpSystem.HasbroVideoNow
- or RedumpSystem.HasbroVideoNowColor
- or RedumpSystem.HasbroVideoNowJr
- or RedumpSystem.HasbroVideoNowXP
- or RedumpSystem.NintendoGameCube
- or RedumpSystem.NintendoWii
- or RedumpSystem.NintendoWiiU
- or RedumpSystem.Panasonic3DOInteractiveMultiplayer
- or RedumpSystem.PhilipsCDi
- or RedumpSystem.PioneerLaserActive
- or RedumpSystem.MarkerDiscBasedConsoleEnd => false,
-
- // Computers
- RedumpSystem.AppleMacintosh
- or RedumpSystem.MarkerComputerEnd => false,
-
- // Arcade
- RedumpSystem.AmericanLaserGames3DO
- or RedumpSystem.Atari3DO
- or RedumpSystem.NewJatreCDi
- or RedumpSystem.PanasonicM2
- or RedumpSystem.MarkerArcadeEnd => false,
-
- // Other
- RedumpSystem.PlayStationGameSharkUpdates
- or RedumpSystem.SuperAudioCD
- or RedumpSystem.MarkerOtherEnd => false,
-
- null => false,
- _ => true,
- };
-#pragma warning restore IDE0072 // Add missing cases
- }
-
- ///
- /// Determine if a system has reversed ringcodes
- ///
- /// RedumpSystem value to check
- /// True if the system has reversed ringcodes, false otherwise
- public static bool HasReversedRingcodes(this RedumpSystem? system)
- {
-#pragma warning disable IDE0072 // Add missing cases
- return system switch
- {
- RedumpSystem.SonyPlayStation2
- or RedumpSystem.SonyPlayStation3
- or RedumpSystem.SonyPlayStation4
- or RedumpSystem.SonyPlayStation5
- or RedumpSystem.SonyPlayStationPortable => true,
- _ => false,
- };
-#pragma warning restore IDE0072 // Add missing cases
- }
-
- ///
- /// Determine if a system is considered audio-only
- ///
- /// 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 RedumpSystem? system)
- {
-#pragma warning disable IDE0072 // Add missing cases
- return system switch
- {
- RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem
- or RedumpSystem.AudioCD
- or RedumpSystem.DVDAudio
- or RedumpSystem.HasbroiONEducationalGamingSystem
- or RedumpSystem.HasbroVideoNow
- or RedumpSystem.HasbroVideoNowColor
- or RedumpSystem.HasbroVideoNowJr
- or RedumpSystem.HasbroVideoNowXP
- or RedumpSystem.PhilipsCDi
- or RedumpSystem.PlayStationGameSharkUpdates
- or RedumpSystem.SuperAudioCD => true,
- _ => false,
- };
-#pragma warning restore IDE0072 // Add missing cases
- }
-
- ///
- /// Determine if a system is a marker value
- ///
- /// RedumpSystem value to check
- /// True if the system is a marker value, false otherwise
- public static bool IsMarker(this RedumpSystem system)
- => ((RedumpSystem?)system).IsMarker();
-
- ///
- /// Determine if a system is a marker value
- ///
- /// RedumpSystem value to check
- /// True if the system is a marker value, false otherwise
- public static bool IsMarker(this RedumpSystem? system)
- {
-#pragma warning disable IDE0072 // Add missing cases
- return system switch
- {
- RedumpSystem.MarkerArcadeEnd
- or RedumpSystem.MarkerComputerEnd
- or RedumpSystem.MarkerDiscBasedConsoleEnd
- or RedumpSystem.MarkerOtherEnd => true,
- _ => false,
- };
-#pragma warning restore IDE0072 // Add missing cases
- }
-
- ///
- /// Determine if a system is considered XGD
- ///
- /// RedumpSystem value to check
- /// True if the system is XGD, false otherwise
- public static bool IsXGD(this RedumpSystem? system)
- {
-#pragma warning disable IDE0072 // Add missing cases
- return system switch
- {
- RedumpSystem.MicrosoftXbox
- or RedumpSystem.MicrosoftXbox360
- or RedumpSystem.MicrosoftXboxOne
- or RedumpSystem.MicrosoftXboxSeriesXS => true,
- _ => false,
- };
-#pragma warning restore IDE0072 // Add missing cases
- }
-
- ///
- /// List all systems with their short usable names
- ///
- public static List ListSystems()
- {
- var systems = (RedumpSystem[])Enum.GetValues(typeof(RedumpSystem));
- var knownSystems = Array.FindAll(systems, s => !s.IsMarker() && s.GetCategory() != SystemCategory.NONE);
- Array.Sort(knownSystems, (x, y) => (x.LongName() ?? string.Empty).CompareTo(y.LongName() ?? string.Empty));
- return [.. Array.ConvertAll(knownSystems, val => $"{val.ShortName()} - {val.LongName()}")];
- }
-
- ///
- /// Get the Redump longnames for each known system
- ///
- ///
- ///
- public static string? LongName(this RedumpSystem system)
- => AttributeHelper.GetHumanReadableAttribute(system)?.LongName;
-
- ///
- /// Get the Redump longnames for each known system
- ///
- ///
- ///
- public static string? LongName(this RedumpSystem? system)
- => AttributeHelper.GetHumanReadableAttribute(system)?.LongName;
-
- ///
- /// Get the Redump shortnames for each known system
- ///
- ///
- ///
- public static string? ShortName(this RedumpSystem system)
- => AttributeHelper.GetHumanReadableAttribute(system)?.ShortName;
-
- ///
- /// Get the Redump shortnames for each known system
- ///
- ///
- ///
- public static string? ShortName(this RedumpSystem? system)
- => AttributeHelper.GetHumanReadableAttribute(system)?.ShortName;
-
- ///
- /// Determine the category of a system
- ///
- public static SystemCategory GetCategory(this RedumpSystem system)
- => ((RedumpSystem?)system).GetCategory();
-
- ///
- /// Determine the category of a system
- ///
- public static SystemCategory GetCategory(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.Category ?? SystemCategory.NONE;
-
- ///
- /// Determine if a system is available in Redump yet
- ///
- public static bool IsAvailable(this RedumpSystem system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.Available ?? false;
-
- ///
- /// Determine if a system is available in Redump yet
- ///
- public static bool IsAvailable(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.Available ?? false;
-
- ///
- /// Determine if a system is restricted to dumpers
- ///
- public static bool IsBanned(this RedumpSystem system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.IsBanned ?? false;
-
- ///
- /// Determine if a system is restricted to dumpers
- ///
- public static bool IsBanned(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.IsBanned ?? false;
-
- ///
- /// Determine if a system has a CUE pack
- ///
- public static bool HasCues(this RedumpSystem system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasCues ?? false;
-
- ///
- /// Determine if a system has a CUE pack
- ///
- public static bool HasCues(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasCues ?? false;
-
- ///
- /// Determine if a system has a DAT
- ///
- public static bool HasDat(this RedumpSystem system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasDat ?? false;
-
- ///
- /// Determine if a system has a DAT
- ///
- public static bool HasDat(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasDat ?? false;
-
- ///
- /// Determine if a system has a keys pack
- ///
- public static bool HasKeys(this RedumpSystem system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasKeys ?? false;
-
- ///
- /// Determine if a system has a keys pack
- ///
- public static bool HasKeys(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasKeys ?? false;
-
- ///
- /// Determine if a system has an SBI pack
- ///
- public static bool HasSbi(this RedumpSystem system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasSbi ?? false;
-
- ///
- /// Determine if a system has an SBI pack
- ///
- public static bool HasSbi(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasSbi ?? false;
-
- ///
- /// Get the RedumpSystem enum value for a given string
- ///
- /// String value to convert
- /// RedumpSystem represented by the string, if possible
- public static RedumpSystem? ToRedumpSystem(this string? system)
- {
- // No value means no match
- if (system is null || system.Length == 0)
- return null;
-
- system = system.ToLowerInvariant();
- var redumpSystems = (RedumpSystem[])Enum.GetValues(typeof(RedumpSystem));
-
- // Check short names
- int index = Array.FindIndex(redumpSystems, s => system == s.ShortName()?.ToLowerInvariant());
- if (index > -1)
- return redumpSystems[index];
-
- // Check long names
- index = Array.FindIndex(redumpSystems, s => system == s.LongName()?.ToLowerInvariant()
- || system == s.LongName()?.Replace(" ", string.Empty)?.ToLowerInvariant());
- if (index > -1)
- return redumpSystems[index];
-
- return null;
- }
-
- #endregion
-
#region System Category
///
diff --git a/SabreTools.RedumpLib/RedumpInfo/Discs.cs b/SabreTools.RedumpLib/RedumpInfo/Discs.cs
index 90f7296..d30efdf 100644
--- a/SabreTools.RedumpLib/RedumpInfo/Discs.cs
+++ b/SabreTools.RedumpLib/RedumpInfo/Discs.cs
@@ -39,7 +39,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
RedumpOrg.Data.SortCategory? sort = null,
RedumpOrg.Data.SortDirection? sortDir = null,
DumpStatus? status = null,
- RedumpSystem? system = null,
+ PhysicalSystem? system = null,
int limit = -1,
DiscSubpath[]? discSubpaths = null)
{
@@ -164,7 +164,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
RedumpOrg.Data.SortCategory? sort = null,
RedumpOrg.Data.SortDirection? sortDir = null,
DumpStatus? status = null,
- RedumpSystem? system = null,
+ PhysicalSystem? system = null,
int limit = -1)
{
// Keep getting discs pages until there are none left
diff --git a/SabreTools.RedumpLib/RedumpInfo/Packs.cs b/SabreTools.RedumpLib/RedumpInfo/Packs.cs
index 935b70c..5c41536 100644
--- a/SabreTools.RedumpLib/RedumpInfo/Packs.cs
+++ b/SabreTools.RedumpLib/RedumpInfo/Packs.cs
@@ -1,5 +1,6 @@
using System;
using System.Threading.Tasks;
+using SabreTools.RedumpLib.Data;
using SabreTools.RedumpLib.RedumpInfo.Data;
namespace SabreTools.RedumpLib.RedumpInfo
@@ -17,7 +18,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// True to use named subfolders to store downloads, false to store directly in the output directory
public static async Task DownloadAllPacks(this Client client, string? outDir, bool useSubfolders)
{
- var systems = (RedumpSystem[])Enum.GetValues(typeof(RedumpSystem));
+ var systems = (PhysicalSystem[])Enum.GetValues(typeof(PhysicalSystem));
return await client.DownloadPacksForSystems(systems, outDir, useSubfolders);
}
@@ -25,18 +26,18 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// Download premade packs for an individual system
///
/// RedumpClient for connectivity
- /// RedumpSystem to get all possible packs for
+ /// PhysicalSystem to get all possible packs for
/// Output directory to save data to
/// True to use named subfolders to store downloads, false to store directly in the output directory
public static async Task DownloadPacksForSystem(this Client client,
- RedumpSystem? system,
+ PhysicalSystem? system,
string? outDir,
bool useSubfolders)
{
if (system is null)
return false;
- var systems = new RedumpSystem[] { system.Value };
+ var systems = new PhysicalSystem[] { system.Value };
return await client.DownloadPacksForSystems(systems, outDir, useSubfolders);
}
@@ -48,7 +49,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// Output directory to save data to
/// True to use named subfolders to store downloads, false to store directly in the output directory
public static async Task DownloadPacksForSystems(this Client client,
- RedumpSystem[] systems,
+ PhysicalSystem[] systems,
string? outDir,
bool useSubfolders)
{
diff --git a/SabreTools.RedumpLib/RedumpInfo/SystemAttribute.cs b/SabreTools.RedumpLib/RedumpInfo/SystemAttribute.cs
deleted file mode 100644
index 26a0197..0000000
--- a/SabreTools.RedumpLib/RedumpInfo/SystemAttribute.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using SabreTools.RedumpLib.Attributes;
-using SabreTools.RedumpLib.RedumpInfo.Data;
-
-namespace SabreTools.RedumpLib.RedumpInfo
-{
- ///
- /// Attribute specifc to Redump System values
- ///
- public class SystemAttribute : HumanReadableAttribute
- {
- ///
- /// Category for the system
- ///
- public SystemCategory Category { get; set; }
-
- ///
- /// System is restricted to dumpers
- ///
- public bool IsBanned { get; set; } = false;
-
- ///
- /// System has a CUE pack
- ///
- public bool HasCues { get; set; } = false;
-
- ///
- /// System has a DAT
- ///
- public bool HasDat { get; set; } = false;
-
- ///
- /// System has a keys pack
- ///
- public bool HasKeys { get; set; } = false;
-
- ///
- /// System has an SBI pack
- ///
- public bool HasSbi { get; set; } = false;
- }
-}
diff --git a/SabreTools.RedumpLib/RedumpInfo/UrlBuilder.cs b/SabreTools.RedumpLib/RedumpInfo/UrlBuilder.cs
index 312a0fe..94068b2 100644
--- a/SabreTools.RedumpLib/RedumpInfo/UrlBuilder.cs
+++ b/SabreTools.RedumpLib/RedumpInfo/UrlBuilder.cs
@@ -147,7 +147,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
RedumpOrg.Data.SortCategory? sort = null,
RedumpOrg.Data.SortDirection? sortDir = null,
DumpStatus? status = null,
- RedumpSystem? system = null,
+ PhysicalSystem? system = null,
int? page = null)
{
var sb = new StringBuilder();
@@ -242,7 +242,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// Pack type
/// System for download
/// Does not check for invalid systems
- public static string BuildPackUrl(PackType packType, RedumpSystem system)
+ public static string BuildPackUrl(PackType packType, PhysicalSystem system)
{
var sb = new StringBuilder();
diff --git a/SabreTools.RedumpLib/RedumpOrg/Client.cs b/SabreTools.RedumpLib/RedumpOrg/Client.cs
index d25550e..5ec581d 100644
--- a/SabreTools.RedumpLib/RedumpOrg/Client.cs
+++ b/SabreTools.RedumpLib/RedumpOrg/Client.cs
@@ -429,7 +429,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
SortCategory? sort = null,
SortDirection? sortDir = null,
DumpStatus? status = null,
- RedumpSystem? system = null,
+ PhysicalSystem? system = null,
int? tracks = null,
bool comments = false,
bool contents = false,
@@ -569,7 +569,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
SortCategory? sort = null,
SortDirection? sortDir = null,
DumpStatus? status = null,
- RedumpSystem? system = null,
+ PhysicalSystem? system = null,
int? tracks = null,
bool comments = false,
bool contents = false,
@@ -757,7 +757,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// System for filtering, null to retrieve for all systems at once
/// String containing the page contents if successful, null on error
/// may have to match the logged-in user
- public async Task DownloadSingleList(bool have, string username, RedumpSystem? system)
+ public async Task DownloadSingleList(bool have, string username, PhysicalSystem? system)
{
string systemName = system.ShortName() ?? "all";
Console.WriteLine($"Processing {(have ? "have" : "miss")} list for {username} for {systemName}");
@@ -792,7 +792,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// Output directory to save data to
/// True if all data was downloaded, false otherwise
/// may have to match the logged-in user
- public async Task DownloadSingleList(bool have, string username, RedumpSystem? system, string? outDir)
+ public async Task DownloadSingleList(bool have, string username, PhysicalSystem? system, string? outDir)
{
// If no output directory is defined, use the current directory instead
if (string.IsNullOrEmpty(outDir))
@@ -835,7 +835,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// Pack type to use to determine the download URL
/// System to download packs for
/// Byte array containing the downloaded pack, null on error
- public async Task DownloadSinglePack(PackType packType, RedumpSystem? system)
+ public async Task DownloadSinglePack(PackType packType, PhysicalSystem? system)
{
try
{
@@ -887,7 +887,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// Pack type to use to determine the download URL
/// System to download packs for
/// Output directory to save data to
- public async Task DownloadSinglePack(PackType packType, RedumpSystem? system, string? outDir)
+ public async Task DownloadSinglePack(PackType packType, PhysicalSystem? system, string? outDir)
{
try
{
@@ -955,7 +955,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// System to download packs for
/// Output directory to save data to
/// Named subfolder for the pack, used optionally
- public async Task DownloadSinglePack(PackType packType, RedumpSystem? system, string? outDir, string? subfolder)
+ public async Task DownloadSinglePack(PackType packType, PhysicalSystem? system, string? outDir, string? subfolder)
{
try
{
@@ -1563,7 +1563,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
///
/// Pack type to use to determine the download URL
/// Systems to download packs for
- public async Task> DownloadPacks(PackType packType, RedumpSystem[] systems)
+ public async Task> DownloadPacks(PackType packType, PhysicalSystem[] systems)
{
// Determine if the pack type is valid
if (!Enum.IsDefined(typeof(PackType), packType))
@@ -1572,7 +1572,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
return [];
}
- var packsDictionary = new Dictionary();
+ var packsDictionary = new Dictionary();
foreach (var system in systems)
{
string longName = system.LongName() ?? $"UNKNOWN_{system}";
@@ -1602,7 +1602,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// Pack type to use to determine the download URL
/// Systems to download packs for
/// Output directory to save data to
- public async Task DownloadPacks(PackType packType, RedumpSystem[] systems, string? outDir)
+ public async Task DownloadPacks(PackType packType, PhysicalSystem[] systems, string? outDir)
{
// Determine if the pack type is valid
if (!Enum.IsDefined(typeof(PackType), packType))
@@ -1638,7 +1638,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// Systems to download packs for
/// Output directory to save data to
/// Named subfolder for the pack, used optionally
- public async Task DownloadPacks(PackType packType, RedumpSystem[] systems, string? outDir, string? subfolder)
+ public async Task DownloadPacks(PackType packType, PhysicalSystem[] systems, string? outDir, string? subfolder)
{
// Determine if the pack type is valid
if (!Enum.IsDefined(typeof(PackType), packType))
@@ -1755,7 +1755,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// Pack type to use to determine the support status
/// Systems to determine pack availability for
/// True if the pack is available for a system, false otherwise
- private static bool PackTypeToAvailable(PackType packType, RedumpSystem system)
+ private static bool PackTypeToAvailable(PackType packType, PhysicalSystem system)
{
return packType switch
{
diff --git a/SabreTools.RedumpLib/RedumpOrg/Converters/SystemConverter.cs b/SabreTools.RedumpLib/RedumpOrg/Converters/PhysicalSystemConverter.cs
similarity index 53%
rename from SabreTools.RedumpLib/RedumpOrg/Converters/SystemConverter.cs
rename to SabreTools.RedumpLib/RedumpOrg/Converters/PhysicalSystemConverter.cs
index a21698b..000e90b 100644
--- a/SabreTools.RedumpLib/RedumpOrg/Converters/SystemConverter.cs
+++ b/SabreTools.RedumpLib/RedumpOrg/Converters/PhysicalSystemConverter.cs
@@ -1,18 +1,19 @@
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
+using SabreTools.RedumpLib.Data;
using SabreTools.RedumpLib.RedumpOrg.Data;
namespace SabreTools.RedumpLib.RedumpOrg.Converters
{
///
- /// Serialize RedumpSystem enum values
+ /// Serialize PhysicalSystem enum values
///
- public class SystemConverter : JsonConverter
+ public class PhysicalSystemConverter : JsonConverter
{
public override bool CanRead { get { return true; } }
- public override RedumpSystem? ReadJson(JsonReader reader, Type objectType, RedumpSystem? existingValue, bool hasExistingValue, JsonSerializer serializer)
+ public override PhysicalSystem? ReadJson(JsonReader reader, Type objectType, PhysicalSystem? existingValue, bool hasExistingValue, JsonSerializer serializer)
{
// If we have a value already, don't overwrite it
if (hasExistingValue)
@@ -23,12 +24,12 @@ namespace SabreTools.RedumpLib.RedumpOrg.Converters
return null;
// Try to parse the value
- return value.ToRedumpSystem();
+ return value.ToPhysicalSystem();
}
- public override void WriteJson(JsonWriter writer, RedumpSystem? value, JsonSerializer serializer)
+ public override void WriteJson(JsonWriter writer, PhysicalSystem? value, JsonSerializer serializer)
{
- JToken t = JToken.FromObject(value.ShortName() ?? string.Empty);
+ JToken t = JToken.FromObject(value.ShortNameAlt() ?? string.Empty);
t.WriteTo(writer);
}
}
diff --git a/SabreTools.RedumpLib/RedumpOrg/Data/Enumerations.cs b/SabreTools.RedumpLib/RedumpOrg/Data/Enumerations.cs
index 1def2a3..2e4c299 100644
--- a/SabreTools.RedumpLib/RedumpOrg/Data/Enumerations.cs
+++ b/SabreTools.RedumpLib/RedumpOrg/Data/Enumerations.cs
@@ -214,603 +214,6 @@ namespace SabreTools.RedumpLib.RedumpOrg.Data
Sbis,
}
- ///
- /// List of all known systems
- ///
- /// TODO: Remove marker items
- public enum RedumpSystem
- {
- #region BIOS Sets
-
- [System(LongName = "Microsoft Xbox (BIOS)", ShortName = "xbox-bios", HasDat = true)]
- MicrosoftXboxBIOS,
-
- [System(LongName = "Nintendo GameCube (BIOS)", ShortName = "gc-bios", HasDat = true)]
- NintendoGameCubeBIOS,
-
- [System(LongName = "Sony PlayStation (BIOS)", ShortName = "psx-bios", HasDat = true)]
- SonyPlayStationBIOS,
-
- [System(LongName = "Sony PlayStation 2 (BIOS)", ShortName = "ps2-bios", HasDat = true)]
- SonyPlayStation2BIOS,
-
- #endregion
-
- #region Disc-Based Consoles
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Atari Jaguar CD Interactive Multimedia System", ShortName = "ajcd", HasCues = true, HasDat = true)]
- AtariJaguarCDInteractiveMultimediaSystem,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Bandai Playdia Quick Interactive System", ShortName = "qis", HasCues = true, HasDat = true)]
- BandaiPlaydiaQuickInteractiveSystem,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Bandai Pippin", ShortName = "pippin", HasCues = true, HasDat = true)]
- BandaiPippin,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Commodore Amiga CD32", ShortName = "cd32", HasCues = true, HasDat = true)]
- CommodoreAmigaCD32,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Commodore Amiga CDTV", ShortName = "cdtv", HasCues = true, HasDat = true)]
- CommodoreAmigaCDTV,
-
- [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Envizions EVO Smart Console")]
- EnvizionsEVOSmartConsole,
-
- [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Fujitsu FM Towns Marty")]
- FujitsuFMTownsMarty,
-
- [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Hasbro iON Educational Gaming System")]
- HasbroiONEducationalGamingSystem,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow", ShortName = "hvn", IsBanned = true, HasCues = true, HasDat = true)]
- HasbroVideoNow,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow Color", ShortName = "hvnc", IsBanned = true, HasCues = true, HasDat = true)]
- HasbroVideoNowColor,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow Jr.", ShortName = "hvnjr", IsBanned = true, HasCues = true, HasDat = true)]
- HasbroVideoNowJr,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow XP", ShortName = "hvnxp", IsBanned = true, HasCues = true, HasDat = true)]
- HasbroVideoNowXP,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Mattel Fisher-Price iXL", ShortName = "ixl", HasCues = true, HasDat = true)]
- MattelFisherPriceiXL,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Mattel HyperScan", ShortName = "hs", HasCues = true, HasDat = true)]
- MattelHyperScan,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Memorex Visual Information System", ShortName = "vis", HasCues = true, HasDat = true)]
- MemorexVisualInformationSystem,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox", ShortName = "xbox", HasCues = true, HasDat = true)]
- MicrosoftXbox,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox 360", ShortName = "xbox360", HasCues = true, HasDat = true)]
- MicrosoftXbox360,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox One", ShortName = "xboxone", IsBanned = true, HasDat = true)]
- MicrosoftXboxOne,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox Series X", ShortName = "xboxsx", IsBanned = true, HasDat = true)]
- MicrosoftXboxSeriesXS,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "NEC PC Engine CD & TurboGrafx CD", ShortName = "pce", HasCues = true, HasDat = true)]
- NECPCEngineCDTurboGrafxCD,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "NEC PC-FX & PC-FXGA", ShortName = "pc-fx", HasCues = true, HasDat = true)]
- NECPCFXPCFXGA,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo GameCube", ShortName = "gc", HasDat = true)]
- NintendoGameCube,
-
- [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Nintendo-Sony Super NES CD-ROM System")]
- NintendoSonySuperNESCDROMSystem,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo Wii", ShortName = "wii", HasDat = true)]
- NintendoWii,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo Wii U", ShortName = "wiiu", IsBanned = true, HasDat = true, HasKeys = true)]
- NintendoWiiU,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Panasonic 3DO Interactive Multiplayer", ShortName = "3do", HasCues = true, HasDat = true)]
- Panasonic3DOInteractiveMultiplayer,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Philips CD-i", ShortName = "cdi", HasCues = true, HasDat = true)]
- PhilipsCDi,
-
- [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Playmaji Polymega")]
- PlaymajiPolymega,
-
- [System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Pioneer LaserActive")]
- PioneerLaserActive,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Dreamcast", ShortName = "dc", HasCues = true, HasDat = true, HasGdi = true)]
- SegaDreamcast,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Mega CD & Sega CD", ShortName = "mcd", HasCues = true, HasDat = true)]
- SegaMegaCDSegaCD,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Saturn", ShortName = "ss", HasCues = true, HasDat = true)]
- SegaSaturn,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Neo Geo CD", ShortName = "ngcd", HasCues = true, HasDat = true)]
- SNKNeoGeoCD,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation", ShortName = "psx", HasCues = true, HasDat = true, HasLsd = true, HasSbi = true)]
- SonyPlayStation,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 2", ShortName = "ps2", HasCues = true, HasDat = true)]
- SonyPlayStation2,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 3", ShortName = "ps3", HasCues = true, HasDat = true, HasDkeys = true, HasKeys = true)]
- SonyPlayStation3,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 4", ShortName = "ps4", IsBanned = true, HasDat = true)]
- SonyPlayStation4,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 5", ShortName = "ps5", IsBanned = true, HasDat = true)]
- SonyPlayStation5,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation Portable", ShortName = "psp", HasDat = true)]
- SonyPlayStationPortable,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "VM Labs NUON", ShortName = "nuon", HasDat = true)]
- VMLabsNUON,
-
- [System(Category = SystemCategory.DiscBasedConsole, LongName = "VTech V.Flash & V.Smile Pro", ShortName = "vflash", HasCues = true, HasDat = true)]
- VTechVFlashVSmilePro,
-
- [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 = "arch", HasCues = true, HasDat = true)]
- AcornArchimedes,
-
- [System(Category = SystemCategory.Computer, LongName = "Apple Macintosh", ShortName = "mac", HasCues = true, HasDat = true, HasLsd = true, HasSbi = 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 = "x68k", 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 = "FuRyu & Omron Purikura")]
- FuRyuOmronPurikura,
-
- [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, Available = false, LongName = "JVL iTouch")]
- JVLiTouch,
-
- [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", HasCues = true, HasDat = true)]
- 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 Purikura")]
- NamcoPurikura,
-
- [System(Category = SystemCategory.Arcade, LongName = "Namco · Sega · Nintendo Triforce", ShortName = "trf", 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 / System 256", ShortName = "ns246", HasCues = true, HasDat = true)]
- NamcoSystem246256,
-
- [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, Available = false, LongName = "Sega ALLS")]
- SegaALLS,
-
- [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 NAOMI Satellite Terminal PC")]
- SegaNaomiSatelliteTerminalPC,
-
- [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu")]
- SegaNu,
-
- [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu 1.1")]
- SegaNu11,
-
- [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu 2")]
- SegaNu2,
-
- [System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu SX")]
- SegaNuSX,
-
- [System(Category = SystemCategory.Arcade, LongName = "Sega RingEdge", ShortName = "sre", HasDat = true)]
- SegaRingEdge,
-
- [System(Category = SystemCategory.Arcade, LongName = "Sega RingEdge 2", ShortName = "sre2", 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,
-
- [System(Category = SystemCategory.Arcade, Available = false, LongName = "UltraCade PC-based Systems")]
- UltraCade,
-
- // 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 = "Psion")]
- Psion,
-
- [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 = "Sharp Zaurus")]
- SharpZaurus,
-
- [System(Category = SystemCategory.Other, Available = false, LongName = "Sony Electronic Book")]
- SonyElectronicBook,
-
- [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
- }
-
///
/// List of all Redump site codes
///
@@ -1152,29 +555,6 @@ namespace SabreTools.RedumpLib.RedumpOrg.Data
Descending,
}
- ///
- /// 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
///
diff --git a/SabreTools.RedumpLib/RedumpOrg/Data/Extensions.cs b/SabreTools.RedumpLib/RedumpOrg/Data/Extensions.cs
index 61ecb73..2f14a03 100644
--- a/SabreTools.RedumpLib/RedumpOrg/Data/Extensions.cs
+++ b/SabreTools.RedumpLib/RedumpOrg/Data/Extensions.cs
@@ -14,770 +14,6 @@ namespace SabreTools.RedumpLib.RedumpOrg.Data
{
#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(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Playdia
- case RedumpSystem.BandaiPlaydiaQuickInteractiveSystem:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Apple_Bandai_Pippin
- case RedumpSystem.BandaiPippin:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Amiga_CD32
- case RedumpSystem.CommodoreAmigaCD32:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Commodore_CDTV
- case RedumpSystem.CommodoreAmigaCDTV:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/EVO_Smart_Console
- case RedumpSystem.EnvizionsEVOSmartConsole:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/FM_Towns_Marty
- case RedumpSystem.FujitsuFMTownsMarty:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.FloppyDisk);
- break;
-
- // http://videogamekraken.com/ion-educational-gaming-system-by-hasbro
- case RedumpSystem.HasbroiONEducationalGamingSystem:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/VideoNow
- case RedumpSystem.HasbroVideoNow:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/VideoNow
- case RedumpSystem.HasbroVideoNowColor:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/VideoNow
- case RedumpSystem.HasbroVideoNowJr:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/VideoNow
- case RedumpSystem.HasbroVideoNowXP:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- case RedumpSystem.MattelFisherPriceiXL:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/HyperScan
- case RedumpSystem.MattelHyperScan:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Xbox_(console)
- case RedumpSystem.MicrosoftXbox:
- types.Add(PhysicalMediaType.DVD);
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Xbox_360
- case RedumpSystem.MicrosoftXbox360:
- types.Add(PhysicalMediaType.DVD);
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Xbox_One
- case RedumpSystem.MicrosoftXboxOne:
- types.Add(PhysicalMediaType.BluRay);
- break;
-
- // https://en.wikipedia.org/wiki/Xbox_Series_X_and_Series_S
- case RedumpSystem.MicrosoftXboxSeriesXS:
- types.Add(PhysicalMediaType.BluRay);
- break;
-
- // https://en.wikipedia.org/wiki/TurboGrafx-16
- case RedumpSystem.NECPCEngineCDTurboGrafxCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/PC-FX
- case RedumpSystem.NECPCFXPCFXGA:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/GameCube
- case RedumpSystem.NintendoGameCube:
- types.Add(PhysicalMediaType.DVD); // Only added here to help users; not strictly correct
- types.Add(PhysicalMediaType.NintendoGameCubeGameDisc);
- break;
-
- // https://en.wikipedia.org/wiki/Super_NES_CD-ROM
- case RedumpSystem.NintendoSonySuperNESCDROMSystem:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Wii
- case RedumpSystem.NintendoWii:
- types.Add(PhysicalMediaType.DVD); // Only added here to help users; not strictly correct
- types.Add(PhysicalMediaType.NintendoWiiOpticalDisc);
- break;
-
- // https://en.wikipedia.org/wiki/Wii_U
- case RedumpSystem.NintendoWiiU:
- types.Add(PhysicalMediaType.NintendoWiiUOpticalDisc);
- break;
-
- // https://en.wikipedia.org/wiki/3DO_Interactive_Multiplayer
- case RedumpSystem.Panasonic3DOInteractiveMultiplayer:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Philips_CD-i
- case RedumpSystem.PhilipsCDi:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Polymega
- case RedumpSystem.PlaymajiPolymega:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/LaserActive
- case RedumpSystem.PioneerLaserActive:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.LaserDisc);
- break;
-
- // https://en.wikipedia.org/wiki/Sega_CD
- case RedumpSystem.SegaMegaCDSegaCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Dreamcast
- case RedumpSystem.SegaDreamcast:
- types.Add(PhysicalMediaType.CDROM); // Low density partition, MIL-CD
- types.Add(PhysicalMediaType.GDROM); // High density partition
- break;
-
- // https://en.wikipedia.org/wiki/Sega_Saturn
- case RedumpSystem.SegaSaturn:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Neo_Geo_CD
- case RedumpSystem.SNKNeoGeoCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/PlayStation_(console)
- case RedumpSystem.SonyPlayStation:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/PlayStation_2
- case RedumpSystem.SonyPlayStation2:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/PlayStation_3
- case RedumpSystem.SonyPlayStation3:
- types.Add(PhysicalMediaType.BluRay);
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/PlayStation_4
- case RedumpSystem.SonyPlayStation4:
- types.Add(PhysicalMediaType.BluRay);
- break;
-
- // https://en.wikipedia.org/wiki/PlayStation_5
- case RedumpSystem.SonyPlayStation5:
- types.Add(PhysicalMediaType.BluRay);
- break;
-
- // https://en.wikipedia.org/wiki/PlayStation_Portable
- case RedumpSystem.SonyPlayStationPortable:
- types.Add(PhysicalMediaType.UMD);
- types.Add(PhysicalMediaType.CDROM); // Development discs only
- types.Add(PhysicalMediaType.DVD); // Development discs only
- break;
-
- // https://en.wikipedia.org/wiki/Tandy_Video_Information_System
- case RedumpSystem.MemorexVisualInformationSystem:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Nuon_(DVD_technology)
- case RedumpSystem.VMLabsNUON:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/V.Flash
- case RedumpSystem.VTechVFlashVSmilePro:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Game_Wave_Family_Entertainment_System
- case RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem:
- types.Add(PhysicalMediaType.CDROM); // Firmware discs only(?)
- types.Add(PhysicalMediaType.DVD);
- break;
-
- #endregion
-
- #region Computers
-
- // https://en.wikipedia.org/wiki/Acorn_Archimedes
- case RedumpSystem.AcornArchimedes:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.FloppyDisk);
- break;
-
- // https://en.wikipedia.org/wiki/Macintosh
- case RedumpSystem.AppleMacintosh:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- types.Add(PhysicalMediaType.FloppyDisk);
- types.Add(PhysicalMediaType.HardDisk);
- break;
-
- // https://en.wikipedia.org/wiki/Amiga
- case RedumpSystem.CommodoreAmigaCD:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.FloppyDisk);
- break;
-
- // https://en.wikipedia.org/wiki/FM_Towns
- case RedumpSystem.FujitsuFMTownsseries:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/IBM_PC_compatible
- case RedumpSystem.IBMPCcompatible:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- types.Add(PhysicalMediaType.BluRay);
- types.Add(PhysicalMediaType.FloppyDisk);
- types.Add(PhysicalMediaType.HardDisk);
- types.Add(PhysicalMediaType.DataCartridge);
- break;
-
- // https://en.wikipedia.org/wiki/PC-8800_series
- case RedumpSystem.NECPC88series:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.FloppyDisk);
- break;
-
- // https://en.wikipedia.org/wiki/PC-9800_series
- case RedumpSystem.NECPC98series:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- types.Add(PhysicalMediaType.FloppyDisk);
- break;
-
- // https://en.wikipedia.org/wiki/X68000
- case RedumpSystem.SharpX68000:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.FloppyDisk);
- break;
-
- #endregion
-
- #region Arcade
-
- // https://www.bigbookofamigahardware.com/bboah/product.aspx?id=36
- case RedumpSystem.AmigaCUBOCD32:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Orbatak
- case RedumpSystem.AmericanLaserGames3DO:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // http://system16.com/hardware.php?id=779
- case RedumpSystem.Atari3DO:
- types.Add(PhysicalMediaType.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(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://www.arcade-museum.com/members/member_detail.php?member_id=406530
- case RedumpSystem.AUSCOMSystem1:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // http://newlifegames.net/nlg/index.php?topic=285.0
- case RedumpSystem.BallyGameMagic:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/CP_System_III
- case RedumpSystem.CapcomCPSystemIII:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.funworldPhotoPlay:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/FuRyu
- case RedumpSystem.FuRyuOmronPurikura:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // UNKNOWN
- case RedumpSystem.GlobalVRVarious:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://service.globalvr.com/troubleshooting/vortek.html
- case RedumpSystem.GlobalVRVortek:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://service.globalvr.com/downloads/v3/040-1001-01c-V3-System-Manual.pdf
- case RedumpSystem.GlobalVRVortekV3:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://www.icegame.com/games
- case RedumpSystem.ICEPCHardware:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://github.com/mamedev/mame/blob/master/src/mame/drivers/iteagle.cpp
- case RedumpSystem.IncredibleTechnologiesEagle:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.IncredibleTechnologiesVarious:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // UNKNOWN
- case RedumpSystem.JVLiTouch:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/E-Amusement
- case RedumpSystem.KonamieAmusement:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://system16.com/hardware.php?id=828
- case RedumpSystem.KonamiFireBeat:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://system16.com/hardware.php?id=577
- case RedumpSystem.KonamiSystemGV:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // http://system16.com/hardware.php?id=575
- case RedumpSystem.KonamiM2:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // http://system16.com/hardware.php?id=586
- // http://system16.com/hardware.php?id=977
- case RedumpSystem.KonamiPython:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://system16.com/hardware.php?id=976
- // http://system16.com/hardware.php?id=831
- case RedumpSystem.KonamiPython2:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.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(PhysicalMediaType.CDROM);
- break;
-
- // http://system16.com/hardware.php?id=827
- case RedumpSystem.KonamiTwinkle:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.KonamiVarious:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://www.meritgames.com/Support_Center/manuals/PM0591-01.pdf
- case RedumpSystem.MeritIndustriesBoardwalk:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.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(PhysicalMediaType.CDROM);
- break;
-
- // http://www.meritgames.com/Service%20Center/Ion%20Troubleshooting.pdf
- case RedumpSystem.MeritIndustriesMegaTouchION:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.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(PhysicalMediaType.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(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.NamcoPurikura:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://system16.com/hardware.php?id=543
- // http://system16.com/hardware.php?id=546
- // http://system16.com/hardware.php?id=872
- case RedumpSystem.NamcoSystem246256:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://system16.com/hardware.php?id=545
- case RedumpSystem.NamcoSegaNintendoTriforce:
- types.Add(PhysicalMediaType.CDROM); // Low density partition
- types.Add(PhysicalMediaType.GDROM); // High density partition
- break;
-
- // http://system16.com/hardware.php?id=535
- case RedumpSystem.NamcoSystem12:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://www.arcade-history.com/?n=the-yakyuuken-part-1&page=detail&id=33049
- case RedumpSystem.NewJatreCDi:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // http://blog.system11.org/?p=2499
- case RedumpSystem.NichibutsuHighRateSystem:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://blog.system11.org/?p=2514
- case RedumpSystem.NichibutsuSuperCD:
- types.Add(PhysicalMediaType.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(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/Panasonic_M2
- case RedumpSystem.PanasonicM2:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://github.com/mamedev/mame/blob/master/src/mame/drivers/photoply.cpp
- case RedumpSystem.PhotoPlayVarious:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.RawThrillsVarious:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // UNKNOWN
- case RedumpSystem.SegaALLS:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // http://system16.com/hardware.php?id=729
- case RedumpSystem.SegaChihiro:
- types.Add(PhysicalMediaType.CDROM); // Low density partition
- types.Add(PhysicalMediaType.GDROM); // High density partition
- break;
-
- // http://system16.com/hardware.php?id=907
- case RedumpSystem.SegaEuropaR:
- types.Add(PhysicalMediaType.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(PhysicalMediaType.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(PhysicalMediaType.CDROM); // Low density partition
- types.Add(PhysicalMediaType.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(PhysicalMediaType.CDROM); // Low density partition
- types.Add(PhysicalMediaType.GDROM); // High density partition
- break;
-
- // https://segaretro.org/Sega_NAOMI#NAOMI_Satellite_Terminal
- case RedumpSystem.SegaNaomiSatelliteTerminalPC:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Nu
- case RedumpSystem.SegaNu:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Nu
- case RedumpSystem.SegaNu11:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Nu
- case RedumpSystem.SegaNu2:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://segaretro.org/Nu_SX
- case RedumpSystem.SegaNuSX:
- types.Add(PhysicalMediaType.DVD);
- 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(PhysicalMediaType.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(PhysicalMediaType.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(PhysicalMediaType.DVD);
- break;
-
- // http://system16.com/hardware.php?id=711
- case RedumpSystem.SegaTitanVideo:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // http://system16.com/hardware.php?id=709
- // http://system16.com/hardware.php?id=710
- case RedumpSystem.SegaSystem32:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://github.com/mamedev/mame/blob/master/src/mame/drivers/seibucats.cpp
- case RedumpSystem.SeibuCATSSystem:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://www.tab.at/en/support/support/downloads
- case RedumpSystem.TABAustriaQuizard:
- types.Add(PhysicalMediaType.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(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/UltraCade_Technologies
- case RedumpSystem.UltraCade:
- types.Add(PhysicalMediaType.CDROM);
- types.Add(PhysicalMediaType.DVD);
- break;
-
- #endregion
-
- #region Others
-
- // https://en.wikipedia.org/wiki/Audio_CD
- case RedumpSystem.AudioCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Blu-ray#Player_profiles
- case RedumpSystem.BDVideo:
- types.Add(PhysicalMediaType.BluRay);
- break;
-
- // https://en.wikipedia.org/wiki/DVD-Audio
- case RedumpSystem.DVDAudio:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/DVD-Video
- case RedumpSystem.DVDVideo:
- types.Add(PhysicalMediaType.DVD);
- break;
-
- // https://en.wikipedia.org/wiki/Blue_Book_(CD_standard)
- case RedumpSystem.EnhancedCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/HD_DVD
- case RedumpSystem.HDDVDVideo:
- types.Add(PhysicalMediaType.HDDVD);
- break;
-
- // UNKNOWN
- case RedumpSystem.NavisoftNaviken21:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.PalmOS:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Photo_CD
- case RedumpSystem.PhotoCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.PlayStationGameSharkUpdates:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.PocketPC:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.Psion:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Doors_and_Windows_(EP)
- case RedumpSystem.RainbowDisc:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://segaretro.org/Prologue_21
- case RedumpSystem.SegaPrologue21MultimediaKaraokeSystem:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.SharpZaurus:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // UNKNOWN
- case RedumpSystem.SonyElectronicBook:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Super_Audio_CD
- case RedumpSystem.SuperAudioCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://www.cnet.com/products/tao-music-iktv-karaoke-station-karaoke-system-series/
- case RedumpSystem.TaoiKTV:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // http://ultimateconsoledatabase.com/golden/kiss_site.htm
- case RedumpSystem.TomyKissSite:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- // https://en.wikipedia.org/wiki/Video_CD
- case RedumpSystem.VideoCD:
- types.Add(PhysicalMediaType.CDROM);
- break;
-
- #endregion
-
- default:
- types.Add(PhysicalMediaType.NONE);
- break;
- }
-
- return types;
- }
-
///
/// Convert master list of all media types to currently known Redump disc types
///
@@ -1565,341 +801,6 @@ namespace SabreTools.RedumpLib.RedumpOrg.Data
#endregion
- #region System
-
- ///
- /// Determine if a system is okay if it's not detected by Windows
- ///
- /// RedumpSystem value to check
- /// True if Windows show see a disc when dumping, false otherwise
- public static bool DetectedByWindows(this RedumpSystem? system)
- {
- return system switch
- {
- // BIOS Sets
- RedumpSystem.MicrosoftXboxBIOS
- or RedumpSystem.NintendoGameCubeBIOS
- or RedumpSystem.SonyPlayStationBIOS
- or RedumpSystem.SonyPlayStation2BIOS => false,
-
- // Disc-Based Consoles
- RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem
- or RedumpSystem.BandaiPlaydiaQuickInteractiveSystem
- or RedumpSystem.BandaiPippin
- or RedumpSystem.HasbroVideoNow
- or RedumpSystem.HasbroVideoNowColor
- or RedumpSystem.HasbroVideoNowJr
- or RedumpSystem.HasbroVideoNowXP
- or RedumpSystem.NintendoGameCube
- or RedumpSystem.NintendoWii
- or RedumpSystem.NintendoWiiU
- or RedumpSystem.Panasonic3DOInteractiveMultiplayer
- or RedumpSystem.PhilipsCDi
- or RedumpSystem.PioneerLaserActive
- or RedumpSystem.MarkerDiscBasedConsoleEnd => false,
-
- // Computers
- RedumpSystem.AppleMacintosh
- or RedumpSystem.MarkerComputerEnd => false,
-
- // Arcade
- RedumpSystem.AmericanLaserGames3DO
- or RedumpSystem.Atari3DO
- or RedumpSystem.NewJatreCDi
- or RedumpSystem.PanasonicM2
- or RedumpSystem.MarkerArcadeEnd => false,
-
- // Other
- RedumpSystem.PlayStationGameSharkUpdates
- or RedumpSystem.SuperAudioCD
- or RedumpSystem.MarkerOtherEnd => false,
-
- null => false,
- _ => true,
- };
- }
-
- ///
- /// Determine if a system has reversed ringcodes
- ///
- /// RedumpSystem value to check
- /// True if the system has reversed ringcodes, false otherwise
- public static bool HasReversedRingcodes(this RedumpSystem? system)
- {
- return system switch
- {
- RedumpSystem.SonyPlayStation2
- or RedumpSystem.SonyPlayStation3
- or RedumpSystem.SonyPlayStation4
- or RedumpSystem.SonyPlayStation5
- or RedumpSystem.SonyPlayStationPortable => true,
- _ => false,
- };
- }
-
- ///
- /// Determine if a system is considered audio-only
- ///
- /// 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 RedumpSystem? system)
- {
- return system switch
- {
- RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem
- or RedumpSystem.AudioCD
- or RedumpSystem.DVDAudio
- or RedumpSystem.HasbroiONEducationalGamingSystem
- or RedumpSystem.HasbroVideoNow
- or RedumpSystem.HasbroVideoNowColor
- or RedumpSystem.HasbroVideoNowJr
- or RedumpSystem.HasbroVideoNowXP
- or RedumpSystem.PhilipsCDi
- or RedumpSystem.PlayStationGameSharkUpdates
- or RedumpSystem.SuperAudioCD => true,
- _ => false,
- };
- }
-
- ///
- /// Determine if a system is a marker value
- ///
- /// RedumpSystem value to check
- /// True if the system is a marker value, false otherwise
- public static bool IsMarker(this RedumpSystem system)
- => ((RedumpSystem?)system).IsMarker();
-
- ///
- /// Determine if a system is a marker value
- ///
- /// RedumpSystem value to check
- /// True if the system is a marker value, false otherwise
- public static bool IsMarker(this RedumpSystem? system)
- {
- return system switch
- {
- RedumpSystem.MarkerArcadeEnd
- or RedumpSystem.MarkerComputerEnd
- or RedumpSystem.MarkerDiscBasedConsoleEnd
- or RedumpSystem.MarkerOtherEnd => true,
- _ => false,
- };
- }
-
- ///
- /// Determine if a system is considered XGD
- ///
- /// RedumpSystem value to check
- /// True if the system is XGD, false otherwise
- public static bool IsXGD(this RedumpSystem? system)
- {
- return system switch
- {
- RedumpSystem.MicrosoftXbox
- or RedumpSystem.MicrosoftXbox360
- or RedumpSystem.MicrosoftXboxOne
- or RedumpSystem.MicrosoftXboxSeriesXS => true,
- _ => false,
- };
- }
-
- ///
- /// List all systems with their short usable names
- ///
- public static List ListSystems()
- {
- var systems = (RedumpSystem[])Enum.GetValues(typeof(RedumpSystem));
- var knownSystems = Array.FindAll(systems, s => !s.IsMarker() && s.GetCategory() != SystemCategory.NONE);
- Array.Sort(knownSystems, (x, y) => (x.LongName() ?? string.Empty).CompareTo(y.LongName() ?? string.Empty));
- return [.. Array.ConvertAll(knownSystems, val => $"{val.ShortName()} - {val.LongName()}")];
- }
-
- ///
- /// Get the Redump longnames for each known system
- ///
- ///
- ///
- public static string? LongName(this RedumpSystem system)
- => AttributeHelper.GetHumanReadableAttribute(system)?.LongName;
-
- ///
- /// Get the Redump longnames for each known system
- ///
- ///
- ///
- public static string? LongName(this RedumpSystem? system)
- => AttributeHelper.GetHumanReadableAttribute(system)?.LongName;
-
- ///
- /// Get the Redump shortnames for each known system
- ///
- ///
- ///
- public static string? ShortName(this RedumpSystem system)
- => AttributeHelper.GetHumanReadableAttribute(system)?.ShortName;
-
- ///
- /// Get the Redump shortnames for each known system
- ///
- ///
- ///
- public static string? ShortName(this RedumpSystem? system)
- => AttributeHelper.GetHumanReadableAttribute(system)?.ShortName;
-
- ///
- /// Determine the category of a system
- ///
- public static SystemCategory GetCategory(this RedumpSystem system)
- => ((RedumpSystem?)system).GetCategory();
-
- ///
- /// Determine the category of a system
- ///
- public static SystemCategory GetCategory(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.Category ?? SystemCategory.NONE;
-
- ///
- /// Determine if a system is available in Redump yet
- ///
- public static bool IsAvailable(this RedumpSystem system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.Available ?? false;
-
- ///
- /// Determine if a system is available in Redump yet
- ///
- public static bool IsAvailable(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.Available ?? false;
-
- ///
- /// Determine if a system is restricted to dumpers
- ///
- public static bool IsBanned(this RedumpSystem system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.IsBanned ?? false;
-
- ///
- /// Determine if a system is restricted to dumpers
- ///
- public static bool IsBanned(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.IsBanned ?? false;
-
- ///
- /// Determine if a system has a CUE pack
- ///
- public static bool HasCues(this RedumpSystem system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasCues ?? false;
-
- ///
- /// Determine if a system has a CUE pack
- ///
- public static bool HasCues(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasCues ?? false;
-
- ///
- /// Determine if a system has a DAT
- ///
- public static bool HasDat(this RedumpSystem system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasDat ?? false;
-
- ///
- /// Determine if a system has a DAT
- ///
- public static bool HasDat(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasDat ?? false;
-
- ///
- /// Determine if a system has a decrypted keys pack
- ///
- public static bool HasDkeys(this RedumpSystem system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasDkeys ?? false;
-
- ///
- /// Determine if a system has a decrypted keys pack
- ///
- public static bool HasDkeys(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasDkeys ?? false;
-
- ///
- /// Determine if a system has a GDI pack
- ///
- public static bool HasGdi(this RedumpSystem system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasGdi ?? false;
-
- ///
- /// Determine if a system has a GDI pack
- ///
- public static bool HasGdi(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasGdi ?? false;
-
- ///
- /// Determine if a system has a keys pack
- ///
- public static bool HasKeys(this RedumpSystem system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasKeys ?? false;
-
- ///
- /// Determine if a system has a keys pack
- ///
- public static bool HasKeys(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasKeys ?? false;
-
- ///
- /// Determine if a system has an LSD pack
- ///
- public static bool HasLsd(this RedumpSystem system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasLsd ?? false;
-
- ///
- /// Determine if a system has an LSD pack
- ///
- public static bool HasLsd(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasLsd ?? false;
-
- ///
- /// Determine if a system has an SBI pack
- ///
- public static bool HasSbi(this RedumpSystem system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasSbi ?? false;
-
- ///
- /// Determine if a system has an SBI pack
- ///
- public static bool HasSbi(this RedumpSystem? system)
- => (AttributeHelper.GetHumanReadableAttribute(system) as SystemAttribute)?.HasSbi ?? false;
-
- ///
- /// Get the RedumpSystem enum value for a given string
- ///
- /// String value to convert
- /// RedumpSystem represented by the string, if possible
- public static RedumpSystem? ToRedumpSystem(this string? system)
- {
- // No value means no match
- if (system is null || system.Length == 0)
- return null;
-
- system = system.ToLowerInvariant();
- var redumpSystems = (RedumpSystem[])Enum.GetValues(typeof(RedumpSystem));
-
- // Check short names
- int index = Array.FindIndex(redumpSystems, s => system == s.ShortName()?.ToLowerInvariant());
- if (index > -1)
- return redumpSystems[index];
-
- // Check long names
- index = Array.FindIndex(redumpSystems, s => system == s.LongName()?.ToLowerInvariant()
- || system == s.LongName()?.Replace(" ", string.Empty)?.ToLowerInvariant());
- if (index > -1)
- return redumpSystems[index];
-
- return null;
- }
-
- #endregion
-
#region System Category
///
diff --git a/SabreTools.RedumpLib/RedumpOrg/Discs.cs b/SabreTools.RedumpLib/RedumpOrg/Discs.cs
index 0a0f8dd..b4aec88 100644
--- a/SabreTools.RedumpLib/RedumpOrg/Discs.cs
+++ b/SabreTools.RedumpLib/RedumpOrg/Discs.cs
@@ -65,7 +65,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
SortCategory? sort = null,
SortDirection? sortDir = null,
DumpStatus? status = null,
- RedumpSystem? system = null,
+ PhysicalSystem? system = null,
int? tracks = null,
bool comments = false,
bool contents = false,
@@ -234,7 +234,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
SortCategory? sort = null,
SortDirection? sortDir = null,
DumpStatus? status = null,
- RedumpSystem? system = null,
+ PhysicalSystem? system = null,
int? tracks = null,
bool comments = false,
bool contents = false,
diff --git a/SabreTools.RedumpLib/RedumpOrg/Formatter.cs b/SabreTools.RedumpLib/RedumpOrg/Formatter.cs
index bb08d78..077d7af 100644
--- a/SabreTools.RedumpLib/RedumpOrg/Formatter.cs
+++ b/SabreTools.RedumpLib/RedumpOrg/Formatter.cs
@@ -411,10 +411,10 @@ namespace SabreTools.RedumpLib.RedumpOrg
///
/// Format a EDCSection
///
- internal static void FormatOutputData(StringBuilder output, EDCSection? section, RedumpSystem? system)
+ internal static void FormatOutputData(StringBuilder output, EDCSection? section, PhysicalSystem? system)
{
// Check the section can be added
- if (system != RedumpSystem.SonyPlayStation)
+ if (system != PhysicalSystem.SonyPlayStation)
return;
output.AppendLine("EDC:");
@@ -456,7 +456,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
///
internal static void FormatOutputData(StringBuilder output,
CopyProtectionSection? section,
- RedumpSystem? system)
+ PhysicalSystem? system)
{
// Optional sections have to exist to format
if (section is null)
@@ -474,7 +474,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
output.AppendLine("Copy Protection:");
- if (system == RedumpSystem.SonyPlayStation)
+ if (system == PhysicalSystem.SonyPlayStation)
{
AddIfExists(output, Template.PlayStationAntiModchipField, section.AntiModchip.LongName(), 1);
AddIfExists(output, Template.PlayStationLibCryptField, section.LibCrypt.LongName(), 1);
@@ -508,7 +508,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
internal static void FormatOutputData(StringBuilder output,
SizeAndChecksumsSection? section,
PhysicalMediaType? mediaType,
- RedumpSystem? system,
+ PhysicalSystem? system,
bool enableRedumpCompatibility)
{
output.AppendLine("Size & Checksum:");
diff --git a/SabreTools.RedumpLib/RedumpOrg/Packs.cs b/SabreTools.RedumpLib/RedumpOrg/Packs.cs
index b8c25f0..0611415 100644
--- a/SabreTools.RedumpLib/RedumpOrg/Packs.cs
+++ b/SabreTools.RedumpLib/RedumpOrg/Packs.cs
@@ -1,5 +1,6 @@
using System;
using System.Threading.Tasks;
+using SabreTools.RedumpLib.Data;
using SabreTools.RedumpLib.RedumpOrg.Data;
namespace SabreTools.RedumpLib.RedumpOrg
@@ -17,7 +18,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// True to use named subfolders to store downloads, false to store directly in the output directory
public static async Task DownloadAllPacks(this Client client, string? outDir, bool useSubfolders)
{
- var systems = (RedumpSystem[])Enum.GetValues(typeof(RedumpSystem));
+ var systems = (PhysicalSystem[])Enum.GetValues(typeof(PhysicalSystem));
return await client.DownloadPacksForSystems(systems, outDir, useSubfolders);
}
@@ -25,18 +26,18 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// Download premade packs for an individual system
///
/// RedumpClient for connectivity
- /// RedumpSystem to get all possible packs for
+ /// PhysicalSystem to get all possible packs for
/// Output directory to save data to
/// True to use named subfolders to store downloads, false to store directly in the output directory
public static async Task DownloadPacksForSystem(this Client client,
- RedumpSystem? system,
+ PhysicalSystem? system,
string? outDir,
bool useSubfolders)
{
if (system is null)
return false;
- var systems = new RedumpSystem[] { system.Value };
+ var systems = new PhysicalSystem[] { system.Value };
return await client.DownloadPacksForSystems(systems, outDir, useSubfolders);
}
@@ -48,7 +49,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// Output directory to save data to
/// True to use named subfolders to store downloads, false to store directly in the output directory
public static async Task DownloadPacksForSystems(this Client client,
- RedumpSystem[] systems,
+ PhysicalSystem[] systems,
string? outDir,
bool useSubfolders)
{
diff --git a/SabreTools.RedumpLib/RedumpOrg/UrlBuilder.cs b/SabreTools.RedumpLib/RedumpOrg/UrlBuilder.cs
index b3b1fa6..411ce0b 100644
--- a/SabreTools.RedumpLib/RedumpOrg/UrlBuilder.cs
+++ b/SabreTools.RedumpLib/RedumpOrg/UrlBuilder.cs
@@ -187,7 +187,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
SortCategory? sort = null,
SortDirection? sortDir = null,
DumpStatus? status = null,
- RedumpSystem? system = null,
+ PhysicalSystem? system = null,
int? tracks = null,
bool comments = false,
bool contents = false,
@@ -389,7 +389,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// Does not check for invalid usernames
public static string BuildListUrl(string dumper,
bool? have = null,
- RedumpSystem? system = null)
+ PhysicalSystem? system = null)
{
var sb = new StringBuilder();
@@ -445,7 +445,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// Pack type
/// System for download
/// Does not check for invalid systems
- public static string BuildPackUrl(PackType packType, RedumpSystem system)
+ public static string BuildPackUrl(PackType packType, PhysicalSystem system)
{
var sb = new StringBuilder();