diff --git a/src/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs b/src/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs index 4fc66c4c0..2ab413848 100644 --- a/src/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs @@ -117,7 +117,7 @@ namespace Ryujinx.Graphics.Gpu.Shader private static string GetDiskCachePath() { return GraphicsConfig.EnableShaderCache && GraphicsConfig.TitleId != null - ? Path.Combine(AppDataManager.GamesDirPath, GraphicsConfig.TitleId, "cache", "shader") + ? Path.Combine(AppDataManager.GamesDirPath, GraphicsConfig.TitleId.ToLower(), "cache", "shader") : null; } diff --git a/src/Ryujinx.HLE/HOS/Services/IpcService.cs b/src/Ryujinx.HLE/HOS/Services/IpcService.cs index 123e44a4b..8c9c56e84 100644 --- a/src/Ryujinx.HLE/HOS/Services/IpcService.cs +++ b/src/Ryujinx.HLE/HOS/Services/IpcService.cs @@ -1,8 +1,10 @@ +using Gommon; using Ryujinx.Common.Logging; using Ryujinx.HLE.Exceptions; using Ryujinx.HLE.HOS.Ipc; using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; @@ -21,22 +23,43 @@ namespace Ryujinx.HLE.HOS.Services private int _selfId; private bool _isDomain; - public IpcService(ServerBase server = null) + public IpcService(ServerBase server = null, bool registerTipc = false) { - CmifCommands = GetType().Assembly.GetTypes() - .Where(type => type == GetType()) - .SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public)) + Stopwatch sw = Stopwatch.StartNew(); + + CmifCommands = GetType() + .GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public) .SelectMany(methodInfo => methodInfo.GetCustomAttributes() .Select(command => (command.Id, methodInfo))) .ToDictionary(command => command.Id, command => command.methodInfo); + + sw.Stop(); + + Logger.Debug?.Print( + LogClass.Emulation, + $"{CmifCommands.Count} Cmif commands loaded in {sw.ElapsedTicks} ticks ({Stopwatch.Frequency} tps).", + GetType().AsPrettyString() + ); - TipcCommands = GetType().Assembly.GetTypes() - .Where(type => type == GetType()) - .SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public)) - .SelectMany(methodInfo => methodInfo.GetCustomAttributes() - .Select(command => (command.Id, methodInfo))) - .ToDictionary(command => command.Id, command => command.methodInfo); + if (registerTipc) + { + sw.Start(); + TipcCommands = GetType() + .GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public) + .SelectMany(methodInfo => methodInfo.GetCustomAttributes() + .Select(command => (command.Id, methodInfo))) + .ToDictionary(command => command.Id, command => command.methodInfo); + + sw.Stop(); + + Logger.Debug?.Print( + LogClass.Emulation, + $"{TipcCommands.Count} Tipc commands loaded in {sw.ElapsedTicks} ticks ({Stopwatch.Frequency} tps).", + GetType().AsPrettyString() + ); + } + Server = server; _parent = this; diff --git a/src/Ryujinx.HLE/HOS/Services/Sm/IUserInterface.cs b/src/Ryujinx.HLE/HOS/Services/Sm/IUserInterface.cs index a7892fe86..4785e58df 100644 --- a/src/Ryujinx.HLE/HOS/Services/Sm/IUserInterface.cs +++ b/src/Ryujinx.HLE/HOS/Services/Sm/IUserInterface.cs @@ -21,7 +21,7 @@ namespace Ryujinx.HLE.HOS.Services.Sm private bool _isInitialized; - public IUserInterface(KernelContext context, SmRegistry registry) + public IUserInterface(KernelContext context, SmRegistry registry) : base(registerTipc: true) { _commonServer = new ServerBase(context, "CommonServer"); _registry = registry; diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json index 3d8af198b..161217c13 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/src/Ryujinx/Assets/locales.json @@ -2764,7 +2764,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Задать индивидуальные параметры", - "sv_SE": "", + "sv_SE": "Skapa anpassad konfiguration", "th_TH": "", "tr_TR": "", "uk_UA": "Створити користувацьку конфігурацію", @@ -2789,7 +2789,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Изменить индивидуальные параметры", - "sv_SE": "", + "sv_SE": "Redigera anpassad konfiguration", "th_TH": "", "tr_TR": "", "uk_UA": "Редагувати користувацьку конфігурацію", @@ -2864,7 +2864,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Отредактировать существующие независимые параметры для выбранной игры.", - "sv_SE": "", + "sv_SE": "Redigera din befintliga oberoende konfiguration för det valda spelet", "th_TH": "", "tr_TR": "", "uk_UA": "Відредагувати наявну індивідуальну конфігурацію для цієї гри.", @@ -3839,7 +3839,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Включить оригинальный интерфейса (требуется перезагрузка)", - "sv_SE": "", + "sv_SE": "Visa ursprunglig gränssnittsstil (kräver omstart)", "th_TH": "", "tr_TR": "", "uk_UA": "Показати оригінальний UI (Потрібен перезапуск)", @@ -3864,7 +3864,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Показать старый пользовательский интерфейс Avalonia Ryujinx, напоминающий Ryujinx 1.1.1403. Включено по умолчанию на платформах, отличных от Windows.\nСтрока заголовка в классическом стиле вернётся на место, а основные изменения в оформлении окна будут отменены; например, расположение навигации по настройкам над этой всплывающей подсказкой.", - "sv_SE": "", + "sv_SE": "Visa det gamla Ryuijinx-gränssnittet baserat på Avalonia som påminner om version 1.1.1403. Detta är aktiverat som standard på plattformat som inte är Windows.\nDen klassiska titelfältet är tillbaka och de stora omarbetningarna av fönsterlayouten är omvända, till exempel placeringen av inställningsnavigeringen ovanför detta verktygstips.", "th_TH": "", "tr_TR": "", "uk_UA": "Показати старий інтерфейс Avalonia Ryujinx, який був у Ryujinx 1.1.1403. Ця опція активна за замовчуванням на всіх інших, окрім Windows платформах.\nПовернеться класична панель заголовка, а всі суттєві зміни інтерфейсу будуть скасовані, зокрема горизонтальне розміщення навігації в налаштуваннях.", @@ -19714,7 +19714,7 @@ "pl_PL": "Skróty Klawiszowe Klawiatury", "pt_BR": "Atalhos do Teclado", "ru_RU": "Горячие клавиши", - "sv_SE": "Snabbtangenter för tangentbord", + "sv_SE": "Snabbtangenter", "th_TH": "ปุ่มลัดของคีย์บอร์ด", "tr_TR": "Klavye Kısayolları", "uk_UA": "Гарячі клавіші клавіатури", @@ -23814,7 +23814,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Список совместимости — записей: {0}", - "sv_SE": "", + "sv_SE": "Kompatibilitetslista - {0} poster", "th_TH": "", "tr_TR": "", "uk_UA": "Список сумісності — {0} ігор", @@ -23889,7 +23889,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Поиск среди {0} записей о совместимости...", - "sv_SE": "", + "sv_SE": "Sök i {0} kompatibilitetsposter...", "th_TH": "", "tr_TR": "", "uk_UA": "Шукати серед {0} перевірених ігор...", @@ -24214,7 +24214,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Индивидуальные параметры", - "sv_SE": "", + "sv_SE": "Anpassad konfiguration", "th_TH": "", "tr_TR": "", "uk_UA": "Власна конфігурація",