Add Z3DS file header structure

This commit is contained in:
Matt Nadareski
2026-05-18 09:39:48 -04:00
parent 371623e3fa
commit 5ef595e01a
2 changed files with 56 additions and 0 deletions

View File

@@ -22,5 +22,9 @@ namespace SabreTools.Data.Models.N3DS
public static byte[] RomfsCounter = [0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
public const int CXTExtendedDataHeaderLength = 0x800;
// Z3DS
public const string Z3DSMagicNumber = "Z3DS";
}
}

View File

@@ -0,0 +1,52 @@
namespace SabreTools.Data.Models.N3DS
{
/// <summary>
/// File header for Zstd-compressed 3DS data
/// </summary>
/// <see href="https://github.com/azahar-emu/azahar/blob/master/src/common/zstd_compression.h"/>
public class Z3DSFileHeader
{
/// <summary>
/// Magic ID, always 'Z3DS'
/// </summary>
/// <remarks>4 bytes</remarks>
public string Magic { get; set; } = string.Empty;
/// <summary>
/// Magic ID of the compressed structure
/// </summary>
/// <remarks>4 bytes</remarks>
public string UnderlyingMagic { get; set; } = string.Empty;
/// <summary>
/// Header version
/// </summary>
/// <remarks>Currently only a value of 1 is expected</remarks>
public byte Version { get; set; }
/// <summary>
/// Reserved
/// </summary>
public byte Reserved { get; set; }
/// <summary>
/// Header size
/// </summary>
public ushort HeaderSize { get; set; }
/// <summary>
/// Metadata size
/// </summary>
public uint MetadataSize { get; set; }
/// <summary>
/// Compressed size of the structure data
/// </summary>
public ulong CompressedSize { get; set; }
/// <summary>
/// Uncompressed size of the structure data
/// </summary>
public ulong UncompressedSize { get; set; }
}
}