Changes

9,663 bytes added ,  22:27, 19 November 2024
Line 45: Line 45:  
|-
 
|-
 
| 200 || [13.1.0+] SetRequiredAddOnContentsOnContentsAvailabilityTransition
 
| 200 || [13.1.0+] SetRequiredAddOnContentsOnContentsAvailabilityTransition
 +
|-
 +
| 300 || [16.0.0+] SetupHostAddOnContent
 +
|-
 +
| 301 || [16.0.0+] GetRegisteredAddOnContentPath
 +
|-
 +
| 302 || [16.0.0+] UpdateCachedList
 
|}
 
|}
   Line 74: 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 99: 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 111: Line 119:  
| 2 || GetApplicationRecordUpdateSystemEvent
 
| 2 || GetApplicationRecordUpdateSystemEvent
 
|-
 
|-
| 3 || GetApplicationViewDeprecated
+
| 3 || GetApplicationView
 
|-
 
|-
 
| 4 || DeleteApplicationEntity
 
| 4 || DeleteApplicationEntity
Line 265: 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 307: 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 327: 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 652: 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 674: 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 734: 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 757: 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 766: Line 798:  
| 603 || GetOwnedApplicationContentMetaStatus
 
| 603 || GetOwnedApplicationContentMetaStatus
 
|-
 
|-
| 604 || RegisterContentsExternalKey
+
| 604 || [1.0.0-15.0.1] RegisterContentsExternalKey
 
|-
 
|-
 
| 605 || ListApplicationContentMetaStatusWithRightsCheck
 
| 605 || ListApplicationContentMetaStatusWithRightsCheck
Line 777: Line 809:  
|-
 
|-
 
| 610 || [14.0.0+] GetInstalledContentMetaStorage
 
| 610 || [14.0.0+] GetInstalledContentMetaStorage
 +
|-
 +
| 611 || [16.0.0+] PrepareAddOnContent
 
|-
 
|-
 
| 700 || PushDownloadTaskList
 
| 700 || PushDownloadTaskList
Line 900: 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 1,017: Line 1,051:  
|-
 
|-
 
| 2359 || [15.0.0+] IsMultiCoreDownloadEnabled
 
| 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,034: 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,042: Line 1,080:  
| 2516 || [10.0.0-14.1.2] 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,050: 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
 
| 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,085: Line 1,127:  
|-
 
|-
 
| 3014 || [11.0.0+] [[#IsLocalContentShareEnabled]]
 
| 3014 || [11.0.0+] [[#IsLocalContentShareEnabled]]
 +
|-
 +
| 3015 || [18.0.0+] GetNetworkUpdateRequiredByGameCardDetectionEvent
 
|-
 
|-
 
| 3050 || [14.0.0+] ListAssignELicenseTaskResult
 
| 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,121: 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,186: 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,194: 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,252: 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,387: Line 1,465:  
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.
   −
==== RequestDownloadApplicationPrepurchasedRights ====
+
==== ListLastNotificationInfo ====
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
+
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 ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
    
See [[#RequestApplicationUpdateInfo]] regarding nifm.
 
See [[#RequestApplicationUpdateInfo]] regarding nifm.
Line 1,564: 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,772: Line 1,870:  
|-
 
|-
 
| 92 || [5.0.0+] GetRunningApplicationProgramId
 
| 92 || [5.0.0+] GetRunningApplicationProgramId
 +
|-
 +
| 2524 || [19.0.0+]
 
|}
 
|}
   Line 1,860: Line 1,960:  
|-
 
|-
 
| 4 || [9.0.0+] SelectApplicationDesiredLanguage ||
 
| 4 || [9.0.0+] SelectApplicationDesiredLanguage ||
 +
|-
 +
| 5 || [19.0.0+] ||
 +
|-
 +
| 6 || [19.0.0+] ||
 
|}
 
|}
   Line 1,895: 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,918: Line 2,022:  
|-
 
|-
 
| 25 || [14.0.0+] RequestProceedDynamicRightsState
 
| 25 || [14.0.0+] RequestProceedDynamicRightsState
 +
|-
 +
| 26 || [18.0.0+] HasAccountRestrictedRightsInRunningApplications
 
|}
 
|}
   Line 2,123: 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,547: 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
 
| 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
 
|}
 
|}
   Line 2,593: 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,613: 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,655: 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,720: 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,730: 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,736: 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,802: 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,822: Line 3,001:  
|-
 
|-
 
| 15 || GetProfileImage ||
 
| 15 || GetProfileImage ||
 +
