diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2018-04-06 01:01:52 -0300 |
|---|---|---|
| committer | gdkchan <gab.dark.100@gmail.com> | 2018-04-06 01:01:52 -0300 |
| commit | 69e32e5bbc661627b9548bf414fff67f1756034d (patch) | |
| tree | 19c11da8d9613271f5a86f0e73d0e1280e542f6b /Ryujinx.Core/OsHle/Services/Set/ISettingsServer.cs | |
| parent | f15b1c76a1d1ebc2fe247112077d70ba173c6790 (diff) | |
Rename services with the official interface names
Diffstat (limited to 'Ryujinx.Core/OsHle/Services/Set/ISettingsServer.cs')
| -rw-r--r-- | Ryujinx.Core/OsHle/Services/Set/ISettingsServer.cs | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/Ryujinx.Core/OsHle/Services/Set/ISettingsServer.cs b/Ryujinx.Core/OsHle/Services/Set/ISettingsServer.cs new file mode 100644 index 00000000..9d5b4888 --- /dev/null +++ b/Ryujinx.Core/OsHle/Services/Set/ISettingsServer.cs @@ -0,0 +1,81 @@ +using Ryujinx.Core.OsHle.Ipc; +using System.Collections.Generic; + +namespace Ryujinx.Core.OsHle.Services.Set +{ + class ISettingsServer : IpcService + { + private static string[] LanguageCodes = new string[] + { + "ja", + "en-US", + "fr", + "de", + "it", + "es", + "zh-CN", + "ko", + "nl", + "pt", + "ru", + "zh-TW", + "en-GB", + "fr-CA", + "es-419", + "zh-Hans", + "zh-Hant" + }; + + private Dictionary<int, ServiceProcessRequest> m_Commands; + + public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands; + + public ISettingsServer() + { + m_Commands = new Dictionary<int, ServiceProcessRequest>() + { + { 1, GetAvailableLanguageCodes }, + { 3, GetAvailableLanguageCodeCount } + }; + } + + public static long GetAvailableLanguageCodes(ServiceCtx Context) + { + long Position = Context.Request.RecvListBuff[0].Position; + short Size = Context.Request.RecvListBuff[0].Size; + + int Count = (int)((uint)Size / 8); + + if (Count > LanguageCodes.Length) + { + Count = LanguageCodes.Length; + } + + for (int Index = 0; Index < Count; Index++) + { + string LanguageCode = LanguageCodes[Index]; + + foreach (char Chr in LanguageCode) + { + Context.Memory.WriteByte(Position++, (byte)Chr); + } + + for (int Offs = 0; Offs < (8 - LanguageCode.Length); Offs++) + { + Context.Memory.WriteByte(Position++, 0); + } + } + + Context.ResponseData.Write(Count); + + return 0; + } + + public static long GetAvailableLanguageCodeCount(ServiceCtx Context) + { + Context.ResponseData.Write(LanguageCodes.Length); + + return 0; + } + } +}
\ No newline at end of file |
