Line 131: |
Line 131: |
| |- | | |- |
| | 0x002A00C0 | | | 0x002A00C0 |
− | | [[AM:GetNumExistingContentInfosSystem|GetNumExistingContentInfosSystem]] | + | | [[AM:GetNumExistingContentInfos|GetNumExistingContentInfos]] |
| |- | | |- |
| | 0x002B0142 | | | 0x002B0142 |
− | | [[AM:ListExistingContentInfosSystem|ListExistingContentInfosSystem]] | + | | [[AM:ListExistingContentInfos|ListExistingContentInfos]] |
| |- | | |- |
| | 0x002C0084 | | | 0x002C0084 |
Line 232: |
Line 232: |
| |- | | |- |
| | 0x100100C0 | | | 0x100100C0 |
− | | [[AM:GetNumContentInfos|GetNumContentInfos]] | + | | [[AM:GetDLCContentInfoCount|GetDLCContentInfoCount]] |
| |- | | |- |
| | 0x10020104 | | | 0x10020104 |
− | | [[AM:FindContentInfos|FindContentInfos]] | + | | [[AM:FindDLCContentInfos|FindDLCContentInfos]] |
| |- | | |- |
| | 0x10030142 | | | 0x10030142 |
− | | [[AM:ListContentInfos|ListContentInfos]] | + | | [[AM:ListDLCContentInfos|ListDLCContentInfos]] |
| |- | | |- |
| | 0x10040102 | | | 0x10040102 |
− | | [[AM:DeleteContents|DeleteContents]] | + | | [[AM:DeleteDLCContents|DeleteDLCContents]] |
| |- | | |- |
| | 0x10050084 | | | 0x10050084 |
− | | [[AM:GetDataTitleInfos|GetDataTitleInfos]] | + | | [[AM:GetDLCTitleInfos|GetDLCTitleInfos]] |
| |- | | |- |
| | 0x10060080 | | | 0x10060080 |
− | | [[AM:GetNumDataTitleTickets|GetNumDataTitleTickets]] | + | | [[AM:GetDLCOrLicenseNumTickets|GetDLCOrLicenseNumTickets]] |
| |- | | |- |
| | 0x10070102 | | | 0x10070102 |
− | | [[AM:ListDataTitleTicketInfos|ListDataTitleTicketInfos]] | + | | [[AM:ListDLCOrLicenseTicketInfos|ListDLCOrLicenseTicketInfos]] |
| |- | | |- |
| | 0x100801C2 | | | 0x100801C2 |
− | | [[AM:GetItemRights|GetItemRights]] | + | | [[AM:GetDLCOrLicenseItemRights|GetDLCOrLicenseItemRights]] |
| |- | | |- |
| | 0x100900C0 | | | 0x100900C0 |
− | | [[AM:IsDataTitleInUse|IsDataTitleInUse]] | + | | [[AM:IsDLCTitleInUse|IsDLCTitleInUse]] |
| |- | | |- |
| | 0x100A0000 | | | 0x100A0000 |
− | | [[AM:IsExternalTitleDatabaseInitialized|IsExternalTitleDatabaseInitialized]] | + | | [[AM:ReloadSDTitleDatabase|ReloadSDTitleDatabase]] |
| |- | | |- |
| | 0x100B00C0 | | | 0x100B00C0 |
− | | [[AM:GetNumExistingContentInfos|GetNumExistingContentInfos]] | + | | [[AM:GetNumDLCExistingContentInfos|GetNumDLCExistingContentInfos]] |
| |- | | |- |
| | 0x100C0142 | | | 0x100C0142 |
− | | [[AM:ListExistingContentInfos|ListExistingContentInfos]] | + | | [[AM:ListDLCExistingContentInfos|ListDLCExistingContentInfos]] |
| |- | | |- |
| | 0x100D0084 | | | 0x100D0084 |
| | [[AM:GetPatchTitleInfos|GetPatchTitleInfos]] | | | [[AM:GetPatchTitleInfos|GetPatchTitleInfos]] |
| |} | | |} |
| + | |
| + | The only commands accessible with this service are listed under this section. |
| | | |
| = Application Manager service "am:sys" = | | = Application Manager service "am:sys" = |
| + | This service only has access to the 0x00XX* commands listed above, and the "am:app" commands. |
| | | |
| = Application Manager service "am:u" = | | = Application Manager service "am:u" = |
− |
| |
− | = Application Manager service "am:pipe" =
| |
| | | |
| = Application Manager network service "am:net" = | | = Application Manager network service "am:net" = |
Line 332: |
Line 333: |
| |- | | |- |
| | 0x08110002 | | | 0x08110002 |
− | | Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x001A0000? | + | | [[AMNet:CancelImportContent|CancelImportContent]] |
| |- | | |- |
| | 0x08120002 | | | 0x08120002 |
− | | [[AMNet:InstallContentFinish|InstallContentFinish]] | + | | [[AMNet:EndImportContent|EndImportContent]] |
| |- | | |- |
| | 0x08130000 | | | 0x08130000 |
− | | [[AMNet:GetTotalContents|GetTotalContents]] | + | | [[AMNet:GetNumCurrentImportContentContexts|GetNumCurrentImportContentContexts]] |
| |- | | |- |
| | 0x08140042 | | | 0x08140042 |
− | | [[AMNet:GetContentIndexes|GetContentIndexes]] | + | | [[AMNet:GetCurrentImportContentContextList|GetCurrentImportContentContextList]] |
| |- | | |- |
| | 0x08150044 | | | 0x08150044 |
− | | [[AMNet:GetContentsInfo|GetContentsInfo]] | + | | [[AMNet:GetCurrentImportContentContexts|GetCurrentImportContentContexts]] |
| |- | | |- |
| | 0x08160146 | | | 0x08160146 |
− | | Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x00390146 | + | | [[AMNet:Sign|Sign]] |
| |- | | |- |
| | 0x08170146 | | | 0x08170146 |
− | | Stubbed; returns 0xF8C083F4 | + | | [[AMNet:Verify|Verify]] |
| |- | | |- |
| | 0x08180042 | | | 0x08180042 |
− | | [[AMNet:GetCTCert|GetCTCert]] | + | | [[AMNet:GetDeviceCert|GetDeviceCert]] |
| |- | | |- |
| | 0x08190108 | | | 0x08190108 |
− | | [[AMNet:SetCertificates|SetCertificates]] | + | | [[AMNet:ImportCertificates|ImportCertificates]] |
| |- | | |- |
| | 0x081A0042 | | | 0x081A0042 |
− | | Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x003E0042 | + | | [[AMNet:ImportCertificate|ImportCertificate]] |
| |- | | |- |
| | 0x081B00C2 | | | 0x081B00C2 |
− | | [[AMNet:InstallTitlesFinishFIRM|InstallTitlesFinishFIRM]] | + | | [[AMNet:CommitImportTitlesAndUpdateFirmwareAuto|CommitImportTitlesAndUpdateFirmwareAuto]] |
| |- | | |- |
| | 0x081C0100 | | | 0x081C0100 |
− | | Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x004B0100 | + | | [[AMNet:DeleteTicketId|DeleteTicketId]] |
| |- | | |- |
| | 0x081D0080 | | | 0x081D0080 |
− | | Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x00490080 | + | | [[AMNet:GetNumTicketIds|GetNumTicketIds]] |
| |- | | |- |
| | 0x081E0102 | | | 0x081E0102 |
− | | Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x004A0102 | + | | [[AMNet:GetTicketIdList|GetTicketIdList]] |
| |- | | |- |
| | 0x081F0080 | | | 0x081F0080 |
− | | Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x005F0080 | + | | [[AMNet:GetNumTicketsOfProgram|GetNumTicketsOfProgram]] |
| |- | | |- |
| | 0x08200102 | | | 0x08200102 |
− | | Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x00600102 | + | | [[AMNet:ListTicketInfos|ListTicketInfos]] |
| |- | | |- |
| | 0x08210142 | | | 0x08210142 |
− | | Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x00610142 | + | | [[AMNet:ExportLicenseTicket|ExportLicenseTicket]] |
| |- | | |- |
| | 0x08220000 | | | 0x08220000 |
− | | Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x005B0000 | + | | [[AMNet:GetNumCurrentContentInfos|GetNumCurrentContentInfos]] |
| |- | | |- |
| | 0x08230044 | | | 0x08230044 |
− | | Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x005C0044 | + | | [[AMNet:FindCurrentContentInfos|FindCurrentContentInfos]] |
| |- | | |- |
| | 0x08240082 | | | 0x08240082 |
− | | Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x005D0082 | + | | [[AMNet:ListCurrentContentInfos|ListCurrentContentInfos]] |
| |- | | |- |
| | 0x08250102 | | | 0x08250102 |
− | |? | + | | [[AMNet:CalculateContextRequiredSize|CalculateContextRequiredSize]] |
| |- | | |- |
| | 0x08260042 | | | 0x08260042 |
− | | Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x00630042 | + | | [[AMNet:UpdateImportContentContexts|UpdateImportContentContexts]] |
| |- | | |- |
| | 0x08270000 | | | 0x08270000 |
− | |? | + | | [[AMNet:DeleteAllDemoLaunchInfos|DeleteAllDemoLaunchInfos]] |
| |- | | |- |
| | 0x082800C0 | | | 0x082800C0 |
− | | Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x006C00C0 | + | | [[AMNet:BeginImportTitleForOverWrite|BeginImportTitleForOverWrite]] |
| + | |- |
| + | | 0x08290184 |
| + | | [[AMNet:ExportTicketWrapped|ExportTicketWrapped]] |
| |} | | |} |
| | | |
Line 408: |
Line 412: |
| |- | | |- |
| ! Command Header | | ! Command Header |
| + | ! Available since system-version |
| ! Description | | ! Description |
| |- | | |- |
| + | | 0x0001.... |
| + | | |
| + | | Stubbed. After validating the translate-paramater headers, this just returns error 0xE0C046F8. |
| + | |- |
| + | | 0x040100C4 |
| + | | |
| + | | [[AMFile:Control|Control]] |
| + | |- |
| + | | 0x08010100 |
| + | | |
| + | | [[AMFile:OpenSubFile|OpenSubFile]] |
| |- | | |- |
| | 0x080200C2 | | | 0x080200C2 |
| + | | |
| | [[AMFile:Read|Read]] | | | [[AMFile:Read|Read]] |
| |- | | |- |
| | 0x08030102 | | | 0x08030102 |
| + | | |
| | [[AMFile:Write|Write]] | | | [[AMFile:Write|Write]] |
| |- | | |- |
| | 0x08040000 | | | 0x08040000 |
| + | | |
| | [[AMFile:GetSize|GetSize]] | | | [[AMFile:GetSize|GetSize]] |
| |- | | |- |
| | 0x08050080 | | | 0x08050080 |
| + | | |
| | [[AMFile:SetSize|SetSize]] | | | [[AMFile:SetSize|SetSize]] |
| + | |- |
| + | | 0x08060000 |
| + | | |
| + | | [[AMFile:GetAttributes|GetAttributes]] |
| + | |- |
| + | | 0x08070000 |
| + | | |
| + | | [[AMFile:SetAttributes|SetAttributes]] |
| |- | | |- |
| | 0x08080000 | | | 0x08080000 |
| + | | |
| | [[AMFile:Close|Close]] | | | [[AMFile:Close|Close]] |
| + | |- |
| + | | 0x08090000 |
| + | | |
| + | | [[AMFile:Flush|Flush]] |
| + | |- |
| + | | 0x080A0000 |
| + | | |
| + | | This just returns 0. |
| + | |- |
| + | | 0x080B0000 |
| + | | |
| + | | This just returns 0. |
| + | |- |
| + | | 0x080C0000 |
| + | | |
| + | | This just returns 0. |
| |} | | |} |
| | | |
− | These are identical to [[Filesystem_services#File_service|FSFile]].
| + | This is similar to [[Filesystem_services#File_service|FSFile]]. |
| + | |
| + | For handling each command that's actually implemented, the AM cmdhandler function calls a vtable funcptr. |
| + | |
| + | The private port for this seems to be referred to as "am:pipe", even though the "am:pipe" string isn't actually used. |
| + | |
| + | =Types= |
| + | ==TicketInfo== |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Length |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Title ID |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | Ticket ID |
| + | |- |
| + | | 0x10 |
| + | | 0x2 |
| + | | Version |
| + | |- |
| + | | 0x12 |
| + | | 0x2 |
| + | | Padding |
| + | |- |
| + | | 0x14 |
| + | | 0x4 |
| + | | Size |
| + | |} |
| + | |
| + | ==TitleInfo== |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Length |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Title ID |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | Size |
| + | |- |
| + | | 0x10 |
| + | | 0x2 |
| + | | Version |
| + | |- |
| + | | 0x12 |
| + | | 0x2 |
| + | | Padding |
| + | |- |
| + | | 0x14 |
| + | | 0x4 |
| + | | Type |
| + | |} |
| + | |
| + | ==ContentInfo== |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Length |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x2 |
| + | | Index |
| + | |- |
| + | | 0x2 |
| + | | 0x2 |
| + | | [[Title_metadata#Content_Type_flags|Content Type Flags]] from [[Title_metadata|TMD]] |
| + | |- |
| + | | 0x4 |
| + | | 0x4 |
| + | | Content ID |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | Size |
| + | |- |
| + | | 0x10 |
| + | | 0x1 |
| + | | Bit 0: Downloaded, Bit 1: Owned |
| + | |- |
| + | | 0x11 |
| + | | 0x7 |
| + | | Padding |
| + | |} |
| + | |
| + | ==ImportTitleContext== |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Length |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Title ID |
| + | |- |
| + | | 0x8 |
| + | | 0x2 |
| + | | Version |
| + | |- |
| + | | 0xA |
| + | | 0x2 |
| + | | State |
| + | |- |
| + | | 0xC |
| + | | 0x4 |
| + | | Type |
| + | |- |
| + | | 0x10 |
| + | | 0x8 |
| + | | Size |
| + | |} |
| + | |
| + | ===ImportTitleContextState=== |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value |
| + | ! Description |
| + | |- |
| + | | 0 |
| + | | None |
| + | |- |
| + | | 1 |
| + | | Waiting for import |
| + | |- |
| + | | 2 |
| + | | Resumable |
| + | |- |
| + | | 3 |
| + | | Waiting for commit |
| + | |- |
| + | | 4 |
| + | | Already exists |
| + | |- |
| + | | 5 |
| + | | Deleting |
| + | |- |
| + | | 6 |
| + | | Needs cleanup |
| + | |} |
| + | |
| + | ==ImportContentContext== |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Length |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x4 |
| + | | Content ID |
| + | |- |
| + | | 0x4 |
| + | | 0x2 |
| + | | Index |
| + | |- |
| + | | 0x6 |
| + | | 0x2 |
| + | | Type |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | Size |
| + | |- |
| + | | 0x10 |
| + | | 0x8 |
| + | | Current Install Offset |
| + | |} |
| + | |
| + | ==TwlBackupInfo== |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Length |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Title ID |
| + | |- |
| + | | 0x8 |
| + | | 0x2 |
| + | | Group ID |
| + | |- |
| + | | 0xA |
| + | | 0x2 |
| + | | Title Version |
| + | |- |
| + | | 0xC |
| + | | 0x4 |
| + | | public.sav size |
| + | |- |
| + | | 0x10 |
| + | | 0x4 |
| + | | private.sav size |
| + | |- |
| + | | 0x14 |
| + | | 0x4 |
| + | | Unused, padding. |
| + | |- |
| + | | 0x18 |
| + | | 0x8 |
| + | | u64, required space in bytes for installation (aligned to 0x4000, used to show amount of blocks in system settings) |
| + | |- |
| + | |} |
| | | |
| =Errors= | | =Errors= |
| See [[Application_Manager_Services_PXI|this]]. | | See [[Application_Manager_Services_PXI|this]]. |