diff --git a/SabreTools.Helper/Dats/Partials/DatFile.Bucketing.cs b/SabreTools.Helper/Dats/Partials/DatFile.Bucketing.cs index 9847db16..41c324c9 100644 --- a/SabreTools.Helper/Dats/Partials/DatFile.Bucketing.cs +++ b/SabreTools.Helper/Dats/Partials/DatFile.Bucketing.cs @@ -386,6 +386,11 @@ namespace SabreTools.Helper.Dats List games = Keys.ToList(); foreach (string game in games) { + if (game.Contains("galaga")) + { + logger.Verbose(""); + } + // Determine if the game has any devices or not if (this[game][0].Machine.Devices.Count > 0) { @@ -581,9 +586,12 @@ namespace SabreTools.Helper.Dats games = Keys.ToList(); foreach (string game in games) { - if (this[game][0].Machine.MachineType == MachineType.Bios || this[game][0].Machine.MachineType == MachineType.Device) + if (this[game].Count > 0) { - Remove(game); + if (this[game][0].Machine.MachineType == MachineType.Bios || this[game][0].Machine.MachineType == MachineType.Device) + { + Remove(game); + } } } } diff --git a/SabreTools.Helper/Dats/Partials/DatFile.Parsers.cs b/SabreTools.Helper/Dats/Partials/DatFile.Parsers.cs index 510bcb08..e3e797bf 100644 --- a/SabreTools.Helper/Dats/Partials/DatFile.Parsers.cs +++ b/SabreTools.Helper/Dats/Partials/DatFile.Parsers.cs @@ -1265,6 +1265,7 @@ namespace SabreTools.Helper.Dats CloneOf = xtr.GetAttribute("cloneof") ?? "", SampleOf = xtr.GetAttribute("sampleof") ?? "", + Devices = new List(), MachineType = xtr.GetAttribute("isbios") == "yes" ? MachineType.Bios : xtr.GetAttribute("isdevice") == "yes" ? MachineType.Device : @@ -1273,6 +1274,7 @@ namespace SabreTools.Helper.Dats Runnable = xtr.GetAttribute("runnable") == "yes" || xtr.GetAttribute("runnable") == null, }; + // Get the supported value from the reader if (subreader.GetAttribute("supported") != null) { switch (subreader.GetAttribute("supported")) @@ -1286,7 +1288,6 @@ namespace SabreTools.Helper.Dats } } - if (superdat && !keep) { string tempout = Regex.Match(machine.Name, @".*?\\(.*)").Groups[1].Value; @@ -1363,7 +1364,16 @@ namespace SabreTools.Helper.Dats ParseAddHelper(olrom, filter, trim, single, root, clean, logger, out key); break; - // For Software List only + // For Software List and MAME listxml only + case "device_ref": + string device = subreader.GetAttribute("name"); + if (!machine.Devices.Contains(device)) + { + machine.Devices.Add(device); + } + subreader.Read(); + + break; case "publisher": publisher = subreader.ReadElementContentAsString(); break; @@ -1686,6 +1696,7 @@ namespace SabreTools.Helper.Dats break; } } + xtr.Skip(); break; case "dir":