Files
SabreTools.Serialization/SabreTools.Data.Models/GCZ/Archive.cs
2026-05-12 20:33:53 -04:00

34 lines
1.3 KiB
C#

namespace SabreTools.Data.Models.GCZ
{
/// <summary>
/// Represents a parsed GCZ (GameCube Zip) compressed disc image.
/// Contains header metadata and block lookup tables.
/// Actual compressed block data is accessed via the source stream.
/// </summary>
public class DiscImage
{
/// <summary>
/// GCZ file header
/// </summary>
public GczHeader Header { get; set; } = new();
/// <summary>
/// Block pointer table (one entry per block).
/// Each value encodes both the offset of the block within the compressed data section
/// and a compression flag in the top bit:
/// <list type="bullet">
/// <item>Top bit CLEAR -> block is zlib/deflate-compressed at that offset.</item>
/// <item>Top bit SET -> block is stored uncompressed at that offset.</item>
/// </list>
/// Offset is value &amp; ~UncompressedFlag.
/// </summary>
public ulong[] BlockPointers { get; set; } = [];
/// <summary>
/// Adler-32 checksums of the uncompressed block data, one per block.
/// Used for integrity verification after decompression.
/// </summary>
public uint[] BlockHashes { get; set; } = [];
}
}