33 Commits
1.4.7 ... 1.5.0

Author SHA1 Message Date
Matt Nadareski
5282db965f Bump version 2024-11-13 00:12:59 -05:00
Matt Nadareski
33217a7efe Remove "overflow" fields finally 2024-11-13 00:09:20 -05:00
Matt Nadareski
c8583589d6 Add .NET 9 to target frameworks 2024-11-12 23:58:35 -05:00
Matt Nadareski
6ed2b406d7 Add .NET 9 to target frameworks 2024-11-12 23:57:23 -05:00
Matt Nadareski
4b08e0f5dd Add keys to Rom for MD2/4 2024-11-12 12:41:39 -05:00
Matt Nadareski
e8259fed12 Add placeholders to main hashfile 2024-11-12 12:40:17 -05:00
Matt Nadareski
d06df28f72 Add placeholder models for MD2/MD4 2024-11-12 12:39:38 -05:00
Matt Nadareski
f73ff87922 Make CHD headers (mostly) serializable 2024-11-12 12:31:23 -05:00
Matt Nadareski
dd6b79a21b Use collection expressions 2024-11-12 12:23:47 -05:00
Matt Nadareski
d3daa2c4aa Add GameHeader models 2024-11-04 13:45:05 -05:00
Matt Nadareski
1620d00edf Technically use CodecType 2024-10-31 13:42:37 -04:00
Matt Nadareski
5565fa2fc3 Bump version 2024-10-31 11:08:14 -04:00
Matt Nadareski
e088e203ea Tags are tags, use them 2024-10-31 00:26:46 -04:00
Matt Nadareski
acc8d95930 Correctly redefine const as enum 2024-10-31 00:15:43 -04:00
Matt Nadareski
1a76c59827 Port significantly more CHD info 2024-10-31 00:05:19 -04:00
Matt Nadareski
8725ec0337 Port more CHD info from SabreTools 2024-10-19 23:58:56 -04:00
Matt Nadareski
8991cc460d Correct info for IS-CAB components 2024-10-03 02:49:47 -04:00
Matt Nadareski
98ce8b65ec Correct info for IS-CAB file groups 2024-10-03 02:35:15 -04:00
Matt Nadareski
ca58343c30 Bump version 2024-10-01 12:32:33 -04:00
Matt Nadareski
2f637e0012 Remove ValueTuple requirement 2024-10-01 01:41:43 -04:00
Matt Nadareski
80172942fd Mark extended TAR header info 2024-09-26 14:08:55 -04:00
Matt Nadareski
aa0960b42f Separate entry from archive in TAR 2024-09-26 13:45:49 -04:00
Matt Nadareski
2554f64277 Add layout for TAR header 2024-09-26 12:15:59 -04:00
Matt Nadareski
4c5c960915 Slight tweak to TAR header (nw) 2024-09-26 12:03:20 -04:00
Matt Nadareski
1cb49163dd Upate MinValueTupleBridge to 0.2.1 2024-09-25 10:46:16 -04:00
Matt Nadareski
d144dd47a1 Bump version 2024-08-08 14:19:26 -04:00
Matt Nadareski
c4247c7ccb Move readme back to where it should be 2024-08-08 14:16:26 -04:00
Matt Nadareski
1e77437167 Fixup csproj a bit 2024-08-08 14:15:30 -04:00
Matt Nadareski
3d79e07d76 Move project to subfolder 2024-08-08 14:11:45 -04:00
Matt Nadareski
9d50d577ab Fix things found during NDecrypt usage 2024-08-08 13:18:47 -04:00
Matt Nadareski
494ca175fb Fix layout of ISv3 directory 2024-06-03 11:57:30 -04:00
Matt Nadareski
73b3d4a7a8 Bump version 2024-05-15 14:09:49 -04:00
Matt Nadareski
bd40158423 Forgot to check... 2024-05-15 14:08:14 -04:00
719 changed files with 1638 additions and 2024 deletions

View File

@@ -16,7 +16,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
dotnet-version: 9.0.x
- name: Restore dependencies
run: dotnet restore
@@ -28,13 +28,13 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: 'Nuget Package'
path: 'bin/Release/*.nupkg'
path: 'SabreTools.Models/bin/Release/*.nupkg'
- name: Upload to rolling
uses: ncipollo/release-action@v1.14.0
with:
allowUpdates: True
artifacts: 'bin/Release/*.nupkg'
artifacts: 'SabreTools.Models/bin/Release/*.nupkg'
body: 'Last built commit: ${{ github.sha }}'
name: 'Rolling Release'
prerelease: True

View File

@@ -11,7 +11,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
dotnet-version: 9.0.x
- name: Build
run: dotnet build

