Changes

14,037 bytes added ,  22:27, 19 November 2024
Line 1: Line 1:  
= aoc:u =
 
= aoc:u =
 
This is "nn::aocsrv::detail::IAddOnContentManager".
 
This is "nn::aocsrv::detail::IAddOnContentManager".
 +
 +
This is only available when [[Process_Manager_services|pm:bm]] GetBootMode returns output 0 (Normal).
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 41: Line 43:  
|-
 
|-
 
| 110 || [12.0.0+] [[#IContentsServiceManager|CreateContentsServiceManager]]
 
| 110 || [12.0.0+] [[#IContentsServiceManager|CreateContentsServiceManager]]
 +
|-
 +
| 200 || [13.1.0+] SetRequiredAddOnContentsOnContentsAvailabilityTransition
 +
|-
 +
| 300 || [16.0.0+] SetupHostAddOnContent
 +
|-
 +
| 301 || [16.0.0+] GetRegisteredAddOnContentPath
 +
|-
 +
| 302 || [16.0.0+] UpdateCachedList
 
|}
 
|}
   Line 70: Line 80:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#RequestContentsAuthorizationToken]]
+
| 0 || [16.0.0+] RequestContentsAuthorizationTokenDeprecated ([12.0.0-15.0.1] [[#RequestContentsAuthorizationToken]])
 +
|-
 +
| 1 || [16.0.0+] RequestContentsAuthorizationToken
 
|}
 
|}
   Line 95: Line 107:  
This is "nn::ns::detail::IApplicationManagerInterface".
 
This is "nn::ns::detail::IApplicationManagerInterface".
   −
[3.0.0+] This service was replaced by [[#ns:am2, ns:ec, ns:rid, ns:rt, ns:web|ns:am2]].
+
[3.0.0+] This service was replaced by [[#ns:am2, ns:ec, ns:rid, ns:rt, ns:web, ns:ro, ns:sweb|ns:am2]].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 107: Line 119:  
| 2 || GetApplicationRecordUpdateSystemEvent
 
| 2 || GetApplicationRecordUpdateSystemEvent
 
|-
 
|-
| 3 || GetApplicationViewDeprecated
+
| 3 || GetApplicationView
 
|-
 
|-
 
| 4 || DeleteApplicationEntity
 
| 4 || DeleteApplicationEntity
Line 261: Line 273:  
| 601 || [2.0.0+] [[#ListApplicationContentMetaStatus]]
 
| 601 || [2.0.0+] [[#ListApplicationContentMetaStatus]]
 
|-
 
|-
| 602 || [2.0.0+] ListAvailableAddOnContent
+
| 602 || [2.0.0+] ListOwnedAndInstalledAddOnContent
 
|-
 
|-
 
| 603 || [2.0.0+] GetOwnedApplicationContentMetaStatus
 
| 603 || [2.0.0+] GetOwnedApplicationContentMetaStatus
Line 303: Line 315:  
| 908 || [2.0.0+] ListApplicationRecordInstalledContentMeta
 
| 908 || [2.0.0+] ListApplicationRecordInstalledContentMeta
 
|-
 
|-
| 1000 || [2.0.0+] RequestVerifyApplicationDeprecated
+
| 1000 || [2.0.0+] RequestVerifyApplication
 
|-
 
|-
 
| 1001 || [2.0.0+] CorruptApplicationForDebug
 
| 1001 || [2.0.0+] CorruptApplicationForDebug
Line 323: Line 335:  
| 1502 || [2.0.0+] GetLastSdCardFormatUnexpectedResult
 
| 1502 || [2.0.0+] GetLastSdCardFormatUnexpectedResult
 
|-
 
|-
| 1503 || [2.0.0+]
+
| 1503 || [2.0.0+] DetachSdCard
 
|-
 
|-
 
| 1600 || [2.0.0+] GetSystemSeedForPseudoDeviceId
 
| 1600 || [2.0.0+] GetSystemSeedForPseudoDeviceId
Line 471: Line 483:  
|}
 
|}
   −
= ns:am2, ns:ec, ns:rid, ns:rt, ns:web, ns:ro =
+
= ns:am2, ns:ec, ns:rid, ns:rt, ns:web, ns:ro, ns:sweb =
These services are all, at the top level, "nn::ns::detail::IServiceGetterInterface". These commands check a state field for a command-specific bit and returns an error if not set, this is likely a permissions check for service+command.
+
These are "nn::ns::detail::IServiceGetterInterface".
 +
 
 +
These commands check a state field for a command-specific bit and returns an error if not set, this is likely a permissions check for service+command.
    
[11.0.0+] ns:ro was added.
 
[11.0.0+] ns:ro was added.
 +
 +
[15.0.0+] ns:sweb was added.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 644: Line 660:  
| 83 || [4.0.0-6.2.0] CheckApplicationResumeRights
 
| 83 || [4.0.0-6.2.0] CheckApplicationResumeRights
 
|-
 
|-
| 84 || [4.0.0+] GetDynamicCommitEvent
+
| 84 || [4.0.0-16.1.0] GetDynamicCommitEvent
 
|-
 
|-
 
| 85 || [4.0.0+] [[#RequestUpdateApplication2]]
 
| 85 || [4.0.0+] [[#RequestUpdateApplication2]]
Line 652: Line 668:  
| 87 || [4.0.0+] IsApplicationCrashReportEnabled
 
| 87 || [4.0.0+] IsApplicationCrashReportEnabled
 
|-
 
|-
| 90 || [4.0.0-8.1.0] BoostSystemMemoryResourceLimit
+
| 90 || [15.0.0+] BoostSystemMemoryResourceLimit ([4.0.0-8.1.0] BoostSystemMemoryResourceLimit)
 
|-
 
|-
 
| 91 || [5.0.0+] DeprecatedLaunchApplication
 
| 91 || [5.0.0+] DeprecatedLaunchApplication
Line 666: Line 682:  
| 96 || [6.0.0+] [[#AcquireApplicationLaunchInfo]]
 
| 96 || [6.0.0+] [[#AcquireApplicationLaunchInfo]]
 
|-
 
|-
| 97 || [6.0.0+] GetMainApplicationProgramIndexByApplicationLaunchInfo
+
| 97 || [6.0.0+] [[#GetMainApplicationProgramIndexByApplicationLaunchInfo]]
 
|-
 
|-
 
| 98 || [6.0.0+] EnableApplicationAllThreadDumpOnCrash
 
| 98 || [6.0.0+] EnableApplicationAllThreadDumpOnCrash
Line 726: Line 742:  
| 405 || ListApplicationControlCacheEntryInfo
 
| 405 || ListApplicationControlCacheEntryInfo
 
|-
 
|-
| 406 || [6.0.0+] GetApplicationControlProperty
+
| 406 || [6.0.0-18.1.0] [[#GetApplicationControlProperty]]
 
|-
 
|-
 
| 407 || [8.0.0+] [[#ListApplicationTitle]]
 
| 407 || [8.0.0+] [[#ListApplicationTitle]]
 
|-
 
|-
 
| 408 || [8.0.0+] [[#ListApplicationIcon]]
 
| 408 || [8.0.0+] [[#ListApplicationIcon]]
 +
|-
 +
| 411 || [19.0.0+]
 +
|-
 +
| 412 || [19.0.0+]
 +
|-
 +
| 413 || [19.0.0+]
 +
|-
 +
| 414 || [19.0.0+]
 +
|-
 +
| 415 || [19.0.0+]
 +
|-
 +
| 416 || [19.0.0+]
 +
|-
 +
| 417 || [19.0.0+] InvalidateAllApplicationControlCacheOfTheStage
 +
|-
 +
| 418 || [19.0.0+] InvalidateApplicationControlCacheOfTheStage
 +
|-
 +
| 419 || [19.0.0+] RequestDownloadApplicationControlDataInBackground
 +
|-
 +
| 420 || [19.0.0+] CloneApplicationControlDataCacheForDebug
 
|-
 
|-
 
| 502 || [[#RequestCheckGameCardRegistration]]
 
| 502 || [[#RequestCheckGameCardRegistration]]
Line 749: Line 785:  
|-
 
|-
 
| 510 || [9.0.0+] [[#GetGameCardPlatformRegion]]
 
| 510 || [9.0.0+] [[#GetGameCardPlatformRegion]]
 +
|-
 +
| 511 || [19.0.0+] GetGameCardWakenReadyEvent
 +
|-
 +
| 512 || [19.0.0+] IsGameCardApplicationRunning
 
|-
 
|-
 
| 600 || [[#CountApplicationContentMeta]]
 
| 600 || [[#CountApplicationContentMeta]]
Line 758: Line 798:  
| 603 || GetOwnedApplicationContentMetaStatus
 
| 603 || GetOwnedApplicationContentMetaStatus
 
|-
 
|-
| 604 || RegisterContentsExternalKey
+
| 604 || [1.0.0-15.0.1] RegisterContentsExternalKey
 
|-
 
|-
 
| 605 || ListApplicationContentMetaStatusWithRightsCheck
 
| 605 || ListApplicationContentMetaStatusWithRightsCheck
Line 767: Line 807:  
|-
 
|-
 
| 609 || [13.0.0+] ListAvailabilityAssuredAddOnContent
 
| 609 || [13.0.0+] ListAvailabilityAssuredAddOnContent
 +
|-
 +
| 610 || [14.0.0+] GetInstalledContentMetaStorage
 +
|-
 +
| 611 || [16.0.0+] PrepareAddOnContent
 
|-
 
|-
 
| 700 || PushDownloadTaskList
 
| 700 || PushDownloadTaskList
Line 804: Line 848:  
| 908 || ListApplicationRecordInstalledContentMeta
 
| 908 || ListApplicationRecordInstalledContentMeta
 
|-
 
|-
| 909 || [3.0.0+] WithdrawCleanupAddOnContentsWithNoRightsRecommendation
+
| 909 || [3.0.0-14.1.2] WithdrawCleanupAddOnContentsWithNoRightsRecommendation
 
|-
 
|-
 
| 910 || [5.0.0+] HasApplicationRecord
 
| 910 || [5.0.0+] HasApplicationRecord
Line 846: Line 890:  
| 1309 || [6.0.0+] [[#CleanupUnavailableAddOnContents]]
 
| 1309 || [6.0.0+] [[#CleanupUnavailableAddOnContents]]
 
|-
 
|-
| 1310 || [10.0.0+] RequestMoveApplicationEntity
+
| 1310 || [10.0.0+] [[#RequestMoveApplicationEntity]]
 
|-
 
|-
| 1311 || [10.0.0+] EstimateSizeToMove
+
| 1311 || [10.0.0+] [[#EstimateSizeToMove]]
 
|-
 
|-
 
| 1312 || [10.0.0+] HasMovableEntity
 
| 1312 || [10.0.0+] HasMovableEntity
Line 890: Line 934:  
| 1801 || GetLastNotificationInfoCount
 
| 1801 || GetLastNotificationInfoCount
 
|-
 
|-
| 1802 || ListLastNotificationInfo
+
| 1802 || [[#ListLastNotificationInfo]]
 
|-
 
|-
| 1803 || [3.0.0+] ListNotificationTask
+
| 1803 || [3.0.0+] [[#ListNotificationTask]]
 
|-
 
|-
 
| 1900 || [3.0.0-12.1.0] IsActiveAccount
 
| 1900 || [3.0.0-12.1.0] IsActiveAccount
Line 899: Line 943:  
|-
 
|-
 
| 1902 || [5.0.0+] GetApplicationTicketInfo
 
| 1902 || [5.0.0+] GetApplicationTicketInfo
 +
|-
 +
| 1903 || [13.1.0+] RequestDownloadApplicationPrepurchasedRightsForAccount
 
|-
 
|-
 
| 2000 || [4.0.0+] [[#GetSystemDeliveryInfo]]
 
| 2000 || [4.0.0+] [[#GetSystemDeliveryInfo]]
Line 999: Line 1,045:  
|-
 
|-
 
| 2356 || [12.0.0+] RequestStorageEfficientUpdatePreferable
 
| 2356 || [12.0.0+] RequestStorageEfficientUpdatePreferable
 +
|-
 +
| 2357 || [15.0.0+] EnableMultiCoreDownload
 +
|-
 +
| 2358 || [15.0.0+] DisableMultiCoreDownload
 +
|-
 +
| 2359 || [15.0.0+] IsMultiCoreDownloadEnabled
 +
|-
 +
| 2360 || [19.0.0+] GetApplicationDownloadTaskCount
 +
|-
 +
| 2361 || [19.0.0+] GetMaxApplicationDownloadTaskCount
 
|-
 
|-
 
| 2400 || [8.0.0+] [[#GetPromotionInfo]]
 
| 2400 || [8.0.0+] [[#GetPromotionInfo]]
Line 1,016: Line 1,072:  
| 2511 || [9.0.0+] [[#GetApplicationResource]]
 
| 2511 || [9.0.0+] [[#GetApplicationResource]]
 
|-
 
|-
| 2513 || [10.0.0+] LaunchMicroApplication ([9.0.0-9.2.0] LaunchPreomia)
+
| 2513 || [10.0.0+] [[#LaunchMicroApplication]] ([9.0.0-9.2.0] LaunchPreomia)
 
|-
 
|-
 
| 2514 || [9.0.0+] ClearTaskOfAsyncTaskManager
 
| 2514 || [9.0.0+] ClearTaskOfAsyncTaskManager
Line 1,022: Line 1,078:  
| 2515 || [10.0.0+] CleanupAllPlaceHolderAndFragmentsIfNoTask
 
| 2515 || [10.0.0+] CleanupAllPlaceHolderAndFragmentsIfNoTask
 
|-
 
|-
| 2516 || [10.0.0+] EnsureApplicationCertificate
+
| 2516 || [10.0.0-14.1.2] EnsureApplicationCertificate
 
|-
 
|-
| 2517 || [13.0.0+] CreateApplicationInstance
+
| 2517 || [13.0.0+] [[#CreateApplicationInstance]]
 
|-
 
|-
 
| 2518 || [13.0.0+] UpdateQualificationForDebug
 
| 2518 || [13.0.0+] UpdateQualificationForDebug
Line 1,032: Line 1,088:  
| 2520 || [13.0.0+] IsQualificationTransitionSupportedByProcessId
 
| 2520 || [13.0.0+] IsQualificationTransitionSupportedByProcessId
 
|-
 
|-
| 2521 || [13.0.0+] GetRightsUserChangedEvent
+
| 2521 || [13.0.0-16.1.0] GetRightsUserChangedEvent
 +
|-
 +
| 2522 || [14.0.0+] IsRomRedirectionAvailable
 +
|-
 +
| 2523 || [17.0.0+] GetProgramId
 +
|-
 +
| 2524 || [19.0.0+]  
 
|-
 
|-
 
| 2800 || [9.0.0+] GetApplicationIdOfPreomia
 
| 2800 || [9.0.0+] GetApplicationIdOfPreomia
Line 1,065: Line 1,127:  
|-
 
|-
 
| 3014 || [11.0.0+] [[#IsLocalContentShareEnabled]]
 
| 3014 || [11.0.0+] [[#IsLocalContentShareEnabled]]
 +
|-
 +
| 3015 || [18.0.0+] GetNetworkUpdateRequiredByGameCardDetectionEvent
 +
|-
 +
| 3050 || [14.0.0+] ListAssignELicenseTaskResult
 +
|-
 +
| 3100 || [17.0.0+] GetSafeSystemVersionCheckInfo
 +
|-
 +
| 3101 || [17.0.0+] RequestUpdateSafeSystemVersionCheckInfo
 +
|-
 +
| 3102 || [17.0.0+] ResetSafeSystemVersionCheckInfo
 +
|-
 +
| 3104 || [18.0.0+] GetApplicationNintendoLogo
 +
|-
 +
| 3105 || [18.0.0+] GetApplicationStartupMovie
 +
|-
 +
| 5000 || [18.0.0+]
 +
|-
 +
| 5001 || [18.0.0+]
 
|-
 
|-
 
| 9999 || [10.0.0-10.2.0] GetApplicationCertificate
 
| 9999 || [10.0.0-10.2.0] GetApplicationCertificate
Line 1,099: Line 1,179:  
The data that can be read from the [[#IAsyncValue]] is [[#ApplicationUpdateInfo]].
 
The data that can be read from the [[#IAsyncValue]] is [[#ApplicationUpdateInfo]].
   −
Before using the cmd, official sw uses [[Network_Interface_services#IsAnyInternetRequestAccepted|IsAnyInternetRequestAccepted]] with the output from [[#Network_Interface_services#GetClientId|GetClientId]], throwing an error when the returned bool is false.
+
Before using the cmd, official sw uses [[Network_Interface_services#IsAnyInternetRequestAccepted|IsAnyInternetRequestAccepted]] with the output from [[Network_Interface_services#GetClientId|GetClientId]], throwing an error when the returned bool is false.
    
==== CancelApplicationDownload ====
 
==== CancelApplicationDownload ====
Line 1,164: Line 1,244:  
==== LaunchApplication ====
 
==== LaunchApplication ====
 
Takes an input u8 ProgramIndex, an input [[#ApplicationLaunchInfo]], returns an output u64.
 
Takes an input u8 ProgramIndex, an input [[#ApplicationLaunchInfo]], returns an output u64.
 +
 +
[18.0.0+] Now takes a total of 0x58 bytes of input.
 +
 +
[19.0.0+] Now takes a total of 0x88 bytes of input.
    
==== GetApplicationLaunchInfo ====
 
==== GetApplicationLaunchInfo ====
 
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output [[#ApplicationLaunchInfo]].
 
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output [[#ApplicationLaunchInfo]].
 +
 +
[18.0.0+] Now returns a total of 0x50 bytes of output.
 +
 +
[19.0.0+] Now returns a total of 0x80 bytes of output.
    
==== AcquireApplicationLaunchInfo ====
 
==== AcquireApplicationLaunchInfo ====
Line 1,172: Line 1,260:     
This verifies that a state flag is set and that a state field matches the input ApplicationId, throwing an error otherwise. The [[#ApplicationLaunchInfo]] from state is copied to output, then the state flag is cleared.
 
This verifies that a state flag is set and that a state field matches the input ApplicationId, throwing an error otherwise. The [[#ApplicationLaunchInfo]] from state is copied to output, then the state flag is cleared.
 +
 +
[18.0.0+] Now returns a total of 0x50 bytes of output.
 +
 +
[19.0.0+] Now returns a total of 0x80 bytes of output.
 +
 +
==== GetMainApplicationProgramIndexByApplicationLaunchInfo ====
 +
[18.0.0+] Now takes a total of 0x50 bytes of input.
 +
 +
[19.0.0+] Now returns a total of 0x80 bytes of output.
    
==== LaunchDevMenu ====
 
==== LaunchDevMenu ====
Line 1,211: Line 1,308:  
No input, returns an output u64.
 
No input, returns an output u64.
   −
A state flag must be zero, otherwise an error is thrown. When a state field is value 1, a hard-coded ProgramId for MaintenanceMenu is used. Otherwise, the ProgramId is loaded from [[System_Settings|system-setting]] <code>ns.applet!system_applet_id</code>.
+
A state flag must be non-zero, otherwise an error is thrown. When a state field is value 1, a hard-coded ProgramId for MaintenanceMenu is used. Otherwise, the ProgramId is loaded from [[System_Settings|system-setting]] <code>ns.applet!system_applet_id</code>.
    
The SystemApplet is launched with StorageId=BuiltInSystem via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0). [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success.
 
The SystemApplet is launched with StorageId=BuiltInSystem via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0). [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success.
Line 1,220: Line 1,317:  
No input, returns an output u64.
 
No input, returns an output u64.
   −
A state flag must be zero, otherwise an error is thrown. The ProgramId is loaded from [[System_Settings|system-setting]] <code>ns.applet!overlay_applet_id</code>.
+
A state flag must be non-zero, otherwise an error is thrown. The ProgramId is loaded from [[System_Settings|system-setting]] <code>ns.applet!overlay_applet_id</code>.
    
The OverlayApplet is launched with StorageId=BuiltInSystem via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0). [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success.
 
The OverlayApplet is launched with StorageId=BuiltInSystem via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0). [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success.
Line 1,230: Line 1,327:     
See [[#RequestApplicationUpdateInfo]] regarding nifm.
 
See [[#RequestApplicationUpdateInfo]] regarding nifm.
 +
 +
==== GetApplicationControlProperty ====
 +
[18.0.0+] Now takes a total of 0x58 bytes of input.
    
==== ListApplicationTitle ====
 
==== ListApplicationTitle ====
Line 1,294: Line 1,394:  
==== ListAvailableAddOnContent ====
 
==== ListAvailableAddOnContent ====
 
[10.0.0+] This now takes a total of 0x10-bytes of input instead of a total of 0x18-bytes of input.
 
[10.0.0+] This now takes a total of 0x10-bytes of input instead of a total of 0x18-bytes of input.
 +
 +
[15.0.0+] This now takes a total of 0x8-bytes of input instead of a total of 0x10-bytes of input.
    
==== RequestDownloadTaskListData ====
 
==== RequestDownloadTaskListData ====
Line 1,329: Line 1,431:  
==== CleanupUnavailableAddOnContents ====
 
==== CleanupUnavailableAddOnContents ====
 
Takes an input u64 [[NCM_services#ApplicationId|ApplicationId]], an [[Account_services#Uid|Uid]], no output.
 
Takes an input u64 [[NCM_services#ApplicationId|ApplicationId]], an [[Account_services#Uid|Uid]], no output.
 +
 +
==== RequestMoveApplicationEntity ====
 +
Takes an input TransferMemory handle, a type-0x5 input buffer containing an array of [[NCM_services#StorageId|StorageId]], a [[NCM_services#StorageId|StorageId]], an u32 bitfield of "nn::ns::KeepApplicationEntityFlagTag", an [[NCM_services#ApplicationId|ApplicationId]], an u64 tmem_size, returns an output Event handle and an [[#IProgressAsyncResult]].
 +
 +
The TransferMemory uses permissions=0.
 +
 +
==== EstimateSizeToMove ====
 +
Takes a type-0x5 input buffer containing an array of [[NCM_services#StorageId|StorageId]], a [[NCM_services#StorageId|StorageId]], an u32 bitfield of "nn::ns::KeepApplicationEntityFlagTag", an [[NCM_services#ApplicationId|ApplicationId]], returns an output s64.
 +
 +
This calls a func also used by [[#RequestMoveApplicationEntity]], then calls another func.
    
==== FormatSdCard ====
 
==== FormatSdCard ====
Line 1,352: Line 1,464:     
Compares the input ApplicationId with the value of [[System_Settings|system-setting]] <code>ns.application!auto_deletable_application_id_on_not_enough_space</code>, with the bool being set to the comparsion result.
 
Compares the input ApplicationId with the value of [[System_Settings|system-setting]] <code>ns.application!auto_deletable_application_id_on_not_enough_space</code>, with the bool being set to the comparsion result.
 +
 +
==== ListLastNotificationInfo ====
 +
Takes a type-0x6 buffer containing an array with struct entry size 0x90-bytes. Returns 4-bytes of output.
 +
 +
[19.0.0+] The struct size is now 0x98-bytes.
 +
 +
==== ListNotificationTask ====
 +
Takes a type-0x6 buffer containing an array with struct entry size 0xB0-bytes. Returns 4-bytes of output.
 +
 +
[19.0.0+] The struct size is now 0xB8-bytes.
    
==== RequestDownloadApplicationPrepurchasedRights ====
 
==== RequestDownloadApplicationPrepurchasedRights ====
Line 1,530: Line 1,652:     
==== CreateApplicationResource ====
 
==== CreateApplicationResource ====
Returns an [[#IApplicationResource]].
+
Takes an input [[#ApplicationResourceType]]. Returns an [[#IApplicationResource]].
    
==== GetApplicationResource ====
 
==== GetApplicationResource ====
Returns an [[#IApplicationResource]].
+
Takes an input u64 ProcessId and an input [[#ApplicationResourceType]]. Returns an [[#IApplicationResource]].
 +
 
 +
==== LaunchMicroApplication ====
 +
[18.0.0+] Now takes a total of 0x50 bytes of input.
 +
 
 +
[19.0.0+] Now takes a total of 0x80 bytes of input.
 +
 
 +
==== CreateApplicationInstance ====
 +
[18.0.0+] Now takes a total of 0x50 bytes of input.
 +
 
 +
[19.0.0+] Now takes a total of 0x80 bytes of input.
    
==== RegisterDeviceLockKey ====
 
==== RegisterDeviceLockKey ====
Line 1,738: Line 1,870:  
|-
 
|-
 
| 92 || [5.0.0+] GetRunningApplicationProgramId
 
| 92 || [5.0.0+] GetRunningApplicationProgramId
 +
|-
 +
| 2524 || [19.0.0+]
 
|}
 
|}
   Line 1,826: Line 1,960:  
|-
 
|-
 
| 4 || [9.0.0+] SelectApplicationDesiredLanguage ||
 
| 4 || [9.0.0+] SelectApplicationDesiredLanguage ||
 +
|-
 +
| 5 || [19.0.0+] ||
 +
|-
 +
| 6 || [19.0.0+] ||
 
|}
 
|}
   Line 1,861: Line 1,999:  
| 13 || [8.0.0+] [[#GetRunningApplicationStatus]]
 
| 13 || [8.0.0+] [[#GetRunningApplicationStatus]]
 
|-
 
|-
| 14 || [10.0.0+] SelectApplicationLicense
+
| 14 || [10.0.0-15.0.1] SelectApplicationLicense
 
|-
 
|-
 
| 15 || [12.0.0+] [[#RequestContentsAuthorizationToken]]
 
| 15 || [12.0.0+] [[#RequestContentsAuthorizationToken]]
Line 1,874: Line 2,012:  
|-
 
|-
 
| 20 || [13.0.0+] IsRightsLostUser
 
| 20 || [13.0.0+] IsRightsLostUser
 +
|-
 +
| 21 || [13.1.0+] SetRequiredAddOnContentsOnContentsAvailabilityTransition
 +
|-
 +
| 22 || [14.0.0+] GetLimitedApplicationLicense
 +
|-
 +
| 23 || [14.0.0+] GetLimitedApplicationLicenseUpgradableEvent
 +
|-
 +
| 24 || [14.0.0+] NotifyLimitedApplicationLicenseUpgradableEventForDebug
 +
|-
 +
| 25 || [14.0.0+] RequestProceedDynamicRightsState
 +
|-
 +
| 26 || [18.0.0+] HasAccountRestrictedRightsInRunningApplications
 
|}
 
|}
   Line 1,955: Line 2,105:  
|-
 
|-
 
| 6 || [9.0.0+] [[#RequestSyncRightsBasedOnAssignedELicenses]]
 
| 6 || [9.0.0+] [[#RequestSyncRightsBasedOnAssignedELicenses]]
 +
|-
 +
| 7 || [14.0.0+] RequestOnlineSubscriptionFreeTrialAvailability
 
|}
 
|}
   Line 2,022: Line 2,174:     
==== RequestResetToFactorySettingsSecurely ====
 
==== RequestResetToFactorySettingsSecurely ====
Takes a total of 8-bytes of input, a handle, returns an output [[#IAsyncValueAndProgress]] and a handle.
+
Takes an input u64 tmem_size, a TransferMemory handle, returns an output [[#IAsyncValueAndProgress]] and an Event handle.
 +
 
 +
The TransferMemory uses permissions=0.
    
==== RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely ====
 
==== RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely ====
Takes a total of 0x10-bytes of input, a handle, returns an output [[#IAsyncValueAndProgress]] and a handle.
+
Takes an input u32 "nn::ae::PlatformRegion", an u64 tmem_size, a TransferMemory handle, returns an output [[#IAsyncValueAndProgress]] and an Event handle.
 +
 
 +
The TransferMemory uses permissions=0.
    
===== IAsyncValueAndProgress =====
 
===== IAsyncValueAndProgress =====
Line 2,073: Line 2,229:  
|-
 
|-
 
| 1202 || [4.0.0+] [[#GetSafeSystemVersion]]
 
| 1202 || [4.0.0+] [[#GetSafeSystemVersion]]
 +
|-
 +
| 3100 || [18.0.0+]
 +
|-
 +
| 3101 || [18.0.0+]
 +
|-
 +
| 3102 || [18.0.0+]
 
|}
 
|}
   Line 2,213: Line 2,375:     
== ISystemUpdateControl ==
 
== ISystemUpdateControl ==
 +
This is "nn::ns::detail::ISystemUpdateControl".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 2,495: Line 2,659:  
| 7 || [1.0.0-9.2.0] [[#PrepareLaunchProgramFromHost]]
 
| 7 || [1.0.0-9.2.0] [[#PrepareLaunchProgramFromHost]]
 
|-
 
|-
| 8 || [10.0.0+] [[#LaunchApplicationFromHost]] ([1.0.0-9.2.0] [[#LaunchApplicationForDevelop]])
+
| 8 || [10.0.0-17.0.1] [[#LaunchApplicationFromHost]] ([1.0.0-9.2.0] LaunchApplication)
 
|-
 
|-
| 9 || [[#LaunchApplicationWithStorageIdForDevelop]]
+
| 9 || [1.0.0-17.0.1] [[#LaunchApplicationWithStorageId]]
 
|-
 
|-
 
| 10 || [6.0.0-8.1.0] [[#IsSystemMemoryResourceLimitBoosted]]
 
| 10 || [6.0.0-8.1.0] [[#IsSystemMemoryResourceLimitBoosted]]
 
|-
 
|-
| 11 || [6.0.0+] [[#GetRunningApplicationProcessIdForDevelop]]
+
| 11 || [6.0.0+] [[#GetRunningApplicationProcessId]]
 
|-
 
|-
| 12 || [6.0.0+] [[#SetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop]]
+
| 12 || [6.0.0+] [[#SetCurrentApplicationRightsEnvironmentCanBeActive]]
 
|-
 
|-
| 13 || [9.0.0+] [[#CreateApplicationResourceForDevelop]]
+
| 13 || [9.0.0+] [[#CreateApplicationResource]]
 
|-
 
|-
| 14 || [9.0.0+] [[#IsPreomiaForDevelop]]
+
| 14 || [9.0.0+] [[#IsPreomia]]
 
|-
 
|-
| 15 || [10.0.0+] [[#GetApplicationProgramIdFromHost]]
+
| 15 || [10.0.0-17.0.1] [[#GetApplicationProgramIdFromHost]]
 
|-
 
|-
 
| 16 || [12.0.0+] RefreshCachedDebugValues
 
| 16 || [12.0.0+] RefreshCachedDebugValues
 
|-
 
|-
| 17 || [12.0.0+] PrepareLaunchApplicationFromHost
+
| 17 || [12.0.0+] [[#PrepareLaunchApplicationFromHost]]
 
|-
 
|-
| 18 || [12.0.0+] GetLaunchEvent
+
| 18 || [12.0.0+] [[#GetLaunchEvent]]
 
|-
 
|-
| 19 || [12.0.0+] GetLaunchResult
+
| 19 || [12.0.0+] [[#GetLaunchResult]]
|}
+
|-
 +
| 20 || [14.0.0+] GetProgramId
 +
|-
 +
| 21 || [18.0.0+] [[#PrepareLaunchApplication]]
 +
|-
 +
| 22 || [18.0.0+] [[#LaunchApplication]]
 +
|-
 +
| 23 || [18.0.0+] [[#GetProgramIdByApplicationLaunchInfo]]
 +
|-
 +
| 24 || [18.0.0+] DestroyApplicationLaunchPreparation
 +
|}
    
== LaunchProgram ==
 
== LaunchProgram ==
Line 2,539: Line 2,713:     
== PrepareLaunchProgramFromHost ==
 
== PrepareLaunchProgramFromHost ==
Takes a type-0x5 input buffer containing the [[Filesystem_services|ContentPath]], returns an output 0x10-byte struct.
+
Takes a type-0x5 input buffer containing the [[Filesystem_services#FspPath|FspPath]], returns an output 0x10-byte struct.
    
Calls [[NCM_services#IPathResolverForStorage|IPathResolverForStorage]] Set...NcaPath functions.
 
Calls [[NCM_services#IPathResolverForStorage|IPathResolverForStorage]] Set...NcaPath functions.
  −
== LaunchApplicationForDevelop ==
  −
Takes an input u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]] and [[NCM_services#ApplicationId|ApplicationId]], returns an output u64 ProcessId.
  −
  −
Same as [[#LaunchApplicationWithStorageIdForDevelop]] except the last two params passed to the internal vtable funcptr call are value 0x6, instead of from the command input.
      
== LaunchApplicationFromHost ==
 
== LaunchApplicationFromHost ==
Takes an input u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]] and a type-0x5 input buffer containing the [[Filesystem_services|ContentPath]]. Returns an output u64 ProcessId.
+
Takes an input u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]] and a type-0x5 input buffer containing the [[Filesystem_services#FspPath|FspPath]]. Returns an output u64 ProcessId.
   −
== LaunchApplicationWithStorageIdForDevelop ==
+
== LaunchApplicationWithStorageId ==
 
Takes 2 input u8 [[NCM_services#StorageId|StorageIds]], an u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]], and an [[NCM_services#ApplicationId|ApplicationId]]. Returns an output u64 ProcessId.
 
Takes 2 input u8 [[NCM_services#StorageId|StorageIds]], an u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]], and an [[NCM_services#ApplicationId|ApplicationId]]. Returns an output u64 ProcessId.
   Line 2,559: Line 2,728:  
No input. Returns a bool.
 
No input. Returns a bool.
   −
== GetRunningApplicationProcessIdForDevelop ==
+
== GetRunningApplicationProcessId ==
 
Returns an output u64 ProcessId.
 
Returns an output u64 ProcessId.
   −
== SetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop ==
+
== SetCurrentApplicationRightsEnvironmentCanBeActive ==
 
Takes an input bool. No output.
 
Takes an input bool. No output.
   −
== CreateApplicationResourceForDevelop ==
+
== CreateApplicationResource ==
 
Takes an input u32 (1 = Preomia/MicroApplication). Returns an [[#IApplicationResource]].
 
Takes an input u32 (1 = Preomia/MicroApplication). Returns an [[#IApplicationResource]].
   −
== IsPreomiaForDevelop ==
+
== IsPreomia ==
 
Takes an input u64 [[NCM_services#ProgramId|ProgramId]]. Returns a bool.
 
Takes an input u64 [[NCM_services#ProgramId|ProgramId]]. Returns a bool.
    
== GetApplicationProgramIdFromHost ==
 
== GetApplicationProgramIdFromHost ==
Takes a type-0x5 input buffer containing the [[Filesystem_services|ContentPath]]. Returns an u64 [[NCM_services#ProgramId|ProgramId]].
+
Takes a type-0x5 input buffer containing the [[Filesystem_services#FspPath|FspPath]]. Returns an u64 [[NCM_services#ProgramId|ProgramId]].
 +
 
 +
== PrepareLaunchApplicationFromHost ==
 +
[18.0.0+] Now returns a total of 0x50 bytes of output.
 +
 
 +
[19.0.0+] Now returns a total of 0x80 bytes of output.
 +
 
 +
== GetLaunchEvent ==
 +
[18.0.0+] Now takes a total of 0x50 bytes of input.
 +
 
 +
[19.0.0+] Now takes a total of 0x80 bytes of input.
 +
 
 +
== GetLaunchResult ==
 +
[18.0.0+] Now takes a total of 0x50 bytes of input.
 +
 
 +
[19.0.0+] Now takes a total of 0x80 bytes of input.
 +
 
 +
== PrepareLaunchApplication ==
 +
Takes a total of 0x10-bytes of input. Returns a total of 0x50-bytes of output.
 +
 
 +
[19.0.0+] Now returns a total of 0x80-bytes of output.
 +
 
 +
== LaunchApplication ==
 +
Takes a total of 0x50-bytes of input. Returns a total of 8-bytes of output.
 +
 
 +
[19.0.0+] Now takes a total of 0x80 bytes of input.
 +
 
 +
== GetProgramIdByApplicationLaunchInfo ==
 +
Takes a total of 0x50-bytes of input. Returns a total of 8-bytes of output.
 +
 
 +
[19.0.0+] Now takes a total of 0x80 bytes of input.
    
= acc:su =
 
= acc:su =
Line 2,578: Line 2,777:     
[13.0.0+] This was moved from [[Account_services|account]].
 
[13.0.0+] This was moved from [[Account_services|account]].
 +
 +
This is only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is Normal/Maintenance.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 2,599: Line 2,800:  
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
 
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
 
|-
 
|-
| 51 || [[#TrySelectUserWithoutInteraction]] ||
+
| 51 || TrySelectUserWithoutInteractionDeprecated ([1.0.0-18.1.0] [[#TrySelectUserWithoutInteraction]]) ||
 +
|-
 +
| 52 || [19.0.0+] TrySelectUserWithoutInteraction ||
 
|-
 
|-
 
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
 
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
Line 2,664: Line 2,867:  
|-
 
|-
 
| 212 || [8.0.0+] ResumeProcedureToRegisterUserWithNintendoAccount || Takes a total of 0x14-bytes of input and a handle, returns an [[#IOAuthProcedureForUserRegistration]].
 
| 212 || [8.0.0+] ResumeProcedureToRegisterUserWithNintendoAccount || Takes a total of 0x14-bytes of input and a handle, returns an [[#IOAuthProcedureForUserRegistration]].
 +
|-
 +
| 213 || [17.0.0+] CreateProcedureToCreateUserWithNintendoAccount ||
 +
|-
 +
| 214 || [17.0.0+] ResumeProcedureToCreateUserWithNintendoAccount ||
 +
|-
 +
| 215 || [17.0.0+] ResumeProcedureToCreateUserWithNintendoAccountAfterApplyResponse ||
 
|-
 
|-
 
| 230 || AuthenticateServiceAsync || Returns an [[#IAsyncContext]].
 
| 230 || AuthenticateServiceAsync || Returns an [[#IAsyncContext]].
Line 2,674: Line 2,883:  
|-
 
|-
 
| 299 || SuspendBackgroundDaemon || Returns an [[#ISessionObject]].
 
| 299 || SuspendBackgroundDaemon || Returns an [[#ISessionObject]].
 +
|-
 +
| 400 || [18.0.0+] SetPinCode ||
 +
|-
 +
| 401 || [18.0.0+] GetPinCodeLength ||
 +
|-
 +
| 402 || [18.0.0+] GetPinCode ||
 +
|-
 +
| 410 || [18.0.0+] GetPinCodeErrorCount ||
 +
|-
 +
| 411 || [18.0.0+] ResetPinCodeErrorCount ||
 +
|-
 +
| 412 || [18.0.0+] IncrementPinCodeErrorCount ||
 +
|-
 +
| 420 || [19.0.0+] SetStartPenaltyTime ||
 +
|-
 +
| 421 || [19.0.0+] GetStartPenaltyTime ||
 
|-
 
|-
 
| 900 || [13.0.0+] SetUserUnqualifiedForDebug ||
 
| 900 || [13.0.0+] SetUserUnqualifiedForDebug ||
Line 2,680: Line 2,905:  
|-
 
|-
 
| 902 || [13.0.0+] ListUsersUnqualifiedForDebug ||
 
| 902 || [13.0.0+] ListUsersUnqualifiedForDebug ||
 +
|-
 +
| 910 || [16.0.0+] RefreshFirmwareSettingsForDebug ||
 
|-
 
|-
 
| 997 || [3.0.0+] DebugInvalidateTokenCacheForUser ||
 
| 997 || [3.0.0+] DebugInvalidateTokenCacheForUser ||
Line 2,746: Line 2,973:  
|-
 
|-
 
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
 
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
 +
|-
 +
| 160 || [15.0.0+] RequiresUpdateNetworkServiceAccountIdTokenCache ||
 +
|-
 +
| 161 || [16.0.0+] RequireReauthenticationOfNetworkServiceAccount ||
 +
|-
 +
| 170 || [17.0.0+] CreateDeviceHistoryRequest ||
 +
|-
 +
| 180 || [18.0.0+] GetRequestForNintendoAccountReauthentication ||
 
|}
 
|}
   Line 2,766: Line 3,001:  
|-
 
|-
 
| 15 || GetProfileImage ||
 
| 15 || GetProfileImage ||
 +
|-
 +
| 16 || [18.0.0+] GetProfileLargeImage ||
 
|-
 
|-
 
| 21 || LoadIdTokenCache ||
 
| 21 || LoadIdTokenCache ||
Line 2,833: Line 3,070:  
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
 
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
 
|-
 
|-
| 200 || IsRegistered ||
+
| 160 || [15.0.0+] RequiresUpdateNetworkServiceAccountIdTokenCache ||
 +
|-
 +
| 161 || [16.0.0+] RequireReauthenticationOfNetworkServiceAccount ||
 +
|-
 +
| 170 || [17.0.0+] CreateDeviceHistoryRequest ||
 +
|-
 +
| 180 || [18.0.0+] GetRequestForNintendoAccountReauthentication ||
 +
|-
 +
| 200 || IsRegistered ||
 
|-
 
|-
 
| 201 || RegisterAsync || Returns an [[#IAsyncContext]].
 
| 201 || RegisterAsync || Returns an [[#IAsyncContext]].
Line 2,870: Line 3,115:  
|-
 
|-
 
| 401 || [6.1.0+] RefreshServiceEntryRequirementCacheForOnlinePlayAsync || Takes a total of 0x8-bytes of input, returns an [[#IAsyncContext]].
 
| 401 || [6.1.0+] RefreshServiceEntryRequirementCacheForOnlinePlayAsync || Takes a total of 0x8-bytes of input, returns an [[#IAsyncContext]].
 +
|-
 +
| 410 || [13.1.0+] CheckRequiredLicenseForLexAsync ||
 
|-
 
|-
 
| 900 || [9.0.0+] GetAuthenticationInfoForWin ||
 
| 900 || [9.0.0+] GetAuthenticationInfoForWin ||
Line 2,944: Line 3,191:  
|-
 
|-
 
| 103 || GetProfileImage ||
 
| 103 || GetProfileImage ||
 +
|-
 +
| 104 || [18.0.0+] GetProfileLargeImage ||
 
|}
 
|}
   Line 2,968: Line 3,217:  
|-
 
|-
 
| 199 || [2.0.0-5.1.0] GetUrlForIntroductionOfExtraMembership ||
 
| 199 || [2.0.0-5.1.0] GetUrlForIntroductionOfExtraMembership ||
 +
|-
 +
| 200 || [16.0.0+] ApplyAsyncWithAuthorizedToken ||
 
|}
 
|}
   Line 2,994: Line 3,245:  
|-
 
|-
 
| 11 || [[#LoadImage]]
 
| 11 || [[#LoadImage]]
 +
|-
 +
| 20 || [18.0.0+] GetLargeImageSize
 +
|-
 +
| 21 || [18.0.0+] LoadLargeImage
 +
|-
 +
| 30 || [18.0.0+] GetImageId
 
|}
 
|}
   Line 3,024: Line 3,281:  
|-
 
|-
 
| 11 || [[#LoadImage]]
 
| 11 || [[#LoadImage]]
 +
|-
 +
| 20 || [18.0.0+] GetLargeImageSize
 +
|-
 +
| 21 || [18.0.0+] LoadLargeImage
 +
|-
 +
| 30 || [18.0.0+] GetImageId
 
|-
 
|-
 
| 100 || [[#Store]]
 
| 100 || [[#Store]]
 
|-
 
|-
 
| 101 || [[#StoreWithImage]]
 
| 101 || [[#StoreWithImage]]
 +
|-
 +
| 110 || [18.0.0+] StoreWithLargeImage
 
|}
 
|}
   Line 3,066: Line 3,331:     
[13.0.0+] This was moved from [[Account_services|account]].
 
[13.0.0+] This was moved from [[Account_services|account]].
 +
 +
This is only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is Normal/Maintenance.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,087: Line 3,354:  
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
 
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
 
|-
 
|-
| 51 || [[#TrySelectUserWithoutInteraction]] ||
+
| 51 || TrySelectUserWithoutInteractionDeprecated ([1.0.0-18.1.0] [[#TrySelectUserWithoutInteraction]]) ||
 +
|-
 +
| 52 || [19.0.0+] TrySelectUserWithoutInteraction ||
 
|-
 
|-
 
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
 
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
Line 3,146: Line 3,415:  
|-
 
|-
 
| 15 || GetProfileImage
 
| 15 || GetProfileImage
 +
|-
 +
| 16 || [18.0.0+] GetProfileLargeImage
 
|-
 
|-
 
| 21 || [3.0.0+] LoadIdTokenCache
 
| 21 || [3.0.0+] LoadIdTokenCache
Line 3,218: Line 3,489:     
[13.0.0+] This was moved from [[Account_services|account]].
 
[13.0.0+] This was moved from [[Account_services|account]].
 +
 +
This is only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is Normal/Maintenance.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,239: Line 3,512:  
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
 
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
 
|-
 
|-
| 51 || [[#TrySelectUserWithoutInteraction]] ||
+
| 51 || TrySelectUserWithoutInteractionDeprecated ([1.0.0-18.1.0] [[#TrySelectUserWithoutInteraction]]) ||
 +
|-
 +
| 52 || [19.0.0+] TrySelectUserWithoutInteraction ||
 
|-
 
|-
 
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
 
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
Line 3,284: Line 3,559:  
|-
 
|-
 
| 191 || [7.0.0+] UpdateNotificationReceiverInfo ([5.0.0-5.1.0] ActivateOpenContextHolder) ||
 
| 191 || [7.0.0+] UpdateNotificationReceiverInfo ([5.0.0-5.1.0] ActivateOpenContextHolder) ||
 +
|-
 +
| 401 || [18.0.0+] GetPinCodeLength ||
 +
|-
 +
| 402 || [18.0.0+] GetPinCode ||
 
|-
 
|-
 
| 997 || [3.0.0+] DebugInvalidateTokenCacheForUser ||
 
| 997 || [3.0.0+] DebugInvalidateTokenCacheForUser ||
Line 3,320: Line 3,599:  
|-
 
|-
 
| 103 || GetProfileImage ||  
 
| 103 || GetProfileImage ||  
 +
|-
 +
| 104 || [18.0.0+] GetProfileLargeImage ||
 
|-
 
|-
 
| 110 || RegisterUserAsync || No input, returns an [[#IAsyncContext]].
 
| 110 || RegisterUserAsync || No input, returns an [[#IAsyncContext]].
 
|-
 
|-
 
| 111 || GetUid ||  
 
| 111 || GetUid ||  
 +
|-
 +
| 200 || [17.0.0+] ApplyResponseForUserCreationAsync ||
 +
|-
 +
| 205 || [17.0.0+] SuspendAfterApplyResponse ||
 +
|-
 +
| 210 || [17.0.0+] IsProfileAvailable ||
 +
|-
 +
| 220 || [17.0.0+] RegisterUserAsyncWithoutProfile ||
 +
|-
 +
| 221 || [17.0.0+] RegisterUserWithProfileAsync ||
 +
|-
 +
| 230 || [18.0.0+] RegisterUserWithLargeImageProfileAsync ||
 
|}
 
|}
   Line 3,330: Line 3,623:     
= ApplicationUpdateInfo =
 
= ApplicationUpdateInfo =
This is "nn::ns::ApplicationUpdateInfo".
+
This is "nn::ns::ApplicationUpdateInfo". This is an u8.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || UpToDate
 +
|-
 +
| 1 || Updatable
 +
|}
   −
This is an u8. [[qlaunch]] just checks whether this is 0.
+
[[qlaunch]] just checks whether this is 0.
    
= ApplicationOccupiedSize =
 
= ApplicationOccupiedSize =
 
This is "nn::ns::ApplicationOccupiedSize". This is a 0x80-byte struct.
 
This is "nn::ns::ApplicationOccupiedSize". This is a 0x80-byte struct.
   −
= ProgressForDeleteUserSaveDataAll =
+
{| class="wikitable" border="1"
This is "nn::ns::detail::ProgressForDeleteUserSaveDataAll". This is a 0x28-byte struct.
+
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x20 * 4 || Array of [[#ApplicationOccupiedSizeEntity]]
 +
|}
   −
= ApplicationViewDeprecated =
+
= ApplicationOccupiedSizeEntity =
This is "nn::ns::ApplicationViewDeprecated". This is a 0x40-byte struct.
+
This is "nn::ns::ApplicationOccupiedSizeEntity". This is a 0x20-byte struct.
 
  −
This is converted from [[#ApplicationView]] by [[#GetApplicationViewDeprecated]] on newer system-versions as follows:
      
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,351: Line 3,658:  
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x20 || Same as [[#ApplicationView]] +0x0.
+
| 0x0 || 0x1 || [[NCM_services#StorageId|StorageId]]
|-
  −
| 0x20 || 0x4 || Same as [[#ApplicationView]] +0x20.
  −
|-
  −
| 0x24 || 0x2 || Same as [[#ApplicationView]] +0x24.
  −
|-
  −
| 0x26 || 0x2 || Cleared to 0.
   
|-
 
|-
| 0x28 || 0x10 || Same as [[#ApplicationView]] +0x30.
+
| 0x1 || 0x7 || Reserved
|-
  −
| 0x38 || 0x4 || Same as [[#ApplicationView]] +0x40.
   
|-
 
|-
| 0x3C || 0x1 || Same as [[#ApplicationView]] +0x44.
+
| 0x8 || 0x8 || AppSize
 
|-
 
|-
| 0x3D || 0x2 || Cleared to 0.
+
| 0x10 || 0x8 || PatchSize
 
|-
 
|-
| 0x3F || 0x1 || Cleared to 0.
+
| 0x18 || 0x8 || AocSize
 
|}
 
|}
   −
= ApplicationView =
+
= ProgressForDeleteUserSaveDataAll =
This is "nn::ns::ApplicationView". This is a 0x50-byte struct.
+
This is "nn::ns::detail::ProgressForDeleteUserSaveDataAll". This is a 0x28-byte struct.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,379: Line 3,678:  
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
+
| 0x0 || 0x8 || StartedAt
 +
|-
 +
| 0x8 || 0x4 || Count
 +
|-
 +
| 0xC || 0x4 || Reserved
 +
|-
 +
| 0x10 || 0x8 || SizeInBytes
 
|-
 
|-
| 0x8 || 0x4 || ?
+
| 0x18 || 0x1 || IsSystem
 
|-
 
|-
| 0xC || 0x4 || Flags
+
| 0x19 || 0x7 || Reserved
 
|-
 
|-
| 0x10 || 0x40 || ?
+
| 0x20 || 0x8 || ApplicationId
 
|}
 
|}
   −
= ApplicationViewWithPromotionInfo =
+
= ApplicationViewDeprecated =
This is a 0x70-byte struct.
+
This is "nn::ns::ApplicationViewDeprecated". This is a 0x40-byte struct.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,397: Line 3,702:  
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x50 || [[#ApplicationView]]
+
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 
|-
 
|-
| 0x50 || 0x20 || [[#PromotionInfo]]
+
| 0x8 || 0x4 || Version
 +
|-
 +
| 0xC || 0x4 || [[#ApplicationViewFlag|Flag]]
 +
|-
 +
| 0x10 || 0x18 || [[#ApplicationDownloadProgress|Progress]]
 +
|-
 +
| 0x28 || 0x18 || [[#ApplicationApplyDeltaProgress|ApplyProgress]]
 
|}
 
|}
   −
= PromotionInfo =
+
This is converted from [[#ApplicationView]] by [[#GetApplicationViewDeprecated]] on newer system-versions as follows:
This is a 0x20-byte struct.
      
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,411: Line 3,721:  
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x8 || PosixTime start_timestamp.
+
| 0x0 || 0x20 || Same as [[#ApplicationView]] +0x0.
 
|-
 
|-
| 0x8 || 0x8 || PosixTime end_timestamp.
+
| 0x20 || 0x4 || Same as [[#ApplicationView]] +0x20.
 
|-
 
|-
| 0x10 || 0x8 || Remaining time until the promotion ends, in nanoseconds ({end_timestamp - current_time} converted to nanoseconds).
+
| 0x24 || 0x2 || Same as [[#ApplicationView]] +0x24.
 
|-
 
|-
| 0x18 || 0x4 || Not set, left at zero.
+
| 0x26 || 0x2 || Cleared to 0.
 
|-
 
|-
| 0x1C || 0x1 || Flags. Bit0: whether the PromotionInfo is valid (including bit1). Bit1 clear: u64 +0x10 is set.
+
| 0x28 || 0x10 || Same as [[#ApplicationView]] +0x30.
 
|-
 
|-
| 0x1D || 0x3 || Padding
+
| 0x38 || 0x4 || Same as [[#ApplicationView]] +0x40.
|}
  −
 
  −
= NoDownloadRightsErrorResolution =
  −
This is "nn::ns::NoDownloadRightsErrorResolution".
  −
 
  −
= BackgroundNetworkUpdateState =
  −
{| class="wikitable" border="1"
   
|-
 
|-
!  Value
+
| 0x3C || 0x1 || Same as [[#ApplicationView]] +0x44.
!  Description
   
|-
 
|-
| 0 || No sysupdate task exists.
+
| 0x3D || 0x2 || Cleared to 0.
 
|-
 
|-
| 1 || Sysupdate download in progress.
+
| 0x3F || 0x1 || Cleared to 0.
|-
  −
| 2 || Sysupdate ready, pending install.
   
|}
 
|}
   −
This is "nn::ns::BackgroundNetworkUpdateState". This is an u8.
+
= ApplicationViewFlag =
 
+
This is "nn::ns::ApplicationViewFlag". This is a 32-bit flag.
Similar to [[#HasDownloaded]], [[#GetBackgroundNetworkUpdateState]] uses [[NIM_services|nim]] ListSystemUpdateTask and [[NIM_services|nim]] GetSystemUpdateTaskInfo. When ListSystemUpdateTask successfully returns a task and GetSystemUpdateTaskInfo is successful, the output value is set to: <code>1 + *((u8*)(taskinfo+0) == 0x3</code>. Otherwise, value=0.
  −
 
  −
[[#GetBackgroundNetworkUpdateState]] always returns Result 0, however this will assert if GetSystemUpdateTaskInfo fails with ret!=0x3C89.
     −
= SystemUpdateProgress =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset
+
! Bit
! Size
   
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x8 || s64 Current size. This value can be larger than total_size when the async operation is finishing. When total_size is <=0, this current_size field may contain a progress value for when the total_size is not yet determined.
+
| 0
 +
|  
 
|-
 
|-
| 0x8 || 0x8 || s64 Total size, this field is only valid when >0.
+
| 1
|}
+
|  
 
+
|-
This is "nn::ns::SystemUpdateProgress". This is a 0x10-byte struct.
+
| 2
 
+
|  
Commands which have this as output will return 0 with the output cleared, when no task is available.
+
|-
 
+
| 3
= EulaDataPath =
+
|
This is "nn::ns::detail::EulaDataPath". This is a 0x100-byte struct.
+
|-
 
+
| 4
This contains a file path.
+
|
 
+
|-
= SystemDeliveryInfo =
+
| 5
{| class="wikitable" border="1"
+
|  
 
|-
 
|-
! Offset
+
| 6
! Size
+
|
! Description
   
|-
 
|-
| 0x0 || 0x4 || SystemDeliveryProtocolVersion. Must be <= to and match [[System_Settings|system-setting]] <code>contents_delivery!system_delivery_protocol_version</code>.
+
| 7
 +
|  
 
|-
 
|-
| 0x4 || 0x4 || ApplicationDeliveryProtocolVersion. Loaded from [[System_Settings|system-setting]] <code>contents_delivery!application_delivery_protocol_version</code>. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
+
| 8
 +
|  
 
|-
 
|-
| 0x8 || 0x1 || HasExFat. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
+
| 9
 +
|  
 
|-
 
|-
| 0x9 || 0x3 || Reserved.
+
| 10
 +
|  
 
|-
 
|-
| 0xC || 0x4 || SystemUpdateMetaVersion.
+
| 11
 +
|  
 
|-
 
|-
| 0x10 || 0x8 || SystemUpdateMetaId.
+
| 12
 +
|  
 
|-
 
|-
| 0x18 || 0x1 || FirmwareVariationId. Used by [[#RequestSendSystemUpdate]].
+
| 13
 +
|  
 
|-
 
|-
| 0x19 || 0x1 || UpdatableFirmwareGroupId. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
+
| 14
 +
|  
 
|-
 
|-
| 0x1A || 0x1 || PlatformRegion (0x00 = Unknown, 0x01 = Global, 0x02 = China).
+
| 15
 +
|  
 
|-
 
|-
| 0x1B || 0xC5 || Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
+
| 16
 +
|  
 
|-
 
|-
| 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes.
+
| 17
 +
|  
 
|}
 
|}
   −
This is "nn::ns::SystemDeliveryInfo". This is a 0x100-byte struct.
+
= ApplicationDownloadProgress =
 +
This is "nn::ns::ApplicationDownloadProgress". This is a 0x18-byte struct.
   −
= ApplicationDeliveryInfo =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 3,506: Line 3,812:  
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x8 || ?
+
| 0x0 || 0x8 || Downloaded
 
|-
 
|-
| 0x8 || 0x8 || ApplicationId.
+
| 0x8 || 0x8 || Total
 
|-
 
|-
| 0x10 || 0x4 || ApplicationVersion.
+
| 0x10 || 0x4 || LastResult
 
|-
 
|-
| 0x14 || 0x4 || ?
+
| 0x14 || 0x1 || [[#ApplicationDownloadState|State]]
 
|-
 
|-
| 0x18 || 0x4 || RequiredSystemVersion.
+
| 0x15 || 0x3 || Reserved
 +
|}
 +
 
 +
= ApplicationApplyDeltaProgress =
 +
This is "nn::ns::ApplicationApplyDeltaProgress". This is a 0x18-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 0x1C || 0x4 || ?
+
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || Applied
 +
|-
 +
| 0x8 || 0x8 || Total
 +
|-
 +
| 0x10 || 0x4 || LastResult
 
|-
 
|-
| 0x20 || 0xC0 || ?
+
| 0x14 || 0x1 || [[#ApplicationApplyDeltaState|State]]
 
|-
 
|-
| 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes. Uses a different key than [[#SystemDeliveryInfo]].
+
| 0x15 || 0x3 || Reserved
 
|}
 
|}
   −
This is "nn::ns::ApplicationDeliveryInfo". This is a 0x100-byte struct.
+
= ApplicationDownloadState =
 +
This is "nn::ns::ApplicationDownloadState". This is an u8.
   −
= LatestSystemUpdate =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Value
+
! Value
! Description
+
! Description
 +
|-
 +
| 0 || Runnable
 +
|-
 +
| 1 || Suspended
 
|-
 
|-
| 1 || Unknown.
+
| 2 || NotEnoughSpace
 
|-
 
|-
| 2 || Unknown.
+
| 3 || Fatal
 
|-
 
|-
| Other values || Unknown.
+
| 4 || Finished
 
|}
 
|}
   −
This is "nn::ns::LatestSystemUpdate". This is an u8.
+
= ApplicationApplyDeltaState =
 
+
This is "nn::ns::ApplicationApplyDeltaState". This is an u8.
= ReceiveApplicationProgress =
  −
This is "nn::ns::ReceiveApplicationProgress". This is a 0x10-byte struct.
  −
 
  −
= SendApplicationProgress =
  −
This is "nn::ns::SendApplicationProgress". This is a 0x10-byte struct.
  −
 
  −
= ApplicationRightsOnClient =
  −
This is a 0x20-byte struct.
  −
 
  −
[[qlaunch]] only uses +0x18/+0x19 in this struct.
      
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset
+
! Value
! Size
   
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
+
| 0 || Applying
 +
|-
 +
| 1 || Suspended
 +
|-
 +
| 2 || NotEnoughSpace
 
|-
 
|-
| 0x8 || 0x10 || [[Account_services#Uid|Uid]]
+
| 3 || Fatal
 
|-
 
|-
| 0x18 || 0x1 || Flags, [[qlaunch]] only uses bit0-bit4 and bit7.
+
| 4 || NoTask
 
|-
 
|-
| 0x19 || 0x1 || Flags, [[qlaunch]] only uses bit0.
+
| 5 || WaitApply
 
|-
 
|-
| 0x1A || 0x6 || Unknown
+
| 6 || Applied
 
|}
 
|}
   −
= DownloadTaskStatus =
+
= ApplicationView =
This is "nn::ns::DownloadTaskStatus". This is a 0x20-byte struct.
+
This is "nn::ns::ApplicationView". This is a 0x50-byte struct.
 
+
 
= ApplicationLaunchInfo =
  −
This is a 0x40-byte struct.
  −
 
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 3,582: Line 3,896:  
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 
|-
 
|-
| 0x8 || 0x4 || Application version
+
| 0x8 || 0x4 || ?
 
|-
 
|-
| 0xC || 0x4 || [[Process_Manager_services#LaunchFlags|LaunchFlags]], set to hard-coded value 0xB by [[#GetApplicationLaunchInfo]].
+
| 0xC || 0x4 || Flags
 
|-
 
|-
| 0x10 || 0x1 || Application [[NCM_services#StorageId|StorageId]]
+
| 0x10 || 0x40 || ?
|-
  −
| 0x11 || 0x1 || Update [[NCM_services#StorageId|StorageId]]
  −
|-
  −
| 0x12 || 0x2E ||  
   
|}
 
|}
   −
= UserData =
+
= ApplicationViewWithPromotionInfo =
 +
This is a 0x70-byte struct.
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset || Size || Description
+
! Offset
 +
! Size
 +
! Description
 
|-
 
|-
| 0x0 || 0x4? || ?
+
| 0x0 || 0x50 || [[#ApplicationView]]
 
|-
 
|-
| 0x4 || 0x4? || Icon ID. 0 = Mii, the rest are character icon IDs.
+
| 0x50 || 0x20 || [[#PromotionInfo]]
|-
  −
| 0x8 || 0x1? || Profile icon background color ID
  −
|-
  −
| 0x9 || 0x7 || ?
  −
|-
  −
| 0x10 || 0x10 || Some ID related to the Mii? All zeros when a character icon is used.
  −
|-
  −
| 0x20 || 0x60 || Usually zeros?
   
|}
 
|}
   −
This is a 0x80-byte struct.
+
= PromotionInfo =
 +
This is a 0x20-byte struct.
   −
= ProfileBase =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset || Size || Description
+
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || PosixTime start_timestamp.
 +
|-
 +
| 0x8 || 0x8 || PosixTime end_timestamp.
 +
|-
 +
| 0x10 || 0x8 || Remaining time until the promotion ends, in nanoseconds ({end_timestamp - current_time} converted to nanoseconds).
 +
|-
 +
| 0x18 || 0x4 || Not set, left at zero.
 +
|-
 +
| 0x1C || 0x1 || Flags. Bit0: whether the PromotionInfo is valid (including bit1). Bit1 clear: u64 +0x10 is set.
 
|-
 
|-
| 0x0 || 0x10 || userID
+
| 0x1D || 0x3 || Padding
 +
|}
 +
 
 +
= ApplicationResourceType =
 +
This is "nn::ns::ApplicationResourceType". This is an u8.
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 0x10 || 0x8 || POSIX UTC timestamp, for last account edit.
+
! Value
 +
! Description
 
|-
 
|-
| 0x18 || 0x20 || UTF-8 Nickname. Official sw uses strncpy to copy this into another struct (<code>nn::account::Nickname</code>), with a NUL-byte written after the copied data.
+
| 0 || ApplicationResource
 
|-
 
|-
 +
| 1 || MicroApplicationResource
 
|}
 
|}
   −
This is a 0x38-byte struct.
+
= ApplicationErrorCodeCategory =
 +
This is "nn::ns::ApplicationErrorCodeCategory". This is an u64.
 +
 
 +
= NoDownloadRightsErrorResolution =
 +
This is "nn::ns::NoDownloadRightsErrorResolution".
 +
 
 +
= BackgroundNetworkUpdateState =
 +
This is "nn::ns::BackgroundNetworkUpdateState". This is an u8.
   −
= Uid =
+
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || None
 +
|-
 +
| 1 || InProgress
 +
|-
 +
| 2 || Ready
 +
|}
 +
 
 +
Similar to [[#HasDownloaded]], [[#GetBackgroundNetworkUpdateState]] uses [[NIM_services|nim]] ListSystemUpdateTask and [[NIM_services|nim]] GetSystemUpdateTaskInfo. When ListSystemUpdateTask successfully returns a task and GetSystemUpdateTaskInfo is successful, the output value is set to: <code>1 + *((u8*)(taskinfo+0) == 0x3</code>. Otherwise, value=0.
 +
 
 +
[[#GetBackgroundNetworkUpdateState]] always returns Result 0, however this will assert if GetSystemUpdateTaskInfo fails with ret!=0x3C89.
 +
 
 +
= SystemUpdateProgress =
 +
This is "nn::ns::SystemUpdateProgress". This is a 0x10-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || Loaded (this value can be larger than total_size when the async operation is finishing and when total_size is <=0, this current_size field may contain a progress value for when the total_size is not yet determined)
 +
|-
 +
| 0x8 || 0x8 || Total (this field is only valid when >0)
 +
|}
 +
 
 +
Commands which have this as output will return 0 with the output cleared, when no task is available.
 +
 
 +
= EulaDataPath =
 +
This is "nn::ns::detail::EulaDataPath". This is a 0x100-byte struct.
 +
 
 +
This contains a file path.
 +
 
 +
= SystemDeliveryInfo =
 +
This is "nn::ns::SystemDeliveryInfo". This is a 0x100-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x4 || SystemDeliveryProtocolVersion. Must be <= to and match [[System_Settings|system-setting]] <code>contents_delivery!system_delivery_protocol_version</code>.
 +
|-
 +
| 0x4 || 0x4 || ApplicationDeliveryProtocolVersion. Loaded from [[System_Settings|system-setting]] <code>contents_delivery!application_delivery_protocol_version</code>. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
 +
|-
 +
| 0x8 || 0x1 || HasExFat. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
 +
|-
 +
| 0x9 || 0x3 || Reserved.
 +
|-
 +
| 0xC || 0x4 || SystemUpdateMetaVersion.
 +
|-
 +
| 0x10 || 0x8 || SystemUpdateMetaId.
 +
|-
 +
| 0x18 || 0x1 || FirmwareVariationId. Used by [[#RequestSendSystemUpdate]].
 +
|-
 +
| 0x19 || 0x1 || UpdatableFirmwareGroupId. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
 +
|-
 +
| 0x1A || 0x1 || PlatformRegion (0x00 = Unknown, 0x01 = Global, 0x02 = China).
 +
|-
 +
| 0x1B || 0xC5 || Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
 +
|-
 +
| 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes.
 +
|}
 +
 
 +
= ApplicationDeliveryInfo =
 +
This is "nn::ns::ApplicationDeliveryInfo". This is a 0x100-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || ?
 +
|-
 +
| 0x8 || 0x8 || ApplicationId.
 +
|-
 +
| 0x10 || 0x4 || ApplicationVersion.
 +
|-
 +
| 0x14 || 0x4 || ?
 +
|-
 +
| 0x18 || 0x4 || RequiredSystemVersion.
 +
|-
 +
| 0x1C || 0x4 || ?
 +
|-
 +
| 0x20 || 0xC0 || ?
 +
|-
 +
| 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes. Uses a different key than [[#SystemDeliveryInfo]].
 +
|}
 +
 
 +
= LatestSystemUpdate =
 +
This is "nn::ns::LatestSystemUpdate". This is an u8.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || UpToDate
 +
|-
 +
| 1 || Downloaded
 +
|-
 +
| 2 || NeedsDownload
 +
|}
 +
 
 +
= ReceiveApplicationProgress =
 +
This is "nn::ns::ReceiveApplicationProgress". This is a 0x10-byte struct.
 +
 
 +
= SendApplicationProgress =
 +
This is "nn::ns::SendApplicationProgress". This is a 0x10-byte struct.
 +
 
 +
= ApplicationRightsOnClient =
 +
This is a 0x20-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 +
|-
 +
| 0x8 || 0x10 || [[Account_services#Uid|Uid]]
 +
|-
 +
| 0x18 || 0x1 || Flags, [[qlaunch]] only uses bit0-bit4 and bit7.
 +
|-
 +
| 0x19 || 0x1 || Flags, [[qlaunch]] only uses bit0.
 +
|-
 +
| 0x1A || 0x6 || Unknown
 +
|}
 +
 
 +
[[qlaunch]] only uses +0x18/+0x19 in this struct.
 +
 
 +
= DownloadTaskStatus =
 +
This is "nn::ns::DownloadTaskStatus". This is a 0x20-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x10 || Uuid
 +
|-
 +
| 0x10 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 +
|-
 +
| 0x18 || 0x1 || [[#DownloadTaskStatusDetail|Detail]]
 +
|-
 +
| 0x19 || 0x1 || NeedsCleanup
 +
|-
 +
| 0x1A || 0x2 || Reserved
 +
|-
 +
| 0x1C || 0x4 || Result
 +
|}
 +
 
 +
= DownloadTaskStatusDetail =
 +
This is "nn::ns::DownloadTaskStatusDetail". This is an u8.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || Created
 +
|-
 +
| 1 || Added
 +
|-
 +
| 2 || AlreadyExists
 +
|-
 +
| 3 || Failed
 +
|}
 +
 
 +
= ApplicationLaunchInfo =
 +
This is a 0x40-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 +
|-
 +
| 0x8 || 0x4 || Application version
 +
|-
 +
| 0xC || 0x4 || [[Process_Manager_services#LaunchFlags|LaunchFlags]], set to hard-coded value 0xB by [[#GetApplicationLaunchInfo]].
 +
|-
 +
| 0x10 || 0x1 || Application [[NCM_services#StorageId|StorageId]]
 +
|-
 +
| 0x11 || 0x1 || Update [[NCM_services#StorageId|StorageId]]
 +
|-
 +
| 0x12 || 0x2E ||
 +
|}
 +
 
 +
= UserData =
 +
This is a 0x80-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4? || ?
 +
|-
 +
| 0x4 || 0x4? || Icon ID. 0 = Mii, the rest are character icon IDs.
 +
|-
 +
| 0x8 || 0x1? || Profile icon background color ID
 +
|-
 +
| 0x9 || 0x7 || ?
 +
|-
 +
| 0x10 || 0x10 || Some ID related to the Mii? All zeros when a character icon is used.
 +
|-
 +
| 0x20 || 0x60 || Usually zeros?
 +
|}
 +
 
 +
= ProfileBase =
 +
This is a 0x38-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x10 || userID
 +
|-
 +
| 0x10 || 0x8 || POSIX UTC timestamp, for last account edit.
 +
|-
 +
| 0x18 || 0x20 || UTF-8 Nickname. Official sw uses strncpy to copy this into another struct (<code>nn::account::Nickname</code>), with a NUL-byte written after the copied data.
 +
|}
 +
 
 +
= Uid =
 
This is "nn::account::Uid". This is a 0x10-byte struct. This contains 2 u64s for the UserId.
 
This is "nn::account::Uid". This is a 0x10-byte struct. This contains 2 u64s for the UserId.
 +
 +
= Notes =
 +
[[Process_Manager_services|pm:bm]] GetBootMode is used to determine whether aoc:u is available (see above). This value is also passed to thread "nn.ns.DelayedInitialization", which calls various funcs depending on the BootMode in various cases.
 +
 +
The "nn.ns.DelayedInitialization" thread uses BootMode as follows (this also handles various other initialization):
 +
* Initializes [[NPNS_services|npns:s]] only for BootMode Normal/Maintenance.
 +
* Initializes the hosted acc:* services and service [[Account_services|acc:su]] only for BootMode Normal/Maintenance.
 +
* Calls a func only for BootMode Normal.
 +
* Initializes [[ETicket_services|es]] and [[Shared_Database_services|avm]] only for BootMode Normal/Maintenance.
 +
 +
The output of GetBootMode is also written into state. This same func later enters a code block when BootMode is Maintenance/SafeMode: various [[NCM_services|ncm]] cmds are used with input StorageId=BuiltInUser (VerifyContentMetaDatabase, VerifyContentStorage, ActivateContentMetaDatabase, ActivateContentStorage, InactivateContentMetaDatabase, InactivateContentStorage) and state fields are written. Then if the BootMode is Maintenance the savedata for [[Flash_Filesystem|ns_rightsid]] (0x800000000000004A) is deleted. Then 0 is returned. Otherwise for BootMode Normal it continues with various initialization, including gamecard handling which handles launching the gamecard title in certain conditions (this is the only time ns launches anything with pgl outside of service cmds).
 +
 +
In the above block, InactivateContentMetaDatabase/InactivateContentStorage are only used if using ActivateContentMetaDatabase/ActivateContentStorage failed (error is only checked after using both cmds). If any of the ncm cmds prior to this fail, it will skip using the rest of the ncm cmds.
    
[[Category:Services]]
 
[[Category:Services]]