diff options
| author | 2018-11-28 23:47:01 -0500 | |
|---|---|---|
| committer | 2018-11-30 09:08:03 -0500 | |
| commit | 7c04fe22b4b954613b0fbabb7033675614955f12 (patch) | |
| tree | b45ca0ea685e31a7ac73a4374e65d31f13f872f2 | |
| parent | configure_input: Amend clang-format discrepancies (diff) | |
| download | yuzu-7c04fe22b4b954613b0fbabb7033675614955f12.tar.gz yuzu-7c04fe22b4b954613b0fbabb7033675614955f12.tar.xz yuzu-7c04fe22b4b954613b0fbabb7033675614955f12.zip | |
service/set: Implement MakeLanguageCode
This function simply converts a given index into a language code.
| -rw-r--r-- | src/core/hle/service/set/set.cpp | 19 | ||||
| -rw-r--r-- | src/core/hle/service/set/set.h | 1 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/core/hle/service/set/set.cpp b/src/core/hle/service/set/set.cpp index 40a9144f9..0c7f281c9 100644 --- a/src/core/hle/service/set/set.cpp +++ b/src/core/hle/service/set/set.cpp | |||
| @@ -35,6 +35,8 @@ constexpr std::array<LanguageCode, 17> available_language_codes = {{ | |||
| 35 | constexpr std::size_t pre4_0_0_max_entries = 0xF; | 35 | constexpr std::size_t pre4_0_0_max_entries = 0xF; |
| 36 | constexpr std::size_t post4_0_0_max_entries = 0x40; | 36 | constexpr std::size_t post4_0_0_max_entries = 0x40; |
| 37 | 37 | ||
| 38 | constexpr ResultCode ERR_INVALID_LANGUAGE{ErrorModule::Settings, 625}; | ||
| 39 | |||
| 38 | LanguageCode GetLanguageCodeFromIndex(std::size_t index) { | 40 | LanguageCode GetLanguageCodeFromIndex(std::size_t index) { |
| 39 | return available_language_codes.at(index); | 41 | return available_language_codes.at(index); |
| 40 | } | 42 | } |
| @@ -67,6 +69,21 @@ void SET::GetAvailableLanguageCodes(Kernel::HLERequestContext& ctx) { | |||
| 67 | PushResponseLanguageCode(ctx, pre4_0_0_max_entries); | 69 | PushResponseLanguageCode(ctx, pre4_0_0_max_entries); |
| 68 | } | 70 | } |
| 69 | 71 | ||
| 72 | void SET::MakeLanguageCode(Kernel::HLERequestContext& ctx) { | ||
| 73 | IPC::RequestParser rp{ctx}; | ||
| 74 | const auto index = rp.Pop<u32>(); | ||
| 75 | |||
| 76 | if (index >= available_language_codes.size()) { | ||
| 77 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 78 | rb.Push(ERR_INVALID_LANGUAGE); | ||
| 79 | return; | ||
| 80 | } | ||
| 81 | |||
| 82 | IPC::ResponseBuilder rb{ctx, 4}; | ||
| 83 | rb.Push(RESULT_SUCCESS); | ||
| 84 | rb.PushEnum(available_language_codes[index]); | ||
| 85 | } | ||
| 86 | |||
| 70 | void SET::GetAvailableLanguageCodes2(Kernel::HLERequestContext& ctx) { | 87 | void SET::GetAvailableLanguageCodes2(Kernel::HLERequestContext& ctx) { |
| 71 | LOG_DEBUG(Service_SET, "called"); | 88 | LOG_DEBUG(Service_SET, "called"); |
| 72 | 89 | ||
| @@ -102,7 +119,7 @@ SET::SET() : ServiceFramework("set") { | |||
| 102 | static const FunctionInfo functions[] = { | 119 | static const FunctionInfo functions[] = { |
| 103 | {0, &SET::GetLanguageCode, "GetLanguageCode"}, | 120 | {0, &SET::GetLanguageCode, "GetLanguageCode"}, |
| 104 | {1, &SET::GetAvailableLanguageCodes, "GetAvailableLanguageCodes"}, | 121 | {1, &SET::GetAvailableLanguageCodes, "GetAvailableLanguageCodes"}, |
| 105 | {2, nullptr, "MakeLanguageCode"}, | 122 | {2, &SET::MakeLanguageCode, "MakeLanguageCode"}, |
| 106 | {3, &SET::GetAvailableLanguageCodeCount, "GetAvailableLanguageCodeCount"}, | 123 | {3, &SET::GetAvailableLanguageCodeCount, "GetAvailableLanguageCodeCount"}, |
| 107 | {4, nullptr, "GetRegionCode"}, | 124 | {4, nullptr, "GetRegionCode"}, |
| 108 | {5, &SET::GetAvailableLanguageCodes2, "GetAvailableLanguageCodes2"}, | 125 | {5, &SET::GetAvailableLanguageCodes2, "GetAvailableLanguageCodes2"}, |
diff --git a/src/core/hle/service/set/set.h b/src/core/hle/service/set/set.h index 266f13e46..31f9cb296 100644 --- a/src/core/hle/service/set/set.h +++ b/src/core/hle/service/set/set.h | |||
| @@ -38,6 +38,7 @@ public: | |||
| 38 | private: | 38 | private: |
| 39 | void GetLanguageCode(Kernel::HLERequestContext& ctx); | 39 | void GetLanguageCode(Kernel::HLERequestContext& ctx); |
| 40 | void GetAvailableLanguageCodes(Kernel::HLERequestContext& ctx); | 40 | void GetAvailableLanguageCodes(Kernel::HLERequestContext& ctx); |
| 41 | void MakeLanguageCode(Kernel::HLERequestContext& ctx); | ||
| 41 | void GetAvailableLanguageCodes2(Kernel::HLERequestContext& ctx); | 42 | void GetAvailableLanguageCodes2(Kernel::HLERequestContext& ctx); |
| 42 | void GetAvailableLanguageCodeCount(Kernel::HLERequestContext& ctx); | 43 | void GetAvailableLanguageCodeCount(Kernel::HLERequestContext& ctx); |
| 43 | void GetAvailableLanguageCodeCount2(Kernel::HLERequestContext& ctx); | 44 | void GetAvailableLanguageCodeCount2(Kernel::HLERequestContext& ctx); |