Use IPC:MakeHeader instead of hardcoded raw values for IPC command tables. (#6453)

* Use IPC:MakeHeader instead of hardcoded values for IPC command tables.

* Use u32 instead of unsigned int in MakeHeader function

Co-authored-by: SachinVin <26602104+SachinVin@users.noreply.github.com>

* Fix clang format

---------

Co-authored-by: SachinVin <26602104+SachinVin@users.noreply.github.com>
This commit is contained in:
PabloMK7 2023-04-28 07:31:03 +02:00 committed by GitHub
parent 9bd8c9290b
commit 63bc0b59bb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
74 changed files with 1983 additions and 1896 deletions

View file

@ -9,19 +9,21 @@ namespace Service::AM {
AM_APP::AM_APP(std::shared_ptr<Module> am) : Module::Interface(std::move(am), "am:app", 5) {
static const FunctionInfo functions[] = {
{0x100100C0, &AM_APP::GetDLCContentInfoCount, "GetDLCContentInfoCount"},
{0x10020104, &AM_APP::FindDLCContentInfos, "FindDLCContentInfos"},
{0x10030142, &AM_APP::ListDLCContentInfos, "ListDLCContentInfos"},
{0x10040102, &AM_APP::DeleteContents, "DeleteContents"},
{0x10050084, &AM_APP::GetDLCTitleInfos, "GetDLCTitleInfos"},
{0x10060080, nullptr, "GetNumDataTitleTickets"},
{0x10070102, &AM_APP::ListDataTitleTicketInfos, "ListDataTitleTicketInfos"},
{0x100801C2, nullptr, "GetItemRights"},
{0x100900C0, nullptr, "IsDataTitleInUse"},
{0x100A0000, nullptr, "IsExternalTitleDatabaseInitialized"},
{0x100B00C0, nullptr, "GetNumExistingContentInfos"},
{0x100C0142, nullptr, "ListExistingContentInfos"},
{0x100D0084, &AM_APP::GetPatchTitleInfos, "GetPatchTitleInfos"},
// clang-format off
{IPC::MakeHeader(0x1001, 3, 0), &AM_APP::GetDLCContentInfoCount, "GetDLCContentInfoCount"},
{IPC::MakeHeader(0x1002, 4, 4), &AM_APP::FindDLCContentInfos, "FindDLCContentInfos"},
{IPC::MakeHeader(0x1003, 5, 2), &AM_APP::ListDLCContentInfos, "ListDLCContentInfos"},
{IPC::MakeHeader(0x1004, 4, 2), &AM_APP::DeleteContents, "DeleteContents"},
{IPC::MakeHeader(0x1005, 2, 4), &AM_APP::GetDLCTitleInfos, "GetDLCTitleInfos"},
{IPC::MakeHeader(0x1006, 2, 0), nullptr, "GetNumDataTitleTickets"},
{IPC::MakeHeader(0x1007, 4, 2), &AM_APP::ListDataTitleTicketInfos, "ListDataTitleTicketInfos"},
{IPC::MakeHeader(0x1008, 7, 2), nullptr, "GetItemRights"},
{IPC::MakeHeader(0x1009, 3, 0), nullptr, "IsDataTitleInUse"},
{IPC::MakeHeader(0x100A, 0, 0), nullptr, "IsExternalTitleDatabaseInitialized"},
{IPC::MakeHeader(0x100B, 3, 0), nullptr, "GetNumExistingContentInfos"},
{IPC::MakeHeader(0x100C, 5, 2), nullptr, "ListExistingContentInfos"},
{IPC::MakeHeader(0x100D, 2, 4), &AM_APP::GetPatchTitleInfos, "GetPatchTitleInfos"},
// clang-format on
};
RegisterHandlers(functions);
}

View file

@ -9,116 +9,118 @@ namespace Service::AM {
AM_NET::AM_NET(std::shared_ptr<Module> am) : Module::Interface(std::move(am), "am:net", 5) {
static const FunctionInfo functions[] = {
{0x00010040, &AM_NET::GetNumPrograms, "GetNumPrograms"},
{0x00020082, &AM_NET::GetProgramList, "GetProgramList"},
{0x00030084, &AM_NET::GetProgramInfos, "GetProgramInfos"},
{0x000400C0, &AM_NET::DeleteUserProgram, "DeleteUserProgram"},
{0x000500C0, &AM_NET::GetProductCode, "GetProductCode"},
{0x000600C0, nullptr, "GetStorageId"},
{0x00070080, &AM_NET::DeleteTicket, "DeleteTicket"},
{0x00080000, &AM_NET::GetNumTickets, "GetNumTickets"},
{0x00090082, &AM_NET::GetTicketList, "GetTicketList"},
{0x000A0000, nullptr, "GetDeviceID"},
{0x000B0040, nullptr, "GetNumImportTitleContexts"},
{0x000C0082, nullptr, "GetImportTitleContextList"},
{0x000D0084, nullptr, "GetImportTitleContexts"},
{0x000E00C0, nullptr, "DeleteImportTitleContext"},
{0x000F00C0, nullptr, "GetNumImportContentContexts"},
{0x00100102, nullptr, "GetImportContentContextList"},
{0x00110104, nullptr, "GetImportContentContexts"},
{0x00120102, nullptr, "DeleteImportContentContexts"},
{0x00130040, nullptr, "NeedsCleanup"},
{0x00140040, nullptr, "DoCleanup"},
{0x00150040, nullptr, "DeleteAllImportContexts"},
{0x00160000, nullptr, "DeleteAllTemporaryPrograms"},
{0x00170044, nullptr, "ImportTwlBackupLegacy"},
{0x00180080, nullptr, "InitializeTitleDatabase"},
{0x00190040, nullptr, "QueryAvailableTitleDatabase"},
{0x001A00C0, nullptr, "CalcTwlBackupSize"},
{0x001B0144, nullptr, "ExportTwlBackup"},
{0x001C0084, nullptr, "ImportTwlBackup"},
{0x001D0000, nullptr, "DeleteAllTwlUserPrograms"},
{0x001E00C8, nullptr, "ReadTwlBackupInfo"},
{0x001F0040, nullptr, "DeleteAllExpiredUserPrograms"},
{0x00200000, nullptr, "GetTwlArchiveResourceInfo"},
{0x00210042, nullptr, "GetPersonalizedTicketInfoList"},
{0x00220080, nullptr, "DeleteAllImportContextsFiltered"},
{0x00230080, nullptr, "GetNumImportTitleContextsFiltered"},
{0x002400C2, nullptr, "GetImportTitleContextListFiltered"},
{0x002500C0, nullptr, "CheckContentRights"},
{0x00260044, nullptr, "GetTicketLimitInfos"},
{0x00270044, nullptr, "GetDemoLaunchInfos"},
{0x00280108, nullptr, "ReadTwlBackupInfoEx"},
{0x00290082, nullptr, "DeleteUserProgramsAtomically"},
{0x002A00C0, nullptr, "GetNumExistingContentInfosSystem"},
{0x002B0142, nullptr, "ListExistingContentInfosSystem"},
{0x002C0084, nullptr, "GetProgramInfosIgnorePlatform"},
{0x002D00C0, nullptr, "CheckContentRightsIgnorePlatform"},
{0x04010080, nullptr, "UpdateFirmwareTo"},
{0x04020040, &AM_NET::BeginImportProgram, "BeginImportProgram"},
{0x04030000, nullptr, "BeginImportProgramTemporarily"},
{0x04040002, nullptr, "CancelImportProgram"},
{0x04050002, &AM_NET::EndImportProgram, "EndImportProgram"},
{0x04060002, nullptr, "EndImportProgramWithoutCommit"},
{0x040700C2, nullptr, "CommitImportPrograms"},
{0x04080042, &AM_NET::GetProgramInfoFromCia, "GetProgramInfoFromCia"},
{0x04090004, &AM_NET::GetSystemMenuDataFromCia, "GetSystemMenuDataFromCia"},
{0x040A0002, &AM_NET::GetDependencyListFromCia, "GetDependencyListFromCia"},
{0x040B0002, &AM_NET::GetTransferSizeFromCia, "GetTransferSizeFromCia"},
{0x040C0002, &AM_NET::GetCoreVersionFromCia, "GetCoreVersionFromCia"},
{0x040D0042, &AM_NET::GetRequiredSizeFromCia, "GetRequiredSizeFromCia"},
{0x040E00C2, nullptr, "CommitImportProgramsAndUpdateFirmwareAuto"},
{0x040F0000, nullptr, "UpdateFirmwareAuto"},
{0x041000C0, &AM_NET::DeleteProgram, "DeleteProgram"},
{0x04110044, nullptr, "GetTwlProgramListForReboot"},
{0x04120000, nullptr, "GetSystemUpdaterMutex"},
{0x04130002, &AM_NET::GetMetaSizeFromCia, "GetMetaSizeFromCia"},
{0x04140044, &AM_NET::GetMetaDataFromCia, "GetMetaDataFromCia"},
{0x04150080, nullptr, "CheckDemoLaunchRights"},
{0x041600C0, nullptr, "GetInternalTitleLocationInfo"},
{0x041700C0, nullptr, "PerpetuateAgbSaveData"},
{0x04180040, nullptr, "BeginImportProgramForOverWrite"},
{0x04190000, nullptr, "BeginImportSystemProgram"},
{0x08010000, nullptr, "BeginImportTicket"},
{0x08020002, nullptr, "CancelImportTicket"},
{0x08030002, nullptr, "EndImportTicket"},
{0x08040100, nullptr, "BeginImportTitle"},
{0x08050000, nullptr, "StopImportTitle"},
{0x080600C0, nullptr, "ResumeImportTitle"},
{0x08070000, nullptr, "CancelImportTitle"},
{0x08080000, nullptr, "EndImportTitle"},
{0x080900C2, nullptr, "CommitImportTitles"},
{0x080A0000, nullptr, "BeginImportTmd"},
{0x080B0002, nullptr, "CancelImportTmd"},
{0x080C0042, nullptr, "EndImportTmd"},
{0x080D0042, nullptr, "CreateImportContentContexts"},
{0x080E0040, nullptr, "BeginImportContent"},
{0x080F0002, nullptr, "StopImportContent"},
{0x08100040, nullptr, "ResumeImportContent"},
{0x08110002, nullptr, "CancelImportContent"},
{0x08120002, nullptr, "EndImportContent"},
{0x08130000, nullptr, "GetNumCurrentImportContentContexts"},
{0x08140042, nullptr, "GetCurrentImportContentContextList"},
{0x08150044, nullptr, "GetCurrentImportContentContexts"},
{0x08160146, nullptr, "Sign"},
{0x08170146, nullptr, "Verify"},
{0x08180042, nullptr, "GetDeviceCert"},
{0x08190108, nullptr, "ImportCertificates"},
{0x081A0042, nullptr, "ImportCertificate"},
{0x081B00C2, nullptr, "CommitImportTitlesAndUpdateFirmwareAuto"},
{0x081C0100, nullptr, "DeleteTicketId"},
{0x081D0080, nullptr, "GetNumTicketIds"},
{0x081E0102, nullptr, "GetTicketIdList"},
{0x081F0080, nullptr, "GetNumTicketsOfProgram"},
{0x08200102, nullptr, "ListTicketInfos"},
{0x08210142, nullptr, "GetRightsOnlyTicketData"},
{0x08220000, nullptr, "GetNumCurrentContentInfos"},
{0x08230044, nullptr, "FindCurrentContentInfos"},
{0x08240082, nullptr, "ListCurrentContentInfos"},
{0x08250102, nullptr, "CalculateContextRequiredSize"},
{0x08260042, nullptr, "UpdateImportContentContexts"},
{0x08270000, nullptr, "DeleteAllDemoLaunchInfos"},
{0x082800C0, nullptr, "BeginImportTitleForOverWrite"},
// clang-format off
{IPC::MakeHeader(0x0001, 1, 0), &AM_NET::GetNumPrograms, "GetNumPrograms"},
{IPC::MakeHeader(0x0002, 2, 2), &AM_NET::GetProgramList, "GetProgramList"},
{IPC::MakeHeader(0x0003, 2, 4), &AM_NET::GetProgramInfos, "GetProgramInfos"},
{IPC::MakeHeader(0x0004, 3, 0), &AM_NET::DeleteUserProgram, "DeleteUserProgram"},
{IPC::MakeHeader(0x0005, 3, 0), &AM_NET::GetProductCode, "GetProductCode"},
{IPC::MakeHeader(0x0006, 3, 0), nullptr, "GetStorageId"},
{IPC::MakeHeader(0x0007, 2, 0), &AM_NET::DeleteTicket, "DeleteTicket"},
{IPC::MakeHeader(0x0008, 0, 0), &AM_NET::GetNumTickets, "GetNumTickets"},
{IPC::MakeHeader(0x0009, 2, 2), &AM_NET::GetTicketList, "GetTicketList"},
{IPC::MakeHeader(0x000A, 0, 0), nullptr, "GetDeviceID"},
{IPC::MakeHeader(0x000B, 1, 0), nullptr, "GetNumImportTitleContexts"},
{IPC::MakeHeader(0x000C, 2, 2), nullptr, "GetImportTitleContextList"},
{IPC::MakeHeader(0x000D, 2, 4), nullptr, "GetImportTitleContexts"},
{IPC::MakeHeader(0x000E, 3, 0), nullptr, "DeleteImportTitleContext"},
{IPC::MakeHeader(0x000F, 3, 0), nullptr, "GetNumImportContentContexts"},
{IPC::MakeHeader(0x0010, 4, 2), nullptr, "GetImportContentContextList"},
{IPC::MakeHeader(0x0011, 4, 4), nullptr, "GetImportContentContexts"},
{IPC::MakeHeader(0x0012, 4, 2), nullptr, "DeleteImportContentContexts"},
{IPC::MakeHeader(0x0013, 1, 0), nullptr, "NeedsCleanup"},
{IPC::MakeHeader(0x0014, 1, 0), nullptr, "DoCleanup"},
{IPC::MakeHeader(0x0015, 1, 0), nullptr, "DeleteAllImportContexts"},
{IPC::MakeHeader(0x0016, 0, 0), nullptr, "DeleteAllTemporaryPrograms"},
{IPC::MakeHeader(0x0017, 1, 4), nullptr, "ImportTwlBackupLegacy"},
{IPC::MakeHeader(0x0018, 2, 0), nullptr, "InitializeTitleDatabase"},
{IPC::MakeHeader(0x0019, 1, 0), nullptr, "QueryAvailableTitleDatabase"},
{IPC::MakeHeader(0x001A, 3, 0), nullptr, "CalcTwlBackupSize"},
{IPC::MakeHeader(0x001B, 5, 4), nullptr, "ExportTwlBackup"},
{IPC::MakeHeader(0x001C, 2, 4), nullptr, "ImportTwlBackup"},
{IPC::MakeHeader(0x001D, 0, 0), nullptr, "DeleteAllTwlUserPrograms"},
{IPC::MakeHeader(0x001E, 3, 8), nullptr, "ReadTwlBackupInfo"},
{IPC::MakeHeader(0x001F, 1, 0), nullptr, "DeleteAllExpiredUserPrograms"},
{IPC::MakeHeader(0x0020, 0, 0), nullptr, "GetTwlArchiveResourceInfo"},
{IPC::MakeHeader(0x0021, 1, 2), nullptr, "GetPersonalizedTicketInfoList"},
{IPC::MakeHeader(0x0022, 2, 0), nullptr, "DeleteAllImportContextsFiltered"},
{IPC::MakeHeader(0x0023, 2, 0), nullptr, "GetNumImportTitleContextsFiltered"},
{IPC::MakeHeader(0x0024, 3, 2), nullptr, "GetImportTitleContextListFiltered"},
{IPC::MakeHeader(0x0025, 3, 0), nullptr, "CheckContentRights"},
{IPC::MakeHeader(0x0026, 1, 4), nullptr, "GetTicketLimitInfos"},
{IPC::MakeHeader(0x0027, 1, 4), nullptr, "GetDemoLaunchInfos"},
{IPC::MakeHeader(0x0028, 4, 8), nullptr, "ReadTwlBackupInfoEx"},
{IPC::MakeHeader(0x0029, 2, 2), nullptr, "DeleteUserProgramsAtomically"},
{IPC::MakeHeader(0x002A, 3, 0), nullptr, "GetNumExistingContentInfosSystem"},
{IPC::MakeHeader(0x002B, 5, 2), nullptr, "ListExistingContentInfosSystem"},
{IPC::MakeHeader(0x002C, 2, 4), nullptr, "GetProgramInfosIgnorePlatform"},
{IPC::MakeHeader(0x002D, 3, 0), nullptr, "CheckContentRightsIgnorePlatform"},
{IPC::MakeHeader(0x0401, 2, 0), nullptr, "UpdateFirmwareTo"},
{IPC::MakeHeader(0x0402, 1, 0), &AM_NET::BeginImportProgram, "BeginImportProgram"},
{IPC::MakeHeader(0x0403, 0, 0), nullptr, "BeginImportProgramTemporarily"},
{IPC::MakeHeader(0x0404, 0, 2), nullptr, "CancelImportProgram"},
{IPC::MakeHeader(0x0405, 0, 2), &AM_NET::EndImportProgram, "EndImportProgram"},
{IPC::MakeHeader(0x0406, 0, 2), nullptr, "EndImportProgramWithoutCommit"},
{IPC::MakeHeader(0x0407, 3, 2), nullptr, "CommitImportPrograms"},
{IPC::MakeHeader(0x0408, 1, 2), &AM_NET::GetProgramInfoFromCia, "GetProgramInfoFromCia"},
{IPC::MakeHeader(0x0409, 0, 4), &AM_NET::GetSystemMenuDataFromCia, "GetSystemMenuDataFromCia"},
{IPC::MakeHeader(0x040A, 0, 2), &AM_NET::GetDependencyListFromCia, "GetDependencyListFromCia"},
{IPC::MakeHeader(0x040B, 0, 2), &AM_NET::GetTransferSizeFromCia, "GetTransferSizeFromCia"},
{IPC::MakeHeader(0x040C, 0, 2), &AM_NET::GetCoreVersionFromCia, "GetCoreVersionFromCia"},
{IPC::MakeHeader(0x040D, 1, 2), &AM_NET::GetRequiredSizeFromCia, "GetRequiredSizeFromCia"},
{IPC::MakeHeader(0x040E, 3, 2), nullptr, "CommitImportProgramsAndUpdateFirmwareAuto"},
{IPC::MakeHeader(0x040F, 0, 0), nullptr, "UpdateFirmwareAuto"},
{IPC::MakeHeader(0x0410, 3, 0), &AM_NET::DeleteProgram, "DeleteProgram"},
{IPC::MakeHeader(0x0411, 1, 4), nullptr, "GetTwlProgramListForReboot"},
{IPC::MakeHeader(0x0412, 0, 0), nullptr, "GetSystemUpdaterMutex"},
{IPC::MakeHeader(0x0413, 0, 2), &AM_NET::GetMetaSizeFromCia, "GetMetaSizeFromCia"},
{IPC::MakeHeader(0x0414, 1, 4), &AM_NET::GetMetaDataFromCia, "GetMetaDataFromCia"},
{IPC::MakeHeader(0x0415, 2, 0), nullptr, "CheckDemoLaunchRights"},
{IPC::MakeHeader(0x0416, 3, 0), nullptr, "GetInternalTitleLocationInfo"},
{IPC::MakeHeader(0x0417, 3, 0), nullptr, "PerpetuateAgbSaveData"},
{IPC::MakeHeader(0x0418, 1, 0), nullptr, "BeginImportProgramForOverWrite"},
{IPC::MakeHeader(0x0419, 0, 0), nullptr, "BeginImportSystemProgram"},
{IPC::MakeHeader(0x0801, 0, 0), nullptr, "BeginImportTicket"},
{IPC::MakeHeader(0x0802, 0, 2), nullptr, "CancelImportTicket"},
{IPC::MakeHeader(0x0803, 0, 2), nullptr, "EndImportTicket"},
{IPC::MakeHeader(0x0804, 4, 0), nullptr, "BeginImportTitle"},
{IPC::MakeHeader(0x0805, 0, 0), nullptr, "StopImportTitle"},
{IPC::MakeHeader(0x0806, 3, 0), nullptr, "ResumeImportTitle"},
{IPC::MakeHeader(0x0807, 0, 0), nullptr, "CancelImportTitle"},
{IPC::MakeHeader(0x0808, 0, 0), nullptr, "EndImportTitle"},
{IPC::MakeHeader(0x0809, 3, 2), nullptr, "CommitImportTitles"},
{IPC::MakeHeader(0x080A, 0, 0), nullptr, "BeginImportTmd"},
{IPC::MakeHeader(0x080B, 0, 2), nullptr, "CancelImportTmd"},
{IPC::MakeHeader(0x080C, 1, 2), nullptr, "EndImportTmd"},
{IPC::MakeHeader(0x080D, 1, 2), nullptr, "CreateImportContentContexts"},
{IPC::MakeHeader(0x080E, 1, 0), nullptr, "BeginImportContent"},
{IPC::MakeHeader(0x080F, 0, 2), nullptr, "StopImportContent"},
{IPC::MakeHeader(0x0810, 1, 0), nullptr, "ResumeImportContent"},
{IPC::MakeHeader(0x0811, 0, 2), nullptr, "CancelImportContent"},
{IPC::MakeHeader(0x0812, 0, 2), nullptr, "EndImportContent"},
{IPC::MakeHeader(0x0813, 0, 0), nullptr, "GetNumCurrentImportContentContexts"},
{IPC::MakeHeader(0x0814, 1, 2), nullptr, "GetCurrentImportContentContextList"},
{IPC::MakeHeader(0x0815, 1, 4), nullptr, "GetCurrentImportContentContexts"},
{IPC::MakeHeader(0x0816, 5, 6), nullptr, "Sign"},
{IPC::MakeHeader(0x0817, 5, 6), nullptr, "Verify"},
{IPC::MakeHeader(0x0818, 1, 2), nullptr, "GetDeviceCert"},
{IPC::MakeHeader(0x0819, 4, 8), nullptr, "ImportCertificates"},
{IPC::MakeHeader(0x081A, 1, 2), nullptr, "ImportCertificate"},
{IPC::MakeHeader(0x081B, 3, 2), nullptr, "CommitImportTitlesAndUpdateFirmwareAuto"},
{IPC::MakeHeader(0x081C, 4, 0), nullptr, "DeleteTicketId"},
{IPC::MakeHeader(0x081D, 2, 0), nullptr, "GetNumTicketIds"},
{IPC::MakeHeader(0x081E, 4, 2), nullptr, "GetTicketIdList"},
{IPC::MakeHeader(0x081F, 2, 0), nullptr, "GetNumTicketsOfProgram"},
{IPC::MakeHeader(0x0820, 4, 2), nullptr, "ListTicketInfos"},
{IPC::MakeHeader(0x0821, 5, 2), nullptr, "GetRightsOnlyTicketData"},
{IPC::MakeHeader(0x0822, 0, 0), nullptr, "GetNumCurrentContentInfos"},
{IPC::MakeHeader(0x0823, 1, 4), nullptr, "FindCurrentContentInfos"},
{IPC::MakeHeader(0x0824, 2, 2), nullptr, "ListCurrentContentInfos"},
{IPC::MakeHeader(0x0825, 4, 2), nullptr, "CalculateContextRequiredSize"},
{IPC::MakeHeader(0x0826, 1, 2), nullptr, "UpdateImportContentContexts"},
{IPC::MakeHeader(0x0827, 0, 0), nullptr, "DeleteAllDemoLaunchInfos"},
{IPC::MakeHeader(0x0828, 3, 0), nullptr, "BeginImportTitleForOverWrite"},
// clang-format on
};
RegisterHandlers(functions);
}

View file

@ -9,64 +9,66 @@ namespace Service::AM {
AM_SYS::AM_SYS(std::shared_ptr<Module> am) : Module::Interface(std::move(am), "am:sys", 5) {
static const FunctionInfo functions[] = {
{0x00010040, &AM_SYS::GetNumPrograms, "GetNumPrograms"},
{0x00020082, &AM_SYS::GetProgramList, "GetProgramList"},
{0x00030084, &AM_SYS::GetProgramInfos, "GetProgramInfos"},
{0x000400C0, &AM_SYS::DeleteUserProgram, "DeleteUserProgram"},
{0x000500C0, &AM_SYS::GetProductCode, "GetProductCode"},
{0x000600C0, nullptr, "GetStorageId"},
{0x00070080, &AM_SYS::DeleteTicket, "DeleteTicket"},
{0x00080000, &AM_SYS::GetNumTickets, "GetNumTickets"},
{0x00090082, &AM_SYS::GetTicketList, "GetTicketList"},
{0x000A0000, nullptr, "GetDeviceID"},
{0x000B0040, nullptr, "GetNumImportTitleContexts"},
{0x000C0082, nullptr, "GetImportTitleContextList"},
{0x000D0084, nullptr, "GetImportTitleContexts"},
{0x000E00C0, nullptr, "DeleteImportTitleContext"},
{0x000F00C0, nullptr, "GetNumImportContentContexts"},
{0x00100102, nullptr, "GetImportContentContextList"},
{0x00110104, nullptr, "GetImportContentContexts"},
{0x00120102, nullptr, "DeleteImportContentContexts"},
{0x00130040, nullptr, "NeedsCleanup"},
{0x00140040, nullptr, "DoCleanup"},
{0x00150040, nullptr, "DeleteAllImportContexts"},
{0x00160000, nullptr, "DeleteAllTemporaryPrograms"},
{0x00170044, nullptr, "ImportTwlBackupLegacy"},
{0x00180080, nullptr, "InitializeTitleDatabase"},
{0x00190040, &AM_SYS::QueryAvailableTitleDatabase, "QueryAvailableTitleDatabase"},
{0x001A00C0, nullptr, "CalcTwlBackupSize"},
{0x001B0144, nullptr, "ExportTwlBackup"},
{0x001C0084, nullptr, "ImportTwlBackup"},
{0x001D0000, nullptr, "DeleteAllTwlUserPrograms"},
{0x001E00C8, nullptr, "ReadTwlBackupInfo"},
{0x001F0040, nullptr, "DeleteAllExpiredUserPrograms"},
{0x00200000, nullptr, "GetTwlArchiveResourceInfo"},
{0x00210042, nullptr, "GetPersonalizedTicketInfoList"},
{0x00220080, nullptr, "DeleteAllImportContextsFiltered"},
{0x00230080, nullptr, "GetNumImportTitleContextsFiltered"},
{0x002400C2, nullptr, "GetImportTitleContextListFiltered"},
{0x002500C0, &AM_SYS::CheckContentRights, "CheckContentRights"},
{0x00260044, nullptr, "GetTicketLimitInfos"},
{0x00270044, nullptr, "GetDemoLaunchInfos"},
{0x00280108, nullptr, "ReadTwlBackupInfoEx"},
{0x00290082, nullptr, "DeleteUserProgramsAtomically"},
{0x002A00C0, nullptr, "GetNumExistingContentInfosSystem"},
{0x002B0142, nullptr, "ListExistingContentInfosSystem"},
{0x002C0084, nullptr, "GetProgramInfosIgnorePlatform"},
{0x002D00C0, &AM_SYS::CheckContentRightsIgnorePlatform, "CheckContentRightsIgnorePlatform"},
{0x100100C0, &AM_SYS::GetDLCContentInfoCount, "GetDLCContentInfoCount"},
{0x10020104, &AM_SYS::FindDLCContentInfos, "FindDLCContentInfos"},
{0x10030142, &AM_SYS::ListDLCContentInfos, "ListDLCContentInfos"},
{0x10040102, &AM_SYS::DeleteContents, "DeleteContents"},
{0x10050084, &AM_SYS::GetDLCTitleInfos, "GetDLCTitleInfos"},
{0x10060080, nullptr, "GetNumDataTitleTickets"},
{0x10070102, &AM_SYS::ListDataTitleTicketInfos, "ListDataTitleTicketInfos"},
{0x100801C2, nullptr, "GetItemRights"},
{0x100900C0, nullptr, "IsDataTitleInUse"},
{0x100A0000, nullptr, "IsExternalTitleDatabaseInitialized"},
{0x100B00C0, nullptr, "GetNumExistingContentInfos"},
{0x100C0142, nullptr, "ListExistingContentInfos"},
{0x100D0084, &AM_SYS::GetPatchTitleInfos, "GetPatchTitleInfos"},
// clang-format off
{IPC::MakeHeader(0x0001, 1, 0), &AM_SYS::GetNumPrograms, "GetNumPrograms"},
{IPC::MakeHeader(0x0002, 2, 2), &AM_SYS::GetProgramList, "GetProgramList"},
{IPC::MakeHeader(0x0003, 2, 4), &AM_SYS::GetProgramInfos, "GetProgramInfos"},
{IPC::MakeHeader(0x0004, 3, 0), &AM_SYS::DeleteUserProgram, "DeleteUserProgram"},
{IPC::MakeHeader(0x0005, 3, 0), &AM_SYS::GetProductCode, "GetProductCode"},
{IPC::MakeHeader(0x0006, 3, 0), nullptr, "GetStorageId"},
{IPC::MakeHeader(0x0007, 2, 0), &AM_SYS::DeleteTicket, "DeleteTicket"},
{IPC::MakeHeader(0x0008, 0, 0), &AM_SYS::GetNumTickets, "GetNumTickets"},
{IPC::MakeHeader(0x0009, 2, 2), &AM_SYS::GetTicketList, "GetTicketList"},
{IPC::MakeHeader(0x000A, 0, 0), nullptr, "GetDeviceID"},
{IPC::MakeHeader(0x000B, 1, 0), nullptr, "GetNumImportTitleContexts"},
{IPC::MakeHeader(0x000C, 2, 2), nullptr, "GetImportTitleContextList"},
{IPC::MakeHeader(0x000D, 2, 4), nullptr, "GetImportTitleContexts"},
{IPC::MakeHeader(0x000E, 3, 0), nullptr, "DeleteImportTitleContext"},
{IPC::MakeHeader(0x000F, 3, 0), nullptr, "GetNumImportContentContexts"},
{IPC::MakeHeader(0x0010, 4, 2), nullptr, "GetImportContentContextList"},
{IPC::MakeHeader(0x0011, 4, 4), nullptr, "GetImportContentContexts"},
{IPC::MakeHeader(0x0012, 4, 2), nullptr, "DeleteImportContentContexts"},
{IPC::MakeHeader(0x0013, 1, 0), nullptr, "NeedsCleanup"},
{IPC::MakeHeader(0x0014, 1, 0), nullptr, "DoCleanup"},
{IPC::MakeHeader(0x0015, 1, 0), nullptr, "DeleteAllImportContexts"},
{IPC::MakeHeader(0x0016, 0, 0), nullptr, "DeleteAllTemporaryPrograms"},
{IPC::MakeHeader(0x0017, 1, 4), nullptr, "ImportTwlBackupLegacy"},
{IPC::MakeHeader(0x0018, 2, 0), nullptr, "InitializeTitleDatabase"},
{IPC::MakeHeader(0x0019, 1, 0), &AM_SYS::QueryAvailableTitleDatabase, "QueryAvailableTitleDatabase"},
{IPC::MakeHeader(0x001A, 3, 0), nullptr, "CalcTwlBackupSize"},
{IPC::MakeHeader(0x001B, 5, 4), nullptr, "ExportTwlBackup"},
{IPC::MakeHeader(0x001C, 2, 4), nullptr, "ImportTwlBackup"},
{IPC::MakeHeader(0x001D, 0, 0), nullptr, "DeleteAllTwlUserPrograms"},
{IPC::MakeHeader(0x001E, 3, 8), nullptr, "ReadTwlBackupInfo"},
{IPC::MakeHeader(0x001F, 1, 0), nullptr, "DeleteAllExpiredUserPrograms"},
{IPC::MakeHeader(0x0020, 0, 0), nullptr, "GetTwlArchiveResourceInfo"},
{IPC::MakeHeader(0x0021, 1, 2), nullptr, "GetPersonalizedTicketInfoList"},
{IPC::MakeHeader(0x0022, 2, 0), nullptr, "DeleteAllImportContextsFiltered"},
{IPC::MakeHeader(0x0023, 2, 0), nullptr, "GetNumImportTitleContextsFiltered"},
{IPC::MakeHeader(0x0024, 3, 2), nullptr, "GetImportTitleContextListFiltered"},
{IPC::MakeHeader(0x0025, 3, 0), &AM_SYS::CheckContentRights, "CheckContentRights"},
{IPC::MakeHeader(0x0026, 1, 4), nullptr, "GetTicketLimitInfos"},
{IPC::MakeHeader(0x0027, 1, 4), nullptr, "GetDemoLaunchInfos"},
{IPC::MakeHeader(0x0028, 4, 8), nullptr, "ReadTwlBackupInfoEx"},
{IPC::MakeHeader(0x0029, 2, 2), nullptr, "DeleteUserProgramsAtomically"},
{IPC::MakeHeader(0x002A, 3, 0), nullptr, "GetNumExistingContentInfosSystem"},
{IPC::MakeHeader(0x002B, 5, 2), nullptr, "ListExistingContentInfosSystem"},
{IPC::MakeHeader(0x002C, 2, 4), nullptr, "GetProgramInfosIgnorePlatform"},
{IPC::MakeHeader(0x002D, 3, 0), &AM_SYS::CheckContentRightsIgnorePlatform, "CheckContentRightsIgnorePlatform"},
{IPC::MakeHeader(0x1001, 3, 0), &AM_SYS::GetDLCContentInfoCount, "GetDLCContentInfoCount"},
{IPC::MakeHeader(0x1002, 4, 4), &AM_SYS::FindDLCContentInfos, "FindDLCContentInfos"},
{IPC::MakeHeader(0x1003, 5, 2), &AM_SYS::ListDLCContentInfos, "ListDLCContentInfos"},
{IPC::MakeHeader(0x1004, 4, 2), &AM_SYS::DeleteContents, "DeleteContents"},
{IPC::MakeHeader(0x1005, 2, 4), &AM_SYS::GetDLCTitleInfos, "GetDLCTitleInfos"},
{IPC::MakeHeader(0x1006, 2, 0), nullptr, "GetNumDataTitleTickets"},
{IPC::MakeHeader(0x1007, 4, 2), &AM_SYS::ListDataTitleTicketInfos, "ListDataTitleTicketInfos"},
{IPC::MakeHeader(0x1008, 7, 2), nullptr, "GetItemRights"},
{IPC::MakeHeader(0x1009, 3, 0), nullptr, "IsDataTitleInUse"},
{IPC::MakeHeader(0x100A, 0, 0), nullptr, "IsExternalTitleDatabaseInitialized"},
{IPC::MakeHeader(0x100B, 3, 0), nullptr, "GetNumExistingContentInfos"},
{IPC::MakeHeader(0x100C, 5, 2), nullptr, "ListExistingContentInfos"},
{IPC::MakeHeader(0x100D, 2, 4), &AM_SYS::GetPatchTitleInfos, "GetPatchTitleInfos"},
// clang-format on
};
RegisterHandlers(functions);
}

View file

@ -9,76 +9,78 @@ namespace Service::AM {
AM_U::AM_U(std::shared_ptr<Module> am) : Module::Interface(std::move(am), "am:u", 5) {
static const FunctionInfo functions[] = {
{0x00010040, &AM_U::GetNumPrograms, "GetNumPrograms"},
{0x00020082, &AM_U::GetProgramList, "GetProgramList"},
{0x00030084, &AM_U::GetProgramInfos, "GetProgramInfos"},
{0x000400C0, &AM_U::DeleteUserProgram, "DeleteUserProgram"},
{0x000500C0, &AM_U::GetProductCode, "GetProductCode"},
{0x000600C0, nullptr, "GetStorageId"},
{0x00070080, &AM_U::DeleteTicket, "DeleteTicket"},
{0x00080000, &AM_U::GetNumTickets, "GetNumTickets"},
{0x00090082, &AM_U::GetTicketList, "GetTicketList"},
{0x000A0000, nullptr, "GetDeviceID"},
{0x000B0040, nullptr, "GetNumImportTitleContexts"},
{0x000C0082, nullptr, "GetImportTitleContextList"},
{0x000D0084, nullptr, "GetImportTitleContexts"},
{0x000E00C0, nullptr, "DeleteImportTitleContext"},
{0x000F00C0, nullptr, "GetNumImportContentContexts"},
{0x00100102, nullptr, "GetImportContentContextList"},
{0x00110104, nullptr, "GetImportContentContexts"},
{0x00120102, nullptr, "DeleteImportContentContexts"},
{0x00130040, nullptr, "NeedsCleanup"},
{0x00140040, nullptr, "DoCleanup"},
{0x00150040, nullptr, "DeleteAllImportContexts"},
{0x00160000, nullptr, "DeleteAllTemporaryPrograms"},
{0x00170044, nullptr, "ImportTwlBackupLegacy"},
{0x00180080, nullptr, "InitializeTitleDatabase"},
{0x00190040, nullptr, "QueryAvailableTitleDatabase"},
{0x001A00C0, nullptr, "CalcTwlBackupSize"},
{0x001B0144, nullptr, "ExportTwlBackup"},
{0x001C0084, nullptr, "ImportTwlBackup"},
{0x001D0000, nullptr, "DeleteAllTwlUserPrograms"},
{0x001E00C8, nullptr, "ReadTwlBackupInfo"},
{0x001F0040, nullptr, "DeleteAllExpiredUserPrograms"},
{0x00200000, nullptr, "GetTwlArchiveResourceInfo"},
{0x00210042, nullptr, "GetPersonalizedTicketInfoList"},
{0x00220080, nullptr, "DeleteAllImportContextsFiltered"},
{0x00230080, nullptr, "GetNumImportTitleContextsFiltered"},
{0x002400C2, nullptr, "GetImportTitleContextListFiltered"},
{0x002500C0, nullptr, "CheckContentRights"},
{0x00260044, nullptr, "GetTicketLimitInfos"},
{0x00270044, nullptr, "GetDemoLaunchInfos"},
{0x00280108, nullptr, "ReadTwlBackupInfoEx"},
{0x00290082, nullptr, "DeleteUserProgramsAtomically"},
{0x002A00C0, nullptr, "GetNumExistingContentInfosSystem"},
{0x002B0142, nullptr, "ListExistingContentInfosSystem"},
{0x002C0084, nullptr, "GetProgramInfosIgnorePlatform"},
{0x002D00C0, nullptr, "CheckContentRightsIgnorePlatform"},
{0x04010080, nullptr, "UpdateFirmwareTo"},
{0x04020040, &AM_U::BeginImportProgram, "BeginImportProgram"},
{0x04030000, &AM_U::BeginImportProgramTemporarily, "BeginImportProgramTemporarily"},
{0x04040002, nullptr, "CancelImportProgram"},
{0x04050002, &AM_U::EndImportProgram, "EndImportProgram"},
{0x04060002, &AM_U::EndImportProgramWithoutCommit, "EndImportProgramWithoutCommit"},
{0x040700C2, &AM_U::CommitImportPrograms, "CommitImportPrograms"},
{0x04080042, &AM_U::GetProgramInfoFromCia, "GetProgramInfoFromCia"},
{0x04090004, &AM_U::GetSystemMenuDataFromCia, "GetSystemMenuDataFromCia"},
{0x040A0002, &AM_U::GetDependencyListFromCia, "GetDependencyListFromCia"},
{0x040B0002, &AM_U::GetTransferSizeFromCia, "GetTransferSizeFromCia"},
{0x040C0002, &AM_U::GetCoreVersionFromCia, "GetCoreVersionFromCia"},
{0x040D0042, &AM_U::GetRequiredSizeFromCia, "GetRequiredSizeFromCia"},
{0x040E00C2, nullptr, "CommitImportProgramsAndUpdateFirmwareAuto"},
{0x040F0000, nullptr, "UpdateFirmwareAuto"},
{0x041000C0, &AM_U::DeleteProgram, "DeleteProgram"},
{0x04110044, nullptr, "GetTwlProgramListForReboot"},
{0x04120000, &AM_U::GetSystemUpdaterMutex, "GetSystemUpdaterMutex"},
{0x04130002, &AM_U::GetMetaSizeFromCia, "GetMetaSizeFromCia"},
{0x04140044, &AM_U::GetMetaDataFromCia, "GetMetaDataFromCia"},
{0x04150080, nullptr, "CheckDemoLaunchRights"},
{0x041600C0, nullptr, "GetInternalTitleLocationInfo"},
{0x041700C0, nullptr, "PerpetuateAgbSaveData"},
{0x04180040, nullptr, "BeginImportProgramForOverWrite"},
{0x04190000, nullptr, "BeginImportSystemProgram"},
// clang-format off
{IPC::MakeHeader(0x0001, 1, 0), &AM_U::GetNumPrograms, "GetNumPrograms"},
{IPC::MakeHeader(0x0002, 2, 2), &AM_U::GetProgramList, "GetProgramList"},
{IPC::MakeHeader(0x0003, 2, 4), &AM_U::GetProgramInfos, "GetProgramInfos"},
{IPC::MakeHeader(0x0004, 3, 0), &AM_U::DeleteUserProgram, "DeleteUserProgram"},
{IPC::MakeHeader(0x0005, 3, 0), &AM_U::GetProductCode, "GetProductCode"},
{IPC::MakeHeader(0x0006, 3, 0), nullptr, "GetStorageId"},
{IPC::MakeHeader(0x0007, 2, 0), &AM_U::DeleteTicket, "DeleteTicket"},
{IPC::MakeHeader(0x0008, 0, 0), &AM_U::GetNumTickets, "GetNumTickets"},
{IPC::MakeHeader(0x0009, 2, 2), &AM_U::GetTicketList, "GetTicketList"},
{IPC::MakeHeader(0x000A, 0, 0), nullptr, "GetDeviceID"},
{IPC::MakeHeader(0x000B, 1, 0), nullptr, "GetNumImportTitleContexts"},
{IPC::MakeHeader(0x000C, 2, 2), nullptr, "GetImportTitleContextList"},
{IPC::MakeHeader(0x000D, 2, 4), nullptr, "GetImportTitleContexts"},
{IPC::MakeHeader(0x000E, 3, 0), nullptr, "DeleteImportTitleContext"},
{IPC::MakeHeader(0x000F, 3, 0), nullptr, "GetNumImportContentContexts"},
{IPC::MakeHeader(0x0010, 4, 2), nullptr, "GetImportContentContextList"},
{IPC::MakeHeader(0x0011, 4, 4), nullptr, "GetImportContentContexts"},
{IPC::MakeHeader(0x0012, 4, 2), nullptr, "DeleteImportContentContexts"},
{IPC::MakeHeader(0x0013, 1, 0), nullptr, "NeedsCleanup"},
{IPC::MakeHeader(0x0014, 1, 0), nullptr, "DoCleanup"},
{IPC::MakeHeader(0x0015, 1, 0), nullptr, "DeleteAllImportContexts"},
{IPC::MakeHeader(0x0016, 0, 0), nullptr, "DeleteAllTemporaryPrograms"},
{IPC::MakeHeader(0x0017, 1, 4), nullptr, "ImportTwlBackupLegacy"},
{IPC::MakeHeader(0x0018, 2, 0), nullptr, "InitializeTitleDatabase"},
{IPC::MakeHeader(0x0019, 1, 0), nullptr, "QueryAvailableTitleDatabase"},
{IPC::MakeHeader(0x001A, 3, 0), nullptr, "CalcTwlBackupSize"},
{IPC::MakeHeader(0x001B, 5, 4), nullptr, "ExportTwlBackup"},
{IPC::MakeHeader(0x001C, 2, 4), nullptr, "ImportTwlBackup"},
{IPC::MakeHeader(0x001D, 0, 0), nullptr, "DeleteAllTwlUserPrograms"},
{IPC::MakeHeader(0x001E, 3, 8), nullptr, "ReadTwlBackupInfo"},
{IPC::MakeHeader(0x001F, 1, 0), nullptr, "DeleteAllExpiredUserPrograms"},
{IPC::MakeHeader(0x0020, 0, 0), nullptr, "GetTwlArchiveResourceInfo"},
{IPC::MakeHeader(0x0021, 1, 2), nullptr, "GetPersonalizedTicketInfoList"},
{IPC::MakeHeader(0x0022, 2, 0), nullptr, "DeleteAllImportContextsFiltered"},
{IPC::MakeHeader(0x0023, 2, 0), nullptr, "GetNumImportTitleContextsFiltered"},
{IPC::MakeHeader(0x0024, 3, 2), nullptr, "GetImportTitleContextListFiltered"},
{IPC::MakeHeader(0x0025, 3, 0), nullptr, "CheckContentRights"},
{IPC::MakeHeader(0x0026, 1, 4), nullptr, "GetTicketLimitInfos"},
{IPC::MakeHeader(0x0027, 1, 4), nullptr, "GetDemoLaunchInfos"},
{IPC::MakeHeader(0x0028, 4, 8), nullptr, "ReadTwlBackupInfoEx"},
{IPC::MakeHeader(0x0029, 2, 2), nullptr, "DeleteUserProgramsAtomically"},
{IPC::MakeHeader(0x002A, 3, 0), nullptr, "GetNumExistingContentInfosSystem"},
{IPC::MakeHeader(0x002B, 5, 2), nullptr, "ListExistingContentInfosSystem"},
{IPC::MakeHeader(0x002C, 2, 4), nullptr, "GetProgramInfosIgnorePlatform"},
{IPC::MakeHeader(0x002D, 3, 0), nullptr, "CheckContentRightsIgnorePlatform"},
{IPC::MakeHeader(0x0401, 2, 0), nullptr, "UpdateFirmwareTo"},
{IPC::MakeHeader(0x0402, 1, 0), &AM_U::BeginImportProgram, "BeginImportProgram"},
{IPC::MakeHeader(0x0403, 0, 0), &AM_U::BeginImportProgramTemporarily, "BeginImportProgramTemporarily"},
{IPC::MakeHeader(0x0404, 0, 2), nullptr, "CancelImportProgram"},
{IPC::MakeHeader(0x0405, 0, 2), &AM_U::EndImportProgram, "EndImportProgram"},
{IPC::MakeHeader(0x0406, 0, 2), &AM_U::EndImportProgramWithoutCommit, "EndImportProgramWithoutCommit"},
{IPC::MakeHeader(0x0407, 3, 2), &AM_U::CommitImportPrograms, "CommitImportPrograms"},
{IPC::MakeHeader(0x0408, 1, 2), &AM_U::GetProgramInfoFromCia, "GetProgramInfoFromCia"},
{IPC::MakeHeader(0x0409, 0, 4), &AM_U::GetSystemMenuDataFromCia, "GetSystemMenuDataFromCia"},
{IPC::MakeHeader(0x040A, 0, 2), &AM_U::GetDependencyListFromCia, "GetDependencyListFromCia"},
{IPC::MakeHeader(0x040B, 0, 2), &AM_U::GetTransferSizeFromCia, "GetTransferSizeFromCia"},
{IPC::MakeHeader(0x040C, 0, 2), &AM_U::GetCoreVersionFromCia, "GetCoreVersionFromCia"},
{IPC::MakeHeader(0x040D, 1, 2), &AM_U::GetRequiredSizeFromCia, "GetRequiredSizeFromCia"},
{IPC::MakeHeader(0x040E, 3, 2), nullptr, "CommitImportProgramsAndUpdateFirmwareAuto"},
{IPC::MakeHeader(0x040F, 0, 0), nullptr, "UpdateFirmwareAuto"},
{IPC::MakeHeader(0x0410, 3, 0), &AM_U::DeleteProgram, "DeleteProgram"},
{IPC::MakeHeader(0x0411, 1, 4), nullptr, "GetTwlProgramListForReboot"},
{IPC::MakeHeader(0x0412, 0, 0), &AM_U::GetSystemUpdaterMutex, "GetSystemUpdaterMutex"},
{IPC::MakeHeader(0x0413, 0, 2), &AM_U::GetMetaSizeFromCia, "GetMetaSizeFromCia"},
{IPC::MakeHeader(0x0414, 1, 4), &AM_U::GetMetaDataFromCia, "GetMetaDataFromCia"},
{IPC::MakeHeader(0x0415, 2, 0), nullptr, "CheckDemoLaunchRights"},
{IPC::MakeHeader(0x0416, 3, 0), nullptr, "GetInternalTitleLocationInfo"},
{IPC::MakeHeader(0x0417, 3, 0), nullptr, "PerpetuateAgbSaveData"},
{IPC::MakeHeader(0x0418, 1, 0), nullptr, "BeginImportProgramForOverWrite"},
{IPC::MakeHeader(0x0419, 0, 0), nullptr, "BeginImportSystemProgram"},
// clang-format on
};
RegisterHandlers(functions);
}