Centralize the system type similar to the last two

This commit is contained in:
Matt Nadareski
2026-06-14 15:40:07 -04:00
parent 2cc70b6669
commit e4fbe87f20
30 changed files with 3387 additions and 6279 deletions

View File

@@ -144,7 +144,7 @@ namespace RedumpTool.Features
string? statusString = StatusInput.Value;
DumpStatus? status = statusString.ToDumpStatus();
string? systemString = SystemInput.Value;
RedumpSystem? system = systemString.ToRedumpSystem();
PhysicalSystem? system = systemString.ToPhysicalSystem();
int? tracks = TracksInput.Value;
// Get the downloads path values

View File

@@ -143,7 +143,7 @@ namespace RedumpTool.Features
string? statusString = StatusInput.Value;
DumpStatus? status = statusString.ToDumpStatus();
string? systemString = SystemInput.Value;
RedumpSystem? system = systemString.ToRedumpSystem();
PhysicalSystem? system = systemString.ToPhysicalSystem();
int? tracks = TracksInput.Value;
// Get specific values

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,5 @@
using System;
using SabreTools.RedumpLib.Data;
using SabreTools.RedumpLib.RedumpInfo;
using SabreTools.RedumpLib.RedumpInfo.Data;
using Xunit;
@@ -89,20 +90,20 @@ namespace SabreTools.RedumpLib.Test.RedumpInfo
[InlineData(PackType.Sbis, "https://redump.info/sbi/ARCH/")]
public void BuildPackUrl_ValidPackType_ValidSystem_Builds(PackType packType, string expected)
{
string actual = UrlBuilder.BuildPackUrl(packType, RedumpSystem.AcornArchimedes);
string actual = UrlBuilder.BuildPackUrl(packType, PhysicalSystem.AcornArchimedes);
Assert.Equal(expected, actual);
}
[Fact]
public void BuildPackUrl_InvalidPackType_Throws()
{
Assert.Throws<ArgumentOutOfRangeException>(() => UrlBuilder.BuildPackUrl((PackType)int.MaxValue, RedumpSystem.AcornArchimedes));
Assert.Throws<ArgumentOutOfRangeException>(() => UrlBuilder.BuildPackUrl((PackType)int.MaxValue, PhysicalSystem.AcornArchimedes));
}
[Fact]
public void BuildPackUrl_InvalidSystem_Builds()
{
string actual = UrlBuilder.BuildPackUrl(PackType.Datfile, RedumpSystem.MarkerOtherEnd);
string actual = UrlBuilder.BuildPackUrl(PackType.Datfile, PhysicalSystem.MarkerOtherEnd);
Assert.Equal("https://redump.info/datfile//", actual);
}

File diff suppressed because it is too large Load Diff

View File

@@ -92,7 +92,7 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
var builder = new StringBuilder();
EDCSection? section = null;
RedumpSystem? system = RedumpSystem.SonyPlayStation;
PhysicalSystem? system = PhysicalSystem.SonyPlayStation;
Formatter.FormatOutputData(builder, section, system);
@@ -107,7 +107,7 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
var builder = new StringBuilder();
EDCSection? section = null;
RedumpSystem? system = RedumpSystem.IBMPCcompatible;
PhysicalSystem? system = PhysicalSystem.IBMPCcompatible;
Formatter.FormatOutputData(builder, section, system);
@@ -122,7 +122,7 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
var builder = new StringBuilder();
EDCSection? section = new() { EDC = YesNo.Yes };
RedumpSystem? system = RedumpSystem.SonyPlayStation;
PhysicalSystem? system = PhysicalSystem.SonyPlayStation;
Formatter.FormatOutputData(builder, section, system);
@@ -202,7 +202,7 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
var builder = new StringBuilder();
CopyProtectionSection? section = null;
RedumpSystem? system = RedumpSystem.IBMPCcompatible;
PhysicalSystem? system = PhysicalSystem.IBMPCcompatible;
Formatter.FormatOutputData(builder, section, system);
@@ -224,7 +224,7 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
LibCryptData = null,
SecuROMData = null,
};
RedumpSystem? system = RedumpSystem.IBMPCcompatible;
PhysicalSystem? system = PhysicalSystem.IBMPCcompatible;
Formatter.FormatOutputData(builder, section, system);
@@ -246,7 +246,7 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
Protection = "XXXXXX",
SecuROMData = "XXXXXX",
};
RedumpSystem? system = RedumpSystem.IBMPCcompatible;
PhysicalSystem? system = PhysicalSystem.IBMPCcompatible;
Formatter.FormatOutputData(builder, section, system);
@@ -268,7 +268,7 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
Protection = "XXXXXX",
SecuROMData = "XXXXXX",
};
RedumpSystem? system = RedumpSystem.SonyPlayStation;
PhysicalSystem? system = PhysicalSystem.SonyPlayStation;
Formatter.FormatOutputData(builder, section, system);

View File

