18 Commits
1.5.2 ... 1.5.6

Author SHA1 Message Date
Matt Nadareski
a19afc240c Bump version 2024-12-10 15:28:49 -05:00
Matt Nadareski
148e97ef64 Add now-supported DOSCenter SHA-1 attribute 2024-12-07 23:28:52 -05:00
Matt Nadareski
676b446025 Add badge for build status 2024-12-06 10:48:43 -05:00
Matt Nadareski
aeff75d8d3 Rename workflow file, add releases to README 2024-12-06 10:47:42 -05:00
Matt Nadareski
e20e515f56 Attempt to use publish script 2024-12-06 10:43:08 -05:00
Matt Nadareski
bf02266f0f Bump version 2024-11-29 19:51:47 -05:00
Matt Nadareski
b521e503c2 Rearrange SGA 2024-11-28 20:26:58 -05:00
Matt Nadareski
48e79d26ed Ensure nullable arrays are correct 2024-11-27 23:37:25 -05:00
Matt Nadareski
989ef41c6d Get/Set may be fully disallowed? 2024-11-27 21:31:33 -05:00
Matt Nadareski
6b0c4c3024 Bump version 2024-11-27 21:15:05 -05:00
Matt Nadareski
4b54d0f4dc Fix build 2024-11-27 21:09:01 -05:00
Matt Nadareski
2bc1cfc5d0 Cleanup from issues in Serialization 2024-11-27 21:03:50 -05:00
Matt Nadareski
362abfdc64 Remove layout from CopyrightRecord 2024-11-27 10:38:58 -05:00
Matt Nadareski
a06ff8f8b3 Bump version 2024-11-20 14:03:14 -05:00
Matt Nadareski
7269e91913 Partially add VBSP lump 40 2024-11-19 14:34:32 -05:00
Matt Nadareski
c118271565 Add VBSP lump 29 2024-11-19 14:30:54 -05:00
Matt Nadareski
71ccbc6ab1 Fix issues found during Serialization update 2024-11-19 12:47:09 -05:00
Matt Nadareski
ed5c1a7173 Use array-of-array instead of multidimensional array 2024-11-18 23:35:47 -05:00
116 changed files with 460 additions and 300 deletions

View File

@@ -1,4 +1,4 @@
name: Nuget Pack
name: Build and Test
on:
push:
@@ -17,24 +17,21 @@ jobs:
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.x
- name: Restore dependencies
run: dotnet restore
- name: Pack
run: dotnet pack
- name: Run publish script
run: ./publish-nix.sh
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: 'Nuget Package'
path: 'SabreTools.Models/bin/Release/*.nupkg'
path: '*.nupkg'
- name: Upload to rolling
uses: ncipollo/release-action@v1.14.0
with:
allowUpdates: True
artifacts: 'SabreTools.Models/bin/Release/*.nupkg'
artifacts: '*.nupkg'
body: 'Last built commit: ${{ github.sha }}'
name: 'Rolling Release'
prerelease: True

View File

@@ -1,9 +1,17 @@
# SabreTools.Models
[![Build and Test](https://github.com/SabreTools/SabreTools.Models/actions/workflows/build_and_test.yml/badge.svg?branch=main)](https://github.com/SabreTools/SabreTools.Models/actions/workflows/build_and_test.yml)
This library comprises of models that represent either directly serializable or representative structures for all SabreTools projects. All of the main models representing metadata files should have parsers created outside of the current code.
Find the link to the Nuget package [here](https://www.nuget.org/packages/SabreTools.Models).
## Releases
For the most recent stable build, download the latest release here: [Releases Page](https://github.com/SabreTools/SabreTools.Models/releases)
For the latest WIP build here: [Rolling Release](https://github.com/SabreTools/SabreTools.Models/releases/rolling)
## 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

@@ -5,7 +5,6 @@ namespace SabreTools.Models.AACS
/// <summary>
/// This record type is undocumented but found in real media key blocks
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public sealed class CopyrightRecord : Record
{
/// <summary>

View File

@@ -21,6 +21,6 @@ namespace SabreTools.Models.AACS
/// <summary>
/// Revocation list entries
/// </summary>
public DriveRevocationSignatureBlock?[]? SignatureBlocks { get; set; }
public DriveRevocationSignatureBlock[]? SignatureBlocks { get; set; }
}
}

View File

@@ -12,6 +12,6 @@ namespace SabreTools.Models.AACS
/// A list of 8-byte Host Drive List Entry fields, the length of this
/// list being equal to the number in the signature block.
/// </summary>
public DriveRevocationListEntry?[]? EntryFields { get; set; }
public DriveRevocationListEntry[]? EntryFields { get; set; }
}
}

View File

@@ -6,6 +6,6 @@ namespace SabreTools.Models.AACS
/// <summary>
/// In this record, each subset-difference is encoded with 5 bytes.
/// </summary>
public SubsetDifference?[]? SubsetDifferences { get; set; }
public SubsetDifference[]? SubsetDifferences { get; set; }
}
}

View File

@@ -24,6 +24,6 @@ namespace SabreTools.Models.AACS
/// <summary>
/// Revocation list entries
/// </summary>
public HostRevocationSignatureBlock?[]? SignatureBlocks { get; set; }
public HostRevocationSignatureBlock[]? SignatureBlocks { get; set; }
}
}

View File

@@ -12,6 +12,6 @@ namespace SabreTools.Models.AACS
/// A list of 8-byte Host Revocation List Entry fields, the length of this
/// list being equal to the number in the signature block.
/// </summary>
public HostRevocationListEntry?[]? EntryFields { get; set; }
public HostRevocationListEntry[]? EntryFields { get; set; }
}
}

View File

@@ -9,6 +9,6 @@ namespace SabreTools.Models.AACS
/// <summary>
/// Records
/// </summary>
public Record?[]? Records { get; set; }
public Record[]? Records { get; set; }
}
}

View File

@@ -7,6 +7,6 @@ namespace SabreTools.Models.ArchiveDotOrg
public class Files
{
[XmlElement("file")]
public File?[]? File { get; set; }
public File[]? File { get; set; }
}
}

View File

@@ -8,6 +8,6 @@ namespace SabreTools.Models.AttractMode
[Required]
public string[]? Header { get; set; }
public Row?[]? Row { get; set; }
public Row[]? Row { get; set; }
}
}

View File

@@ -1,3 +1,5 @@
using System.Runtime.InteropServices;
namespace SabreTools.Models.BDPlus
{
/// <see href="https://github.com/mwgoldsmith/bdplus/blob/master/src/libbdplus/bdsvm/loader.c"/>
@@ -6,40 +8,39 @@ namespace SabreTools.Models.BDPlus
/// <summary>
/// "BDSVM_CC"
/// </summary>
/// <remarks>8 bytes</remarks>
public string? Signature { get; set; }
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
public string? Signature;
/// <summary>
/// Unknown data
/// </summary>
/// <remarks>5 bytes</remarks>
public byte[]? Unknown1 { get; set; }
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
public byte[]? Unknown1 = new byte[5];
/// <summary>
/// Version year
/// </summary>
public ushort Year { get; set; }
public ushort Year;
/// <summary>
/// Version month
/// </summary>
public byte Month { get; set; }
public byte Month;
/// <summary>
/// Version day
/// </summary>
public byte Day { get; set; }
public byte Day;
/// <summary>
/// Unknown data
/// </summary>
/// <remarks>4 bytes</remarks>
public byte[]? Unknown2 { get; set; }
public uint Unknown2;
/// <summary>
/// Length
/// </summary>
public uint Length { get; set; }
public uint Length;
/// <summary>
/// Length bytes of data

View File

@@ -34,6 +34,11 @@ namespace SabreTools.Models.BSP
/// </summary>
public VerticesLump? VerticesLump { get; set; }
/// <summary>
/// LUMP_VISIBILITY [4]
/// </summary>
public VisibilityLump? VisibilityLump { get; set; }
/// <summary>
/// LUMP_NODES [5]
/// </summary>

View File

@@ -17,6 +17,7 @@ namespace SabreTools.Models.BSP
/// Lumps
/// </summary>
/// <remarks>15 entries</remarks>
public BspLumpEntry[]? Lumps { get; set; }
[MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.BSP_HEADER_LUMPS)]
public BspLumpEntry[]? Lumps;
}
}

