using System.Runtime.InteropServices; namespace SabreTools.Models.N3DS { /// [StructLayout(LayoutKind.Sequential)] public sealed class ARM11LocalSystemCapabilities { /// /// Program ID /// public ulong ProgramID; /// /// Core version (The Title ID low of the required FIRM) /// public uint CoreVersion; /// /// Flag1 (implemented starting from 8.0.0-18). /// [MarshalAs(UnmanagedType.U1)] public ARM11LSCFlag1 Flag1; /// /// Flag2 (implemented starting from 8.0.0-18). /// [MarshalAs(UnmanagedType.U1)] public ARM11LSCFlag2 Flag2; /// /// Flag0 /// [MarshalAs(UnmanagedType.U1)] public ARM11LSCFlag0 Flag0; /// /// Priority /// public byte Priority; /// /// Resource limit descriptors. The first byte here controls the maximum allowed CpuTime. /// /// 16 entries [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public ushort[]? ResourceLimitDescriptors; /// /// Storage info /// public StorageInfo? StorageInfo; /// /// Service access control /// /// 32 entries [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public ulong[]? ServiceAccessControl; /// /// Extended service access control, support for this was implemented with 9.3.0-X. /// /// 2 entries [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public ulong[]? ExtendedServiceAccessControl; /// /// Reserved /// /// 0x0F bytes [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x0F)] public byte[]? Reserved; /// /// Resource limit category. (0 = APPLICATION, 1 = SYS_APPLET, 2 = LIB_APPLET, 3 = OTHER (sysmodules running under the BASE memregion)) /// [MarshalAs(UnmanagedType.U1)] public ResourceLimitCategory ResourceLimitCategory; } }