NACP: Difference between revisions

From Nintendo Switch Brew
Jump to navigation Jump to search
No edit summary
No edit summary
 
(8 intermediate revisions by 2 users not shown)
Line 13: Line 13:
|-
|-
| 0x0
| 0x0
| 0x3000 (0x300*0x10)
| 0x3000 (0x300 * 16)
| [[#ApplicationTitle|Title]]
| [[#ApplicationTitle|Title]]
|-
|-
Line 22: Line 22:
| 0x3025
| 0x3025
| 0x1
| 0x1
| StartupUserAccount
| [[#StartupUserAccount|StartupUserAccount]]
|-
|-
| 0x3026
| 0x3026
| 0x1
| 0x1
| UserAccountSwitchLock
| [[#UserAccountSwitchLock|UserAccountSwitchLock]]
|-
|-
| 0x3027
| 0x3027
| 0x1
| 0x1
| AddOnContentRegistrationType
| [[#AddOnContentRegistrationType|AddOnContentRegistrationType]]
|-
|-
| 0x3028
| 0x3028
Line 46: Line 46:
| 0x3034
| 0x3034
| 0x1
| 0x1
| Screenshot
| [[#Screenshot|Screenshot]]
|-
|-
| 0x3035
| 0x3035
| 0x1
| 0x1
| [[#VideoCapture]]
| [[#VideoCapture|VideoCapture]]
|-
|-
| 0x3036
| 0x3036
| 0x1
| 0x1
| DataLossConfirmation
| [[#DataLossConfirmation|DataLossConfirmation]]
|-
|-
| 0x3037
| 0x3037
| 0x1
| 0x1
| [[#PlayLogPolicy]]
| [[#PlayLogPolicy|PlayLogPolicy]]
|-
|-
| 0x3038
| 0x3038
Line 105: Line 105:
|-
|-
| 0x30B0
| 0x30B0
| 0x40 (0x8*0x8)
| 0x40 (0x8 * 8)
| LocalCommunicationId
| LocalCommunicationId
|-
|-
| 0x30F0
| 0x30F0
| 0x1
| 0x1
| LogoType
| [[#LogoType|LogoType]]
|-
|-
| 0x30F1
| 0x30F1
| 0x1
| 0x1
| LogoHandling
| [[#LogoHandling|LogoHandling]]
|-
|-
| 0x30F2
| 0x30F2
| 0x1
| 0x1
| RuntimeAddOnContentInstall
| [[#RuntimeAddOnContentInstall|RuntimeAddOnContentInstall]]
|-
|-
| 0x30F3
| 0x30F3
| 0x1
| 0x1
| RuntimeParameterDelivery
| [[#RuntimeParameterDelivery|RuntimeParameterDelivery]]
|-
|-
| 0x30F4
| 0x30F4
| 0x2
| 0x1
| [[#AppropriateAgeForChina|AppropriateAgeForChina]]
|-
| 0x30F5
| 0x1
| Reserved
| Reserved
|-
|-
| 0x30F6
| 0x30F6
| 0x1
| 0x1
| CrashReport
| [[#CrashReport|CrashReport]]
|-
|-
| 0x30F7
| 0x30F7
| 0x1
| 0x1
| Hdcp
| [[#Hdcp|Hdcp]]
|-
|-
| 0x30F8
| 0x30F8
Line 189: Line 193:
|-
|-
| 0x318A
| 0x318A
| 0x6
| 0x1
| Reserved
| Reserved
|-
| 0x318B
| 0x1
| RuntimeUpgrade
|-
| 0x318C
| 0x4
| SupportingLimitedApplicationLicenses
|-
|-
| 0x3190
| 0x3190
| 0x80 (0x8*0x10)
| 0x80 (0x8 * 16)
| PlayLogQueryableApplicationId
| PlayLogQueryableApplicationId
|-
|-
| 0x3210
| 0x3210
| 0x1
| 0x1
| PlayLogQueryCapability
| [[#PlayLogQueryCapability|PlayLogQueryCapability]]
|-
|-
| 0x3211
| 0x3211
Line 213: Line 225:
|-
|-
| 0x3214
| 0x3214
| 0x4
| 0x1
| Reserved
| [20.0.0+] [[#ApplicationErrorCodePrefix|ApplicationErrorCodePrefix]]
|-
| 0x3215
| 0x1
| [21.0.0+] [[#TitlesDataFormat|TitlesDataFormat]]
|-
| 0x3216
| 0x1
| [20.0.0+] AcdIndex
|-
| 0x3217
| 0x1
| [20.0.0+] [[#ApparentPlatform|ApparentPlatform]]
|-
|-
| 0x3218
| 0x3218
| 0x198
| 0x198
| [[#ApplicationNeighborDetectionClientConfiguration|NeighborDetectionClientConfiguration]]
| [[#NeighborDetectionClientConfiguration|NeighborDetectionClientConfiguration]]
|-
|-
| 0x33B0
| 0x33B0
| 0x10
| 0x10
| [[#ApplicationJitConfiguration|JitConfiguration]]
| [[#JitConfiguration|JitConfiguration]]
|-
|-
| 0x33C0
| 0x33C0
| 0x40 (0x2*0x20)
| 0x40 (0x2 * 32)
| RequiredAddOnContentsSetBinaryDescriptor
| RequiredAddOnContentsSetBinaryDescriptor
|-
|-
Line 241: Line 265:
|-
|-
| 0x3403
| 0x3403
| 0x5
| 0x1
| Reserved
| ContentsAvailabilityTransitionPolicy
|-
| 0x3404
| 0x4
| [21.0.0+] SupportedLanguageFlagForNxAddon
|-
|-
| 0x3408
| 0x3408
| 0x40 (0x8*0x8)
| 0x40
| AccessibleLaunchRequiredVersion
| [[#AccessibleLaunchRequiredVersionValue|AccessibleLaunchRequiredVersion]]
|-
|-
| 0x3448
| 0x3448
| 0xBB8
| 0x89
| [20.0.0+] [[#ApplicationControlDataCondition|ApplicationControlDataCondition]]
|-
| 0x34D1
| 0x1
| [20.0.0+] InitialProgramIndex
|-
| 0x34D2
| 0x2
| Reserved
| Reserved
|-
| 0x34D4
| 0x4
| [20.0.0+] AccessibleProgramIndexFlags
|-
| 0x34D8
| 0x1
| [20.0.0+] AlbumFileExport
|-
| 0x34D9
| 0x7
| Reserved
|-
| 0x34E0
| 0x80
| [20.0.0+] [[#SaveDataCertificateBytes|SaveDataCertificateBytes]]
|-
| 0x3560
| 0x1
| [20.0.0+] HasInGameVoiceChat
|-
| 0x3561
| 0x3
| Reserved
|-
| 0x3564
| 0x4
| [20.0.0+] SupportedExtraAddOnContentFlag
|-
| 0x3568
| 0x1
| [21.0.0+] HasKaraokeFeature
|-
| 0x3569
| 0x697
| Reserved
|-
| 0x3C00
| 0x400
| [20.0.0+] [[#PlatformSpecificRegion|PlatformSpecificRegion]]
|}
|}


== ApplicationTitle ==
== ApplicationTitle ==
Total size is 0x300-bytes.
This is "nn::ns::ApplicationTitle".


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 264: Line 340:
| 0x0
| 0x0
| 0x200
| 0x200
| Application name strings
| Name (application name strings)
|-
|-
| 0x200
| 0x200
| 0x100
| 0x100
| Application publisher strings
| Publisher (application publisher strings)
|}
|}


Entry index for each [[Settings_services#LanguageCode|language]]:
Entry index for each [[Settings_services#LanguageCode|language]]:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 306: Line 381:
|-
|-
| 14 || "SimplifiedChinese"
| 14 || "SimplifiedChinese"
|-
| 15 || [10.1.0+] "BrazilianPortuguese"
|-
| 16 || [21.0.0+] "Polish"
|-
| 17 || [21.0.0+] "Thai"
|}
|}


Official apps tend to have the title entries' strings set only to English. Some apps don't have certain title entries set at all. In addition, official apps usually (?) don't have the following title entries set: Korean, Taiwanese, and Chinese.
Official apps tend to have most of the title entries' strings set only to English. Some apps don't have certain title entries set at all.
 
== StartupUserAccount ==
This is "nn::ns::StartupUserAccount".
 
{| class="wikitable" border="1"
|-
! Value || Description
|-
| 0 || None
|-
| 1 || Required
|-
| 2 || RequiredWithNetworkServiceAccountAvailable
|}
 
== UserAccountSwitchLock ==
This is "nn::ns::UserAccountSwitchLock".
 
{| class="wikitable" border="1"
|-
! Value || Description
|-
| 0 || Disable
|-
| 1 || Enable
|}
 
== AddOnContentRegistrationType ==
This is "nn::ns::AddOnContentRegistrationType".
 
{| class="wikitable" border="1"
|-
! Value || Description
|-
| 0 || AllOnLaunch
|-
| 1 || OnDemand
|}
 
== Screenshot ==
This is "nn::ns::Screenshot".
 
{| class="wikitable" border="1"
|-
! Value || Description
|-
| 0 || Allow
|-
| 1 || Deny
|}


== VideoCapture ==
== VideoCapture ==
This is the enum used to determine how gameplay recording can occur, if at all.
This is "nn::ns::VideoCapture".


{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Value || Meaning
! Value || Description
|-
|-
| 0 || Disabled
| 0 || Disable
|-
|-
| 1 || Enabled
| 1 || Manual
|-
|-
| 2 || Automatic
| 2 || Enable
|}
|}
This is the enum used to determine how gameplay recording can occur, if at all.


When this value is 0, gameplay cannot be recorded. When this value is 1, the game must manually sacrifice some of its heap as transfer memory for AM's IApplicationProxy->InitializeGamePlayRecording(). When this value is 2, AM will call NS->BoostSystemMemoryResourceSize(), and allocate the required memory for recording automatically without the usermode process having to do anything.
When this value is 0, gameplay cannot be recorded. When this value is 1, the game must manually sacrifice some of its heap as transfer memory for AM's IApplicationProxy->InitializeGamePlayRecording(). When this value is 2, AM will call NS->BoostSystemMemoryResourceSize(), and allocate the required memory for recording automatically without the usermode process having to do anything.
== DataLossConfirmation ==
This is "nn::ns::DataLossConfirmation".
{| class="wikitable" border="1"
|-
! Value || Description
|-
| 0 || None
|-
| 1 || Required
|}


== PlayLogPolicy ==
== PlayLogPolicy ==
This is "nn::ns::PlayLogPolicy".
{| class="wikitable" border="1"
|-
! Value || Description
|-
| 0 || Open
|-
| 1 || LogOnly
|-
| 2 || None
|-
| 3 || Closed
|}
[[Applet_Manager_services|AM]] passes [[Shared_Database_services#PlayLogPolicy|this]] to [[Shared_Database_services|pdm:ntfy]] cmd9.
[[Applet_Manager_services|AM]] passes [[Shared_Database_services#PlayLogPolicy|this]] to [[Shared_Database_services|pdm:ntfy]] cmd9.
== LogoType ==
This is "nn::ns::LogoType".
{| class="wikitable" border="1"
|-
! Value || Description
|-
| 0 || LicensedByNintendo
|-
| 1 || DistributedByNintendo
|-
| 2 || Nintendo
|}
== LogoHandling ==
This is "nn::ns::LogoHandling".
{| class="wikitable" border="1"
|-
! Value || Description
|-
| 0 || Auto
|-
| 1 || Manual
|}
== RuntimeAddOnContentInstall ==
This is "nn::ns::RuntimeAddOnContentInstall".
{| class="wikitable" border="1"
|-
! Value || Description
|-
| 0 || Deny
|-
| 1 || AllowAppend
|-
| 2 || AllowAppendButDontDownloadWhenUsingNetwork
|}
== RuntimeParameterDelivery ==
This is "nn::ns::RuntimeParameterDelivery".
{| class="wikitable" border="1"
|-
! Value || Description
|-
| 0 || Always
|-
| 1 || AlwaysIfUserStateMatched
|-
| 2 || OnRestart
|}
== AppropriateAgeForChina ==
This is "nn::ns::AppropriateAgeForChina".
{| class="wikitable" border="1"
|-
! Value || Description
|-
| 0 || None
|-
| 1 || Age8
|-
| 2 || Age12
|-
| 3 || Age16
|}
== CrashReport ==
This is "nn::ns::CrashReport".
{| class="wikitable" border="1"
|-
! Value || Description
|-
| 0 || Deny
|-
| 1 || Allow
|}
== Hdcp ==
This is "nn::ns::Hdcp".
{| class="wikitable" border="1"
|-
! Value || Description
|-
| 0 || None
|-
| 1 || Required
|}


== PlayLogQueryCapability ==
== PlayLogQueryCapability ==
This is "nn::ns::PlayLogQueryCapability".
{| class="wikitable" border="1"
|-
! Value || Description
|-
| 0 || None
|-
| 1 || WhiteList
|-
| 2 || All
|}
This is used with [[Applet_Manager_services|AM]] commands QueryApplicationPlayStatistics and QueryApplicationPlayStatisticsByUid, to verify whether querying the specified titleIDs are allowed. When not allowed, error 0x3E880 is returned.
This is used with [[Applet_Manager_services|AM]] commands QueryApplicationPlayStatistics and QueryApplicationPlayStatisticsByUid, to verify whether querying the specified titleIDs are allowed. When not allowed, error 0x3E880 is returned.
When this value is 0, the specified titleIDs must match the user-process titleID. When this value is 1, the specified titleIDs must match the user-process titleID, or one of the titleIDs from PlayLogQueryableApplicationId. When this value is 2, all titleIDs are allowed.
== ApplicationErrorCodePrefix ==
This is "nn::ns::ApplicationErrorCodePrefix".


{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Value || Meaning || Description
! Offset
! Size
! Description
|-
| 0x0
| 0x1
| Value
|}
 
S1 games (including S2-Edition) built for [20.0.0+] set this to 0x2. This is set to 0x3 with S2-only games.
 
== TitlesDataFormat ==
{| class="wikitable" border="1"
|-
|-
| 0 || None || The specified titleIDs must match the user-process titleID.
! Value
! Description
|-
|-
| 1 || WhiteList || The specified titleIDs must match the user-process titleID, or one of the titleIDs from PlayLogQueryableApplicationId.
| 0
| Format0
|-
|-
| 2 || All || All titleIDs are allowed.
| 1
| Format1
|}
|}


== ApplicationNeighborDetectionClientConfiguration ==
With Format0, [[#ApplicationTitle|Title]] is an uncompressed array of up to 16 [[#ApplicationTitle|ApplicationTitle]] entries.
 
With Format1, [[#ApplicationTitle|Title]] is Deflate compressed:
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0
| 0x2
| DataSize
|-
| 0x2
| 0x2FFE
| Data
|}
 
== ApparentPlatform ==
This is "nn::ns::ApparentPlatform".
 
This is 0x0 with S1 games. This is set to 0x1 with S2-only and Switch 2 Edition games.
 
== NeighborDetectionClientConfiguration ==
This is "nn::ns::NeighborDetectionClientConfiguration".
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 352: Line 664:
| 0x0
| 0x0
| 0x18
| 0x18
| [[#ApplicationNeighborDetectionGroupConfiguration|SendGroupConfiguration]]
| [[#NeighborDetectionGroupConfiguration|SendGroupConfiguration]]
|-
|-
| 0x18
| 0x18
| 0x180 (0x18 * 0x10)
| 0x180 (0x18 * 16)
| [[#ApplicationNeighborDetectionGroupConfiguration|ReceivableGroupConfigurations]]
| [[#NeighborDetectionGroupConfiguration|ReceivableGroupConfigurations]]
|}
|}


=== ApplicationNeighborDetectionGroupConfiguration ===
=== NeighborDetectionGroupConfiguration ===
This is "nn::ns::NeighborDetectionGroupConfiguration".
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 368: Line 682:
| 0x0
| 0x0
| 0x8
| 0x8
| GroupId
| Id
|-
|-
| 0x8
| 0x8
Line 375: Line 689:
|}
|}


== ApplicationJitConfiguration ==
== JitConfiguration ==
This is "nn::ns::JitConfiguration".
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 384: Line 700:
| 0x0
| 0x0
| 0x8
| 0x8
| Flags
| [[#JitConfigurationFlag|Flags]]
|-
|-
| 0x8
| 0x8
Line 390: Line 706:
| MemorySize
| MemorySize
|}
|}
=== JitConfigurationFlag ===
This is "nn::ns::JitConfigurationFlag".
{| class="wikitable" border="1"
|-
! Value
! Description
|-
| 0
| None
|-
| 1
| Enabled
|}
== AccessibleLaunchRequiredVersionValue ==
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0
| 0x40 (0x8 * 8)
| Array of [[NCM_services#ApplicationId|ApplicationId]]
|}
== ApplicationControlDataCondition ==
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0
| 0x8 (0x1 * 8)
| Type
|-
| 0x8
| 0x80 (0x10 * 8)
| [[#ApplicationControlDataConditionData|Data]]
|-
| 0x88
| 0x1
| Count
|}
=== ApplicationControlDataConditionData ===
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0
| 0x1
| Priority
|-
| 0x1
| 0x7
| Reserved
|-
| 0x8
| 0x2
| AocIndex
|-
| 0xA
| 0x6
| Reserved
|}
== SaveDataCertificateBytes ==
When initialized, the first two bytes here are both 0x1. With S2-only games, the second byte is instead set to 0x4.
u8 +0x11 is 0x0 with S1 games, this is 0x1 with S2-only games.
== PlatformSpecificRegion ==
Data here is only initialized with S2-only games.

Latest revision as of 22:40, 20 February 2026

This is control.nacp, "nn::ns::ApplicationControlProperty".

Roughly equivalent to non-gfx areas of 3DS SMDH. All strings for language-entries are UTF-8, unlike SMDH which uses UTF-16.

Total size is 0x4000-bytes.

Structure

Offset Size Description
0x0 0x3000 (0x300 * 16) Title
0x3000 0x25 Isbn
0x3025 0x1 StartupUserAccount
0x3026 0x1 UserAccountSwitchLock
0x3027 0x1 AddOnContentRegistrationType
0x3028 0x4 AttributeFlag
0x302C 0x4 SupportedLanguageFlag
0x3030 0x4 ParentalControlFlag
0x3034 0x1 Screenshot
0x3035 0x1 VideoCapture
0x3036 0x1 DataLossConfirmation
0x3037 0x1 PlayLogPolicy
0x3038 0x8 PresenceGroupId
0x3040 0x20 RatingAge
0x3060 0x10 DisplayVersion
0x3070 0x8 AddOnContentBaseId
0x3078 0x8 SaveDataOwnerId
0x3080 0x8 UserAccountSaveDataSize
0x3088 0x8 UserAccountSaveDataJournalSize
0x3090 0x8 DeviceSaveDataSize
0x3098 0x8 DeviceSaveDataJournalSize
0x30A0 0x8 BcatDeliveryCacheStorageSize
0x30A8 0x8 ApplicationErrorCodeCategory
0x30B0 0x40 (0x8 * 8) LocalCommunicationId
0x30F0 0x1 LogoType
0x30F1 0x1 LogoHandling
0x30F2 0x1 RuntimeAddOnContentInstall
0x30F3 0x1 RuntimeParameterDelivery
0x30F4 0x1 AppropriateAgeForChina
0x30F5 0x1 Reserved
0x30F6 0x1 CrashReport
0x30F7 0x1 Hdcp
0x30F8 0x8 SeedForPseudoDeviceId
0x3100 0x41 BcatPassphrase (all-zero when unused)
0x3141 0x1 StartupUserAccountOption
0x3142 0x6 ReservedForUserAccountSaveDataOperation
0x3148 0x8 UserAccountSaveDataSizeMax
0x3150 0x8 UserAccountSaveDataJournalSizeMax
0x3158 0x8 DeviceSaveDataSizeMax
0x3160 0x8 DeviceSaveDataJournalSizeMax
0x3168 0x8 TemporaryStorageSize
0x3170 0x8 CacheStorageSize
0x3178 0x8 CacheStorageJournalSize
0x3180 0x8 CacheStorageDataAndJournalSizeMax
0x3188 0x2 CacheStorageIndexMax
0x318A 0x1 Reserved
0x318B 0x1 RuntimeUpgrade
0x318C 0x4 SupportingLimitedApplicationLicenses
0x3190 0x80 (0x8 * 16) PlayLogQueryableApplicationId
0x3210 0x1 PlayLogQueryCapability
0x3211 0x1 RepairFlag
0x3212 0x1 ProgramIndex
0x3213 0x1 RequiredNetworkServiceLicenseOnLaunchFlag
0x3214 0x1 [20.0.0+] ApplicationErrorCodePrefix
0x3215 0x1 [21.0.0+] TitlesDataFormat
0x3216 0x1 [20.0.0+] AcdIndex
0x3217 0x1 [20.0.0+] ApparentPlatform
0x3218 0x198 NeighborDetectionClientConfiguration
0x33B0 0x10 JitConfiguration
0x33C0 0x40 (0x2 * 32) RequiredAddOnContentsSetBinaryDescriptor
0x3400 0x1 PlayReportPermission
0x3401 0x1 CrashScreenshotForProd
0x3402 0x1 CrashScreenshotForDev
0x3403 0x1 ContentsAvailabilityTransitionPolicy
0x3404 0x4 [21.0.0+] SupportedLanguageFlagForNxAddon
0x3408 0x40 AccessibleLaunchRequiredVersion
0x3448 0x89 [20.0.0+] ApplicationControlDataCondition
0x34D1 0x1 [20.0.0+] InitialProgramIndex
0x34D2 0x2 Reserved
0x34D4 0x4 [20.0.0+] AccessibleProgramIndexFlags
0x34D8 0x1 [20.0.0+] AlbumFileExport
0x34D9 0x7 Reserved
0x34E0 0x80 [20.0.0+] SaveDataCertificateBytes
0x3560 0x1 [20.0.0+] HasInGameVoiceChat
0x3561 0x3 Reserved
0x3564 0x4 [20.0.0+] SupportedExtraAddOnContentFlag
0x3568 0x1 [21.0.0+] HasKaraokeFeature
0x3569 0x697 Reserved
0x3C00 0x400 [20.0.0+] PlatformSpecificRegion

ApplicationTitle

This is "nn::ns::ApplicationTitle".

Offset Size Description
0x0 0x200 Name (application name strings)
0x200 0x100 Publisher (application publisher strings)

Entry index for each language:

Entry-index Icon language filename
0 "AmericanEnglish"
1 "BritishEnglish"
2 "Japanese"
3 "French"
4 "German"
5 "LatinAmericanSpanish"
6 "Spanish"
7 "Italian"
8 "Dutch"
9 "CanadianFrench"
10 "Portuguese"
11 "Russian"
12 "Korean"
13 "TraditionalChinese"
14 "SimplifiedChinese"
15 [10.1.0+] "BrazilianPortuguese"
16 [21.0.0+] "Polish"
17 [21.0.0+] "Thai"

Official apps tend to have most of the title entries' strings set only to English. Some apps don't have certain title entries set at all.

StartupUserAccount

This is "nn::ns::StartupUserAccount".

Value Description
0 None
1 Required
2 RequiredWithNetworkServiceAccountAvailable

UserAccountSwitchLock

This is "nn::ns::UserAccountSwitchLock".

Value Description
0 Disable
1 Enable

AddOnContentRegistrationType

This is "nn::ns::AddOnContentRegistrationType".

Value Description
0 AllOnLaunch
1 OnDemand

Screenshot

This is "nn::ns::Screenshot".

Value Description
0 Allow
1 Deny

VideoCapture

This is "nn::ns::VideoCapture".

Value Description
0 Disable
1 Manual
2 Enable

This is the enum used to determine how gameplay recording can occur, if at all.

When this value is 0, gameplay cannot be recorded. When this value is 1, the game must manually sacrifice some of its heap as transfer memory for AM's IApplicationProxy->InitializeGamePlayRecording(). When this value is 2, AM will call NS->BoostSystemMemoryResourceSize(), and allocate the required memory for recording automatically without the usermode process having to do anything.

DataLossConfirmation

This is "nn::ns::DataLossConfirmation".

Value Description
0 None
1 Required

PlayLogPolicy

This is "nn::ns::PlayLogPolicy".

Value Description
0 Open
1 LogOnly
2 None
3 Closed

AM passes this to pdm:ntfy cmd9.

LogoType

This is "nn::ns::LogoType".

Value Description
0 LicensedByNintendo
1 DistributedByNintendo
2 Nintendo

LogoHandling

This is "nn::ns::LogoHandling".

Value Description
0 Auto
1 Manual

RuntimeAddOnContentInstall

This is "nn::ns::RuntimeAddOnContentInstall".

Value Description
0 Deny
1 AllowAppend
2 AllowAppendButDontDownloadWhenUsingNetwork

RuntimeParameterDelivery

This is "nn::ns::RuntimeParameterDelivery".

Value Description
0 Always
1 AlwaysIfUserStateMatched
2 OnRestart

AppropriateAgeForChina

This is "nn::ns::AppropriateAgeForChina".

Value Description
0 None
1 Age8
2 Age12
3 Age16

CrashReport

This is "nn::ns::CrashReport".

Value Description
0 Deny
1 Allow

Hdcp

This is "nn::ns::Hdcp".

Value Description
0 None
1 Required

PlayLogQueryCapability

This is "nn::ns::PlayLogQueryCapability".

Value Description
0 None
1 WhiteList
2 All

This is used with AM commands QueryApplicationPlayStatistics and QueryApplicationPlayStatisticsByUid, to verify whether querying the specified titleIDs are allowed. When not allowed, error 0x3E880 is returned.

When this value is 0, the specified titleIDs must match the user-process titleID. When this value is 1, the specified titleIDs must match the user-process titleID, or one of the titleIDs from PlayLogQueryableApplicationId. When this value is 2, all titleIDs are allowed.

ApplicationErrorCodePrefix

This is "nn::ns::ApplicationErrorCodePrefix".

Offset Size Description
0x0 0x1 Value

S1 games (including S2-Edition) built for [20.0.0+] set this to 0x2. This is set to 0x3 with S2-only games.

TitlesDataFormat

Value Description
0 Format0
1 Format1

With Format0, Title is an uncompressed array of up to 16 ApplicationTitle entries.

With Format1, Title is Deflate compressed:

Offset Size Description
0x0 0x2 DataSize
0x2 0x2FFE Data

ApparentPlatform

This is "nn::ns::ApparentPlatform".

This is 0x0 with S1 games. This is set to 0x1 with S2-only and Switch 2 Edition games.

NeighborDetectionClientConfiguration

This is "nn::ns::NeighborDetectionClientConfiguration".

Offset Size Description
0x0 0x18 SendGroupConfiguration
0x18 0x180 (0x18 * 16) ReceivableGroupConfigurations

NeighborDetectionGroupConfiguration

This is "nn::ns::NeighborDetectionGroupConfiguration".

Offset Size Description
0x0 0x8 Id
0x8 0x10 Key

JitConfiguration

This is "nn::ns::JitConfiguration".

Offset Size Description
0x0 0x8 Flags
0x8 0x8 MemorySize

JitConfigurationFlag

This is "nn::ns::JitConfigurationFlag".

Value Description
0 None
1 Enabled

AccessibleLaunchRequiredVersionValue

Offset Size Description
0x0 0x40 (0x8 * 8) Array of ApplicationId

ApplicationControlDataCondition

Offset Size Description
0x0 0x8 (0x1 * 8) Type
0x8 0x80 (0x10 * 8) Data
0x88 0x1 Count

ApplicationControlDataConditionData

Offset Size Description
0x0 0x1 Priority
0x1 0x7 Reserved
0x8 0x2 AocIndex
0xA 0x6 Reserved

SaveDataCertificateBytes

When initialized, the first two bytes here are both 0x1. With S2-only games, the second byte is instead set to 0x4.

u8 +0x11 is 0x0 with S1 games, this is 0x1 with S2-only games.

PlatformSpecificRegion

Data here is only initialized with S2-only games.