View File

@@ -27,17 +27,17 @@ namespace SabreTools.Models.BSP
/// <summary>
/// Defines bounding box
/// </summary>
public Vector3D Mins;
public Vector3D? Mins;
/// <summary>
/// Defines bounding box
/// </summary>
public Vector3D Maxs;
public Vector3D? Maxs;
/// <summary>
/// Coordinates to move the coordinate system
/// </summary>
public Vector3D OriginVector;
public Vector3D? OriginVector;
/// <summary>
/// Index into nodes array

View File

@@ -22,7 +22,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// S-vector
/// </summary>
public Vector3D SVector;
public Vector3D? SVector;
/// <summary>
/// Texture shift in the S direction
@@ -32,7 +32,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// T-vector
/// </summary>
public Vector3D TVector;
public Vector3D? TVector;
/// <summary>
/// Texture shift in the T direction

View File

@@ -7,7 +7,7 @@ namespace SabreTools.Models.BSP
/// </summary>
/// <see href="https://developer.valvesoftware.com/wiki/BSP_(Source)"/>
[StructLayout(LayoutKind.Sequential)]
public struct ColorRGBExp32
public class ColorRGBExp32
{
public byte Red;

View File

@@ -8,7 +8,7 @@ namespace SabreTools.Models.BSP
/// </summary>
/// <see href="https://developer.valvesoftware.com/wiki/BSP_(Source)"/>
[StructLayout(LayoutKind.Sequential)]
public struct CompressedLightCube
public class CompressedLightCube
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public ColorRGBExp32[]? Colors;

View File

@@ -25,7 +25,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// Start position used for orientation
/// </summary>
public Vector3D startPosition;
public Vector3D? StartPosition;
/// <summary>
/// Index into LUMP_DISP_VERTS.

View File

@@ -18,7 +18,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// Vector field defining displacement volume.
/// </summary>
public Vector3D Vec;
public Vector3D? Vec;
/// <summary>
/// Displacement distances.

View File

@@ -16,7 +16,7 @@ namespace SabreTools.Models.BSP
[StructLayout(LayoutKind.Sequential)]
public sealed class LeafAmbientLighting
{
public CompressedLightCube Cube;
public CompressedLightCube? Cube;
/// <summary>
/// Fixed point fraction of leaf bounds

View File

@@ -13,6 +13,6 @@ namespace SabreTools.Models.BSP
/// Lightmap RGB values
/// </summary>
/// <remarks>Array of 3-byte values</remarks>
public byte[,]? Lightmap { get; set; }
public byte[][]? Lightmap { get; set; }
}
}

View File

@@ -27,12 +27,12 @@ namespace SabreTools.Models.BSP
/// <summary>
/// Minima of all vertices
/// </summary>
public Vector3D Mins;
public Vector3D? Mins;
/// <summary>
/// Maxima of all vertices
/// </summary>
public Vector3D Maxs;
public Vector3D? Maxs;
/// <remarks>Since v1</remarks>
public int Area;

View File

@@ -41,6 +41,6 @@ namespace SabreTools.Models.BSP
/// <summary>
/// <see cref="VertexIndexCount">
/// </summary>
public int[]? VertexIndices;
public int[]? VertexIndicies;
}
}

View File

@@ -41,8 +41,8 @@ namespace SabreTools.Models.BSP
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public Vector3D[]? UVPoints = new Vector3D[4];
public Vector3D Origin;
public Vector3D? Origin;
public Vector3D BasisNormal;
public Vector3D? BasisNormal;
}
}

View File

@@ -0,0 +1,43 @@
namespace SabreTools.Models.BSP
{
/// <summary>
/// The Pakfile lump (Lump 40) is a special lump that can contains
/// multiple files which are embedded into the bsp file. Usually,
/// they contain special texture (.vtf) and material (.vmt) files
/// which are used to store the reflection maps from env_cubemap
/// entities in the map; these files are built and placed in the
/// Pakfile lump when the buildcubemaps console command is executed.
/// The Pakfile can optionally contain such things as custom textures
/// and prop models used in the map, and are placed into the bsp file
/// by using the BSPZIP program (or alternate programs such as Pakrat).
/// These files are integrated into the game engine's file system
/// and will be loaded preferentially before externally located
/// files are used.
///
/// The format of the Pakfile lump is identical to that used by the
/// Zip compression utility when no compression is specified (i.e.,
/// the individual files are stored in uncompressed format). In some
/// branches, such as , LZMA compression can be used as well. If the
/// Pakfile lump is extracted and written to a file, it can therefore
/// be opened with WinZip and similar programs.
///
/// The header public/zip_uncompressed.h defines the structures
/// present in the Pakfile lump. The last element in the lump is a
/// ZIP_EndOfCentralDirRecord structure. This points to an array of
/// ZIP_FileHeader structures immediately preceeding it, one for each
/// file present in the Pak. Each of these headers then point to
/// ZIP_LocalFileHeader structures that are followed by that file's
/// data.
///
/// The Pakfile lump is usually the last element of the bsp file.
/// </summary>
/// <see href="https://developer.valvesoftware.com/wiki/BSP_(Source)"/>
public sealed class PakfileLump
{
/// <summary>
/// Pakfile data
/// </summary>
/// TODO: Split and/or decompress data?
public byte[]? Data;
}
}

View File

@@ -0,0 +1,11 @@
namespace SabreTools.Models.BSP
{
/// <see href="https://developer.valvesoftware.com/wiki/BSP_(Source)"/>
public sealed class PhysCollideLump : Lump
{
/// <summary>
/// Models
/// </summary>
public PhysModel[]? Models { get; set; }
}
}

View File

@@ -0,0 +1,42 @@
using System.Runtime.InteropServices;
namespace SabreTools.Models.BSP
{
/// <summary>
/// The physcollide lump (Lump 29) contains physics data for the world.
/// </summary>
/// <see href="https://developer.valvesoftware.com/wiki/BSP_(Source)"/>
[StructLayout(LayoutKind.Sequential)]
public sealed class PhysModel
{
/// <summary>
/// Perhaps the index of the model to which this physics model applies?
/// </summary>
public int ModelIndex;
/// <summary>
/// Total size of the collision data sections
/// </summary>
public int DataSize;
/// <summary>
/// Size of the text section
/// </summary>
public int KeydataSize;
/// <summary>
/// Number of collision data sections
/// </summary>
public int SolidCount;
/// <summary>
/// Collision data of length <see cref="SolidCount"/>
/// </summary>
public PhysSolid[]? Solids;
/// <summary>
/// Key data of size <see cref="KeydataSize"/>
/// </summary>
public byte[]? TextData;
}
}