@@ -1,4 +1,5 @@
using System;
using SabreTools.RedumpLib.Data;
using SabreTools.RedumpLib.RedumpOrg;
using SabreTools.RedumpLib.RedumpOrg.Data;
using Xunit;
@@ -118,21 +119,21 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
[InlineData(null, "http://redump.org/list/user/arch/")]
public void BuildListUrl_HaveMissSet(bool? have, string expected)
{
string actual = UrlBuilder.BuildListUrl("user", have, system: RedumpSystem.AcornArchimedes);
string actual = UrlBuilder.BuildListUrl("user", have, system: PhysicalSystem.AcornArchimedes);
Assert.Equal(expected, actual);
}
[Fact]
public void BuildListUrl_InvalidUsername_Builds()
{
string actual = UrlBuilder.BuildListUrl(string.Empty, have: true, system: RedumpSystem.AcornArchimedes);
string actual = UrlBuilder.BuildListUrl(string.Empty, have: true, system: PhysicalSystem.AcornArchimedes);
Assert.Equal("http://redump.org/list/have//arch/", actual);
}
[Theory]
[InlineData(RedumpSystem.MarkerOtherEnd)]
[InlineData(RedumpSystem.RainbowDisc)]
public void BuildListUrl_InvalidSystem_Builds(RedumpSystem? system)
[InlineData(PhysicalSystem.MarkerOtherEnd)]
[InlineData(PhysicalSystem.RainbowDisc)]
public void BuildListUrl_InvalidSystem_Builds(PhysicalSystem? system)
{
string actual = UrlBuilder.BuildListUrl("user", have: true, system: system);
Assert.Equal("http://redump.org/list/have/user/", actual);
@@ -176,20 +177,20 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg
[InlineData(PackType.Sbis, "http://redump.org/sbi/arch/")]
public void BuildPackUrl_ValidPackType_ValidSystem_Builds(PackType packType, string expected)
{
string actual = UrlBuilder.BuildPackUrl(packType, RedumpSystem.AcornArchimedes);
string actual = UrlBuilder.BuildPackUrl(packType, PhysicalSystem.AcornArchimedes);
Assert.Equal(expected, actual);
}
[Fact]
public void BuildPackUrl_InvalidPackType_Throws()
{
Assert.Throws<ArgumentOutOfRangeException>(() => UrlBuilder.BuildPackUrl((PackType)int.MaxValue, RedumpSystem.AcornArchimedes));
Assert.Throws<ArgumentOutOfRangeException>(() => UrlBuilder.BuildPackUrl((PackType)int.MaxValue, PhysicalSystem.AcornArchimedes));
}
[Fact]
public void BuildPackUrl_InvalidSystem_Builds()
{
string actual = UrlBuilder.BuildPackUrl(PackType.Datfile, RedumpSystem.MarkerOtherEnd);
string actual = UrlBuilder.BuildPackUrl(PackType.Datfile, PhysicalSystem.MarkerOtherEnd);
Assert.Equal("http://redump.org/datfile//", actual);
}

View File

@@ -51,7 +51,7 @@ namespace SabreTools.RedumpLib.Test
CommonDiscInfo = new CommonDiscInfoSection()
{
System = RedumpSystem.IBMPCcompatible,
System = PhysicalSystem.IBMPCcompatible,
Media = DiscType.CD,
Title = "Game Title",
ForeignTitleNonLatin = "Foreign Game Title",

View File

@@ -1,13 +1,17 @@
using SabreTools.RedumpLib.Attributes;
using SabreTools.RedumpLib.RedumpOrg.Data;
using SabreTools.RedumpLib.Data;
namespace SabreTools.RedumpLib.RedumpOrg
namespace SabreTools.RedumpLib.Attributes
{
/// <summary>
/// Attribute specifc to Redump System values
/// </summary>
public class SystemAttribute : HumanReadableAttribute
{
/// <summary>
/// redump.org short code
/// </summary>
public string? RedumpOrgCode { get; set; }
/// <summary>
/// Category for the system
/// </summary>
@@ -31,11 +35,13 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// <summary>
/// System has a decrypted keys pack
/// </summary>
/// <remarks>redump.org only</remarks>
public bool HasDkeys { get; set; } = false;
/// <summary>
/// System has a GDI pack
/// </summary>
/// <remarks>redump.org only</remarks>
public bool HasGdi { get; set; } = false;
/// <summary>
@@ -46,6 +52,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// <summary>
/// System has an LSD pack
/// </summary>
/// <remarks>redump.org only</remarks>
public bool HasLsd { get; set; } = false;
/// <summary>

View File

@@ -180,15 +180,15 @@ namespace SabreTools.RedumpLib
}
else if (string.Equals(gameInfoNodeHeader.InnerText, "System", StringComparison.OrdinalIgnoreCase))
{
info.CommonDiscInfo.System = RedumpOrg.Data.Extensions.ToRedumpSystem(gameInfoNodeData["a"]?.InnerText ?? string.Empty);
info.CommonDiscInfo.System = (gameInfoNodeData["a"]?.InnerText ?? string.Empty).ToPhysicalSystem();
}
else if (string.Equals(gameInfoNodeHeader.InnerText, "Media", StringComparison.OrdinalIgnoreCase))
{
info.CommonDiscInfo.Media = RedumpOrg.Data.Extensions.ToDiscType(gameInfoNodeData.InnerText);
info.CommonDiscInfo.Media = gameInfoNodeData.InnerText.ToDiscType();
}
else if (string.Equals(gameInfoNodeHeader.InnerText, "Category", StringComparison.OrdinalIgnoreCase))
{
info.CommonDiscInfo.Category = RedumpOrg.Data.Extensions.ToDiscCategory(gameInfoNodeData.InnerText);
info.CommonDiscInfo.Category = gameInfoNodeData.InnerText.ToDiscCategory();
}
else if (string.Equals(gameInfoNodeHeader.InnerText, "Region", StringComparison.OrdinalIgnoreCase))
{

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -14,8 +14,8 @@ namespace SabreTools.RedumpLib.Data.Sections
{
// Name not defined by Redump
[JsonProperty(PropertyName = "d_system", DefaultValueHandling = DefaultValueHandling.Include)]
[JsonConverter(typeof(SystemConverter))]
public RedumpSystem? System { get; set; }
[JsonConverter(typeof(PhysicalSystemConverter))]
public PhysicalSystem? System { get; set; }
// Name not defined by Redump
[JsonProperty(PropertyName = "d_media", DefaultValueHandling = DefaultValueHandling.Include)]

View File

@@ -417,7 +417,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
RedumpOrg.Data.SortCategory? sort = null,
RedumpOrg.Data.SortDirection? sortDir = null,
DumpStatus? status = null,
RedumpSystem? system = null,
PhysicalSystem? system = null,
int? page = null)
{
// Normalize the search query, if needed
@@ -512,7 +512,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
RedumpOrg.Data.SortCategory? sort = null,
RedumpOrg.Data.SortDirection? sortDir = null,
DumpStatus? status = null,
RedumpSystem? system = null,
PhysicalSystem? system = null,
int? page = null,
DiscSubpath[]? discSubpaths = null)
{
@@ -679,7 +679,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// <param name="packType">Pack type to use to determine the download URL</param>
/// <param name="system">System to download packs for</param>
/// <returns>Byte array containing the downloaded pack, null on error</returns>
public async Task<byte[]?> DownloadSinglePack(PackType packType, RedumpSystem? system)
public async Task<byte[]?> DownloadSinglePack(PackType packType, PhysicalSystem? system)
{
try
{
@@ -731,7 +731,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// <param name="packType">Pack type to use to determine the download URL</param>
/// <param name="system">System to download packs for</param>
/// <param name="outDir">Output directory to save data to</param>
public async Task<bool> DownloadSinglePack(PackType packType, RedumpSystem? system, string? outDir)
public async Task<bool> DownloadSinglePack(PackType packType, PhysicalSystem? system, string? outDir)
{
try
{
@@ -799,7 +799,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// <param name="system">System to download packs for</param>
/// <param name="outDir">Output directory to save data to</param>
/// <param name="subfolder">Named subfolder for the pack, used optionally</param>
public async Task<bool> DownloadSinglePack(PackType packType, RedumpSystem? system, string? outDir, string? subfolder)
public async Task<bool> DownloadSinglePack(PackType packType, PhysicalSystem? system, string? outDir, string? subfolder)
{
try
{
@@ -1218,7 +1218,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// </summary>
/// <param name="packType">Pack type to use to determine the download URL</param>
/// <param name="system">Systems to download packs for</param>
public async Task<Dictionary<RedumpSystem, byte[]>> DownloadPacks(PackType packType, RedumpSystem[] systems)
public async Task<Dictionary<PhysicalSystem, byte[]>> DownloadPacks(PackType packType, PhysicalSystem[] systems)
{
// Determine if the pack type is valid
if (!Enum.IsDefined(typeof(PackType), packType))
@@ -1227,7 +1227,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
return [];
}
var packsDictionary = new Dictionary<RedumpSystem, byte[]>();
var packsDictionary = new Dictionary<PhysicalSystem, byte[]>();
foreach (var system in systems)
{
string longName = system.LongName() ?? $"UNKNOWN_{system}";
@@ -1257,7 +1257,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// <param name="packType">Pack type to use to determine the download URL</param>
/// <param name="systems">Systems to download packs for</param>
/// <param name="outDir">Output directory to save data to</param>
public async Task<bool> DownloadPacks(PackType packType, RedumpSystem[] systems, string? outDir)
public async Task<bool> DownloadPacks(PackType packType, PhysicalSystem[] systems, string? outDir)
{
// Determine if the pack type is valid
if (!Enum.IsDefined(typeof(PackType), packType))
@@ -1293,7 +1293,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// <param name="systems">Systems to download packs for</param>
/// <param name="outDir">Output directory to save data to</param>
/// <param name="subfolder">Named subfolder for the pack, used optionally</param>
public async Task<bool> DownloadPacks(PackType packType, RedumpSystem[] systems, string? outDir, string? subfolder)
public async Task<bool> DownloadPacks(PackType packType, PhysicalSystem[] systems, string? outDir, string? subfolder)
{
// Determine if the pack type is valid
if (!Enum.IsDefined(typeof(PackType), packType))
@@ -1410,7 +1410,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// <param name="packType">Pack type to use to determine the support status</param>
/// <param name="system">Systems to determine pack availability for</param>
/// <returns>True if the pack is available for a system, false otherwise</returns>
private static bool PackTypeToAvailable(PackType packType, RedumpSystem system)
private static bool PackTypeToAvailable(PackType packType, PhysicalSystem system)
{
return packType switch
{

View File

@@ -1,18 +1,19 @@
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SabreTools.RedumpLib.Data;
using SabreTools.RedumpLib.RedumpInfo.Data;
namespace SabreTools.RedumpLib.RedumpInfo.Converters
{
/// <summary>
/// Serialize RedumpSystem enum values
/// Serialize PhysicalSystem enum values
/// </summary>
public class SystemConverter : JsonConverter<RedumpSystem?>
public class PhysicalSystemConverter : JsonConverter<PhysicalSystem?>
{
public override bool CanRead { get { return true; } }
public override RedumpSystem? ReadJson(JsonReader reader, Type objectType, RedumpSystem? existingValue, bool hasExistingValue, JsonSerializer serializer)
public override PhysicalSystem? ReadJson(JsonReader reader, Type objectType, PhysicalSystem? existingValue, bool hasExistingValue, JsonSerializer serializer)
{
// If we have a value already, don't overwrite it
if (hasExistingValue)
@@ -23,10 +24,10 @@ namespace SabreTools.RedumpLib.RedumpInfo.Converters
return null;
// Try to parse the value
return value.ToRedumpSystem();
return value.ToPhysicalSystem();
}
public override void WriteJson(JsonWriter writer, RedumpSystem? value, JsonSerializer serializer)
public override void WriteJson(JsonWriter writer, PhysicalSystem? value, JsonSerializer serializer)
{
JToken t = JToken.FromObject(value.ShortName() ?? string.Empty);
t.WriteTo(writer);

View File

@@ -157,628 +157,4 @@ namespace SabreTools.RedumpLib.RedumpInfo.Data
[HumanReadable(LongName = "SBI", ShortName = "sbi")]
Sbis,
}
/// <summary>
/// List of all known systems
/// </summary>
/// TODO: Remove marker items
/// TODO: Double check all flags once the site is live
/// TODO: Add MAXTEST as a debug-only system
/// TODO: Does "Banned" now only mean that things like keys can't be downloaded?
public enum RedumpSystem
{
// TODO: Somehow indicate that these are static paths
#region BIOS Sets
[System(LongName = "Microsoft Xbox (BIOS)", ShortName = "xbox-bios", HasDat = true)]
MicrosoftXboxBIOS,
[System(LongName = "Nintendo GameCube (BIOS)", ShortName = "gc-bios", HasDat = true)]
NintendoGameCubeBIOS,
[System(LongName = "Sony PlayStation (BIOS)", ShortName = "psx-bios", HasDat = true)]
SonyPlayStationBIOS,
[System(LongName = "Sony PlayStation 2 (BIOS)", ShortName = "ps2-bios", HasDat = true)]
SonyPlayStation2BIOS,
#endregion
#region Disc-Based Consoles
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Atari Jaguar CD Interactive Multimedia System", ShortName = "AJCD", HasCues = true, HasDat = true)]
AtariJaguarCDInteractiveMultimediaSystem,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Bandai Pippin", ShortName = "PIPPIN", HasCues = true, HasDat = true)]
BandaiPippin,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Bandai Playdia Quick Interactive System", ShortName = "QIS", HasCues = true, HasDat = true)]
BandaiPlaydiaQuickInteractiveSystem,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Commodore Amiga CD32", ShortName = "CD32", HasCues = true, HasDat = true)]
CommodoreAmigaCD32,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Commodore Amiga CDTV", ShortName = "CDTV", HasCues = true, HasDat = true)]
CommodoreAmigaCDTV,
[System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Envizions EVO Smart Console")]
EnvizionsEVOSmartConsole,
[System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Fujitsu FM Towns Marty")]
FujitsuFMTownsMarty,
[System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Hasbro iON Educational Gaming System")]
HasbroiONEducationalGamingSystem,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow", ShortName = "HVN", IsBanned = true, HasCues = true, HasDat = true)]
HasbroVideoNow,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow Color", ShortName = "HVNC", IsBanned = true, HasCues = true, HasDat = true)]
HasbroVideoNowColor,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow Jr.", ShortName = "HVNJR", IsBanned = true, HasCues = true, HasDat = true)]
HasbroVideoNowJr,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Hasbro VideoNow XP", ShortName = "HVNXP", IsBanned = true, HasCues = true, HasDat = true)]
HasbroVideoNowXP,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Mattel Fisher-Price iXL", ShortName = "IXL", HasCues = true, HasDat = true)]
MattelFisherPriceiXL,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Mattel HyperScan", ShortName = "HS", HasCues = true, HasDat = true)]
MattelHyperScan,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Memorex Visual Information System", ShortName = "VIS", HasCues = true, HasDat = true)]
MemorexVisualInformationSystem,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox", ShortName = "XBOX", HasCues = true, HasDat = true)]
MicrosoftXbox,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox 360", ShortName = "XBOX360", HasCues = true, HasDat = true)]
MicrosoftXbox360,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox One", ShortName = "XBOXONE", IsBanned = true, HasDat = true)]
MicrosoftXboxOne,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Microsoft Xbox Series X", ShortName = "XBOXSX", IsBanned = true, HasDat = true)]
MicrosoftXboxSeriesXS,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "NEC PC Engine CD & TurboGrafx CD", ShortName = "PCE", HasCues = true, HasDat = true)]
NECPCEngineCDTurboGrafxCD,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "NEC PC-FX & PC-FXGA", ShortName = "PC-FX", HasCues = true, HasDat = true)]
NECPCFXPCFXGA,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo GameCube", ShortName = "GC", HasDat = true)]
NintendoGameCube,
[System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Nintendo-Sony Super NES CD-ROM System")]
NintendoSonySuperNESCDROMSystem,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo Wii", ShortName = "WII", HasDat = true)]
NintendoWii,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Nintendo Wii U", ShortName = "WIIU", IsBanned = true, HasDat = true, HasKeys = true)]
NintendoWiiU,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Panasonic 3DO Interactive Multiplayer", ShortName = "3DO", HasCues = true, HasDat = true)]
Panasonic3DOInteractiveMultiplayer,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Philips CD-i", ShortName = "CDI", HasCues = true, HasDat = true)]
PhilipsCDi,
[System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Playmaji Polymega")]
PlaymajiPolymega,
[System(Category = SystemCategory.DiscBasedConsole, Available = false, LongName = "Pioneer LaserActive")]
PioneerLaserActive,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Dreamcast", ShortName = "DC", HasCues = true, HasDat = true)]
SegaDreamcast,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Mega CD & Sega CD", ShortName = "MCD", HasCues = true, HasDat = true)]
SegaMegaCDSegaCD,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sega Saturn", ShortName = "SS", HasCues = true, HasDat = true)]
SegaSaturn,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Neo Geo CD", ShortName = "NGCD", HasCues = true, HasDat = true)]
SNKNeoGeoCD,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation", ShortName = "PSX", HasCues = true, HasDat = true, HasSbi = true)]
SonyPlayStation,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 2", ShortName = "PS2", HasCues = true, HasDat = true)]
SonyPlayStation2,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 3", ShortName = "PS3", HasCues = true, HasDat = true, HasKeys = true)]
SonyPlayStation3,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 4", ShortName = "PS4", IsBanned = true, HasDat = true)]
SonyPlayStation4,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation 5", ShortName = "PS5", IsBanned = true, HasDat = true)]
SonyPlayStation5,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "Sony PlayStation Portable", ShortName = "PSP", HasDat = true)]
SonyPlayStationPortable,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "VM Labs NUON", ShortName = "NUON", HasDat = true)]
VMLabsNUON,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "VTech V.Flash & V.Smile Pro", ShortName = "VFLASH", HasCues = true, HasDat = true)]
VTechVFlashVSmilePro,
[System(Category = SystemCategory.DiscBasedConsole, LongName = "ZAPiT Games Game Wave Family Entertainment System", ShortName = "GAMEWAVE", HasDat = true)]
ZAPiTGamesGameWaveFamilyEntertainmentSystem,
// End of console section delimiter
MarkerDiscBasedConsoleEnd,
#endregion
#region Cartridge-Based and Other Consoles
/*
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Amstrad GX-4000")]
AmstradGX4000,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "APF Microcomputer System")]
APFMicrocomputerSystem,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Atari 2600 & VCS")]
Atari2600VCS,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Atari 5200")]
Atari5200,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Atari 7800")]
Atari7800,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Atari Jaguar")]
AtariJaguar,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Atari XEGS")]
AtariXEGS,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Audiosonic 1292 Advanced Programmable Video System")]
Audiosonic1292AdvancedProgrammableVideoSystem,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Bally Astrocade")]
BallyAstrocade,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Bit Corporation Dina")]
BitCorporationDina,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Casio Loopy")]
CasioLoopy,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Casio PV-1000")]
CasioPV1000,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Commodore 64 Games System")]
Commodore64GamesSystem,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Daewoo Electronics Zemmix")]
DaewooElectronicsZemmix,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Emerson Arcadia 2001")]
EmersonArcadia2001,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Epoch Cassette Vision")]
EpochCassetteVision,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Epoch Super Cassette Vision")]
EpochSuperCassetteVision,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Fairchild Channel F")]
FairchildChannelF,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Funtech Super A'Can")]
FuntechSuperACan,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "GCE Vectrex")]
GCEVectrex,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Heber BBC Bridge Companion")]
HeberBBCBridgeCompanion,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Interton VC-4000")]
IntertonVC4000,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "JungleTac Vii")]
JungleTacVii,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "LeapFrog ClickStart")]
LeapFrogClickStart,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "LJN VideoArt")]
LJNVideoArt,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Magnavox Odyssey 2")]
MagnavoxOdyssey2,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Mattel Intellivision")]
MattelIntellivision,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "NEC PC Engine & TurboGrafx-16")]
NECPCEngineTurboGrafx16,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nichibutsu MyVision")]
NichibutsuMyVision,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo 64")]
Nintendo64,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo 64DD")]
Nintendo64DD,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo Famicom & Nintendo Entertainment System")]
NintendoFamicomNintendoEntertainmentSystem,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo Famicom Disk System")]
NintendoFamicomDiskSystem,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo Super Famicom & Super Nintendo Entertainment System")]
NintendoSuperFamicomSuperNintendoEntertainmentSystem,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Nintendo Switch")]
NintendoSwitch,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Philips Videopac+ & G7400")]
PhilipsVideopacPlusG7400,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "RCA Studio-II")]
RCAStudioII,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Sega 32X")]
Sega32X,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Sega Mark III & Master System")]
SegaMarkIIIMasterSystem,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Sega MegaDrive & Genesis")]
SegaMegaDriveGenesis,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Sega SG-1000")]
SegaSG1000,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "SNK NeoGeo")]
SNKNeoGeo,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "SSD COMPANY LIMITED XaviXPORT")]
SSDCOMPANYLIMITEDXaviXPORT,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "ViewMaster Interactive Vision")]
ViewMasterInteractiveVision,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "V.Tech CreatiVision")]
VTechCreatiVision,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "V.Tech V.Smile")]
VTechVSmile,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "V.Tech Socrates")]
VTechSocrates,
[System(Category = SystemCategory.OtherConsole, Available = false, LongName = "Worlds of Wonder ActionMax")]
WorldsOfWonderActionMax,
// End of other console delimiter
MarkerOtherConsoleEnd,
*/
#endregion
#region Computers
[System(Category = SystemCategory.Computer, LongName = "Acorn Archimedes", ShortName = "ARCH", HasCues = true, HasDat = true)]
AcornArchimedes,
[System(Category = SystemCategory.Computer, LongName = "Apple Macintosh", ShortName = "MAC", HasCues = true, HasDat = true, HasSbi = true)]
AppleMacintosh,
[System(Category = SystemCategory.Computer, LongName = "Commodore Amiga CD", ShortName = "ACD", HasCues = true, HasDat = true)]
CommodoreAmigaCD,
[System(Category = SystemCategory.Computer, LongName = "Fujitsu FM Towns series", ShortName = "FMT", HasCues = true, HasDat = true)]
FujitsuFMTownsseries,
[System(Category = SystemCategory.Computer, LongName = "IBM PC compatible", ShortName = "PC", HasCues = true, HasDat = true, HasSbi = true)]
IBMPCcompatible,
[System(Category = SystemCategory.Computer, LongName = "NEC PC-88 series", ShortName = "PC-88", HasCues = true, HasDat = true)]
NECPC88series,
[System(Category = SystemCategory.Computer, LongName = "NEC PC-98 series", ShortName = "PC-98", HasCues = true, HasDat = true)]
NECPC98series,
[System(Category = SystemCategory.Computer, LongName = "Sharp X68000", ShortName = "X68K", HasCues = true, HasDat = true)]
SharpX68000,
// End of computer section delimiter
MarkerComputerEnd,
#endregion
#region Arcade
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Amiga CUBO CD32")]
AmigaCUBOCD32,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "American Laser Games 3DO")]
AmericanLaserGames3DO,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Atari 3DO")]
Atari3DO,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Atronic")]
Atronic,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "AUSCOM System 1")]
AUSCOMSystem1,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Bally Game Magic")]
BallyGameMagic,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Capcom CP System III")]
CapcomCPSystemIII,
[System(Category = SystemCategory.Arcade, LongName = "funworld Photo Play", ShortName = "FPP", HasCues = true, HasDat = true)]
funworldPhotoPlay,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "FuRyu & Omron Purikura")]
FuRyuOmronPurikura,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Global VR PC-based Systems")]
GlobalVRVarious,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Global VR Vortek")]
GlobalVRVortek,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Global VR Vortek V3")]
GlobalVRVortekV3,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "ICE PC-based Hardware")]
ICEPCHardware,
[System(Category = SystemCategory.Arcade, LongName = "Incredible Technologies Eagle", ShortName = "ITE", HasCues = true, HasDat = true)]
IncredibleTechnologiesEagle,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Incredible Technologies PC-based Systems")]
IncredibleTechnologiesVarious,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "JVL iTouch")]
JVLiTouch,
[System(Category = SystemCategory.Arcade, LongName = "Konami e-Amusement", ShortName = "KEA", HasCues = true, HasDat = true)]
KonamieAmusement,
[System(Category = SystemCategory.Arcade, LongName = "Konami FireBeat", ShortName = "KFB", HasCues = true, HasDat = true)]
KonamiFireBeat,
[System(Category = SystemCategory.Arcade, LongName = "Konami M2", ShortName = "KM2", IsBanned = true, HasCues = true, HasDat = true)]
KonamiM2,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Konami Python")]
KonamiPython,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Konami Python 2")]
KonamiPython2,
[System(Category = SystemCategory.Arcade, LongName = "Konami System 573", ShortName = "KS573", HasCues = true, HasDat = true)]
KonamiSystem573,
[System(Category = SystemCategory.Arcade, LongName = "Konami System GV", ShortName = "KSGV", HasCues = true, HasDat = true)]
KonamiSystemGV,
[System(Category = SystemCategory.Arcade, LongName = "Konami Twinkle", ShortName = "kt")]
KonamiTwinkle,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Konami PC-based Systems")]
KonamiVarious,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Merit Industries Boardwalk")]
MeritIndustriesBoardwalk,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Merit Industries MegaTouch Force")]
MeritIndustriesMegaTouchForce,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Merit Industries MegaTouch ION")]
MeritIndustriesMegaTouchION,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Merit Industries MegaTouch Maxx")]
MeritIndustriesMegaTouchMaxx,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Merit Industries MegaTouch XL")]
MeritIndustriesMegaTouchXL,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Namco Purikura")]
NamcoPurikura,
[System(Category = SystemCategory.Arcade, LongName = "Namco · Sega · Nintendo Triforce", ShortName = "TRF", HasCues = true, HasDat = true)]
NamcoSegaNintendoTriforce,
[System(Category = SystemCategory.Arcade, LongName = "Namco System 12", ShortName = "ns12")]
NamcoSystem12,
[System(Category = SystemCategory.Arcade, LongName = "Namco System 246 / System 256", ShortName = "NS246", HasCues = true, HasDat = true)]
NamcoSystem246256,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "New Jatre CD-i")]
NewJatreCDi,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Nichibutsu High Rate System")]
NichibutsuHighRateSystem,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Nichibutsu Super CD")]
NichibutsuSuperCD,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Nichibutsu X-Rate System")]
NichibutsuXRateSystem,
[System(Category = SystemCategory.Arcade, LongName = "Panasonic M2", ShortName = "M2", IsBanned = true, HasCues = true, HasDat = true)]
PanasonicM2,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "PhotoPlay PC-based Systems")]
PhotoPlayVarious,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Raw Thrills PC-based Systems")]
RawThrillsVarious,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega ALLS")]
SegaALLS,
[System(Category = SystemCategory.Arcade, LongName = "Sega Chihiro", ShortName = "CHIHIRO", HasCues = true, HasDat = true)]
SegaChihiro,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Europa-R")]
SegaEuropaR,
[System(Category = SystemCategory.Arcade, LongName = "Sega Lindbergh", ShortName = "LINDBERGH", HasDat = true)]
SegaLindbergh,
[System(Category = SystemCategory.Arcade, LongName = "Sega Naomi", ShortName = "NAOMI", HasCues = true, HasDat = true)]
SegaNaomi,
[System(Category = SystemCategory.Arcade, LongName = "Sega Naomi 2", ShortName = "NAOMI2", HasCues = true, HasDat = true)]
SegaNaomi2,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega NAOMI Satellite Terminal PC")]
SegaNaomiSatelliteTerminalPC,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu")]
SegaNu,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu 1.1")]
SegaNu11,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu 2")]
SegaNu2,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega Nu SX")]
SegaNuSX,
[System(Category = SystemCategory.Arcade, LongName = "Sega RingEdge", ShortName = "SRE", HasDat = true)]
SegaRingEdge,
[System(Category = SystemCategory.Arcade, LongName = "Sega RingEdge 2", ShortName = "SRE2", HasDat = true)]
SegaRingEdge2,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega RingWide")]
SegaRingWide,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Sega System 32")]
SegaSystem32,
[System(Category = SystemCategory.Arcade, LongName = "Sega Titan Video", ShortName = "stv")]
SegaTitanVideo,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Seibu CATS System")]
SeibuCATSSystem,
[System(Category = SystemCategory.Arcade, LongName = "TAB-Austria Quizard", ShortName = "QUIZARD", HasCues = true, HasDat = true)]
TABAustriaQuizard,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "Tsunami TsuMo Multi-Game Motion System")]
TsunamiTsuMoMultiGameMotionSystem,
[System(Category = SystemCategory.Arcade, Available = false, LongName = "UltraCade PC-based Systems")]
UltraCade,
// End of arcade section delimiter
MarkerArcadeEnd,
#endregion
#region Other
[System(Category = SystemCategory.Other, LongName = "Audio CD", ShortName = "AUDIO-CD", IsBanned = true, HasCues = true, HasDat = true)]
AudioCD,
[System(Category = SystemCategory.Other, LongName = "BD-Video", ShortName = "BD-VIDEO", IsBanned = true, HasDat = true)]
BDVideo,
[System(Category = SystemCategory.Other, Available = false, LongName = "DVD-Audio")]
DVDAudio,
[System(Category = SystemCategory.Other, LongName = "DVD-Video", ShortName = "DVD-VIDEO", IsBanned = true, HasDat = true)]
DVDVideo,
[System(Category = SystemCategory.Other, LongName = "Enhanced CD", ShortName = "ENHANCED-CD", IsBanned = true)]
EnhancedCD,
[System(Category = SystemCategory.Other, LongName = "HD DVD-Video", ShortName = "HDDVD-VIDEO", IsBanned = true, HasDat = true)]
HDDVDVideo,
[System(Category = SystemCategory.Other, LongName = "Navisoft Naviken 2.1", ShortName = "NAVI21", IsBanned = true, HasCues = true, HasDat = true)]
NavisoftNaviken21,
[System(Category = SystemCategory.Other, LongName = "Palm OS", ShortName = "PALM", HasCues = true, HasDat = true)]
PalmOS,
[System(Category = SystemCategory.Other, LongName = "Photo CD", ShortName = "PHOTO-CD", HasCues = true, HasDat = true)]
PhotoCD,
[System(Category = SystemCategory.Other, LongName = "PlayStation GameShark Updates", ShortName = "PSXGS", HasCues = true, HasDat = true)]
PlayStationGameSharkUpdates,
[System(Category = SystemCategory.Other, LongName = "Pocket PC", ShortName = "PPC", HasCues = true, HasDat = true)]
PocketPC,
[System(Category = SystemCategory.Other, Available = false, LongName = "Psion")]
Psion,
[System(Category = SystemCategory.Other, Available = false, LongName = "Rainbow Disc")]
RainbowDisc,
[System(Category = SystemCategory.Other, LongName = "Sega Prologue 21 Multimedia Karaoke System", ShortName = "SP21", HasCues = true, HasDat = true)]
SegaPrologue21MultimediaKaraokeSystem,
[System(Category = SystemCategory.Other, Available = false, LongName = "Sharp Zaurus")]
SharpZaurus,
[System(Category = SystemCategory.Other, Available = false, LongName = "Sony Electronic Book")]
SonyElectronicBook,
[System(Category = SystemCategory.Other, Available = false, LongName = "Super Audio CD")]
SuperAudioCD,
[System(Category = SystemCategory.Other, LongName = "Tao iKTV", ShortName = "IKTV")]
TaoiKTV,
[System(Category = SystemCategory.Other, LongName = "Tomy Kiss-Site", ShortName = "KSITE", HasCues = true, HasDat = true)]
TomyKissSite,
[System(Category = SystemCategory.Other, LongName = "Video CD", ShortName = "VCD", IsBanned = true, HasCues = true, HasDat = true)]
VideoCD,
// End of other section delimiter
MarkerOtherEnd,
#endregion
}
/// <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,
};
}

