Add a few more fun things that might get UI features later

This commit is contained in:
Matt Nadareski
2019-05-22 21:33:31 -07:00
parent 03f4a6e2e4
commit c66df99e22
4 changed files with 1027 additions and 10 deletions

View File

@@ -405,6 +405,90 @@
CED,
}
/// <summary>
/// List of all known Redump systems
/// </summary>
public enum RedumpSystem
{
// Special BIOS sets
MicrosoftXboxBIOS,
NintendoGameCubeBIOS,
SonyPlayStationBIOS,
SonyPlayStation2BIOS,
// Regular systems
AcornArchimedes,
AppleMacintosh,
AudioCD,
BDVideo,
BandaiPippin,
BandaiPlaydiaQuickInteractiveSystem,
CommodoreAmigaCD,
CommodoreAmigaCD32,
CommodoreAmigaCDTV,
DVDVideo,
FujitsuFMTownsseries,
HasbroVideoNow,
HasbroVideoNowColor,
HasbroVideoNowJr,
HasbroVideoNowXP,
IBMPCcompatible,
IncredibleTechnologiesEagle,
KonamiFireBeat,
KonamiM2,
KonamiSystem573,
KonamiSystemGV,
KonamiTwinkle,
KonamieAmusement,
MattelHyperScan,
MemorexVisualInformationSystem,
MicrosoftXbox,
MicrosoftXbox360,
MicrosoftXboxOne,
NECPC88series,
NECPC98series,
NECPCEngineCDTurboGrafxCD,
NECPCFXPCFXGA,
NamcoSystem12,
NamcoSystem246,
NavisoftNaviken21,
NinendoGameCube,
NintendoWii,
NintendoWiiU,
PalmOS,
Panasonic3DOInteractiveMultiplayer,
PanasonicM2,
PhilipsCDi,
PhilipsCDiDigitalVideo,
PhotoCD,
PlayStationGameSharkUpdates,
SegaChihiro,
SegaDreamcast,
SegaLindbergh,
SegaMegaCDSegaCD,
SegaNaomi,
SegaNaomi2,
SegaRingEdge,
SegaRingEdge2,
SegaSaturn,
SegaTitanVideo,
SegaTriforce,
SharpX68000,
SNKNeoGeoCD,
SonyPlayStation,
SonyPlayStation2,
SonyPlayStation3,
SonyPlayStation4,
SonyPlayStationPortable,
TABAustriaQuizard,
TaoiKTV,
TomyKissSite,
VideoCD,
VMLabsNUON,
VTechVFlashVSmilePro,
ZAPiTGamesGameWaveFamilyEntertainmentSystem,
}
/// <summary>
/// List of all known Redump regions
/// </summary>

View File