View File

@@ -0,0 +1,25 @@
using System.Runtime.InteropServices;
namespace SabreTools.Models.BSP
{
/// <summary>
/// The last two parts appear to be identical to the PHY file format,
/// which means their exact contents are unknown. Note that the
/// compactsurfaceheader_t structure contains the data size of each
/// collision data section (including the rest of the header)
/// </summary>
/// <see href="https://developer.valvesoftware.com/wiki/BSP_(Source)"/>
[StructLayout(LayoutKind.Sequential)]
public sealed class PhysSolid
{
/// <summary>
/// Size of the collision data
/// </summary>
public int Size;
/// <summary>
/// Collision data of length <see cref="Size"/>
/// </summary>
public byte[]? CollisionData;
}
}

View File

@@ -25,7 +25,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// The planes normal vector
/// </summary>
public Vector3D NormalVector;
public Vector3D? NormalVector;
/// <summary>
/// Plane equation is: vNormal * X = fDist

View File

@@ -8,10 +8,10 @@ namespace SabreTools.Models.BSP
/// from the cardinal Z axis.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct QAngle
public class QAngle
{
public float X { get; set; }
public float Y { get; set; }
public float Z { get; set; }
public float X;
public float Y;
public float Z;
}
}

View File

@@ -19,6 +19,6 @@ namespace SabreTools.Models.BSP
/// Model name
/// </summary>
/// <remarks>[dictEntries][128]</remarks>
public char[,]? Name;
public char[][]? Name;
}
}

View File

@@ -39,12 +39,12 @@ namespace SabreTools.Models.BSP
/// <summary>
/// Origin
/// </summary>
public Vector3D Origin;
public Vector3D? Origin;
/// <summary>
/// Orientation (pitch yaw roll)
/// </summary>
public QAngle Angles;
public QAngle? Angles;
#endregion
@@ -90,7 +90,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// For lighting
/// </summary>
public Vector3D LightingOrigin;
public Vector3D? LightingOrigin;
#endregion
@@ -151,7 +151,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// Per instance color and alpha modulation
/// </summary>
public ColorRGBExp32 DiffuseModulation;
public ColorRGBExp32? DiffuseModulation;
#endregion

View File

@@ -16,7 +16,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// RGB reflectivity
/// </summary>
public Vector3D Reflectivity;
public Vector3D? Reflectivity;
/// <summary>
/// Index into TexdataStringTable

View File

@@ -153,7 +153,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// LUMP_DISPINFO [26]
/// </summary>
public DispInfosLump? DispInfoLump { get; set; }
public DispInfosLump? DispInfosLump { get; set; }
/// <summary>
/// LUMP_ORIGINALFACES [27]
@@ -166,8 +166,10 @@ namespace SabreTools.Models.BSP
/// TODO: Find definition and implement
// public PhysDispLump? PhysDispLump { get; set; }
// TODO: Implement Lump 29
// https://developer.valvesoftware.com/wiki/BSP_(Source)#Physics
/// <summary>
/// LUMP_PHYSCOLLIDE [29]
/// </summary>
public PhysCollideLump? PhysCollideLump { get; set; }
/// <summary>
/// LUMP_VERTNORMALS [30]
@@ -190,7 +192,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// LUMP_DISP_VERTS [33]
/// </summary>
public DispVertsLump? DispVertLump { get; set; }
public DispVertsLump? DispVertsLump { get; set; }
/// <summary>
/// LUMP_DISP_LIGHTMAP_SAMPLE_POSITIONS [34]
@@ -227,8 +229,10 @@ namespace SabreTools.Models.BSP
/// TODO: Find definition and implement
// public PrimIndicesLump? PrimIndicesLump { get; set; }
// TODO: Implement Lump 40
// https://developer.valvesoftware.com/wiki/BSP_(Source)#Pakfile
/// <summary>
/// LUMP_PAKFILE [40]
/// </summary>
public PakfileLump? PakfileLump { get; set; }
/// <summary>
/// LUMP_CLIPPORTALVERTS [41]
@@ -239,7 +243,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// LUMP_CUBEMAPS [42]
/// </summary>
public CubemapsLump? CubemapLump { get; set; }
public CubemapsLump? CubemapsLump { get; set; }
/// <summary>
/// LUMP_TEXDATA_STRING_DATA [43]
@@ -304,7 +308,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// LUMP_WORLDLIGHTS_HDR [54]
/// </summary>
public WorldLightsLump? WorldLightsLump { get; set; }
public WorldLightsLump? HDRWorldLightsLump { get; set; }
/// <summary>
/// LUMP_LEAF_AMBIENT_LIGHTING_HDR [55]
@@ -353,7 +357,7 @@ namespace SabreTools.Models.BSP
// public PhysLevelLump? PhysLevelLump { get; set; }
/// <summary>
/// LUMP_DISP_MULTIBLEND [64]
/// LUMP_DISP_MULTIBLEND [63]
/// </summary>
/// TODO: Find definition and implement
// public DispMultiBlendLump? DispMultiBlendLump { get; set; }

View File

@@ -83,7 +83,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// Precaculated light info for entities.
/// </summary>
public CompressedLightCube AmbientLighting;
public CompressedLightCube? AmbientLighting;
#endregion

View File

@@ -15,17 +15,17 @@ namespace SabreTools.Models.BSP
/// <summary>
/// Bounding box
/// </summary>
public Vector3D Mins;
public Vector3D? Mins;
/// <summary>
/// Bounding box
/// </summary>
public Vector3D Maxs;
public Vector3D? Maxs;
/// <summary>
/// For sounds or lights
/// </summary>
public Vector3D OriginVector;
public Vector3D? OriginVector;
/// <summary>
/// Index into nodes

View File

@@ -22,7 +22,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// Texture S-vector
/// </summary>
public Vector3D TextureSVector;
public Vector3D? TextureSVector;
/// <summary>
/// Texture shift in the S direction
@@ -32,7 +32,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// Texture T-vector
/// </summary>
public Vector3D TextureTVector;
public Vector3D? TextureTVector;
/// <summary>
/// Texture shift in the T direction
@@ -42,7 +42,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// Lightmap S-vector
/// </summary>
public Vector3D LightmapSVector;
public Vector3D? LightmapSVector;
/// <summary>
/// Lightmap shift in the S direction
@@ -52,7 +52,7 @@ namespace SabreTools.Models.BSP
/// <summary>
/// Lightmap T-vector
/// </summary>
public Vector3D LightmapTVector;
public Vector3D? LightmapTVector;
/// <summary>
/// Lightmap shift in the T direction

View File

@@ -8,10 +8,10 @@ namespace SabreTools.Models.BSP
/// spec and the code of the hlbsp project.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct Vector3D
public class Vector3D
{
public float X { get; set; }
public float Y { get; set; }
public float Z { get; set; }
public float X;
public float Y;
public float Z;
}
}

View File

@@ -17,6 +17,6 @@ namespace SabreTools.Models.BSP
public int NumClusters { get; set; }
/// <remarks>[numclusters][2]</remarks>
public int[,]? ByteOffsets { get; set; }
public int[][]? ByteOffsets { get; set; }
}
}

View File

