4public sealed class NdsDsiHeader
7 private readonly ReadOnlyMemory<byte> _rawHeader;
10 internal NdsDsiHeader(ReadOnlyMemory<byte> rawHeader)
12 _rawHeader = rawHeader;
13 ReadOnlySpan<byte> data = rawHeader.Span;
14 RawData = rawHeader.Slice(0x180, 0xE80);
27 BannerSize = NdsBinary.ReadUInt32(data, 0x208);
31 uint titleIdLow = NdsBinary.ReadUInt32(data, 0x230);
32 uint titleIdHigh = NdsBinary.ReadUInt32(data, 0x234);
33 TitleId = ((ulong)titleIdHigh << 32) | titleIdLow;
37 Arm9Hmac = rawHeader.Slice(0x300, 20);
38 Arm7Hmac = rawHeader.Slice(0x314, 20);
49 public ReadOnlyMemory<byte>
RawData {
get; }
116 _ =>
throw new ArgumentOutOfRangeException(nameof(area), area,
"Unknown modcrypt area."),
166 ArgumentNullException.ThrowIfNull(publicKey);
174 private static NdsRegion ReadRegion(ReadOnlySpan<byte> data,
int offset) =>
175 NdsRegion.FromUInt32(NdsBinary.ReadUInt32(data, offset), NdsBinary.ReadUInt32(data, offset + 4));