diff --git a/src/LibHac/Common/BlitSpan.cs b/src/LibHac/Common/BlitSpan.cs
index 5c9d97b2..8936b138 100644
--- a/src/LibHac/Common/BlitSpan.cs
+++ b/src/LibHac/Common/BlitSpan.cs
@@ -1,4 +1,5 @@
using System;
+using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
@@ -21,7 +22,15 @@ namespace LibHac.Common
///
/// A reference to the first element in this collection.
///
- public ref T Value => ref MemoryMarshal.GetReference(_buffer);
+ public ref T Value
+ {
+ get
+ {
+ Debug.Assert(_buffer.Length > 0);
+
+ return ref MemoryMarshal.GetReference(_buffer);
+ }
+ }
///
/// A reference to the element at index .
diff --git a/src/LibHac/Ns/ApplicationControlProperty.cs b/src/LibHac/Ns/ApplicationControlProperty.cs
index cb8d743f..3a1d10b2 100644
--- a/src/LibHac/Ns/ApplicationControlProperty.cs
+++ b/src/LibHac/Ns/ApplicationControlProperty.cs
@@ -24,14 +24,14 @@ namespace LibHac.Ns
[FieldOffset(0x0000)] private byte _titles;
[FieldOffset(0x3000)] private byte _isbn;
- [FieldOffset(0x3025)] public byte StartupUserAccount;
+ [FieldOffset(0x3025)] public StartupUserAccount StartupUserAccount;
[FieldOffset(0x3026)] public byte UserAccountSwitchLock;
[FieldOffset(0x3027)] public byte AddOnContentRegistrationType;
- [FieldOffset(0x3028)] public int ApplicationAttribute;
+ [FieldOffset(0x3028)] public ApplicationAttribute ApplicationAttribute;
[FieldOffset(0x302C)] public uint SupportedLanguages;
- [FieldOffset(0x3030)] public uint ParentalControl;
- [FieldOffset(0x3034)] public byte Screenshot;
- [FieldOffset(0x3035)] public byte VideoCaptureMode;
+ [FieldOffset(0x3030)] public ParentalControlFlagValue ParentalControl;
+ [FieldOffset(0x3034)] public ScreenshotValue Screenshot;
+ [FieldOffset(0x3035)] public VideoCaptureValue VideoCaptureMode;
[FieldOffset(0x3036)] public byte DataLossConfirmation;
[FieldOffset(0x3037)] public byte PlayLogPolicy;
[FieldOffset(0x3038)] public ulong PresenceGroupId;
@@ -46,8 +46,8 @@ namespace LibHac.Ns
[FieldOffset(0x30A0)] public long BcatDeliveryCacheStorageSize;
[FieldOffset(0x30A8)] private byte _applicationErrorCodeCategory;
[FieldOffset(0x30B0)] private ulong _localCommunicationIds;
- [FieldOffset(0x30F0)] public byte LogoType;
- [FieldOffset(0x30F1)] public byte LogoHandling;
+ [FieldOffset(0x30F0)] public LogoType LogoType;
+ [FieldOffset(0x30F1)] public LogoHandling LogoHandling;
[FieldOffset(0x30F2)] public byte RuntimeAddOnContentInstall;
[FieldOffset(0x30F3)] public byte _reserved30F3;
[FieldOffset(0x30F6)] public byte CrashReport;
@@ -66,7 +66,7 @@ namespace LibHac.Ns
[FieldOffset(0x3180)] public long CacheStorageMaxSizeAndMaxJournalSize;
[FieldOffset(0x3188)] public long CacheStorageMaxIndex;
[FieldOffset(0x3190)] private ulong _playLogQueryableApplicationId;
- [FieldOffset(0x3210)] public byte PlayLogQueryCapability;
+ [FieldOffset(0x3210)] public PlayLogQueryCapability PlayLogQueryCapability;
[FieldOffset(0x3211)] public byte RepairFlag;
[FieldOffset(0x3212)] public byte ProgramIndex;
[FieldOffset(0x3213)] public byte RequiredNetworkServiceLicenseOnLaunchFlag;
@@ -133,4 +133,57 @@ namespace LibHac.Ns
public Span Key => SpanHelpers.CreateSpan(ref _key, 0x10);
}
+
+ public enum StartupUserAccount : byte
+ {
+ None = 0,
+ Required = 1,
+ RequiredWithNetworkServiceAccountAvailable = 2
+ }
+
+ public enum LogoHandling : byte
+ {
+ Auto = 0,
+ Manual = 1
+ }
+
+ public enum LogoType : byte
+ {
+ LicensedByNintendo = 0,
+ DistributedByNintendo = 1,
+ Nintendo = 2
+ }
+
+ [Flags]
+ public enum ApplicationAttribute
+ {
+ None = 0,
+ Demo = 1
+ }
+
+ public enum PlayLogQueryCapability : byte
+ {
+ None = 0,
+ WhiteList = 1,
+ All = 2
+ }
+
+ public enum ParentalControlFlagValue
+ {
+ None = 0,
+ FreeCommunication = 1
+ }
+
+ public enum ScreenshotValue : byte
+ {
+ Allow = 0,
+ Deny = 1
+ }
+
+ public enum VideoCaptureValue : byte
+ {
+ Deny = 0,
+ Allow = 1,
+ Automatic = 2
+ }
}