@@ -39,6 +39,171 @@ namespace DICUI.Utilities
}
}
/// <summary>
/// Convert currently known Redump systems to the master list of systems
/// </summary>
/// <param name="system">Redump system value to check</param>
/// <returns>KnownSystem if possible, null on error</returns>
public static KnownSystem? ToKnownSystem(this RedumpSystem system)
{
switch (system)
{
// Special BIOS sets
case RedumpSystem.MicrosoftXboxBIOS:
return KnownSystem.MicrosoftXBOX;
case RedumpSystem.NintendoGameCubeBIOS:
return KnownSystem.NintendoGameCube;
case RedumpSystem.SonyPlayStationBIOS:
return KnownSystem.SonyPlayStation;
case RedumpSystem.SonyPlayStation2BIOS:
return KnownSystem.SonyPlayStation2;
// Regular systems
case RedumpSystem.AcornArchimedes:
return KnownSystem.AcornArchimedes;
case RedumpSystem.AppleMacintosh:
return KnownSystem.AppleMacintosh;
case RedumpSystem.AudioCD:
return KnownSystem.AudioCD;
case RedumpSystem.BDVideo:
return KnownSystem.BDVideo;
case RedumpSystem.BandaiPippin:
return KnownSystem.BandaiApplePippin;
case RedumpSystem.BandaiPlaydiaQuickInteractiveSystem:
return KnownSystem.BandaiPlaydiaQuickInteractiveSystem;
case RedumpSystem.CommodoreAmigaCD:
return KnownSystem.CommodoreAmiga;
case RedumpSystem.CommodoreAmigaCD32:
return KnownSystem.CommodoreAmigaCD32;
case RedumpSystem.CommodoreAmigaCDTV:
return KnownSystem.CommodoreAmigaCDTV;
case RedumpSystem.DVDVideo:
return KnownSystem.DVDVideo;
case RedumpSystem.FujitsuFMTownsseries:
return KnownSystem.FujitsuFMTowns;
case RedumpSystem.HasbroVideoNow:
return KnownSystem.HasbroVideoNow;
case RedumpSystem.HasbroVideoNowColor:
return KnownSystem.HasbroVideoNowColor;
case RedumpSystem.HasbroVideoNowJr:
return KnownSystem.HasbroVideoNowJr;
case RedumpSystem.HasbroVideoNowXP:
return KnownSystem.HasbroVideoNowXP;
case RedumpSystem.IBMPCcompatible:
return KnownSystem.IBMPCCompatible;
case RedumpSystem.IncredibleTechnologiesEagle:
return KnownSystem.IncredibleTechnologiesEagle;
case RedumpSystem.KonamieAmusement:
return KnownSystem.KonamieAmusement;
case RedumpSystem.KonamiFireBeat:
return KnownSystem.KonamiFirebeat;
case RedumpSystem.KonamiM2:
return KnownSystem.KonamiM2;
case RedumpSystem.KonamiSystem573:
return KnownSystem.KonamiSystem573;
case RedumpSystem.KonamiSystemGV:
return KnownSystem.KonamiGVSystem;
case RedumpSystem.KonamiTwinkle:
return KnownSystem.KonamiTwinkle;
case RedumpSystem.MattelHyperScan:
return KnownSystem.MattelHyperscan;
case RedumpSystem.MemorexVisualInformationSystem:
return KnownSystem.TandyMemorexVisualInformationSystem;
case RedumpSystem.MicrosoftXbox:
return KnownSystem.MicrosoftXBOX;
case RedumpSystem.MicrosoftXbox360:
return KnownSystem.MicrosoftXBOX360;
case RedumpSystem.MicrosoftXboxOne:
return KnownSystem.MicrosoftXBOXOne;
case RedumpSystem.NECPC88series:
return KnownSystem.NECPC88;
case RedumpSystem.NECPC98series:
return KnownSystem.NECPC98;
case RedumpSystem.NECPCEngineCDTurboGrafxCD:
return KnownSystem.NECPCEngineTurboGrafxCD;
case RedumpSystem.NECPCFXPCFXGA:
return KnownSystem.NECPCFX;
case RedumpSystem.NamcoSystem12:
return KnownSystem.NamcoSystem12;
case RedumpSystem.NamcoSystem246:
return KnownSystem.NamcoCapcomTaitoSystem246;
case RedumpSystem.NavisoftNaviken21:
return KnownSystem.NavisoftNaviken21;
case RedumpSystem.NinendoGameCube:
return KnownSystem.NintendoGameCube;
case RedumpSystem.NintendoWii:
return KnownSystem.NintendoWii;
case RedumpSystem.NintendoWiiU:
return KnownSystem.NintendoWiiU;
case RedumpSystem.PalmOS:
return KnownSystem.PalmOS;
case RedumpSystem.Panasonic3DOInteractiveMultiplayer:
return KnownSystem.Panasonic3DOInteractiveMultiplayer;
case RedumpSystem.PanasonicM2:
return KnownSystem.PanasonicM2;
case RedumpSystem.PhilipsCDi:
return KnownSystem.PhilipsCDi;
case RedumpSystem.PhilipsCDiDigitalVideo:
return KnownSystem.PhilipsCDiDigitalVideo;
case RedumpSystem.PhotoCD:
return KnownSystem.PhotoCD;
case RedumpSystem.PlayStationGameSharkUpdates:
return KnownSystem.PlayStationGameSharkUpdates;
case RedumpSystem.SegaChihiro:
return KnownSystem.SegaChihiro;
case RedumpSystem.SegaDreamcast:
return KnownSystem.SegaDreamcast;
case RedumpSystem.SegaLindbergh:
return KnownSystem.SegaLindbergh;
case RedumpSystem.SegaMegaCDSegaCD:
return KnownSystem.SegaCDMegaCD;
case RedumpSystem.SegaNaomi:
return KnownSystem.SegaNaomi;
case RedumpSystem.SegaNaomi2:
return KnownSystem.SegaNaomi2;
case RedumpSystem.SegaRingEdge:
return KnownSystem.SegaRingEdge;
case RedumpSystem.SegaRingEdge2:
return KnownSystem.SegaRingEdge2;
case RedumpSystem.SegaSaturn:
return KnownSystem.SegaSaturn;
case RedumpSystem.SegaTitanVideo:
return KnownSystem.SegaTitanVideo;
case RedumpSystem.SegaTriforce:
return KnownSystem.NamcoSegaNintendoTriforce;
case RedumpSystem.SharpX68000:
return KnownSystem.SharpX68000;
case RedumpSystem.SNKNeoGeoCD:
return KnownSystem.SNKNeoGeoCD;
case RedumpSystem.SonyPlayStation:
return KnownSystem.SonyPlayStation;
case RedumpSystem.SonyPlayStation2:
return KnownSystem.SonyPlayStation2;
case RedumpSystem.SonyPlayStation3:
return KnownSystem.SonyPlayStation3;
case RedumpSystem.SonyPlayStation4:
return KnownSystem.SonyPlayStation4;
case RedumpSystem.SonyPlayStationPortable:
return KnownSystem.SonyPlayStationPortable;
case RedumpSystem.TABAustriaQuizard:
return KnownSystem.TABAustriaQuizard;
case RedumpSystem.TaoiKTV:
return KnownSystem.TaoiKTV;
case RedumpSystem.TomyKissSite:
return KnownSystem.TomyKissSite;
case RedumpSystem.VideoCD:
return KnownSystem.VideoCD;
case RedumpSystem.VMLabsNUON:
return KnownSystem.VMLabsNuon;
case RedumpSystem.VTechVFlashVSmilePro:
return KnownSystem.VTechVFlashVSmilePro;
case RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem:
return KnownSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem;
default:
return null;
}
}
/// <summary>
/// Get the MediaType associated with a given base command
/// </summary>
@@ -112,6 +277,160 @@ namespace DICUI.Utilities
}
}
/// <summary>
/// Convert master list of all systems to currently known Redump systems
/// </summary>
/// <param name="system">KnownSystem value to check</param>
/// <returns>RedumpSystem if possible, null on error</returns>
public static RedumpSystem? ToRedumpSystem(this KnownSystem system)
{
switch (system)
{
case KnownSystem.AcornArchimedes:
return RedumpSystem.AcornArchimedes;
case KnownSystem.AppleMacintosh:
return RedumpSystem.AppleMacintosh;
case KnownSystem.AudioCD:
return RedumpSystem.AudioCD;
case KnownSystem.BDVideo:
return RedumpSystem.BDVideo;
case KnownSystem.BandaiApplePippin:
return RedumpSystem.BandaiPippin;
case KnownSystem.BandaiPlaydiaQuickInteractiveSystem:
return RedumpSystem.BandaiPlaydiaQuickInteractiveSystem;
case KnownSystem.CommodoreAmiga:
return RedumpSystem.CommodoreAmigaCD;
case KnownSystem.CommodoreAmigaCD32:
return RedumpSystem.CommodoreAmigaCD32;
case KnownSystem.CommodoreAmigaCDTV:
return RedumpSystem.CommodoreAmigaCDTV;
case KnownSystem.DVDVideo:
return RedumpSystem.DVDVideo;
case KnownSystem.FujitsuFMTowns:
return RedumpSystem.FujitsuFMTownsseries;
case KnownSystem.HasbroVideoNow:
return RedumpSystem.HasbroVideoNow;
case KnownSystem.HasbroVideoNowColor:
return RedumpSystem.HasbroVideoNowColor;
case KnownSystem.HasbroVideoNowJr:
return RedumpSystem.HasbroVideoNowJr;
case KnownSystem.HasbroVideoNowXP:
return RedumpSystem.HasbroVideoNowXP;
case KnownSystem.IBMPCCompatible:
return RedumpSystem.IBMPCcompatible;
case KnownSystem.IncredibleTechnologiesEagle:
return RedumpSystem.IncredibleTechnologiesEagle;
case KnownSystem.KonamieAmusement:
return RedumpSystem.KonamieAmusement;
case KnownSystem.KonamiFirebeat:
return RedumpSystem.KonamiFireBeat;
case KnownSystem.KonamiM2:
return RedumpSystem.KonamiM2;
case KnownSystem.KonamiSystem573:
return RedumpSystem.KonamiSystem573;
case KnownSystem.KonamiGVSystem:
return RedumpSystem.KonamiSystemGV;
case KnownSystem.KonamiTwinkle:
return RedumpSystem.KonamiTwinkle;
case KnownSystem.MattelHyperscan:
return RedumpSystem.MattelHyperScan;
case KnownSystem.TandyMemorexVisualInformationSystem:
return RedumpSystem.MemorexVisualInformationSystem;
case KnownSystem.MicrosoftXBOX:
return RedumpSystem.MicrosoftXbox; // RedumpSystem.MicrosoftXboxBIOS
case KnownSystem.MicrosoftXBOX360:
return RedumpSystem.MicrosoftXbox360;
case KnownSystem.MicrosoftXBOXOne:
return RedumpSystem.MicrosoftXboxOne;
case KnownSystem.NECPC88:
return RedumpSystem.NECPC88series;
case KnownSystem.NECPC98:
return RedumpSystem.NECPC98series;
case KnownSystem.NECPCEngineTurboGrafxCD:
return RedumpSystem.NECPCEngineCDTurboGrafxCD;
case KnownSystem.NECPCFX:
return RedumpSystem.NECPCFXPCFXGA;
case KnownSystem.NamcoSystem12:
return RedumpSystem.NamcoSystem12;
case KnownSystem.NamcoCapcomTaitoSystem246:
return RedumpSystem.NamcoSystem246;
case KnownSystem.NavisoftNaviken21:
return RedumpSystem.NavisoftNaviken21;
case KnownSystem.NintendoGameCube:
return RedumpSystem.NinendoGameCube; // RedumpSystem.NintendoGameCubeBIOS;
case KnownSystem.NintendoWii:
return RedumpSystem.NintendoWii;
case KnownSystem.NintendoWiiU:
return RedumpSystem.NintendoWiiU;
case KnownSystem.PalmOS:
return RedumpSystem.PalmOS;
case KnownSystem.Panasonic3DOInteractiveMultiplayer:
return RedumpSystem.Panasonic3DOInteractiveMultiplayer;
case KnownSystem.PanasonicM2:
return RedumpSystem.PanasonicM2;
case KnownSystem.PhilipsCDi:
return RedumpSystem.PhilipsCDi;
case KnownSystem.PhilipsCDiDigitalVideo:
return RedumpSystem.PhilipsCDiDigitalVideo;
case KnownSystem.PhotoCD:
return RedumpSystem.PhotoCD;
case KnownSystem.PlayStationGameSharkUpdates:
return RedumpSystem.PlayStationGameSharkUpdates;
case KnownSystem.SegaChihiro:
return RedumpSystem.SegaChihiro;
case KnownSystem.SegaDreamcast:
return RedumpSystem.SegaDreamcast;
case KnownSystem.SegaLindbergh:
return RedumpSystem.SegaLindbergh;
case KnownSystem.SegaCDMegaCD:
return RedumpSystem.SegaMegaCDSegaCD;
case KnownSystem.SegaNaomi:
return RedumpSystem.SegaNaomi;
case KnownSystem.SegaNaomi2:
return RedumpSystem.SegaNaomi2;
case KnownSystem.SegaRingEdge:
return RedumpSystem.SegaRingEdge;
case KnownSystem.SegaRingEdge2:
return RedumpSystem.SegaRingEdge2;
case KnownSystem.SegaSaturn:
return RedumpSystem.SegaSaturn;
case KnownSystem.SegaTitanVideo:
return RedumpSystem.SegaTitanVideo;
case KnownSystem.NamcoSegaNintendoTriforce:
return RedumpSystem.SegaTriforce;
case KnownSystem.SharpX68000:
return RedumpSystem.SharpX68000;
case KnownSystem.SNKNeoGeoCD:
return RedumpSystem.SNKNeoGeoCD;
case KnownSystem.SonyPlayStation:
return RedumpSystem.SonyPlayStation; // RedumpSystem.SonyPlayStationBIOS;
case KnownSystem.SonyPlayStation2:
return RedumpSystem.SonyPlayStation2; // RedumpSystem.SonyPlayStation2BIOS;
case KnownSystem.SonyPlayStation3:
return RedumpSystem.SonyPlayStation3;
case KnownSystem.SonyPlayStation4:
return RedumpSystem.SonyPlayStation4;
case KnownSystem.SonyPlayStationPortable:
return RedumpSystem.SonyPlayStationPortable;
case KnownSystem.TABAustriaQuizard:
return RedumpSystem.TABAustriaQuizard;
case KnownSystem.TaoiKTV:
return RedumpSystem.TaoiKTV;
case KnownSystem.TomyKissSite:
return RedumpSystem.TomyKissSite;
case KnownSystem.VideoCD:
return RedumpSystem.VideoCD;
case KnownSystem.VMLabsNuon:
return RedumpSystem.VMLabsNUON;
case KnownSystem.VTechVFlashVSmilePro:
return RedumpSystem.VTechVFlashVSmilePro;
case KnownSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem:
return RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem;
default:
return null;
}
}
/// <summary>
/// Get the default extension for a given disc type
/// </summary>
@@ -769,6 +1088,171 @@ namespace DICUI.Utilities
}
}
/// <summary>
/// Get the Redump longnames for each known system
/// </summary>
/// <param name="system"></param>
/// <returns></returns>
public static string LongName(this RedumpSystem system)
{
switch (system)
{
// Special BIOS sets
case RedumpSystem.MicrosoftXboxBIOS:
return "Microsoft Xbox (BIOS)";
case RedumpSystem.NintendoGameCubeBIOS:
return "Nintendo GameCube (BIOS)";
case RedumpSystem.SonyPlayStationBIOS:
return "Sony PlayStation (BIOS)";
case RedumpSystem.SonyPlayStation2BIOS:
return "Sony PlayStation 2 (BIOS)";
// Regular systems
case RedumpSystem.AcornArchimedes:
return "Acorn Archimedes";
case RedumpSystem.AppleMacintosh:
return "Apple Macintosh";
case RedumpSystem.AudioCD:
return "Audio CD";
case RedumpSystem.BDVideo:
return "BD-Video";
case RedumpSystem.BandaiPippin:
return "Bandai Pippin";
case RedumpSystem.BandaiPlaydiaQuickInteractiveSystem:
return "Bandai Playdia Quick Interactive System";
case RedumpSystem.CommodoreAmigaCD:
return "Commodore Amiga CD";
case RedumpSystem.CommodoreAmigaCD32:
return "Commodore Amiga CD32";
case RedumpSystem.CommodoreAmigaCDTV:
return "Commodore Amiga CDTV";
case RedumpSystem.DVDVideo:
return "DVD-Video";
case RedumpSystem.FujitsuFMTownsseries:
return "Fujitsu FM Towns series";
case RedumpSystem.HasbroVideoNow:
return "Hasbro VideoNow";
case RedumpSystem.HasbroVideoNowColor:
return "Hasbro VideoNow Color";
case RedumpSystem.HasbroVideoNowJr:
return "Hasbro VideoNow Jr.";
case RedumpSystem.HasbroVideoNowXP:
return "Hasbro VideoNow XP";
case RedumpSystem.IBMPCcompatible:
return "IBM PC compatible";
case RedumpSystem.IncredibleTechnologiesEagle:
return "Incredible Technologies Eagle";
case RedumpSystem.KonamieAmusement:
return "Konami e-Amusement";
case RedumpSystem.KonamiFireBeat:
return "Konami FireBeat";
case RedumpSystem.KonamiM2:
return "Konami M2";
case RedumpSystem.KonamiSystem573:
return "Konami System 573";
case RedumpSystem.KonamiSystemGV:
return "Konami System GV";
case RedumpSystem.KonamiTwinkle:
return "Konami Twinkle";
case RedumpSystem.MattelHyperScan:
return "Mattel HyperScan";
case RedumpSystem.MemorexVisualInformationSystem:
return "Memorex Visual Information System";
case RedumpSystem.MicrosoftXbox:
return "Microsoft Xbox";
case RedumpSystem.MicrosoftXbox360:
return "Microsoft Xbox 360";
case RedumpSystem.MicrosoftXboxOne:
return "Microsoft Xbox One";
case RedumpSystem.NECPC88series:
return "NEC PC-88 series";
case RedumpSystem.NECPC98series:
return "NEC PC-98 series";
case RedumpSystem.NECPCEngineCDTurboGrafxCD:
return "NEC PC Engine CD & TurboGrafx CD";
case RedumpSystem.NECPCFXPCFXGA:
return "NEC PC-FX & PC-FXGA";
case RedumpSystem.NamcoSystem12:
return "Namco System 12";
case RedumpSystem.NamcoSystem246:
return "Namco System 246";
case RedumpSystem.NavisoftNaviken21:
return "Navisoft Naviken 2.1";
case RedumpSystem.NinendoGameCube:
return "Nintendo GameCube";
case RedumpSystem.NintendoWii:
return "Nintendo Wii";
case RedumpSystem.NintendoWiiU:
return "Nintendo Wii U";
case RedumpSystem.PalmOS:
return "Palm OS";
case RedumpSystem.Panasonic3DOInteractiveMultiplayer:
return "Panasonic 3DO Interactive Multiplayer";
case RedumpSystem.PanasonicM2:
return "Panasonic M2";
case RedumpSystem.PhilipsCDi:
return "Philips CD-i";
case RedumpSystem.PhilipsCDiDigitalVideo:
return "Philips CD-i Digital Video";
case RedumpSystem.PhotoCD:
return "Photo CD";
case RedumpSystem.PlayStationGameSharkUpdates:
return "PlayStation GameShark Updates";
case RedumpSystem.SegaChihiro:
return "Sega Chihiro";
case RedumpSystem.SegaDreamcast:
return "Sega Dreamcast";
case RedumpSystem.SegaLindbergh:
return "Sega Lindbergh";
case RedumpSystem.SegaMegaCDSegaCD:
return "Sega Mega CD & Sega CD";
case RedumpSystem.SegaNaomi:
return "Sega Naomi";
case RedumpSystem.SegaNaomi2:
return "Sega Naomi 2";
case RedumpSystem.SegaRingEdge:
return "Sega RingEdge";
case RedumpSystem.SegaRingEdge2:
return "Sega RingEdge 2";
case RedumpSystem.SegaSaturn:
return "Sega Saturn";
case RedumpSystem.SegaTitanVideo:
return "Sega Titan Video";
case RedumpSystem.SegaTriforce:
return "Sega Triforce";
case RedumpSystem.SharpX68000:
return "Sharp X68000";
case RedumpSystem.SNKNeoGeoCD:
return "Neo Geo CD";
case RedumpSystem.SonyPlayStation:
return "Sony PlayStation";
case RedumpSystem.SonyPlayStation2:
return "Sony PlayStation 2";
case RedumpSystem.SonyPlayStation3:
return "Sony PlayStation 3";
case RedumpSystem.SonyPlayStation4:
return "Sony PlayStation 4";
case RedumpSystem.SonyPlayStationPortable:
return "Sony PlayStation Portable";
case RedumpSystem.TABAustriaQuizard:
return "TAB-Austria Quizard";
case RedumpSystem.TaoiKTV:
return "Tao iKTV";
case RedumpSystem.TomyKissSite:
return "Tomy Kiss-Site";
case RedumpSystem.VideoCD:
return "Video CD";
case RedumpSystem.VMLabsNUON:
return "VM Labs NUON";
case RedumpSystem.VTechVFlashVSmilePro:
return "VTech V.Flash & V.Smile Pro";
case RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem:
return "ZAPiT Games Game Wave Family Entertainment System";
default:
return null;
}
}
/// <summary>
/// Get the string representation of the Region enum values
/// </summary>
@@ -1359,6 +1843,171 @@ namespace DICUI.Utilities
}
}
/// <summary>
/// Get the Redump shortnames for each known system
/// </summary>
/// <param name="system"></param>
/// <returns></returns>
public static string ShortName(this RedumpSystem system)
{
switch (system)
{
// Special BIOS sets
case RedumpSystem.MicrosoftXboxBIOS:
return "xbox-bios";
case RedumpSystem.NintendoGameCubeBIOS:
return "gc-bios";
case RedumpSystem.SonyPlayStationBIOS:
return "psx-bios";
case RedumpSystem.SonyPlayStation2BIOS:
return "ps2-bios";
// Regular systems
case RedumpSystem.AcornArchimedes:
return "archcd";
case RedumpSystem.AppleMacintosh:
return "mac";
case RedumpSystem.AudioCD:
return "audio-cd";
case RedumpSystem.BDVideo:
return "bd-video";
case RedumpSystem.BandaiPippin:
return "pippin";
case RedumpSystem.BandaiPlaydiaQuickInteractiveSystem:
return "qis";
case RedumpSystem.CommodoreAmigaCD:
return "acd";
case RedumpSystem.CommodoreAmigaCD32:
return "cd32";
case RedumpSystem.CommodoreAmigaCDTV:
return "cdtv";
case RedumpSystem.DVDVideo:
return "dvd-video";
case RedumpSystem.FujitsuFMTownsseries:
return "fmt";
case RedumpSystem.HasbroVideoNow:
return "hvn";
case RedumpSystem.HasbroVideoNowColor:
return "hvnc";
case RedumpSystem.HasbroVideoNowJr:
return "hvnjr";
case RedumpSystem.HasbroVideoNowXP:
return "hvnxp";
case RedumpSystem.IBMPCcompatible:
return "pc";
case RedumpSystem.IncredibleTechnologiesEagle:
return "ite";
case RedumpSystem.KonamieAmusement:
return "kea";
case RedumpSystem.KonamiFireBeat:
return "kfb";
case RedumpSystem.KonamiM2:
return "km2";
case RedumpSystem.KonamiSystem573:
return "ks573";
case RedumpSystem.KonamiSystemGV:
return "ksgv";
case RedumpSystem.KonamiTwinkle:
return "kt";
case RedumpSystem.MattelHyperScan:
return "hs";
case RedumpSystem.MemorexVisualInformationSystem:
return "vis";
case RedumpSystem.MicrosoftXbox:
return "xbox";
case RedumpSystem.MicrosoftXbox360:
return "xbox360";
case RedumpSystem.MicrosoftXboxOne:
return "xboxone";
case RedumpSystem.NECPC88series:
return "pc-88";
case RedumpSystem.NECPC98series:
return "pc-98";
case RedumpSystem.NECPCEngineCDTurboGrafxCD:
return "pce";
case RedumpSystem.NECPCFXPCFXGA:
return "pc-fx";
case RedumpSystem.NamcoSystem12:
return "ns12";
case RedumpSystem.NamcoSystem246:
return "ns246";
case RedumpSystem.NavisoftNaviken21:
return "navi21";
case RedumpSystem.NinendoGameCube:
return "gc";
case RedumpSystem.NintendoWii:
return "wii";
case RedumpSystem.NintendoWiiU:
return "wiiu";
case RedumpSystem.PalmOS:
return "palm";
case RedumpSystem.Panasonic3DOInteractiveMultiplayer:
return "3do";
case RedumpSystem.PanasonicM2:
return "m2";
case RedumpSystem.PhilipsCDi:
return "cdi";
case RedumpSystem.PhilipsCDiDigitalVideo:
return "cdi-video";
case RedumpSystem.PhotoCD:
return "photo-cd";
case RedumpSystem.PlayStationGameSharkUpdates:
return "psxgs";
case RedumpSystem.SegaChihiro:
return "chihiro";
case RedumpSystem.SegaDreamcast:
return "dc";
case RedumpSystem.SegaLindbergh:
return "lindbergh";
case RedumpSystem.SegaMegaCDSegaCD:
return "mcd";
case RedumpSystem.SegaNaomi:
return "naomi";
case RedumpSystem.SegaNaomi2:
return "naomi2";
case RedumpSystem.SegaRingEdge:
return "sre";
case RedumpSystem.SegaRingEdge2:
return "sre2";
case RedumpSystem.SegaSaturn:
return "ss";
case RedumpSystem.SegaTitanVideo:
return "stv";
case RedumpSystem.SegaTriforce:
return "triforce";
case RedumpSystem.SharpX68000:
return "x86kcd";
case RedumpSystem.SNKNeoGeoCD:
return "ngcd";
case RedumpSystem.SonyPlayStation:
return "psx";
case RedumpSystem.SonyPlayStation2:
return "ps2";
case RedumpSystem.SonyPlayStation3:
return "ps3";
case RedumpSystem.SonyPlayStation4:
return "ps4";
case RedumpSystem.SonyPlayStationPortable:
return "psp";
case RedumpSystem.TABAustriaQuizard:
return "quizard";
case RedumpSystem.TaoiKTV:
return "iktv";
case RedumpSystem.TomyKissSite:
return "ksite";
case RedumpSystem.VideoCD:
return "vcd";
case RedumpSystem.VMLabsNUON:
return "nuon";
case RedumpSystem.VTechVFlashVSmilePro:
return "vflash";
case RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem:
return "gamewave";
default:
return null;
}
}
/// <summary>
/// Get the short string representation of the Region enum values
/// </summary>

