mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-07-08 18:06:41 +00:00
Add "boot" element for OpenMSX, fix missing skip
This commit is contained in:
@@ -9,6 +9,8 @@ namespace SabreTools.Data.Models.Metadata
|
||||
{
|
||||
#region Properties
|
||||
|
||||
public string? Boot { get; set; }
|
||||
|
||||
public Rom? MegaRom { get; set; }
|
||||
|
||||
public Original? Original { get; set; }
|
||||
@@ -26,6 +28,7 @@ namespace SabreTools.Data.Models.Metadata
|
||||
{
|
||||
var obj = new Dump();
|
||||
|
||||
obj.Boot = Boot;
|
||||
if (MegaRom is not null)
|
||||
obj.MegaRom = MegaRom.Clone() as Rom;
|
||||
if (Original is not null)
|
||||
@@ -45,6 +48,11 @@ namespace SabreTools.Data.Models.Metadata
|
||||
if (other is null)
|
||||
return false;
|
||||
|
||||
if ((Boot is null) ^ (other.Boot is null))
|
||||
return false;
|
||||
else if (Boot is not null && !Boot.Equals(other.Boot, StringComparison.OrdinalIgnoreCase))
|
||||
return false;
|
||||
|
||||
// Sub-items
|
||||
if ((MegaRom is null) ^ (other.MegaRom is null))
|
||||
return false;
|
||||
|
||||
@@ -6,6 +6,9 @@ namespace SabreTools.Data.Models.OpenMSX
|
||||
[XmlRoot("dump")]
|
||||
public class Dump
|
||||
{
|
||||
[XmlElement("boot")]
|
||||
public string? Boot { get; set; }
|
||||
|
||||
[XmlElement("original")]
|
||||
public Original? Original { get; set; }
|
||||
|
||||
|
||||
@@ -428,6 +428,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
{
|
||||
MachineIndex = machineIndex,
|
||||
SourceIndex = sourceIndex,
|
||||
Comment = items[i].Boot,
|
||||
};
|
||||
|
||||
var original = items[i].Original;
|
||||
|
||||
@@ -816,7 +816,11 @@ namespace SabreTools.Metadata.DatFiles
|
||||
Start = romItem.Start ?? romItem.Offset,
|
||||
};
|
||||
|
||||
var dumpRom = new Data.Models.Metadata.Dump { Rom = rom };
|
||||
var dumpRom = new Data.Models.Metadata.Dump
|
||||
{
|
||||
Boot = romItem.Comment,
|
||||
Rom = rom,
|
||||
};
|
||||
if (original is not null)
|
||||
{
|
||||
var newOriginal = new Data.Models.Metadata.Original
|
||||
|
||||
@@ -51,6 +51,7 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
var dump_rom = new Data.Models.OpenMSX.Dump
|
||||
{
|
||||
Original = original,
|
||||
Boot = "boot",
|
||||
Rom = rom,
|
||||
};
|
||||
|
||||
@@ -65,6 +66,7 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
var dump_megarom = new Data.Models.OpenMSX.Dump
|
||||
{
|
||||
Original = original,
|
||||
Boot = "boot",
|
||||
Rom = megarom,
|
||||
};
|
||||
|
||||
@@ -79,6 +81,7 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
var dump_sccpluscart = new Data.Models.OpenMSX.Dump
|
||||
{
|
||||
Original = original,
|
||||
Boot = "boot",
|
||||
Rom = sccpluscart,
|
||||
};
|
||||
|
||||
@@ -127,6 +130,8 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
private static void Validate(Data.Models.OpenMSX.Dump? dump)
|
||||
{
|
||||
Assert.NotNull(dump);
|
||||
Assert.Equal("boot", dump.Boot);
|
||||
|
||||
Validate(dump.Original);
|
||||
Validate(dump.Rom);
|
||||
}
|
||||
|
||||
@@ -66,6 +66,8 @@ namespace SabreTools.Serialization.CrossModel
|
||||
if (original is not null)
|
||||
dump.Original = ConvertFromInternalModel(original);
|
||||
|
||||
dump.Boot = item.Boot;
|
||||
|
||||
var rom = item.Rom;
|
||||
if (rom is not null)
|
||||
dump.Rom = ConvertRomFromInternalModel(rom);
|
||||
|
||||
@@ -65,6 +65,8 @@ namespace SabreTools.Serialization.CrossModel
|
||||
if (item.Original is not null)
|
||||
dump.Original = ConvertToInternalModel(item.Original);
|
||||
|
||||
dump.Boot = item.Boot;
|
||||
|
||||
if (item.Rom is not null)
|
||||
{
|
||||
switch (item.Rom)
|
||||
|
||||
@@ -117,6 +117,7 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
var dump_rom = new Data.Models.OpenMSX.Dump
|
||||
{
|
||||
Original = original,
|
||||
Boot = "boot",
|
||||
Rom = rom,
|
||||
};
|
||||
|
||||
@@ -131,6 +132,7 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
var dump_megarom = new Data.Models.OpenMSX.Dump
|
||||
{
|
||||
Original = original,
|
||||
Boot = "boot",
|
||||
Rom = megarom,
|
||||
};
|
||||
|
||||
@@ -145,6 +147,7 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
var dump_sccpluscart = new Data.Models.OpenMSX.Dump
|
||||
{
|
||||
Original = original,
|
||||
Boot = "boot",
|
||||
Rom = sccpluscart,
|
||||
};
|
||||
|
||||
@@ -193,6 +196,8 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
private static void Validate(Data.Models.OpenMSX.Dump? dump)
|
||||
{
|
||||
Assert.NotNull(dump);
|
||||
Assert.Equal("boot", dump.Boot);
|
||||
|
||||
Validate(dump.Original);
|
||||
Validate(dump.Rom);
|
||||
}
|
||||
|
||||
@@ -136,6 +136,12 @@ namespace SabreTools.Serialization.Readers
|
||||
|
||||
switch (reader.Name)
|
||||
{
|
||||
case "boot":
|
||||
if (obj.Boot is not null && Debug)
|
||||
Console.WriteLine($"'{reader.Name}' element already found, overwriting");
|
||||
|
||||
obj.Boot = reader.ReadElementContentAsString();
|
||||
break;
|
||||
case "original":
|
||||
if (obj.Original is not null && Debug)
|
||||
Console.WriteLine($"'{reader.Name}' element already found, overwriting");
|
||||
@@ -154,6 +160,7 @@ namespace SabreTools.Serialization.Readers
|
||||
|
||||
default:
|
||||
if (Debug) Console.Error.WriteLine($"Element '{reader.Name}' is not recognized");
|
||||
reader.Skip();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,6 +100,8 @@ namespace SabreTools.Serialization.Writers
|
||||
if (obj.Original is not null)
|
||||
WriteOriginal(obj.Original, writer);
|
||||
|
||||
writer.WriteOptionalElementString("boot", obj.Boot);
|
||||
|
||||
if (obj.Rom is not null)
|
||||
WriteRomBase(obj.Rom, writer);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user