namespace SabreTools.Data.Models.NintendoDisc
{
///
public class DOLHeader
{
///
/// Section offsets indicate where each section's data begins relative
/// to the start of this header. 0 for unused sections.
///
///
/// Big-endian
/// Indexes 0-6 are text sections.
/// Indexes 7-17 are data sections.
///
public uint[] SectionOffsetTable { get; set; } = new uint[18];
///
/// Section address indicates where each section should be copied to by
/// the loader as a virtual memory address. 0 for unused sections.
///
///
/// Big-endian
/// Indexes 0-6 are text sections.
/// Indexes 7-17 are data sections.
///
public uint[] SectionAddressTable { get; set; } = new uint[18];
///
/// Section lengths indicate the size in bytes of each section.
/// 0 for unused sections.
///
///
/// Big-endian
/// Indexes 0-6 are text sections.
/// Indexes 7-17 are data sections.
///
public uint[] SectionLengthsTable { get; set; } = new uint[18];
///
/// bss address indicates the start of the zero initialised (bss) range.
///
/// Big-endian
public uint BSSAddress { get; set; }
///
/// bss length indicates the size in bytes of the zero initialised (bss) range.
///
/// Big-endian
public uint BSSLength { get; set; }
///
/// Entry point indicates the virtual memory address of a function to run after
/// the DOL has been loaded in order to start the program.
/// This function should not return.
///
/// Big-endian
public uint EntryPoint { get; set; }
///
/// Padding
///
public byte[] Padding { get; set; } = new byte[0x1C];
}
}