mirror of
https://github.com/SabreTools/SabreTools.Models.git
synced 2026-02-07 21:31:10 +00:00
Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a19afc240c | ||
|
|
148e97ef64 | ||
|
|
676b446025 | ||
|
|
aeff75d8d3 | ||
|
|
e20e515f56 | ||
|
|
bf02266f0f | ||
|
|
b521e503c2 | ||
|
|
48e79d26ed | ||
|
|
989ef41c6d | ||
|
|
6b0c4c3024 | ||
|
|
4b54d0f4dc | ||
|
|
2bc1cfc5d0 | ||
|
|
362abfdc64 | ||
|
|
a06ff8f8b3 | ||
|
|
7269e91913 | ||
|
|
c118271565 | ||
|
|
71ccbc6ab1 | ||
|
|
ed5c1a7173 |
@@ -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
|
||||
@@ -1,9 +1,17 @@
|
||||
# SabreTools.Models
|
||||
|
||||
[](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:
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -21,6 +21,6 @@ namespace SabreTools.Models.AACS
|
||||
/// <summary>
|
||||
/// Revocation list entries
|
||||
/// </summary>
|
||||
public DriveRevocationSignatureBlock?[]? SignatureBlocks { get; set; }
|
||||
public DriveRevocationSignatureBlock[]? SignatureBlocks { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,6 @@ namespace SabreTools.Models.AACS
|
||||
/// <summary>
|
||||
/// Revocation list entries
|
||||
/// </summary>
|
||||
public HostRevocationSignatureBlock?[]? SignatureBlocks { get; set; }
|
||||
public HostRevocationSignatureBlock[]? SignatureBlocks { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,6 @@ namespace SabreTools.Models.AACS
|
||||
/// <summary>
|
||||
/// Records
|
||||
/// </summary>
|
||||
public Record?[]? Records { get; set; }
|
||||
public Record[]? Records { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,6 @@ namespace SabreTools.Models.ArchiveDotOrg
|
||||
public class Files
|
||||
{
|
||||
[XmlElement("file")]
|
||||
public File?[]? File { get; set; }
|
||||
public File[]? File { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,6 @@ namespace SabreTools.Models.AttractMode
|
||||
[Required]
|
||||
public string[]? Header { get; set; }
|
||||
|
||||
public Row?[]? Row { get; set; }
|
||||
public Row[]? Row { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// Vector field defining displacement volume.
|
||||
/// </summary>
|
||||
public Vector3D Vec;
|
||||
public Vector3D? Vec;
|
||||
|
||||
/// <summary>
|
||||
/// Displacement distances.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -41,6 +41,6 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// <see cref="VertexIndexCount">
|
||||
/// </summary>
|
||||
public int[]? VertexIndices;
|
||||
public int[]? VertexIndicies;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
43
SabreTools.Models/BSP/PakfileLump.cs
Normal file
43
SabreTools.Models/BSP/PakfileLump.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
11
SabreTools.Models/BSP/PhysCollideLump.cs
Normal file
11
SabreTools.Models/BSP/PhysCollideLump.cs
Normal 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; }
|
||||
}
|
||||
}
|
||||
42
SabreTools.Models/BSP/PhysModel.cs
Normal file
42
SabreTools.Models/BSP/PhysModel.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
25
SabreTools.Models/BSP/PhysSolid.cs
Normal file
25
SabreTools.Models/BSP/PhysSolid.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -19,6 +19,6 @@ namespace SabreTools.Models.BSP
|
||||
/// Model name
|
||||
/// </summary>
|
||||
/// <remarks>[dictEntries][128]</remarks>
|
||||
public char[,]? Name;
|
||||
public char[][]? Name;
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// RGB reflectivity
|
||||
/// </summary>
|
||||
public Vector3D Reflectivity;
|
||||
public Vector3D? Reflectivity;
|
||||
|
||||
/// <summary>
|
||||
/// Index into TexdataStringTable
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -83,7 +83,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// Precaculated light info for entities.
|
||||
/// </summary>
|
||||
public CompressedLightCube AmbientLighting;
|
||||
public CompressedLightCube? AmbientLighting;
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -51,6 +51,6 @@
|
||||
/// <summary>
|
||||
/// Table entries in the bundle
|
||||
/// </summary>
|
||||
public EntryTableEntry?[]? TableEntries { get; set; }
|
||||
public EntryTableEntry[]? TableEntries { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,6 +51,6 @@
|
||||
/// <summary>
|
||||
/// Data blocks associated with this folder
|
||||
/// </summary>
|
||||
public CFDATA?[]? DataBlocks { get; set; }
|
||||
public CFDATA[]? DataBlocks { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
/// <summary>
|
||||
/// Offset & Length partition table, in media units
|
||||
/// </summary>
|
||||
public PartitionTableEntry?[]? PartitionsTable { get; set; }
|
||||
public PartitionTableEntry[]? PartitionsTable { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,6 @@
|
||||
/// <summary>
|
||||
/// A table of relocation records follows.
|
||||
/// </summary>
|
||||
public RelocationRecord?[]? RelocationRecords { get; set; }
|
||||
public RelocationRecord[]? RelocationRecords { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -29,6 +29,6 @@
|
||||
/// <summary>
|
||||
/// A table of resources for this type follows.
|
||||
/// </summary>
|
||||
public ResourceTypeResourceEntry?[]? Resources { get; set; }
|
||||
public ResourceTypeResourceEntry[]? Resources { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,6 @@ namespace SabreTools.Models.Nitro
|
||||
/// <summary>
|
||||
/// File allocation table
|
||||
/// </summary>
|
||||
public FileAllocationTableEntry?[]? FileAllocationTable { get; set; }
|
||||
public FileAllocationTableEntry[]? FileAllocationTable { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,6 @@ namespace SabreTools.Models.PAK
|
||||
/// <summary>
|
||||
/// Deserialized directory items data
|
||||
/// </summary>
|
||||
public DirectoryItem?[]? DirectoryItems { get; set; }
|
||||
public DirectoryItem[]? DirectoryItems { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace SabreTools.Models.PFF
|
||||
/// <summary>
|
||||
/// Segments
|
||||
/// </summary>
|
||||
public Segment?[]? Segments { get; set; }
|
||||
public Segment[]? Segments { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Footer
|
||||
|
||||
@@ -29,6 +29,6 @@
|
||||
/// <summary>
|
||||
/// Disc information and emergency brake units
|
||||
/// </summary>
|
||||
public DiscInformationUnit?[]? Units { get; set; }
|
||||
public DiscInformationUnit[]? Units { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -13,6 +13,6 @@ namespace SabreTools.Models.PlayJ
|
||||
/// <summary>
|
||||
/// Embedded audio files / headers
|
||||
/// </summary>
|
||||
public AudioFile?[]? AudioFiles { get; set; }
|
||||
public AudioFile[]? AudioFiles { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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*)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,6 @@
|
||||
/// <summary>
|
||||
/// Menu items
|
||||
/// </summary>
|
||||
public MenuItem?[]? MenuItems { get; set; }
|
||||
public MenuItem[]? MenuItems { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,6 @@ namespace SabreTools.Models.PortableExecutable
|
||||
/// <summary>
|
||||
/// Entry table
|
||||
/// </summary>
|
||||
public SecuROMAddDEntry?[]? Entries { get; set; }
|
||||
public SecuROMAddDEntry[]? Entries { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,6 @@
|
||||
/// <summary>
|
||||
/// An array of one or more StringData structures.
|
||||
/// </summary>
|
||||
public StringData?[]? Children { get; set; }
|
||||
public StringData[]? Children { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
19
SabreTools.Models/SGA/Archive.cs
Normal file
19
SabreTools.Models/SGA/Archive.cs
Normal 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; }
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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> { }
|
||||
}
|
||||
|
||||
@@ -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> { }
|
||||
}
|
||||
|
||||
@@ -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> { }
|
||||
}
|
||||
|
||||
@@ -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> { }
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
{
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user