diff options
| -rw-r--r-- | src/core/hle/service/am/am.cpp | 140 | ||||
| -rw-r--r-- | src/core/hle/service/am/am.h | 126 | ||||
| -rw-r--r-- | src/core/hle/service/am/am_app.cpp | 16 | ||||
| -rw-r--r-- | src/core/hle/service/am/am_net.cpp | 18 | ||||
| -rw-r--r-- | src/core/hle/service/am/am_sys.cpp | 22 | ||||
| -rw-r--r-- | src/core/hle/service/am/am_u.cpp | 18 |
6 files changed, 289 insertions, 51 deletions
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index 06be9940e..9591522e5 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp | |||
| @@ -2,6 +2,8 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <cinttypes> | ||
| 6 | |||
| 5 | #include "common/logging/log.h" | 7 | #include "common/logging/log.h" |
| 6 | 8 | ||
| 7 | #include "core/hle/service/service.h" | 9 | #include "core/hle/service/service.h" |
| @@ -9,30 +11,119 @@ | |||
| 9 | #include "core/hle/service/am/am_app.h" | 11 | #include "core/hle/service/am/am_app.h" |
| 10 | #include "core/hle/service/am/am_net.h" | 12 | #include "core/hle/service/am/am_net.h" |
| 11 | #include "core/hle/service/am/am_sys.h" | 13 | #include "core/hle/service/am/am_sys.h" |
| 14 | #include "core/hle/service/am/am_u.h" | ||
| 12 | 15 | ||
| 13 | namespace Service { | 16 | namespace Service { |
| 14 | namespace AM { | 17 | namespace AM { |
| 15 | 18 | ||
| 16 | void TitleIDListGetTotal(Service::Interface* self) { | 19 | static std::array<u32, 3> am_content_count = { 0, 0, 0 }; |
| 20 | static std::array<u32, 3> am_titles_count = { 0, 0, 0 }; | ||
| 21 | static std::array<u32, 3> am_titles_list_count = { 0, 0, 0 }; | ||
| 22 | static u32 am_ticket_count = 0; | ||
| 23 | static u32 am_ticket_list_count = 0; | ||
| 24 | |||
| 25 | void GetTitleCount(Service::Interface* self) { | ||
| 17 | u32* cmd_buff = Kernel::GetCommandBuffer(); | 26 | u32* cmd_buff = Kernel::GetCommandBuffer(); |
| 27 | |||
| 18 | u32 media_type = cmd_buff[1] & 0xFF; | 28 | u32 media_type = cmd_buff[1] & 0xFF; |
| 19 | 29 | ||
| 20 | cmd_buff[1] = RESULT_SUCCESS.raw; | 30 | cmd_buff[1] = RESULT_SUCCESS.raw; |
| 21 | cmd_buff[2] = 0; | 31 | cmd_buff[2] = am_titles_count[media_type]; |
| 32 | LOG_WARNING(Service_AM, "(STUBBED) media_type=%u, title_count=0x%08x", media_type, am_titles_count[media_type]); | ||
| 33 | } | ||
| 34 | |||
| 35 | void FindContentInfos(Service::Interface* self) { | ||
| 36 | u32* cmd_buff = Kernel::GetCommandBuffer(); | ||
| 37 | |||
| 38 | u32 media_type = cmd_buff[1] & 0xFF; | ||
| 39 | u64 title_id = (static_cast<u64>(cmd_buff[3]) << 32) | cmd_buff[2]; | ||
| 40 | u32 content_ids_pointer = cmd_buff[6]; | ||
| 41 | u32 content_info_pointer = cmd_buff[8]; | ||
| 42 | |||
| 43 | am_content_count[media_type] = cmd_buff[4]; | ||
| 22 | 44 | ||
| 23 | LOG_WARNING(Service_AM, "(STUBBED) media_type %u", media_type); | 45 | cmd_buff[1] = RESULT_SUCCESS.raw; |
| 46 | LOG_WARNING(Service_AM, "(STUBBED) media_type=%u, title_id=0x%016lx, content_cound=%u, content_ids_pointer=0x%08x, content_info_pointer=0x%08x", | ||
| 47 | media_type, title_id, am_content_count[media_type], content_ids_pointer, content_info_pointer); | ||
| 24 | } | 48 | } |
| 25 | 49 | ||
| 26 | void GetTitleIDList(Service::Interface* self) { | 50 | void ListContentInfos(Service::Interface* self) { |
| 27 | u32* cmd_buff = Kernel::GetCommandBuffer(); | 51 | u32* cmd_buff = Kernel::GetCommandBuffer(); |
| 28 | u32 num_titles = cmd_buff[1]; | 52 | |
| 29 | u32 media_type = cmd_buff[2] & 0xFF; | 53 | u32 media_type = cmd_buff[2] & 0xFF; |
| 30 | u32 addr = cmd_buff[4]; | 54 | u64 title_id = (static_cast<u64>(cmd_buff[4]) << 32) | cmd_buff[3]; |
| 55 | u32 start_index = cmd_buff[5]; | ||
| 56 | u32 content_info_pointer = cmd_buff[7]; | ||
| 57 | |||
| 58 | am_content_count[media_type] = cmd_buff[1]; | ||
| 31 | 59 | ||
| 32 | cmd_buff[1] = RESULT_SUCCESS.raw; | 60 | cmd_buff[1] = RESULT_SUCCESS.raw; |
| 33 | cmd_buff[2] = 0; | 61 | cmd_buff[2] = am_content_count[media_type]; |
| 62 | LOG_WARNING(Service_AM, "(STUBBED) media_type=%u, content_count=%u, title_id=0x%016" PRIx64 ", start_index=0x%08x, content_info_pointer=0x%08X", | ||
| 63 | media_type, am_content_count[media_type], title_id, start_index, content_info_pointer); | ||
| 64 | } | ||
| 65 | |||
| 66 | void DeleteContents(Service::Interface* self) { | ||
| 67 | u32* cmd_buff = Kernel::GetCommandBuffer(); | ||
| 68 | |||
| 69 | u32 media_type = cmd_buff[1] & 0xFF; | ||
| 70 | u64 title_id = (static_cast<u64>(cmd_buff[3]) << 32) | cmd_buff[2]; | ||
| 71 | u32 content_ids_pointer = cmd_buff[6]; | ||
| 34 | 72 | ||
| 35 | LOG_WARNING(Service_AM, "(STUBBED) Requested %u titles from media type %u. Address=0x%08X", num_titles, media_type, addr); | 73 | am_content_count[media_type] = cmd_buff[4]; |
| 74 | |||
| 75 | cmd_buff[1] = RESULT_SUCCESS.raw; | ||
| 76 | LOG_WARNING(Service_AM, "(STUBBED) media_type=%u, title_id=0x%016" PRIx64 ", content_count=%u, content_ids_pointer=0x%08x", | ||
| 77 | media_type, title_id, am_content_count[media_type], content_ids_pointer); | ||
| 78 | } | ||
| 79 | |||
| 80 | void GetTitleList(Service::Interface* self) { | ||
| 81 | u32* cmd_buff = Kernel::GetCommandBuffer(); | ||
| 82 | |||
| 83 | u32 media_type = cmd_buff[2] & 0xFF; | ||
| 84 | u32 title_ids_output_pointer = cmd_buff[4]; | ||
| 85 | |||
| 86 | am_titles_list_count[media_type] = cmd_buff[1]; | ||
| 87 | |||
| 88 | cmd_buff[1] = RESULT_SUCCESS.raw; | ||
| 89 | cmd_buff[2] = am_titles_list_count[media_type]; | ||
| 90 | LOG_WARNING(Service_AM, "(STUBBED) media_type=%u, titles_list_count=0x%08X, title_ids_output_pointer=0x%08X", | ||
| 91 | media_type, am_titles_list_count[media_type], title_ids_output_pointer); | ||
| 92 | } | ||
| 93 | |||
| 94 | void GetTitleInfo(Service::Interface* self) { | ||
| 95 | u32* cmd_buff = Kernel::GetCommandBuffer(); | ||
| 96 | |||
| 97 | u32 media_type = cmd_buff[1] & 0xFF; | ||
| 98 | u32 title_id_list_pointer = cmd_buff[4]; | ||
| 99 | u32 title_list_pointer = cmd_buff[6]; | ||
| 100 | |||
| 101 | am_titles_count[media_type] = cmd_buff[2]; | ||
| 102 | |||
| 103 | cmd_buff[1] = RESULT_SUCCESS.raw; | ||
| 104 | LOG_WARNING(Service_AM, "(STUBBED) media_type=%u, total_titles=0x%08X, title_id_list_pointer=0x%08X, title_list_pointer=0x%08X", | ||
| 105 | media_type, am_titles_count[media_type], title_id_list_pointer, title_list_pointer); | ||
| 106 | } | ||
| 107 | |||
| 108 | void GetDataTitleInfos(Service::Interface* self) { | ||
| 109 | GetTitleInfo(self); | ||
| 110 | |||
| 111 | LOG_WARNING(Service_AM, "(STUBBED) called"); | ||
| 112 | } | ||
| 113 | |||
| 114 | void ListDataTitleTicketInfos(Service::Interface* self) { | ||
| 115 | u32* cmd_buff = Kernel::GetCommandBuffer(); | ||
| 116 | |||
| 117 | u64 title_id = (static_cast<u64>(cmd_buff[3]) << 32) | cmd_buff[2]; | ||
| 118 | u32 start_index = cmd_buff[4]; | ||
| 119 | u32 ticket_info_pointer = cmd_buff[6]; | ||
| 120 | |||
| 121 | am_ticket_count = cmd_buff[1]; | ||
| 122 | |||
| 123 | cmd_buff[1] = RESULT_SUCCESS.raw; | ||
| 124 | cmd_buff[2] = am_ticket_count; | ||
| 125 | LOG_WARNING(Service_AM, "(STUBBED) ticket_count=0x%08X, title_id=0x%016" PRIx64 ", start_index=0x%08X, ticket_info_pointer=0x%08X", | ||
| 126 | am_ticket_count, title_id, start_index, ticket_info_pointer); | ||
| 36 | } | 127 | } |
| 37 | 128 | ||
| 38 | void GetNumContentInfos(Service::Interface* self) { | 129 | void GetNumContentInfos(Service::Interface* self) { |
| @@ -40,16 +131,47 @@ void GetNumContentInfos(Service::Interface* self) { | |||
| 40 | 131 | ||
| 41 | cmd_buff[1] = RESULT_SUCCESS.raw; | 132 | cmd_buff[1] = RESULT_SUCCESS.raw; |
| 42 | cmd_buff[2] = 1; // Number of content infos plus one | 133 | cmd_buff[2] = 1; // Number of content infos plus one |
| 43 | |||
| 44 | LOG_WARNING(Service_AM, "(STUBBED) called"); | 134 | LOG_WARNING(Service_AM, "(STUBBED) called"); |
| 45 | } | 135 | } |
| 46 | 136 | ||
| 137 | void DeleteTicket(Service::Interface* self) { | ||
| 138 | u32* cmd_buff = Kernel::GetCommandBuffer(); | ||
| 139 | |||
| 140 | u64 title_id = (static_cast<u64>(cmd_buff[2]) << 32) | cmd_buff[1]; | ||
| 141 | |||
| 142 | cmd_buff[1] = RESULT_SUCCESS.raw; | ||
| 143 | LOG_WARNING(Service_AM, "(STUBBED) called title_id=0x%016" PRIx64 "",title_id); | ||
| 144 | } | ||
| 145 | |||
| 146 | void GetTicketCount(Service::Interface* self) { | ||
| 147 | u32* cmd_buff = Kernel::GetCommandBuffer(); | ||
| 148 | |||
| 149 | cmd_buff[1] = RESULT_SUCCESS.raw; | ||
| 150 | cmd_buff[2] = am_ticket_count; | ||
| 151 | LOG_WARNING(Service_AM, "(STUBBED) called ticket_count=0x%08x",am_ticket_count); | ||
| 152 | } | ||
| 153 | |||
| 154 | void GetTicketList(Service::Interface* self) { | ||
| 155 | u32* cmd_buff = Kernel::GetCommandBuffer(); | ||
| 156 | |||
| 157 | u32 num_of_skip = cmd_buff[2]; | ||
| 158 | u32 ticket_list_pointer = cmd_buff[4]; | ||
| 159 | |||
| 160 | am_ticket_list_count = cmd_buff[1]; | ||
| 161 | |||
| 162 | cmd_buff[1] = RESULT_SUCCESS.raw; | ||
| 163 | cmd_buff[2] = am_ticket_list_count; | ||
| 164 | LOG_WARNING(Service_AM, "(STUBBED) ticket_list_count=0x%08x, num_of_skip=0x%08x, ticket_list_pointer=0x%08x", | ||
| 165 | am_ticket_list_count, num_of_skip, ticket_list_pointer); | ||
| 166 | } | ||
| 167 | |||
| 47 | void Init() { | 168 | void Init() { |
| 48 | using namespace Kernel; | 169 | using namespace Kernel; |
| 49 | 170 | ||
| 50 | AddService(new AM_APP_Interface); | 171 | AddService(new AM_APP_Interface); |
| 51 | AddService(new AM_NET_Interface); | 172 | AddService(new AM_NET_Interface); |
| 52 | AddService(new AM_SYS_Interface); | 173 | AddService(new AM_SYS_Interface); |
| 174 | AddService(new AM_U_Interface); | ||
| 53 | } | 175 | } |
| 54 | 176 | ||
| 55 | void Shutdown() { | 177 | void Shutdown() { |
diff --git a/src/core/hle/service/am/am.h b/src/core/hle/service/am/am.h index 15e63bc7b..5676cdd5f 100644 --- a/src/core/hle/service/am/am.h +++ b/src/core/hle/service/am/am.h | |||
| @@ -11,7 +11,7 @@ class Interface; | |||
| 11 | namespace AM { | 11 | namespace AM { |
| 12 | 12 | ||
| 13 | /** | 13 | /** |
| 14 | * AM::TitleIDListGetTotal service function | 14 | * AM::GetTitleCount service function |
| 15 | * Gets the number of installed titles in the requested media type | 15 | * Gets the number of installed titles in the requested media type |
| 16 | * Inputs: | 16 | * Inputs: |
| 17 | * 0 : Command header (0x00010040) | 17 | * 0 : Command header (0x00010040) |
| @@ -20,36 +20,140 @@ namespace AM { | |||
| 20 | * 1 : Result, 0 on success, otherwise error code | 20 | * 1 : Result, 0 on success, otherwise error code |
| 21 | * 2 : The number of titles in the requested media type | 21 | * 2 : The number of titles in the requested media type |
| 22 | */ | 22 | */ |
| 23 | void TitleIDListGetTotal(Service::Interface* self); | 23 | void GetTitleCount(Service::Interface* self); |
| 24 | 24 | ||
| 25 | /** | 25 | /** |
| 26 | * AM::GetTitleIDList service function | 26 | * AM::FindContentInfos service function |
| 27 | * Inputs: | ||
| 28 | * 1 : MediaType | ||
| 29 | * 2-3 : u64, Title ID | ||
| 30 | * 4 : Content count | ||
| 31 | * 6 : Content IDs pointer | ||
| 32 | * 8 : Content Infos pointer | ||
| 33 | * Outputs: | ||
| 34 | * 1 : Result, 0 on success, otherwise error code | ||
| 35 | */ | ||
| 36 | void FindContentInfos(Service::Interface* self); | ||
| 37 | |||
| 38 | /** | ||
| 39 | * AM::ListContentInfos service function | ||
| 40 | * Inputs: | ||
| 41 | * 1 : Content count | ||
| 42 | * 2 : MediaType | ||
| 43 | * 3-4 : u64, Title ID | ||
| 44 | * 5 : Start Index | ||
| 45 | * 7 : Content Infos pointer | ||
| 46 | * Outputs: | ||
| 47 | * 1 : Result, 0 on success, otherwise error code | ||
| 48 | * 2 : Number of content infos returned | ||
| 49 | */ | ||
| 50 | void ListContentInfos(Service::Interface* self); | ||
| 51 | |||
| 52 | /** | ||
| 53 | * AM::DeleteContents service function | ||
| 54 | * Inputs: | ||
| 55 | * 1 : MediaType | ||
| 56 | * 2-3 : u64, Title ID | ||
| 57 | * 4 : Content count | ||
| 58 | * 6 : Content IDs pointer | ||
| 59 | * Outputs: | ||
| 60 | * 1 : Result, 0 on success, otherwise error code | ||
| 61 | */ | ||
| 62 | void DeleteContents(Service::Interface* self); | ||
| 63 | |||
| 64 | /** | ||
| 65 | * AM::GetTitleList service function | ||
| 27 | * Loads information about the desired number of titles from the desired media type into an array | 66 | * Loads information about the desired number of titles from the desired media type into an array |
| 28 | * Inputs: | 67 | * Inputs: |
| 29 | * 0 : Command header (0x00020082) | 68 | * 1 : Title count |
| 30 | * 1 : The maximum number of titles to load | ||
| 31 | * 2 : Media type to load the titles from | 69 | * 2 : Media type to load the titles from |
| 32 | * 3 : Descriptor of the output buffer pointer | 70 | * 4 : Title IDs output pointer |
| 33 | * 4 : Address of the output buffer | ||
| 34 | * Outputs: | 71 | * Outputs: |
| 35 | * 1 : Result, 0 on success, otherwise error code | 72 | * 1 : Result, 0 on success, otherwise error code |
| 36 | * 2 : The number of titles loaded from the requested media type | 73 | * 2 : The number of titles loaded from the requested media type |
| 37 | */ | 74 | */ |
| 38 | void GetTitleIDList(Service::Interface* self); | 75 | void GetTitleList(Service::Interface* self); |
| 76 | |||
| 77 | /** | ||
| 78 | * AM::GetTitleInfo service function | ||
| 79 | * Inputs: | ||
| 80 | * 1 : u8 Mediatype | ||
| 81 | * 2 : Total titles | ||
| 82 | * 4 : TitleIDList pointer | ||
| 83 | * 6 : TitleList pointer | ||
| 84 | * Outputs: | ||
| 85 | * 1 : Result, 0 on success, otherwise error code | ||
| 86 | */ | ||
| 87 | void GetTitleInfo(Service::Interface* self); | ||
| 88 | |||
| 89 | /** | ||
| 90 | * AM::GetDataTitleInfos service function | ||
| 91 | * Wrapper for AM::GetTitleInfo | ||
| 92 | * Inputs: | ||
| 93 | * 1 : u8 Mediatype | ||
| 94 | * 2 : Total titles | ||
| 95 | * 4 : TitleIDList pointer | ||
| 96 | * 6 : TitleList pointer | ||
| 97 | * Outputs: | ||
| 98 | * 1 : Result, 0 on success, otherwise error code | ||
| 99 | */ | ||
| 100 | void GetDataTitleInfos(Service::Interface* self); | ||
| 101 | |||
| 102 | /** | ||
| 103 | * AM::ListDataTitleTicketInfos service function | ||
| 104 | * Inputs: | ||
| 105 | * 1 : Ticket count | ||
| 106 | * 2-3 : u64, Title ID | ||
| 107 | * 4 : Start Index? | ||
| 108 | * 5 : (TicketCount * 24) << 8 | 0x4 | ||
| 109 | * 6 : Ticket Infos pointer | ||
| 110 | * Outputs: | ||
| 111 | * 1 : Result, 0 on success, otherwise error code | ||
| 112 | * 2 : Number of ticket infos returned | ||
| 113 | */ | ||
| 114 | void ListDataTitleTicketInfos(Service::Interface* self); | ||
| 39 | 115 | ||
| 40 | /** | 116 | /** |
| 41 | * AM::GetNumContentInfos service function | 117 | * AM::GetNumContentInfos service function |
| 42 | * Inputs: | 118 | * Inputs: |
| 43 | * 0 : Command header (0x100100C0) | 119 | * 0 : Command header (0x100100C0) |
| 44 | * 1 : Unknown | 120 | * 1 : MediaType |
| 45 | * 2 : Unknown | 121 | * 2-3 : u64, Title ID |
| 46 | * 3 : Unknown | ||
| 47 | * Outputs: | 122 | * Outputs: |
| 48 | * 1 : Result, 0 on success, otherwise error code | 123 | * 1 : Result, 0 on success, otherwise error code |
| 49 | * 2 : Number of content infos plus one | 124 | * 2 : Number of content infos plus one |
| 50 | */ | 125 | */ |
| 51 | void GetNumContentInfos(Service::Interface* self); | 126 | void GetNumContentInfos(Service::Interface* self); |
| 52 | 127 | ||
| 128 | /** | ||
| 129 | * AM::DeleteTicket service function | ||
| 130 | * Inputs: | ||
| 131 | * 1-2 : u64, Title ID | ||
| 132 | * Outputs: | ||
| 133 | * 1 : Result, 0 on success, otherwise error code | ||
| 134 | */ | ||
| 135 | void DeleteTicket(Service::Interface* self); | ||
| 136 | |||
| 137 | /** | ||
| 138 | * AM::GetTicketCount service function | ||
| 139 | * Outputs: | ||
| 140 | * 1 : Result, 0 on success, otherwise error code | ||
| 141 | * 2 : Total titles | ||
| 142 | */ | ||
| 143 | void GetTicketCount(Service::Interface* self); | ||
| 144 | |||
| 145 | /** | ||
| 146 | * AM::GetTicketList service function | ||
| 147 | * Inputs: | ||
| 148 | * 1 : Number of TicketList | ||
| 149 | * 2 : Number to skip | ||
| 150 | * 4 : TicketList pointer | ||
| 151 | * Outputs: | ||
| 152 | * 1 : Result, 0 on success, otherwise error code | ||
| 153 | * 2 : Total TicketList | ||
| 154 | */ | ||
| 155 | void GetTicketList(Service::Interface* self); | ||
| 156 | |||
| 53 | /// Initialize AM service | 157 | /// Initialize AM service |
| 54 | void Init(); | 158 | void Init(); |
| 55 | 159 | ||
diff --git a/src/core/hle/service/am/am_app.cpp b/src/core/hle/service/am/am_app.cpp index 16c76a1eb..d27b3defd 100644 --- a/src/core/hle/service/am/am_app.cpp +++ b/src/core/hle/service/am/am_app.cpp | |||
| @@ -9,14 +9,14 @@ namespace Service { | |||
| 9 | namespace AM { | 9 | namespace AM { |
| 10 | 10 | ||
| 11 | const Interface::FunctionInfo FunctionTable[] = { | 11 | const Interface::FunctionInfo FunctionTable[] = { |
| 12 | {0x100100C0, GetNumContentInfos, "GetNumContentInfos"}, | 12 | {0x100100C0, GetNumContentInfos, "GetNumContentInfos"}, |
| 13 | {0x10020104, nullptr, "FindContentInfos"}, | 13 | {0x10020104, FindContentInfos, "FindContentInfos"}, |
| 14 | {0x10030142, nullptr, "ListContentInfos"}, | 14 | {0x10030142, ListContentInfos, "ListContentInfos"}, |
| 15 | {0x10040102, nullptr, "DeleteContents"}, | 15 | {0x10040102, DeleteContents, "DeleteContents"}, |
| 16 | {0x10050084, nullptr, "GetDataTitleInfos"}, | 16 | {0x10050084, GetDataTitleInfos, "GetDataTitleInfos"}, |
| 17 | {0x10070102, nullptr, "ListDataTitleTicketInfos"}, | 17 | {0x10070102, ListDataTitleTicketInfos, "ListDataTitleTicketInfos"}, |
| 18 | {0x100900C0, nullptr, "IsDataTitleInUse"}, | 18 | {0x100900C0, nullptr, "IsDataTitleInUse"}, |
| 19 | {0x100A0000, nullptr, "IsExternalTitleDatabaseInitialized"}, | 19 | {0x100A0000, nullptr, "IsExternalTitleDatabaseInitialized"}, |
| 20 | }; | 20 | }; |
| 21 | 21 | ||
| 22 | AM_APP_Interface::AM_APP_Interface() { | 22 | AM_APP_Interface::AM_APP_Interface() { |
diff --git a/src/core/hle/service/am/am_net.cpp b/src/core/hle/service/am/am_net.cpp index 065e04118..e75755245 100644 --- a/src/core/hle/service/am/am_net.cpp +++ b/src/core/hle/service/am/am_net.cpp | |||
| @@ -9,16 +9,20 @@ namespace Service { | |||
| 9 | namespace AM { | 9 | namespace AM { |
| 10 | 10 | ||
| 11 | const Interface::FunctionInfo FunctionTable[] = { | 11 | const Interface::FunctionInfo FunctionTable[] = { |
| 12 | {0x00010040, TitleIDListGetTotal, "TitleIDListGetTotal"}, | 12 | {0x00010040, GetTitleCount, "GetTitleCount"}, |
| 13 | {0x00020082, GetTitleIDList, "GetTitleIDList"}, | 13 | {0x00020082, GetTitleList, "GetTitleList"}, |
| 14 | {0x00030084, nullptr, "ListTitles"}, | 14 | {0x00030084, GetTitleInfo, "GetTitleInfo"}, |
| 15 | {0x000400C0, nullptr, "DeleteApplicationTitle"}, | 15 | {0x000400C0, nullptr, "DeleteApplicationTitle"}, |
| 16 | {0x000500C0, nullptr, "GetTitleProductCode"}, | 16 | {0x000500C0, nullptr, "GetTitleProductCode"}, |
| 17 | {0x00080000, nullptr, "TitleIDListGetTotal3"}, | 17 | {0x000600C0, nullptr, "GetTitleExtDataId"}, |
| 18 | {0x00090082, nullptr, "GetTitleIDList3"}, | 18 | {0x00070080, DeleteTicket, "DeleteTicket"}, |
| 19 | {0x00080000, GetTicketCount, "GetTicketCount"}, | ||
| 20 | {0x00090082, GetTicketList, "GetTicketList"}, | ||
| 19 | {0x000A0000, nullptr, "GetDeviceID"}, | 21 | {0x000A0000, nullptr, "GetDeviceID"}, |
| 20 | {0x000D0084, nullptr, "ListTitles2"}, | 22 | {0x000D0084, nullptr, "GetPendingTitleInfo"}, |
| 21 | {0x00140040, nullptr, "FinishInstallToMedia"}, | 23 | {0x000E00C0, nullptr, "DeletePendingTitle"}, |
| 24 | {0x00140040, nullptr, "FinalizePendingTitles"}, | ||
| 25 | {0x00150040, nullptr, "DeleteAllPendingTitles"}, | ||
| 22 | {0x00180080, nullptr, "InitializeTitleDatabase"}, | 26 | {0x00180080, nullptr, "InitializeTitleDatabase"}, |
| 23 | {0x00190040, nullptr, "ReloadDBS"}, | 27 | {0x00190040, nullptr, "ReloadDBS"}, |
| 24 | {0x001A00C0, nullptr, "GetDSiWareExportSize"}, | 28 | {0x001A00C0, nullptr, "GetDSiWareExportSize"}, |
diff --git a/src/core/hle/service/am/am_sys.cpp b/src/core/hle/service/am/am_sys.cpp index e38812297..8bad5e1c9 100644 --- a/src/core/hle/service/am/am_sys.cpp +++ b/src/core/hle/service/am/am_sys.cpp | |||
| @@ -9,23 +9,27 @@ namespace Service { | |||
| 9 | namespace AM { | 9 | namespace AM { |
| 10 | 10 | ||
| 11 | const Interface::FunctionInfo FunctionTable[] = { | 11 | const Interface::FunctionInfo FunctionTable[] = { |
| 12 | {0x00010040, TitleIDListGetTotal, "TitleIDListGetTotal"}, | 12 | {0x00010040, GetTitleCount, "GetTitleCount"}, |
| 13 | {0x00020082, GetTitleIDList, "GetTitleIDList"}, | 13 | {0x00020082, GetTitleList, "GetTitleList"}, |
| 14 | {0x00030084, nullptr, "ListTitles"}, | 14 | {0x00030084, GetTitleInfo, "GetTitleInfo"}, |
| 15 | {0x000400C0, nullptr, "DeleteApplicationTitle"}, | 15 | {0x000400C0, nullptr, "DeleteApplicationTitle"}, |
| 16 | {0x000500C0, nullptr, "GetTitleProductCode"}, | 16 | {0x000500C0, nullptr, "GetTitleProductCode"}, |
| 17 | {0x00080000, nullptr, "TitleIDListGetTotal3"}, | 17 | {0x000600C0, nullptr, "GetTitleExtDataId"}, |
| 18 | {0x00090082, nullptr, "GetTitleIDList3"}, | 18 | {0x00070080, DeleteTicket, "DeleteTicket"}, |
| 19 | {0x00080000, GetTicketCount, "GetTicketCount"}, | ||
| 20 | {0x00090082, GetTicketList, "GetTicketList"}, | ||
| 19 | {0x000A0000, nullptr, "GetDeviceID"}, | 21 | {0x000A0000, nullptr, "GetDeviceID"}, |
| 20 | {0x000D0084, nullptr, "ListTitles2"}, | 22 | {0x000D0084, nullptr, "GetPendingTitleInfo"}, |
| 21 | {0x00140040, nullptr, "FinishInstallToMedia"}, | 23 | {0x000E00C0, nullptr, "DeletePendingTitle"}, |
| 24 | {0x00140040, nullptr, "FinalizePendingTitles"}, | ||
| 25 | {0x00150040, nullptr, "DeleteAllPendingTitles"}, | ||
| 22 | {0x00180080, nullptr, "InitializeTitleDatabase"}, | 26 | {0x00180080, nullptr, "InitializeTitleDatabase"}, |
| 23 | {0x00190040, nullptr, "ReloadDBS"}, | 27 | {0x00190040, nullptr, "ReloadDBS"}, |
| 24 | {0x001A00C0, nullptr, "GetDSiWareExportSize"}, | 28 | {0x001A00C0, nullptr, "GetDSiWareExportSize"}, |
| 25 | {0x001B0144, nullptr, "ExportDSiWare"}, | 29 | {0x001B0144, nullptr, "ExportDSiWare"}, |
| 26 | {0x001C0084, nullptr, "ImportDSiWare"}, | 30 | {0x001C0084, nullptr, "ImportDSiWare"}, |
| 27 | {0x00230080, nullptr, "TitleIDListGetTotal2"}, | 31 | {0x00230080, nullptr, "GetPendingTitleCount"}, |
| 28 | {0x002400C2, nullptr, "GetTitleIDList2"} | 32 | {0x002400C2, nullptr, "GetPendingTitleList"} |
| 29 | }; | 33 | }; |
| 30 | 34 | ||
| 31 | AM_SYS_Interface::AM_SYS_Interface() { | 35 | AM_SYS_Interface::AM_SYS_Interface() { |
diff --git a/src/core/hle/service/am/am_u.cpp b/src/core/hle/service/am/am_u.cpp index c0392b754..d583dd9e6 100644 --- a/src/core/hle/service/am/am_u.cpp +++ b/src/core/hle/service/am/am_u.cpp | |||
| @@ -9,16 +9,20 @@ namespace Service { | |||
| 9 | namespace AM { | 9 | namespace AM { |
| 10 | 10 | ||
| 11 | const Interface::FunctionInfo FunctionTable[] = { | 11 | const Interface::FunctionInfo FunctionTable[] = { |
| 12 | {0x00010040, TitleIDListGetTotal, "TitleIDListGetTotal"}, | 12 | {0x00010040, GetTitleCount, "GetTitleCount"}, |
| 13 | {0x00020082, GetTitleIDList, "GetTitleIDList"}, | 13 | {0x00020082, GetTitleList, "GetTitleList"}, |
| 14 | {0x00030084, nullptr, "ListTitles"}, | 14 | {0x00030084, GetTitleInfo, "GetTitleInfo"}, |
| 15 | {0x000400C0, nullptr, "DeleteApplicationTitle"}, | 15 | {0x000400C0, nullptr, "DeleteApplicationTitle"}, |
| 16 | {0x000500C0, nullptr, "GetTitleProductCode"}, | 16 | {0x000500C0, nullptr, "GetTitleProductCode"}, |
| 17 | {0x00080000, nullptr, "TitleIDListGetTotal3"}, | 17 | {0x000600C0, nullptr, "GetTitleExtDataId"}, |
| 18 | {0x00090082, nullptr, "GetTitleIDList3"}, | 18 | {0x00070080, DeleteTicket, "DeleteTicket"}, |
| 19 | {0x00080000, GetTicketCount, "GetTicketCount"}, | ||
| 20 | {0x00090082, GetTicketList, "GetTicketList"}, | ||
| 19 | {0x000A0000, nullptr, "GetDeviceID"}, | 21 | {0x000A0000, nullptr, "GetDeviceID"}, |
| 20 | {0x000D0084, nullptr, "ListTitles2"}, | 22 | {0x000D0084, nullptr, "GetPendingTitleInfo"}, |
| 21 | {0x00140040, nullptr, "FinishInstallToMedia"}, | 23 | {0x000E00C0, nullptr, "DeletePendingTitle"}, |
| 24 | {0x00140040, nullptr, "FinalizePendingTitles"}, | ||
| 25 | {0x00150040, nullptr, "DeleteAllPendingTitles"}, | ||
| 22 | {0x00180080, nullptr, "InitializeTitleDatabase"}, | 26 | {0x00180080, nullptr, "InitializeTitleDatabase"}, |
| 23 | {0x00190040, nullptr, "ReloadDBS"}, | 27 | {0x00190040, nullptr, "ReloadDBS"}, |
| 24 | {0x001A00C0, nullptr, "GetDSiWareExportSize"}, | 28 | {0x001A00C0, nullptr, "GetDSiWareExportSize"}, |