File diff suppressed because it is too large Load Diff

View File

@@ -39,7 +39,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
RedumpOrg.Data.SortCategory? sort = null,
RedumpOrg.Data.SortDirection? sortDir = null,
DumpStatus? status = null,
RedumpSystem? system = null,
PhysicalSystem? system = null,
int limit = -1,
DiscSubpath[]? discSubpaths = null)
{
@@ -164,7 +164,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
RedumpOrg.Data.SortCategory? sort = null,
RedumpOrg.Data.SortDirection? sortDir = null,
DumpStatus? status = null,
RedumpSystem? system = null,
PhysicalSystem? system = null,
int limit = -1)
{
// Keep getting discs pages until there are none left

View File

@@ -1,5 +1,6 @@
using System;
using System.Threading.Tasks;
using SabreTools.RedumpLib.Data;
using SabreTools.RedumpLib.RedumpInfo.Data;
namespace SabreTools.RedumpLib.RedumpInfo
@@ -17,7 +18,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// <param name="useSubfolders">True to use named subfolders to store downloads, false to store directly in the output directory</param>
public static async Task<bool> DownloadAllPacks(this Client client, string? outDir, bool useSubfolders)
{
var systems = (RedumpSystem[])Enum.GetValues(typeof(RedumpSystem));
var systems = (PhysicalSystem[])Enum.GetValues(typeof(PhysicalSystem));
return await client.DownloadPacksForSystems(systems, outDir, useSubfolders);
}
@@ -25,18 +26,18 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// Download premade packs for an individual system
/// </summary>
/// <param name="client">RedumpClient for connectivity</param>
/// <param name="system">RedumpSystem to get all possible packs for</param>
/// <param name="system">PhysicalSystem to get all possible packs for</param>
/// <param name="outDir">Output directory to save data to</param>
/// <param name="useSubfolders">True to use named subfolders to store downloads, false to store directly in the output directory</param>
public static async Task<bool> DownloadPacksForSystem(this Client client,
RedumpSystem? system,
PhysicalSystem? system,
string? outDir,
bool useSubfolders)
{
if (system is null)
return false;
var systems = new RedumpSystem[] { system.Value };
var systems = new PhysicalSystem[] { system.Value };
return await client.DownloadPacksForSystems(systems, outDir, useSubfolders);
}
@@ -48,7 +49,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// <param name="outDir">Output directory to save data to</param>
/// <param name="useSubfolders">True to use named subfolders to store downloads, false to store directly in the output directory</param>
public static async Task<bool> DownloadPacksForSystems(this Client client,
RedumpSystem[] systems,
PhysicalSystem[] systems,
string? outDir,
bool useSubfolders)
{

View File

@@ -1,41 +0,0 @@
using SabreTools.RedumpLib.Attributes;
using SabreTools.RedumpLib.RedumpInfo.Data;
namespace SabreTools.RedumpLib.RedumpInfo
{
/// <summary>
/// Attribute specifc to Redump System values
/// </summary>
public class SystemAttribute : HumanReadableAttribute
{
/// <summary>
/// Category for the system
/// </summary>
public SystemCategory Category { get; set; }
/// <summary>
/// System is restricted to dumpers
/// </summary>
public bool IsBanned { get; set; } = false;
/// <summary>
/// System has a CUE pack
/// </summary>
public bool HasCues { get; set; } = false;
/// <summary>
/// System has a DAT
/// </summary>
public bool HasDat { get; set; } = false;
/// <summary>
/// System has a keys pack
/// </summary>
public bool HasKeys { get; set; } = false;
/// <summary>
/// System has an SBI pack
/// </summary>
public bool HasSbi { get; set; } = false;
}
}

View File

@@ -147,7 +147,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
RedumpOrg.Data.SortCategory? sort = null,
RedumpOrg.Data.SortDirection? sortDir = null,
DumpStatus? status = null,
RedumpSystem? system = null,
PhysicalSystem? system = null,
int? page = null)
{
var sb = new StringBuilder();
@@ -242,7 +242,7 @@ namespace SabreTools.RedumpLib.RedumpInfo
/// <param name="packType">Pack type</param>
/// <param name="system">System for download</param>
/// <remarks>Does not check for invalid systems</remarks>
public static string BuildPackUrl(PackType packType, RedumpSystem system)
public static string BuildPackUrl(PackType packType, PhysicalSystem system)
{
var sb = new StringBuilder();

View File

@@ -429,7 +429,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
SortCategory? sort = null,
SortDirection? sortDir = null,
DumpStatus? status = null,
RedumpSystem? system = null,
PhysicalSystem? system = null,
int? tracks = null,
bool comments = false,
bool contents = false,
@@ -569,7 +569,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
SortCategory? sort = null,
SortDirection? sortDir = null,
DumpStatus? status = null,
RedumpSystem? system = null,
PhysicalSystem? system = null,
int? tracks = null,
bool comments = false,
bool contents = false,
@@ -757,7 +757,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// <param name="system">System for filtering, null to retrieve for all systems at once</param>
/// <returns>String containing the page contents if successful, null on error</returns>
/// <remarks><paramref name="username"/> may have to match the logged-in user</remarks>
public async Task<string?> DownloadSingleList(bool have, string username, RedumpSystem? system)
public async Task<string?> DownloadSingleList(bool have, string username, PhysicalSystem? system)
{
string systemName = system.ShortName() ?? "all";
Console.WriteLine($"Processing {(have ? "have" : "miss")} list for {username} for {systemName}");
@@ -792,7 +792,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// <param name="outDir">Output directory to save data to</param>
/// <returns>True if all data was downloaded, false otherwise</returns>
/// <remarks><paramref name="username"/> may have to match the logged-in user</remarks>
public async Task<bool> DownloadSingleList(bool have, string username, RedumpSystem? system, string? outDir)
public async Task<bool> DownloadSingleList(bool have, string username, PhysicalSystem? system, string? outDir)
{
// If no output directory is defined, use the current directory instead
if (string.IsNullOrEmpty(outDir))
@@ -835,7 +835,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// <param name="packType">Pack type to use to determine the download URL</param>
/// <param name="system">System to download packs for</param>
/// <returns>Byte array containing the downloaded pack, null on error</returns>
public async Task<byte[]?> DownloadSinglePack(PackType packType, RedumpSystem? system)
public async Task<byte[]?> DownloadSinglePack(PackType packType, PhysicalSystem? system)
{
try
{
@@ -887,7 +887,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// <param name="packType">Pack type to use to determine the download URL</param>
/// <param name="system">System to download packs for</param>
/// <param name="outDir">Output directory to save data to</param>
public async Task<bool> DownloadSinglePack(PackType packType, RedumpSystem? system, string? outDir)
public async Task<bool> DownloadSinglePack(PackType packType, PhysicalSystem? system, string? outDir)
{
try
{
@@ -955,7 +955,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// <param name="system">System to download packs for</param>
/// <param name="outDir">Output directory to save data to</param>
/// <param name="subfolder">Named subfolder for the pack, used optionally</param>
public async Task<bool> DownloadSinglePack(PackType packType, RedumpSystem? system, string? outDir, string? subfolder)
public async Task<bool> DownloadSinglePack(PackType packType, PhysicalSystem? system, string? outDir, string? subfolder)
{
try
{
@@ -1563,7 +1563,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// </summary>
/// <param name="packType">Pack type to use to determine the download URL</param>
/// <param name="system">Systems to download packs for</param>
public async Task<Dictionary<RedumpSystem, byte[]>> DownloadPacks(PackType packType, RedumpSystem[] systems)
public async Task<Dictionary<PhysicalSystem, byte[]>> DownloadPacks(PackType packType, PhysicalSystem[] systems)
{
// Determine if the pack type is valid
if (!Enum.IsDefined(typeof(PackType), packType))
@@ -1572,7 +1572,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
return [];
}
var packsDictionary = new Dictionary<RedumpSystem, byte[]>();
var packsDictionary = new Dictionary<PhysicalSystem, byte[]>();
foreach (var system in systems)
{
string longName = system.LongName() ?? $"UNKNOWN_{system}";
@@ -1602,7 +1602,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// <param name="packType">Pack type to use to determine the download URL</param>
/// <param name="systems">Systems to download packs for</param>
/// <param name="outDir">Output directory to save data to</param>
public async Task<bool> DownloadPacks(PackType packType, RedumpSystem[] systems, string? outDir)
public async Task<bool> DownloadPacks(PackType packType, PhysicalSystem[] systems, string? outDir)
{
// Determine if the pack type is valid
if (!Enum.IsDefined(typeof(PackType), packType))
@@ -1638,7 +1638,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// <param name="systems">Systems to download packs for</param>
/// <param name="outDir">Output directory to save data to</param>
/// <param name="subfolder">Named subfolder for the pack, used optionally</param>
public async Task<bool> DownloadPacks(PackType packType, RedumpSystem[] systems, string? outDir, string? subfolder)
public async Task<bool> DownloadPacks(PackType packType, PhysicalSystem[] systems, string? outDir, string? subfolder)
{
// Determine if the pack type is valid
if (!Enum.IsDefined(typeof(PackType), packType))
@@ -1755,7 +1755,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// <param name="packType">Pack type to use to determine the support status</param>
/// <param name="system">Systems to determine pack availability for</param>
/// <returns>True if the pack is available for a system, false otherwise</returns>
private static bool PackTypeToAvailable(PackType packType, RedumpSystem system)
private static bool PackTypeToAvailable(PackType packType, PhysicalSystem system)
{
return packType switch
{

View File

@@ -1,18 +1,19 @@
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SabreTools.RedumpLib.Data;
using SabreTools.RedumpLib.RedumpOrg.Data;
namespace SabreTools.RedumpLib.RedumpOrg.Converters
{
/// <summary>
/// Serialize RedumpSystem enum values
/// Serialize PhysicalSystem enum values
/// </summary>
public class SystemConverter : JsonConverter<RedumpSystem?>
public class PhysicalSystemConverter : JsonConverter<PhysicalSystem?>
{
public override bool CanRead { get { return true; } }
public override RedumpSystem? ReadJson(JsonReader reader, Type objectType, RedumpSystem? existingValue, bool hasExistingValue, JsonSerializer serializer)
public override PhysicalSystem? ReadJson(JsonReader reader, Type objectType, PhysicalSystem? existingValue, bool hasExistingValue, JsonSerializer serializer)
{
// If we have a value already, don't overwrite it
if (hasExistingValue)
@@ -23,12 +24,12 @@ namespace SabreTools.RedumpLib.RedumpOrg.Converters
return null;
// Try to parse the value
return value.ToRedumpSystem();
return value.ToPhysicalSystem();
}
public override void WriteJson(JsonWriter writer, RedumpSystem? value, JsonSerializer serializer)
public override void WriteJson(JsonWriter writer, PhysicalSystem? value, JsonSerializer serializer)
{
JToken t = JToken.FromObject(value.ShortName() ?? string.Empty);
JToken t = JToken.FromObject(value.ShortNameAlt() ?? string.Empty);
t.WriteTo(writer);
}
}

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -65,7 +65,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
SortCategory? sort = null,
SortDirection? sortDir = null,
DumpStatus? status = null,
RedumpSystem? system = null,
PhysicalSystem? system = null,
int? tracks = null,
bool comments = false,
bool contents = false,
@@ -234,7 +234,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
SortCategory? sort = null,
SortDirection? sortDir = null,
DumpStatus? status = null,
RedumpSystem? system = null,
PhysicalSystem? system = null,
int? tracks = null,
bool comments = false,
bool contents = false,

View File

@@ -411,10 +411,10 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// <summary>
/// Format a EDCSection
/// </summary>
internal static void FormatOutputData(StringBuilder output, EDCSection? section, RedumpSystem? system)
internal static void FormatOutputData(StringBuilder output, EDCSection? section, PhysicalSystem? system)
{
// Check the section can be added
if (system != RedumpSystem.SonyPlayStation)
if (system != PhysicalSystem.SonyPlayStation)
return;
output.AppendLine("EDC:");
@@ -456,7 +456,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// </summary>
internal static void FormatOutputData(StringBuilder output,
CopyProtectionSection? section,
RedumpSystem? system)
PhysicalSystem? system)
{
// Optional sections have to exist to format
if (section is null)
@@ -474,7 +474,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
output.AppendLine("Copy Protection:");
if (system == RedumpSystem.SonyPlayStation)
if (system == PhysicalSystem.SonyPlayStation)
{
AddIfExists(output, Template.PlayStationAntiModchipField, section.AntiModchip.LongName(), 1);
AddIfExists(output, Template.PlayStationLibCryptField, section.LibCrypt.LongName(), 1);
@@ -508,7 +508,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
internal static void FormatOutputData(StringBuilder output,
SizeAndChecksumsSection? section,
PhysicalMediaType? mediaType,
RedumpSystem? system,
PhysicalSystem? system,
bool enableRedumpCompatibility)
{
output.AppendLine("Size & Checksum:");

View File

@@ -1,5 +1,6 @@
using System;
using System.Threading.Tasks;
using SabreTools.RedumpLib.Data;
using SabreTools.RedumpLib.RedumpOrg.Data;
namespace SabreTools.RedumpLib.RedumpOrg
@@ -17,7 +18,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// <param name="useSubfolders">True to use named subfolders to store downloads, false to store directly in the output directory</param>
public static async Task<bool> DownloadAllPacks(this Client client, string? outDir, bool useSubfolders)
{
var systems = (RedumpSystem[])Enum.GetValues(typeof(RedumpSystem));
var systems = (PhysicalSystem[])Enum.GetValues(typeof(PhysicalSystem));
return await client.DownloadPacksForSystems(systems, outDir, useSubfolders);
}
@@ -25,18 +26,18 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// Download premade packs for an individual system
/// </summary>
/// <param name="client">RedumpClient for connectivity</param>
/// <param name="system">RedumpSystem to get all possible packs for</param>
/// <param name="system">PhysicalSystem to get all possible packs for</param>
/// <param name="outDir">Output directory to save data to</param>
/// <param name="useSubfolders">True to use named subfolders to store downloads, false to store directly in the output directory</param>
public static async Task<bool> DownloadPacksForSystem(this Client client,
RedumpSystem? system,
PhysicalSystem? system,
string? outDir,
bool useSubfolders)
{
if (system is null)
return false;
var systems = new RedumpSystem[] { system.Value };
var systems = new PhysicalSystem[] { system.Value };
return await client.DownloadPacksForSystems(systems, outDir, useSubfolders);
}
@@ -48,7 +49,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// <param name="outDir">Output directory to save data to</param>
/// <param name="useSubfolders">True to use named subfolders to store downloads, false to store directly in the output directory</param>
public static async Task<bool> DownloadPacksForSystems(this Client client,
RedumpSystem[] systems,
PhysicalSystem[] systems,
string? outDir,
bool useSubfolders)
{

View File

@@ -187,7 +187,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
SortCategory? sort = null,
SortDirection? sortDir = null,
DumpStatus? status = null,
RedumpSystem? system = null,
PhysicalSystem? system = null,
int? tracks = null,
bool comments = false,
bool contents = false,
@@ -389,7 +389,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// <remarks>Does not check for invalid usernames</remarks>
public static string BuildListUrl(string dumper,
bool? have = null,
RedumpSystem? system = null)
PhysicalSystem? system = null)
{
var sb = new StringBuilder();
@@ -445,7 +445,7 @@ namespace SabreTools.RedumpLib.RedumpOrg
/// <param name="packType">Pack type</param>
/// <param name="system">System for download</param>
/// <remarks>Does not check for invalid systems</remarks>
public static string BuildPackUrl(PackType packType, RedumpSystem system)
public static string BuildPackUrl(PackType packType, PhysicalSystem system)
{
var sb = new StringBuilder();