@@ -14,14 +14,14 @@ namespace SabreTools.Models.BSP
[StructLayout(LayoutKind.Sequential)]
public sealed class WorldLight
{
public Vector3D Origin;
public Vector3D? Origin;
public Vector3D Intensity;
public Vector3D? Intensity;
/// <summary>
/// For surfaces and spotlights
/// </summary>
public Vector3D Normal;
public Vector3D? Normal;
public int Cluster;

View File

@@ -6,6 +6,6 @@ namespace SabreTools.Models.ClrMamePro
public ClrMamePro? ClrMamePro { get; set; }
/// <remarks>game, machine, resource, set</remarks>
public GameBase?[]? Game { get; set; }
public GameBase[]? Game { get; set; }
}
}

View File

@@ -10,7 +10,7 @@ namespace SabreTools.Models.Compression.Quantum
/// order in the table, and with every symbol in the table
/// having a frequency of 1
/// </remarks>
public ModelSymbol?[]? Symbols { get; set; }
public ModelSymbol[]? Symbols { get; set; }
/// <remarks>
/// The initial total frequency is equal to the number of entries

View File

@@ -25,6 +25,6 @@ namespace SabreTools.Models.CueSheets
/// <summary>
/// List of TRACK in FILE
/// </summary>
public CueTrack?[]? Tracks { get; set; }
public CueTrack[]? Tracks { get; set; }
}
}

View File

@@ -36,6 +36,6 @@ namespace SabreTools.Models.CueSheets
/// <summary>
/// List of FILE in cuesheet
/// </summary>
public CueFile?[]? Files { get; set; }
public CueFile[]? Files { get; set; }
}
}

View File

@@ -53,7 +53,7 @@ namespace SabreTools.Models.CueSheets
/// List of INDEX in TRACK
/// </summary>
/// <remarks>Must start with 0 or 1 and then sequential</remarks>
public CueIndex?[]? Indices { get; set; }
public CueIndex[]? Indices { get; set; }
/// <summary>
/// POSTGAP

View File

@@ -15,6 +15,9 @@ namespace SabreTools.Models.DosCenter
[Required]
public string? CRC { get; set; }
/// <remarks>sha1, attribute</remarks>
public string? SHA1 { get; set; }
/// <remarks>date, attribute</remarks>
public string? Date { get; set; }
}

View File

@@ -21,7 +21,7 @@ namespace SabreTools.Models.GCF
/// <summary>
/// Block entries data
/// </summary>
public BlockEntry?[]? BlockEntries { get; set; }
public BlockEntry[]? BlockEntries { get; set; }
/// <summary>
/// Fragmentation map header data
@@ -31,7 +31,7 @@ namespace SabreTools.Models.GCF
/// <summary>
/// Fragmentation map data
/// </summary>
public FragmentationMap?[]? FragmentationMaps { get; set; }
public FragmentationMap[]? FragmentationMaps { get; set; }
/// <summary>
/// Block entry map header data
@@ -43,7 +43,7 @@ namespace SabreTools.Models.GCF
/// Block entry map data
/// </summary>
/// <remarks>Part of version 5 but not version 6.</remarks>
public BlockEntryMap?[]? BlockEntryMaps { get; set; }
public BlockEntryMap[]? BlockEntryMaps { get; set; }
/// <summary>
/// Directory header data
@@ -53,7 +53,7 @@ namespace SabreTools.Models.GCF
/// <summary>
/// Directory entries data
/// </summary>
public DirectoryEntry?[]? DirectoryEntries { get; set; }
public DirectoryEntry[]? DirectoryEntries { get; set; }
/// <summary>
/// Directory names data
@@ -63,22 +63,22 @@ namespace SabreTools.Models.GCF
/// <summary>
/// Directory info 1 entries data
/// </summary>
public DirectoryInfo1Entry?[]? DirectoryInfo1Entries { get; set; }
public DirectoryInfo1Entry[]? DirectoryInfo1Entries { get; set; }
/// <summary>
/// Directory info 2 entries data
/// </summary>
public DirectoryInfo2Entry?[]? DirectoryInfo2Entries { get; set; }
public DirectoryInfo2Entry[]? DirectoryInfo2Entries { get; set; }
/// <summary>
/// Directory copy entries data
/// </summary>
public DirectoryCopyEntry?[]? DirectoryCopyEntries { get; set; }
public DirectoryCopyEntry[]? DirectoryCopyEntries { get; set; }
/// <summary>
/// Directory local entries data
/// </summary>
public DirectoryLocalEntry?[]? DirectoryLocalEntries { get; set; }
public DirectoryLocalEntry[]? DirectoryLocalEntries { get; set; }
/// <summary>
/// Directory map header data
@@ -88,7 +88,7 @@ namespace SabreTools.Models.GCF
/// <summary>
/// Directory map entries data
/// </summary>
public DirectoryMapEntry?[]? DirectoryMapEntries { get; set; }
public DirectoryMapEntry[]? DirectoryMapEntries { get; set; }
/// <summary>
/// Checksum header data
@@ -103,12 +103,12 @@ namespace SabreTools.Models.GCF
/// <summary>
/// Checksum map entries data
/// </summary>
public ChecksumMapEntry?[]? ChecksumMapEntries { get; set; }
public ChecksumMapEntry[]? ChecksumMapEntries { get; set; }
/// <summary>
/// Checksum entries data
/// </summary>
public ChecksumEntry?[]? ChecksumEntries { get; set; }
public ChecksumEntry[]? ChecksumEntries { get; set; }
/// <summary>
/// Data block header data

View File

@@ -40,7 +40,7 @@ namespace SabreTools.Models.InstallShieldCabinet
/// <summary>
/// Standard file descriptors
/// </summary>
public FileDescriptor?[]? FileDescriptors { get; set; }
public FileDescriptor[]? FileDescriptors { get; set; }
#endregion
@@ -54,7 +54,7 @@ namespace SabreTools.Models.InstallShieldCabinet
/// <summary>
/// File groups
/// </summary>
public FileGroup?[]? FileGroups { get; set; }
public FileGroup[]? FileGroups { get; set; }
#endregion
@@ -68,7 +68,7 @@ namespace SabreTools.Models.InstallShieldCabinet
/// <summary>
/// Components
/// </summary>
public Component?[]? Components { get; set; }
public Component[]? Components { get; set; }
#endregion
}

View File

@@ -51,6 +51,6 @@
/// <summary>
/// Table entries in the bundle
/// </summary>
public EntryTableEntry?[]? TableEntries { get; set; }
public EntryTableEntry[]? TableEntries { get; set; }
}
}

View File

