NACP: Difference between revisions

No edit summary
 
(One intermediate revision by one other user not shown)
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 110: Line 110:
| 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
| 0x1
| 0x1
| AppropriateAgeForChina
| [[#AppropriateAgeForChina|AppropriateAgeForChina]]
|-
|-
| 0x30F5
| 0x30F5
Line 134: Line 134:
| 0x30F6
| 0x30F6
| 0x1
| 0x1
| CrashReport
| [[#CrashReport|CrashReport]]
|-
|-
| 0x30F7
| 0x30F7
| 0x1
| 0x1
| Hdcp
| [[#Hdcp|Hdcp]]
|-
|-
| 0x30F8
| 0x30F8
Line 210: Line 210:
| 0x3210
| 0x3210
| 0x1
| 0x1
| PlayLogQueryCapability
| [[#PlayLogQueryCapability|PlayLogQueryCapability]]
|-
|-
| 0x3211
| 0x3211
Line 226: Line 226:
| 0x3214
| 0x3214
| 0x1
| 0x1
| [20.0.0+] ApplicationErrorCodePrefix
| [20.0.0+] [[#ApplicationErrorCodePrefix|ApplicationErrorCodePrefix]]
|-
|-
| 0x3215
| 0x3215
| 0x1
| 0x1
| Reserved
| [21.0.0+] [[#TitlesDataFormat|TitlesDataFormat]]
|-
|-
| 0x3216
| 0x3216
Line 238: Line 238:
| 0x3217
| 0x3217
| 0x1
| 0x1
| [20.0.0+] ApparentPlatform
| [20.0.0+] [[#ApparentPlatform|ApparentPlatform]]
|-
|-
| 0x3218
| 0x3218
| 0x198
| 0x198
| [[#ApplicationNeighborDetectionClientConfiguration|NeighborDetectionClientConfiguration]]
| [[#NeighborDetectionClientConfiguration|NeighborDetectionClientConfiguration]]
|-
|-
| 0x33B0
| 0x33B0
| 0x10
| 0x10
| [[#ApplicationJitConfiguration|JitConfiguration]]
| [[#JitConfiguration|JitConfiguration]]
|-
|-
| 0x33C0
| 0x33C0
| 0x40
| 0x40 (0x2 * 32)
| [[#RequiredAddOnContentsSetBinaryDescriptor|RequiredAddOnContentsSetBinaryDescriptor]]
| RequiredAddOnContentsSetBinaryDescriptor
|-
|-
| 0x3400
| 0x3400
Line 270: Line 270:
| 0x3404
| 0x3404
| 0x4
| 0x4
| Reserved
| [21.0.0+] SupportedLanguageFlagForNxAddon
|-
|-
| 0x3408
| 0x3408
Line 302: Line 302:
| 0x34E0
| 0x34E0
| 0x80
| 0x80
| [20.0.0+] SaveDataCertificateBytes
| [20.0.0+] [[#SaveDataCertificateBytes|SaveDataCertificateBytes]]
|-
|-
| 0x3560
| 0x3560
Line 317: Line 317:
|-
|-
| 0x3568
| 0x3568
| 0x698
| 0x1
| [21.0.0+] HasKaraokeFeature
|-
| 0x3569
| 0x697
| Reserved
| Reserved
|-
|-
| 0x3C00
| 0x3C00
| 0x400
| 0x400
| [20.0.0+] PlatformSpecificRegion
| [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 336: 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 380: Line 383:
|-
|-
| 15 || [10.1.0+] "BrazilianPortuguese"
| 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.
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 426: Line 664:
| 0x0
| 0x0
| 0x18
| 0x18
| [[#ApplicationNeighborDetectionGroupConfiguration|SendGroupConfiguration]]
| [[#NeighborDetectionGroupConfiguration|SendGroupConfiguration]]
|-
|-
| 0x18
| 0x18
| 0x180 (0x18 * 16)
| 0x180 (0x18 * 16)
| [[#ApplicationNeighborDetectionGroupConfiguration|ReceivableGroupConfigurations]]
| [[#NeighborDetectionGroupConfiguration|ReceivableGroupConfigurations]]
|}
|}


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


== ApplicationJitConfiguration ==
== JitConfiguration ==
This is "nn::ns::JitConfiguration".
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 458: Line 700:
| 0x0
| 0x0
| 0x8
| 0x8
| Flags
| [[#JitConfigurationFlag|Flags]]
|-
|-
| 0x8
| 0x8
Line 465: Line 707:
|}
|}


== RequiredAddOnContentsSetBinaryDescriptor ==
=== JitConfigurationFlag ===
This is "nn::ns::JitConfigurationFlag".
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Offset
! Value
! Size
! Description
! Description
|-
|-
| 0x0
| 0
| 0x40 (0x2 * 32)
| None
| Descriptors
|-
| 1
| Enabled
|}
|}


Line 532: Line 777:
| Reserved
| 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.