using System.Runtime.InteropServices; namespace SabreTools.Data.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 = new ushort[16]; /// /// Storage info /// public StorageInfo StorageInfo = new(); /// /// Service access control /// /// 32 entries [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public ulong[] ServiceAccessControl = new ulong[32]; /// /// Extended service access control, support for this was implemented with 9.3.0-X. /// /// 2 entries [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public ulong[] ExtendedServiceAccessControl = new ulong[2]; /// /// Reserved /// /// 0x0F bytes [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x0F)] public byte[] Reserved = new byte[0x0F]; /// /// 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; } }