Example #1
0
            public static async Task <Arm11LocalSystemCapabilities> Load(IReadOnlyBinaryDataAccessor data)
            {
                var capabilities = new Arm11LocalSystemCapabilities
                {
                    ProgramId   = await data.ReadInt64Async(0),
                    CoreVersion = await data.ReadInt32Async(0x8),
                    Flag1       = await data.ReadByteAsync(0xC),
                    Flag2       = await data.ReadByteAsync(0xD),
                    Flag0       = await data.ReadByteAsync(0xE),
                    Priority    = await data.ReadByteAsync(0xF),
                    ResourceLimitDescriptors = await data.ReadArrayAsync(0x10, 0x20),
                    StorageInformation       = await StorageInfo.Load(data.Slice(0x30, 0x20)),
                };

                var accessControl = new long[32];
                await AsyncFor.For(0, 32 - 1, async i =>
                {
                    accessControl[i] = await data.ReadInt64Async(0x50 + 8 * i);
                });

                capabilities.ServiceAccessControl         = accessControl;
                capabilities.ExtendedServiceAccessControl = new long[] { await data.ReadInt64Async(0x150), await data.ReadInt64Async(0x158) };
                capabilities.Reserved = await data.ReadArrayAsync(0x160, 0xF);

                capabilities.ResourceLimitCategory = await data.ReadByteAsync(0x16F);

                return(capabilities);
            }