diff --git a/SabreTools.Library/DatFiles/DatFile.cs b/SabreTools.Library/DatFiles/DatFile.cs index df6afc55..88c0b253 100644 --- a/SabreTools.Library/DatFiles/DatFile.cs +++ b/SabreTools.Library/DatFiles/DatFile.cs @@ -1903,8 +1903,10 @@ namespace SabreTools.Library.DatFiles // If we are matching based on names of any sort if ((replaceMode & ReplaceMode.Description) != 0 + || (replaceMode & ReplaceMode.MachineType) != 0 || (replaceMode & ReplaceMode.Year) != 0 - || (replaceMode & ReplaceMode.Manufacturer) != 0) + || (replaceMode & ReplaceMode.Manufacturer) != 0 + || (replaceMode & ReplaceMode.Parents) != 0) { // For comparison's sake, we want to use Machine Name as the base ordering BucketBy(SortedBy.Game, DedupeType.Full); @@ -1928,6 +1930,10 @@ namespace SabreTools.Library.DatFiles newDatItem.MachineDescription = this[key][0].MachineDescription; } } + if ((replaceMode & ReplaceMode.MachineType) != 0) + { + newDatItem.MachineType = this[key][0].MachineType; + } if ((replaceMode & ReplaceMode.Year) != 0) { newDatItem.Year = this[key][0].Year; @@ -1936,6 +1942,12 @@ namespace SabreTools.Library.DatFiles { newDatItem.Manufacturer = this[key][0].Manufacturer; } + if ((replaceMode & ReplaceMode.Parents) != 0) + { + newDatItem.CloneOf = this[key][0].CloneOf; + newDatItem.RomOf = this[key][0].RomOf; + newDatItem.SampleOf = this[key][0].SampleOf; + } } newDatItems.Add(newDatItem); diff --git a/SabreTools.Library/Data/Flags.cs b/SabreTools.Library/Data/Flags.cs index f990e409..93c7733c 100644 --- a/SabreTools.Library/Data/Flags.cs +++ b/SabreTools.Library/Data/Flags.cs @@ -260,8 +260,10 @@ namespace SabreTools.Library.Data // Sorted by machine name Description = Hash << 1, - Year = Description << 1, + MachineType = Description << 1, + Year = MachineType << 1, Manufacturer = Year << 1, + Parents = Manufacturer << 1, } /// diff --git a/SabreTools.Library/README.1ST b/SabreTools.Library/README.1ST index b5e5bf40..2cb6383f 100644 --- a/SabreTools.Library/README.1ST +++ b/SabreTools.Library/README.1ST @@ -1024,6 +1024,14 @@ Options: will only be overwritten if they are the same as the machine names. + -ugt, --update-game-type Update machine type from base DATs + This flag enables updating of machine type from base DATs. + [Both base-replace and reverse-base-replace] + + -up, --update-parents Update machine parents from base DATs + This flag enables updating of machine parents (romof, cloneof, + sampleof) from base DATs. [Both base-replace and reverse-base-replace] + -uy, --update-year Update machine years from base DATs This flag enables updating of machine years from base DATs. [Both base-replace and reverse-base-replace] diff --git a/SabreTools/SabreTools.Help.cs b/SabreTools/SabreTools.Help.cs index c9e665ac..27a2e00e 100644 --- a/SabreTools/SabreTools.Help.cs +++ b/SabreTools/SabreTools.Help.cs @@ -1341,6 +1341,18 @@ namespace SabreTools longDescription: "This flag enables updating of machine descriptions from base DATs."); } } + private static Feature _updateGameTypeFlag + { + get + { + return new Feature( + "update-game-type", + new List() { "-ugt", "--update-game-type" }, + "Update machine type from base DATs", + FeatureType.Flag, + longDescription: "This flag enables updating of machine type from base DATs."); + } + } private static Feature _updateHashesFlag { get @@ -1377,6 +1389,18 @@ namespace SabreTools longDescription: "This flag enables updating of item names from base DATs."); } } + private static Feature _updateParentsFlag + { + get + { + return new Feature( + "update-parents", + new List() { "-up", "--update-parents" }, + "Update machine parents from base DATs", + FeatureType.Flag, + longDescription: "This flag enables updating of machine parents (romof, cloneof, sampleof) from base DATs."); + } + } private static Feature _updateYearFlag { get @@ -2647,16 +2671,20 @@ The stats that are outputted are as follows: update[_baseReplaceFlag].AddFeature(_updateHashesFlag); update[_baseReplaceFlag].AddFeature(_updateDescriptionFlag); update[_baseReplaceFlag][_updateDescriptionFlag].AddFeature(_onlySameFlag); + update[_baseReplaceFlag].AddFeature(_updateGameTypeFlag); update[_baseReplaceFlag].AddFeature(_updateYearFlag); update[_baseReplaceFlag].AddFeature(_updateManufacturerFlag); + update[_baseReplaceFlag].AddFeature(_updateParentsFlag); update.AddFeature(_reverseBaseReplaceFlag); update[_reverseBaseReplaceFlag].AddFeature(_baseDatListInput); update[_reverseBaseReplaceFlag].AddFeature(_updateNamesFlag); update[_reverseBaseReplaceFlag].AddFeature(_updateHashesFlag); update[_reverseBaseReplaceFlag].AddFeature(_updateDescriptionFlag); update[_reverseBaseReplaceFlag][_updateDescriptionFlag].AddFeature(_onlySameFlag); + update[_reverseBaseReplaceFlag].AddFeature(_updateGameTypeFlag); update[_reverseBaseReplaceFlag].AddFeature(_updateYearFlag); update[_reverseBaseReplaceFlag].AddFeature(_updateManufacturerFlag); + update[_reverseBaseReplaceFlag].AddFeature(_updateParentsFlag); update.AddFeature(_diffCascadeFlag); update[_diffCascadeFlag].AddFeature(_skipFirstOutputFlag); update.AddFeature(_diffReverseCascadeFlag); diff --git a/SabreTools/SabreTools.cs b/SabreTools/SabreTools.cs index 72f5e7e7..8e1bdcf0 100644 --- a/SabreTools/SabreTools.cs +++ b/SabreTools/SabreTools.cs @@ -570,6 +570,9 @@ namespace SabreTools case "update-description": replaceMode |= ReplaceMode.Description; break; + case "update-game-type": + replaceMode |= ReplaceMode.MachineType; + break; case "update-hashes": replaceMode |= ReplaceMode.Hash; break; @@ -579,6 +582,9 @@ namespace SabreTools case "update-names": replaceMode |= ReplaceMode.ItemName; break; + case "update-parents": + replaceMode |= ReplaceMode.Parents; + break; case "update-year": replaceMode |= ReplaceMode.Year; break;