|-
 +
| 16 || [18.0.0+] GetProfileLargeImage ||
 
|-
 
|-
 
| 21 || LoadIdTokenCache ||
 
| 21 || LoadIdTokenCache ||
Line 2,888: Line 3,069:  
|-
 
|-
 
| 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 ||
 
|-
 
|-
 
| 200 || IsRegistered ||
 
| 200 || IsRegistered ||
Line 3,002: Line 3,191:  
|-
 
|-
 
| 103 || GetProfileImage ||
 
| 103 || GetProfileImage ||
 +
|-
 +
| 104 || [18.0.0+] GetProfileLargeImage ||
 
|}
 
|}
   Line 3,026: 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 3,052: Line 3,245:  
|-
 
|-
 
| 11 || [[#LoadImage]]
 
| 11 || [[#LoadImage]]
 +
|-
 +
| 20 || [18.0.0+] GetLargeImageSize
 +
|-
 +
| 21 || [18.0.0+] LoadLargeImage
 +
|-
 +
| 30 || [18.0.0+] GetImageId
 
|}
 
|}
   Line 3,082: 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,147: 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,206: Line 3,415:  
|-
 
|-
 
| 15 || GetProfileImage
 
| 15 || GetProfileImage
 +
|-
 +
| 16 || [18.0.0+] GetProfileLargeImage
 
|-
 
|-
 
| 21 || [3.0.0+] LoadIdTokenCache
 
| 21 || [3.0.0+] LoadIdTokenCache
Line 3,301: 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,346: 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,382: 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,392: Line 3,623:     
= ApplicationUpdateInfo =
 
= ApplicationUpdateInfo =
This is "nn::ns::ApplicationUpdateInfo".
+
This is "nn::ns::ApplicationUpdateInfo". This is an u8.
   −
This is an u8. [[qlaunch]] just checks whether this is 0.
+
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || UpToDate
 +
|-
 +
| 1 || Updatable
 +
|}
 +
 
 +
[[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,413: 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,441: Line 3,678:  
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
+
| 0x0 || 0x8 || StartedAt
 
|-
 
|-
| 0x8 || 0x4 || ?
+
| 0x8 || 0x4 || Count
 
|-
 
|-
| 0xC || 0x4 || Flags
+
| 0xC || 0x4 || Reserved
 
|-
 
|-
| 0x10 || 0x40 || ?
+
| 0x10 || 0x8 || SizeInBytes
 +
|-
 +
| 0x18 || 0x1 || IsSystem
 +
|-
 +
| 0x19 || 0x7 || Reserved
 +
|-
 +
| 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,459: Line 3,702:  
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x50 || [[#ApplicationView]]
+
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 +
|-
 +
| 0x8 || 0x4 || Version
 +
|-
 +
| 0xC || 0x4 || [[#ApplicationViewFlag|Flag]]
 +
|-
 +
| 0x10 || 0x18 || [[#ApplicationDownloadProgress|Progress]]
 
|-
 
|-
| 0x50 || 0x20 || [[#PromotionInfo]]
+
| 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,473: Line 3,721:  
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x8 || PosixTime start_timestamp.
+
| 0x0 || 0x20 || Same as [[#ApplicationView]] +0x0.
 +
|-
 +
| 0x20 || 0x4 || Same as [[#ApplicationView]] +0x20.
 +
|-
 +
| 0x24 || 0x2 || Same as [[#ApplicationView]] +0x24.
 +
|-
 +
| 0x26 || 0x2 || Cleared to 0.
 
|-
 
|-
| 0x8 || 0x8 || PosixTime end_timestamp.
+
| 0x28 || 0x10 || Same as [[#ApplicationView]] +0x30.
 
|-
 
|-
| 0x10 || 0x8 || Remaining time until the promotion ends, in nanoseconds ({end_timestamp - current_time} converted to nanoseconds).
+
| 0x38 || 0x4 || Same as [[#ApplicationView]] +0x40.
 
|-
 
|-
| 0x18 || 0x4 || Not set, left at zero.
+
| 0x3C || 0x1 || Same as [[#ApplicationView]] +0x44.
 
|-
 
|-
| 0x1C || 0x1 || Flags. Bit0: whether the PromotionInfo is valid (including bit1). Bit1 clear: u64 +0x10 is set.
+
| 0x3D || 0x2 || Cleared to 0.
 
|-
 
|-
| 0x1D || 0x3 || Padding
+
| 0x3F || 0x1 || Cleared to 0.
 
|}
 
|}
   −
= NoDownloadRightsErrorResolution =
+
= ApplicationViewFlag =
This is "nn::ns::NoDownloadRightsErrorResolution".
+
This is "nn::ns::ApplicationViewFlag". This is a 32-bit flag.
   −
= BackgroundNetworkUpdateState =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Value
+
! Bit
! Description
+
! Description
 
|-
 
|-
| 0 || No sysupdate task exists.
+
| 0
 +
|  
 
|-
 
|-
| 1 || Sysupdate download in progress.
+
| 1
 +
|  
 
|-
 
|-
| 2 || Sysupdate ready, pending install.
+
| 2
 +
|  
 +
|-
 +
| 3
 +
|
 +
|-
 +
| 4
 +
|
 +
|-
 +
| 5
 +
|
 +
|-
 +
| 6
 +
|
 +
|-
 +
| 7
 +
|
 +
|-
 +
| 8
 +
|
 +
|-
 +
| 9
 +
|
 +
|-
 +
| 10
 +
|
 +
|-
 +
| 11
 +
|
 +
|-
 +
| 12
 +
|
 +
|-
 +
| 13
 +
|
 +
|-
 +
| 14
 +
|
 +
|-
 +
| 15
 +
|
 +
|-
 +
| 16
 +
|
 +
|-
 +
| 17
 +
|  
 
|}
 
|}
   −
This is "nn::ns::BackgroundNetworkUpdateState". This is an u8.
+
= ApplicationDownloadProgress =
 
+
This is "nn::ns::ApplicationDownloadProgress". This is a 0x18-byte struct.
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"
 
|-
 
|-
Line 3,515: Line 3,812:  
! 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.
+
| 0x0 || 0x8 || Downloaded
 +
|-
 +
| 0x8 || 0x8 || Total
 
|-
 
|-
| 0x8 || 0x8 || s64 Total size, this field is only valid when >0.
+
| 0x10 || 0x4 || LastResult
 +
|-
 +
| 0x14 || 0x1 || [[#ApplicationDownloadState|State]]
 +
|-
 +
| 0x15 || 0x3 || Reserved
 
|}
 
|}
   −
This is "nn::ns::SystemUpdateProgress". This is a 0x10-byte struct.
+
= ApplicationApplyDeltaProgress =
 
+
This is "nn::ns::ApplicationApplyDeltaProgress". This is a 0x18-byte struct.
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 =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 3,536: Line 3,832:  
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x4 || SystemDeliveryProtocolVersion. Must be <= to and match [[System_Settings|system-setting]] <code>contents_delivery!system_delivery_protocol_version</code>.
+
| 0x0 || 0x8 || Applied
|-
  −
| 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.
+
| 0x8 || 0x8 || Total
 
|-
 
|-
| 0x9 || 0x3 || Reserved.
+
| 0x10 || 0x4 || LastResult
 
|-
 
|-
| 0xC || 0x4 || SystemUpdateMetaVersion.
+
| 0x14 || 0x1 || [[#ApplicationApplyDeltaState|State]]
 
|-
 
|-
| 0x10 || 0x8 || SystemUpdateMetaId.
+
| 0x15 || 0x3 || Reserved
 +
|}
 +
 
 +
= ApplicationDownloadState =
 +
This is "nn::ns::ApplicationDownloadState". This is an u8.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 
|-
 
|-
| 0x18 || 0x1 || FirmwareVariationId. Used by [[#RequestSendSystemUpdate]].
+
| 0 || Runnable
 
|-
 
|-
| 0x19 || 0x1 || UpdatableFirmwareGroupId. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
+
| 1 || Suspended
 
|-
 
|-
| 0x1A || 0x1 || PlatformRegion (0x00 = Unknown, 0x01 = Global, 0x02 = China).
+
| 2 || NotEnoughSpace
 
|-
 
|-
| 0x1B || 0xC5 || Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
+
| 3 || Fatal
 
|-
 
|-
| 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes.
+
| 4 || Finished
 
|}
 
|}
   −
This is "nn::ns::SystemDeliveryInfo". This is a 0x100-byte struct.
+
= ApplicationApplyDeltaState =
 +
This is "nn::ns::ApplicationApplyDeltaState". This is an u8.
   −
= ApplicationDeliveryInfo =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset
+
! Value
! Size
   
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x8 || ?
+
| 0 || Applying
 
|-
 
|-
| 0x8 || 0x8 || ApplicationId.
+
| 1 || Suspended
|-
  −
| 0x10 || 0x4 || ApplicationVersion.
   
|-
 
|-
| 0x14 || 0x4 || ?
+
| 2 || NotEnoughSpace
 
|-
 
|-
| 0x18 || 0x4 || RequiredSystemVersion.
+
| 3 || Fatal
 
|-
 
|-
| 0x1C || 0x4 || ?
+
| 4 || NoTask
 
|-
 
|-
| 0x20 || 0xC0 || ?
+
| 5 || WaitApply
 
|-
 
|-
| 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes. Uses a different key than [[#SystemDeliveryInfo]].
+
| 6 || Applied
 
|}
 
|}
   −
This is "nn::ns::ApplicationDeliveryInfo". This is a 0x100-byte struct.
+
= ApplicationView =
 +
This is "nn::ns::ApplicationView". This is a 0x50-byte struct.
   −
= LatestSystemUpdate =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Value
+
! Offset
! Description
+
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 
|-
 
|-
| 1 || Unknown.
+
| 0x8 || 0x4 || ?
 
|-
 
|-
| 2 || Unknown.
+
| 0xC || 0x4 || Flags
 
|-
 
|-
| Other values || Unknown.
+
| 0x10 || 0x40 || ?
 
|}
 
|}
   −
This is "nn::ns::LatestSystemUpdate". This is an u8.
+
= ApplicationViewWithPromotionInfo =
 +
This is a 0x70-byte struct.
   −
= ReceiveApplicationProgress =
+
{| class="wikitable" border="1"
This is "nn::ns::ReceiveApplicationProgress". This is a 0x10-byte struct.
+
|-
 
+
! Offset
= SendApplicationProgress =
+
! Size
This is "nn::ns::SendApplicationProgress". This is a 0x10-byte struct.
+
! Description
 
+
|-
= ApplicationRightsOnClient =
+
| 0x0 || 0x50 || [[#ApplicationView]]
This is a 0x20-byte struct.
+
|-
 
+
| 0x50 || 0x20 || [[#PromotionInfo]]
[[qlaunch]] only uses +0x18/+0x19 in this struct.
+
|}
 
+
 
{| class="wikitable" border="1"
+
= PromotionInfo =
|-
+
This is a 0x20-byte struct.
! Offset
+
 
! Size
+
{| class="wikitable" border="1"
! Description
+
|-
|-
+
! Offset
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
+
! Size
|-
+
! Description
| 0x8 || 0x10 || [[Account_services#Uid|Uid]]
+
|-
|-
+
| 0x0 || 0x8 || PosixTime start_timestamp.
| 0x18 || 0x1 || Flags, [[qlaunch]] only uses bit0-bit4 and bit7.
+
|-
|-
+
| 0x8 || 0x8 || PosixTime end_timestamp.
| 0x19 || 0x1 || Flags, [[qlaunch]] only uses bit0.
+
|-
|-
+
| 0x10 || 0x8 || Remaining time until the promotion ends, in nanoseconds ({end_timestamp - current_time} converted to nanoseconds).
| 0x1A || 0x6 || Unknown
+
|-
|}
+
| 0x18 || 0x4 || Not set, left at zero.
 
+
|-
= DownloadTaskStatus =
+
| 0x1C || 0x1 || Flags. Bit0: whether the PromotionInfo is valid (including bit1). Bit1 clear: u64 +0x10 is set.
This is "nn::ns::DownloadTaskStatus". This is a 0x20-byte struct.
+
|-
 
+
| 0x1D || 0x3 || Padding
= ApplicationLaunchInfo =
+
|}
This is a 0x40-byte struct.
+
 
 
+
= ApplicationResourceType =
{| class="wikitable" border="1"
+
This is "nn::ns::ApplicationResourceType". This is an u8.
|-
+
 
! Offset
+
{| class="wikitable" border="1"
! Size
+
|-
! Description
+
! Value
 +
! Description
 +
|-
 +
| 0 || ApplicationResource
 +
|-
 +
| 1 || MicroApplicationResource
 +
|}
 +
 
 +
= 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.
 +
 
 +
{| 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]]
 
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
Line 3,656: Line 4,161:     
= UserData =
 
= UserData =
 +
This is a 0x80-byte struct.
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 3,673: Line 4,180:  
|}
 
|}
   −
This is a 0x80-byte struct.
+
= ProfileBase =
 +
This is a 0x38-byte struct.
   −
= ProfileBase =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 3,685: Line 4,192:  
|-
 
|-
 
| 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.
 
| 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.
|-
   
|}
 
|}
  −
This is a 0x38-byte struct.
      
= Uid =
 
= Uid =