namespace SabreTools.Models.Nitro
{
///
/// Nintendo DS / DSi cartridge header
///
///
public sealed class CommonHeader
{
///
/// Game Title
///
#if NET48
public string GameTitle { get; set; }
#else
public string? GameTitle { get; set; }
#endif
///
/// Gamecode
///
public uint GameCode { get; set; }
///
/// Makercode
///
#if NET48
public string MakerCode { get; set; }
#else
public string? MakerCode { get; set; }
#endif
///
/// Unitcode
///
public Unitcode UnitCode { get; set; }
///
/// Encryption seed select (device code. 0 = normal)
///
public byte EncryptionSeedSelect { get; set; }
///
/// Devicecapacity
///
public byte DeviceCapacity { get; set; }
///
/// Reserved
///
#if NET48
public byte[] Reserved1 { get; set; }
#else
public byte[]? Reserved1 { get; set; }
#endif
///
/// Game Revision (used by DSi titles)
///
public ushort GameRevision { get; set; }
///
/// ROM Version
///
public byte RomVersion { get; set; }
///
/// Internal flags, (Bit2: Autostart)
///
public byte InternalFlags { get; set; }
///
/// ARM9 rom offset
///
public uint ARM9RomOffset { get; set; }
///
/// ARM9 entry address
///
public uint ARM9EntryAddress { get; set; }
///
/// ARM9 load address
///
public uint ARM9LoadAddress { get; set; }
///
/// ARM9 size
///
public uint ARM9Size { get; set; }
///
/// ARM7 rom offset
///
public uint ARM7RomOffset { get; set; }
///
/// ARM7 entry address
///
public uint ARM7EntryAddress { get; set; }
///
/// ARM7 load address
///
public uint ARM7LoadAddress { get; set; }
///
/// ARM7 size
///
public uint ARM7Size { get; set; }
///
/// File Name Table (FNT) offset
///
public uint FileNameTableOffset { get; set; }
///
/// File Name Table (FNT) length
///
public uint FileNameTableLength { get; set; }
///
/// File Allocation Table (FNT) offset
///
public uint FileAllocationTableOffset { get; set; }
///
/// File Allocation Table (FNT) length
///
public uint FileAllocationTableLength { get; set; }
///
/// File Name Table (FNT) offset
///
public uint ARM9OverlayOffset { get; set; }
///
/// File Name Table (FNT) length
///
public uint ARM9OverlayLength { get; set; }
///
/// File Name Table (FNT) offset
///
public uint ARM7OverlayOffset { get; set; }
///
/// File Name Table (FNT) length
///
public uint ARM7OverlayLength { get; set; }
///
/// Normal card control register settings (0x00416657 for OneTimePROM)
///
public uint NormalCardControlRegisterSettings { get; set; }
///
/// Secure card control register settings (0x081808F8 for OneTimePROM)
///
public uint SecureCardControlRegisterSettings { get; set; }
///
/// Icon Banner offset (NDSi same as NDS, but with new extra entries)
///
public uint IconBannerOffset { get; set; }
///
/// Secure area (2K) CRC
///
public ushort SecureAreaCRC { get; set; }
///
/// Secure transfer timeout (0x0D7E for OneTimePROM)
///
public ushort SecureTransferTimeout { get; set; }
///
/// ARM9 autoload
///
public uint ARM9Autoload { get; set; }
///
/// ARM7 autoload
///
public uint ARM7Autoload { get; set; }
///
/// Secure disable
///
#if NET48
public byte[] SecureDisable { get; set; }
#else
public byte[]? SecureDisable { get; set; }
#endif
///
/// NTR region ROM size (excluding DSi area)
///
public uint NTRRegionRomSize { get; set; }
///
/// Header size
///
public uint HeaderSize { get; set; }
///
///Reserved (0x88, 0x8C, 0x90 = Unknown, used by DSi)
///
#if NET48
public byte[] Reserved2 { get; set; }
#else
public byte[]? Reserved2 { get; set; }
#endif
///
/// Nintendo Logo
///
#if NET48
public byte[] NintendoLogo { get; set; }
#else
public byte[]? NintendoLogo { get; set; }
#endif
///
/// Nintendo Logo CRC
///
public ushort NintendoLogoCRC { get; set; }
///
/// Header CRC
///
public ushort HeaderCRC { get; set; }
///
/// Debugger reserved
///
#if NET48
public byte[] DebuggerReserved { get; set; }
#else
public byte[]? DebuggerReserved { get; set; }
#endif
}
}