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,242: |
Line 1,317: |
| No input, returns an output u64. | | No input, returns an output u64. |
| | | |
− | A state flag must be zero, otherwise an error is thrown. The ProgramId is loaded from [[System_Settings|system-setting]] <code>ns.applet!overlay_applet_id</code>. | + | A state flag must be non-zero, otherwise an error is thrown. The ProgramId is loaded from [[System_Settings|system-setting]] <code>ns.applet!overlay_applet_id</code>. |
| | | |
| The OverlayApplet is launched with StorageId=BuiltInSystem via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0). [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success. | | The OverlayApplet is launched with StorageId=BuiltInSystem via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0). [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success. |
Line 1,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 = |
Line 3,702: |
Line 4,206: |
| * Initializes [[ETicket_services|es]] and [[Shared_Database_services|avm]] only for BootMode Normal/Maintenance. | | * Initializes [[ETicket_services|es]] and [[Shared_Database_services|avm]] only for BootMode Normal/Maintenance. |
| | | |
− | The output of GetBootMode is also written into state. This same func later enters a code block when BootMode is Maintenance/SafeMode: various [[NCM_services|ncm]] cmds are used with input StorageId=BuiltInUser (VerifyContentMetaDatabase, VerifyContentStorage, ActivateContentMetaDatabase, ActivateContentStorage, InactivateContentMetaDatabase, InactivateContentStorage) and state fields are written. Then if the BootMode is Maintenance the savedata for [[Flash_Filesystem|ns_rightsid]] (0x800000000000004A) is deleted. Then 0 is returned. | + | The output of GetBootMode is also written into state. This same func later enters a code block when BootMode is Maintenance/SafeMode: various [[NCM_services|ncm]] cmds are used with input StorageId=BuiltInUser (VerifyContentMetaDatabase, VerifyContentStorage, ActivateContentMetaDatabase, ActivateContentStorage, InactivateContentMetaDatabase, InactivateContentStorage) and state fields are written. Then if the BootMode is Maintenance the savedata for [[Flash_Filesystem|ns_rightsid]] (0x800000000000004A) is deleted. Then 0 is returned. Otherwise for BootMode Normal it continues with various initialization, including gamecard handling which handles launching the gamecard title in certain conditions (this is the only time ns launches anything with pgl outside of service cmds). |
| | | |
| In the above block, InactivateContentMetaDatabase/InactivateContentStorage are only used if using ActivateContentMetaDatabase/ActivateContentStorage failed (error is only checked after using both cmds). If any of the ncm cmds prior to this fail, it will skip using the rest of the ncm cmds. | | In the above block, InactivateContentMetaDatabase/InactivateContentStorage are only used if using ActivateContentMetaDatabase/ActivateContentStorage failed (error is only checked after using both cmds). If any of the ncm cmds prior to this fail, it will skip using the rest of the ncm cmds. |
| | | |
| [[Category:Services]] | | [[Category:Services]] |