aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Core/OsHle/Services/Set/ISettingsServer.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2018-04-06 01:01:52 -0300
committergdkchan <gab.dark.100@gmail.com>2018-04-06 01:01:52 -0300
commit69e32e5bbc661627b9548bf414fff67f1756034d (patch)
tree19c11da8d9613271f5a86f0e73d0e1280e542f6b /Ryujinx.Core/OsHle/Services/Set/ISettingsServer.cs
parentf15b1c76a1d1ebc2fe247112077d70ba173c6790 (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.cs81
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