Files
MPF/RedumpLib/Data/Extensions.cs
2021-11-24 23:36:12 -08:00

2164 lines
83 KiB
C#

using System.Collections.Generic;
using RedumpLib.Attributes;
namespace RedumpLib.Data
{
/// <summary>
/// Information pertaining to Redump systems
/// </summary>
public static class Extensions
{
#region Cross-Enumeration
/// <summary>
/// Get a list of valid MediaTypes for a given RedumpSystem
/// </summary>
/// <param name="system">RedumpSystem value to check</param>
/// <returns>MediaTypes, if possible</returns>
public static List<MediaType?> MediaTypes(this RedumpSystem? system)
{
var types = new List<MediaType?>();
switch (system)
{
#region Consoles
// https://en.wikipedia.org/wiki/Atari_Jaguar_CD
case RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Playdia
case RedumpSystem.BandaiPlaydiaQuickInteractiveSystem:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Apple_Bandai_Pippin
case RedumpSystem.BandaiPippin:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Amiga_CD32
case RedumpSystem.CommodoreAmigaCD32:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Commodore_CDTV
case RedumpSystem.CommodoreAmigaCDTV:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/EVO_Smart_Console
case RedumpSystem.EnvizionsEVOSmartConsole:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/FM_Towns_Marty
case RedumpSystem.FujitsuFMTownsMarty:
types.Add(MediaType.CDROM);
types.Add(MediaType.FloppyDisk);
break;
// https://en.wikipedia.org/wiki/VideoNow
case RedumpSystem.HasbroVideoNow:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/VideoNow
case RedumpSystem.HasbroVideoNowColor:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/VideoNow
case RedumpSystem.HasbroVideoNowJr:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/VideoNow
case RedumpSystem.HasbroVideoNowXP:
types.Add(MediaType.CDROM);
break;
case RedumpSystem.MattelFisherPriceiXL:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/HyperScan
case RedumpSystem.MattelHyperScan:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Xbox_(console)
case RedumpSystem.MicrosoftXbox:
types.Add(MediaType.DVD);
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Xbox_360
case RedumpSystem.MicrosoftXbox360:
types.Add(MediaType.DVD);
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Xbox_One
case RedumpSystem.MicrosoftXboxOne:
types.Add(MediaType.BluRay);
break;
// https://en.wikipedia.org/wiki/Xbox_Series_X_and_Series_S
case RedumpSystem.MicrosoftXboxSeriesXS:
types.Add(MediaType.BluRay);
break;
// https://en.wikipedia.org/wiki/TurboGrafx-16
case RedumpSystem.NECPCEngineCDTurboGrafxCD:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/PC-FX
case RedumpSystem.NECPCFXPCFXGA:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/GameCube
case RedumpSystem.NintendoGameCube:
types.Add(MediaType.DVD); // Only added here to help users; not strictly correct
types.Add(MediaType.NintendoGameCubeGameDisc);
break;
// https://en.wikipedia.org/wiki/Super_NES_CD-ROM
case RedumpSystem.NintendoSonySuperNESCDROMSystem:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Wii
case RedumpSystem.NintendoWii:
types.Add(MediaType.DVD); // Only added here to help users; not strictly correct
types.Add(MediaType.NintendoWiiOpticalDisc);
break;
// https://en.wikipedia.org/wiki/Wii_U
case RedumpSystem.NintendoWiiU:
types.Add(MediaType.NintendoWiiUOpticalDisc);
break;
// https://en.wikipedia.org/wiki/3DO_Interactive_Multiplayer
case RedumpSystem.Panasonic3DOInteractiveMultiplayer:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Philips_CD-i
case RedumpSystem.PhilipsCDi:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/LaserActive
case RedumpSystem.PioneerLaserActive:
types.Add(MediaType.CDROM);
types.Add(MediaType.LaserDisc);
break;
// https://en.wikipedia.org/wiki/Sega_CD
case RedumpSystem.SegaMegaCDSegaCD:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Dreamcast
case RedumpSystem.SegaDreamcast:
types.Add(MediaType.CDROM); // Low density partition, MIL-CD
types.Add(MediaType.GDROM); // High density partition
break;
// https://en.wikipedia.org/wiki/Sega_Saturn
case RedumpSystem.SegaSaturn:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Neo_Geo_CD
case RedumpSystem.SNKNeoGeoCD:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/PlayStation_(console)
case RedumpSystem.SonyPlayStation:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/PlayStation_2
case RedumpSystem.SonyPlayStation2:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/PlayStation_3
case RedumpSystem.SonyPlayStation3:
types.Add(MediaType.BluRay);
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/PlayStation_4
case RedumpSystem.SonyPlayStation4:
types.Add(MediaType.BluRay);
break;
// https://en.wikipedia.org/wiki/PlayStation_5
case RedumpSystem.SonyPlayStation5:
types.Add(MediaType.BluRay);
break;
// https://en.wikipedia.org/wiki/PlayStation_Portable
case RedumpSystem.SonyPlayStationPortable:
types.Add(MediaType.UMD);
types.Add(MediaType.CDROM); // Development discs only
types.Add(MediaType.DVD); // Development discs only
break;
// https://en.wikipedia.org/wiki/Tandy_Video_Information_System
case RedumpSystem.MemorexVisualInformationSystem:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Nuon_(DVD_technology)
case RedumpSystem.VMLabsNUON:
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/V.Flash
case RedumpSystem.VTechVFlashVSmilePro:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Game_Wave_Family_Entertainment_System
case RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem:
types.Add(MediaType.DVD);
break;
#endregion
#region Computers
// https://en.wikipedia.org/wiki/Acorn_Archimedes
case RedumpSystem.AcornArchimedes:
types.Add(MediaType.CDROM);
types.Add(MediaType.FloppyDisk);
break;
// https://en.wikipedia.org/wiki/Macintosh
case RedumpSystem.AppleMacintosh:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
types.Add(MediaType.FloppyDisk);
types.Add(MediaType.HardDisk);
break;
// https://en.wikipedia.org/wiki/Amiga
case RedumpSystem.CommodoreAmigaCD:
types.Add(MediaType.CDROM);
types.Add(MediaType.FloppyDisk);
break;
// https://en.wikipedia.org/wiki/FM_Towns
case RedumpSystem.FujitsuFMTownsseries:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/IBM_PC_compatible
case RedumpSystem.IBMPCcompatible:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
types.Add(MediaType.BluRay);
types.Add(MediaType.FloppyDisk);
types.Add(MediaType.HardDisk);
types.Add(MediaType.DataCartridge);
break;
// https://en.wikipedia.org/wiki/PC-8800_series
case RedumpSystem.NECPC88series:
types.Add(MediaType.CDROM);
types.Add(MediaType.FloppyDisk);
break;
// https://en.wikipedia.org/wiki/PC-9800_series
case RedumpSystem.NECPC98series:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
types.Add(MediaType.FloppyDisk);
break;
// https://en.wikipedia.org/wiki/X68000
case RedumpSystem.SharpX68000:
types.Add(MediaType.CDROM);
types.Add(MediaType.FloppyDisk);
break;
#endregion
#region Arcade
// https://www.bigbookofamigahardware.com/bboah/product.aspx?id=36
case RedumpSystem.AmigaCUBOCD32:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Orbatak
case RedumpSystem.AmericanLaserGames3DO:
types.Add(MediaType.CDROM);
break;
// http://system16.com/hardware.php?id=779
case RedumpSystem.Atari3DO:
types.Add(MediaType.CDROM);
break;
// http://newlifegames.net/nlg/index.php?topic=22003.0
// http://newlifegames.net/nlg/index.php?topic=5486.msg119440
case RedumpSystem.Atronic:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// https://www.arcade-museum.com/members/member_detail.php?member_id=406530
case RedumpSystem.AUSCOMSystem1:
types.Add(MediaType.CDROM);
break;
// http://newlifegames.net/nlg/index.php?topic=285.0
case RedumpSystem.BallyGameMagic:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/CP_System_III
case RedumpSystem.CapcomCPSystemIII:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case RedumpSystem.funworldPhotoPlay:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case RedumpSystem.GlobalVRVarious:
types.Add(MediaType.CDROM);
break;
// https://service.globalvr.com/troubleshooting/vortek.html
case RedumpSystem.GlobalVRVortek:
types.Add(MediaType.CDROM);
break;
// https://service.globalvr.com/downloads/v3/040-1001-01c-V3-System-Manual.pdf
case RedumpSystem.GlobalVRVortekV3:
types.Add(MediaType.CDROM);
break;
// https://www.icegame.com/games
case RedumpSystem.ICEPCHardware:
types.Add(MediaType.DVD);
break;
// https://github.com/mamedev/mame/blob/master/src/mame/drivers/iteagle.cpp
case RedumpSystem.IncredibleTechnologiesEagle:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case RedumpSystem.IncredibleTechnologiesVarious:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/E-Amusement
case RedumpSystem.KonamieAmusement:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=828
case RedumpSystem.KonamiFireBeat:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=577
case RedumpSystem.KonamiSystemGV:
types.Add(MediaType.CDROM);
break;
// http://system16.com/hardware.php?id=575
case RedumpSystem.KonamiM2:
types.Add(MediaType.CDROM);
break;
// http://system16.com/hardware.php?id=586
// http://system16.com/hardware.php?id=977
case RedumpSystem.KonamiPython:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=976
// http://system16.com/hardware.php?id=831
case RedumpSystem.KonamiPython2:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=582
// http://system16.com/hardware.php?id=822
// http://system16.com/hardware.php?id=823
case RedumpSystem.KonamiSystem573:
types.Add(MediaType.CDROM);
break;
// http://system16.com/hardware.php?id=827
case RedumpSystem.KonamiTwinkle:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case RedumpSystem.KonamiVarious:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// http://www.meritgames.com/Support_Center/manuals/PM0591-01.pdf
case RedumpSystem.MeritIndustriesBoardwalk:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// http://www.meritgames.com/Support_Center/Force%20Elite/PM0380-09.pdf
// http://www.meritgames.com/Support_Center/Force%20Upright/PM0382-07%20FORCE%20Upright%20manual.pdf
// http://www.meritgames.com/Support_Center/Force%20Upright/PM0383-07%20FORCE%20Upright%20manual.pdf
case RedumpSystem.MeritIndustriesMegaTouchForce:
types.Add(MediaType.CDROM);
break;
// http://www.meritgames.com/Service%20Center/Ion%20Troubleshooting.pdf
case RedumpSystem.MeritIndustriesMegaTouchION:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// http://www.meritgames.com/Support_Center/EZ%20Maxx/Manuals/MAXX%20Elite%20with%20coin.pdf
// http://www.meritgames.com/Support_Center/EZ%20Maxx/Manuals/MAXX%20Elite.pdf
// http://www.meritgames.com/Support_Center/manuals/90003010%20Maxx%20TSM_Rev%20C.pdf
case RedumpSystem.MeritIndustriesMegaTouchMaxx:
types.Add(MediaType.CDROM);
break;
// http://www.meritgames.com/Support_Center/manuals/pm0076_OA_Megatouch%20XL%20Trouble%20Shooting%20Manual.pdf
// http://www.meritgames.com/Support_Center/MEGA%20XL/manuals/Megatouch_XL_pm0109-0D.pdf
// http://www.meritgames.com/Support_Center/MEGA%20XL/manuals/Megatouch_XL_Super_5000_manual.pdf
case RedumpSystem.MeritIndustriesMegaTouchXL:
types.Add(MediaType.CDROM);
break;
// http://system16.com/hardware.php?id=543
// http://system16.com/hardware.php?id=546
// http://system16.com/hardware.php?id=872
case RedumpSystem.NamcoSystem246256:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=545
case RedumpSystem.NamcoSegaNintendoTriforce:
types.Add(MediaType.CDROM); // Low density partition
types.Add(MediaType.GDROM); // High density partition
break;
// http://system16.com/hardware.php?id=535
case RedumpSystem.NamcoSystem12:
types.Add(MediaType.CDROM);
break;
// https://www.arcade-history.com/?n=the-yakyuuken-part-1&page=detail&id=33049
case RedumpSystem.NewJatreCDi:
types.Add(MediaType.CDROM);
break;
// http://blog.system11.org/?p=2499
case RedumpSystem.NichibutsuHighRateSystem:
types.Add(MediaType.DVD);
break;
// http://blog.system11.org/?p=2514
case RedumpSystem.NichibutsuSuperCD:
types.Add(MediaType.CDROM);
break;
// http://collectedit.com/collectors/shou-time-213/arcade-pcbs-281/x-rate-dvd-series-17-newlywed-life-japan-by-nichibutsu-32245
case RedumpSystem.NichibutsuXRateSystem:
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/Panasonic_M2
case RedumpSystem.PanasonicM2:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// https://github.com/mamedev/mame/blob/master/src/mame/drivers/photoply.cpp
case RedumpSystem.PhotoPlayVarious:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case RedumpSystem.RawThrillsVarious:
types.Add(MediaType.DVD);
break;
case RedumpSystem.SegaALLS:
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=729
case RedumpSystem.SegaChihiro:
types.Add(MediaType.CDROM); // Low density partition
types.Add(MediaType.GDROM); // High density partition
break;
// http://system16.com/hardware.php?id=907
case RedumpSystem.SegaEuropaR:
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=985
// http://system16.com/hardware.php?id=731
// http://system16.com/hardware.php?id=984
// http://system16.com/hardware.php?id=986
case RedumpSystem.SegaLindbergh:
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=721
// http://system16.com/hardware.php?id=723
// http://system16.com/hardware.php?id=906
// http://system16.com/hardware.php?id=722
case RedumpSystem.SegaNaomi:
types.Add(MediaType.CDROM); // Low density partition
types.Add(MediaType.GDROM); // High density partition
break;
// http://system16.com/hardware.php?id=725
// http://system16.com/hardware.php?id=726
// http://system16.com/hardware.php?id=727
case RedumpSystem.SegaNaomi2:
types.Add(MediaType.CDROM); // Low density partition
types.Add(MediaType.GDROM); // High density partition
break;
// https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Nu
case RedumpSystem.SegaNu:
types.Add(MediaType.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(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=982
// https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Ring_series
case RedumpSystem.SegaRingEdge2:
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=911
// https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Ring_series
case RedumpSystem.SegaRingWide:
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=711
case RedumpSystem.SegaTitanVideo:
types.Add(MediaType.CDROM);
break;
// http://system16.com/hardware.php?id=709
// http://system16.com/hardware.php?id=710
case RedumpSystem.SegaSystem32:
types.Add(MediaType.CDROM);
break;
// https://github.com/mamedev/mame/blob/master/src/mame/drivers/seibucats.cpp
case RedumpSystem.SeibuCATSSystem:
types.Add(MediaType.DVD);
break;
// https://www.tab.at/en/support/support/downloads
case RedumpSystem.TABAustriaQuizard:
types.Add(MediaType.CDROM);
break;
// https://primetimeamusements.com/product/tsumo-multi-game-motion-system/
// https://www.highwaygames.com/arcade-machines/tsumo-tsunami-motion-8117/
case RedumpSystem.TsunamiTsuMoMultiGameMotionSystem:
types.Add(MediaType.CDROM);
break;
#endregion
#region Others
// https://en.wikipedia.org/wiki/Audio_CD
case RedumpSystem.AudioCD:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Blu-ray#Player_profiles
case RedumpSystem.BDVideo:
types.Add(MediaType.BluRay);
break;
// https://en.wikipedia.org/wiki/DVD-Audio
case RedumpSystem.DVDAudio:
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/DVD-Video
case RedumpSystem.DVDVideo:
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/Blue_Book_(CD_standard)
case RedumpSystem.EnhancedCD:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/HD_DVD
case RedumpSystem.HDDVDVideo:
types.Add(MediaType.HDDVD);
break;
// UNKNOWN
case RedumpSystem.NavisoftNaviken21:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case RedumpSystem.PalmOS:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Photo_CD
case RedumpSystem.PhotoCD:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case RedumpSystem.PlayStationGameSharkUpdates:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case RedumpSystem.PocketPC:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Doors_and_Windows_(EP)
case RedumpSystem.RainbowDisc:
types.Add(MediaType.CDROM);
break;
// https://segaretro.org/Prologue_21
case RedumpSystem.SegaPrologue21MultimediaKaraokeSystem:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Super_Audio_CD
case RedumpSystem.SuperAudioCD:
types.Add(MediaType.CDROM);
break;
// https://www.cnet.com/products/tao-music-iktv-karaoke-station-karaoke-system-series/
case RedumpSystem.TaoiKTV:
types.Add(MediaType.CDROM);
break;
// http://ultimateconsoledatabase.com/golden/kiss_site.htm
case RedumpSystem.TomyKissSite:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Video_CD
case RedumpSystem.VideoCD:
types.Add(MediaType.CDROM);
break;
#endregion
default:
types.Add(MediaType.NONE);
break;
}
return types;
}
/// <summary>
/// Convert master list of all media types to currently known Redump disc types
/// </summary>
/// <param name="mediaType">MediaType value to check</param>
/// <returns>DiscType if possible, null on error</returns>
public static DiscType? ToDiscType(this MediaType? mediaType)
{
switch (mediaType)
{
case MediaType.BluRay:
return DiscType.BD50;
case MediaType.CDROM:
return DiscType.CD;
case MediaType.DVD:
return DiscType.DVD9;
case MediaType.GDROM:
return DiscType.GDROM;
case MediaType.HDDVD:
return DiscType.HDDVDSL;
// case MediaType.MILCD: // TODO: Support this?
// return DiscType.MILCD;
case MediaType.NintendoGameCubeGameDisc:
return DiscType.NintendoGameCubeGameDisc;
case MediaType.NintendoWiiOpticalDisc:
return DiscType.NintendoWiiOpticalDiscDL;
case MediaType.NintendoWiiUOpticalDisc:
return DiscType.NintendoWiiUOpticalDiscSL;
case MediaType.UMD:
return DiscType.UMDDL;
default:
return null;
}
}
/// <summary>
/// Convert currently known Redump disc types to master list of all media types
/// </summary>
/// <param name="discType">DiscType value to check</param>
/// <returns>MediaType if possible, null on error</returns>
public static MediaType? ToMediaType(this DiscType? discType)
{
switch (discType)
{
case DiscType.BD25:
case DiscType.BD50:
return MediaType.BluRay;
case DiscType.CD:
return MediaType.CDROM;
case DiscType.DVD5:
case DiscType.DVD9:
return MediaType.DVD;
case DiscType.GDROM:
return MediaType.GDROM;
case DiscType.HDDVDSL:
return MediaType.HDDVD;
// case DiscType.MILCD: // TODO: Support this?
// return MediaType.MILCD;
case DiscType.NintendoGameCubeGameDisc:
return MediaType.NintendoGameCubeGameDisc;
case DiscType.NintendoWiiOpticalDiscSL:
case DiscType.NintendoWiiOpticalDiscDL:
return MediaType.NintendoWiiOpticalDisc;
case DiscType.NintendoWiiUOpticalDiscSL:
return MediaType.NintendoWiiUOpticalDisc;
case DiscType.UMDSL:
case DiscType.UMDDL:
return MediaType.UMD;
default:
return null;
}
}
#endregion
#region Disc Category
/// <summary>
/// Get the Redump longnames for each known category
/// </summary>
/// <param name="category"></param>
/// <returns></returns>
public static string LongName(this DiscCategory? category) => AttributeHelper<DiscCategory?>.GetAttribute(category)?.LongName;
/// <summary>
/// Get the Category enum value for a given string
/// </summary>
/// <param name="category">String value to convert</param>
/// <returns>Category represented by the string, if possible</returns>
public static DiscCategory? ToDiscCategory(string category)
{
switch (category?.ToLowerInvariant())
{
case "games":
return DiscCategory.Games;
case "demos":
return DiscCategory.Demos;
case "video":
return DiscCategory.Video;
case "audio":
return DiscCategory.Audio;
case "multimedia":
return DiscCategory.Multimedia;
case "applications":
return DiscCategory.Applications;
case "coverdiscs":
return DiscCategory.Coverdiscs;
case "educational":
return DiscCategory.Educational;
case "bonusdiscs":
case "bonus discs":
return DiscCategory.BonusDiscs;
case "preproduction":
return DiscCategory.Preproduction;
case "addons":
case "add-ons":
return DiscCategory.AddOns;
default:
return DiscCategory.Games;
}
}
#endregion
#region Disc Type
/// <summary>
/// Get the Redump longnames for each known disc type
/// </summary>
/// <param name="discType"></param>
/// <returns></returns>
public static string LongName(this DiscType? discType) => AttributeHelper<DiscType?>.GetAttribute(discType)?.LongName;
/// <summary>
/// Get the DiscType enum value for a given string
/// </summary>
/// <param name="discType">String value to convert</param>
/// <returns>DiscType represented by the string, if possible</returns>
public static DiscType? ToDiscType(string discType)
{
switch (discType?.ToLowerInvariant())
{
case "bd25":
case "bd-25":
return DiscType.BD25;
case "bd50":
case "bd-50":
return DiscType.BD50;
case "cd":
case "cdrom":
case "cd-rom":
return DiscType.CD;
case "dvd5":
case "dvd-5":
return DiscType.DVD5;
case "dvd9":
case "dvd-9":
return DiscType.DVD9;
case "gd":
case "gdrom":
case "gd-rom":
return DiscType.GDROM;
case "hddvd":
case "hddvdsl":
case "hd-dvd sl":
return DiscType.HDDVDSL;
case "milcd":
case "mil-cd":
return DiscType.MILCD;
case "nintendogamecubegamedisc":
case "nintendo game cube game disc":
return DiscType.NintendoGameCubeGameDisc;
case "nintendowiiopticaldiscsl":
case "nintendo wii optical disc sl":
return DiscType.NintendoWiiOpticalDiscSL;
case "nintendowiiopticaldiscdl":
case "nintendo wii optical disc dl":
return DiscType.NintendoWiiOpticalDiscDL;
case "nintendowiiuopticaldiscsl":
case "nintendo wii u optical disc sl":
return DiscType.NintendoWiiUOpticalDiscSL;
case "umd":
case "umdsl":
case "umd sl":
return DiscType.UMDSL;
case "umddl":
case "umd dl":
return DiscType.UMDDL;
default:
return null;
}
}
#endregion
#region Language
/// <summary>
/// Get the Redump longnames for each known language
/// </summary>
/// <param name="language"></param>
/// <returns></returns>
public static string LongName(this Language? language) => AttributeHelper<Language?>.GetAttribute(language)?.LongName;
/// <summary>
/// Get the Redump shortnames for each known language
/// </summary>
/// <param name="language"></param>
/// <returns></returns>
public static string ShortName(this Language? language) => AttributeHelper<Language?>.GetAttribute(language)?.ShortName;
/// <summary>
/// Get the Language enum value for a given string
/// </summary>
/// <param name="lang">String value to convert</param>
/// <returns>Language represented by the string, if possible</returns>
public static Language? ToLanguage(string lang)
{
switch (lang)
{
case "afr":
return Language.Afrikaans;
case "sqi":
return Language.Albanian;
case "ara":
return Language.Arabic;
case "baq":
return Language.Basque;
case "bul":
return Language.Bulgarian;
case "cat":
return Language.Catalan;
case "chi":
return Language.Chinese;
case "hrv":
return Language.Croatian;
case "cze":
return Language.Czech;
case "dan":
return Language.Danish;
case "dut":
return Language.Dutch;
case "eng":
return Language.English;
case "est":
return Language.Estonian;
case "fin":
return Language.Finnish;
case "fre":
return Language.French;
case "gla":
return Language.Gaelic;
case "ger":
return Language.German;
case "gre":
return Language.Greek;
case "heb":
return Language.Hebrew;
case "hin":
return Language.Hindi;
case "hun":
return Language.Hungarian;
case "ind":
return Language.Indonesian;
case "isl":
return Language.Icelandic;
case "ita":
return Language.Italian;
case "jap":
return Language.Japanese;
case "kor":
return Language.Korean;
case "lat":
return Language.Latin;
case "lav":
return Language.Latvian;
case "lit":
return Language.Lithuanian;
case "mkd":
return Language.Macedonian;
case "nor":
return Language.Norwegian;
case "pol":
return Language.Polish;
case "por":
return Language.Portuguese;
case "pan":
return Language.Punjabi;
case "ron":
return Language.Romanian;
case "rus":
return Language.Russian;
case "srp":
return Language.Serbian;
case "slk":
return Language.Slovak;
case "slv":
return Language.Slovenian;
case "spa":
return Language.Spanish;
case "swe":
return Language.Swedish;
case "tam":
return Language.Tamil;
case "tha":
return Language.Thai;
case "tur":
return Language.Turkish;
case "ukr":
return Language.Ukrainian;
default:
return null;
}
}
#endregion
#region Language Selection
/// <summary>
/// Get the string representation of the LanguageSelection enum values
/// </summary>
/// <param name="langSelect">LanguageSelection value to convert</param>
/// <returns>String representing the value, if possible</returns>
public static string LongName(this LanguageSelection? langSelect) => AttributeHelper<LanguageSelection?>.GetAttribute(langSelect)?.LongName;
#endregion
#region Media Type
/// <summary>
/// Get the Redump longnames for each known media type
/// </summary>
/// <param name="mediaType"></param>
/// <returns></returns>
public static string LongName(this MediaType? mediaType) => AttributeHelper<MediaType?>.GetAttribute(mediaType)?.LongName;
/// <summary>
/// Get the Redump shortnames for each known media type
/// </summary>
/// <param name="mediaType"></param>
/// <returns></returns>
public static string ShortName(this MediaType? mediaType) => AttributeHelper<MediaType?>.GetAttribute(mediaType)?.ShortName;
#endregion
#region Region
/// <summary>
/// Get the Redump longnames for each known region
/// </summary>
/// <param name="region"></param>
/// <returns></returns>
public static string LongName(this Region? region) => AttributeHelper<Region?>.GetAttribute(region)?.LongName;
/// <summary>
/// Get the Redump shortnames for each known region
/// </summary>
/// <param name="region"></param>
/// <returns></returns>
public static string ShortName(this Region? region) => AttributeHelper<Region?>.GetAttribute(region)?.ShortName;
/// <summary>
/// Get the Region enum value for a given string
/// </summary>
/// <param name="region">String value to convert</param>
/// <returns>Region represented by the string, if possible</returns>
public static Region? ToRegion(string region)
{
switch (region)
{
case "Ar":
return Region.Argentina;
case "A":
return Region.Asia;
case "A,E":
return Region.AsiaEurope;
case "A,U":
return Region.AsiaUSA;
case "Au":
return Region.Australia;
case "Au,G":
return Region.AustraliaGermany;
case "Au,Nz":
return Region.AustraliaNewZealand;
case "At":
return Region.Austria;
case "At,Ch":
return Region.AustriaSwitzerland;
case "Be":
return Region.Belgium;
case "Be,N":
return Region.BelgiumNetherlands;
case "B":
return Region.Brazil;
case "Bg":
return Region.Bulgaria;
case "Ca":
return Region.Canada;
case "C":
return Region.China;
case "Hr":
return Region.Croatia;
case "Cz":
return Region.Czech;
case "Dk":
return Region.Denmark;
case "Ee":
return Region.Estonia;
case "E":
return Region.Europe;
case "E,A":
return Region.EuropeAsia;
case "E,Au":
return Region.EuropeAustralia;
case "E,Ca":
return Region.EuropeCanada;
case "E,G":
return Region.EuropeGermany;
case "Ex":
return Region.Export;
case "Fi":
return Region.Finland;
case "F":
return Region.France;
case "F,S":
return Region.FranceSpain;
case "G":
return Region.Germany;
case "GC":
return Region.GreaterChina;
case "Gr":
return Region.Greece;
case "H":
return Region.Hungary;
case "Is":
return Region.Iceland;
case "In":
return Region.India;
case "Ie":
return Region.Ireland;
case "Il":
return Region.Israel;
case "I":
return Region.Italy;
case "J":
return Region.Japan;
case "J,A":
return Region.JapanAsia;
case "J,E":
return Region.JapanEurope;
case "J,K":
return Region.JapanKorea;
case "J,U":
return Region.JapanUSA;
case "K":
return Region.Korea;
case "LAm":
return Region.LatinAmerica;
case "Lt":
return Region.Lithuania;
case "N":
return Region.Netherlands;
case "Nz":
return Region.NewZealand;
case "No":
return Region.Norway;
case "P":
return Region.Poland;
case "Pt":
return Region.Portugal;
case "Ro":
return Region.Romania;
case "R":
return Region.Russia;
case "Sca":
return Region.Scandinavia;
case "Rs":
return Region.Serbia;
case "Sg":
return Region.Singapore;
case "Sk":
return Region.Slovakia;
case "Za":
return Region.SouthAfrica;
case "S":
return Region.Spain;
case "S,Pt":
return Region.SpainPortugal;
case "Sw":
return Region.Sweden;
case "Ch":
return Region.Switzerland;
case "Tw":
return Region.Taiwan;
case "Th":
return Region.Thailand;
case "Tr":
return Region.Turkey;
case "Ae":
return Region.UnitedArabEmirates;
case "Uk":
return Region.UK;
case "Uk,Au":
return Region.UKAustralia;
case "Ue":
return Region.Ukraine;
case "U":
return Region.USA;
case "U,A":
return Region.USAAsia;
case "U,Au":
return Region.USAAustralia;
case "U,B":
return Region.USABrazil;
case "U,Ca":
return Region.USACanada;
case "U,E":
return Region.USAEurope;
case "U,G":
return Region.USAGermany;
case "U,J":
return Region.USAJapan;
case "U,K":
return Region.USAKorea;
case "W":
return Region.World;
default:
return null;
}
}
#endregion
#region System
/// <summary>
/// Get the Redump longnames for each known system
/// </summary>
/// <param name="system"></param>
/// <returns></returns>
public static string LongName(this RedumpSystem? system) => AttributeHelper<RedumpSystem?>.GetAttribute(system)?.LongName;
/// <summary>
/// Get the Redump shortnames for each known system
/// </summary>
/// <param name="system"></param>
/// <returns></returns>
public static string ShortName(this RedumpSystem? system) => AttributeHelper<RedumpSystem?>.GetAttribute(system)?.ShortName;
/// <summary>
/// Determine the category of a system
/// </summary>
public static SystemCategory GetCategory(this RedumpSystem? system) => ((SystemAttribute)AttributeHelper<RedumpSystem?>.GetAttribute(system))?.Category ?? SystemCategory.NONE;
/// <summary>
/// Determine if a system is available in Redump yet
/// </summary>
public static bool IsAvailable(this RedumpSystem? system) => ((SystemAttribute)AttributeHelper<RedumpSystem?>.GetAttribute(system))?.Available ?? false;
/// <summary>
/// Determine if a system is restricted to dumpers
/// </summary>
public static bool IsBanned(this RedumpSystem? system) => ((SystemAttribute)AttributeHelper<RedumpSystem?>.GetAttribute(system))?.IsBanned ?? false;
/// <summary>
/// Determine if a system has a CUE pack
/// </summary>
public static bool HasCues(this RedumpSystem? system) => ((SystemAttribute)AttributeHelper<RedumpSystem?>.GetAttribute(system))?.HasCues ?? false;
/// <summary>
/// Determine if a system has a DAT
/// </summary>
public static bool HasDat(this RedumpSystem? system) => ((SystemAttribute)AttributeHelper<RedumpSystem?>.GetAttribute(system))?.HasDat ?? false;
/// <summary>
/// Determine if a system has a decrypted keys pack
/// </summary>
public static bool HasDkeys(this RedumpSystem? system) => ((SystemAttribute)AttributeHelper<RedumpSystem?>.GetAttribute(system))?.HasDkeys ?? false;
/// <summary>
/// Determine if a system has a GDI pack
/// </summary>
public static bool HasGdi(this RedumpSystem? system) => ((SystemAttribute)AttributeHelper<RedumpSystem?>.GetAttribute(system))?.HasGdi ?? false;
/// <summary>
/// Determine if a system has a keys pack
/// </summary>
public static bool HasKeys(this RedumpSystem? system) => ((SystemAttribute)AttributeHelper<RedumpSystem?>.GetAttribute(system))?.HasKeys ?? false;
/// <summary>
/// Determine if a system has an LSD pack
/// </summary>
public static bool HasLsd(this RedumpSystem? system) => ((SystemAttribute)AttributeHelper<RedumpSystem?>.GetAttribute(system))?.HasLsd ?? false;
/// <summary>
/// Determine if a system has an SBI pack
/// </summary>
public static bool HasSbi(this RedumpSystem? system) => ((SystemAttribute)AttributeHelper<RedumpSystem?>.GetAttribute(system))?.HasSbi ?? false;
/// <summary>
/// Get the RedumpSystem enum value for a given string
/// </summary>
/// <param name="system">String value to convert</param>
/// <returns>RedumpSystem represented by the string, if possible</returns>
public static RedumpSystem? ToRedumpSystem(string system)
{
switch (system?.ToLowerInvariant())
{
#region BIOS Sets
case "xboxbios":
case "xbox bios":
case "microsoftxboxbios":
case "microsoftxbox bios":
case "microsoft xbox bios":
return RedumpSystem.MicrosoftXboxBIOS;
case "gcbios":
case "gc bios":
case "gamecubebios":
case "ngcbios":
case "ngc bios":
case "nintendogamecubebios":
case "nintendo gamecube bios":
return RedumpSystem.NintendoGameCubeBIOS;
case "ps1bios":
case "ps1 bios":
case "psxbios":
case "psx bios":
case "playstationbios":
case "playstation bios":
case "sonyps1bios":
case "sonyps1 bios":
case "sony ps1 bios":
case "sonypsxbios":
case "sonypsx bios":
case "sony psx bios":
case "sonyplaystationbios":
case "sonyplaystation bios":
case "sony playstation bios":
return RedumpSystem.SonyPlayStationBIOS;
case "ps2bios":
case "ps2 bios":
case "playstation2bios":
case "playstation2 bios":
case "playstation 2 bios":
case "sonyps2bios":
case "sonyps2 bios":
case "sony ps2 bios":
case "sonyplaystation2bios":
case "sonyplaystation2 bios":
case "sony playstation 2 bios":
return RedumpSystem.SonyPlayStation2BIOS;
#endregion
#region Consoles
case "jaguar":
case "jagcd":
case "jaguarcd":
case "jaguar cd":
case "atarijaguar":
case "atarijagcd":
case "atarijaguarcd":
case "atari jaguar cd":
return RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem;
case "playdia":
case "playdiaqis":
case "playdiaquickinteractivesystem":
case "bandaiplaydia":
case "bandaiplaydiaquickinteractivesystem":
case "bandai playdia quick interactive system":
return RedumpSystem.BandaiPlaydiaQuickInteractiveSystem;
case "pippin":
case "bandaipippin":
case "bandai pippin":
case "applepippin":
case "apple pippin":
case "bandaiapplepippin":
case "bandai apple pippin":
case "bandai / apple pippin":
return RedumpSystem.BandaiPippin;
case "cd32":
case "amigacd32":
case "amiga cd32":
case "commodoreamigacd32":
case "commodore amiga cd32":
return RedumpSystem.CommodoreAmigaCD32;
case "cdtv":
case "amigacdtv":
case "amiga cdtv":
case "commodoreamigacdtv":
case "commodore amiga cdtv":
return RedumpSystem.CommodoreAmigaCDTV;
case "evosc":
case "evo sc":
case "evosmartconsole":
case "evo smart console":
case "envizionsevosc":
case "envizion evo sc":
case "envizionevosmartconsole":
case "envizion evo smart console":
return RedumpSystem.EnvizionsEVOSmartConsole;
case "fmtm":
case "fmtownsmarty":
case "fm towns marty":
case "fujitsufmtownsmarty":
case "fujitsu fm towns marty":
return RedumpSystem.FujitsuFMTownsMarty;
case "videonow":
case "hasbrovideonow":
case "hasbro videonow":
return RedumpSystem.HasbroVideoNow;
case "videonowcolor":
case "videonow color":
case "hasbrovideonowcolor":
case "hasbro videonow color":
return RedumpSystem.HasbroVideoNowColor;
case "videonowjr":
case "videonow jr":
case "hasbrovideonowjr":
case "hasbro videonow jr":
return RedumpSystem.HasbroVideoNowJr;
case "videonowxp":
case "videonow xp":
case "hasbrovideonowxp":
case "hasbro videonow xp":
return RedumpSystem.HasbroVideoNowXP;
case "ixl":
case "mattelixl":
case "mattel ixl":
case "fisherpriceixl":
case "fisher price ixl":
case "fisher-price ixl":
case "fisherprice ixl":
case "mattelfisherpriceixl":
case "mattel fisher price ixl":
case "mattelfisherprice ixl":
case "mattel fisherprice ixl":
case "mattel fisher-price ixl":
return RedumpSystem.MattelFisherPriceiXL;
case "hyperscan":
case "mattelhyperscan":
case "mattel hyperscan":
return RedumpSystem.MattelHyperScan;
case "xbox":
case "microsoftxbox":
case "microsoft xbox":
return RedumpSystem.MicrosoftXbox;
case "x360":
case "xbox360":
case "microsoftx360":
case "microsoftxbox360":
case "microsoft x360":
case "microsoft xbox 360":
return RedumpSystem.MicrosoftXbox360;
case "xb1":
case "xbone":
case "xboxone":
case "microsoftxbone":
case "microsoftxboxone":
case "microsoft xbone":
case "microsoft xbox one":
return RedumpSystem.MicrosoftXboxOne;
case "xbs":
case "xbseries":
case "xbseriess":
case "xbseriesx":
case "xbseriessx":
case "xboxseries":
case "xboxseriess":
case "xboxseriesx":
case "xboxseriesxs":
case "microsoftxboxseries":
case "microsoftxboxseriess":
case "microsoftxboxseriesx":
case "microsoftxboxseriesxs":
case "microsoft xbox series":
case "microsoft xbox series s":
case "microsoft xbox series x":
case "microsoft xbox series x and s":
return RedumpSystem.MicrosoftXboxSeriesXS;
case "pcecd":
case "pce-cd":
case "tgcd":
case "tg-cd":
case "necpcecd":
case "nectgcd":
case "nec pc-engine cd":
case "nec turbografx cd":
case "nec pc-engine / turbografx cd":
return RedumpSystem.NECPCEngineCDTurboGrafxCD;
case "pcfx":
case "pc-fx":
case "pcfxga":
case "pc-fxga":
case "necpcfx":
case "necpcfxga":
case "nec pc-fx":
case "nec pc-fxga":
case "nec pc-fx / pc-fxga":
return RedumpSystem.NECPCFXPCFXGA;
case "gc":
case "gamecube":
case "ngc":
case "nintendogamecube":
case "nintendo gamecube":
return RedumpSystem.NintendoGameCube;
case "snescd":
case "snes cd":
case "snes-cd":
case "supernescd":
case "super nes cd":
case "super nes-cd":
case "supernintendocd":
case "super nintendo cd":
case "super nintendo-cd":
case "nintendosnescd":
case "nintendo snes cd":
case "nintendosnes-cd":
case "nintendosupernescd":
case "nintendo super nes cd":
case "nintendo super nes-cd":
case "nintendosupernintendocd":
case "nintendo super nintendo cd":
case "nintendo super nintendo-cd":
case "sonysnescd":
case "sony snes cd":
case "sonysnes-cd":
case "sonysupernescd":
case "sony super nes cd":
case "sony super nes-cd":
case "sonysupernintendocd":
case "sony super nintendo cd":
case "sony super nintendo-cd":
return RedumpSystem.NintendoSonySuperNESCDROMSystem;
case "wii":
case "nintendowii":
case "nintendo wii":
return RedumpSystem.NintendoWii;
case "wiiu":
case "wii u":
case "nintendowiiu":
case "nintendo wii u":
return RedumpSystem.NintendoWiiU;
case "3do":
case "3do interactive multiplayer":
case "panasonic3do":
case "panasonic 3do":
case "panasonic 3do interactive multiplayer":
return RedumpSystem.Panasonic3DOInteractiveMultiplayer;
case "cdi":
case "cd-i":
case "philipscdi":
case "philips cdi":
case "philips cd-i":
return RedumpSystem.PhilipsCDi;
case "laseractive":
case "pioneerlaseractive":
case "pioneer laseractive":
return RedumpSystem.PioneerLaserActive;
case "scd":
case "mcd":
case "smcd":
case "segacd":
case "megacd":
case "segamegacd":
case "sega cd":
case "mega cd":
case "sega cd / mega cd":
return RedumpSystem.SegaMegaCDSegaCD;
case "dc":
case "sdc":
case "dreamcast":
case "segadreamcast":
case "sega dreamcast":
return RedumpSystem.SegaDreamcast;
case "saturn":
case "segasaturn":
case "sega saturn":
return RedumpSystem.SegaSaturn;
case "ngcd":
case "neogeocd":
case "neogeo cd":
case "neo geo cd":
case "snk ngcd":
case "snk neogeo cd":
case "snk neo geo cd":
return RedumpSystem.SNKNeoGeoCD;
case "ps1":
case "psx":
case "playstation":
case "sonyps1":
case "sony ps1":
case "sonypsx":
case "sony psx":
case "sonyplaystation":
case "sony playstation":
return RedumpSystem.SonyPlayStation;
case "ps2":
case "playstation2":
case "playstation 2":
case "sonyps2":
case "sony ps2":
case "sonyplaystation2":
case "sony playstation 2":
return RedumpSystem.SonyPlayStation2;
case "ps3":
case "playstation3":
case "playstation 3":
case "sonyps3":
case "sony ps3":
case "sonyplaystation3":
case "sony playstation 3":
return RedumpSystem.SonyPlayStation3;
case "ps4":
case "playstation4":
case "playstation 4":
case "sonyps4":
case "sony ps4":
case "sonyplaystation4":
case "sony playstation 4":
return RedumpSystem.SonyPlayStation4;
case "ps5":
case "playstation5":
case "playstation 5":
case "sonyps5":
case "sony ps5":
case "sonyplaystation5":
case "sony playstation 5":
return RedumpSystem.SonyPlayStation5;
case "psp":
case "playstationportable":
case "playstation portable":
case "sonypsp":
case "sony psp":
case "sonyplaystationportable":
case "sony playstation portable":
return RedumpSystem.SonyPlayStationPortable;
case "vis":
case "tandyvis":
case "tandy vis":
case "tandyvisualinformationsystem":
case "tandy visual information system":
case "memorexvis":
case "memorex vis":
case "memorexvisualinformationsystem":
case "memorex visual information sytem":
case "tandy / memorex visual information system":
return RedumpSystem.MemorexVisualInformationSystem;
case "nuon":
case "vmlabsnuon":
case "vm labs nuon":
return RedumpSystem.VMLabsNUON;
case "vflash":
case "vsmile":
case "vsmilepro":
case "vsmile pro":
case "v.flash":
case "v.smile":
case "v.smilepro":
case "v.smile pro":
case "vtechvflash":
case "vtech vflash":
case "vtech v.flash":
case "vtechvsmile":
case "vtech vsmile":
case "vtech v.smile":
case "vtechvsmilepro":
case "vtech vsmile pro":
case "vtech v.smile pro":
case "vtech v.flash - v.smile pro":
return RedumpSystem.VTechVFlashVSmilePro;
case "gamewave":
case "game wave":
case "zapit":
case "zapitgamewave":
case "zapit game wave":
case "zapit games game wave family entertainment system":
return RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem;
#endregion
#region Computers
case "acorn":
case "archimedes":
case "acornarchimedes":
case "acorn archimedes":
return RedumpSystem.AcornArchimedes;
case "apple":
case "mac":
case "applemac":
case "macintosh":
case "applemacintosh":
case "apple mac":
case "apple macintosh":
return RedumpSystem.AppleMacintosh;
case "amiga":
case "commodoreamiga":
case "commodore amiga":
return RedumpSystem.CommodoreAmigaCD;
case "fmtowns":
case "fmt":
case "fm towns":
case "fujitsufmtowns":
case "fujitsu fm towns":
case "fujitsu fm towns series":
return RedumpSystem.FujitsuFMTownsseries;
case "ibm":
case "ibmpc":
case "pc":
case "ibm pc":
case "ibm pc compatible":
return RedumpSystem.IBMPCcompatible;
case "pc88":
case "pc-88":
case "necpc88":
case "nec pc88":
case "nec pc-88":
return RedumpSystem.NECPC88series;
case "pc98":
case "pc-98":
case "necpc98":
case "nec pc98":
case "nec pc-98":
return RedumpSystem.NECPC98series;
case "x68k":
case "x68000":
case "sharpx68k":
case "sharp x68k":
case "sharpx68000":
case "sharp x68000":
return RedumpSystem.SharpX68000;
#endregion
#region Arcade
case "cubo":
case "cubocd32":
case "cubo cd32":
case "amigacubocd32":
case "amiga cubo cd32":
return RedumpSystem.AmigaCUBOCD32;
case "alg3do":
case "alg 3do":
case "americanlasergames3do":
case "american laser games 3do":
return RedumpSystem.AmericanLaserGames3DO;
case "atari3do":
case "atari 3do":
return RedumpSystem.Atari3DO;
case "atronic":
return RedumpSystem.Atronic;
case "auscom":
case "auscomsystem1":
case "auscom system 1":
return RedumpSystem.AUSCOMSystem1;
case "gamemagic":
case "game magic":
case "ballygamemagic":
case "bally game magic":
return RedumpSystem.BallyGameMagic;
case "cps3":
case "cpsiii":
case "cps 3":
case "cp system 3":
case "cp system iii":
case "capcomcps3":
case "capcomcpsiii":
case "capcom cps 3":
case "capcom cps iii":
case "capcom cp system 3":
case "capcom cp system iii":
return RedumpSystem.CapcomCPSystemIII;
case "fpp":
case "funworldphotoplay":
case "funworld photoplay":
case "funworld photo play":
return RedumpSystem.funworldPhotoPlay;
case "globalvr":
case "global vr":
case "global vr pc-based systems":
return RedumpSystem.GlobalVRVarious;
case "vortek":
case "globalvrvortek":
case "global vr vortek":
return RedumpSystem.GlobalVRVortek;
case "vortekv3":
case "vortek v3":
case "globalvrvortekv3":
case "global vr vortek v3":
return RedumpSystem.GlobalVRVortekV3;
case "ice":
case "icepc":
case "ice pc":
case "ice pc-based hardware":
return RedumpSystem.ICEPCHardware;
case "iteagle":
case "eagle":
case "incredible technologies eagle":
return RedumpSystem.IncredibleTechnologiesEagle;
case "itpc":
case "incredible technologies pc-based systems":
return RedumpSystem.IncredibleTechnologiesVarious;
case "eamusement":
case "e-amusement":
case "konamieamusement":
case "konami eamusement":
case "konamie-amusement":
case "konami e-amusement":
return RedumpSystem.KonamieAmusement;
case "firebeat":
case "konamifirebeat":
case "konami firebeat":
return RedumpSystem.KonamiFireBeat;
case "gvsystem":
case "gv system":
case "konamigvsystem":
case "konami gv system":
case "systemgv":
case "system gv":
case "konamisystemgv":
case "konami system gv":
return RedumpSystem.KonamiSystemGV;
case "konamim2":
case "konami m2":
return RedumpSystem.KonamiM2;
case "python":
case "konamipython":
case "konami python":
return RedumpSystem.KonamiPython;
case "python2":
case "python 2":
case "konamipython2":
case "konami python 2":
return RedumpSystem.KonamiPython2;
case "system573":
case "system 573":
case "konamisystem573":
case "konami system 573":
return RedumpSystem.KonamiSystem573;
case "twinkle":
case "konamitwinkle":
case "konami twinkle":
return RedumpSystem.KonamiTwinkle;
case "konamipc":
case "konami pc":
case "konami pc-based systems":
return RedumpSystem.KonamiVarious;
case "boardwalk":
case "meritindustriesboardwalk":
case "merit industries boardwalk":
return RedumpSystem.MeritIndustriesBoardwalk;
case "megatouchforce":
case "megatouch force":
case "meritindustriesmegatouchforce":
case "merit industries megatouch force":
return RedumpSystem.MeritIndustriesMegaTouchForce;
case "megatouchion":
case "megatouch ion":
case "meritindustriesmegatouchion":
case "merit industries megatouch ion":
return RedumpSystem.MeritIndustriesMegaTouchION;
case "megatouchmaxx":
case "megatouch maxx":
case "meritindustriesmegatouchmaxx":
case "merit industries megatouch maxx":
return RedumpSystem.MeritIndustriesMegaTouchMaxx;
case "megatouchxl":
case "megatouch xl":
case "meritindustriesmegatouchxl":
case "merit industries megatouch xl":
return RedumpSystem.MeritIndustriesMegaTouchXL;
case "system246":
case "system 246":
case "namcosystem246":
case "namco system 246":
case "capcomsystem246":
case "capcom system 246":
case "taitosystem246":
case "taito system 246":
case "namco / capcom / taito system 246":
case "system256":
case "system 256":
case "supersystem256":
case "super system 256":
case "namcosystem256":
case "namco system 256":
case "namcosupersystem256":
case "namco super system 256":
case "capcomsystem256":
case "capcom system 256":
case "capcomsupersystem256":
case "capcom super system 256":
case "namco / capcom system 256/super system 256":
return RedumpSystem.NamcoSystem246256;
case "triforce":
case "namcotriforce":
case "namco triforce":
case "segatriforce":
case "sega triforce":
case "nintendotriforce":
case "nintendo triforce":
case "namco / sega / nintendo triforce":
return RedumpSystem.NamcoSegaNintendoTriforce;
case "system12":
case "system 12":
case "namcosystem12":
case "namco system 12":
return RedumpSystem.NamcoSystem12;
case "newjatrecdi":
case "new jatre cdi":
case "new jatre cd-i":
return RedumpSystem.NewJatreCDi;
case "hrs":
case "highratesytem":
case "high rate system":
case "nichibutsuhrs":
case "nichibutsu hrs":
case "nichibutsu high rate system":
return RedumpSystem.NichibutsuHighRateSystem;
case "supercd":
case "super cd":
case "nichibutsuscd":
case "nichibutsu scd":
case "nichibutsusupercd":
case "nichibutsu supercd":
case "nichibutsu super cd":
return RedumpSystem.NichibutsuSuperCD;
case "xrs":
case "xratesystem":
case "x-rate system":
case "nichibutsuxrs":
case "nichibutsu xrs":
case "nichibutsu x-rate system":
return RedumpSystem.NichibutsuXRateSystem;
case "panasonicm2":
case "panasonic m2":
return RedumpSystem.PanasonicM2;
case "photoplay":
case "photoplaypc":
case "photoplay pc":
case "photoplay pc-based systems":
return RedumpSystem.PhotoPlayVarious;
case "rawthrills":
case "raw thrills":
case "raw thrills pc-based systems":
return RedumpSystem.RawThrillsVarious;
case "alls":
case "segaalls":
case "sega alls":
return RedumpSystem.SegaALLS;
case "chihiro":
case "segachihiro":
case "sega chihiro":
return RedumpSystem.SegaChihiro;
case "europar":
case "europa-r":
case "segaeuropar":
case "sega europar":
case "sega europa-r":
return RedumpSystem.SegaEuropaR;
case "lindbergh":
case "segalindbergh":
case "sega lindbergh":
return RedumpSystem.SegaLindbergh;
case "naomi":
case "seganaomi":
case "sega naomi":
return RedumpSystem.SegaNaomi;
case "naomi2":
case "naomi 2":
case "seganaomi2":
case "sega naomi 2":
return RedumpSystem.SegaNaomi2;
case "nu":
case "seganu":
case "sega nu":
return RedumpSystem.SegaNu;
case "ringedge":
case "segaringedge":
case "sega ringedge":
return RedumpSystem.SegaRingEdge;
case "ringedge2":
case "ringedge 2":
case "segaringedge2":
case "sega ringedge 2":
return RedumpSystem.SegaRingEdge2;
case "ringwide":
case "segaringwide":
case "sega ringwide":
return RedumpSystem.SegaRingWide;
case "stv":
case "titanvideo":
case "titan video":
case "segatitanvideo":
case "sega titan video":
return RedumpSystem.SegaTitanVideo;
case "system32":
case "system 32":
case "segasystem32":
case "sega system 32":
return RedumpSystem.SegaSystem32;
case "cats":
case "seibucats":
case "seibu cats":
case "seibu cats system":
return RedumpSystem.SeibuCATSSystem;
case "quizard":
case "tabaustriaquizard":
case "tab-austria quizard":
return RedumpSystem.TABAustriaQuizard;
case "tsumo":
case "tsunamitsumo":
case "tsunami tsumo":
case "tsunami tsumo multi-game motion system":
return RedumpSystem.TsunamiTsuMoMultiGameMotionSystem;
#endregion
#region Others
case "audio":
case "audiocd":
case "audio cd":
return RedumpSystem.AudioCD;
case "bdvideo":
case "bd-video":
case "blurayvideo":
case "bluray video":
return RedumpSystem.BDVideo;
case "dvda":
case "dvdaudio":
case "dvd-audio":
return RedumpSystem.DVDAudio;
case "dvd":
case "dvdv":
case "dvdvideo":
case "dvd-video":
return RedumpSystem.DVDVideo;
case "enhancedcd":
case "enhanced cd":
case "enhancedcdrom":
case "enhanced cdrom":
case "enhanced cd-rom":
return RedumpSystem.EnhancedCD;
case "hddvd":
case "hddvdv":
case "hddvdvideo":
case "hddvd-video":
case "hd-dvd-video":
return RedumpSystem.HDDVDVideo;
case "naviken":
case "naviken21":
case "naviken 2.1":
case "navisoftnaviken":
case "navisoft naviken":
case "navisoftnaviken21":
case "navisoft naviken 2.1":
return RedumpSystem.NavisoftNaviken21;
case "palm":
case "palmos":
return RedumpSystem.PalmOS;
case "photo":
case "photocd":
case "photo cd":
return RedumpSystem.PhotoCD;
case "gameshark":
case "psgameshark":
case "ps gameshark":
case "playstationgameshark":
case "playstation gameshark":
case "playstation gameshark updates":
return RedumpSystem.PlayStationGameSharkUpdates;
case "pocketpc":
case "pocket pc":
case "ppc":
return RedumpSystem.PocketPC;
case "rainbow":
case "rainbowdisc":
case "rainbow disc":
return RedumpSystem.RainbowDisc;
case "pl21":
case "prologue21":
case "prologue 21":
case "segaprologue21":
case "sega prologue21":
case "sega prologue 21":
return RedumpSystem.SegaPrologue21MultimediaKaraokeSystem;
case "sacd":
case "superaudiocd":
case "super audio cd":
return RedumpSystem.SuperAudioCD;
case "iktv":
case "taoiktv":
case "tao iktv":
return RedumpSystem.TaoiKTV;
case "kisssite":
case "kiss-site":
case "tomykisssite":
case "tomy kisssite":
case "tomy kiss-site":
return RedumpSystem.TomyKissSite;
case "vcd":
case "videocd":
case "video cd":
return RedumpSystem.VideoCD;
#endregion
default:
return null;
}
}
#endregion
#region System Category
/// <summary>
/// Get the string representation of the system category
/// </summary>
/// <param name="category"></param>
/// <returns></returns>
public static string LongName(this SystemCategory? category) => AttributeHelper<SystemCategory?>.GetAttribute(category)?.LongName;
#endregion
#region Yes/No
/// <summary>
/// Get the string representation of the YesNo value
/// </summary>
/// <param name="yesno"></param>
/// <returns></returns>
public static string LongName(this YesNo? yesno) => AttributeHelper<YesNo?>.GetAttribute(yesno)?.LongName ?? "Yes/No";
/// <summary>
/// Get the YesNo enum value for a given string
/// </summary>
/// <param name="yesno">String value to convert</param>
/// <returns>YesNo represented by the string, if possible</returns>
public static YesNo? ToYesNo(string yesno)
{
switch (yesno?.ToLowerInvariant())
{
case "no":
return YesNo.No;
case "yes":
return YesNo.Yes;
default:
return YesNo.NULL;
}
}
#endregion
}
}