@@ -23,69 +23,69 @@ namespace SabreTools.Models.LinearExecutable
/// <summary>
/// Object table
/// </summary>
public ObjectTableEntry?[]? ObjectTable { get; set; }
public ObjectTableEntry[]? ObjectTable { get; set; }
/// <summary>
/// Object page map
/// </summary>
public ObjectPageMapEntry?[]? ObjectPageMap { get; set; }
public ObjectPageMapEntry[]? ObjectPageMap { get; set; }
// TODO: Object iterate data map table (Undefined)
/// <summary>
/// Resource table
/// </summary>
public ResourceTableEntry?[]? ResourceTable { get; set; }
public ResourceTableEntry[]? ResourceTable { get; set; }
/// <summary>
/// Resident Name table
/// </summary>
public ResidentNamesTableEntry?[]? ResidentNamesTable { get; set; }
public ResidentNamesTableEntry[]? ResidentNamesTable { get; set; }
/// <summary>
/// Entry table
/// </summary>
public EntryTableBundle?[]? EntryTable { get; set; }
public EntryTableBundle[]? EntryTable { get; set; }
/// <summary>
/// Module format directives table (optional)
/// </summary>
public ModuleFormatDirectivesTableEntry?[]? ModuleFormatDirectivesTable { get; set; }
public ModuleFormatDirectivesTableEntry[]? ModuleFormatDirectivesTable { get; set; }
/// <summary>
/// Verify record directive table (optional)
/// </summary>
public VerifyRecordDirectiveTableEntry?[]? VerifyRecordDirectiveTable { get; set; }
public VerifyRecordDirectiveTableEntry[]? VerifyRecordDirectiveTable { get; set; }
/// <summary>
/// Fix-up page table
/// </summary>
public FixupPageTableEntry?[]? FixupPageTable { get; set; }
public FixupPageTableEntry[]? FixupPageTable { get; set; }
/// <summary>
/// Fix-up record table
/// </summary>
public FixupRecordTableEntry?[]? FixupRecordTable { get; set; }
public FixupRecordTableEntry[]? FixupRecordTable { get; set; }
/// <summary>
/// Import module name table
/// </summary>
public ImportModuleNameTableEntry?[]? ImportModuleNameTable { get; set; }
public ImportModuleNameTableEntry[]? ImportModuleNameTable { get; set; }
/// <summary>
/// Import procedure name table
/// </summary>
public ImportModuleProcedureNameTableEntry?[]? ImportModuleProcedureNameTable { get; set; }
public ImportModuleProcedureNameTableEntry[]? ImportModuleProcedureNameTable { get; set; }
/// <summary>
/// Per-Page checksum table
/// </summary>
public PerPageChecksumTableEntry?[]? PerPageChecksumTable { get; set; }
public PerPageChecksumTableEntry[]? PerPageChecksumTable { get; set; }
/// <summary>
/// Non-Resident Name table
/// </summary>
public NonResidentNamesTableEntry?[]? NonResidentNamesTable { get; set; }
public NonResidentNamesTableEntry[]? NonResidentNamesTable { get; set; }
// TODO: Non-resident directives data (Undefined)

View File

@@ -1,4 +1,6 @@
namespace SabreTools.Models.LinearExecutable
using System.Runtime.InteropServices;
namespace SabreTools.Models.LinearExecutable
{
/// <summary>
/// The resident and non-resident name tables define the ASCII names and ordinal
@@ -25,6 +27,7 @@
/// </summary>
/// <see href="https://faydoc.tripod.com/formats/exe-LE.htm"/>
/// <see href="http://www.edm2.com/index.php/LX_-_Linear_eXecutable_Module_Format_Description"/>
[StructLayout(LayoutKind.Sequential)]
public sealed class NonResidentNamesTableEntry
{
/// <summary>
@@ -39,7 +42,7 @@
/// signifies that additional information is contained in the linear EXE module and
/// will be used in the future for parameter type checking.
/// </remarks>
public byte Length { get; set; } // TODO: Remove in lieu of AnsiBStr
public byte Length { get; set; }
/// <summary>
/// ASCII String.

View File

@@ -24,6 +24,6 @@ namespace SabreTools.Models.MSDOS
/// make the loader add start segment address to the value at offset
/// 1*0x10+0x1A=0x2A within the program data.
/// </summary>
public RelocationEntry?[]? RelocationTable { get; set; }
public RelocationEntry[]? RelocationTable { get; set; }
}
}

View File

@@ -51,6 +51,6 @@
/// <summary>
/// Data blocks associated with this folder
/// </summary>
public CFDATA?[]? DataBlocks { get; set; }
public CFDATA[]? DataBlocks { get; set; }
}
}

View File

@@ -17,11 +17,11 @@
/// <summary>
/// One or more CFFOLDER entries
/// </summary>
public CFFOLDER?[]? Folders { get; set; }
public CFFOLDER[]? Folders { get; set; }
/// <summary>
/// A series of one or more cabinet file (CFFILE) entries
/// </summary>
public CFFILE?[]? Files { get; set; }
public CFFILE[]? Files { get; set; }
}
}

View File

@@ -37,12 +37,12 @@
/// <summary>
/// Hash Table (optional)
/// </summary>
public HashEntry?[]? HashTable { get; set; }
public HashEntry[]? HashTable { get; set; }
/// <summary>
/// Block Table (optional)
/// </summary>
public BlockEntry?[]? BlockTable { get; set; }
public BlockEntry[]? BlockTable { get; set; }
/// <summary>
/// Hi-Block Table (optional)

View File

@@ -25,7 +25,7 @@ namespace SabreTools.Models.N3DS
/// <remarks>
/// https://www.3dbrew.org/wiki/CIA#Certificate_Chain
/// </remarks>
public Certificate?[]? CertificateChain { get; set; }
public Certificate[]? CertificateChain { get; set; }
/// <summary>
/// Ticket
@@ -40,7 +40,7 @@ namespace SabreTools.Models.N3DS
/// <summary>
/// Content file data
/// </summary>
public NCCHHeader?[]? Partitions { get; set; }
public NCCHHeader[]? Partitions { get; set; }
/// <summary>
/// Content file data

View File

@@ -23,21 +23,21 @@ namespace SabreTools.Models.N3DS
/// <summary>
/// NCCH partitions
/// </summary>
public NCCHHeader?[]? Partitions { get; set; }
public NCCHHeader[]? Partitions { get; set; }
/// <summary>
/// NCCH extended headers
/// </summary>
public NCCHExtendedHeader?[]? ExtendedHeaders { get; set; }
public NCCHExtendedHeader[]? ExtendedHeaders { get; set; }
/// <summary>
/// ExeFS headers associated with each partition
/// </summary>
public ExeFSHeader?[]? ExeFSHeaders { get; set; }
public ExeFSHeader[]? ExeFSHeaders { get; set; }
/// <summary>
/// RomFS headers associated with each partition
/// </summary>
public RomFSHeader?[]? RomFSHeaders { get; set; }
public RomFSHeader[]? RomFSHeaders { get; set; }
}
}

View File

@@ -16,7 +16,7 @@
/// <summary>
/// File headers (10 headers maximum, 16 bytes each)
/// </summary>
public ExeFSFileHeader?[]? FileHeaders { get; set; }
public ExeFSFileHeader[]? FileHeaders { get; set; }
/// <summary>
/// Reserved

View File

@@ -46,7 +46,7 @@
/// <summary>
/// Offset & Length partition table, in media units
/// </summary>
public PartitionTableEntry?[]? PartitionsTable { get; set; }
public PartitionTableEntry[]? PartitionsTable { get; set; }
#endregion

View File

@@ -173,6 +173,6 @@ namespace SabreTools.Models.N3DS
/// <remarks>
/// https://www.3dbrew.org/wiki/Ticket#Certificate_Chain
/// </remarks>
public Certificate?[]? CertificateChain { get; set; }
public Certificate[]? CertificateChain { get; set; }
}
}

View File

