Update library, move more things there

This commit is contained in:
Matt Nadareski
2021-08-18 22:13:38 -07:00
parent c8610ee16a
commit 1c525a6d2e
33 changed files with 1814 additions and 2856 deletions

View File

@@ -1,9 +1,11 @@
using System;
using System.IO;
using System.Linq;
using BurnOutSharp;
using MPF.Converters;
using MPF.Data;
using MPF.Utilities;
using RedumpLib.Data;
using RedumpLib.Web;
namespace MPF.Check
@@ -34,7 +36,7 @@ namespace MPF.Check
}
else if (args[0] == "-ls" || args[0] == "--listsystems")
{
ListKnownSystems();
ListSystems();
Console.ReadLine();
return;
}
@@ -54,9 +56,9 @@ namespace MPF.Check
return;
}
// Check the KnownSystem
var knownSystem = EnumConverter.ToKnownSystem(args[1].Trim('"'));
if (knownSystem == KnownSystem.NONE)
// Check the RedumpSystem
var knownSystem = Extensions.ToRedumpSystem(args[1].Trim('"'));
if (knownSystem == null)
{
DisplayHelp($"{args[1]} is not a recognized system");
return;
@@ -244,17 +246,19 @@ namespace MPF.Check
}
/// <summary>
/// List all known systems with their short usable names
/// List all systems with their short usable names
/// </summary>
private static void ListKnownSystems()
private static void ListSystems()
{
Console.WriteLine("Supported Known Systems:");
foreach (var val in Enum.GetValues(typeof(KnownSystem)))
{
if (((KnownSystem)val) == KnownSystem.NONE)
continue;
var knownSystems = Enum.GetValues(typeof(RedumpSystem))
.OfType<RedumpSystem?>()
.Where(s => s != null && !s.IsMarker() && s.GetCategory() != SystemCategory.NONE)
.OrderBy(s => s.LongName() ?? string.Empty);
Console.WriteLine($"{((KnownSystem?)val).ShortName()} - {((KnownSystem?)val).LongName()}");
foreach (var val in knownSystems)
{
Console.WriteLine($"{val.ShortName()} - {val.LongName()}");
}
}

View File

@@ -128,7 +128,7 @@ namespace MPF.Aaru
public Parameters(string parameters) : base(parameters) { }
/// <inheritdoc/>
public Parameters(KnownSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options)
public Parameters(RedumpSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options)
: base(system, type, driveLetter, filename, driveSpeed, options)
{
}
@@ -263,12 +263,12 @@ namespace MPF.Aaru
// TODO: Can we get PS1 EDC status?
// TODO: Can we get PS1 LibCrypt status?
case KnownSystem.DVDAudio:
case KnownSystem.DVDVideo:
case RedumpSystem.DVDAudio:
case RedumpSystem.DVDVideo:
info.CopyProtection.Protection = GetDVDProtection(sidecar) ?? "";
break;
case KnownSystem.KonamiPython2:
case RedumpSystem.KonamiPython2:
if (GetPlayStationExecutableInfo(drive?.Letter, out string pythonTwoSerial, out Region? pythonTwoRegion, out string pythonTwoDate))
{
info.CommonDiscInfo.Comments += $"Internal Disc Serial: {pythonTwoSerial}\n";
@@ -279,7 +279,7 @@ namespace MPF.Aaru
info.VersionAndEditions.Version = GetPlayStation2Version(drive?.Letter) ?? "";
break;
case KnownSystem.MicrosoftXBOX:
case RedumpSystem.MicrosoftXbox:
if (GetXgdAuxInfo(sidecar, out string dmihash, out string pfihash, out string sshash, out string ss, out string ssver))
{
info.CommonDiscInfo.Comments += $"{Template.XBOXDMIHash}: {dmihash ?? ""}\n" +
@@ -298,7 +298,7 @@ namespace MPF.Aaru
break;
case KnownSystem.MicrosoftXBOX360:
case RedumpSystem.MicrosoftXbox360:
if (GetXgdAuxInfo(sidecar, out string dmi360hash, out string pfi360hash, out string ss360hash, out string ss360, out string ssver360))
{
info.CommonDiscInfo.Comments += $"{Template.XBOXDMIHash}: {dmi360hash ?? ""}\n" +
@@ -316,7 +316,7 @@ namespace MPF.Aaru
}
break;
case KnownSystem.SonyPlayStation:
case RedumpSystem.SonyPlayStation:
if (GetPlayStationExecutableInfo(drive?.Letter, out string playstationSerial, out Region? playstationRegion, out string playstationDate))
{
info.CommonDiscInfo.Comments += $"Internal Disc Serial: {playstationSerial}\n";
@@ -327,7 +327,7 @@ namespace MPF.Aaru
info.CopyProtection.AntiModchip = GetPlayStationAntiModchipDetected(drive?.Letter) ? YesNo.Yes : YesNo.No;
break;
case KnownSystem.SonyPlayStation2:
case RedumpSystem.SonyPlayStation2:
if (GetPlayStationExecutableInfo(drive?.Letter, out string playstationTwoSerial, out Region? playstationTwoRegion, out string playstationTwoDate))
{
info.CommonDiscInfo.Comments += $"Internal Disc Serial: {playstationTwoSerial}\n";
@@ -338,11 +338,11 @@ namespace MPF.Aaru
info.VersionAndEditions.Version = GetPlayStation2Version(drive?.Letter) ?? "";
break;
case KnownSystem.SonyPlayStation4:
case RedumpSystem.SonyPlayStation4:
info.VersionAndEditions.Version = GetPlayStation4Version(drive?.Letter) ?? "";
break;
case KnownSystem.SonyPlayStation5:
case RedumpSystem.SonyPlayStation5:
info.VersionAndEditions.Version = GetPlayStation5Version(drive?.Letter) ?? "";
break;
}

View File

@@ -23,7 +23,7 @@ namespace MPF.CleanRip
public Parameters(string parameters) : base(parameters) { }
/// <inheritdoc/>
public Parameters(KnownSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options)
public Parameters(RedumpSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options)
: base(system, type, driveLetter, filename, driveSpeed, options)
{
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,28 +0,0 @@
using System;
using MPF.Data;
using MPF.Utilities;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using RedumpLib.Data;
namespace MPF.Converters
{
/// <summary>
/// Serialize KnownSystem enum values
/// </summary>
public class KnownSystemConverter : JsonConverter<KnownSystem?>
{
public override bool CanRead { get { return false; } }
public override KnownSystem? ReadJson(JsonReader reader, Type objectType, KnownSystem? existingValue, bool hasExistingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override void WriteJson(JsonWriter writer, KnownSystem? value, JsonSerializer serializer)
{
JToken t = JToken.FromObject(value.ToRedumpSystem().ShortName() ?? value.ShortName() ?? string.Empty);
t.WriteTo(writer);
}
}
}

View File

@@ -60,7 +60,7 @@ namespace MPF.DD
public Parameters(string parameters) : base(parameters) { }
/// <inheritdoc/>
public Parameters(KnownSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options)
public Parameters(RedumpSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options)
: base(system, type, driveLetter, filename, driveSpeed, options)
{
}
@@ -87,7 +87,7 @@ namespace MPF.DD
switch (this.System)
{
case KnownSystem.KonamiPython2:
case RedumpSystem.KonamiPython2:
if (GetPlayStationExecutableInfo(drive?.Letter, out string pythonTwoSerial, out Region? pythonTwoRegion, out string pythonTwoDate))
{
info.CommonDiscInfo.Comments += $"Internal Disc Serial: {pythonTwoSerial}\n";
@@ -98,7 +98,7 @@ namespace MPF.DD
info.VersionAndEditions.Version = GetPlayStation2Version(drive?.Letter) ?? "";
break;
case KnownSystem.SonyPlayStation:
case RedumpSystem.SonyPlayStation:
if (GetPlayStationExecutableInfo(drive?.Letter, out string playstationSerial, out Region? playstationRegion, out string playstationDate))
{
info.CommonDiscInfo.Comments += $"Internal Disc Serial: {playstationSerial}\n";
@@ -109,7 +109,7 @@ namespace MPF.DD
info.CopyProtection.AntiModchip = GetPlayStationAntiModchipDetected(drive?.Letter) ? YesNo.Yes : YesNo.No;
break;
case KnownSystem.SonyPlayStation2:
case RedumpSystem.SonyPlayStation2:
if (GetPlayStationExecutableInfo(drive?.Letter, out string playstationTwoSerial, out Region? playstationTwoRegion, out string playstationTwoDate))
{
info.CommonDiscInfo.Comments += $"Internal Disc Serial: {playstationTwoSerial}\n";
@@ -120,11 +120,11 @@ namespace MPF.DD
info.VersionAndEditions.Version = GetPlayStation2Version(drive?.Letter) ?? "";
break;
case KnownSystem.SonyPlayStation4:
case RedumpSystem.SonyPlayStation4:
info.VersionAndEditions.Version = GetPlayStation4Version(drive?.Letter) ?? "";
break;
case KnownSystem.SonyPlayStation5:
case RedumpSystem.SonyPlayStation5:
info.VersionAndEditions.Version = GetPlayStation5Version(drive?.Letter) ?? "";
break;
}

View File

@@ -104,7 +104,7 @@ namespace MPF.Data
/// <summary>
/// Currently represented system
/// </summary>
public KnownSystem? System { get; set; }
public RedumpSystem? System { get; set; }
/// <summary>
/// Currently represented media type
@@ -127,13 +127,13 @@ namespace MPF.Data
/// <summary>
/// Generate parameters based on a set of known inputs
/// </summary>
/// <param name="system">KnownSystem value to use</param>
/// <param name="system">RedumpSystem value to use</param>
/// <param name="type">MediaType value to use</param>
/// <param name="driveLetter">Drive letter to use</param>
/// <param name="filename">Filename to use</param>
/// <param name="driveSpeed">Drive speed to use</param>
/// <param name="options">Options object containing all settings that may be used for setting parameters</param>
public BaseParameters(KnownSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options)
public BaseParameters(RedumpSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options)
{
this.System = system;
this.Type = type;

View File

@@ -13,6 +13,7 @@ using MPF.Converters;
using MPF.Utilities;
using Newtonsoft.Json;
using RedumpLib.Attributes;
using RedumpLib.Converters;
using RedumpLib.Data;
using RedumpLib.Web;
@@ -47,7 +48,7 @@ namespace MPF.Data
/// <summary>
/// Currently selected system
/// </summary>
public KnownSystem? System { get; private set; }
public RedumpSystem? System { get; private set; }
/// <summary>
/// Currently selected media type
@@ -111,7 +112,7 @@ namespace MPF.Data
string outputDirectory,
string outputFilename,
Drive drive,
KnownSystem? system,
RedumpSystem? system,
MediaType? type,
string parameters)
{
@@ -202,7 +203,7 @@ namespace MPF.Data
public string GetFullParameters(int? driveSpeed)
{
// Populate with the correct params for inputs (if we're not on the default option)
if (System != KnownSystem.NONE && Type != MediaType.NONE)
if (System != null && Type != MediaType.NONE)
{
// If drive letter is invalid, skip this
if (Drive == null)
@@ -589,7 +590,7 @@ namespace MPF.Data
CommonDiscInfo = new CommonDiscInfoSection()
{
System = this.System,
Media = this.Type,
Media = this.Type.ToDiscType(),
Title = (Options.AddPlaceholders ? Template.RequiredValue : ""),
ForeignTitleNonLatin = (Options.AddPlaceholders ? Template.OptionalValue : ""),
DiscNumberLetter = (Options.AddPlaceholders ? Template.OptionalValue : ""),
@@ -793,19 +794,19 @@ namespace MPF.Data
break;
}
// Extract info based specifically on KnownSystem
// Extract info based specifically on RedumpSystem
switch (System)
{
case KnownSystem.AcornArchimedes:
case RedumpSystem.AcornArchimedes:
info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.UK;
break;
case KnownSystem.AppleMacintosh:
case KnownSystem.EnhancedCD:
case KnownSystem.IBMPCCompatible:
case KnownSystem.PalmOS:
case KnownSystem.PocketPC:
case KnownSystem.RainbowDisc:
case RedumpSystem.AppleMacintosh:
case RedumpSystem.EnhancedCD:
case RedumpSystem.IBMPCcompatible:
case RedumpSystem.PalmOS:
case RedumpSystem.PocketPC:
case RedumpSystem.RainbowDisc:
if (string.IsNullOrWhiteSpace(info.CommonDiscInfo.Comments))
info.CommonDiscInfo.Comments += $"[T:ISBN] {(Options.AddPlaceholders ? Template.OptionalValue : "")}";
@@ -815,141 +816,141 @@ namespace MPF.Data
break;
case KnownSystem.AudioCD:
case KnownSystem.DVDAudio:
case KnownSystem.SuperAudioCD:
case RedumpSystem.AudioCD:
case RedumpSystem.DVDAudio:
case RedumpSystem.SuperAudioCD:
info.CommonDiscInfo.Category = info.CommonDiscInfo.Category ?? DiscCategory.Audio;
break;
case KnownSystem.BandaiPlaydiaQuickInteractiveSystem:
case RedumpSystem.BandaiPlaydiaQuickInteractiveSystem:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan;
break;
case KnownSystem.BDVideo:
case RedumpSystem.BDVideo:
info.CommonDiscInfo.Category = info.CommonDiscInfo.Category ?? DiscCategory.BonusDiscs;
info.CopyProtection.Protection = (Options.AddPlaceholders ? Template.RequiredIfExistsValue : "");
break;
case KnownSystem.CommodoreAmiga:
case RedumpSystem.CommodoreAmigaCD:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.CommodoreAmigaCD32:
case RedumpSystem.CommodoreAmigaCD32:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Europe;
break;
case KnownSystem.CommodoreAmigaCDTV:
case RedumpSystem.CommodoreAmigaCDTV:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Europe;
break;
case KnownSystem.DVDVideo:
case RedumpSystem.DVDVideo:
info.CommonDiscInfo.Category = info.CommonDiscInfo.Category ?? DiscCategory.BonusDiscs;
break;
case KnownSystem.FujitsuFMTowns:
case RedumpSystem.FujitsuFMTownsseries:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan;
break;
case KnownSystem.FujitsuFMTownsMarty:
case RedumpSystem.FujitsuFMTownsMarty:
info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan;
break;
case KnownSystem.IncredibleTechnologiesEagle:
case RedumpSystem.IncredibleTechnologiesEagle:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.KonamieAmusement:
case RedumpSystem.KonamieAmusement:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.KonamiFirebeat:
case RedumpSystem.KonamiFireBeat:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.KonamiGVSystem:
case RedumpSystem.KonamiSystemGV:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.KonamiSystem573:
case RedumpSystem.KonamiSystem573:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.KonamiTwinkle:
case RedumpSystem.KonamiTwinkle:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.MattelHyperscan:
case RedumpSystem.MattelHyperScan:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.NamcoSegaNintendoTriforce:
case RedumpSystem.NamcoSegaNintendoTriforce:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.NavisoftNaviken21:
case RedumpSystem.NavisoftNaviken21:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan;
break;
case KnownSystem.NECPC88:
case RedumpSystem.NECPC88series:
info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan;
break;
case KnownSystem.NECPC98:
case RedumpSystem.NECPC98series:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan;
break;
case KnownSystem.NECPCFX:
case RedumpSystem.NECPCFXPCFXGA:
info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan;
break;
case KnownSystem.SegaChihiro:
case RedumpSystem.SegaChihiro:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.SegaDreamcast:
case RedumpSystem.SegaDreamcast:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.SegaNaomi:
case RedumpSystem.SegaNaomi:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.SegaNaomi2:
case RedumpSystem.SegaNaomi2:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.SegaTitanVideo:
case RedumpSystem.SegaTitanVideo:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.SharpX68000:
case RedumpSystem.SharpX68000:
info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan;
break;
case KnownSystem.SNKNeoGeoCD:
case RedumpSystem.SNKNeoGeoCD:
info.CommonDiscInfo.EXEDateBuildDate = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.SonyPlayStation2:
case RedumpSystem.SonyPlayStation2:
info.CommonDiscInfo.LanguageSelection = new LanguageSelection?[] { LanguageSelection.BiosSettings, LanguageSelection.LanguageSelector, LanguageSelection.OptionsMenu };
break;
case KnownSystem.SonyPlayStation3:
case RedumpSystem.SonyPlayStation3:
info.Extras.DiscKey = (Options.AddPlaceholders ? Template.RequiredValue : "");
info.Extras.DiscID = (Options.AddPlaceholders ? Template.RequiredValue : "");
break;
case KnownSystem.TomyKissSite:
case RedumpSystem.TomyKissSite:
info.CommonDiscInfo.Region = info.CommonDiscInfo.Region ?? Region.Japan;
break;
case KnownSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem:
case RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem:
info.CopyProtection.Protection = (Options.AddPlaceholders ? Template.RequiredIfExistsValue : "");
break;
}
@@ -979,10 +980,9 @@ namespace MPF.Data
{
// Sony-printed discs have layers in the opposite order
var system = info.CommonDiscInfo.System;
bool reverseOrder = (system == KnownSystem.SonyPlayStation2
|| system == KnownSystem.SonyPlayStation3
|| system == KnownSystem.SonyPlayStation4
|| system == KnownSystem.SonyPlayStation5);
bool reverseOrder = (system == RedumpSystem.SonyPlayStation2
|| system == RedumpSystem.SonyPlayStation3
|| system == RedumpSystem.SonyPlayStation4);
// Common Disc Info section
List<string> output = new List<string> { "Common Disc Info:" };
@@ -992,7 +992,7 @@ namespace MPF.Data
AddIfExists(output, Template.DiscTitleField, info.CommonDiscInfo.DiscTitle, 1);
AddIfExists(output, Template.SystemField, info.CommonDiscInfo.System.LongName(), 1);
AddIfExists(output, Template.MediaTypeField, GetFixedMediaType(
info.CommonDiscInfo.Media,
info.CommonDiscInfo.Media.ToMediaType(),
info.SizeAndChecksums.Size,
info.SizeAndChecksums.Layerbreak,
info.SizeAndChecksums.Layerbreak2,
@@ -1090,7 +1090,7 @@ namespace MPF.Data
AddIfExists(output, Template.EditionField, info.VersionAndEditions.OtherEditions, 1);
// EDC section
if (info.CommonDiscInfo.System == KnownSystem.SonyPlayStation)
if (info.CommonDiscInfo.System == RedumpSystem.SonyPlayStation)
{
output.Add(""); output.Add("EDC:");
AddIfExists(output, Template.PlayStationEDCField, info.EDC.EDC.LongName(), 1);
@@ -1120,7 +1120,7 @@ namespace MPF.Data
|| info.CopyProtection.LibCrypt != YesNo.NULL)
{
output.Add(""); output.Add("Copy Protection:");
if (info.CommonDiscInfo.System == KnownSystem.SonyPlayStation)
if (info.CommonDiscInfo.System == RedumpSystem.SonyPlayStation)
{
AddIfExists(output, Template.PlayStationAntiModchipField, info.CopyProtection.AntiModchip.LongName(), 1);
AddIfExists(output, Template.PlayStationLibCryptField, info.CopyProtection.LibCrypt.LongName(), 1);

View File

@@ -49,231 +49,6 @@ namespace MPF.Data
UmdImageCreator,
}
/// <summary>
/// Known systems
/// </summary>
public enum KnownSystem
{
NONE = 0,
#region Disc-Based Consoles
AtariJaguarCD,
BandaiPlaydiaQuickInteractiveSystem,
BandaiApplePippin,
CommodoreAmigaCD32,
CommodoreAmigaCDTV,
EnvizionsEVOSmartConsole,
FujitsuFMTownsMarty,
HasbroVideoNow,
HasbroVideoNowColor,
HasbroVideoNowJr,
HasbroVideoNowXP,
MattelFisherPriceiXL,
MattelHyperscan,
MicrosoftXBOX,
MicrosoftXBOX360,
MicrosoftXBOXOne,
MicrosoftXboxSeriesXS,
NECPCEngineTurboGrafxCD,
NECPCFX,
NintendoGameCube,
NintendoSonySuperNESCDROMSystem,
NintendoWii,
NintendoWiiU,
Panasonic3DOInteractiveMultiplayer, // The 3DO Company 3DO Interactive Multiplayer
PhilipsCDi,
PioneerLaserActive,
SegaCDMegaCD,
SegaDreamcast,
SegaSaturn,
SNKNeoGeoCD,
SonyPlayStation,
SonyPlayStation2,
SonyPlayStation3,
SonyPlayStation4,
SonyPlayStation5,
SonyPlayStationPortable,
TandyMemorexVisualInformationSystem,
VMLabsNuon,
VTechVFlashVSmilePro,
ZAPiTGamesGameWaveFamilyEntertainmentSystem,
MarkerDiscBasedConsoleEnd,
#endregion
#region Cartridge-Based and Other Consoles
/*
AmstradGX4000,
APFMicrocomputerSystem,
Atari2600VCS,
Atari5200,
Atari7800,
AtariJaguar,
AtariXEVideoGameSystem,
Audiosonic1292AdvancedProgrammableVideoSystem,
BallyAstrocade,
BitCorporationDina,
CasioLoopy,
CasioPV1000,
Commodore64GamesSystem,
DaewooElectronicsZemmix,
EmersonArcadia2001,
EpochCassetteVision,
EpochSuperCassetteVision,
FairchildChannelF,
FuntechSuperACan,
GeneralConsumerElectricVectrex,
HeberBBCBridgeCompanion,
IntertonVC4000,
JungleTacVii,
LeapFrogClickStart,
LJNVideoArt,
MagnavoxOdyssey2,
MattelIntellivision,
NECPCEngineTurboGrafx16,
NichibutsuMyVision,
Nintendo64,
Nintendo64DD,
NintendoFamilyComputerNintendoEntertainmentSystem,
NintendoFamilyComputerDiskSystem,
NintendoSuperFamicomSuperNintendoEntertainmentSystem,
NintendoSwitch,
PhilipsVideopacPlusG7400,
RCAStudioII,
Sega32X,
SegaMarkIIIMasterSystem,
SegaMegaDriveGenesis,
SegaSG1000,
SNKNeoGeo,
SSDCOMPANYLIMITEDXaviXPORT,
ViewMasterInteractiveVision,
VTechCreatiVision,
VTechVSmile,
VTechSocrates,
WorldsOfWonderActionMax,
MarkerOtherConsoleEnd,
*/
#endregion
#region Computers
AcornArchimedes,
AppleMacintosh,
CommodoreAmiga,
FujitsuFMTowns,
IBMPCCompatible,
NECPC88,
NECPC98,
SharpX68000,
MarkerComputerEnd,
#endregion
#region Arcade
AmigaCUBOCD32,
AmericanLaserGames3DO,
Atari3DO,
Atronic,
AUSCOMSystem1,
BallyGameMagic,
CapcomCPSystemIII,
funworldPhotoPlay,
GlobalVRVarious,
GlobalVRVortek,
GlobalVRVortekV3,
ICEPCHardware,
IncredibleTechnologiesEagle,
IncredibleTechnologiesVarious,
KonamieAmusement,
KonamiFirebeat,
KonamiGVSystem,
KonamiM2,
KonamiPython,
KonamiPython2,
KonamiSystem573,
KonamiTwinkle,
KonamiVarious,
MeritIndustriesBoardwalk,
MeritIndustriesMegaTouchForce,
MeritIndustriesMegaTouchION,
MeritIndustriesMegaTouchMaxx,
MeritIndustriesMegaTouchXL,
NamcoCapcomSystem256,
NamcoCapcomTaitoSystem246,
NamcoSegaNintendoTriforce,
NamcoSystem12,
NamcoSystem357,
NewJatreCDi,
NichibutsuHighRateSystem,
NichibutsuSuperCD,
NichibutsuXRateSystem,
PanasonicM2,
PhotoPlayVarious,
RawThrillsVarious,
SegaChihiro,
SegaEuropaR,
SegaLindbergh,
SegaNaomi,
SegaNaomi2,
SegaNu,
SegaRingEdge,
SegaRingEdge2,
SegaRingWide,
SegaTitanVideo,
SegaSystem32,
SeibuCATSSystem,
TABAustriaQuizard,
TsunamiTsuMoMultiGameMotionSystem,
MarkerArcadeEnd,
#endregion
#region Other
AudioCD,
BDVideo,
DVDAudio,
DVDVideo,
EnhancedCD,
HDDVDVideo,
NavisoftNaviken21,
PalmOS,
PhotoCD,
PlayStationGameSharkUpdates,
PocketPC,
RainbowDisc,
SegaPrologue21,
SuperAudioCD,
TaoiKTV,
TomyKissSite,
VideoCD,
MarkerOtherEnd,
#endregion
}
/// <summary>
/// Known system category
/// </summary>
public enum KnownSystemCategory
{
DiscBasedConsole = 0,
OtherConsole,
Computer,
Arcade,
Other,
Custom
};
/// <summary>
/// Known media types
/// </summary>
@@ -407,16 +182,6 @@ namespace MPF.Data
TapeDSTLarge = 66,
}
/// <summary>
/// Generic yes/no values for Redump
/// </summary>
public enum YesNo
{
NULL = 0,
No = 1,
Yes = 2,
}
#region Win32_CDROMDrive
// https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-cdromdrive

View File

@@ -3,6 +3,7 @@ using System.Collections;
using System.Collections.Generic;
using MPF.Converters;
using MPF.Utilities;
using RedumpLib.Data;
namespace MPF.Data
{
@@ -81,13 +82,13 @@ namespace MPF.Data
/// <summary>
/// Default system if none can be detected
/// </summary>
public KnownSystem DefaultSystem
public RedumpSystem? DefaultSystem
{
get
{
string valueString = GetStringSetting(_settings, "DefaultSystem", KnownSystem.NONE.ToString());
var valueEnum = EnumConverter.ToKnownSystem(valueString);
return valueEnum ?? KnownSystem.NONE;
string valueString = GetStringSetting(_settings, "DefaultSystem", null);
var valueEnum = Extensions.ToRedumpSystem(valueString);
return valueEnum;
}
set
{

View File

@@ -1,4 +1,5 @@
using MPF.Data;
using RedumpLib.Data;
namespace MPF.DiscImageCreator
{
@@ -10,33 +11,33 @@ namespace MPF.DiscImageCreator
/// Get the most common known system for a given MediaType
/// </summary>
/// <param name="baseCommand">Command value to check</param>
/// <returns>KnownSystem if possible, null on error</returns>
public static KnownSystem? ToKnownSystem(string baseCommand)
/// <returns>RedumpSystem if possible, null on error</returns>
public static RedumpSystem? ToRedumpSystem(string baseCommand)
{
switch (baseCommand)
{
case CommandStrings.Audio:
return KnownSystem.AudioCD;
return RedumpSystem.AudioCD;
case CommandStrings.CompactDisc:
case CommandStrings.Data:
case CommandStrings.DigitalVideoDisc:
case CommandStrings.Disk:
case CommandStrings.Floppy:
case CommandStrings.Tape:
return KnownSystem.IBMPCCompatible;
return RedumpSystem.IBMPCcompatible;
case CommandStrings.GDROM:
case CommandStrings.Swap:
return KnownSystem.SegaDreamcast;
return RedumpSystem.SegaDreamcast;
case CommandStrings.BluRay:
return KnownSystem.SonyPlayStation3;
return RedumpSystem.SonyPlayStation3;
case CommandStrings.SACD:
return KnownSystem.SuperAudioCD;
return RedumpSystem.SuperAudioCD;
case CommandStrings.XBOX:
case CommandStrings.XBOXSwap:
return KnownSystem.MicrosoftXBOX;
return RedumpSystem.MicrosoftXbox;
case CommandStrings.XGD2Swap:
case CommandStrings.XGD3Swap:
return KnownSystem.MicrosoftXBOX360;
return RedumpSystem.MicrosoftXbox360;
default:
return null;
}

View File

@@ -160,7 +160,7 @@ namespace MPF.DiscImageCreator
public Parameters(string parameters) : base(parameters) { }
/// <inheritdoc/>
public Parameters(KnownSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options)
public Parameters(RedumpSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options)
: base(system, type, driveLetter, filename, driveSpeed, options)
{
}
@@ -436,13 +436,13 @@ namespace MPF.DiscImageCreator
break;
}
// Extract info based specifically on KnownSystem
// Extract info based specifically on RedumpSystem
switch (this.System)
{
case KnownSystem.AppleMacintosh:
case KnownSystem.EnhancedCD:
case KnownSystem.IBMPCCompatible:
case KnownSystem.RainbowDisc:
case RedumpSystem.AppleMacintosh:
case RedumpSystem.EnhancedCD:
case RedumpSystem.IBMPCcompatible:
case RedumpSystem.RainbowDisc:
if (File.Exists(basePath + "_subIntention.txt"))
{
FileInfo fi = new FileInfo(basePath + "_subIntention.txt");
@@ -452,12 +452,12 @@ namespace MPF.DiscImageCreator
break;
case KnownSystem.DVDAudio:
case KnownSystem.DVDVideo:
case RedumpSystem.DVDAudio:
case RedumpSystem.DVDVideo:
info.CopyProtection.Protection = GetDVDProtection(basePath + "_CSSKey.txt", basePath + "_disc.txt") ?? "";
break;
case KnownSystem.KonamiPython2:
case RedumpSystem.KonamiPython2:
if (GetPlayStationExecutableInfo(drive?.Letter, out string pythonTwoSerial, out Region? pythonTwoRegion, out string pythonTwoDate))
{
info.CommonDiscInfo.Comments += $"Internal Disc Serial: {pythonTwoSerial}\n";
@@ -468,7 +468,7 @@ namespace MPF.DiscImageCreator
info.VersionAndEditions.Version = GetPlayStation2Version(drive?.Letter) ?? "";
break;
case KnownSystem.MicrosoftXBOX:
case RedumpSystem.MicrosoftXbox:
if (GetXgdAuxInfo(basePath + "_disc.txt", out string dmihash, out string pfihash, out string sshash, out string ss, out string ssver))
{
info.CommonDiscInfo.Comments += $"{Template.XBOXDMIHash}: {dmihash ?? ""}\n" +
@@ -487,7 +487,7 @@ namespace MPF.DiscImageCreator
break;
case KnownSystem.MicrosoftXBOX360:
case RedumpSystem.MicrosoftXbox360:
if (GetXgdAuxInfo(basePath + "_disc.txt", out string dmi360hash, out string pfi360hash, out string ss360hash, out string ss360, out string ssver360))
{
info.CommonDiscInfo.Comments += $"{Template.XBOXDMIHash}: {dmi360hash ?? ""}\n" +
@@ -505,7 +505,7 @@ namespace MPF.DiscImageCreator
}
break;
case KnownSystem.NamcoSegaNintendoTriforce:
case RedumpSystem.NamcoSegaNintendoTriforce:
if (this.Type == MediaType.CDROM)
{
info.Extras.Header = GetSegaHeader(basePath + "_mainInfo.txt") ?? "";
@@ -524,7 +524,7 @@ namespace MPF.DiscImageCreator
break;
case KnownSystem.SegaCDMegaCD:
case RedumpSystem.SegaMegaCDSegaCD:
info.Extras.Header = GetSegaHeader(basePath + "_mainInfo.txt") ?? "";
// Take only the last 16 lines for Sega CD
@@ -539,7 +539,7 @@ namespace MPF.DiscImageCreator
break;
case KnownSystem.SegaChihiro:
case RedumpSystem.SegaChihiro:
if (this.Type == MediaType.CDROM)
{
info.Extras.Header = GetSegaHeader(basePath + "_mainInfo.txt") ?? "";
@@ -558,7 +558,7 @@ namespace MPF.DiscImageCreator
break;
case KnownSystem.SegaDreamcast:
case RedumpSystem.SegaDreamcast:
if (this.Type == MediaType.CDROM)
{
info.Extras.Header = GetSegaHeader(basePath + "_mainInfo.txt") ?? "";
@@ -577,7 +577,7 @@ namespace MPF.DiscImageCreator
break;
case KnownSystem.SegaNaomi:
case RedumpSystem.SegaNaomi:
if (this.Type == MediaType.CDROM)
{
info.Extras.Header = GetSegaHeader(basePath + "_mainInfo.txt") ?? "";
@@ -596,7 +596,7 @@ namespace MPF.DiscImageCreator
break;
case KnownSystem.SegaNaomi2:
case RedumpSystem.SegaNaomi2:
if (this.Type == MediaType.CDROM)
{
info.Extras.Header = GetSegaHeader(basePath + "_mainInfo.txt") ?? "";
@@ -615,7 +615,7 @@ namespace MPF.DiscImageCreator
break;
case KnownSystem.SegaSaturn:
case RedumpSystem.SegaSaturn:
info.Extras.Header = GetSegaHeader(basePath + "_mainInfo.txt") ?? "";
// Take only the first 16 lines for Saturn
@@ -631,7 +631,7 @@ namespace MPF.DiscImageCreator
break;
case KnownSystem.SonyPlayStation:
case RedumpSystem.SonyPlayStation:
if (GetPlayStationExecutableInfo(drive?.Letter, out string playstationSerial, out Region? playstationRegion, out string playstationDate))
{
info.CommonDiscInfo.Comments += $"Internal Serial: {playstationSerial ?? ""}\n";
@@ -688,7 +688,7 @@ namespace MPF.DiscImageCreator
break;
case KnownSystem.SonyPlayStation2:
case RedumpSystem.SonyPlayStation2:
if (GetPlayStationExecutableInfo(drive?.Letter, out string playstationTwoSerial, out Region? playstationTwoRegion, out string playstationTwoDate))
{
info.CommonDiscInfo.Comments += $"Internal Disc Serial: {playstationTwoSerial}\n";
@@ -699,11 +699,11 @@ namespace MPF.DiscImageCreator
info.VersionAndEditions.Version = GetPlayStation2Version(drive?.Letter) ?? "";
break;
case KnownSystem.SonyPlayStation4:
case RedumpSystem.SonyPlayStation4:
info.VersionAndEditions.Version = GetPlayStation4Version(drive?.Letter) ?? "";
break;
case KnownSystem.SonyPlayStation5:
case RedumpSystem.SonyPlayStation5:
info.VersionAndEditions.Version = GetPlayStation5Version(drive?.Letter) ?? "";
break;
}
@@ -1645,8 +1645,8 @@ namespace MPF.DiscImageCreator
switch (this.System)
{
case KnownSystem.AppleMacintosh:
case KnownSystem.IBMPCCompatible:
case RedumpSystem.AppleMacintosh:
case RedumpSystem.IBMPCcompatible:
this[FlagStrings.NoFixSubQSecuROM] = true;
this[FlagStrings.ScanFileProtect] = true;
this[FlagStrings.ScanSectorProtect] = options.DICParanoidMode;
@@ -1655,17 +1655,17 @@ namespace MPF.DiscImageCreator
SubchannelReadLevelValue = 2;
break;
case KnownSystem.AtariJaguarCD:
case RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem:
this[FlagStrings.AtariJaguar] = true;
break;
case KnownSystem.HasbroVideoNow:
case KnownSystem.HasbroVideoNowColor:
case KnownSystem.HasbroVideoNowJr:
case KnownSystem.HasbroVideoNowXP:
case RedumpSystem.HasbroVideoNow:
case RedumpSystem.HasbroVideoNowColor:
case RedumpSystem.HasbroVideoNowJr:
case RedumpSystem.HasbroVideoNowXP:
this[FlagStrings.AddOffset] = true;
this.AddOffsetValue = 0; // Value needed for first run and placeholder after
break;
case KnownSystem.SonyPlayStation:
case RedumpSystem.SonyPlayStation:
this[FlagStrings.ScanAntiMod] = true;
this[FlagStrings.NoFixSubQLibCrypt] = true;
break;
@@ -2332,9 +2332,9 @@ namespace MPF.DiscImageCreator
/// <summary>
/// Set the DIC command to be used for a given system and media type
/// </summary>
/// <param name="system">KnownSystem value to check</param>
/// <param name="system">RedumpSystem value to check</param>
/// <param name="type">MediaType value to check</param>
private void SetBaseCommand(KnownSystem? system, MediaType? type)
private void SetBaseCommand(RedumpSystem? system, MediaType? type)
{
// If we have an invalid combination, we should BaseCommand = null
if (!Validators.GetValidMediaTypes(system).Contains(type))
@@ -2346,14 +2346,14 @@ namespace MPF.DiscImageCreator
switch (type)
{
case MediaType.CDROM:
if (system == KnownSystem.SuperAudioCD)
if (system == RedumpSystem.SuperAudioCD)
BaseCommand = CommandStrings.SACD;
else
BaseCommand = CommandStrings.CompactDisc;
return;
case MediaType.DVD:
if (system == KnownSystem.MicrosoftXBOX
|| system == KnownSystem.MicrosoftXBOX360)
if (system == RedumpSystem.MicrosoftXbox
|| system == RedumpSystem.MicrosoftXbox360)
{
BaseCommand = CommandStrings.XBOX;
return;

View File

@@ -23,7 +23,7 @@ namespace MPF.UmdImageCreator
public Parameters(string parameters) : base(parameters) { }
/// <inheritdoc/>
public Parameters(KnownSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options)
public Parameters(RedumpSystem? system, MediaType? type, char driveLetter, string filename, int? driveSpeed, Options options)
: base(system, type, driveLetter, filename, driveSpeed, options)
{
}

View File

@@ -1,32 +1,10 @@
using MPF.Data;
using RedumpLib.Data;
namespace MPF.Utilities
{
public static class EnumExtensions
{
/// <summary>
/// Determine the category based on the system
/// </summary>
/// <param name="system">KnownSystem value to check</param>
/// <returns>KnownSystemCategory related to the system</returns>
public static KnownSystemCategory Category(this KnownSystem? system)
{
if (system < KnownSystem.MarkerDiscBasedConsoleEnd)
return KnownSystemCategory.DiscBasedConsole;
/*
else if (system < KnownSystem.MarkerOtherConsoleEnd)
return KnownSystemCategory.OtherConsole;
*/
else if (system < KnownSystem.MarkerComputerEnd)
return KnownSystemCategory.Computer;
else if (system < KnownSystem.MarkerArcadeEnd)
return KnownSystemCategory.Arcade;
else if (system < KnownSystem.MarkerOtherEnd)
return KnownSystemCategory.Other;
else
return KnownSystemCategory.Custom;
}
/// <summary>
/// Determine if the media supports drive speeds
/// </summary>
@@ -52,25 +30,25 @@ namespace MPF.Utilities
/// <summary>
/// Determine if a system is considered audio-only
/// </summary>
/// <param name="system">KnownSystem value to check</param>
/// <param name="system">RedumpSystem value to check</param>
/// <returns>True if the system is audio-only, false otherwise</returns>
/// <remarks>
/// 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.
/// </remarks>
public static bool IsAudio(this KnownSystem? system)
public static bool IsAudio(this RedumpSystem? system)
{
switch (system)
{
case KnownSystem.AtariJaguarCD:
case KnownSystem.AudioCD:
case KnownSystem.DVDAudio:
case KnownSystem.HasbroVideoNow:
case KnownSystem.HasbroVideoNowColor:
case KnownSystem.HasbroVideoNowJr:
case KnownSystem.HasbroVideoNowXP:
case KnownSystem.PhilipsCDi:
case KnownSystem.SuperAudioCD:
case RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem:
case RedumpSystem.AudioCD:
case RedumpSystem.DVDAudio:
case RedumpSystem.HasbroVideoNow:
case RedumpSystem.HasbroVideoNowColor:
case RedumpSystem.HasbroVideoNowJr:
case RedumpSystem.HasbroVideoNowXP:
case RedumpSystem.PhilipsCDi:
case RedumpSystem.SuperAudioCD:
return true;
default:
return false;
@@ -80,17 +58,17 @@ namespace MPF.Utilities
/// <summary>
/// Determine if a system is a marker value
/// </summary>
/// <param name="system">KnownSystem value to check</param>
/// <param name="system">RedumpSystem value to check</param>
/// <returns>True if the system is a marker value, false otherwise</returns>
public static bool IsMarker(this KnownSystem? system)
public static bool IsMarker(this RedumpSystem? system)
{
switch (system)
{
case KnownSystem.MarkerArcadeEnd:
case KnownSystem.MarkerComputerEnd:
case KnownSystem.MarkerDiscBasedConsoleEnd:
// case KnownSystem.MarkerOtherConsoleEnd:
case KnownSystem.MarkerOtherEnd:
case RedumpSystem.MarkerArcadeEnd:
case RedumpSystem.MarkerComputerEnd:
case RedumpSystem.MarkerDiscBasedConsoleEnd:
// case RedumpSystem.MarkerOtherConsoleEnd:
case RedumpSystem.MarkerOtherEnd:
return true;
default:
return false;
@@ -100,16 +78,16 @@ namespace MPF.Utilities
/// <summary>
/// Determine if a system is considered XGD
/// </summary>
/// <param name="system">KnownSystem value to check</param>
/// <param name="system">RedumpSystem value to check</param>
/// <returns>True if the system is XGD, false otherwise</returns>
public static bool IsXGD(this KnownSystem? system)
public static bool IsXGD(this RedumpSystem? system)
{
switch (system)
{
case KnownSystem.MicrosoftXBOX:
case KnownSystem.MicrosoftXBOX360:
case KnownSystem.MicrosoftXBOXOne:
case KnownSystem.MicrosoftXboxSeriesXS:
case RedumpSystem.MicrosoftXbox:
case RedumpSystem.MicrosoftXbox360:
case RedumpSystem.MicrosoftXboxOne:
case RedumpSystem.MicrosoftXboxSeriesXS:
return true;
default:
return false;

View File

@@ -7,6 +7,7 @@ using System.Threading.Tasks;
using BurnOutSharp;
using MPF.Converters;
using MPF.Data;
using RedumpLib.Data;
#if NET_FRAMEWORK
using IMAPI2;
#endif
@@ -16,11 +17,11 @@ namespace MPF.Utilities
public static class Validators
{
/// <summary>
/// Get a list of valid MediaTypes for a given KnownSystem
/// Get a list of valid MediaTypes for a given RedumpSystem
/// </summary>
/// <param name="sys">KnownSystem value to check</param>
/// <param name="sys">RedumpSystem value to check</param>
/// <returns>MediaTypes, if possible</returns>
public static List<MediaType?> GetValidMediaTypes(KnownSystem? sys)
public static List<MediaType?> GetValidMediaTypes(RedumpSystem? sys)
{
var types = new List<MediaType?>();
@@ -29,214 +30,214 @@ namespace MPF.Utilities
#region Consoles
// https://en.wikipedia.org/wiki/Atari_Jaguar_CD
case KnownSystem.AtariJaguarCD:
case RedumpSystem.AtariJaguarCDInteractiveMultimediaSystem:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Playdia
case KnownSystem.BandaiPlaydiaQuickInteractiveSystem:
case RedumpSystem.BandaiPlaydiaQuickInteractiveSystem:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Apple_Bandai_Pippin
case KnownSystem.BandaiApplePippin:
case RedumpSystem.BandaiPippin:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Amiga_CD32
case KnownSystem.CommodoreAmigaCD32:
case RedumpSystem.CommodoreAmigaCD32:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Commodore_CDTV
case KnownSystem.CommodoreAmigaCDTV:
case RedumpSystem.CommodoreAmigaCDTV:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/EVO_Smart_Console
case KnownSystem.EnvizionsEVOSmartConsole:
case RedumpSystem.EnvizionsEVOSmartConsole:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/FM_Towns_Marty
case KnownSystem.FujitsuFMTownsMarty:
case RedumpSystem.FujitsuFMTownsMarty:
types.Add(MediaType.CDROM);
types.Add(MediaType.FloppyDisk);
break;
// https://en.wikipedia.org/wiki/VideoNow
case KnownSystem.HasbroVideoNow:
case RedumpSystem.HasbroVideoNow:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/VideoNow
case KnownSystem.HasbroVideoNowColor:
case RedumpSystem.HasbroVideoNowColor:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/VideoNow
case KnownSystem.HasbroVideoNowJr:
case RedumpSystem.HasbroVideoNowJr:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/VideoNow
case KnownSystem.HasbroVideoNowXP:
case RedumpSystem.HasbroVideoNowXP:
types.Add(MediaType.CDROM);
break;
case KnownSystem.MattelFisherPriceiXL:
case RedumpSystem.MattelFisherPriceiXL:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/HyperScan
case KnownSystem.MattelHyperscan:
case RedumpSystem.MattelHyperScan:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Xbox_(console)
case KnownSystem.MicrosoftXBOX:
case RedumpSystem.MicrosoftXbox:
types.Add(MediaType.DVD);
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Xbox_360
case KnownSystem.MicrosoftXBOX360:
case RedumpSystem.MicrosoftXbox360:
types.Add(MediaType.DVD);
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Xbox_One
case KnownSystem.MicrosoftXBOXOne:
case RedumpSystem.MicrosoftXboxOne:
types.Add(MediaType.BluRay);
break;
// https://en.wikipedia.org/wiki/Xbox_Series_X_and_Series_S
case KnownSystem.MicrosoftXboxSeriesXS:
case RedumpSystem.MicrosoftXboxSeriesXS:
types.Add(MediaType.BluRay);
break;
// https://en.wikipedia.org/wiki/TurboGrafx-16
case KnownSystem.NECPCEngineTurboGrafxCD:
case RedumpSystem.NECPCEngineCDTurboGrafxCD:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/PC-FX
case KnownSystem.NECPCFX:
case RedumpSystem.NECPCFXPCFXGA:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/GameCube
case KnownSystem.NintendoGameCube:
case RedumpSystem.NintendoGameCube:
types.Add(MediaType.DVD); // Only added here to help users; not strictly correct
types.Add(MediaType.NintendoGameCubeGameDisc);
break;
// https://en.wikipedia.org/wiki/Super_NES_CD-ROM
case KnownSystem.NintendoSonySuperNESCDROMSystem:
case RedumpSystem.NintendoSonySuperNESCDROMSystem:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Wii
case KnownSystem.NintendoWii:
case RedumpSystem.NintendoWii:
types.Add(MediaType.DVD); // Only added here to help users; not strictly correct
types.Add(MediaType.NintendoWiiOpticalDisc);
break;
// https://en.wikipedia.org/wiki/Wii_U
case KnownSystem.NintendoWiiU:
case RedumpSystem.NintendoWiiU:
types.Add(MediaType.NintendoWiiUOpticalDisc);
break;
// https://en.wikipedia.org/wiki/3DO_Interactive_Multiplayer
case KnownSystem.Panasonic3DOInteractiveMultiplayer:
case RedumpSystem.Panasonic3DOInteractiveMultiplayer:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Philips_CD-i
case KnownSystem.PhilipsCDi:
case RedumpSystem.PhilipsCDi:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/LaserActive
case KnownSystem.PioneerLaserActive:
case RedumpSystem.PioneerLaserActive:
types.Add(MediaType.CDROM);
types.Add(MediaType.LaserDisc);
break;
// https://en.wikipedia.org/wiki/Sega_CD
case KnownSystem.SegaCDMegaCD:
case RedumpSystem.SegaMegaCDSegaCD:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Dreamcast
case KnownSystem.SegaDreamcast:
case RedumpSystem.SegaDreamcast:
types.Add(MediaType.CDROM); // Low density partition, MIL-CD
types.Add(MediaType.GDROM); // High density partition
break;
// https://en.wikipedia.org/wiki/Sega_Saturn
case KnownSystem.SegaSaturn:
case RedumpSystem.SegaSaturn:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Neo_Geo_CD
case KnownSystem.SNKNeoGeoCD:
case RedumpSystem.SNKNeoGeoCD:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/PlayStation_(console)
case KnownSystem.SonyPlayStation:
case RedumpSystem.SonyPlayStation:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/PlayStation_2
case KnownSystem.SonyPlayStation2:
case RedumpSystem.SonyPlayStation2:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/PlayStation_3
case KnownSystem.SonyPlayStation3:
case RedumpSystem.SonyPlayStation3:
types.Add(MediaType.BluRay);
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/PlayStation_4
case KnownSystem.SonyPlayStation4:
case RedumpSystem.SonyPlayStation4:
types.Add(MediaType.BluRay);
break;
// https://en.wikipedia.org/wiki/PlayStation_5
case KnownSystem.SonyPlayStation5:
case RedumpSystem.SonyPlayStation5:
types.Add(MediaType.BluRay);
break;
// https://en.wikipedia.org/wiki/PlayStation_Portable
case KnownSystem.SonyPlayStationPortable:
case RedumpSystem.SonyPlayStationPortable:
types.Add(MediaType.UMD);
types.Add(MediaType.CDROM); // Development discs only
types.Add(MediaType.DVD); // Development discs only
break;
// https://en.wikipedia.org/wiki/Tandy_Video_Information_System
case KnownSystem.TandyMemorexVisualInformationSystem:
case RedumpSystem.MemorexVisualInformationSystem:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Nuon_(DVD_technology)
case KnownSystem.VMLabsNuon:
case RedumpSystem.VMLabsNUON:
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/V.Flash
case KnownSystem.VTechVFlashVSmilePro:
case RedumpSystem.VTechVFlashVSmilePro:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Game_Wave_Family_Entertainment_System
case KnownSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem:
case RedumpSystem.ZAPiTGamesGameWaveFamilyEntertainmentSystem:
types.Add(MediaType.DVD);
break;
@@ -245,13 +246,13 @@ namespace MPF.Utilities
#region Computers
// https://en.wikipedia.org/wiki/Acorn_Archimedes
case KnownSystem.AcornArchimedes:
case RedumpSystem.AcornArchimedes:
types.Add(MediaType.CDROM);
types.Add(MediaType.FloppyDisk);
break;
// https://en.wikipedia.org/wiki/Macintosh
case KnownSystem.AppleMacintosh:
case RedumpSystem.AppleMacintosh:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
types.Add(MediaType.FloppyDisk);
@@ -259,18 +260,18 @@ namespace MPF.Utilities
break;
// https://en.wikipedia.org/wiki/Amiga
case KnownSystem.CommodoreAmiga:
case RedumpSystem.CommodoreAmigaCD:
types.Add(MediaType.CDROM);
types.Add(MediaType.FloppyDisk);
break;
// https://en.wikipedia.org/wiki/FM_Towns
case KnownSystem.FujitsuFMTowns:
case RedumpSystem.FujitsuFMTownsseries:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/IBM_PC_compatible
case KnownSystem.IBMPCCompatible:
case RedumpSystem.IBMPCcompatible:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
types.Add(MediaType.BluRay);
@@ -280,20 +281,20 @@ namespace MPF.Utilities
break;
// https://en.wikipedia.org/wiki/PC-8800_series
case KnownSystem.NECPC88:
case RedumpSystem.NECPC88series:
types.Add(MediaType.CDROM);
types.Add(MediaType.FloppyDisk);
break;
// https://en.wikipedia.org/wiki/PC-9800_series
case KnownSystem.NECPC98:
case RedumpSystem.NECPC98series:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
types.Add(MediaType.FloppyDisk);
break;
// https://en.wikipedia.org/wiki/X68000
case KnownSystem.SharpX68000:
case RedumpSystem.SharpX68000:
types.Add(MediaType.CDROM);
types.Add(MediaType.FloppyDisk);
break;
@@ -303,110 +304,110 @@ namespace MPF.Utilities
#region Arcade
// https://www.bigbookofamigahardware.com/bboah/product.aspx?id=36
case KnownSystem.AmigaCUBOCD32:
case RedumpSystem.AmigaCUBOCD32:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Orbatak
case KnownSystem.AmericanLaserGames3DO:
case RedumpSystem.AmericanLaserGames3DO:
types.Add(MediaType.CDROM);
break;
// http://system16.com/hardware.php?id=779
case KnownSystem.Atari3DO:
case RedumpSystem.Atari3DO:
types.Add(MediaType.CDROM);
break;
// http://newlifegames.net/nlg/index.php?topic=22003.0
// http://newlifegames.net/nlg/index.php?topic=5486.msg119440
case KnownSystem.Atronic:
case RedumpSystem.Atronic:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// https://www.arcade-museum.com/members/member_detail.php?member_id=406530
case KnownSystem.AUSCOMSystem1:
case RedumpSystem.AUSCOMSystem1:
types.Add(MediaType.CDROM);
break;
// http://newlifegames.net/nlg/index.php?topic=285.0
case KnownSystem.BallyGameMagic:
case RedumpSystem.BallyGameMagic:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/CP_System_III
case KnownSystem.CapcomCPSystemIII:
case RedumpSystem.CapcomCPSystemIII:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case KnownSystem.funworldPhotoPlay:
case RedumpSystem.funworldPhotoPlay:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case KnownSystem.GlobalVRVarious:
case RedumpSystem.GlobalVRVarious:
types.Add(MediaType.CDROM);
break;
// https://service.globalvr.com/troubleshooting/vortek.html
case KnownSystem.GlobalVRVortek:
case RedumpSystem.GlobalVRVortek:
types.Add(MediaType.CDROM);
break;
// https://service.globalvr.com/downloads/v3/040-1001-01c-V3-System-Manual.pdf
case KnownSystem.GlobalVRVortekV3:
case RedumpSystem.GlobalVRVortekV3:
types.Add(MediaType.CDROM);
break;
// https://www.icegame.com/games
case KnownSystem.ICEPCHardware:
case RedumpSystem.ICEPCHardware:
types.Add(MediaType.DVD);
break;
// https://github.com/mamedev/mame/blob/master/src/mame/drivers/iteagle.cpp
case KnownSystem.IncredibleTechnologiesEagle:
case RedumpSystem.IncredibleTechnologiesEagle:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case KnownSystem.IncredibleTechnologiesVarious:
case RedumpSystem.IncredibleTechnologiesVarious:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/E-Amusement
case KnownSystem.KonamieAmusement:
case RedumpSystem.KonamieAmusement:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=828
case KnownSystem.KonamiFirebeat:
case RedumpSystem.KonamiFireBeat:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=577
case KnownSystem.KonamiGVSystem:
case RedumpSystem.KonamiSystemGV:
types.Add(MediaType.CDROM);
break;
// http://system16.com/hardware.php?id=575
case KnownSystem.KonamiM2:
case RedumpSystem.KonamiM2:
types.Add(MediaType.CDROM);
break;
// http://system16.com/hardware.php?id=586
// http://system16.com/hardware.php?id=977
case KnownSystem.KonamiPython:
case RedumpSystem.KonamiPython:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=976
// http://system16.com/hardware.php?id=831
case KnownSystem.KonamiPython2:
case RedumpSystem.KonamiPython2:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
@@ -414,23 +415,23 @@ namespace MPF.Utilities
// http://system16.com/hardware.php?id=582
// http://system16.com/hardware.php?id=822
// http://system16.com/hardware.php?id=823
case KnownSystem.KonamiSystem573:
case RedumpSystem.KonamiSystem573:
types.Add(MediaType.CDROM);
break;
// http://system16.com/hardware.php?id=827
case KnownSystem.KonamiTwinkle:
case RedumpSystem.KonamiTwinkle:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case KnownSystem.KonamiVarious:
case RedumpSystem.KonamiVarious:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// http://www.meritgames.com/Support_Center/manuals/PM0591-01.pdf
case KnownSystem.MeritIndustriesBoardwalk:
case RedumpSystem.MeritIndustriesBoardwalk:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
@@ -438,12 +439,12 @@ namespace MPF.Utilities
// http://www.meritgames.com/Support_Center/Force%20Elite/PM0380-09.pdf
// http://www.meritgames.com/Support_Center/Force%20Upright/PM0382-07%20FORCE%20Upright%20manual.pdf
// http://www.meritgames.com/Support_Center/Force%20Upright/PM0383-07%20FORCE%20Upright%20manual.pdf
case KnownSystem.MeritIndustriesMegaTouchForce:
case RedumpSystem.MeritIndustriesMegaTouchForce:
types.Add(MediaType.CDROM);
break;
// http://www.meritgames.com/Service%20Center/Ion%20Troubleshooting.pdf
case KnownSystem.MeritIndustriesMegaTouchION:
case RedumpSystem.MeritIndustriesMegaTouchION:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
@@ -451,92 +452,92 @@ namespace MPF.Utilities
// http://www.meritgames.com/Support_Center/EZ%20Maxx/Manuals/MAXX%20Elite%20with%20coin.pdf
// http://www.meritgames.com/Support_Center/EZ%20Maxx/Manuals/MAXX%20Elite.pdf
// http://www.meritgames.com/Support_Center/manuals/90003010%20Maxx%20TSM_Rev%20C.pdf
case KnownSystem.MeritIndustriesMegaTouchMaxx:
case RedumpSystem.MeritIndustriesMegaTouchMaxx:
types.Add(MediaType.CDROM);
break;
// http://www.meritgames.com/Support_Center/manuals/pm0076_OA_Megatouch%20XL%20Trouble%20Shooting%20Manual.pdf
// http://www.meritgames.com/Support_Center/MEGA%20XL/manuals/Megatouch_XL_pm0109-0D.pdf
// http://www.meritgames.com/Support_Center/MEGA%20XL/manuals/Megatouch_XL_Super_5000_manual.pdf
case KnownSystem.MeritIndustriesMegaTouchXL:
case RedumpSystem.MeritIndustriesMegaTouchXL:
types.Add(MediaType.CDROM);
break;
// http://system16.com/hardware.php?id=546
// http://system16.com/hardware.php?id=872
case KnownSystem.NamcoCapcomSystem256:
case RedumpSystem.NamcoCapcomSystem256:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=543
case KnownSystem.NamcoCapcomTaitoSystem246:
case RedumpSystem.NamcoSystem246:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=545
case KnownSystem.NamcoSegaNintendoTriforce:
case RedumpSystem.NamcoSegaNintendoTriforce:
types.Add(MediaType.CDROM); // Low density partition
types.Add(MediaType.GDROM); // High density partition
break;
// http://system16.com/hardware.php?id=535
case KnownSystem.NamcoSystem12:
case RedumpSystem.NamcoSystem12:
types.Add(MediaType.CDROM);
break;
// http://system16.com/hardware.php?id=900
case KnownSystem.NamcoSystem357:
case RedumpSystem.NamcoSystem357:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
types.Add(MediaType.BluRay);
break;
// https://www.arcade-history.com/?n=the-yakyuuken-part-1&page=detail&id=33049
case KnownSystem.NewJatreCDi:
case RedumpSystem.NewJatreCDi:
types.Add(MediaType.CDROM);
break;
// http://blog.system11.org/?p=2499
case KnownSystem.NichibutsuHighRateSystem:
case RedumpSystem.NichibutsuHighRateSystem:
types.Add(MediaType.DVD);
break;
// http://blog.system11.org/?p=2514
case KnownSystem.NichibutsuSuperCD:
case RedumpSystem.NichibutsuSuperCD:
types.Add(MediaType.CDROM);
break;
// http://collectedit.com/collectors/shou-time-213/arcade-pcbs-281/x-rate-dvd-series-17-newlywed-life-japan-by-nichibutsu-32245
case KnownSystem.NichibutsuXRateSystem:
case RedumpSystem.NichibutsuXRateSystem:
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/Panasonic_M2
case KnownSystem.PanasonicM2:
case RedumpSystem.PanasonicM2:
types.Add(MediaType.CDROM);
types.Add(MediaType.DVD);
break;
// https://github.com/mamedev/mame/blob/master/src/mame/drivers/photoply.cpp
case KnownSystem.PhotoPlayVarious:
case RedumpSystem.PhotoPlayVarious:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case KnownSystem.RawThrillsVarious:
case RedumpSystem.RawThrillsVarious:
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=729
case KnownSystem.SegaChihiro:
case RedumpSystem.SegaChihiro:
types.Add(MediaType.CDROM); // Low density partition
types.Add(MediaType.GDROM); // High density partition
break;
// http://system16.com/hardware.php?id=907
case KnownSystem.SegaEuropaR:
case RedumpSystem.SegaEuropaR:
types.Add(MediaType.DVD);
break;
@@ -544,7 +545,7 @@ namespace MPF.Utilities
// http://system16.com/hardware.php?id=731
// http://system16.com/hardware.php?id=984
// http://system16.com/hardware.php?id=986
case KnownSystem.SegaLindbergh:
case RedumpSystem.SegaLindbergh:
types.Add(MediaType.DVD);
break;
@@ -552,7 +553,7 @@ namespace MPF.Utilities
// http://system16.com/hardware.php?id=723
// http://system16.com/hardware.php?id=906
// http://system16.com/hardware.php?id=722
case KnownSystem.SegaNaomi:
case RedumpSystem.SegaNaomi:
types.Add(MediaType.CDROM); // Low density partition
types.Add(MediaType.GDROM); // High density partition
break;
@@ -560,59 +561,59 @@ namespace MPF.Utilities
// http://system16.com/hardware.php?id=725
// http://system16.com/hardware.php?id=726
// http://system16.com/hardware.php?id=727
case KnownSystem.SegaNaomi2:
case RedumpSystem.SegaNaomi2:
types.Add(MediaType.CDROM); // Low density partition
types.Add(MediaType.GDROM); // High density partition
break;
// http://system16.com/hardware.php?id=975
// https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Nu
case KnownSystem.SegaNu:
case RedumpSystem.SegaNu:
types.Add(MediaType.BluRay);
break;
// http://system16.com/hardware.php?id=910
// https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Ring_series
case KnownSystem.SegaRingEdge:
case RedumpSystem.SegaRingEdge:
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=982
// https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Ring_series
case KnownSystem.SegaRingEdge2:
case RedumpSystem.SegaRingEdge2:
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=911
// https://en.wikipedia.org/wiki/List_of_Sega_arcade_system_boards#Sega_Ring_series
case KnownSystem.SegaRingWide:
case RedumpSystem.SegaRingWide:
types.Add(MediaType.DVD);
break;
// http://system16.com/hardware.php?id=711
case KnownSystem.SegaTitanVideo:
case RedumpSystem.SegaTitanVideo:
types.Add(MediaType.CDROM);
break;
// http://system16.com/hardware.php?id=709
// http://system16.com/hardware.php?id=710
case KnownSystem.SegaSystem32:
case RedumpSystem.SegaSystem32:
types.Add(MediaType.CDROM);
break;
// https://github.com/mamedev/mame/blob/master/src/mame/drivers/seibucats.cpp
case KnownSystem.SeibuCATSSystem:
case RedumpSystem.SeibuCATSSystem:
types.Add(MediaType.DVD);
break;
// https://www.tab.at/en/support/support/downloads
case KnownSystem.TABAustriaQuizard:
case RedumpSystem.TABAustriaQuizard:
types.Add(MediaType.CDROM);
break;
// https://primetimeamusements.com/product/tsumo-multi-game-motion-system/
// https://www.highwaygames.com/arcade-machines/tsumo-tsunami-motion-8117/
case KnownSystem.TsunamiTsuMoMultiGameMotionSystem:
case RedumpSystem.TsunamiTsuMoMultiGameMotionSystem:
types.Add(MediaType.CDROM);
break;
@@ -621,93 +622,92 @@ namespace MPF.Utilities
#region Others
// https://en.wikipedia.org/wiki/Audio_CD
case KnownSystem.AudioCD:
case RedumpSystem.AudioCD:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Blu-ray#Player_profiles
case KnownSystem.BDVideo:
case RedumpSystem.BDVideo:
types.Add(MediaType.BluRay);
break;
// https://en.wikipedia.org/wiki/DVD-Audio
case KnownSystem.DVDAudio:
case RedumpSystem.DVDAudio:
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/DVD-Video
case KnownSystem.DVDVideo:
case RedumpSystem.DVDVideo:
types.Add(MediaType.DVD);
break;
// https://en.wikipedia.org/wiki/Blue_Book_(CD_standard)
case KnownSystem.EnhancedCD:
case RedumpSystem.EnhancedCD:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/HD_DVD
case KnownSystem.HDDVDVideo:
case RedumpSystem.HDDVDVideo:
types.Add(MediaType.HDDVD);
break;
// UNKNOWN
case KnownSystem.NavisoftNaviken21:
case RedumpSystem.NavisoftNaviken21:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case KnownSystem.PalmOS:
case RedumpSystem.PalmOS:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Photo_CD
case KnownSystem.PhotoCD:
case RedumpSystem.PhotoCD:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case KnownSystem.PlayStationGameSharkUpdates:
case RedumpSystem.PlayStationGameSharkUpdates:
types.Add(MediaType.CDROM);
break;
// UNKNOWN
case KnownSystem.PocketPC:
case RedumpSystem.PocketPC:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Doors_and_Windows_(EP)
case KnownSystem.RainbowDisc:
case RedumpSystem.RainbowDisc:
types.Add(MediaType.CDROM);
break;
// https://segaretro.org/Prologue_21
case KnownSystem.SegaPrologue21:
case RedumpSystem.SegaPrologue21MultimediaKaraokeSystem:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Super_Audio_CD
case KnownSystem.SuperAudioCD:
case RedumpSystem.SuperAudioCD:
types.Add(MediaType.CDROM);
break;
// https://www.cnet.com/products/tao-music-iktv-karaoke-station-karaoke-system-series/
case KnownSystem.TaoiKTV:
case RedumpSystem.TaoiKTV:
types.Add(MediaType.CDROM);
break;
// http://ultimateconsoledatabase.com/golden/kiss_site.htm
case KnownSystem.TomyKissSite:
case RedumpSystem.TomyKissSite:
types.Add(MediaType.CDROM);
break;
// https://en.wikipedia.org/wiki/Video_CD
case KnownSystem.VideoCD:
case RedumpSystem.VideoCD:
types.Add(MediaType.CDROM);
break;
#endregion
case KnownSystem.NONE:
default:
types.Add(MediaType.NONE);
break;
@@ -861,7 +861,7 @@ namespace MPF.Utilities
/// <param name="drive"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static KnownSystem? GetKnownSystem(Drive drive, KnownSystem? defaultValue)
public static RedumpSystem? GetRedumpSystem(Drive drive, RedumpSystem? defaultValue)
{
// If drive or drive letter are provided, we can't do anything
if (drive?.Letter == null)
@@ -876,19 +876,19 @@ namespace MPF.Utilities
// We're going to assume for floppies, HDDs, and removable drives
// TODO: Try to be smarter about this
if (drive.InternalDriveType != InternalDriveType.Optical)
return KnownSystem.IBMPCCompatible;
return RedumpSystem.IBMPCcompatible;
// Audio CD
if (drive.VolumeLabel.Equals("Audio CD", StringComparison.OrdinalIgnoreCase))
{
return KnownSystem.AudioCD;
return RedumpSystem.AudioCD;
}
// DVD-Audio
if (Directory.Exists(Path.Combine(drivePath, "AUDIO_TS"))
&& Directory.EnumerateFiles(Path.Combine(drivePath, "AUDIO_TS")).Count() > 0)
{
return KnownSystem.DVDAudio;
return RedumpSystem.DVDAudio;
}
// DVD-Video and Xbox
@@ -897,22 +897,22 @@ namespace MPF.Utilities
{
// TODO: Maybe add video track hashes to compare for Xbox and X360?
if (drive.VolumeLabel.StartsWith("SEP13011042", StringComparison.OrdinalIgnoreCase))
return KnownSystem.MicrosoftXBOX;
return RedumpSystem.MicrosoftXbox;
return KnownSystem.DVDVideo;
return RedumpSystem.DVDVideo;
}
// HD-DVD-Video
if (Directory.Exists(Path.Combine(drivePath, "HVDVD_TS"))
&& Directory.EnumerateFiles(Path.Combine(drivePath, "HVDVD_TS")).Count() > 0)
{
return KnownSystem.HDDVDVideo;
return RedumpSystem.HDDVDVideo;
}
// Sega Dreamcast
if (File.Exists(Path.Combine(drivePath, "IP.BIN")))
{
return KnownSystem.SegaDreamcast;
return RedumpSystem.SegaDreamcast;
}
// Sega Mega-CD / Sega-CD
@@ -921,7 +921,7 @@ namespace MPF.Utilities
|| File.Exists(Path.Combine(drivePath, "_BOOT", "SP_AS.BIN"))
|| File.Exists(Path.Combine(drivePath, "FILESYSTEM.BIN")))
{
return KnownSystem.SegaCDMegaCD;
return RedumpSystem.SegaMegaCDSegaCD;
}
// Sega Saturn
@@ -931,7 +931,7 @@ namespace MPF.Utilities
if (sector != null)
{
if (sector.StartsWith(Interface.SaturnSectorZeroStart))
return KnownSystem.SegaSaturn;
return RedumpSystem.SegaSaturn;
}
}
catch { }
@@ -944,44 +944,44 @@ namespace MPF.Utilities
// Check for either BOOT or BOOT2
var systemCnf = new IniFile(systemCnfPath);
if (systemCnf.ContainsKey("BOOT"))
return KnownSystem.SonyPlayStation;
return RedumpSystem.SonyPlayStation;
else if (systemCnf.ContainsKey("BOOT2"))
return KnownSystem.SonyPlayStation2;
return RedumpSystem.SonyPlayStation2;
}
else if (File.Exists(psxExePath))
{
return KnownSystem.SonyPlayStation;
return RedumpSystem.SonyPlayStation;
}
// Sony PlayStation 3
if (drive.VolumeLabel.Equals("PS3VOLUME", StringComparison.OrdinalIgnoreCase))
{
return KnownSystem.SonyPlayStation3;
return RedumpSystem.SonyPlayStation3;
}
// Sony PlayStation 4
if (drive.VolumeLabel.Equals("PS4VOLUME", StringComparison.OrdinalIgnoreCase))
{
return KnownSystem.SonyPlayStation4;
return RedumpSystem.SonyPlayStation4;
}
// Sony PlayStation 5
if (drive.VolumeLabel.Equals("PS5VOLUME", StringComparison.OrdinalIgnoreCase))
{
return KnownSystem.SonyPlayStation5;
return RedumpSystem.SonyPlayStation5;
}
// V.Tech V.Flash / V.Smile Pro
if (File.Exists(Path.Combine(drivePath, "0SYSTEM")))
{
return KnownSystem.VTechVFlashVSmilePro;
return RedumpSystem.VTechVFlashVSmilePro;
}
// VCD
if (Directory.Exists(Path.Combine(drivePath, "VCD"))
&& Directory.EnumerateFiles(Path.Combine(drivePath, "VCD")).Count() > 0)
{
return KnownSystem.VideoCD;
return RedumpSystem.VideoCD;
}
// Default return
@@ -991,10 +991,10 @@ namespace MPF.Utilities
/// <summary>
/// Verify that, given a system and a media type, they are correct
/// </summary>
public static Result GetSupportStatus(KnownSystem? system, MediaType? type)
public static Result GetSupportStatus(RedumpSystem? system, MediaType? type)
{
// No system chosen, update status
if (system == KnownSystem.NONE)
if (system == null)
return Result.Failure("Please select a valid system");
// If we're on an unsupported type, update the status accordingly

View File

@@ -3,16 +3,17 @@ using System.Collections.Generic;
using System.Linq;
using MPF.Data;
using MPF.Utilities;
using RedumpLib.Data;
using Xunit;
namespace MPF.Test.Utilities
namespace MPF.Test.Converters
{
public class ConvertersTest
public class EnumConverterTest
{
/// <summary>
/// Set of all known systems for testing
/// </summary>
public static IEnumerable<object[]> KnownSystems = KnownSystemComboBoxItem.GenerateElements().Select(e => new object[] { e });
public static IEnumerable<object[]> RedumpSystems = RedumpSystemComboBoxItem.GenerateElements().Select(e => new object[] { e });
[Theory]
[InlineData(DiscImageCreator.CommandStrings.Audio, MediaType.CDROM)]
@@ -39,26 +40,26 @@ namespace MPF.Test.Utilities
}
[Theory]
[InlineData(DiscImageCreator.CommandStrings.Audio, KnownSystem.AudioCD)]
[InlineData(DiscImageCreator.CommandStrings.BluRay, KnownSystem.SonyPlayStation3)]
[InlineData(DiscImageCreator.CommandStrings.Audio, RedumpSystem.AudioCD)]
[InlineData(DiscImageCreator.CommandStrings.BluRay, RedumpSystem.SonyPlayStation3)]
[InlineData(DiscImageCreator.CommandStrings.Close, null)]
[InlineData(DiscImageCreator.CommandStrings.CompactDisc, KnownSystem.IBMPCCompatible)]
[InlineData(DiscImageCreator.CommandStrings.Data, KnownSystem.IBMPCCompatible)]
[InlineData(DiscImageCreator.CommandStrings.DigitalVideoDisc, KnownSystem.IBMPCCompatible)]
[InlineData(DiscImageCreator.CommandStrings.CompactDisc, RedumpSystem.IBMPCcompatible)]
[InlineData(DiscImageCreator.CommandStrings.Data, RedumpSystem.IBMPCcompatible)]
[InlineData(DiscImageCreator.CommandStrings.DigitalVideoDisc, RedumpSystem.IBMPCcompatible)]
[InlineData(DiscImageCreator.CommandStrings.Eject, null)]
[InlineData(DiscImageCreator.CommandStrings.Floppy, KnownSystem.IBMPCCompatible)]
[InlineData(DiscImageCreator.CommandStrings.GDROM, KnownSystem.SegaDreamcast)]
[InlineData(DiscImageCreator.CommandStrings.Floppy, RedumpSystem.IBMPCcompatible)]
[InlineData(DiscImageCreator.CommandStrings.GDROM, RedumpSystem.SegaDreamcast)]
[InlineData(DiscImageCreator.CommandStrings.MDS, null)]
[InlineData(DiscImageCreator.CommandStrings.Reset, null)]
[InlineData(DiscImageCreator.CommandStrings.SACD, KnownSystem.SuperAudioCD)]
[InlineData(DiscImageCreator.CommandStrings.SACD, RedumpSystem.SuperAudioCD)]
[InlineData(DiscImageCreator.CommandStrings.Start, null)]
[InlineData(DiscImageCreator.CommandStrings.Stop, null)]
[InlineData(DiscImageCreator.CommandStrings.Sub, null)]
[InlineData(DiscImageCreator.CommandStrings.Swap, KnownSystem.SegaDreamcast)]
[InlineData(DiscImageCreator.CommandStrings.XBOX, KnownSystem.MicrosoftXBOX)]
public void BaseCommandToKnownSystemTest(string command, KnownSystem? expected)
[InlineData(DiscImageCreator.CommandStrings.Swap, RedumpSystem.SegaDreamcast)]
[InlineData(DiscImageCreator.CommandStrings.XBOX, RedumpSystem.MicrosoftXbox)]
public void BaseCommandToRedumpSystemTest(string command, RedumpSystem? expected)
{
KnownSystem? actual = DiscImageCreator.Converters.ToKnownSystem(command);
RedumpSystem? actual = DiscImageCreator.Converters.ToRedumpSystem(command);
Assert.Equal(expected, actual);
}
@@ -77,33 +78,33 @@ namespace MPF.Test.Utilities
}
[Theory]
[MemberData(nameof(KnownSystems))]
public void KnownSystemHasValidCategory(KnownSystemComboBoxItem system)
[MemberData(nameof(RedumpSystems))]
public void RedumpSystemHasValidCategory(RedumpSystemComboBoxItem system)
{
KnownSystem[] markers = { KnownSystem.MarkerArcadeEnd, KnownSystem.MarkerDiscBasedConsoleEnd, /* KnownSystem.MarkerOtherConsoleEnd, */ KnownSystem.MarkerComputerEnd, KnownSystem.MarkerOtherEnd };
RedumpSystem[] markers = { RedumpSystem.MarkerArcadeEnd, RedumpSystem.MarkerDiscBasedConsoleEnd, /* RedumpSystem.MarkerOtherConsoleEnd, */ RedumpSystem.MarkerComputerEnd, RedumpSystem.MarkerOtherEnd };
// Non-system items won't map
if (system.IsHeader)
return;
// NONE will never map
if (system == KnownSystem.NONE)
// Null will never map
if (system?.Value == null)
return;
// we check that the category is the first category value higher than the system
KnownSystemCategory category = ((KnownSystem?)system).Category();
KnownSystem marker = KnownSystem.NONE;
SystemCategory category = ((RedumpSystem?)system).GetCategory();
RedumpSystem? marker = null;
switch (category)
{
case KnownSystemCategory.Arcade: marker = KnownSystem.MarkerArcadeEnd; break;
case KnownSystemCategory.DiscBasedConsole: marker = KnownSystem.MarkerDiscBasedConsoleEnd; break;
/* case KnownSystemCategory.OtherConsole: marker = KnownSystem.MarkerOtherConsoleEnd; break; */
case KnownSystemCategory.Computer: marker = KnownSystem.MarkerComputerEnd; break;
case KnownSystemCategory.Other: marker = KnownSystem.MarkerOtherEnd; break;
case SystemCategory.Arcade: marker = RedumpSystem.MarkerArcadeEnd; break;
case SystemCategory.DiscBasedConsole: marker = RedumpSystem.MarkerDiscBasedConsoleEnd; break;
/* case SystemCategory.OtherConsole: marker = RedumpSystem.MarkerOtherConsoleEnd; break; */
case SystemCategory.Computer: marker = RedumpSystem.MarkerComputerEnd; break;
case SystemCategory.Other: marker = RedumpSystem.MarkerOtherEnd; break;
}
Assert.NotEqual(KnownSystem.NONE, marker);
Assert.NotEqual(null, marker);
Assert.True(marker > system);
Array.ForEach(markers, mmarker =>

View File

@@ -2,35 +2,36 @@
using MPF.Converters;
using MPF.Data;
using MPF.Utilities;
using RedumpLib.Data;
using Xunit;
namespace MPF.Test.Converters
{
public class KnownSystemExtensionsTest
public class RedumpSystemExtensionsTest
{
[Theory]
[InlineData(KnownSystem.MicrosoftXBOX, "Microsoft XBOX")]
[InlineData(KnownSystem.NECPC88, "NEC PC-88")]
[InlineData(KnownSystem.KonamiPython, "Konami Python")]
[InlineData(KnownSystem.HDDVDVideo, "HD-DVD-Video")]
[InlineData(KnownSystem.NONE, "Unknown")]
public void KnownSystemToStringTest(KnownSystem? knownSystem, string expected)
[InlineData(RedumpSystem.MicrosoftXbox, "Microsoft Xbox")]
[InlineData(RedumpSystem.NECPC88series, "NEC PC-88 series")]
[InlineData(RedumpSystem.KonamiPython, "Konami Python")]
[InlineData(RedumpSystem.HDDVDVideo, "HD DVD-Video")]
[InlineData(null, null)]
public void RedumpSystemToStringTest(RedumpSystem? knownSystem, string expected)
{
string actual = EnumConverter.LongName(knownSystem);
string actual = Extensions.LongName(knownSystem);
Assert.Equal(expected, actual);
}
[Fact]
public void IsMarkerTest()
{
var values = (KnownSystem[])Enum.GetValues(typeof(KnownSystem));
var values = (RedumpSystem[])Enum.GetValues(typeof(RedumpSystem));
foreach(var system in values)
{
bool expected = system == KnownSystem.MarkerArcadeEnd || system == KnownSystem.MarkerComputerEnd ||
system == KnownSystem.MarkerOtherEnd || system == KnownSystem.MarkerDiscBasedConsoleEnd;
// || system == KnownSystem.MarkerOtherConsoleEnd;
bool expected = system == RedumpSystem.MarkerArcadeEnd || system == RedumpSystem.MarkerComputerEnd ||
system == RedumpSystem.MarkerOtherEnd || system == RedumpSystem.MarkerDiscBasedConsoleEnd;
// || system == RedumpSystem.MarkerOtherConsoleEnd;
bool actual = ((KnownSystem?)system).IsMarker();
bool actual = ((RedumpSystem?)system).IsMarker();
Assert.Equal(expected, actual);
}
@@ -39,10 +40,10 @@ namespace MPF.Test.Converters
[Fact]
public void CategoryNameNotEmptyTest()
{
var values = (KnownSystemCategory[])Enum.GetValues(typeof(KnownSystemCategory));
var values = (SystemCategory[])Enum.GetValues(typeof(SystemCategory));
foreach (var system in values)
{
string actual = ((KnownSystem?)system).LongName();
string actual = ((RedumpSystem?)system).LongName();
Assert.NotEqual("", actual);
}
}

View File

@@ -1,6 +1,7 @@
using System.IO;
using MPF.Data;
using MPF.Utilities;
using RedumpLib.Data;
using Xunit;
namespace MPF.Test
@@ -21,7 +22,7 @@ namespace MPF.Test
? new Drive(InternalDriveType.Floppy, new DriveInfo(letter.ToString()))
: new Drive(InternalDriveType.Optical, new DriveInfo(letter.ToString()));
var env = new DumpEnvironment(options, string.Empty, string.Empty, drive, KnownSystem.IBMPCCompatible, mediaType, parameters);
var env = new DumpEnvironment(options, string.Empty, string.Empty, drive, RedumpSystem.IBMPCcompatible, mediaType, parameters);
bool actual = env.ParametersValid();
Assert.Equal(expected, actual);

View File

@@ -3,6 +3,7 @@ using System.Linq;
using MPF.Data;
using MPF.DiscImageCreator;
using MPF.Utilities;
using RedumpLib.Data;
using Xunit;
namespace MPF.Test.Utilities
@@ -10,13 +11,13 @@ namespace MPF.Test.Utilities
public class ParametersTest
{
[Theory]
[InlineData(KnownSystem.MicrosoftXBOX, MediaType.CDROM, CommandStrings.CompactDisc)]
[InlineData(KnownSystem.MicrosoftXBOX, MediaType.DVD, CommandStrings.XBOX)]
[InlineData(KnownSystem.MicrosoftXBOX, MediaType.LaserDisc, null)]
[InlineData(KnownSystem.SegaNu, MediaType.BluRay, CommandStrings.BluRay)]
[InlineData(KnownSystem.AppleMacintosh, MediaType.FloppyDisk, CommandStrings.Floppy)]
[InlineData(KnownSystem.RawThrillsVarious, MediaType.GDROM, null)]
public void ParametersFromSystemAndTypeTest(KnownSystem? knownSystem, MediaType? mediaType, string expected)
[InlineData(RedumpSystem.MicrosoftXbox, MediaType.CDROM, CommandStrings.CompactDisc)]
[InlineData(RedumpSystem.MicrosoftXbox, MediaType.DVD, CommandStrings.XBOX)]
[InlineData(RedumpSystem.MicrosoftXbox, MediaType.LaserDisc, null)]
[InlineData(RedumpSystem.SegaNu, MediaType.BluRay, CommandStrings.BluRay)]
[InlineData(RedumpSystem.AppleMacintosh, MediaType.FloppyDisk, CommandStrings.Floppy)]
[InlineData(RedumpSystem.RawThrillsVarious, MediaType.GDROM, null)]
public void ParametersFromSystemAndTypeTest(RedumpSystem? knownSystem, MediaType? mediaType, string expected)
{
var options = new Options { };
var actual = new Parameters(knownSystem, mediaType, 'D', "disc.bin", 16, options);
@@ -24,21 +25,21 @@ namespace MPF.Test.Utilities
}
[Theory]
[InlineData(KnownSystem.AppleMacintosh, MediaType.LaserDisc, true, 20, null, null)]
[InlineData(KnownSystem.NintendoGameCube, MediaType.NintendoGameCubeGameDisc, false, 20, null, new string[] { FlagStrings.Raw })]
[InlineData(KnownSystem.IBMPCCompatible, MediaType.DVD, false, 20, null, new string[] { FlagStrings.CopyrightManagementInformation, FlagStrings.ScanFileProtect })]
[InlineData(RedumpSystem.AppleMacintosh, MediaType.LaserDisc, true, 20, null, null)]
[InlineData(RedumpSystem.NintendoGameCube, MediaType.NintendoGameCubeGameDisc, false, 20, null, new string[] { FlagStrings.Raw })]
[InlineData(RedumpSystem.IBMPCcompatible, MediaType.DVD, false, 20, null, new string[] { FlagStrings.CopyrightManagementInformation, FlagStrings.ScanFileProtect })]
/* paranoid mode tests */
[InlineData(KnownSystem.IBMPCCompatible, MediaType.CDROM, true, 1000, 2, new string[] { FlagStrings.C2Opcode, FlagStrings.NoFixSubQSecuROM, FlagStrings.ScanFileProtect, FlagStrings.ScanSectorProtect, FlagStrings.SubchannelReadLevel })]
[InlineData(KnownSystem.AppleMacintosh, MediaType.CDROM, false, 20, null, new string[] { FlagStrings.C2Opcode, FlagStrings.NoFixSubQSecuROM, FlagStrings.ScanFileProtect, FlagStrings.ScanSectorProtect, FlagStrings.SubchannelReadLevel })]
[InlineData(KnownSystem.IBMPCCompatible, MediaType.DVD, true, 500, null, new string[] { FlagStrings.CopyrightManagementInformation, FlagStrings.ScanFileProtect })]
[InlineData(KnownSystem.HDDVDVideo, MediaType.HDDVD, true, 500, null, new string[] { FlagStrings.CopyrightManagementInformation })]
[InlineData(KnownSystem.IBMPCCompatible, MediaType.DVD, false, 500, null, new string[] { FlagStrings.CopyrightManagementInformation, FlagStrings.ScanFileProtect })]
[InlineData(KnownSystem.HDDVDVideo, MediaType.HDDVD, false, 500, null, new string[] { FlagStrings.CopyrightManagementInformation })]
[InlineData(RedumpSystem.IBMPCcompatible, MediaType.CDROM, true, 1000, 2, new string[] { FlagStrings.C2Opcode, FlagStrings.NoFixSubQSecuROM, FlagStrings.ScanFileProtect, FlagStrings.ScanSectorProtect, FlagStrings.SubchannelReadLevel })]
[InlineData(RedumpSystem.AppleMacintosh, MediaType.CDROM, false, 20, null, new string[] { FlagStrings.C2Opcode, FlagStrings.NoFixSubQSecuROM, FlagStrings.ScanFileProtect, FlagStrings.ScanSectorProtect, FlagStrings.SubchannelReadLevel })]
[InlineData(RedumpSystem.IBMPCcompatible, MediaType.DVD, true, 500, null, new string[] { FlagStrings.CopyrightManagementInformation, FlagStrings.ScanFileProtect })]
[InlineData(RedumpSystem.HDDVDVideo, MediaType.HDDVD, true, 500, null, new string[] { FlagStrings.CopyrightManagementInformation })]
[InlineData(RedumpSystem.IBMPCcompatible, MediaType.DVD, false, 500, null, new string[] { FlagStrings.CopyrightManagementInformation, FlagStrings.ScanFileProtect })]
[InlineData(RedumpSystem.HDDVDVideo, MediaType.HDDVD, false, 500, null, new string[] { FlagStrings.CopyrightManagementInformation })]
/* reread c2 */
[InlineData(KnownSystem.SegaDreamcast, MediaType.GDROM, false, 1000, null, new string[] { FlagStrings.C2Opcode })]
[InlineData(KnownSystem.SegaDreamcast, MediaType.GDROM, false, -1, null, new string[] { FlagStrings.C2Opcode })]
[InlineData(RedumpSystem.SegaDreamcast, MediaType.GDROM, false, 1000, null, new string[] { FlagStrings.C2Opcode })]
[InlineData(RedumpSystem.SegaDreamcast, MediaType.GDROM, false, -1, null, new string[] { FlagStrings.C2Opcode })]
public void ParametersFromOptionsTest(KnownSystem? knownSystem, MediaType? mediaType, bool paranoid, int rereadC2, int? subchannelLevel, string[] expected)
public void ParametersFromOptionsTest(RedumpSystem? knownSystem, MediaType? mediaType, bool paranoid, int rereadC2, int? subchannelLevel, string[] expected)
{
var options = new Options { DICParanoidMode = paranoid, DICRereadCount = rereadC2 };
var actual = new Parameters(knownSystem, mediaType, 'D', "disc.bin", 16, options);

View File

@@ -2,6 +2,7 @@
using System.Linq;
using MPF.Data;
using MPF.Utilities;
using RedumpLib.Data;
using Xunit;
namespace MPF.Test.Utilities
@@ -9,26 +10,18 @@ namespace MPF.Test.Utilities
public class ValidatorsTest
{
[Theory]
[InlineData(KnownSystem.BandaiApplePippin, MediaType.CDROM)]
[InlineData(KnownSystem.MicrosoftXBOX, MediaType.DVD)]
[InlineData(KnownSystem.NintendoGameCube, MediaType.NintendoGameCubeGameDisc)]
[InlineData(KnownSystem.NintendoWii, MediaType.NintendoWiiOpticalDisc)]
[InlineData(KnownSystem.NintendoWiiU, MediaType.NintendoWiiUOpticalDisc)]
[InlineData(KnownSystem.SonyPlayStationPortable, MediaType.UMD)]
public void GetValidMediaTypesTest(KnownSystem? knownSystem, MediaType? expected)
[InlineData(RedumpSystem.BandaiPippin, MediaType.CDROM)]
[InlineData(RedumpSystem.MicrosoftXbox, MediaType.DVD)]
[InlineData(RedumpSystem.NintendoGameCube, MediaType.NintendoGameCubeGameDisc)]
[InlineData(RedumpSystem.NintendoWii, MediaType.NintendoWiiOpticalDisc)]
[InlineData(RedumpSystem.NintendoWiiU, MediaType.NintendoWiiUOpticalDisc)]
[InlineData(RedumpSystem.SonyPlayStationPortable, MediaType.UMD)]
public void GetValidMediaTypesTest(RedumpSystem? knownSystem, MediaType? expected)
{
var actual = Validators.GetValidMediaTypes(knownSystem);
Assert.Contains(expected, actual);
}
[Fact]
public void CreateListOfSystemsTest()
{
int expected = Enum.GetValues(typeof(KnownSystem)).Length;
var actual = KnownSystemComboBoxItem.GenerateElements().ToList();
Assert.Equal(expected, actual.Count);
}
[Fact]
public void CreateListOfDrivesTest()
{

View File

@@ -4,20 +4,21 @@ using System.Linq;
using MPF.Converters;
using MPF.Data;
using MPF.Utilities;
using RedumpLib.Data;
namespace MPF
{
/// <summary>
/// Represents a single item in the System combo box
/// </summary>
public class KnownSystemComboBoxItem : IElement
public class RedumpSystemComboBoxItem : IElement
{
private readonly object Data;
public KnownSystemComboBoxItem(KnownSystem? system) => Data = system;
public KnownSystemComboBoxItem(KnownSystemCategory? category) => Data = category;
public RedumpSystemComboBoxItem(RedumpSystem? system) => Data = system;
public RedumpSystemComboBoxItem(SystemCategory? category) => Data = category;
public static implicit operator KnownSystem?(KnownSystemComboBoxItem item) => item.Data as KnownSystem?;
public static implicit operator RedumpSystem?(RedumpSystemComboBoxItem item) => item.Data as RedumpSystem?;
/// <inheritdoc/>
public string Name
@@ -25,9 +26,9 @@ namespace MPF
get
{
if (IsHeader)
return "---------- " + EnumConverter.GetLongName(Data as KnownSystemCategory?) + " ----------";
return "---------- " + (Data as SystemCategory?).LongName() + " ----------";
else
return EnumConverter.GetLongName(Data as KnownSystem?);
return (Data as RedumpSystem?).LongName() ?? "No system selected";
}
}
@@ -36,31 +37,31 @@ namespace MPF
/// <summary>
/// Internal enum value
/// </summary>
public KnownSystem? Value => Data as KnownSystem?;
public RedumpSystem? Value => Data as RedumpSystem?;
/// <summary>
/// Determines if the item is a header value
/// </summary>
public bool IsHeader => Data is KnownSystemCategory?;
public bool IsHeader => Data is SystemCategory?;
/// <summary>
/// Determines if the item is a standard system value
/// </summary>
public bool IsSystem => Data is KnownSystem?;
public bool IsSystem => Data is RedumpSystem?;
/// <summary>
/// Generate all elements for the known system combo box
/// </summary>
/// <returns></returns>
public static IEnumerable<KnownSystemComboBoxItem> GenerateElements()
public static IEnumerable<RedumpSystemComboBoxItem> GenerateElements()
{
var knownSystems = Enum.GetValues(typeof(KnownSystem))
.OfType<KnownSystem?>()
.Where(s => !s.IsMarker() && s != KnownSystem.NONE)
var knownSystems = Enum.GetValues(typeof(RedumpSystem))
.OfType<RedumpSystem?>()
.Where(s => !s.IsMarker() && s.GetCategory() != SystemCategory.NONE)
.ToList();
Dictionary<KnownSystemCategory, List<KnownSystem?>> mapping = knownSystems
.GroupBy(s => s.Category())
Dictionary<SystemCategory, List<RedumpSystem?>> mapping = knownSystems
.GroupBy(s => s.GetCategory())
.ToDictionary(
k => k.Key,
v => v
@@ -68,15 +69,15 @@ namespace MPF
.ToList()
);
var systemsValues = new List<KnownSystemComboBoxItem>
var systemsValues = new List<RedumpSystemComboBoxItem>
{
new KnownSystemComboBoxItem(KnownSystem.NONE),
new RedumpSystemComboBoxItem((RedumpSystem?)null),
};
foreach (var group in mapping)
{
systemsValues.Add(new KnownSystemComboBoxItem(group.Key));
group.Value.ForEach(system => systemsValues.Add(new KnownSystemComboBoxItem(system)));
systemsValues.Add(new RedumpSystemComboBoxItem(group.Key));
group.Value.ForEach(system => systemsValues.Add(new RedumpSystemComboBoxItem(system)));
}
return systemsValues;

View File

@@ -74,16 +74,15 @@ namespace MPF.GUI.ViewModels
{
// Sony-printed discs have layers in the opposite order
var system = SubmissionInfo?.CommonDiscInfo?.System;
bool reverseOrder = system == KnownSystem.SonyPlayStation2
|| system == KnownSystem.SonyPlayStation3
|| system == KnownSystem.SonyPlayStation4
|| system == KnownSystem.SonyPlayStation5;
bool reverseOrder = system == RedumpSystem.SonyPlayStation2
|| system == RedumpSystem.SonyPlayStation3
|| system == RedumpSystem.SonyPlayStation4;
// Different media types mean different fields available
switch (SubmissionInfo?.CommonDiscInfo?.Media)
{
case MediaType.CDROM:
case MediaType.GDROM:
case DiscType.CD:
case DiscType.GDROM:
Parent.L0Info.Header = "Data Side";
Parent.L0MasteringRing.Label = "Mastering Ring";
Parent.L0MasteringSID.Label = "Mastering SID";
@@ -99,12 +98,15 @@ namespace MPF.GUI.ViewModels
Parent.L1AdditionalMould.Label = "Additional Mould";
break;
case MediaType.DVD:
case MediaType.HDDVD:
case MediaType.BluRay:
case MediaType.NintendoGameCubeGameDisc:
case MediaType.NintendoWiiOpticalDisc:
case MediaType.NintendoWiiUOpticalDisc:
case DiscType.DVD5:
case DiscType.DVD9:
case DiscType.HDDVDSL:
case DiscType.BD25:
case DiscType.BD50:
case DiscType.NintendoGameCubeGameDisc:
case DiscType.NintendoWiiOpticalDiscSL:
case DiscType.NintendoWiiOpticalDiscDL:
case DiscType.NintendoWiiUOpticalDiscSL:
// Quad-layer discs
if (SubmissionInfo?.SizeAndChecksums?.Layerbreak3 != default(long))
{
@@ -211,7 +213,7 @@ namespace MPF.GUI.ViewModels
// Different systems mean different fields available
switch (system)
{
case KnownSystem.SonyPlayStation2:
case RedumpSystem.SonyPlayStation2:
Parent.LanguageSelectionGrid.Visibility = Visibility.Visible;
break;
}

View File

@@ -11,6 +11,7 @@ using MPF.Converters;
using MPF.Data;
using MPF.Utilities;
using MPF.Windows;
using RedumpLib.Data;
using WPFCustomMessageBox;
namespace MPF.GUI.ViewModels
@@ -46,7 +47,7 @@ namespace MPF.GUI.ViewModels
/// <summary>
/// Current list of supported system profiles
/// </summary>
public List<KnownSystemComboBoxItem> Systems { get; set; } = KnownSystemComboBoxItem.GenerateElements().ToList();
public List<RedumpSystemComboBoxItem> Systems { get; set; } = RedumpSystemComboBoxItem.GenerateElements().ToList();
#endregion
@@ -146,7 +147,7 @@ namespace MPF.GUI.ViewModels
/// </summary>
public void PopulateMediaType()
{
KnownSystem? currentSystem = App.Instance.SystemTypeComboBox.SelectedItem as KnownSystemComboBoxItem;
RedumpSystem? currentSystem = App.Instance.SystemTypeComboBox.SelectedItem as RedumpSystemComboBoxItem;
if (currentSystem != null)
{
@@ -195,7 +196,7 @@ namespace MPF.GUI.ViewModels
/// </summary>
public void ChangeSystem()
{
App.Logger.VerboseLogLn($"Changed system to: {(App.Instance.SystemTypeComboBox.SelectedItem as KnownSystemComboBoxItem).Name}");
App.Logger.VerboseLogLn($"Changed system to: {(App.Instance.SystemTypeComboBox.SelectedItem as RedumpSystemComboBoxItem).Name}");
PopulateMediaType();
GetOutputNames(false);
EnsureDiscInformation();
@@ -640,7 +641,7 @@ namespace MPF.GUI.ViewModels
return;
// Get reasonable default values based on the current system
KnownSystem? currentSystem = Systems[App.Instance.SystemTypeComboBox.SelectedIndex];
RedumpSystem? currentSystem = Systems[App.Instance.SystemTypeComboBox.SelectedIndex];
MediaType? defaultMediaType = Validators.GetValidMediaTypes(currentSystem).FirstOrDefault() ?? MediaType.CDROM;
if (defaultMediaType == MediaType.NONE)
defaultMediaType = MediaType.CDROM;
@@ -697,7 +698,7 @@ namespace MPF.GUI.ViewModels
App.Instance.OutputDirectoryTextBox.Text,
App.Instance.OutputFilenameTextBox.Text,
App.Instance.DriveLetterComboBox.SelectedItem as Drive,
App.Instance.SystemTypeComboBox.SelectedItem as KnownSystemComboBoxItem,
App.Instance.SystemTypeComboBox.SelectedItem as RedumpSystemComboBoxItem,
App.Instance.MediaTypeComboBox.SelectedItem as Element<MediaType>,
App.Instance.ParametersTextBox.Text);
@@ -735,10 +736,10 @@ namespace MPF.GUI.ViewModels
if (!App.Options.SkipSystemDetection && App.Instance.DriveLetterComboBox.SelectedIndex > -1)
{
App.Logger.VerboseLog($"Trying to detect system for drive {Drives[App.Instance.DriveLetterComboBox.SelectedIndex].Letter}.. ");
var currentSystem = Validators.GetKnownSystem(Drives[App.Instance.DriveLetterComboBox.SelectedIndex], App.Options.DefaultSystem);
App.Logger.VerboseLogLn(currentSystem == KnownSystem.NONE ? "unable to detect." : ("detected " + EnumConverter.GetLongName(currentSystem) + "."));
var currentSystem = Validators.GetRedumpSystem(Drives[App.Instance.DriveLetterComboBox.SelectedIndex], App.Options.DefaultSystem);
App.Logger.VerboseLogLn(currentSystem == null ? "unable to detect." : ("detected " + EnumConverter.GetLongName(currentSystem) + "."));
if (currentSystem != KnownSystem.NONE)
if (currentSystem != null)
{
int sysIndex = Systems.FindIndex(s => s == currentSystem);
App.Instance.SystemTypeComboBox.SelectedIndex = sysIndex;
@@ -789,7 +790,7 @@ namespace MPF.GUI.ViewModels
public void GetOutputNames(bool driveChanged)
{
Drive drive = App.Instance.DriveLetterComboBox.SelectedItem as Drive;
KnownSystem? systemType = App.Instance.SystemTypeComboBox.SelectedItem as KnownSystemComboBoxItem;
RedumpSystem? systemType = App.Instance.SystemTypeComboBox.SelectedItem as RedumpSystemComboBoxItem;
MediaType? mediaType = App.Instance.MediaTypeComboBox.SelectedItem as Element<MediaType>;
// Get the extension for the file for the next two statements
@@ -997,7 +998,7 @@ namespace MPF.GUI.ViewModels
/// </summary>
private bool ShouldEnableDumpingButton()
{
return App.Instance.SystemTypeComboBox.SelectedItem as KnownSystemComboBoxItem != KnownSystem.NONE
return App.Instance.SystemTypeComboBox.SelectedItem as RedumpSystemComboBoxItem != null
&& Drives != null
&& Drives.Count > 0
&& !string.IsNullOrEmpty(App.Instance.ParametersTextBox.Text);

View File

@@ -42,7 +42,7 @@ namespace MPF.GUI.ViewModels
/// <summary>
/// Current list of supported system profiles
/// </summary>
public List<KnownSystemComboBoxItem> Systems { get; private set; } = KnownSystemComboBoxItem.GenerateElements().ToList();
public List<RedumpSystemComboBoxItem> Systems { get; private set; } = RedumpSystemComboBoxItem.GenerateElements().ToList();
#endregion
@@ -87,8 +87,8 @@ namespace MPF.GUI.ViewModels
{
var selectedInternalProgram = Parent.InternalProgramComboBox.SelectedItem as Element<InternalProgram>;
Options.InternalProgram = selectedInternalProgram?.Value ?? InternalProgram.DiscImageCreator;
var selectedDefaultSystem = Parent.DefaultSystemComboBox.SelectedItem as KnownSystemComboBoxItem;
Options.DefaultSystem = selectedDefaultSystem?.Value ?? KnownSystem.NONE;
var selectedDefaultSystem = Parent.DefaultSystemComboBox.SelectedItem as RedumpSystemComboBoxItem;
Options.DefaultSystem = selectedDefaultSystem?.Value ?? null;
Options.RedumpPassword = Parent.RedumpPasswordBox.Password;
SavedSettings = true;

View File

@@ -1,5 +1,5 @@
using MPF.Data;
using MPF.GUI.ViewModels;
using MPF.GUI.ViewModels;
using RedumpLib.Data;
namespace MPF.Windows
{

View File

@@ -7,8 +7,19 @@ namespace RedumpLib.Attributes
/// </summary>
public class HumanReadableAttribute : Attribute
{
/// <summary>
/// Item is marked as obsolete or unusable
/// </summary>
public bool Available { get; set; } = true;
/// <summary>
/// Human-readable name of the item
/// </summary>
public string LongName { get; set; }
/// <summary>
/// Internally used name of the item
/// </summary>
public string ShortName { get; set; }
}
}

View File

@@ -1,3 +1,5 @@
using RedumpLib.Data;
namespace RedumpLib.Attributes
{
/// <summary>
@@ -5,6 +7,11 @@ namespace RedumpLib.Attributes
/// </summary>
public class SystemAttribute : HumanReadableAttribute
{
/// <summary>
/// Category for the system
/// </summary>
public SystemCategory Category { get; set; }
/// <summary>
/// System is restricted to dumpers
/// </summary>

View File

@@ -0,0 +1,32 @@
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using RedumpLib.Data;
namespace RedumpLib.Converters
{
/// <summary>
/// Serialize DiscType enum values
/// </summary>
public class DiscTypeConverter : JsonConverter<DiscType?[]>
{
public override bool CanRead { get { return false; } }
public override DiscType?[] ReadJson(JsonReader reader, Type objectType, DiscType?[] existingValue, bool hasExistingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override void WriteJson(JsonWriter writer, DiscType?[] value, JsonSerializer serializer)
{
JArray array = new JArray();
foreach (var val in value)
{
JToken t = JToken.FromObject(val.LongName() ?? string.Empty);
array.Add(t);
}
array.WriteTo(writer);
}
}
}

View File

@@ -0,0 +1,32 @@
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using RedumpLib.Data;
namespace RedumpLib.Converters
{
/// <summary>
/// Serialize YesNo enum values
/// </summary>
public class YesNoConverter : JsonConverter<YesNo[]>
{
public override bool CanRead { get { return false; } }
public override YesNo[] ReadJson(JsonReader reader, Type objectType, YesNo[] existingValue, bool hasExistingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override void WriteJson(JsonWriter writer, YesNo[] value, JsonSerializer serializer)
{
JArray array = new JArray();
foreach (var val in value)
{
JToken t = JToken.FromObject(val.LongName() ?? string.Empty);
array.Add(t);
}
array.WriteTo(writer);
}
}
}

View File

@@ -41,6 +41,56 @@ namespace RedumpLib.Data
AddOns = 11,
}
/// <summary>
/// List of all disc types
/// </summary>
public enum DiscType
{
NONE = 0,
[HumanReadable(LongName = "BD-25")]
BD25,
[HumanReadable(LongName = "BD-50")]
BD50,
[HumanReadable(LongName = "CD")]
CD,
[HumanReadable(LongName = "DVD-5")]
DVD5,
[HumanReadable(LongName = "DVD-9")]
DVD9,
[HumanReadable(LongName = "GD-ROM")]
GDROM,
[HumanReadable(LongName = "HD-DVD SL")]
HDDVDSL,
[HumanReadable(LongName = "MIL-CD")]
MILCD,
[HumanReadable(LongName = "Nintendo GameCube Game Disc")]
NintendoGameCubeGameDisc,
[HumanReadable(LongName = "Nintendo Wii Optical Disc SL")]
NintendoWiiOpticalDiscSL,
[HumanReadable(LongName = "Nintendo Wii Optical Disc DL")]
NintendoWiiOpticalDiscDL,
[HumanReadable(LongName = "Nintendo Wii U Optical Disc SL")]
NintendoWiiUOpticalDiscSL,
[HumanReadable(LongName = "UMD SL")]
UMDSL,
[HumanReadable(LongName = "UMD DL")]
UMDDL,
}
/// <summary>
/// Dump status
/// </summary>
@@ -224,9 +274,11 @@ namespace RedumpLib.Data
/// <summary>
/// List of all known systems
/// </summary>
/// TODO: Remove marker items
public enum RedumpSystem
{
// Special BIOS sets
#region BIOS Sets
[System(LongName = "Microsoft Xbox (BIOS)", ShortName = "xbox-bios", HasDat = true)]
MicrosoftXboxBIOS,
@@ -239,243 +291,548 @@ namespace RedumpLib.Data
[System(LongName = "Sony PlayStation 2 (BIOS)", ShortName = "ps2-bios", HasDat = true)]
SonyPlayStation2BIOS,
// Regular systems
[System(LongName = "Acorn Archimedes", ShortName = "archcd", HasCues = true, HasDat = true)]
AcornArchimedes,
#endregion
[System(LongName = "Apple Macintosh", ShortName = "mac", HasCues = true, HasDat = true)]
AppleMacintosh,
#region Disc-Based Consoles
[System(LongName = "Atari Jaguar CD Interactive Multimedia System", ShortName = "ajcd", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Atari Jaguar CD Interactive Multimedia System", ShortName = "ajcd", HasCues = true, HasDat = true)]
AtariJaguarCDInteractiveMultimediaSystem,
[System(LongName = "Audio CD", ShortName = "audio-cd", IsBanned = true, HasCues = true, HasDat = true)]
AudioCD,
[System(LongName = "Bandai Pippin", ShortName = "pippin", HasCues = true, HasDat = true)]
BandaiPippin,
[System(LongName = "Bandai Playdia Quick Interactive System", ShortName = "qis", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Bandai Playdia Quick Interactive System", ShortName = "qis", HasCues = true, HasDat = true)]
BandaiPlaydiaQuickInteractiveSystem,
[System(LongName = "BD-Video", ShortName = "bd-video", IsBanned = true, HasDat = true)]
BDVideo,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Bandai Pippin", ShortName = "pippin", HasCues = true, HasDat = true)]
BandaiPippin,
[System(LongName = "Commodore Amiga CD", ShortName = "acd", HasCues = true, HasDat = true)]
CommodoreAmigaCD,
[System(LongName = "Commodore Amiga CD32", ShortName = "cd32", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Commodore Amiga CD32", ShortName = "cd32", HasCues = true, HasDat = true)]
CommodoreAmigaCD32,
[System(LongName = "Commodore Amiga CDTV", ShortName = "cdtv", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Commodore Amiga CDTV", ShortName = "cdtv", HasCues = true, HasDat = true)]
CommodoreAmigaCDTV,
[System(LongName = "DVD-Video", ShortName = "dvd-video", IsBanned = true, HasDat = true)]
DVDVideo,
[System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Envizions EVO Smart Console")]
EnvizionsEVOSmartConsole,
[System(LongName = "Enhanced CD", ShortName = "enhanced-cd", IsBanned = true)]
EnhancedCD,
[System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Fujitsu FM Towns Marty")]
FujitsuFMTownsMarty,
[System(LongName = "Fujitsu FM Towns series", ShortName = "fmt", HasCues = true, HasDat = true)]
FujitsuFMTownsseries,
[System(LongName = "funworld Photo Play", ShortName = "fpp", HasCues = true, HasDat = true)]
funworldPhotoPlay,
[System(LongName = "Hasbro VideoNow", ShortName = "hvn", IsBanned = true, HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow", ShortName = "hvn", IsBanned = true, HasCues = true, HasDat = true)]
HasbroVideoNow,
[System(LongName = "Hasbro VideoNow Color", ShortName = "hvnc", IsBanned = true, HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow Color", ShortName = "hvnc", IsBanned = true, HasCues = true, HasDat = true)]
HasbroVideoNowColor,
[System(LongName = "Hasbro VideoNow Jr.", ShortName = "hvnjr", IsBanned = true, HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow Jr.", ShortName = "hvnjr", IsBanned = true, HasCues = true, HasDat = true)]
HasbroVideoNowJr,
[System(LongName = "Hasbro VideoNow XP", ShortName = "hvnxp", IsBanned = true, HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow XP", ShortName = "hvnxp", IsBanned = true, HasCues = true, HasDat = true)]
HasbroVideoNowXP,
[System(LongName = "HD DVD-Video", ShortName = "hddvd-video", IsBanned = true, HasDat = true)]
HDDVDVideo,
[System(LongName = "IBM PC compatible", ShortName = "pc", HasCues = true, HasDat = true, HasLsd = true, HasSbi = true)]
IBMPCcompatible,
[System(LongName = "Incredible Technologies Eagle", ShortName = "ite", HasCues = true, HasDat = true)]
IncredibleTechnologiesEagle,
[System(LongName = "Konami e-Amusement", ShortName = "kea", HasCues = true, HasDat = true)]
KonamieAmusement,
[System(LongName = "Konami FireBeat", ShortName = "kfb", HasCues = true, HasDat = true)]
KonamiFireBeat,
[System(LongName = "Konami M2", ShortName = "km2", IsBanned = true, HasCues = true, HasDat = true)]
KonamiM2,
[System(LongName = "Konami System 573", ShortName = "ks573")]
KonamiSystem573,
[System(LongName = "Konami System GV", ShortName = "ksgv", HasCues = true, HasDat = true)]
KonamiSystemGV,
[System(LongName = "Konami Twinkle", ShortName = "kt")]
KonamiTwinkle,
[System(LongName = "Mattel Fisher-Price iXL", ShortName = "ixl", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Mattel Fisher-Price iXL", ShortName = "ixl", HasCues = true, HasDat = true)]
MattelFisherPriceiXL,
[System(LongName = "Mattel HyperScan", ShortName = "hs", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Mattel HyperScan", ShortName = "hs", HasCues = true, HasDat = true)]
MattelHyperScan,
[System(LongName = "Memorex Visual Information System", ShortName = "vis", HasCues = true, HasDat = true)]
MemorexVisualInformationSystem,
[System(LongName = "Microsoft Xbox", ShortName = "xbox", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox", ShortName = "xbox", HasCues = true, HasDat = true)]
MicrosoftXbox,
[System(LongName = "Microsoft Xbox 360", ShortName = "xbox360", IsBanned = true, HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox 360", ShortName = "xbox360", IsBanned = true, HasCues = true, HasDat = true)]
MicrosoftXbox360,
[System(LongName = "Microsoft Xbox One", ShortName = "xboxone", IsBanned = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox One", ShortName = "xboxone", IsBanned = true, HasDat = true)]
MicrosoftXboxOne,
//[System(LongName = "Microsoft Xbox Series X/S", ShortName = "xboxxs", IsBanned = true)]
//MicrosoftXboxSeriesXandS, // TODO: Not available yet
[System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Microsoft Xbox Series X/S")]
MicrosoftXboxSeriesXS,
[System(LongName = "Namco · Sega · Nintendo Triforce", ShortName = "triforce", HasCues = true, HasDat = true, HasGdi = true)]
NamcoSegaNintendoTriforce,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Memorex Visual Information System", ShortName = "vis", HasCues = true, HasDat = true)]
MemorexVisualInformationSystem,
[System(LongName = "Namco System 12", ShortName = "ns12")]
NamcoSystem12,
[System(LongName = "Namco System 246", ShortName = "ns246", HasCues = true, HasDat = true)]
NamcoSystem246,
[System(LongName = "Navisoft Naviken 2.1", ShortName = "navi21", IsBanned = true, HasCues = true, HasDat = true)]
NavisoftNaviken21,
[System(LongName = "NEC PC Engine CD & TurboGrafx CD", ShortName = "pce", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "NEC PC Engine CD & TurboGrafx CD", ShortName = "pce", HasCues = true, HasDat = true)]
NECPCEngineCDTurboGrafxCD,
[System(LongName = "NEC PC-88 series", ShortName = "pc-88", HasCues = true, HasDat = true)]
NECPC88series,
[System(LongName = "NEC PC-98 series", ShortName = "pc-98", HasCues = true, HasDat = true)]
NECPC98series,
[System(LongName = "NEC PC-FX & PC-FXGA", ShortName = "pc-fx", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "NEC PC-FX & PC-FXGA", ShortName = "pc-fx", HasCues = true, HasDat = true)]
NECPCFXPCFXGA,
[System(LongName = "Nintendo GameCube", ShortName = "gc", HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo GameCube", ShortName = "gc", HasDat = true)]
NintendoGameCube,
[System(LongName = "Nintendo Wii", ShortName = "wii", IsBanned = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Nintendo-Sony Super NES CD-ROM System")]
NintendoSonySuperNESCDROMSystem,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo Wii", ShortName = "wii", IsBanned = true, HasDat = true)]
NintendoWii,
[System(LongName = "Nintendo Wii U", ShortName = "wiiu", IsBanned = true, HasDat = true, HasKeys = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo Wii U", ShortName = "wiiu", IsBanned = true, HasDat = true, HasKeys = true)]
NintendoWiiU,
[System(LongName = "Palm OS", ShortName = "palm", HasCues = true, HasDat = true)]
PalmOS,
[System(LongName = "Panasonic 3DO Interactive Multiplayer", ShortName = "3do", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Panasonic 3DO Interactive Multiplayer", ShortName = "3do", HasCues = true, HasDat = true)]
Panasonic3DOInteractiveMultiplayer,
[System(LongName = "Panasonic M2", ShortName = "m2", IsBanned = true, HasCues = true, HasDat = true)]
PanasonicM2,
[System(LongName = "Philips CD-i", ShortName = "cdi", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Philips CD-i", ShortName = "cdi", HasCues = true, HasDat = true)]
PhilipsCDi,
[System(LongName = "Philips CD-i Digital Video", ShortName = "cdi-video", IsBanned = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Philips CD-i Digital Video", ShortName = "cdi-video", IsBanned = true)]
PhilipsCDiDigitalVideo,
[System(LongName = "Photo CD", ShortName = "photo-cd", HasCues = true, HasDat = true)]
PhotoCD,
[System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Pioneer LaserActive")]
PioneerLaserActive,
[System(LongName = "PlayStation GameShark Updates", ShortName = "psxgs", HasCues = true, HasDat = true)]
PlayStationGameSharkUpdates,
[System(LongName = "Pocket PC", ShortName = "ppc", HasCues = true, HasDat = true)]
PocketPC,
[System(LongName = "Sega Chihiro", ShortName = "chihiro", HasCues = true, HasDat = true, HasGdi = true)]
SegaChihiro,
[System(LongName = "Sega Dreamcast", ShortName = "dc", HasCues = true, HasDat = true, HasGdi = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Dreamcast", ShortName = "dc", HasCues = true, HasDat = true, HasGdi = true)]
SegaDreamcast,
[System(LongName = "Sega Lindbergh", ShortName = "lindbergh", HasDat = true)]
SegaLindbergh,
[System(LongName = "Sega Mega CD & Sega CD", ShortName = "mcd", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Mega CD & Sega CD", ShortName = "mcd", HasCues = true, HasDat = true)]
SegaMegaCDSegaCD,
[System(LongName = "Sega Naomi", ShortName = "naomi", HasCues = true, HasDat = true, HasGdi = true)]
SegaNaomi,
[System(LongName = "Sega Naomi 2", ShortName = "naomi2", HasCues = true, HasDat = true, HasGdi = true)]
SegaNaomi2,
[System(LongName = "Sega Prologue 21 Multimedia Karaoke System", ShortName = "sp21", HasCues = true, HasDat = true)]
SegaPrologue21MultimediaKaraokeSystem,
[System(LongName = "Sega RingEdge", ShortName = "sre", IsBanned = true, HasDat = true)]
SegaRingEdge,
[System(LongName = "Sega RingEdge 2", ShortName = "sre2", IsBanned = true, HasDat = true)]
SegaRingEdge2,
[System(LongName = "Sega Saturn", ShortName = "ss", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Saturn", ShortName = "ss", HasCues = true, HasDat = true)]
SegaSaturn,
[System(LongName = "Sega Titan Video", ShortName = "stv")]
SegaTitanVideo,
[System(LongName = "Sharp X68000", ShortName = "x86kcd", HasCues = true, HasDat = true)]
SharpX68000,
[System(LongName = "Neo Geo CD", ShortName = "ngcd", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Neo Geo CD", ShortName = "ngcd", HasCues = true, HasDat = true)]
SNKNeoGeoCD,
[System(LongName = "Sony PlayStation", ShortName = "psx", HasCues = true, HasDat = true, HasLsd = true, HasSbi = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation", ShortName = "psx", HasCues = true, HasDat = true, HasLsd = true, HasSbi = true)]
SonyPlayStation,
[System(LongName = "Sony PlayStation 2", ShortName = "ps2", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 2", ShortName = "ps2", HasCues = true, HasDat = true)]
SonyPlayStation2,
[System(LongName = "Sony PlayStation 3", ShortName = "ps3", IsBanned = true, HasCues = true, HasDat = true, HasDkeys = true, HasKeys = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 3", ShortName = "ps3", IsBanned = true, HasCues = true, HasDat = true, HasDkeys = true, HasKeys = true)]
SonyPlayStation3,
[System(LongName = "Sony PlayStation 4", ShortName = "ps4", IsBanned = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 4", ShortName = "ps4", IsBanned = true, HasDat = true)]
SonyPlayStation4,
//[System(LongName = "Sony PlayStation 5", ShortName = "ps5", IsBanned = true)]
//SonyPlayStation5, // TODO: Not available yet
[System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Sony PlayStation 5")]
SonyPlayStation5,
[System(LongName = "Sony PlayStation Portable", ShortName = "psp", HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation Portable", ShortName = "psp", HasDat = true)]
SonyPlayStationPortable,
[System(LongName = "TAB-Austria Quizard", ShortName = "quizard", HasCues = true, HasDat = true)]
TABAustriaQuizard,
[System(LongName = "Tao iKTV", ShortName = "iktv")]
TaoiKTV,
[System(LongName = "Tomy Kiss-Site", ShortName = "ksite", HasCues = true, HasDat = true)]
TomyKissSite,
[System(LongName = "Video CD", ShortName = "vcd", IsBanned = true, HasCues = true, HasDat = true)]
VideoCD,
[System(LongName = "VM Labs NUON", ShortName = "nuon", HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "VM Labs NUON", ShortName = "nuon", HasDat = true)]
VMLabsNUON,
[System(LongName = "VTech V.Flash & V.Smile Pro", ShortName = "vflash", HasCues = true, HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "VTech V.Flash & V.Smile Pro", ShortName = "vflash", HasCues = true, HasDat = true)]
VTechVFlashVSmilePro,
[System(LongName = "ZAPiT Games Game Wave Family Entertainment System", ShortName = "gamewave", HasDat = true)]
[System(Category = SystemCategory.DiscBasedConsole, LongName = "ZAPiT Games Game Wave Family Entertainment System", ShortName = "gamewave", HasDat = true)]
ZAPiTGamesGameWaveFamilyEntertainmentSystem,
// End of console section delimiter
MarkerDiscBasedConsoleEnd,
#endregion
#region Cartridge-Based and Other Consoles
/*
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Amstrad GX-4000")]
AmstradGX4000,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "APF Microcomputer System")]
APFMicrocomputerSystem,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Atari 2600 & VCS")]
Atari2600VCS,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Atari 5200")]
Atari5200,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Atari 7800")]
Atari7800,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Atari Jaguar")]
AtariJaguar,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Atari XEGS")]
AtariXEGS,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Audiosonic 1292 Advanced Programmable Video System")]
Audiosonic1292AdvancedProgrammableVideoSystem,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Bally Astrocade")]
BallyAstrocade,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Bit Corporation Dina")]
BitCorporationDina,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Casio Loopy")]
CasioLoopy,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Casio PV-1000")]
CasioPV1000,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Commodore 64 Games System")]
Commodore64GamesSystem,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Daewoo Electronics Zemmix")]
DaewooElectronicsZemmix,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Emerson Arcadia 2001")]
EmersonArcadia2001,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Epoch Cassette Vision")]
EpochCassetteVision,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Epoch Super Cassette Vision")]
EpochSuperCassetteVision,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Fairchild Channel F")]
FairchildChannelF,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Funtech Super A'Can")]
FuntechSuperACan,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "GCE Vectrex")]
GCEVectrex,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Heber BBC Bridge Companion")]
HeberBBCBridgeCompanion,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Interton VC-4000")]
IntertonVC4000,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "JungleTac Vii")]
JungleTacVii,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "LeapFrog ClickStart")]
LeapFrogClickStart,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "LJN VideoArt")]
LJNVideoArt,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Magnavox Odyssey 2")]
MagnavoxOdyssey2,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Mattel Intellivision")]
MattelIntellivision,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "NEC PC Engine & TurboGrafx-16")]
NECPCEngineTurboGrafx16,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nichibutsu MyVision")]
NichibutsuMyVision,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo 64")]
Nintendo64,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo 64DD")]
Nintendo64DD,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo Famicom & Nintendo Entertainment System")]
NintendoFamicomNintendoEntertainmentSystem,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo Famicom Disk System")]
NintendoFamicomDiskSystem,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo Super Famicom & Super Nintendo Entertainment System")]
NintendoSuperFamicomSuperNintendoEntertainmentSystem,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo Switch")]
NintendoSwitch,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Philips Videopac+ & G7400")]
PhilipsVideopacPlusG7400,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "RCA Studio-II")]
RCAStudioII,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Sega 32X")]
Sega32X,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Sega Mark III & Master System")]
SegaMarkIIIMasterSystem,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Sega MegaDrive & Genesis")]
SegaMegaDriveGenesis,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Sega SG-1000")]
SegaSG1000,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "SNK NeoGeo")]
SNKNeoGeo,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "SSD COMPANY LIMITED XaviXPORT")]
SSDCOMPANYLIMITEDXaviXPORT,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "ViewMaster Interactive Vision")]
ViewMasterInteractiveVision,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "V.Tech CreatiVision")]
VTechCreatiVision,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "V.Tech V.Smile")]
VTechVSmile,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "V.Tech Socrates")]
VTechSocrates,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Worlds of Wonder ActionMax")]
WorldsOfWonderActionMax,
// End of other console delimiter
MarkerOtherConsoleEnd,
*/
#endregion
#region Computers
[System(Category = SystemCategory.Computer, LongName = "Acorn Archimedes", ShortName = "archcd", HasCues = true, HasDat = true)]
AcornArchimedes,
[System(Category = SystemCategory.Computer, LongName = "Apple Macintosh", ShortName = "mac", HasCues = true, HasDat = true)]
AppleMacintosh,
[System(Category = SystemCategory.Computer, LongName = "Commodore Amiga CD", ShortName = "acd", HasCues = true, HasDat = true)]
CommodoreAmigaCD,
[System(Category = SystemCategory.Computer, LongName = "Fujitsu FM Towns series", ShortName = "fmt", HasCues = true, HasDat = true)]
FujitsuFMTownsseries,
[System(Category = SystemCategory.Computer, LongName = "IBM PC compatible", ShortName = "pc", HasCues = true, HasDat = true, HasLsd = true, HasSbi = true)]
IBMPCcompatible,
[System(Category = SystemCategory.Computer, LongName = "NEC PC-88 series", ShortName = "pc-88", HasCues = true, HasDat = true)]
NECPC88series,
[System(Category = SystemCategory.Computer, LongName = "NEC PC-98 series", ShortName = "pc-98", HasCues = true, HasDat = true)]
NECPC98series,
[System(Category = SystemCategory.Computer, LongName = "Sharp X68000", ShortName = "x86kcd", HasCues = true, HasDat = true)]
SharpX68000,
// End of computer section delimiter
MarkerComputerEnd,
#endregion
#region Arcade
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Amiga CUBO CD32")]
AmigaCUBOCD32,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "American Laser Games 3DO")]
AmericanLaserGames3DO,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Atari 3DO")]
Atari3DO,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Atronic")]
Atronic,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "AUSCOM System 1")]
AUSCOMSystem1,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Bally Game Magic")]
BallyGameMagic,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Capcom CP System III")]
CapcomCPSystemIII,
[System(Category = SystemCategory.Arcade, LongName = "funworld Photo Play", ShortName = "fpp", HasCues = true, HasDat = true)]
funworldPhotoPlay,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Global VR PC-based Systems")]
GlobalVRVarious,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Global VR Vortek")]
GlobalVRVortek,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Global VR Vortek V3")]
GlobalVRVortekV3,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "ICE PC-based Hardware")]
ICEPCHardware,
[System(Category = SystemCategory.Arcade, LongName = "Incredible Technologies Eagle", ShortName = "ite", HasCues = true, HasDat = true)]
IncredibleTechnologiesEagle,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Incredible Technologies PC-based Systems")]
IncredibleTechnologiesVarious,
[System(Category = SystemCategory.Arcade, LongName = "Konami e-Amusement", ShortName = "kea", HasCues = true, HasDat = true)]
KonamieAmusement,
[System(Category = SystemCategory.Arcade, LongName = "Konami FireBeat", ShortName = "kfb", HasCues = true, HasDat = true)]
KonamiFireBeat,
[System(Category = SystemCategory.Arcade, LongName = "Konami M2", ShortName = "km2", IsBanned = true, HasCues = true, HasDat = true)]
KonamiM2,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Konami Python")]
KonamiPython,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Konami Python 2")]
KonamiPython2,
[System(Category = SystemCategory.Arcade, LongName = "Konami System 573", ShortName = "ks573")]
KonamiSystem573,
[System(Category = SystemCategory.Arcade, LongName = "Konami System GV", ShortName = "ksgv", HasCues = true, HasDat = true)]
KonamiSystemGV,
[System(Category = SystemCategory.Arcade, LongName = "Konami Twinkle", ShortName = "kt")]
KonamiTwinkle,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Konami PC-based Systems")]
KonamiVarious,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Merit Industries Boardwalk")]
MeritIndustriesBoardwalk,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Merit Industries MegaTouch Force")]
MeritIndustriesMegaTouchForce,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Merit Industries MegaTouch ION")]
MeritIndustriesMegaTouchION,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Merit Industries MegaTouch Maxx")]
MeritIndustriesMegaTouchMaxx,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Merit Industries MegaTouch XL")]
MeritIndustriesMegaTouchXL,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Namco · Capcom System 256/Super System 256")]
NamcoCapcomSystem256,
[System(Category = SystemCategory.Arcade, LongName = "Namco · Sega · Nintendo Triforce", ShortName = "triforce", HasCues = true, HasDat = true, HasGdi = true)]
NamcoSegaNintendoTriforce,
[System(Category = SystemCategory.Arcade, LongName = "Namco System 12", ShortName = "ns12")]
NamcoSystem12,
[System(Category = SystemCategory.Arcade, LongName = "Namco System 246", ShortName = "ns246", HasCues = true, HasDat = true)]
NamcoSystem246,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Namco System 357")]
NamcoSystem357,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "New Jatre CD-i")]
NewJatreCDi,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Nichibutsu High Rate System")]
NichibutsuHighRateSystem,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Nichibutsu Super CD")]
NichibutsuSuperCD,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Nichibutsu X-Rate System")]
NichibutsuXRateSystem,
[System(Category = SystemCategory.Arcade, LongName = "Panasonic M2", ShortName = "m2", IsBanned = true, HasCues = true, HasDat = true)]
PanasonicM2,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "PhotoPlay PC-based Systems")]
PhotoPlayVarious,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Raw Thrills PC-based Systems")]
RawThrillsVarious,
[System(Category = SystemCategory.Arcade, LongName = "Sega Chihiro", ShortName = "chihiro", HasCues = true, HasDat = true, HasGdi = true)]
SegaChihiro,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Europa-R")]
SegaEuropaR,
[System(Category = SystemCategory.Arcade, LongName = "Sega Lindbergh", ShortName = "lindbergh", HasDat = true)]
SegaLindbergh,
[System(Category = SystemCategory.Arcade, LongName = "Sega Naomi", ShortName = "naomi", HasCues = true, HasDat = true, HasGdi = true)]
SegaNaomi,
[System(Category = SystemCategory.Arcade, LongName = "Sega Naomi 2", ShortName = "naomi2", HasCues = true, HasDat = true, HasGdi = true)]
SegaNaomi2,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu")]
SegaNu,
[System(Category = SystemCategory.Arcade, LongName = "Sega RingEdge", ShortName = "sre", IsBanned = true, HasDat = true)]
SegaRingEdge,
[System(Category = SystemCategory.Arcade, LongName = "Sega RingEdge 2", ShortName = "sre2", IsBanned = true, HasDat = true)]
SegaRingEdge2,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega RingWide")]
SegaRingWide,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega System 32")]
SegaSystem32,
[System(Category = SystemCategory.Arcade, LongName = "Sega Titan Video", ShortName = "stv")]
SegaTitanVideo,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Seibu CATS System")]
SeibuCATSSystem,
[System(Category = SystemCategory.Arcade, LongName = "TAB-Austria Quizard", ShortName = "quizard", HasCues = true, HasDat = true)]
TABAustriaQuizard,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Tsunami TsuMo Multi-Game Motion System")]
TsunamiTsuMoMultiGameMotionSystem,
// End of arcade section delimiter
MarkerArcadeEnd,
#endregion
#region Other
[System(Category = SystemCategory.Other, LongName = "Audio CD", ShortName = "audio-cd", IsBanned = true, HasCues = true, HasDat = true)]
AudioCD,
[System(Category = SystemCategory.Other, LongName = "BD-Video", ShortName = "bd-video", IsBanned = true, HasDat = true)]
BDVideo,
[System(Category = SystemCategory.Other, Available = false, LongName = "DVD-Audio")]
DVDAudio,
[System(Category = SystemCategory.Other, LongName = "DVD-Video", ShortName = "dvd-video", IsBanned = true, HasDat = true)]
DVDVideo,
[System(Category = SystemCategory.Other, LongName = "Enhanced CD", ShortName = "enhanced-cd", IsBanned = true)]
EnhancedCD,
[System(Category = SystemCategory.Other, LongName = "HD DVD-Video", ShortName = "hddvd-video", IsBanned = true, HasDat = true)]
HDDVDVideo,
[System(Category = SystemCategory.Other, LongName = "Navisoft Naviken 2.1", ShortName = "navi21", IsBanned = true, HasCues = true, HasDat = true)]
NavisoftNaviken21,
[System(Category = SystemCategory.Other, LongName = "Palm OS", ShortName = "palm", HasCues = true, HasDat = true)]
PalmOS,
[System(Category = SystemCategory.Other, LongName = "Photo CD", ShortName = "photo-cd", HasCues = true, HasDat = true)]
PhotoCD,
[System(Category = SystemCategory.Other, LongName = "PlayStation GameShark Updates", ShortName = "psxgs", HasCues = true, HasDat = true)]
PlayStationGameSharkUpdates,
[System(Category = SystemCategory.Other, LongName = "Pocket PC", ShortName = "ppc", HasCues = true, HasDat = true)]
PocketPC,
[System(Category = SystemCategory.Other, Available = false, LongName = "Rainbow Disc")]
RainbowDisc,
[System(Category = SystemCategory.Other, LongName = "Sega Prologue 21 Multimedia Karaoke System", ShortName = "sp21", HasCues = true, HasDat = true)]
SegaPrologue21MultimediaKaraokeSystem,
[System(Category = SystemCategory.Other, Available = false, LongName = "Super Audio CD")]
SuperAudioCD,
[System(Category = SystemCategory.Other, LongName = "Tao iKTV", ShortName = "iktv")]
TaoiKTV,
[System(Category = SystemCategory.Other, LongName = "Tomy Kiss-Site", ShortName = "ksite", HasCues = true, HasDat = true)]
TomyKissSite,
[System(Category = SystemCategory.Other, LongName = "Video CD", ShortName = "vcd", IsBanned = true, HasCues = true, HasDat = true)]
VideoCD,
// End of other section delimiter
MarkerOtherEnd,
#endregion
}
/// <summary>
@@ -717,4 +1074,42 @@ namespace RedumpLib.Data
[HumanReadable(LongName = "World", ShortName = "W")]
World,
}
/// <summary>
/// List of system categories
/// </summary>
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,
};
/// <summary>
/// Generic yes/no values
/// </summary>
public enum YesNo
{
[HumanReadable(LongName = "Yes/No")]
NULL = 0,
[HumanReadable(LongName = "No")]
No = 1,
[HumanReadable(LongName = "Yes")]
Yes = 2,
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using MPF.Converters;
using MPF.Utilities;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using RedumpLib.Converters;
using RedumpLib.Data;
namespace MPF.Data
namespace RedumpLib.Data
{
public class SubmissionInfo : ICloneable
{
@@ -95,13 +92,13 @@ namespace MPF.Data
{
// Name not defined by Redump
[JsonProperty(PropertyName = "d_system", Required = Required.AllowNull)]
[JsonConverter(typeof(KnownSystemConverter))]
public KnownSystem? System { get; set; }
[JsonConverter(typeof(SystemConverter))]
public RedumpSystem? System { get; set; }
// Name not defined by Redump
[JsonProperty(PropertyName = "d_media", Required = Required.AllowNull)]
[JsonConverter(typeof(MediaTypeConverter))]
public MediaType? Media { get; set; }
[JsonConverter(typeof(DiscTypeConverter))]
public DiscType? Media { get; set; }
[JsonProperty(PropertyName = "d_title", Required = Required.AllowNull)]
public string Title { get; set; }
@@ -116,6 +113,7 @@ namespace MPF.Data
public string DiscTitle { get; set; }
[JsonProperty(PropertyName = "d_category", Required = Required.AllowNull)]
[JsonConverter(typeof(DiscCategoryConverter))]
public DiscCategory? Category { get; set; }
[JsonProperty(PropertyName = "d_region", Required = Required.AllowNull)]
@@ -297,6 +295,7 @@ namespace MPF.Data
public class EDCSection : ICloneable
{
[JsonProperty(PropertyName = "d_edc", NullValueHandling = NullValueHandling.Ignore)]
[JsonConverter(typeof(YesNoConverter))]
public YesNo EDC { get; set; }
public object Clone()
@@ -376,9 +375,11 @@ namespace MPF.Data
public class CopyProtectionSection : ICloneable
{
[JsonProperty(PropertyName = "d_protection_a", NullValueHandling = NullValueHandling.Ignore)]
[JsonConverter(typeof(YesNoConverter))]
public YesNo AntiModchip { get; set; }
[JsonProperty(PropertyName = "d_protection_1", NullValueHandling = NullValueHandling.Ignore)]
[JsonConverter(typeof(YesNoConverter))]
public YesNo LibCrypt { get; set; }
[JsonProperty(PropertyName = "d_libcrypt", NullValueHandling = NullValueHandling.Ignore)]

View File

@@ -611,8 +611,8 @@ namespace RedumpLib.Web
Console.WriteLine($"Downloading {title}");
foreach (var system in systems)
{
// If the system is null, we can't do anything
if (system == null)
// If the system is invalid, we can't do anything
if (system == null || !system.IsAvailable())
continue;
// If we didn't have credentials
@@ -649,6 +649,10 @@ namespace RedumpLib.Web
Console.WriteLine($"Downloading {title}");
foreach (var system in systems)
{
// If the system is invalid, we can't do anything
if (system == null || !system.IsAvailable())
continue;
// If we didn't have credentials
if (!LoggedIn && system.IsBanned())
continue;