View File

@@ -2,11 +2,203 @@
namespace DICUI.Utilities
{
/// <summary>
/// Extensions for MediaType? for easier calling
/// </summary>
public static class MediaTypeExtensions
public static class Extensions
{
#region Redump Information Lists
/// <summary>
/// List of systems that are not publically accessible
/// </summary>
public static readonly RedumpSystem[] BannedSystems = new RedumpSystem[]
{
RedumpSystem.AudioCD,
RedumpSystem.BDVideo,
RedumpSystem.DVDVideo,
RedumpSystem.HasbroVideoNow,
RedumpSystem.HasbroVideoNowColor,
RedumpSystem.HasbroVideoNowJr,
RedumpSystem.HasbroVideoNowXP,
RedumpSystem.KonamiM2,
RedumpSystem.MicrosoftXbox360,
RedumpSystem.MicrosoftXboxOne,
RedumpSystem.NavisoftNaviken21,
RedumpSystem.NintendoWii,
RedumpSystem.NintendoWiiU,
RedumpSystem.PanasonicM2,
RedumpSystem.PhilipsCDiDigitalVideo,
RedumpSystem.SegaRingEdge,
RedumpSystem.SegaRingEdge2,
RedumpSystem.SonyPlayStation3,
RedumpSystem.SonyPlayStation4,
RedumpSystem.VideoCD,
};
/// <summary>
/// List of systems that have a Cues pack
/// </summary>
public static readonly RedumpSystem[] HasCues = new RedumpSystem[]
{
RedumpSystem.AppleMacintosh,
RedumpSystem.AudioCD,
RedumpSystem.BandaiPippin,
RedumpSystem.BandaiPlaydiaQuickInteractiveSystem,
RedumpSystem.CommodoreAmigaCD,
RedumpSystem.CommodoreAmigaCD32,
RedumpSystem.CommodoreAmigaCDTV,
RedumpSystem.FujitsuFMTownsseries,
RedumpSystem.HasbroVideoNow,
RedumpSystem.HasbroVideoNowJr,
RedumpSystem.IBMPCcompatible,
RedumpSystem.IncredibleTechnologiesEagle,
RedumpSystem.KonamieAmusement,
RedumpSystem.KonamiFireBeat,
RedumpSystem.KonamiM2,
RedumpSystem.KonamiSystemGV,
RedumpSystem.MattelHyperScan,
RedumpSystem.MicrosoftXbox,
RedumpSystem.MicrosoftXbox360,
RedumpSystem.NamcoSystem246,
RedumpSystem.NavisoftNaviken21,
RedumpSystem.NECPC88series,
RedumpSystem.NECPC98series,
RedumpSystem.NECPCEngineCDTurboGrafxCD,
RedumpSystem.NECPCFXPCFXGA,
RedumpSystem.PalmOS,
RedumpSystem.Panasonic3DOInteractiveMultiplayer,
RedumpSystem.PanasonicM2,
RedumpSystem.PhilipsCDi,
RedumpSystem.PhilipsCDiDigitalVideo,
RedumpSystem.PhotoCD,
RedumpSystem.PlayStationGameSharkUpdates,
RedumpSystem.SegaChihiro,
RedumpSystem.SegaDreamcast,
RedumpSystem.SegaMegaCDSegaCD,
RedumpSystem.SegaNaomi,
RedumpSystem.SegaNaomi2,
RedumpSystem.SegaSaturn,
RedumpSystem.SegaTriforce,
RedumpSystem.SNKNeoGeoCD,
RedumpSystem.SonyPlayStation,
RedumpSystem.SonyPlayStation2,
RedumpSystem.SonyPlayStation3,
RedumpSystem.TABAustriaQuizard,
RedumpSystem.TomyKissSite,
RedumpSystem.VideoCD,
RedumpSystem.VTechVFlashVSmilePro,
};
/// <summary>
/// List of systems that has a Dat pack
/// </summary>
public static readonly RedumpSystem[] HasDat = new RedumpSystem[]
{
RedumpSystem.MicrosoftXboxBIOS,
RedumpSystem.NintendoGameCubeBIOS,
RedumpSystem.SonyPlayStationBIOS,
RedumpSystem.SonyPlayStation2BIOS,
RedumpSystem.AppleMacintosh,
RedumpSystem.AudioCD,
RedumpSystem.BDVideo,
RedumpSystem.BandaiPippin,
RedumpSystem.BandaiPlaydiaQuickInteractiveSystem,
RedumpSystem.CommodoreAmigaCD,
RedumpSystem.CommodoreAmigaCD32,
RedumpSystem.CommodoreAmigaCDTV,
RedumpSystem.DVDVideo,
RedumpSystem.FujitsuFMTownsseries,
RedumpSystem.HasbroVideoNow,
RedumpSystem.HasbroVideoNowJr,
RedumpSystem.IBMPCcompatible,
RedumpSystem.IncredibleTechnologiesEagle,
RedumpSystem.KonamiFireBeat,
RedumpSystem.KonamiM2,
RedumpSystem.KonamiSystemGV,
RedumpSystem.KonamieAmusement,
RedumpSystem.MattelHyperScan,
RedumpSystem.MicrosoftXbox,
RedumpSystem.MicrosoftXbox360,
RedumpSystem.MicrosoftXboxOne,
RedumpSystem.NamcoSystem246,
RedumpSystem.NavisoftNaviken21,
RedumpSystem.NECPC88series,
RedumpSystem.NECPC98series,
RedumpSystem.NECPCEngineCDTurboGrafxCD,
RedumpSystem.NECPCFXPCFXGA,
RedumpSystem.NinendoGameCube,
RedumpSystem.NintendoWii,
RedumpSystem.NintendoWiiU,
RedumpSystem.PalmOS,
RedumpSystem.Panasonic3DOInteractiveMultiplayer,
RedumpSystem.PanasonicM2,
RedumpSystem.PhilipsCDi,
RedumpSystem.PhilipsCDiDigitalVideo,
RedumpSystem.PhotoCD,
RedumpSystem.PlayStationGameSharkUpdates,
RedumpSystem.SegaChihiro,
RedumpSystem.SegaDreamcast,
RedumpSystem.SegaLindbergh,
RedumpSystem.SegaMegaCDSegaCD,
RedumpSystem.SegaNaomi,
RedumpSystem.SegaNaomi2,
RedumpSystem.SegaRingEdge,
RedumpSystem.SegaRingEdge2,
RedumpSystem.SegaSaturn,
RedumpSystem.SegaTriforce,
RedumpSystem.SNKNeoGeoCD,
RedumpSystem.SonyPlayStation,
RedumpSystem.SonyPlayStation2,
RedumpSystem.SonyPlayStation3,
RedumpSystem.SonyPlayStation4,
RedumpSystem.SonyPlayStationPortable,
RedumpSystem.TABAustriaQuizard,
RedumpSystem.TomyKissSite,
RedumpSystem.VideoCD,
RedumpSystem.VMLabsNUON,
RedumpSystem.VTechVFlashVSmilePro,
RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem,
};
/// <summary>
/// List of systems that has a Decrypted Keys pack
/// </summary>
public static readonly RedumpSystem[] HasDkeys = new RedumpSystem[]
{
RedumpSystem.SonyPlayStation3,
};
/// <summary>
/// List of systems that has a GDI pack
/// </summary>
public static readonly RedumpSystem[] HasGdi = new RedumpSystem[]
{
RedumpSystem.SegaChihiro,
RedumpSystem.SegaDreamcast,
RedumpSystem.SegaNaomi,
RedumpSystem.SegaNaomi2,
RedumpSystem.SegaTriforce,
};
/// <summary>
/// List of systems that has a Keys pack
/// </summary>
public static readonly RedumpSystem[] HasKeys = new RedumpSystem[]
{
RedumpSystem.NintendoWiiU,
RedumpSystem.SonyPlayStation3,
};
/// <summary>
/// List of systems that has an SBI pack
/// </summary>
public static readonly RedumpSystem[] HasSbi = new RedumpSystem[]
{
RedumpSystem.IBMPCcompatible,
RedumpSystem.SonyPlayStation,
};
#endregion
public static bool DoesSupportDriveSpeed(this MediaType? type)
{
switch (type)
@@ -23,13 +215,7 @@ namespace DICUI.Utilities
return false;
}
}
}
/// <summary>
/// Extensions for KnownSystem? for easier calling
/// </summary>
public static class KnownSystemExtensions
{
public static KnownSystemCategory Category(this KnownSystem? system)
{
if (system < KnownSystem.MarkerDiscBasedConsoleEnd)

View File

@@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using DICUI.Data;
using DICUI.Utilities;
namespace DICUI.Web
{
@@ -83,6 +85,49 @@ namespace DICUI.Web
return true;
}
#region Process IDs and Pages
/// <summary>
/// Get the list of the last modified IDs, in order of appearance
/// </summary>
/// <param name="wc">CookieAwareWebClient to hold the login state</param>
/// <param name="pageCount">Number of pages to grab until stopping; -1 means continue until end</param>
/// <returns>A list of IDs in order of last modified</returns>
private List<int> ProcessLastModified(CookieAwareWebClient wc, int pageCount = -1)
{
List<int> ids = new List<int>();
// If we have a -1 page count, set the maximum page limit
if (pageCount == -1)
pageCount = Int32.MaxValue;
// Keep getting last modified pages until there are none left
int pageNumber = 1;
while (pageNumber < pageCount)
{
List<int> pageIds = CheckSingleSitePage(wc, string.Format(lastModifiedUrl, pageNumber++));
ids.AddRange(pageIds);
if (pageIds.Count < 2)
break;
}
return ids;
}
/// <summary>
/// Retrieve premade packs from Redump
/// </summary>
/// <param name="wc">CookieAwareWebClient to hold the login state</param>
private void ProcessPacks(CookieAwareWebClient wc)
{
var cuesPacks = this.DownloadPack(wc, packCuesUrl, Extensions.HasCues, "CUEs");
var datPacks = this.DownloadPack(wc, packDatfileUrl, Extensions.HasDat, "DATs");
var dkeyPacks = this.DownloadPack(wc, packDkeysUrl, Extensions.HasDkeys, "Decrypted KEYS");
var gdiPacks = this.DownloadPack(wc, packGdiUrl, Extensions.HasGdi, "GDIs");
var keysPacks = this.DownloadPack(wc, packKeysUrl, Extensions.HasKeys, "KEYS");
var sbiPacks = this.DownloadPack(wc, packSbiUrl, Extensions.HasSbi, "SBIs");
}
/// <summary>
/// Get the list of IDs that associate with a given string
/// </summary>
@@ -106,6 +151,33 @@ namespace DICUI.Web
return ids;
}
/// <summary>
/// Get the list of IDs associated with the given user
/// </summary>
/// <param name="wc">CookieAwareWebClient to hold the login state</param>
/// <param name="username">Redump username to get the list of IDs for</param>
/// <returns>A list of IDs associated with that user</returns>
private List<int> ProcessUser(CookieAwareWebClient wc, string username)
{
List<int> ids = new List<int>();
// Keep getting user pages until there are none left
int pageNumber = 1;
while (true)
{
List<int> pageIds = CheckSingleSitePage(wc, string.Format(userDumpsUrl, username, pageNumber++));
ids.AddRange(pageIds);
if (pageIds.Count < 2)
break;
}
return ids;
}
#endregion
#region Single item processing
/// <summary>
/// Process a Redump site page as a list of possible IDs or disc page
/// </summary>
@@ -151,6 +223,30 @@ namespace DICUI.Web
return ids;
}
/// <summary>
/// Download a set of packs
/// </summary>
/// <param name="wc">CookieAwareWebClient to access the packs</param>
/// <param name="url">Base URL to download using</param>
/// <param name="systems">List of systems to download packs for</param>
/// <param name="title">Name of the pack that is downloading</param>
private Dictionary<RedumpSystem, byte[]> DownloadPack(CookieAwareWebClient wc, string url, RedumpSystem[] systems, string title)
{
var dict = new Dictionary<RedumpSystem, byte[]>();
Console.WriteLine($"Downloading {title}");
foreach (var system in systems)
{
Console.Write($"\r{system.LongName()}{new string(' ', Console.BufferWidth - system.LongName().Length - 1)}");
dict.Add(system, wc.DownloadData(string.Format(url, system.ShortName())));
}
Console.Write($"\rComplete!{new string(' ', Console.BufferWidth - 10)}");
Console.WriteLine();
return dict;
}
/// <summary>
/// Download an individual site ID page as a string, if possible
/// </summary>
@@ -175,5 +271,7 @@ namespace DICUI.Web
return null;
}
}
#endregion
}
}