Line 444: |
Line 444: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 100 || | + | | 100 || [[#GetHighestAvailableVersion]] |
| |- | | |- |
− | | 101 || | + | | 101 || [[#GetHighestRequiredVersion]] |
| |- | | |- |
− | | 102 || | + | | 102 || [[#GetVersionListEntry]] |
| |- | | |- |
− | | 103 || No input, returns an [[#IVersionListImporter]]. | + | | 103 || [[#GetVersionListImporter]] |
| |- | | |- |
− | | 200 || GetLaunchRequiredVersion | + | | 200 || [[#GetLaunchRequiredVersion]] |
| |- | | |- |
− | | 202 || UpgradeLaunchRequiredVersion | + | | 202 || [[#UpgradeLaunchRequiredVersion]] |
| |- | | |- |
− | | 1000 || PushLaunchVersion | + | | 1000 || [[#PushLaunchVersion]] |
| |- | | |- |
− | | 1001 || ListVersionList | + | | 1001 || [[#ListVersionList]] |
| |- | | |- |
− | | 1002 || ListRequiredVersion | + | | 1002 || [[#ListRequiredVersion]] |
| |} | | |} |
| + | |
| + | === GetHighestAvailableVersion === |
| + | Takes two u64 title ids. Returns the highest available version of both. |
| + | |
| + | Unused by official software. |
| + | |
| + | === GetHighestRequiredVersion === |
| + | Takes two u64 title ids. Returns the highest available version of both. |
| + | |
| + | Official software calls this with the id of an application and its update. |
| + | |
| + | === GetVersionListEntry === |
| + | Takes an input u64 title id. Returns associated [[#VersionListEntry]]. |
| + | |
| + | === GetVersionListImporter === |
| + | No input, returns an [[#IVersionListImporter]]. |
| + | |
| + | === GetLaunchRequiredVersion === |
| + | Takes an input u64 title id. Return the required launch version. |
| + | |
| + | === UpgradeLaunchRequiredVersion === |
| + | Takes a u32 launch version and a u64 title id. |
| + | |
| + | Version has to be greater the result of GetLaunchRequiredVersion. |
| + | |
| + | === PushLaunchVersion === |
| + | Takes a u32 launch version and a u64 title id. |
| + | |
| + | === ListVersionList === |
| + | No input, returns a type 6 buffer of [[#VersionListEntry]] and a u32 count. |
| + | |
| + | === ListRequiredVersion === |
| + | No input, returns a type 6 buffer of [[#RequiredVersionEntry]] and a u32 count. |
| | | |
| == IVersionListImporter == | | == IVersionListImporter == |
Line 472: |
Line 505: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || SetTimestamp | + | | 0 || [[#SetTimestamp]] |
| + | |- |
| + | | 1 || [[#PushEntries]] |
| + | |- |
| + | | 2 || [[#Flush]] |
| + | |} |
| + | |
| + | === SetTimestamp === |
| + | Takes an input u64 unix timestamp, no output. |
| + | |
| + | === PushEntries === |
| + | Takes an input type-6 buffer [[#VersionListEntry]], no output. |
| + | |
| + | === Flush === |
| + | No input, no output. Flushed the commited data to its safe. |
| + | |
| + | = VersionListEntry = |
| + | This is a 0x10-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x8 || Update Id. |
| + | |- |
| + | | 0x8 || 0x4 || Available version. |
| + | |- |
| + | | 0xC || 0x4 || Required version. |
| + | |} |
| + | |
| + | = RequiredVersionEntry = |
| + | This is a 0x10-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 || 0x8 || Id. |
| |- | | |- |
− | | 1 || PushEntries | + | | 0x8 || 0x4 || Required version. |
| |- | | |- |
− | | 2 || Flush | + | | 0xC || 0x4 || Padding. |
| |} | | |} |
| | | |