@@ -136,13 +136,13 @@ namespace SabreTools.Models.N3DS
/// <summary>
/// There are 64 of these records, usually only the first is used.
/// </summary>
public ContentInfoRecord?[]? ContentInfoRecords { get; set; }
public ContentInfoRecord[]? ContentInfoRecords { get; set; }
/// <summary>
/// There is one of these for each content contained in this title.
/// (Determined by "Content Count" in the TMD Header).
/// </summary>
public ContentChunkRecord?[]? ContentChunkRecords { get; set; }
public ContentChunkRecord[]? ContentChunkRecords { get; set; }
/// <summary>
/// Certificate chain
@@ -150,6 +150,6 @@ namespace SabreTools.Models.N3DS
/// <remarks>
/// https://www.3dbrew.org/wiki/Title_metadata#Certificate_Chain
/// </remarks>
public Certificate?[]? CertificateChain { get; set; }
public Certificate[]? CertificateChain { get; set; }
}
}

View File

@@ -21,7 +21,7 @@ namespace SabreTools.Models.NCF
/// <summary>
/// Directory entries data
/// </summary>
public DirectoryEntry?[]? DirectoryEntries { get; set; }
public DirectoryEntry[]? DirectoryEntries { get; set; }
/// <summary>
/// Directory names data
@@ -31,22 +31,22 @@ namespace SabreTools.Models.NCF
/// <summary>
/// Directory info 1 entries data
/// </summary>
public DirectoryInfo1Entry?[]? DirectoryInfo1Entries { get; set; }
public DirectoryInfo1Entry[]? DirectoryInfo1Entries { get; set; }
/// <summary>
/// Directory info 2 entries data
/// </summary>
public DirectoryInfo2Entry?[]? DirectoryInfo2Entries { get; set; }
public DirectoryInfo2Entry[]? DirectoryInfo2Entries { get; set; }
/// <summary>
/// Directory copy entries data
/// </summary>
public DirectoryCopyEntry?[]? DirectoryCopyEntries { get; set; }
public DirectoryCopyEntry[]? DirectoryCopyEntries { get; set; }
/// <summary>
/// Directory local entries data
/// </summary>
public DirectoryLocalEntry?[]? DirectoryLocalEntries { get; set; }
public DirectoryLocalEntry[]? DirectoryLocalEntries { get; set; }
/// <summary>
/// Unknown header data
@@ -56,7 +56,7 @@ namespace SabreTools.Models.NCF
/// <summary>
/// Unknown entries data
/// </summary>
public UnknownEntry?[]? UnknownEntries { get; set; }
public UnknownEntry[]? UnknownEntries { get; set; }
/// <summary>
/// Checksum header data
@@ -71,11 +71,11 @@ namespace SabreTools.Models.NCF
/// <summary>
/// Checksum map entries data
/// </summary>
public ChecksumMapEntry?[]? ChecksumMapEntries { get; set; }
public ChecksumMapEntry[]? ChecksumMapEntries { get; set; }
/// <summary>
/// Checksum entries data
/// </summary>
public ChecksumEntry?[]? ChecksumEntries { get; set; }
public ChecksumEntry[]? ChecksumEntries { get; set; }
}
}

View File

@@ -18,6 +18,6 @@
/// <summary>
/// A table of relocation records follows.
/// </summary>
public RelocationRecord?[]? RelocationRecords { get; set; }
public RelocationRecord[]? RelocationRecords { get; set; }
}
}

View File

@@ -23,7 +23,7 @@ namespace SabreTools.Models.NewExecutable
/// <summary>
/// A table of resource type information blocks follows.
/// </summary>
public ResourceTypeInformationEntry?[]? ResourceTypes { get; set; }
public ResourceTypeInformationEntry[]? ResourceTypes { get; set; }
/// <summary>
/// Resource type and name strings are stored at the end of the

View File

@@ -29,6 +29,6 @@
/// <summary>
/// A table of resources for this type follows.
/// </summary>
public ResourceTypeResourceEntry?[]? Resources { get; set; }
public ResourceTypeResourceEntry[]? Resources { get; set; }
}
}

View File

@@ -28,6 +28,6 @@ namespace SabreTools.Models.Nitro
/// <summary>
/// File allocation table
/// </summary>
public FileAllocationTableEntry?[]? FileAllocationTable { get; set; }
public FileAllocationTableEntry[]? FileAllocationTable { get; set; }
}
}

View File

@@ -15,11 +15,11 @@ namespace SabreTools.Models.Nitro
/// <summary>
/// Folder allocation table
/// </summary>
public FolderAllocationTableEntry?[]? FolderAllocationTable { get; set; }
public FolderAllocationTableEntry[]? FolderAllocationTable { get; set; }
/// <summary>
/// Name list
/// </summary>
public NameListEntry?[]? NameList { get; set; }
public NameListEntry[]? NameList { get; set; }
}
}

View File

@@ -14,6 +14,6 @@ namespace SabreTools.Models.PAK
/// <summary>
/// Deserialized directory items data
/// </summary>
public DirectoryItem?[]? DirectoryItems { get; set; }
public DirectoryItem[]? DirectoryItems { get; set; }
}
}

View File

@@ -14,7 +14,7 @@ namespace SabreTools.Models.PFF
/// <summary>
/// Segments
/// </summary>
public Segment?[]? Segments { get; set; }
public Segment[]? Segments { get; set; }
/// <summary>
/// Footer

View File

@@ -29,6 +29,6 @@
/// <summary>
/// Disc information and emergency brake units
/// </summary>
public DiscInformationUnit?[]? Units { get; set; }
public DiscInformationUnit[]? Units { get; set; }
}
}

View File

@@ -17,7 +17,7 @@ namespace SabreTools.Models.PKZIP
/// Encryption headers, may appear second in each group
/// </summary>
/// TODO: Determine the model for the encryption headers
public byte[]?[]? EncryptionHeaders { get; set; }
public byte[][]? EncryptionHeaders { get; set; }
/// <summary>
/// File data, appears after the encryption header
@@ -28,12 +28,12 @@ namespace SabreTools.Models.PKZIP
/// <summary>
/// Data descriptors, appears after the file data
/// </summary>
public DataDescriptor?[]? DataDescriptors { get; set; }
public DataDescriptor[]? DataDescriptors { get; set; }
/// <summary>
/// ZIP64 Data descriptors, appears after the file data
/// </summary>
public DataDescriptor64?[]? ZIP64DataDescriptors { get; set; }
public DataDescriptor64[]? ZIP64DataDescriptors { get; set; }
#endregion

View File

@@ -40,7 +40,7 @@ namespace SabreTools.Models.PlayJ
/// <summary>
/// Data files (V2 only)
/// </summary>
public DataFile?[]? DataFiles { get; set; }
public DataFile[]? DataFiles { get; set; }
// After the data files is a block starting with 0x00000001
// This block then contains highly repeating data, possible audio samples?

View File

@@ -13,6 +13,6 @@ namespace SabreTools.Models.PlayJ
/// <summary>
/// Embedded audio files / headers
/// </summary>
public AudioFile?[]? AudioFiles { get; set; }
public AudioFile[]? AudioFiles { get; set; }
}
}

View File

