Changes

9,482 bytes added ,  23:37, 30 April 2023
m
Line 1: Line 1:  
= aoc:u =
 
= aoc:u =
 
This is "nn::aocsrv::detail::IAddOnContentManager".
 
This is "nn::aocsrv::detail::IAddOnContentManager".
 +
 +
This is only available when [[Process_Manager_services|pm:bm]] GetBootMode returns output 0 (Normal).
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 27: Line 29:  
|-
 
|-
 
| 10 || [11.0.0+] GetAddOnContentListChangedEventWithProcessId
 
| 10 || [11.0.0+] GetAddOnContentListChangedEventWithProcessId
 +
|-
 +
| 11 || [13.0.0+] NotifyMountAddOnContent
 +
|-
 +
| 12 || [13.0.0+] NotifyUnmountAddOnContent
 +
|-
 +
| 13 || [13.0.0+] IsAddOnContentMountedForDebug
 +
|-
 +
| 50 || [13.0.0+] CheckAddOnContentMountStatus
 
|-
 
|-
 
| 100 || [7.0.0+] [[#IPurchaseEventManager|CreateEcPurchasedEventManager]]
 
| 100 || [7.0.0+] [[#IPurchaseEventManager|CreateEcPurchasedEventManager]]
Line 33: Line 43:  
|-
 
|-
 
| 110 || [12.0.0+] [[#IContentsServiceManager|CreateContentsServiceManager]]
 
| 110 || [12.0.0+] [[#IContentsServiceManager|CreateContentsServiceManager]]
 +
|-
 +
| 200 || [13.1.0+] SetRequiredAddOnContentsOnContentsAvailabilityTransition
 +
|-
 +
| 300 || [16.0.0+] SetupHostAddOnContent
 +
|-
 +
| 301 || [16.0.0+] GetRegisteredAddOnContentPath
 +
|-
 +
| 302 || [16.0.0+] UpdateCachedList
 
|}
 
|}
   Line 62: 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 463: Line 483:  
|}
 
|}
   −
= ns:am2, ns:ec, ns:rid, ns:rt, ns:web, ns:ro =
+
= ns:am2, ns:ec, ns:rid, ns:rt, ns:web, ns:ro, ns:sweb =
These services are all, at the top level, "nn::ns::detail::IServiceGetterInterface". These commands check a state field for a command-specific bit and returns an error if not set, this is likely a permissions check for service+command.
+
These are "nn::ns::detail::IServiceGetterInterface".
 +
 
 +
These commands check a state field for a command-specific bit and returns an error if not set, this is likely a permissions check for service+command.
    
[11.0.0+] ns:ro was added.
 
[11.0.0+] ns:ro was added.
 +
 +
[15.0.0+] ns:sweb was added.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 644: Line 668:  
| 87 || [4.0.0+] IsApplicationCrashReportEnabled
 
| 87 || [4.0.0+] IsApplicationCrashReportEnabled
 
|-
 
|-
| 90 || [4.0.0-8.1.0] BoostSystemMemoryResourceLimit
+
| 90 || [15.0.0+] BoostSystemMemoryResourceLimit ([4.0.0-8.1.0] BoostSystemMemoryResourceLimit)
 
|-
 
|-
 
| 91 || [5.0.0+] DeprecatedLaunchApplication
 
| 91 || [5.0.0+] DeprecatedLaunchApplication
Line 750: Line 774:  
| 603 || GetOwnedApplicationContentMetaStatus
 
| 603 || GetOwnedApplicationContentMetaStatus
 
|-
 
|-
| 604 || RegisterContentsExternalKey
+
| 604 || [1.0.0-15.0.1] RegisterContentsExternalKey
 
|-
 
|-
 
| 605 || ListApplicationContentMetaStatusWithRightsCheck
 
| 605 || ListApplicationContentMetaStatusWithRightsCheck
Line 757: Line 781:  
|-
 
|-
 
| 607 || [6.0.0+] [[#ListAvailableAddOnContent]]
 
| 607 || [6.0.0+] [[#ListAvailableAddOnContent]]
 +
|-
 +
| 609 || [13.0.0+] ListAvailabilityAssuredAddOnContent
 +
|-
 +
| 610 || [14.0.0+] GetInstalledContentMetaStorage
 +
|-
 +
| 611 || [16.0.0+] PrepareAddOnContent
 
|-
 
|-
 
| 700 || PushDownloadTaskList
 
| 700 || PushDownloadTaskList
Line 794: Line 824:  
| 908 || ListApplicationRecordInstalledContentMeta
 
| 908 || ListApplicationRecordInstalledContentMeta
 
|-
 
|-
| 909 || [3.0.0+] WithdrawCleanupAddOnContentsWithNoRightsRecommendation
+
| 909 || [3.0.0-14.1.2] WithdrawCleanupAddOnContentsWithNoRightsRecommendation
 
|-
 
|-
 
| 910 || [5.0.0+] HasApplicationRecord
 
| 910 || [5.0.0+] HasApplicationRecord
Line 836: Line 866:  
| 1309 || [6.0.0+] [[#CleanupUnavailableAddOnContents]]
 
| 1309 || [6.0.0+] [[#CleanupUnavailableAddOnContents]]
 
|-
 
|-
| 1310 || [10.0.0+] RequestMoveApplicationEntity
+
| 1310 || [10.0.0+] [[#RequestMoveApplicationEntity]]
 
|-
 
|-
| 1311 || [10.0.0+] EstimateSizeToMove
+
| 1311 || [10.0.0+] [[#EstimateSizeToMove]]
 
|-
 
|-
 
| 1312 || [10.0.0+] HasMovableEntity
 
| 1312 || [10.0.0+] HasMovableEntity
Line 884: Line 914:  
| 1803 || [3.0.0+] ListNotificationTask
 
| 1803 || [3.0.0+] ListNotificationTask
 
|-
 
|-
| 1900 || [3.0.0+] IsActiveAccount
+
| 1900 || [3.0.0-12.1.0] IsActiveAccount
 
|-
 
|-
 
| 1901 || [4.0.0+] [[#RequestDownloadApplicationPrepurchasedRights]]
 
| 1901 || [4.0.0+] [[#RequestDownloadApplicationPrepurchasedRights]]
 
|-
 
|-
 
| 1902 || [5.0.0+] GetApplicationTicketInfo
 
| 1902 || [5.0.0+] GetApplicationTicketInfo
 +
|-
 +
| 1903 || [13.1.0+] RequestDownloadApplicationPrepurchasedRightsForAccount
 
|-
 
|-
 
| 2000 || [4.0.0+] [[#GetSystemDeliveryInfo]]
 
| 2000 || [4.0.0+] [[#GetSystemDeliveryInfo]]
Line 948: Line 980:  
| 2155 || [7.0.0+] UpdateRightsEnvironmentStatus
 
| 2155 || [7.0.0+] UpdateRightsEnvironmentStatus
 
|-
 
|-
| 2156 || [10.0.0+] CreateRightsEnvironmentForMicroApplication ([9.0.0-9.2.0] CreateRightsEnvironmentForPreomia)
+
| 2156 || [10.0.0-12.1.0] CreateRightsEnvironmentForMicroApplication ([9.0.0-9.2.0] CreateRightsEnvironmentForPreomia)
 
|-
 
|-
 
| 2160 || [6.0.0+] AddTargetApplicationToRightsEnvironment
 
| 2160 || [6.0.0+] AddTargetApplicationToRightsEnvironment
Line 989: Line 1,021:  
|-
 
|-
 
| 2356 || [12.0.0+] RequestStorageEfficientUpdatePreferable
 
| 2356 || [12.0.0+] RequestStorageEfficientUpdatePreferable
 +
|-
 +
| 2357 || [15.0.0+] EnableMultiCoreDownload
 +
|-
 +
| 2358 || [15.0.0+] DisableMultiCoreDownload
 +
|-
 +
| 2359 || [15.0.0+] IsMultiCoreDownloadEnabled
 
|-
 
|-
 
| 2400 || [8.0.0+] [[#GetPromotionInfo]]
 
| 2400 || [8.0.0+] [[#GetPromotionInfo]]
Line 1,012: Line 1,050:  
| 2515 || [10.0.0+] CleanupAllPlaceHolderAndFragmentsIfNoTask
 
| 2515 || [10.0.0+] CleanupAllPlaceHolderAndFragmentsIfNoTask
 
|-
 
|-
| 2516 || [10.0.0+] EnsureApplicationCertificate
+
| 2516 || [10.0.0-14.1.2] EnsureApplicationCertificate
 +
|-
 +
| 2517 || [13.0.0+] CreateApplicationInstance
 +
|-
 +
| 2518 || [13.0.0+] UpdateQualificationForDebug
 +
|-
 +
| 2519 || [13.0.0+] IsQualificationTransitionSupported
 +
|-
 +
| 2520 || [13.0.0+] IsQualificationTransitionSupportedByProcessId
 +
|-
 +
| 2521 || [13.0.0+] GetRightsUserChangedEvent
 +
|-
 +
| 2522 || [14.0.0+] IsRomRedirectionAvailable
 
|-
 
|-
 
| 2800 || [9.0.0+] GetApplicationIdOfPreomia
 
| 2800 || [9.0.0+] GetApplicationIdOfPreomia
Line 1,045: Line 1,095:  
|-
 
|-
 
| 3014 || [11.0.0+] [[#IsLocalContentShareEnabled]]
 
| 3014 || [11.0.0+] [[#IsLocalContentShareEnabled]]
 +
|-
 +
| 3050 || [14.0.0+] ListAssignELicenseTaskResult
 
|-
 
|-
 
| 9999 || [10.0.0-10.2.0] GetApplicationCertificate
 
| 9999 || [10.0.0-10.2.0] GetApplicationCertificate
Line 1,079: Line 1,131:  
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,191: Line 1,243:  
No input, returns an output u64.
 
No input, returns an output u64.
   −
A state flag must be zero, otherwise an error is thrown. When a state field is value 1, a hard-coded ProgramId for MaintenanceMenu is used. Otherwise, the ProgramId is loaded from [[System_Settings|system-setting]] <code>ns.applet!system_applet_id</code>.
+
A state flag must be non-zero, otherwise an error is thrown. When a state field is value 1, a hard-coded ProgramId for MaintenanceMenu is used. Otherwise, the ProgramId is loaded from [[System_Settings|system-setting]] <code>ns.applet!system_applet_id</code>.
    
The SystemApplet is launched with StorageId=BuiltInSystem via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0). [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success.
 
The SystemApplet is launched with StorageId=BuiltInSystem via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0). [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success.
Line 1,200: Line 1,252:  
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,274: Line 1,326:  
==== ListAvailableAddOnContent ====
 
==== ListAvailableAddOnContent ====
 
[10.0.0+] This now takes a total of 0x10-bytes of input instead of a total of 0x18-bytes of input.
 
[10.0.0+] This now takes a total of 0x10-bytes of input instead of a total of 0x18-bytes of input.
 +
 +
[15.0.0+] This now takes a total of 0x8-bytes of input instead of a total of 0x10-bytes of input.
    
==== RequestDownloadTaskListData ====
 
==== RequestDownloadTaskListData ====
Line 1,309: Line 1,363:  
==== CleanupUnavailableAddOnContents ====
 
==== CleanupUnavailableAddOnContents ====
 
Takes an input u64 [[NCM_services#ApplicationId|ApplicationId]], an [[Account_services#Uid|Uid]], no output.
 
Takes an input u64 [[NCM_services#ApplicationId|ApplicationId]], an [[Account_services#Uid|Uid]], no output.
 +
 +
==== RequestMoveApplicationEntity ====
 +
Takes an input TransferMemory handle, a type-0x5 input buffer containing an array of [[NCM_services#StorageId|StorageId]], a [[NCM_services#StorageId|StorageId]], an u32 bitfield of "nn::ns::KeepApplicationEntityFlagTag", an [[NCM_services#ApplicationId|ApplicationId]], an u64 tmem_size, returns an output Event handle and an [[#IProgressAsyncResult]].
 +
 +
The TransferMemory uses permissions=0.
 +
 +
==== EstimateSizeToMove ====
 +
Takes a type-0x5 input buffer containing an array of [[NCM_services#StorageId|StorageId]], a [[NCM_services#StorageId|StorageId]], an u32 bitfield of "nn::ns::KeepApplicationEntityFlagTag", an [[NCM_services#ApplicationId|ApplicationId]], returns an output s64.
 +
 +
This calls a func also used by [[#RequestMoveApplicationEntity]], then calls another func.
    
==== FormatSdCard ====
 
==== FormatSdCard ====
Line 1,510: Line 1,574:     
==== 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]].
    
==== RegisterDeviceLockKey ====
 
==== RegisterDeviceLockKey ====
Line 1,841: Line 1,905:  
| 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]]
|}
+
|-
 
+
| 16 || [13.0.0+] QualifyUser
==== RequestApplicationRightsOnServer ====
+
|-
Takes an input [[NCM_services#ApplicationId|ApplicationId]], an [[Account_services#Uid|Uid]] and an u32. Returns an output Event handle and an [[#IAsyncValue]].
+
| 17 || [13.0.0+] QualifyUserWithProcessId
 +
|-
 +
| 18 || [13.0.0+] NotifyApplicationRightsCheckStart
 +
|-
 +
| 19 || [13.0.0+] UpdateUserList
 +
|-
 +
| 20 || [13.0.0+] IsRightsLostUser
 +
|-
 +
| 21 || [13.1.0+] SetRequiredAddOnContentsOnContentsAvailabilityTransition
 +
|-
 +
| 22 || [14.0.0+] GetLimitedApplicationLicense
 +
|-
 +
| 23 || [14.0.0+] GetLimitedApplicationLicenseUpgradableEvent
 +
|-
 +
| 24 || [14.0.0+] NotifyLimitedApplicationLicenseUpgradableEventForDebug
 +
|-
 +
| 25 || [14.0.0+] RequestProceedDynamicRightsState
 +
|}
 +
 
 +
==== RequestApplicationRightsOnServer ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], an [[Account_services#Uid|Uid]] and an u32. Returns an output Event handle and an [[#IAsyncValue]].
    
==== RequestAssignRights ====
 
==== RequestAssignRights ====
Line 1,925: Line 2,009:  
|-
 
|-
 
| 6 || [9.0.0+] [[#RequestSyncRightsBasedOnAssignedELicenses]]
 
| 6 || [9.0.0+] [[#RequestSyncRightsBasedOnAssignedELicenses]]
 +
|-
 +
| 7 || [14.0.0+] RequestOnlineSubscriptionFreeTrialAvailability
 
|}
 
|}
   Line 1,992: Line 2,078:     
==== RequestResetToFactorySettingsSecurely ====
 
==== RequestResetToFactorySettingsSecurely ====
Takes a total of 8-bytes of input, a handle, returns an output [[#IAsyncValueAndProgress]] and a handle.
+
Takes an input u64 tmem_size, a TransferMemory handle, returns an output [[#IAsyncValueAndProgress]] and an Event handle.
 +
 
 +
The TransferMemory uses permissions=0.
    
==== RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely ====
 
==== RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely ====
Takes a total of 0x10-bytes of input, a handle, returns an output [[#IAsyncValueAndProgress]] and a handle.
+
Takes an input u32 "nn::ae::PlatformRegion", an u64 tmem_size, a TransferMemory handle, returns an output [[#IAsyncValueAndProgress]] and an Event handle.
 +
 
 +
The TransferMemory uses permissions=0.
    
===== IAsyncValueAndProgress =====
 
===== IAsyncValueAndProgress =====
Line 2,183: Line 2,273:     
== ISystemUpdateControl ==
 
== ISystemUpdateControl ==
 +
This is "nn::ns::detail::ISystemUpdateControl".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 2,488: Line 2,580:  
|-
 
|-
 
| 19 || [12.0.0+] GetLaunchResult
 
| 19 || [12.0.0+] GetLaunchResult
 +
|-
 +
| 20 || [14.0.0+] GetProgramId
 
|}
 
|}
   Line 2,548: Line 2,642:     
[13.0.0+] This was moved from [[Account_services|account]].
 
[13.0.0+] This was moved from [[Account_services|account]].
 +
 +
This is only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is Normal/Maintenance.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 2,650: Line 2,746:  
|-
 
|-
 
| 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,716: Line 2,814:  
|-
 
|-
 
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
 
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
 +
|-
 +
| 160 || [15.0.0+] RequiresUpdateNetworkServiceAccountIdTokenCache ||
 +
|-
 +
| 161 || [16.0.0+] RequireReauthenticationOfNetworkServiceAccount ||
 
|}
 
|}
   Line 2,802: Line 2,904:  
|-
 
|-
 
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
 
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
 +
|-
 +
| 160 || [15.0.0+] RequiresUpdateNetworkServiceAccountIdTokenCache ||
 +
|-
 +
| 161 || [16.0.0+] RequireReauthenticationOfNetworkServiceAccount ||
 
|-
 
|-
 
| 200 || IsRegistered ||
 
| 200 || IsRegistered ||
Line 2,840: Line 2,946:  
|-
 
|-
 
| 401 || [6.1.0+] RefreshServiceEntryRequirementCacheForOnlinePlayAsync || Takes a total of 0x8-bytes of input, returns an [[#IAsyncContext]].
 
| 401 || [6.1.0+] RefreshServiceEntryRequirementCacheForOnlinePlayAsync || Takes a total of 0x8-bytes of input, returns an [[#IAsyncContext]].
 +
|-
 +
| 410 || [13.1.0+] CheckRequiredLicenseForLexAsync ||
 
|-
 
|-
 
| 900 || [9.0.0+] GetAuthenticationInfoForWin ||
 
| 900 || [9.0.0+] GetAuthenticationInfoForWin ||
Line 2,938: Line 3,046:  
|-
 
|-
 
| 199 || [2.0.0-5.1.0] GetUrlForIntroductionOfExtraMembership ||
 
| 199 || [2.0.0-5.1.0] GetUrlForIntroductionOfExtraMembership ||
 +
|-
 +
| 200 || [16.0.0+] ApplyAsyncWithAuthorizedToken ||
 
|}
 
|}
   Line 3,036: Line 3,146:     
[13.0.0+] This was moved from [[Account_services|account]].
 
[13.0.0+] This was moved from [[Account_services|account]].
 +
 +
This is only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is Normal/Maintenance.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,188: Line 3,300:     
[13.0.0+] This was moved from [[Account_services|account]].
 
[13.0.0+] This was moved from [[Account_services|account]].
 +
 +
This is only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is Normal/Maintenance.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,300: Line 3,414:     
= ApplicationUpdateInfo =
 
= ApplicationUpdateInfo =
This is "nn::ns::ApplicationUpdateInfo".
+
This is "nn::ns::ApplicationUpdateInfo". This is an u8.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || UpToDate
 +
|-
 +
| 1 || Updatable
 +
|}
   −
This is an u8. [[qlaunch]] just checks whether this is 0.
+
[[qlaunch]] just checks whether this is 0.
    
= ApplicationOccupiedSize =
 
= ApplicationOccupiedSize =
 
This is "nn::ns::ApplicationOccupiedSize". This is a 0x80-byte struct.
 
This is "nn::ns::ApplicationOccupiedSize". This is a 0x80-byte struct.
  −
= ProgressForDeleteUserSaveDataAll =
  −
This is "nn::ns::detail::ProgressForDeleteUserSaveDataAll". This is a 0x28-byte struct.
  −
  −
= ApplicationViewDeprecated =
  −
This is "nn::ns::ApplicationViewDeprecated". This is a 0x40-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,321: Line 3,437:  
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x20 || Same as [[#ApplicationView]] +0x0.
+
| 0x0 || 0x20 * 4 || Array of [[#ApplicationOccupiedSizeEntity]]
|-
  −
| 0x20 || 0x4 || Same as [[#ApplicationView]] +0x20.
  −
|-
  −
| 0x24 || 0x2 || Same as [[#ApplicationView]] +0x24.
  −
|-
  −
| 0x26 || 0x2 || Cleared to 0.
  −
|-
  −
| 0x28 || 0x10 || Same as [[#ApplicationView]] +0x30.
  −
|-
  −
| 0x38 || 0x4 || Same as [[#ApplicationView]] +0x40.
  −
|-
  −
| 0x3C || 0x1 || Same as [[#ApplicationView]] +0x44.
  −
|-
  −
| 0x3D || 0x2 || Cleared to 0.
  −
|-
  −
| 0x3F || 0x1 || Cleared to 0.
   
|}
 
|}
   −
= ApplicationView =
+
= ApplicationOccupiedSizeEntity =
This is "nn::ns::ApplicationView". This is a 0x50-byte struct.
+
This is "nn::ns::ApplicationOccupiedSizeEntity". This is a 0x20-byte struct.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,349: Line 3,449:  
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
+
| 0x0 || 0x1 || [[NCM_services#StorageId|StorageId]]
 +
|-
 +
| 0x1 || 0x7 || Reserved
 
|-
 
|-
| 0x8 || 0x4 || ?
+
| 0x8 || 0x8 || AppSize
 
|-
 
|-
| 0xC || 0x4 || Flags
+
| 0x10 || 0x8 || PatchSize
 
|-
 
|-
| 0x10 || 0x40 || ?
+
| 0x18 || 0x8 || AocSize
 
|}
 
|}
   −
= ApplicationViewWithPromotionInfo =
+
= ProgressForDeleteUserSaveDataAll =
This is a 0x70-byte struct.
+
This is "nn::ns::detail::ProgressForDeleteUserSaveDataAll". This is a 0x28-byte struct.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,367: Line 3,469:  
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x50 || [[#ApplicationView]]
+
| 0x0 || 0x8 || StartedAt
 +
|-
 +
| 0x8 || 0x4 || Count
 +
|-
 +
| 0xC || 0x4 || Reserved
 +
|-
 +
| 0x10 || 0x8 || SizeInBytes
 +
|-
 +
| 0x18 || 0x1 || IsSystem
 +
|-
 +
| 0x19 || 0x7 || Reserved
 
|-
 
|-
| 0x50 || 0x20 || [[#PromotionInfo]]
+
| 0x20 || 0x8 || ApplicationId
 
|}
 
|}
   −
= PromotionInfo =
+
= ApplicationViewDeprecated =
This is a 0x20-byte struct.
+
This is "nn::ns::ApplicationViewDeprecated". This is a 0x40-byte struct.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,381: Line 3,493:  
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x8 || PosixTime start_timestamp.
+
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 
|-
 
|-
| 0x8 || 0x8 || PosixTime end_timestamp.
+
| 0x8 || 0x4 || Version
 
|-
 
|-
| 0x10 || 0x8 || Remaining time until the promotion ends, in nanoseconds ({end_timestamp - current_time} converted to nanoseconds).
+
| 0xC || 0x4 || [[#ApplicationViewFlag|Flag]]
|-
  −
| 0x18 || 0x4 || Not set, left at zero.
   
|-
 
|-
| 0x1C || 0x1 || Flags. Bit0: whether the PromotionInfo is valid (including bit1). Bit1 clear: u64 +0x10 is set.
+
| 0x10 || 0x18 || [[#ApplicationDownloadProgress|Progress]]
 
|-
 
|-
| 0x1D || 0x3 || Padding
+
| 0x28 || 0x18 || [[#ApplicationApplyDeltaProgress|ApplyProgress]]
 
|}
 
|}
   −
= NoDownloadRightsErrorResolution =
+
This is converted from [[#ApplicationView]] by [[#GetApplicationViewDeprecated]] on newer system-versions as follows:
This is "nn::ns::NoDownloadRightsErrorResolution".
     −
= BackgroundNetworkUpdateState =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Value
+
! Offset
! Description
+
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x20 || Same as [[#ApplicationView]] +0x0.
 +
|-
 +
| 0x20 || 0x4 || Same as [[#ApplicationView]] +0x20.
 +
|-
 +
| 0x24 || 0x2 || Same as [[#ApplicationView]] +0x24.
 +
|-
 +
| 0x26 || 0x2 || Cleared to 0.
 +
|-
 +
| 0x28 || 0x10 || Same as [[#ApplicationView]] +0x30.
 +
|-
 +
| 0x38 || 0x4 || Same as [[#ApplicationView]] +0x40.
 
|-
 
|-
| 0 || No sysupdate task exists.
+
| 0x3C || 0x1 || Same as [[#ApplicationView]] +0x44.
 
|-
 
|-
| 1 || Sysupdate download in progress.
+
| 0x3D || 0x2 || Cleared to 0.
 
|-
 
|-
| 2 || Sysupdate ready, pending install.
+
| 0x3F || 0x1 || Cleared to 0.
 
|}
 
|}
   −
This is "nn::ns::BackgroundNetworkUpdateState". This is an u8.
+
= ApplicationViewFlag =
 
+
This is "nn::ns::ApplicationViewFlag". This is a 32-bit flag.
Similar to [[#HasDownloaded]], [[#GetBackgroundNetworkUpdateState]] uses [[NIM_services|nim]] ListSystemUpdateTask and [[NIM_services|nim]] GetSystemUpdateTaskInfo. When ListSystemUpdateTask successfully returns a task and GetSystemUpdateTaskInfo is successful, the output value is set to: <code>1 + *((u8*)(taskinfo+0) == 0x3</code>. Otherwise, value=0.
     −
[[#GetBackgroundNetworkUpdateState]] always returns Result 0, however this will assert if GetSystemUpdateTaskInfo fails with ret!=0x3C89.
  −
  −
= SystemUpdateProgress =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset
+
! Bit
! Size
   
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x8 || s64 Current size. This value can be larger than total_size when the async operation is finishing. When total_size is <=0, this current_size field may contain a progress value for when the total_size is not yet determined.
+
| 0
 +
|  
 
|-
 
|-
| 0x8 || 0x8 || s64 Total size, this field is only valid when >0.
+
| 1
|}
+
|  
 
+
|-
This is "nn::ns::SystemUpdateProgress". This is a 0x10-byte struct.
+
| 2
 
+
|  
Commands which have this as output will return 0 with the output cleared, when no task is available.
+
|-
 
+
| 3
= EulaDataPath =
+
|
This is "nn::ns::detail::EulaDataPath". This is a 0x100-byte struct.
+
|-
 
+
| 4
This contains a file path.
+
|
 
+
|-
= SystemDeliveryInfo =
+
| 5
{| class="wikitable" border="1"
+
|  
 
|-
 
|-
! Offset
+
| 6
! Size
+
|
! Description
   
|-
 
|-
| 0x0 || 0x4 || SystemDeliveryProtocolVersion. Must be <= to and match [[System_Settings|system-setting]] <code>contents_delivery!system_delivery_protocol_version</code>.
+
| 7
 +
|  
 
|-
 
|-
| 0x4 || 0x4 || ApplicationDeliveryProtocolVersion. Loaded from [[System_Settings|system-setting]] <code>contents_delivery!application_delivery_protocol_version</code>. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
+
| 8
 +
|  
 
|-
 
|-
| 0x8 || 0x1 || HasExFat. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
+
| 9
 +
|  
 
|-
 
|-
| 0x9 || 0x3 || Reserved.
+
| 10
 +
|  
 
|-
 
|-
| 0xC || 0x4 || SystemUpdateMetaVersion.
+
| 11
 +
|  
 
|-
 
|-
| 0x10 || 0x8 || SystemUpdateMetaId.
+
| 12
 +
|  
 
|-
 
|-
| 0x18 || 0x1 || FirmwareVariationId. Used by [[#RequestSendSystemUpdate]].
+
| 13
 +
|  
 
|-
 
|-
| 0x19 || 0x1 || UpdatableFirmwareGroupId. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
+
| 14
 +
|  
 
|-
 
|-
| 0x1A || 0x1 || PlatformRegion (0x00 = Unknown, 0x01 = Global, 0x02 = China).
+
| 15
 +
|  
 
|-
 
|-
| 0x1B || 0xC5 || Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
+
| 16
 +
|  
 
|-
 
|-
| 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes.
+
| 17
 +
|  
 
|}
 
|}
   −
This is "nn::ns::SystemDeliveryInfo". This is a 0x100-byte struct.
+
= ApplicationDownloadProgress =
 +
This is "nn::ns::ApplicationDownloadProgress". This is a 0x18-byte struct.
   −
= ApplicationDeliveryInfo =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 3,476: Line 3,603:  
! Description
 
! Description
 
|-
 
|-
| 0x0 || 0x8 || ?
+
| 0x0 || 0x8 || Downloaded
 
|-
 
|-
| 0x8 || 0x8 || ApplicationId.
+
| 0x8 || 0x8 || Total
 
|-
 
|-
| 0x10 || 0x4 || ApplicationVersion.
+
| 0x10 || 0x4 || LastResult
 
|-
 
|-
| 0x14 || 0x4 || ?
+
| 0x14 || 0x1 || [[#ApplicationDownloadState|State]]
 
|-
 
|-
| 0x18 || 0x4 || RequiredSystemVersion.
+
| 0x15 || 0x3 || Reserved
 +
|}
 +
 
 +
= ApplicationApplyDeltaProgress =
 +
This is "nn::ns::ApplicationApplyDeltaProgress". This is a 0x18-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 0x1C || 0x4 || ?
+
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || Applied
 +
|-
 +
| 0x8 || 0x8 || Total
 +
|-
 +
| 0x10 || 0x4 || LastResult
 
|-
 
|-
| 0x20 || 0xC0 || ?
+
| 0x14 || 0x1 || [[#ApplicationApplyDeltaState|State]]
 
|-
 
|-
| 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes. Uses a different key than [[#SystemDeliveryInfo]].
+
| 0x15 || 0x3 || Reserved
 
|}
 
|}
   −
This is "nn::ns::ApplicationDeliveryInfo". This is a 0x100-byte struct.
+
= ApplicationDownloadState =
 +
This is "nn::ns::ApplicationDownloadState". This is an u8.
   −
= LatestSystemUpdate =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Value
+
! Value
! Description
+
! Description
 
|-
 
|-
| 1 || Unknown.
+
| 0 || Runnable
 
|-
 
|-
| 2 || Unknown.
+
| 1 || Suspended
 
|-
 
|-
| Other values || Unknown.
+
| 2 || NotEnoughSpace
 +
|-
 +
| 3 || Fatal
 +
|-
 +
| 4 || Finished
 
|}
 
|}
   −
This is "nn::ns::LatestSystemUpdate". This is an u8.
+
= ApplicationApplyDeltaState =
 +
This is "nn::ns::ApplicationApplyDeltaState". This is an u8.
   −
= ReceiveApplicationProgress =
+
{| class="wikitable" border="1"
This is "nn::ns::ReceiveApplicationProgress". This is a 0x10-byte struct.
+
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || Applying
 +
|-
 +
| 1 || Suspended
 +
|-
 +
| 2 || NotEnoughSpace
 +
|-
 +
| 3 || Fatal
 +
|-
 +
| 4 || NoTask
 +
|-
 +
| 5 || WaitApply
 +
|-
 +
| 6 || Applied
 +
|}
   −
= SendApplicationProgress =
+
= ApplicationView =
This is "nn::ns::SendApplicationProgress". This is a 0x10-byte struct.
+
This is "nn::ns::ApplicationView". This is a 0x50-byte struct.
 
  −
= ApplicationRightsOnClient =
  −
This is a 0x20-byte struct.
  −
 
  −
[[qlaunch]] only uses +0x18/+0x19 in this struct.
      
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,529: Line 3,687:  
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 
|-
 
|-
| 0x8 || 0x10 || [[Account_services#Uid|Uid]]
+
| 0x8 || 0x4 || ?
|-
+
|-
| 0x18 || 0x1 || Flags, [[qlaunch]] only uses bit0-bit4 and bit7.
+
| 0xC || 0x4 || Flags
|-
+
|-
| 0x19 || 0x1 || Flags, [[qlaunch]] only uses bit0.
+
| 0x10 || 0x40 || ?
|-
+
|}
| 0x1A || 0x6 || Unknown
+
 
|}
+
= ApplicationViewWithPromotionInfo =
 
+
This is a 0x70-byte struct.
= DownloadTaskStatus =
+
 
This is "nn::ns::DownloadTaskStatus". This is a 0x20-byte struct.
+
{| class="wikitable" border="1"
 
+
|-
= ApplicationLaunchInfo =
+
! Offset
This is a 0x40-byte struct.
+
! Size
 
+
! Description
{| class="wikitable" border="1"
+
|-
|-
+
| 0x0 || 0x50 || [[#ApplicationView]]
! Offset
+
|-
! Size
+
| 0x50 || 0x20 || [[#PromotionInfo]]
! Description
+
|}
|-
+
 
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
+
= PromotionInfo =
|-
+
This is a 0x20-byte struct.
| 0x8 || 0x4 || Application version
+
 
|-
+
{| class="wikitable" border="1"
| 0xC || 0x4 || [[Process_Manager_services#LaunchFlags|LaunchFlags]], set to hard-coded value 0xB by [[#GetApplicationLaunchInfo]].
+
|-
|-
+
! Offset
| 0x10 || 0x1 || Application [[NCM_services#StorageId|StorageId]]
+
! Size
|-
+
! Description
| 0x11 || 0x1 || Update [[NCM_services#StorageId|StorageId]]
+
|-
|-
+
| 0x0 || 0x8 || PosixTime start_timestamp.
| 0x12 || 0x2E ||  
+
|-
|}
+
| 0x8 || 0x8 || PosixTime end_timestamp.
 
+
|-
= UserData =
+
| 0x10 || 0x8 || Remaining time until the promotion ends, in nanoseconds ({end_timestamp - current_time} converted to nanoseconds).
{| class="wikitable" border="1"
+
|-
|-
+
| 0x18 || 0x4 || Not set, left at zero.
! Offset || Size || Description
+
|-
|-
+
| 0x1C || 0x1 || Flags. Bit0: whether the PromotionInfo is valid (including bit1). Bit1 clear: u64 +0x10 is set.
| 0x0 || 0x4? || ?
+
|-
|-
+
| 0x1D || 0x3 || Padding
| 0x4 || 0x4? || Icon ID. 0 = Mii, the rest are character icon IDs.
+
|}
 +
 
 +
= ApplicationResourceType =
 +
This is "nn::ns::ApplicationResourceType". This is an u8.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! 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]]
 +
|-
 +
| 0x8 || 0x4 || Application version
 +
|-
 +
| 0xC || 0x4 || [[Process_Manager_services#LaunchFlags|LaunchFlags]], set to hard-coded value 0xB by [[#GetApplicationLaunchInfo]].
 +
|-
 +
| 0x10 || 0x1 || Application [[NCM_services#StorageId|StorageId]]
 +
|-
 +
| 0x11 || 0x1 || Update [[NCM_services#StorageId|StorageId]]
 +
|-
 +
| 0x12 || 0x2E ||  
 +
|}
 +
 
 +
= UserData =
 +
This is a 0x80-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4? || ?
 +
|-
 +
| 0x4 || 0x4? || Icon ID. 0 = Mii, the rest are character icon IDs.
 
|-
 
|-
 
| 0x8 || 0x1? || Profile icon background color ID
 
| 0x8 || 0x1? || Profile icon background color ID
Line 3,581: Line 3,971:  
|}
 
|}
   −
This is a 0x80-byte struct.
+
= ProfileBase =
 +
This is a 0x38-byte struct.
   −
= ProfileBase =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 3,593: Line 3,983:  
|-
 
|-
 
| 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 =
 
This is "nn::account::Uid". This is a 0x10-byte struct. This contains 2 u64s for the UserId.
 
This is "nn::account::Uid". This is a 0x10-byte struct. This contains 2 u64s for the UserId.
 +
 +
= Notes =
 +
[[Process_Manager_services|pm:bm]] GetBootMode is used to determine whether aoc:u is available (see above). This value is also passed to thread "nn.ns.DelayedInitialization", which calls various funcs depending on the BootMode in various cases.
 +
 +
The "nn.ns.DelayedInitialization" thread uses BootMode as follows (this also handles various other initialization):
 +
* Initializes [[NPNS_services|npns:s]] only for BootMode Normal/Maintenance.
 +
* Initializes the hosted acc:* services and service [[Account_services|acc:su]] only for BootMode Normal/Maintenance.
 +
* Calls a func only for BootMode Normal.
 +
* Initializes [[ETicket_services|es]] and [[Shared_Database_services|avm]] only for BootMode Normal/Maintenance.
 +
 +
The output of GetBootMode is also written into state. This same func later enters a code block when BootMode is Maintenance/SafeMode: various [[NCM_services|ncm]] cmds are used with input StorageId=BuiltInUser (VerifyContentMetaDatabase, VerifyContentStorage, ActivateContentMetaDatabase, ActivateContentStorage, InactivateContentMetaDatabase, InactivateContentStorage) and state fields are written. Then if the BootMode is Maintenance the savedata for [[Flash_Filesystem|ns_rightsid]] (0x800000000000004A) is deleted. Then 0 is returned. Otherwise for BootMode Normal it continues with various initialization, including gamecard handling which handles launching the gamecard title in certain conditions (this is the only time ns launches anything with pgl outside of service cmds).
 +
 +
In the above block, InactivateContentMetaDatabase/InactivateContentStorage are only used if using ActivateContentMetaDatabase/ActivateContentStorage failed (error is only checked after using both cmds). If any of the ncm cmds prior to this fail, it will skip using the rest of the ncm cmds.
    
[[Category:Services]]
 
[[Category:Services]]
77

edits