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 = |