@@ -12,10 +12,10 @@ namespace SabreTools.Models.PortableExecutable
#region Group
[XmlElement("assemblyIdentity")]
public AssemblyIdentity?[]? AssemblyIdentities { get; set; }
public AssemblyIdentity[]? AssemblyIdentities { get; set; }
[XmlElement("noInheritable")]
public AssemblyNoInheritable?[]? NoInheritables { get; set; }
public AssemblyNoInheritable[]? NoInheritables { get; set; }
#endregion
@@ -31,19 +31,19 @@ namespace SabreTools.Models.PortableExecutable
//public AssemblyNoInheritable NoInheritable { get; set; }
[XmlElement("comInterfaceExternalProxyStub")]
public AssemblyCOMInterfaceExternalProxyStub?[]? COMInterfaceExternalProxyStub { get; set; }
public AssemblyCOMInterfaceExternalProxyStub[]? COMInterfaceExternalProxyStub { get; set; }
[XmlElement("dependency")]
public AssemblyDependency?[]? Dependency { get; set; }
public AssemblyDependency[]? Dependency { get; set; }
[XmlElement("file")]
public AssemblyFile?[]? File { get; set; }
public AssemblyFile[]? File { get; set; }
[XmlElement("clrClass")]
public AssemblyCommonLanguageRuntimeClass?[]? CLRClass { get; set; }
public AssemblyCommonLanguageRuntimeClass[]? CLRClass { get; set; }
[XmlElement("clrSurrogate")]
public AssemblyCommonLanguageSurrogateClass?[]? CLRSurrogate { get; set; }
public AssemblyCommonLanguageSurrogateClass[]? CLRSurrogate { get; set; }
#endregion
@@ -94,7 +94,7 @@ namespace SabreTools.Models.PortableExecutable
public string? Description { get; set; }
[XmlElement("progid")]
public AssemblyProgID?[]? ProgIDs { get; set; }
public AssemblyProgID[]? ProgIDs { get; set; }
}
/// <see href="https://learn.microsoft.com/en-us/windows/win32/sbscs/manifest-file-schema"/>
@@ -166,7 +166,7 @@ namespace SabreTools.Models.PortableExecutable
public string? ThreadingModel { get; set; }
[XmlElement("progid")]
public AssemblyProgID?[]? ProgIDs { get; set; }
public AssemblyProgID[]? ProgIDs { get; set; }
}
/// <see href="https://learn.microsoft.com/en-us/windows/win32/sbscs/manifest-file-schema"/>
@@ -199,7 +199,7 @@ namespace SabreTools.Models.PortableExecutable
public AssemblyIdentity? AssemblyIdentity { get; set; }
[XmlElement("bindingRedirect")]
public AssemblyBindingRedirect?[]? BindingRedirect { get; set; }
public AssemblyBindingRedirect[]? BindingRedirect { get; set; }
}
/// <see href="https://learn.microsoft.com/en-us/windows/win32/sbscs/manifest-file-schema"/>
@@ -255,16 +255,16 @@ namespace SabreTools.Models.PortableExecutable
#region Group
[XmlElement("comClass")]
public AssemblyCOMClass?[]? COMClass { get; set; }
public AssemblyCOMClass[]? COMClass { get; set; }
[XmlElement("comInterfaceProxyStub")]
public AssemblyCOMInterfaceProxyStub?[]? COMInterfaceProxyStub { get; set; }
public AssemblyCOMInterfaceProxyStub[]? COMInterfaceProxyStub { get; set; }
[XmlElement("typelib")]
public AssemblyTypeLib?[]? Typelib { get; set; }
public AssemblyTypeLib[]? Typelib { get; set; }
[XmlElement("windowClass")]
public AssemblyWindowClass?[]? WindowClass { get; set; }
public AssemblyWindowClass[]? WindowClass { get; set; }
#endregion
}

View File

@@ -46,6 +46,6 @@
/// in the Page RVA field for the block. This offset
/// specifies where the base relocation is to be applied.
/// </summary>
public BaseRelocationTypeOffsetFieldEntry?[]? TypeOffsetFieldEntries { get; set; }
public BaseRelocationTypeOffsetFieldEntry[]? TypeOffsetFieldEntries { get; set; }
}
}

View File

@@ -33,6 +33,6 @@
/// file and is not mapped into the run-time address space). If it is mapped,
/// the RVA is its address.
/// </summary>
public DebugDirectoryEntry?[]? DebugDirectoryTable { get; set; }
public DebugDirectoryEntry[]? DebugDirectoryTable { get; set; }
}
}

View File

@@ -31,7 +31,7 @@
/// box. The cdit member specifies the number of DLGITEMTEMPLATE structures in the template.
/// These DLGITEMTEMPLATE structures must be aligned on DWORD boundaries.
/// </summary>
public DialogItemTemplate?[]? DialogItemTemplates { get; set; }
public DialogItemTemplate[]? DialogItemTemplates { get; set; }
/// <summary>
/// Following the DLGTEMPLATEEX header in an extended dialog box template is one or more
@@ -39,7 +39,7 @@
/// member of the DLGITEMTEMPLATEEX structure specifies the number of DLGITEMTEMPLATEEX
/// structures that follow in the template.
/// </summary>
public DialogItemTemplateExtended?[]? ExtendedDialogItemTemplates { get; set; }
public DialogItemTemplateExtended[]? ExtendedDialogItemTemplates { get; set; }
#endregion
}

View File

@@ -40,12 +40,12 @@ namespace SabreTools.Models.PortableExecutable
/// <summary>
/// Section table
/// </summary>
public SectionHeader?[]? SectionTable { get; set; }
public SectionHeader[]? SectionTable { get; set; }
/// <summary>
/// COFF symbol table
/// </summary>
public COFFSymbolTableEntry?[]? COFFSymbolTable { get; set; }
public COFFSymbolTableEntry[]? COFFSymbolTable { get; set; }
/// <summary>
/// COFF string table
@@ -55,7 +55,7 @@ namespace SabreTools.Models.PortableExecutable
/// <summary>
/// Attribute certificate table
/// </summary>
public AttributeCertificateTableEntry?[]? AttributeCertificateTable { get; set; }
public AttributeCertificateTableEntry[]? AttributeCertificateTable { get; set; }
/// <summary>
/// Delay-load directory table
@@ -71,7 +71,7 @@ namespace SabreTools.Models.PortableExecutable
/// <summary>
/// Base relocation table (.reloc)
/// </summary>
public BaseRelocationBlock?[]? BaseRelocationTable { get; set; }
public BaseRelocationBlock[]? BaseRelocationTable { get; set; }
/// <summary>
/// Debug table (.debug*)

View File

@@ -27,7 +27,7 @@
/// can import a symbol by using an index to this table (an ordinal) or, optionally, by
/// using the public name that corresponds to the ordinal if a public name is defined.
/// </summary>
public ExportAddressTableEntry?[]? ExportAddressTable { get; set; }
public ExportAddressTableEntry[]? ExportAddressTable { get; set; }
/// <summary>
/// An array of pointers to the public export names, sorted in ascending order.

View File

@@ -16,6 +16,6 @@
/// A structure that contains a unique ordinal identifier for each font in the resource. The DE
/// member is a placeholder for the variable-length array of DIRENTRY structures.
/// </summary>
public DirEntry?[]? DE { get; set; }
public DirEntry[]? DE { get; set; }
}
}

View File

