Line 6: |
Line 6: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || CreateSystemUpdateTask | + | | 0 || [[#CreateSystemUpdateTask]] |
| |- | | |- |
| | 1 || [[#DestroySystemUpdateTask]] | | | 1 || [[#DestroySystemUpdateTask]] |
Line 222: |
Line 222: |
| | | |
| [8.0.0+] Cmd76 now takes an additional 0x8-bytes of input. | | [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>. |
| + | |
| + | 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 261: |
Line 284: |
| | 0x0 || 0x1 || Status | | | 0x0 || 0x1 || Status |
| |- | | |- |
− | | 0x1 || 0xF || ? | + | | 0x1 || 0x7 || ? |
| + | |- |
| + | | 0x8 || 0x8 || Unknown |
| |- | | |- |
| | 0x10 || 0x8 || DownloadSize | | | 0x10 || 0x8 || DownloadSize |
Line 280: |
Line 305: |
| This is a 0x28-byte struct. [3.0.0+] This is a 0x38-byte struct. [5.0.0+] This is a 0x40-byte struct. | | 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 two u64s at +0x28/+0x30 are used to calculate "ThroughputKBps". | + | 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 == | | == NetworkInstallTask == |