View File

@@ -1,24 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.ArchiveDotOrg
{
[XmlRoot("files")]
public class Files
{
[XmlElement("file")]
public File?[]? File { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,42 +0,0 @@
using System;
namespace SabreTools.Models.CHD
{
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.h"/>
public enum CompressionType : uint
{
#region V1
CHDCOMPRESSION_NONE = 0,
CHDCOMPRESSION_ZLIB = 1,
#endregion
#region V3
CHDCOMPRESSION_ZLIB_PLUS = 2,
#endregion
#region V4
CHDCOMPRESSION_AV = 3,
#endregion
}
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.h"/>
[Flags]
public enum Flags : uint
{
/// <summary>
/// Set if this drive has a parent
/// </summary>
DriveHasParent = 0x00000001,
/// <summary>
/// Set if this drive allows writes
/// </summary>
DriveAllowsWrites = 0x00000002,
}
}

View File

@@ -1,23 +0,0 @@
using System;
namespace SabreTools.Models.InstallShieldCabinet
{
/// <see href="https://github.com/twogood/unshield/blob/main/lib/cabfile.h"/>
[Flags]
public enum FileFlags : ushort
{
FILE_SPLIT = 1,
FILE_OBFUSCATED = 2,
FILE_COMPRESSED = 4,
FILE_INVALID = 8,
}
/// <see href="https://github.com/twogood/unshield/blob/main/lib/cabfile.h"/>
public enum LinkFlags : byte
{
LINK_NONE = 0,
LINK_PREV = 1,
LINK_NEXT = 2,
LINK_BOTH = 3,
}
}

View File

@@ -1,14 +0,0 @@
namespace SabreTools.Models.Listrom
{
public class MetadataFile
{
public Set[]? Set { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,25 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.Listxml
{
[XmlRoot("analog")]
public class Analog
{
[Required]
[XmlAttribute("mask")]
public string? Mask { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,25 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.Listxml
{
[XmlRoot("device_ref")]
public class DeviceRef
{
[Required]
[XmlAttribute("name")]
public string? Name { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,25 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.Listxml
{
[XmlRoot("extension")]
public class Extension
{
[Required]
[XmlAttribute("name")]
public string? Name { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,28 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.Listxml
{
[XmlRoot("port")]
public class Port
{
[Required]
[XmlAttribute("tag")]
public string? Tag { get; set; }
[XmlElement("analog")]
public Analog[]? Analog { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,25 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.Listxml
{
[XmlRoot("sample")]
public class Sample
{
[Required]
[XmlAttribute("name")]
public string? Name { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,28 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.Listxml
{
[XmlRoot("slot")]
public class Slot
{
[Required]
[XmlAttribute("name")]
public string? Name { get; set; }
[XmlElement("slotoption")]
public SlotOption[]? SlotOption { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,26 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.Listxml
{
[XmlRoot("sound")]
public class Sound
{
/// <remarks>Numeric</remarks>
[Required]
[XmlAttribute("channels")]
public string? Channels { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,25 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.Logiqx
{
[XmlRoot("archive")]
public class Archive
{
[Required]
[XmlAttribute("name")]
public string? Name { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,25 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.Logiqx
{
[XmlRoot("device_ref")]
public class DeviceRef
{
[Required]
[XmlAttribute("name")]
public string? Name { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,25 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.Logiqx
{
[XmlRoot("sample")]
public class Sample
{
[Required]
[XmlAttribute("name")]
public string? Name { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,24 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.OfflineList
{
[XmlRoot("canOpen")]
public class CanOpen
{
[XmlElement("extension")]
public string[]? Extension { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,27 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.OfflineList
{
[XmlRoot("datURL")]
public class DatUrl
{
[XmlAttribute("fileName")]
public string? FileName { get; set; }
[XmlText]
public string? Content { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,27 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.OfflineList
{
[XmlRoot("romCRC")]
public class FileRomCRC
{
[XmlAttribute("extension")]
public string? Extension { get; set; }
[XmlText]
public string? Content { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,24 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.OfflineList
{
[XmlRoot("files")]
public class Files
{
[XmlElement("romCRC")]
public FileRomCRC[]? RomCRC { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,24 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.OfflineList
{
[XmlRoot("gui")]
public class GUI
{
[XmlElement("images")]
public Images? Images { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,24 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.OfflineList
{
[XmlRoot("games")]
public class Games
{
[XmlElement("game")]
public Game[]? Game { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,24 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.OfflineList
{
[XmlRoot("search")]
public class Search
{
[XmlElement("to")]
public To[]? To { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,28 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.OpenMSX
{
[XmlRoot("original")]
public class Original
{
/// <remarks>Boolean?</remarks>
[XmlAttribute("value")]
public string? Value { get; set; }
[XmlText]
public string? Content { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,27 +0,0 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.OpenMSX
{
[XmlRoot("softwaredb")]
public class SoftwareDb
{
[XmlAttribute("timestamp")]
public string? Timestamp { get; set; }
[XmlElement("software")]
public Software[]? Software { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -4,24 +4,6 @@ This library comprises of models that represent either directly serializable or
Find the link to the Nuget package [here](https://www.nuget.org/packages/SabreTools.Models).
In most completed models for serialization, there is a section that looks like the following:
```c#
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
```
This code should be removed before the models are used. This is only included during debugging and implementation as to ensure that there are no notable holes in the models that would disallow 1:1 replication of inputs.
## Missing Metadata Models
The following metadata file formats do not have models included in this library yet and, as such, do not have serializers:

View File

@@ -1,15 +0,0 @@
namespace SabreTools.Models.RomCenter
{
/// <remarks>[games]</remarks>
public class Games
{
public Rom[]? Rom { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -1,41 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Assembly Properties -->
<TargetFrameworks>net20;net35;net40;net452;net462;net472;net48;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0</TargetFrameworks>
<RuntimeIdentifiers>win-x86;win-x64;win-arm64;linux-x64;linux-arm64;osx-x64;osx-arm64</RuntimeIdentifiers>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<Version>1.4.7</Version>
<WarningsNotAsErrors>CS0618</WarningsNotAsErrors>
<!-- Package Properties -->
<Authors>Matt Nadareski</Authors>
<Description>Common models used by other SabreTools projects</Description>
<Copyright>Copyright (c) Matt Nadareski 2022-2024</Copyright>
<PackageProjectUrl>https://github.com/SabreTools/</PackageProjectUrl>
<PackageReadmeFile>README.md</PackageReadmeFile>
<RepositoryUrl>https://github.com/SabreTools/SabreTools.Models</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageTags>model models executable protection archive</PackageTags>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
</PropertyGroup>
<ItemGroup>
<None Include="README.md" Pack="true" PackagePath="" />
</ItemGroup>
<!-- Support for old .NET versions -->
<ItemGroup Condition="$(TargetFramework.StartsWith(`net2`)) OR $(TargetFramework.StartsWith(`net3`))">
<PackageReference Include="MinValueTupleBridge" Version="0.2.0" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith(`net4`))">
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
</Project>

View File

@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Models", "SabreTools.Models.csproj", "{51F0D5D9-7C2B-445A-8ECD-4A47B33609C4}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Models", "SabreTools.Models\SabreTools.Models.csproj", "{51F0D5D9-7C2B-445A-8ECD-4A47B33609C4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution

View File

@@ -201,17 +201,5 @@ namespace SabreTools.Models.ArchiveDotOrg
public string? Width { get; set; }
#endregion
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
[XmlAnyAttribute]
public XmlAttribute[]? ADDITIONAL_ATTRIBUTES { get; set; }
/// <remarks>Should be empty</remarks>
[XmlAnyElement]
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -0,0 +1,12 @@
using System.Xml;
using System.Xml.Serialization;
namespace SabreTools.Models.ArchiveDotOrg
{
[XmlRoot("files")]
public class Files
{
[XmlElement("file")]
public File?[]? File { get; set; }
}
}

View File

@@ -47,12 +47,5 @@ namespace SabreTools.Models.AttractMode
public string? PlayedTime { get; set; }
public string? FileIsAvailable { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -2,7 +2,7 @@ namespace SabreTools.Models.BFPK
{
public static class Constants
{
public static readonly byte[] SignatureBytes = new byte[] { 0x42, 0x46, 0x50, 0x4b };
public static readonly byte[] SignatureBytes = [0x42, 0x46, 0x50, 0x4b];
public const string SignatureString = "BFPK";

View File

@@ -4,7 +4,7 @@ namespace SabreTools.Models.CFB
{
public static class Constants
{
public static readonly byte[] SignatureBytes = new byte[] { 0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1 };
public static readonly byte[] SignatureBytes = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];
public const ulong SignatureUInt64 = 0xE11AB1A1E011CFD0;
@@ -15,17 +15,17 @@ namespace SabreTools.Models.CFB
/// <summary>
/// Installer Package (msi), Merge Module (msm), Patch Creation Properties (pcp)
/// </summary>
public static readonly Guid InstallerPackage = new Guid("000c1084-0000-0000-c000-000000000046");
public static readonly Guid InstallerPackage = new("000c1084-0000-0000-c000-000000000046");
/// <summary>
/// Patch Package (msp)
/// </summary>
public static readonly Guid PatchPackage = new Guid("000C1086-0000-0000-C000-000000000046");
public static readonly Guid PatchPackage = new("000C1086-0000-0000-C000-000000000046");
/// <summary>
/// Transform (mst)
/// </summary>
public static readonly Guid Transform = new Guid("000C1082-0000-0000-C000-000000000046");
public static readonly Guid Transform = new("000C1082-0000-0000-C000-000000000046");
#endregion
@@ -35,17 +35,17 @@ namespace SabreTools.Models.CFB
/// <summary>
/// The Summary Information Property Set
/// </summary>
public static readonly Guid FMTID_SummaryInformation = new Guid("F29F85E0-4FF9-1068-AB91-08002B27B3D9");
public static readonly Guid FMTID_SummaryInformation = new("F29F85E0-4FF9-1068-AB91-08002B27B3D9");
/// <summary>
/// The DocumentSummaryInformation and UserDefined Property Sets
/// </summary>
public static readonly Guid FMTID_DocSummaryInformation = new Guid("D5CDD502-2E9C-101B-9397-08002B2CF9AE");
public static readonly Guid FMTID_DocSummaryInformation = new("D5CDD502-2E9C-101B-9397-08002B2CF9AE");
/// <summary>
/// The DocumentSummaryInformation and UserDefined Property Sets
/// </summary>
public static readonly Guid FMTID_UserDefinedProperties = new Guid("D5CDD505-2E9C-101B-9397-08002B2CF9AE");
public static readonly Guid FMTID_UserDefinedProperties = new("D5CDD505-2E9C-101B-9397-08002B2CF9AE");
#endregion
}

View File

@@ -0,0 +1,23 @@
namespace SabreTools.Models.CHD
{
public static class Constants
{
public const string SignatureString = "MComprHD";
#region Header Sizes
public const int HeaderV1Size = 76;
public const int HeaderV2Size = 80;
public const int HeaderV3Size = 120;
public const int HeaderV4Size = 108;
public const int HeaderV5Size = 124;
#endregion
#region Metadata Parameters
public const uint CHDMETAINDEX_APPEND = uint.MaxValue;
#endregion
}
}

View File

@@ -0,0 +1,358 @@
using System;
namespace SabreTools.Models.CHD
{
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chdcodec.h"/>
public enum AVHuffCodec
{
DECOMPRESS_CONFIG = 1,
}
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chdcodec.h"/>
public enum CodecType : uint
{
CHD_CODEC_NONE = 0,
#region General Codecs
/// <remarks>"zlib"</remarks>
ZLIB = 0x7a6c6962,
/// <remarks>"zstd"</remarks>
ZSTD = 0x7a737464,
/// <remarks>"lzma"</remarks>
LZMA = 0x6c7a6d61,
/// <remarks>"huff"</remarks>
HUFFMAN = 0x68756666,
/// <remarks>"flac"</remarks>
FLAC = 0x666c6163,
#endregion
#region General Codecs with CD Frontend
/// <remarks>"cdzl"</remarks>
CD_ZLIB = 0x63647a6c,
/// <remarks>"cdzs"</remarks>
CD_ZSTD = 0x63647a73,
/// <remarks>"cdlz"</remarks>
CD_LZMA = 0x63646c7a,
/// <remarks>"cdfl"</remarks>
CD_FLAC = 0x6364666c,
#endregion
#region A/V Codecs
/// <remarks>"avhu"</remarks>
AVHUFF = 0x61766875,
#endregion
#region Pseudo-Codecs Returned by hunk_info
/// <summary>
/// Copy of another hunk
/// </summary>
CHD_CODEC_SELF = 1,
/// <summary>
/// Copy of a parent's hunk
/// </summary>
CHD_CODEC_PARENT = 2,
/// <summary>
/// Legacy "mini" 8-byte repeat
/// </summary>
CHD_CODEC_MINI = 3,
#endregion
}
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.h"/>
public enum CompressionType : uint
{
#region V1
CHDCOMPRESSION_NONE = 0,
CHDCOMPRESSION_ZLIB = 1,
#endregion
#region V3
CHDCOMPRESSION_ZLIB_PLUS = 2,
#endregion
#region V4
CHDCOMPRESSION_AV = 3,
#endregion
}
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.h"/>
public enum Error : uint
{
NO_INTERFACE = 1,
NOT_OPEN,
ALREADY_OPEN,
INVALID_FILE,
INVALID_DATA,
REQUIRES_PARENT,
FILE_NOT_WRITEABLE,
CODEC_ERROR,
INVALID_PARENT,
HUNK_OUT_OF_RANGE,
DECOMPRESSION_ERROR,
COMPRESSION_ERROR,
CANT_VERIFY,
METADATA_NOT_FOUND,
INVALID_METADATA_SIZE,
UNSUPPORTED_VERSION,
VERIFY_INCOMPLETE,
INVALID_METADATA,
INVALID_STATE,
OPERATION_PENDING,
UNSUPPORTED_FORMAT,
UNKNOWN_COMPRESSION,
WALKING_PARENT,
COMPRESSING
}
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.h"/>
[Flags]
public enum Flags : uint
{
/// <summary>
/// Set if this drive has a parent
/// </summary>
DriveHasParent = 0x00000001,
/// <summary>
/// Set if this drive allows writes
/// </summary>
DriveAllowsWrites = 0x00000002,
}
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.h"/>
[Flags]
public enum MetadataFlags : byte
{
/// <summary>
/// Indicates data is checksummed
/// </summary>
CHD_MDFLAGS_CHECKSUM = 0x01,
}
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.h"/>
public enum MetadataTag : uint
{
CHDMETATAG_WILDCARD = 0,
#region Hard Disk
/// <summary>
/// Standard hard disk metadata
/// </summary>
/// <remarks>"GDDD"</remarks>
HARD_DISK_METADATA_TAG = 0x47444444,
/// <summary>
/// Hard disk identify information
/// </summary>
/// <remarks>"IDNT"</remarks>
HARD_DISK_IDENT_METADATA_TAG = 0x49444e54,
/// <summary>
/// Hard disk key information
/// </summary>
/// <remarks>"KEY "</remarks>
HARD_DISK_KEY_METADATA_TAG = 0x4b455920,
#endregion
#region PCMCIA
/// <summary>
/// PCMCIA CIS information
/// </summary>
/// <remarks>"CIS "</remarks>
PCMCIA_CIS_METADATA_TAG = 0x43495320,
#endregion
#region CD-ROM
/// <remarks>"CHCD"</remarks>
CDROM_OLD_METADATA_TAG = 0x43484344,
/// <remarks>"CHTR"</remarks>
CDROM_TRACK_METADATA_TAG = 0x43485452,
/// <remarks>"CHT2"</remarks>
CDROM_TRACK_METADATA2_TAG = 0x43485432,
#endregion
#region GD-ROM
/// <remarks>"CHGT"</remarks>
GDROM_OLD_METADATA_TAG = 0x43484754,
/// <remarks>"CHGD"</remarks>
GDROM_TRACK_METADATA_TAG = 0x43484744,
#endregion
#region DVD
/// <summary>
/// Standard DVD metadata
/// </summary>
/// <remarks>"DVD "</remarks>
DVD_METADATA_TAG = 0x44564420,
#endregion
#region A/V
/// <summary>
/// Standard A/V metadata
/// </summary>
/// <remarks>"AVAV"</remarks>
AV_METADATA_TAG = 0x41564156,
/// <summary>
/// A/V laserdisc frame metadata
/// </summary>
/// <remarks>"AVLD"</remarks>
AV_LD_METADATA_TAG = 0x41564c44,
#endregion
}
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.cpp"/>
public enum V34EntryType : uint
{
/// <summary>
/// Invalid type
/// </summary>
V34_MAP_ENTRY_TYPE_INVALID = 0,
/// <summary>
/// Standard compression
/// </summary>
V34_MAP_ENTRY_TYPE_COMPRESSED = 1,
/// <summary>
/// Uncompressed data
/// </summary>
V34_MAP_ENTRY_TYPE_UNCOMPRESSED = 2,
/// <summary>
/// Mini: use offset as raw data
/// </summary>
V34_MAP_ENTRY_TYPE_MINI = 3,
/// <summary>
/// Same as another hunk in this file
/// </summary>
V34_MAP_ENTRY_TYPE_SELF_HUNK = 4,
/// <summary>
/// Same as a hunk in the parent file
/// </summary>
V34_MAP_ENTRY_TYPE_PARENT_HUNK = 5,
/// <summary>
/// Compressed with secondary algorithm (usually FLAC CDDA)
/// </summary>
V34_MAP_ENTRY_TYPE_2ND_COMPRESSED = 6,
}
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.cpp"/>
public enum V5CompressionType : uint
{
// These types are live when running
/// <summary>
/// Codec #0
/// </summary>
COMPRESSION_TYPE_0 = 0,
/// <summary>
/// Codec #1
/// </summary>
COMPRESSION_TYPE_1 = 1,
/// <summary>
/// Codec #2
/// </summary>
COMPRESSION_TYPE_2 = 2,
/// <summary>
/// Codec #3
/// </summary>
COMPRESSION_TYPE_3 = 3,
/// <summary>
/// No compression; implicit length = hunkbytes
/// </summary>
COMPRESSION_NONE = 4,
/// <summary>
/// Same as another block in this CHD
/// </summary>
COMPRESSION_SELF = 5,
/// <summary>
/// Same as a hunk's worth of units in the parent CHD
/// </summary>
COMPRESSION_PARENT = 6,
// These additional pseudo-types are used for compressed encodings
/// <summary>
/// Start of small RLE run (4-bit length)
/// </summary>
COMPRESSION_RLE_SMALL,
/// <summary>
/// Start of large RLE run (8-bit length)
/// </summary>
COMPRESSION_RLE_LARGE,
/// <summary>
/// Same as the last COMPRESSION_SELF block
/// </summary>
COMPRESSION_SELF_0,
/// <summary>
/// Same as the last COMPRESSION_SELF block + 1
/// </summary>
COMPRESSION_SELF_1,
/// <summary>
/// Same block in the parent
/// </summary>
COMPRESSION_PARENT_SELF,
/// <summary>
/// Same as the last COMPRESSION_PARENT block
/// </summary>
COMPRESSION_PARENT_0,
/// <summary>
/// Same as the last COMPRESSION_PARENT block + 1
/// </summary>
COMPRESSION_PARENT_1
}
}

View File

@@ -1,21 +1,25 @@
using System.Runtime.InteropServices;
namespace SabreTools.Models.CHD
{
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.h"/>
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public abstract class Header
{
/// <summary>
/// 'MComprHD'
/// </summary>
public string? Tag { get; set; }
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
public string? Tag;
/// <summary>
/// Length of header (including tag and length fields)
/// </summary>
public uint Length { get; set; }
public uint Length;
/// <summary>
/// Drive format version
/// </summary>
public uint Version { get; set; }
public uint Version;
}
}

View File

@@ -1,51 +1,58 @@
namespace SabreTools.Models.CHD
using System.Runtime.InteropServices;
namespace SabreTools.Models.CHD
{
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.h"/>
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public class HeaderV1 : Header
{
/// <summary>
/// Flags
/// </summary>
public Flags Flags { get; set; }
[MarshalAs(UnmanagedType.U4)]
public Flags Flags;
/// <summary>
/// Compression type
/// </summary>
public CompressionType Compression { get; set; }
[MarshalAs(UnmanagedType.U4)]
public CompressionType Compression;
/// <summary>
/// 512-byte sectors per hunk
/// </summary>
public uint HunkSize { get; set; }
public uint HunkSize;
/// <summary>
/// Total # of hunks represented
/// </summary>
public uint TotalHunks { get; set; }
public uint TotalHunks;
/// <summary>
/// Number of cylinders on hard disk
/// </summary>
public uint Cylinders { get; set; }
public uint Cylinders;
/// <summary>
/// Number of heads on hard disk
/// </summary>
public uint Heads { get; set; }
public uint Heads;
/// <summary>
/// Number of sectors on hard disk
/// </summary>
public uint Sectors { get; set; }
public uint Sectors;
/// <summary>
/// MD5 checksum of raw data
/// </summary>
public byte[]? MD5 { get; set; } = new byte[16];
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public byte[] MD5 = new byte[16];
/// <summary>
/// MD5 checksum of parent file
/// </summary>
public byte[]? ParentMD5 { get; set; } = new byte[16];
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public byte[] ParentMD5 = new byte[16];
}
}

View File

@@ -1,56 +1,63 @@
namespace SabreTools.Models.CHD
using System.Runtime.InteropServices;
namespace SabreTools.Models.CHD
{
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.h"/>
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public class HeaderV2 : Header
{
/// <summary>
/// Flags
/// </summary>
public Flags Flags { get; set; }
[MarshalAs(UnmanagedType.U4)]
public Flags Flags;
/// <summary>
/// Compression type
/// </summary>
public CompressionType Compression { get; set; }
[MarshalAs(UnmanagedType.U4)]
public CompressionType Compression;
/// <summary>
/// Seclen-byte sectors per hunk
/// </summary>
public uint HunkSize { get; set; }
public uint HunkSize;
/// <summary>
/// Total # of hunks represented
/// </summary>
public uint TotalHunks { get; set; }
public uint TotalHunks;
/// <summary>
/// Number of cylinders on hard disk
/// </summary>
public uint Cylinders { get; set; }
public uint Cylinders;
/// <summary>
/// Number of heads on hard disk
/// </summary>
public uint Heads { get; set; }
public uint Heads;
/// <summary>
/// Number of sectors on hard disk
/// </summary>
public uint Sectors { get; set; }
public uint Sectors;
/// <summary>
/// MD5 checksum of raw data
/// </summary>
public byte[]? MD5 { get; set; } = new byte[16];
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public byte[]? MD5 = new byte[16];
/// <summary>
/// MD5 checksum of parent file
/// </summary>
public byte[]? ParentMD5 { get; set; } = new byte[16];
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public byte[]? ParentMD5 = new byte[16];
/// <summary>
/// Number of bytes per sector
/// </summary>
public uint BytesPerSector { get; set; }
public uint BytesPerSector;
}
}

View File

@@ -1,56 +1,65 @@
namespace SabreTools.Models.CHD
using System.Runtime.InteropServices;
namespace SabreTools.Models.CHD
{
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.h"/>
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public class HeaderV3 : Header
{
/// <summary>
/// Flags
/// </summary>
public Flags Flags { get; set; }
[MarshalAs(UnmanagedType.U4)]
public Flags Flags;
/// <summary>
/// Compression type
/// </summary>
public CompressionType Compression { get; set; }
[MarshalAs(UnmanagedType.U4)]
public CompressionType Compression;
/// <summary>
/// Total # of hunks represented
/// </summary>
public uint TotalHunks { get; set; }
public uint TotalHunks;
/// <summary>
/// Logical size of the data (in bytes)
/// </summary>
public ulong LogicalBytes { get; set; }
public ulong LogicalBytes;
/// <summary>
/// Offset to the first blob of metadata
/// </summary>
public ulong MetaOffset { get; set; }
public ulong MetaOffset;
/// <summary>
/// MD5 checksum of raw data
/// </summary>
public byte[]? MD5 { get; set; } = new byte[16];
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public byte[]? MD5 = new byte[16];
/// <summary>
/// MD5 checksum of parent file
/// </summary>
public byte[]? ParentMD5 { get; set; } = new byte[16];
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public byte[]? ParentMD5 = new byte[16];
/// <summary>
/// Number of bytes per hunk
/// </summary>
public uint HunkBytes { get; set; }
public uint HunkBytes;
/// <summary>
/// SHA1 checksum of raw data
/// </summary>
public byte[]? SHA1 { get; set; } = new byte[20];
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public byte[]? SHA1 = new byte[20];
/// <summary>
/// SHA1 checksum of parent file
/// </summary>
public byte[]? ParentSHA1 { get; set; } = new byte[20];
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public byte[]? ParentSHA1 = new byte[20];
}
}

View File

@@ -1,51 +1,59 @@
namespace SabreTools.Models.CHD
using System.Runtime.InteropServices;
namespace SabreTools.Models.CHD
{
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.h"/>
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public class HeaderV4 : Header
{
/// <summary>
/// Flags
/// </summary>
public Flags Flags { get; set; }
[MarshalAs(UnmanagedType.U4)]
public Flags Flags;
/// <summary>
/// Compression type
/// </summary>
public CompressionType Compression { get; set; }
[MarshalAs(UnmanagedType.U4)]
public CompressionType Compression;
/// <summary>
/// Total # of hunks represented
/// </summary>
public uint TotalHunks { get; set; }
public uint TotalHunks;
/// <summary>
/// Logical size of the data (in bytes)
/// </summary>
public ulong LogicalBytes { get; set; }
public ulong LogicalBytes;
/// <summary>
/// Offset to the first blob of metadata
/// </summary>
public ulong MetaOffset { get; set; }
public ulong MetaOffset;
/// <summary>
/// Number of bytes per hunk
/// </summary>
public uint HunkBytes { get; set; }
public uint HunkBytes;
/// <summary>
/// Combined raw+meta SHA1
/// </summary>
public byte[]? SHA1 { get; set; } = new byte[20];
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public byte[]? SHA1 = new byte[20];
/// <summary>
/// Combined raw+meta SHA1 of parent
/// </summary>
public byte[]? ParentSHA1 { get; set; } = new byte[20];
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public byte[]? ParentSHA1 = new byte[20];
/// <summary>
/// Raw data SHA1
/// </summary>
public byte[]? RawSHA1 { get; set; } = new byte[20];
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public byte[]? RawSHA1 = new byte[20];
}
}

View File

@@ -1,12 +1,15 @@
namespace SabreTools.Models.CHD
using System.Runtime.InteropServices;
namespace SabreTools.Models.CHD
{
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.h"/>
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public class HeaderV5 : Header
{
/// <summary>
/// Which custom compressors are used?
/// </summary>
public uint[] Compressors { get; set; } = new uint[4];
public CodecType[] Compressors { get; set; } = new CodecType[4];
/// <summary>
/// Logical size of the data (in bytes)

View File

@@ -0,0 +1,39 @@
using System.Runtime.InteropServices;
namespace SabreTools.Models.CHD
{
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.cpp"/>
[StructLayout(LayoutKind.Sequential)]
public sealed class MetadataEntry
{
/// <summary>
/// Offset within the file of the header
/// </summary>
public ulong Offset;
/// <summary>
/// Offset within the file of the next header
/// </summary>
public ulong Next;
/// <summary>
/// Offset within the file of the previous header
/// </summary>
public ulong Prev;
/// <summary>
/// Length of the metadata
/// </summary>
public uint Length;
/// <summary>
/// Metadata tag
/// </summary>
public MetadataTag Metatag;
/// <summary>
/// Flag bits
/// </summary>
public MetadataFlags Flags;
}
}

View File

@@ -0,0 +1,20 @@
using System.Runtime.InteropServices;
namespace SabreTools.Models.CHD
{
/// <see href="https://github.com/mamedev/mame/blob/master/src/lib/util/chd.cpp"/>
[StructLayout(LayoutKind.Sequential)]
public sealed class MetadataHash
{
/// <summary>
/// Tag of the metadata in big-endian
/// </summary>
public MetadataTag Tag;
/// <summary>
/// Hash data
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public byte[]? SHA1;
}
}

View File

@@ -4,7 +4,7 @@ namespace SabreTools.Models.Charts
{
/// <see href="https://github.com/TheNathannator/GuitarGame_ChartFormats/tree/main/doc/FileFormats/song.ini"/>
/// <remarks>[song]/[Song]</remarks>
internal class SongIni
public class SongIni
{
#region Song/Chart Metadata

View File

@@ -0,0 +1,16 @@
namespace SabreTools.Models.Charts
{
/// <see href="https://github.com/TheNathannator/GuitarGame_ChartFormats/blob/main/doc/FileFormats/Other/Frets%20on%20Fire%20X/Careers.md"/>
public class Tier
{
/// <summary>
/// Display name of the tier.
/// </summary>
public string? Name { get; set; }
/// <summary>
/// Name used for associating a song with this tier, and for checking unlock requirements.
/// </summary>
public string? UnlockId { get; set; }
}
}

View File

@@ -1,10 +1,8 @@
using System.Collections.Generic;
namespace SabreTools.Models.Charts
{
/// <see href="https://github.com/TheNathannator/GuitarGame_ChartFormats/blob/main/doc/FileFormats/Other/Frets%20on%20Fire%20X/Careers.md"/>
/// <remarks>[titles]</remarks>
internal class TitlesIni
public class TitlesIni
{
/// <summary>
/// A space-separated list of .ini sections to include in the career.
@@ -13,9 +11,8 @@ namespace SabreTools.Models.Charts
public string[]? SectionList { get; set; }
/// <summary>
/// `name` - Display name of the tier.
/// `unlock_id` - Name used for associating a song with this tier, and for checking unlock requirements.
/// This entry points to other sections that should be used as part of the career.
/// </summary>
public Dictionary<string, (string? Name, string? UnlockId)>? Sections { get; set; }
public Tier[]? Sections { get; set; }
}
}

View File

@@ -6,12 +6,5 @@ namespace SabreTools.Models.ClrMamePro
/// <remarks>name</remarks>
[Required]
public string? Name { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -13,12 +13,5 @@ namespace SabreTools.Models.ClrMamePro
/// <remarks>default</remarks>
public string? Default { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -16,12 +16,5 @@ namespace SabreTools.Models.ClrMamePro
/// <remarks>clock, Numeric?</remarks>
public string? Clock { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -47,12 +47,5 @@ namespace SabreTools.Models.ClrMamePro
/// <remarks>forcepacking</remarks>
public string? ForcePacking { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -12,12 +12,5 @@ namespace SabreTools.Models.ClrMamePro
/// <remarks>default, (yes|no) "no"</remarks>
public string? Default { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -21,12 +21,5 @@ namespace SabreTools.Models.ClrMamePro
/// <remarks>flags</remarks>
public string? Flags { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -18,12 +18,5 @@ namespace SabreTools.Models.ClrMamePro
/// <remarks>blit, (plain|dirty)</remarks>
public string? Blit { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -76,12 +76,5 @@ namespace SabreTools.Models.ClrMamePro
public Driver? Driver { get; set; }
#endregion
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public string[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

View File

@@ -22,12 +22,5 @@ namespace SabreTools.Models.ClrMamePro
/// <remarks>service, (yes|no) "no"</remarks>
public string? Service { get; set; }
#region DO NOT USE IN PRODUCTION
/// <remarks>Should be empty</remarks>
public object[]? ADDITIONAL_ELEMENTS { get; set; }
#endregion
}
}

Some files were not shown because too many files have changed in this diff Show More