@@ -23,23 +23,23 @@ namespace SabreTools.Models.PortableExecutable
/// The import information begins with the import directory table, which describes the
/// remainder of the import information.
/// </summary>
public ImportDirectoryTableEntry?[]? ImportDirectoryTable { get; set; }
public ImportDirectoryTableEntry[]? ImportDirectoryTable { get; set; }
/// <summary>
/// An import lookup table is an array of 32-bit numbers for PE32 or an array of 64-bit
/// numbers for PE32+.
/// </summary>
public Dictionary<int, ImportLookupTableEntry?[]?>? ImportLookupTables { get; set; }
public Dictionary<int, ImportLookupTableEntry[]?>? ImportLookupTables { get; set; }
/// <summary>
/// These addresses are the actual memory addresses of the symbols, although technically
/// they are still called "virtual addresses".
/// </summary>
public Dictionary<int, ImportAddressTableEntry?[]?>? ImportAddressTables { get; set; }
public Dictionary<int, ImportAddressTableEntry[]?>? ImportAddressTables { get; set; }
/// <summary>
/// One hint/name table suffices for the entire import section.
/// </summary>
public HintNameTableEntry?[]? HintNameTable { get; set; }
public HintNameTableEntry[]? HintNameTable { get; set; }
}
}

View File

@@ -17,6 +17,6 @@
/// <summary>
/// Menu items
/// </summary>
public MenuItem?[]? MenuItems { get; set; }
public MenuItem[]? MenuItems { get; set; }
}
}

View File

@@ -17,7 +17,7 @@ namespace SabreTools.Models.PortableExecutable
/// <summary>
/// An array of structures. The array is the size indicated by the NumberOfBlocks member.
/// </summary>
public MessageResourceBlock?[]? Blocks { get; set; }
public MessageResourceBlock[]? Blocks { get; set; }
/// <summary>
/// Message resource entries

View File

@@ -54,6 +54,6 @@
/// strings to identify Type, Name, or Language entries (depending on the
/// level of the table).
/// </summary>
public ResourceDirectoryEntry?[]? Entries { get; set; }
public ResourceDirectoryEntry[]? Entries { get; set; }
}
}

View File

@@ -100,11 +100,11 @@
/// <summary>
/// COFF Relocations (Object Only)
/// </summary>
public COFFRelocation?[]? COFFRelocations { get; set; }
public COFFRelocation[]? COFFRelocations { get; set; }
/// <summary>
/// COFF Line Numbers (Deprecated)
/// </summary>
public COFFLineNumber?[]? COFFLineNumbers { get; set; }
public COFFLineNumber[]? COFFLineNumbers { get; set; }
}
}

View File

@@ -56,6 +56,6 @@ namespace SabreTools.Models.PortableExecutable
/// <summary>
/// Entry table
/// </summary>
public SecuROMAddDEntry?[]? Entries { get; set; }
public SecuROMAddDEntry[]? Entries { get; set; }
}
}

View File

@@ -38,6 +38,6 @@
/// member indicates the appropriate language and code page for displaying the text in
/// that StringTable structure.
/// </summary>
public StringTable?[]? Children { get; set; }
public StringTable[]? Children { get; set; }
}
}

View File

@@ -41,6 +41,6 @@
/// <summary>
/// An array of one or more StringData structures.
/// </summary>
public StringData?[]? Children { get; set; }
public StringData[]? Children { get; set; }
}
}

View File

@@ -36,6 +36,6 @@
/// <summary>
/// Typically contains a list of languages that the application or DLL supports.
/// </summary>
public VarData?[]? Children { get; set; }
public VarData[]? Children { get; set; }
}
}

View File

@@ -14,7 +14,7 @@ namespace SabreTools.Models.Quantum
/// <summary>
/// This is immediately followed by the list of files
/// </summary>
public FileDescriptor?[]? FileList { get; set; }
public FileDescriptor[]? FileList { get; set; }
/// <summary>
/// Immediately following the list of files is the compressed data

View File

@@ -23,11 +23,11 @@
/// <summary>
/// Files
/// </summary>
public FileEntry?[]? Files { get; set; }
public FileEntry[]? Files { get; set; }
/// <summary>
/// File headers
/// </summary>
public FileHeader?[]? FileHeaders { get; set; }
public FileHeader[]? FileHeaders { get; set; }
}
}

View File

@@ -0,0 +1,19 @@
namespace SabreTools.Models.SGA
{
/// <summary>
/// SGA game archive
/// </summary>
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
public sealed class Archive
{
/// <summary>
///Header data
/// </summary>
public Header? Header { get; set; }
/// <summary>
/// Directory data
/// </summary>
public Directory? Directory { get; set; }
}
}

View File

@@ -1,5 +1,50 @@
using System.Collections.Generic;
namespace SabreTools.Models.SGA
{
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
public abstract class Directory { }
public abstract class Directory
{
/// <summary>
/// Source SGA file
/// </summary>
public Archive? File { get; set; }
}
/// <summary>
/// Specialization File7 and up where the CRC moved to the header and the CRC is of the compressed data and there are stronger hashes.
/// </summary>
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
public class Directory<THeader, TDirectoryHeader, TSection, TFolder, TFile, U> : Directory
where THeader : Header
where TDirectoryHeader : DirectoryHeader<U>
where TSection : Section<U>
where TFolder : Folder<U>
where TFile : File
{
/// <summary>
/// Directory header data
/// </summary>
public TDirectoryHeader? DirectoryHeader { get; set; }
/// <summary>
/// Sections data
/// </summary>
public TSection[]? Sections { get; set; }
/// <summary>
/// Folders data
/// </summary>
public TFolder[]? Folders { get; set; }
/// <summary>
/// Files data
/// </summary>
public TFile[]? Files { get; set; }
/// <summary>
/// String table data
/// </summary>
public Dictionary<long, string?>? StringTable { get; set; }
}
}

View File

@@ -1,5 +1,5 @@
namespace SabreTools.Models.SGA
{
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
public sealed class Directory4 : SpecializedDirectory<Header4, DirectoryHeader4, Section4, Folder4, File4, ushort> { }
public sealed class Directory4 : Directory<Header4, DirectoryHeader4, Section4, Folder4, File4, ushort> { }
}

View File

@@ -1,5 +1,5 @@
namespace SabreTools.Models.SGA
{
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
public sealed class Directory5 : SpecializedDirectory<Header4, DirectoryHeader5, Section5, Folder5, File4, uint> { }
public sealed class Directory5 : Directory<Header4, DirectoryHeader5, Section5, Folder5, File4, uint> { }
}

View File

@@ -1,5 +1,5 @@
namespace SabreTools.Models.SGA
{
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
public sealed class Directory6 : SpecializedDirectory<Header6, DirectoryHeader5, Section5, Folder5, File6, uint> { }
public sealed class Directory6 : Directory<Header6, DirectoryHeader5, Section5, Folder5, File6, uint> { }
}

View File

@@ -1,5 +1,5 @@
namespace SabreTools.Models.SGA
{
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
public sealed class Directory7 : SpecializedDirectory<Header6, DirectoryHeader7, Section5, Folder5, File7, uint> { }
public sealed class Directory7 : Directory<Header6, DirectoryHeader7, Section5, Folder5, File7, uint> { }
}

View File

@@ -1,5 +1,11 @@
namespace SabreTools.Models.SGA
{
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
public abstract class DirectoryHeader
{
// All logic lives in the typed version
}
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
public abstract class DirectoryHeader<T>
{

View File

@@ -1,5 +1,5 @@
namespace SabreTools.Models.SGA
{
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
public class DirectoryHeader5 : DirectoryHeader<uint> { }
public sealed class DirectoryHeader5 : DirectoryHeader<uint> { }
}

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