Line 6: |
Line 6: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || CreateSystemUpdateTask | + | | 0 || [[#CreateSystemUpdateTask]] |
| |- | | |- |
| | 1 || [[#DestroySystemUpdateTask]] | | | 1 || [[#DestroySystemUpdateTask]] |
Line 14: |
Line 14: |
| | 3 || RequestSystemUpdateTaskRun | | | 3 || RequestSystemUpdateTaskRun |
| |- | | |- |
− | | 4 || GetSystemUpdateTaskInfo | + | | 4 || [[#GetSystemUpdateTaskInfo]] |
| |- | | |- |
| | 5 || [[#CommitSystemUpdateTask]] | | | 5 || [[#CommitSystemUpdateTask]] |
Line 26: |
Line 26: |
| | 9 || RequestNetworkInstallTaskRun | | | 9 || RequestNetworkInstallTaskRun |
| |- | | |- |
− | | 10 || GetNetworkInstallTaskInfo | + | | 10 || [[#GetNetworkInstallTaskInfo]] |
| |- | | |- |
| | 11 || CommitNetworkInstallTask | | | 11 || CommitNetworkInstallTask |
Line 42: |
Line 42: |
| | 18 || AddNetworkInstallTaskContentMeta | | | 18 || AddNetworkInstallTaskContentMeta |
| |- | | |- |
− | | 19 || GetDownloadedSystemDataPath | + | | 19 || [[#GetDownloadedSystemDataPath]] |
| |- | | |- |
| | 20 || CalculateNetworkInstallTaskRequiredSize | | | 20 || CalculateNetworkInstallTaskRequiredSize |
Line 74: |
Line 74: |
| | 34 || [2.0.0+] RequestApplyDeltaTaskRun | | | 34 || [2.0.0+] RequestApplyDeltaTaskRun |
| |- | | |- |
− | | 35 || [2.0.0+] GetApplyDeltaTaskInfo | + | | 35 || [2.0.0+] [[#GetApplyDeltaTaskInfo]] |
| |- | | |- |
| | 36 || [2.0.0+] ListApplyDeltaTask | | | 36 || [2.0.0+] ListApplyDeltaTask |
Line 203: |
Line 203: |
| |- | | |- |
| | 99 || [7.0.0+] | | | 99 || [7.0.0+] |
| + | |- |
| + | | 100 || [9.0.0+] |
| + | |- |
| + | | 101 || [9.0.0+] |
| + | |- |
| + | | 102 || [9.0.0+] |
| + | |- |
| + | | 103 || [9.0.0+] |
| + | |- |
| + | | 104 || [9.0.0+] |
| + | |- |
| + | | 105 || [9.0.0+] |
| + | |- |
| + | | 106 || [9.0.0+] |
| |} | | |} |
| | | |
− | [3.0.0+] GetSystemUpdateTaskInfo now returns an additional 0x10-bytes of output. GetNetworkInstallTaskInfo now returns an additional 0x18-bytes of output. GetApplyDeltaTaskInfo now returns an additional 0x10-bytes of output. | + | [5.0.0+] RequestGameCardRegistrationStatus/RequestRegisterGameCard removed 8-bytes of input, and now takes an additional type-0x5 input buffer. |
| | | |
− | [5.0.0+] GetSystemUpdateTaskInfo now returns an additional 8-bytes of output. RequestGameCardRegistrationStatus/RequestRegisterGameCard removed 8-bytes of input, and now takes an additional type-0x5 input buffer. | + | [8.0.0+] Cmd76 now takes an additional 0x8-bytes of input. |
| + | |
| + | == CreateSystemUpdateTask == |
| + | Takes an input u32 firmware_variation, an u32 '''unk''', an input 0x10-byte struct, returns an output [[#SystemUpdateTask]]. |
| + | |
| + | Official sw sets '''unk''' to: <code>unk = inflag & 1 ? 0xC : 0x4</code>. |
| | | |
− | [8.0.0+] Cmd76 now takes an additional 0x8-bytes of input.
| + | Structure of the input struct: |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x8 || Unknown |
| + | |- |
| + | | 0x8 || 0x4 || Unknown |
| + | |- |
| + | | 0xC || 0x1 || Unknown |
| + | |- |
| + | | 0xD || 0x1 || Unknown |
| + | |- |
| + | | 0xE || 0x2 || Padding? |
| + | |} |
| | | |
| == DestroySystemUpdateTask == | | == DestroySystemUpdateTask == |
Line 216: |
Line 251: |
| == ListSystemUpdateTask == | | == ListSystemUpdateTask == |
| Takes a type-0x6 output buffer, for an array of [[#SystemUpdateTask]]. Returns an u32 for total output entries. | | Takes a type-0x6 output buffer, for an array of [[#SystemUpdateTask]]. Returns an u32 for total output entries. |
| + | |
| + | == GetSystemUpdateTaskInfo == |
| + | Takes an input [[#SystemUpdateTask]], returns an output [[#SystemUpdateTaskInfo]]. |
| | | |
| == CommitSystemUpdateTask == | | == CommitSystemUpdateTask == |
| Takes an input [[#SystemUpdateTask]], no output. | | Takes an input [[#SystemUpdateTask]], no output. |
| + | |
| + | == GetNetworkInstallTaskInfo == |
| + | Takes an input [[#NetworkInstallTask]], returns an output [[#NetworkInstallTaskInfo]]. |
| + | |
| + | == GetDownloadedSystemDataPath == |
| + | Takes an input u64 titleID, a [[#SystemUpdateTask]], and an type-0x16 output buffer containing the [[Filesystem_services|ContentPath]]. |
| + | |
| + | Gets the FS ContentPath for the specified task and title. |
| | | |
| == IsExFatDriverIncluded == | | == IsExFatDriverIncluded == |
| Takes an input [[#SystemUpdateTask]], returns an output u8 bool flag. | | Takes an input [[#SystemUpdateTask]], returns an output u8 bool flag. |
| + | |
| + | == GetApplyDeltaTaskInfo == |
| + | Takes an input [[#ApplyDeltaTask]], returns an output [[#ApplyDeltaTaskInfo]]. |
| | | |
| == SystemUpdateTask == | | == SystemUpdateTask == |
| This is a 0x10-byte struct. | | This is a 0x10-byte struct. |
| + | |
| + | == SystemUpdateTaskInfo == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x1 || Status |
| + | |- |
| + | | 0x1 || 0x7 || ? |
| + | |- |
| + | | 0x8 || 0x8 || Unknown |
| + | |- |
| + | | 0x10 || 0x8 || DownloadSize |
| + | |- |
| + | | 0x18 || 0x8 || ContentMetaId |
| + | |- |
| + | | 0x20 || 0x4 || Version |
| + | |- |
| + | | 0x24 || 0x4 || ? |
| + | |- |
| + | | 0x28 || 0x8 || Unknown |
| + | |- |
| + | | 0x30 || 0x8 || Unknown |
| + | |- |
| + | | 0x38 || 0x8 || ? |
| + | |} |
| + | |
| + | This is a 0x28-byte struct. [3.0.0+] This is a 0x38-byte struct. [5.0.0+] This is a 0x40-byte struct. |
| + | |
| + | The 0x10-bytes at +0x8 are returned by [[NS_Services#GetDownloadProgress]]. |
| + | |
| + | The two u64s at +0x28/+0x30 are used by [[NS_Services|NS]] to calculate "ThroughputKBps" for a SystemPlayReport. |
| + | |
| + | == NetworkInstallTask == |
| + | This is a 0x10-byte struct. |
| + | |
| + | == NetworkInstallTaskInfo == |
| + | This is a 0x28-byte struct. [3.0.0+] This is a 0x40-byte struct. |
| + | |
| + | == ApplyDeltaTask == |
| + | This is a 0x10-byte struct. |
| + | |
| + | == ApplyDeltaTaskInfo == |
| + | This is a 0x20-byte struct. [3.0.0+] This is a 0x30-byte struct. |
| | | |
| = nim:shp = | | = nim:shp = |
Line 271: |
Line 366: |
| | 400 || GetAccountByVirtualAccount | | | 400 || GetAccountByVirtualAccount |
| |- | | |- |
− | | 401 || [6.0.0+] | + | | 401 || [6.0.0+] GetVirtualAccount |
| |- | | |- |
− | | 500 || RequestSyncTicket | + | | 500 || RequestSyncTicketLegacy ([1.0.0-8.1.0] RequestSyncTicket) |
| |- | | |- |
| | 501 || RequestDownloadTicket | | | 501 || RequestDownloadTicket |
| |- | | |- |
− | | 502 || [4.0.0+] RequestDownloadTicketForPrepurchasedContents. [6.0.0+]: Now takes an additional 4-bytes of input. | + | | 502 || [4.0.0+] [[#RequestDownloadTicketForPrepurchasedContents]] |
| + | |- |
| + | | 503 || [9.0.0+] RequestSyncTicket |
| + | |- |
| + | | 504 || [9.0.0+] RequestDownloadTicketForPrepurchasedContents2 |
| |} | | |} |
| + | |
| + | == RequestDownloadTicketForPrepurchasedContents == |
| + | [6.0.0+] Now takes an additional 4-bytes of input. |
| | | |
| = nim:eca = | | = nim:eca = |
Line 401: |
Line 503: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || | + | | 0 || GetSize |
| |- | | |- |
− | | 1 || | + | | 1 || Get |
| |- | | |- |
− | | 2 || | + | | 2 || Cancel |
| |- | | |- |
− | | 3 || [4.0.0+] | + | | 3 || [4.0.0+] GetErrorContext |
| |} | | |} |
| | | |
Line 417: |
Line 519: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || | + | | 0 || Get |
| |- | | |- |
− | | 1 || | + | | 1 || Cancel |
| |- | | |- |
− | | 2 || [4.0.0+] | + | | 2 || [4.0.0+] GetErrorContext |
| |} | | |} |
| | | |
Line 431: |
Line 533: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || | + | | 0 || Get |
| |- | | |- |
− | | 1 || | + | | 1 || Cancel |
| |- | | |- |
− | | 2 || | + | | 2 || GetProgress |
| |- | | |- |
− | | 3 || [4.0.0+] | + | | 3 || [4.0.0+] GetErrorContext |
| |} | | |} |
| | | |