diff --git a/src/Ryujinx/AppHost.cs b/src/Ryujinx/AppHost.cs
index 40c54b6f7..b50eb6912 100644
--- a/src/Ryujinx/AppHost.cs
+++ b/src/Ryujinx/AppHost.cs
@@ -21,8 +21,8 @@ using Ryujinx.Ava.UI.Renderer;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.UI.Windows;
using Ryujinx.Ava.Utilities;
-using Ryujinx.Ava.Utilities.AppLibrary;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.AppLibrary;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Multiplayer;
diff --git a/src/Ryujinx/Assets/Styles/Styles.xaml b/src/Ryujinx/Assets/Styles/Styles.xaml
index 9c61faa5a..ff9a528a5 100644
--- a/src/Ryujinx/Assets/Styles/Styles.xaml
+++ b/src/Ryujinx/Assets/Styles/Styles.xaml
@@ -439,7 +439,7 @@
13
26
28
- 900
+ 700
756
diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json
index 9eafb76d3..2a0973dd1 100644
--- a/src/Ryujinx/Assets/locales.json
+++ b/src/Ryujinx/Assets/locales.json
@@ -23922,6 +23922,31 @@
"zh_TW": "上次更新時間: {0}"
}
},
+ {
+ "ID": "CompatibilityListTitle",
+ "Translations": {
+ "ar_SA": "",
+ "de_DE": "",
+ "el_GR": "",
+ "en_US": "Compatibility List - {0} entries",
+ "es_ES": "",
+ "fr_FR": "",
+ "he_IL": "",
+ "it_IT": "",
+ "ja_JP": "",
+ "ko_KR": "",
+ "no_NO": "",
+ "pl_PL": "",
+ "pt_BR": "",
+ "ru_RU": "",
+ "sv_SE": "",
+ "th_TH": "",
+ "tr_TR": "",
+ "uk_UA": "",
+ "zh_CN": "",
+ "zh_TW": ""
+ }
+ },
{
"ID": "CompatibilityListWarning",
"Translations": {
@@ -23972,6 +23997,31 @@
"zh_TW": "搜尋相容性列表紀錄..."
}
},
+ {
+ "ID": "CompatibilityListSearchBoxWatermarkWithCount",
+ "Translations": {
+ "ar_SA": "",
+ "de_DE": "",
+ "el_GR": "",
+ "en_US": "Search {0} compatibility entries...",
+ "es_ES": "",
+ "fr_FR": "",
+ "he_IL": "",
+ "it_IT": "",
+ "ja_JP": "",
+ "ko_KR": "",
+ "no_NO": "Søk i {0} kompatibilitetsoppføringer...",
+ "pl_PL": "",
+ "pt_BR": "",
+ "ru_RU": "",
+ "sv_SE": "",
+ "th_TH": "",
+ "tr_TR": "",
+ "uk_UA": "",
+ "zh_CN": "",
+ "zh_TW": ""
+ }
+ },
{
"ID": "CompatibilityListOpen",
"Translations": {
diff --git a/src/Ryujinx/Common/ApplicationHelper.cs b/src/Ryujinx/Common/ApplicationHelper.cs
index 86e5ee310..0b81e8cff 100644
--- a/src/Ryujinx/Common/ApplicationHelper.cs
+++ b/src/Ryujinx/Common/ApplicationHelper.cs
@@ -16,7 +16,7 @@ using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Windows;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.Utilities;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common.Helper;
using Ryujinx.Common.Logging;
using Ryujinx.HLE.FileSystem;
@@ -216,11 +216,7 @@ namespace Ryujinx.Ava.Common
return;
}
- IntegrityCheckLevel checkLevel = ConfigurationState.Instance.System.EnableFsIntegrityChecks
- ? IntegrityCheckLevel.ErrorOnInvalid
- : IntegrityCheckLevel.None;
-
- (Nca updatePatchNca, _) = mainNca.GetUpdateData(_virtualFileSystem, checkLevel, programIndex, out _);
+ (Nca updatePatchNca, _) = mainNca.GetUpdateData(_virtualFileSystem, ConfigurationState.Instance.System.IntegrityCheckLevel, programIndex, out _);
if (updatePatchNca is not null)
{
patchNca = updatePatchNca;
diff --git a/src/Ryujinx/Common/LocaleManager.cs b/src/Ryujinx/Common/LocaleManager.cs
index f60cff49b..9aa82a4a5 100644
--- a/src/Ryujinx/Common/LocaleManager.cs
+++ b/src/Ryujinx/Common/LocaleManager.cs
@@ -1,6 +1,7 @@
using Gommon;
+using Ryujinx.Ava.Systems;
using Ryujinx.Ava.UI.ViewModels;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common;
using Ryujinx.Common.Utilities;
using System;
@@ -25,7 +26,21 @@ namespace Ryujinx.Ava.Common.Locale
public LocaleManager()
{
_localeStrings = new Dictionary();
- _dynamicValues = new ConcurrentDictionary();
+ _dynamicValues = new ConcurrentDictionary(new Dictionary
+ {
+ { LocaleKeys.DialogConfirmationTitle, [RyujinxApp.FullAppName] },
+ { LocaleKeys.DialogUpdaterTitle, [RyujinxApp.FullAppName] },
+ { LocaleKeys.DialogErrorTitle, [RyujinxApp.FullAppName] },
+ { LocaleKeys.DialogWarningTitle, [RyujinxApp.FullAppName] },
+ { LocaleKeys.DialogExitTitle, [RyujinxApp.FullAppName] },
+ { LocaleKeys.DialogStopEmulationTitle, [RyujinxApp.FullAppName] },
+ { LocaleKeys.RyujinxInfo, [RyujinxApp.FullAppName] },
+ { LocaleKeys.RyujinxConfirm, [RyujinxApp.FullAppName] },
+ { LocaleKeys.RyujinxUpdater, [RyujinxApp.FullAppName] },
+ { LocaleKeys.RyujinxRebooter, [RyujinxApp.FullAppName] },
+ { LocaleKeys.CompatibilityListSearchBoxWatermarkWithCount, [CompatibilityCsv.Entries.Length] },
+ { LocaleKeys.CompatibilityListTitle, [CompatibilityCsv.Entries.Length] }
+ });
Load();
}
@@ -44,17 +59,6 @@ namespace Ryujinx.Ava.Common.Locale
ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.ConfigurationPath);
}
-
- SetDynamicValues(LocaleKeys.DialogConfirmationTitle, RyujinxApp.FullAppName);
- SetDynamicValues(LocaleKeys.DialogUpdaterTitle, RyujinxApp.FullAppName);
- SetDynamicValues(LocaleKeys.DialogErrorTitle, RyujinxApp.FullAppName);
- SetDynamicValues(LocaleKeys.DialogWarningTitle, RyujinxApp.FullAppName);
- SetDynamicValues(LocaleKeys.DialogExitTitle, RyujinxApp.FullAppName);
- SetDynamicValues(LocaleKeys.DialogStopEmulationTitle, RyujinxApp.FullAppName);
- SetDynamicValues(LocaleKeys.RyujinxInfo, RyujinxApp.FullAppName);
- SetDynamicValues(LocaleKeys.RyujinxConfirm, RyujinxApp.FullAppName);
- SetDynamicValues(LocaleKeys.RyujinxUpdater, RyujinxApp.FullAppName);
- SetDynamicValues(LocaleKeys.RyujinxRebooter, RyujinxApp.FullAppName);
}
public string this[LocaleKeys key]
diff --git a/src/Ryujinx/Common/Models/XCITrimmerFileModel.cs b/src/Ryujinx/Common/Models/XCITrimmerFileModel.cs
index da59a5d52..cddc5de22 100644
--- a/src/Ryujinx/Common/Models/XCITrimmerFileModel.cs
+++ b/src/Ryujinx/Common/Models/XCITrimmerFileModel.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using Ryujinx.Common.Logging;
using Ryujinx.Common.Utilities;
diff --git a/src/Ryujinx/DiscordIntegrationModule.cs b/src/Ryujinx/DiscordIntegrationModule.cs
index 8d232b4fb..142261d72 100644
--- a/src/Ryujinx/DiscordIntegrationModule.cs
+++ b/src/Ryujinx/DiscordIntegrationModule.cs
@@ -1,9 +1,9 @@
using DiscordRPC;
using Gommon;
using Ryujinx.Ava.Utilities;
-using Ryujinx.Ava.Utilities.AppLibrary;
-using Ryujinx.Ava.Utilities.Configuration;
-using Ryujinx.Ava.Utilities.PlayReport;
+using Ryujinx.Ava.Systems.AppLibrary;
+using Ryujinx.Ava.Systems.Configuration;
+using Ryujinx.Ava.Systems.PlayReport;
using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.HLE;
diff --git a/src/Ryujinx/Headless/HeadlessRyujinx.Init.cs b/src/Ryujinx/Headless/HeadlessRyujinx.Init.cs
index d6a2ed789..7ff0a5259 100644
--- a/src/Ryujinx/Headless/HeadlessRyujinx.Init.cs
+++ b/src/Ryujinx/Headless/HeadlessRyujinx.Init.cs
@@ -2,7 +2,7 @@ using DiscordRPC;
using LibHac.Tools.FsSystem;
using Ryujinx.Audio.Backends.SDL2;
using Ryujinx.Ava;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Configuration.Hid.Controller;
diff --git a/src/Ryujinx/Headless/HeadlessRyujinx.cs b/src/Ryujinx/Headless/HeadlessRyujinx.cs
index 9a69c56dd..f346f1f63 100644
--- a/src/Ryujinx/Headless/HeadlessRyujinx.cs
+++ b/src/Ryujinx/Headless/HeadlessRyujinx.cs
@@ -1,7 +1,7 @@
using CommandLine;
using Gommon;
using Ryujinx.Ava;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
diff --git a/src/Ryujinx/Headless/Options.cs b/src/Ryujinx/Headless/Options.cs
index 6658ba3ad..8305cd311 100644
--- a/src/Ryujinx/Headless/Options.cs
+++ b/src/Ryujinx/Headless/Options.cs
@@ -1,6 +1,7 @@
using CommandLine;
using Gommon;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
+using Ryujinx.Ava.Systems.Configuration.System;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.HLE;
@@ -37,7 +38,7 @@ namespace Ryujinx.Headless
EnableInternetAccess = configurationState.System.EnableInternetAccess;
if (NeedsOverride(nameof(DisableFsIntegrityChecks)))
- DisableFsIntegrityChecks = configurationState.System.EnableFsIntegrityChecks;
+ DisableFsIntegrityChecks = !configurationState.System.EnableFsIntegrityChecks;
if (NeedsOverride(nameof(FsGlobalAccessLogMode)))
FsGlobalAccessLogMode = configurationState.System.FsGlobalAccessLogMode;
@@ -58,10 +59,10 @@ namespace Ryujinx.Headless
DisableDockedMode = !configurationState.System.EnableDockedMode;
if (NeedsOverride(nameof(SystemLanguage)))
- SystemLanguage = (SystemLanguage)(int)configurationState.System.Language.Value;
+ SystemLanguage = configurationState.System.Language.Value.ToHLE();
if (NeedsOverride(nameof(SystemRegion)))
- SystemRegion = (RegionCode)(int)configurationState.System.Region.Value;
+ SystemRegion = configurationState.System.Region.Value.ToHLE();
if (NeedsOverride(nameof(SystemTimeZone)))
SystemTimeZone = configurationState.System.TimeZone;
diff --git a/src/Ryujinx/Program.cs b/src/Ryujinx/Program.cs
index edd46a7db..c24725b5c 100644
--- a/src/Ryujinx/Program.cs
+++ b/src/Ryujinx/Program.cs
@@ -8,7 +8,8 @@ using Projektanker.Icons.Avalonia.MaterialDesign;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Windows;
using Ryujinx.Ava.Utilities;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
+using Ryujinx.Ava.Systems.Configuration.System;
using Ryujinx.Ava.Utilities.SystemInfo;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
@@ -282,16 +283,16 @@ namespace Ryujinx.Ava
// Check if region was overridden.
if (CommandLineState.OverrideSystemRegion is not null)
- if (Enum.TryParse(CommandLineState.OverrideSystemRegion, true, out Ryujinx.HLE.HOS.SystemState.RegionCode result))
+ if (Enum.TryParse(CommandLineState.OverrideSystemRegion, true, out HLE.HOS.SystemState.RegionCode result))
{
- ConfigurationState.Instance.System.Region.Value = (Utilities.Configuration.System.Region)result;
+ ConfigurationState.Instance.System.Region.Value = result.ToUI();
}
//Check if language was overridden.
if (CommandLineState.OverrideSystemLanguage is not null)
- if (Enum.TryParse(CommandLineState.OverrideSystemLanguage, true, out Ryujinx.HLE.HOS.SystemState.SystemLanguage result))
+ if (Enum.TryParse(CommandLineState.OverrideSystemLanguage, true, out HLE.HOS.SystemState.SystemLanguage result))
{
- ConfigurationState.Instance.System.Language.Value = (Utilities.Configuration.System.Language)result;
+ ConfigurationState.Instance.System.Language.Value = result.ToUI();
}
// Check if hardware-acceleration was overridden.
diff --git a/src/Ryujinx/RyujinxApp.axaml.cs b/src/Ryujinx/RyujinxApp.axaml.cs
index 8bfe1660d..0a0f0a13c 100644
--- a/src/Ryujinx/RyujinxApp.axaml.cs
+++ b/src/Ryujinx/RyujinxApp.axaml.cs
@@ -12,7 +12,7 @@ using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Windows;
using Ryujinx.Ava.Utilities;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common;
using Ryujinx.Common.Logging;
using System;
diff --git a/src/Ryujinx/Utilities/AppLibrary/ApplicationCountUpdatedEventArgs.cs b/src/Ryujinx/Systems/AppLibrary/ApplicationCountUpdatedEventArgs.cs
similarity index 81%
rename from src/Ryujinx/Utilities/AppLibrary/ApplicationCountUpdatedEventArgs.cs
rename to src/Ryujinx/Systems/AppLibrary/ApplicationCountUpdatedEventArgs.cs
index 9bbaef0e3..7866ffa3a 100644
--- a/src/Ryujinx/Utilities/AppLibrary/ApplicationCountUpdatedEventArgs.cs
+++ b/src/Ryujinx/Systems/AppLibrary/ApplicationCountUpdatedEventArgs.cs
@@ -1,6 +1,6 @@
using System;
-namespace Ryujinx.Ava.Utilities.AppLibrary
+namespace Ryujinx.Ava.Systems.AppLibrary
{
public class ApplicationCountUpdatedEventArgs : EventArgs
{
diff --git a/src/Ryujinx/Utilities/AppLibrary/ApplicationData.cs b/src/Ryujinx/Systems/AppLibrary/ApplicationData.cs
similarity index 98%
rename from src/Ryujinx/Utilities/AppLibrary/ApplicationData.cs
rename to src/Ryujinx/Systems/AppLibrary/ApplicationData.cs
index 16e7dec06..e04ea454a 100644
--- a/src/Ryujinx/Utilities/AppLibrary/ApplicationData.cs
+++ b/src/Ryujinx/Systems/AppLibrary/ApplicationData.cs
@@ -9,8 +9,8 @@ using LibHac.Tools.Fs;
using LibHac.Tools.FsSystem;
using LibHac.Tools.FsSystem.NcaUtils;
using Ryujinx.Ava.Common.Locale;
-using Ryujinx.Ava.Utilities.Compat;
-using Ryujinx.Ava.Utilities.PlayReport;
+using Ryujinx.Ava.Utilities;
+using Ryujinx.Ava.Systems.PlayReport;
using Ryujinx.Common.Logging;
using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.Loaders.Processes.Extensions;
@@ -18,7 +18,7 @@ using System;
using System.IO;
using System.Text.Json.Serialization;
-namespace Ryujinx.Ava.Utilities.AppLibrary
+namespace Ryujinx.Ava.Systems.AppLibrary
{
public class ApplicationData
{
diff --git a/src/Ryujinx/Utilities/AppLibrary/ApplicationJsonSerializerContext.cs b/src/Ryujinx/Systems/AppLibrary/ApplicationJsonSerializerContext.cs
similarity index 85%
rename from src/Ryujinx/Utilities/AppLibrary/ApplicationJsonSerializerContext.cs
rename to src/Ryujinx/Systems/AppLibrary/ApplicationJsonSerializerContext.cs
index d443ab66e..3fd24a6ba 100644
--- a/src/Ryujinx/Utilities/AppLibrary/ApplicationJsonSerializerContext.cs
+++ b/src/Ryujinx/Systems/AppLibrary/ApplicationJsonSerializerContext.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Ryujinx.Ava.Utilities.AppLibrary
+namespace Ryujinx.Ava.Systems.AppLibrary
{
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(ApplicationMetadata))]
diff --git a/src/Ryujinx/Utilities/AppLibrary/ApplicationLibrary.cs b/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs
similarity index 99%
rename from src/Ryujinx/Utilities/AppLibrary/ApplicationLibrary.cs
rename to src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs
index c85053723..b7321d6c1 100644
--- a/src/Ryujinx/Utilities/AppLibrary/ApplicationLibrary.cs
+++ b/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs
@@ -12,8 +12,9 @@ using LibHac.Tools.Fs;
using LibHac.Tools.FsSystem;
using LibHac.Tools.FsSystem.NcaUtils;
using Ryujinx.Ava.Common.Models;
-using Ryujinx.Ava.Utilities.Configuration;
-using Ryujinx.Ava.Utilities.Configuration.System;
+using Ryujinx.Ava.Utilities;
+using Ryujinx.Ava.Systems.Configuration;
+using Ryujinx.Ava.Systems.Configuration.System;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Multiplayer;
@@ -38,7 +39,7 @@ using MissingKeyException = LibHac.Common.Keys.MissingKeyException;
using Path = System.IO.Path;
using TimeSpan = System.TimeSpan;
-namespace Ryujinx.Ava.Utilities.AppLibrary
+namespace Ryujinx.Ava.Systems.AppLibrary
{
public class ApplicationLibrary
{
@@ -617,15 +618,11 @@ namespace Ryujinx.Ava.Utilities.AppLibrary
case ".xci":
case ".nsp":
{
- IntegrityCheckLevel checkLevel = ConfigurationState.Instance.System.EnableFsIntegrityChecks
- ? IntegrityCheckLevel.ErrorOnInvalid
- : IntegrityCheckLevel.None;
-
using IFileSystem pfs =
PartitionFileSystemUtils.OpenApplicationFileSystem(filePath, _virtualFileSystem);
Dictionary updates =
- pfs.GetContentData(ContentMetaType.Patch, _virtualFileSystem, checkLevel);
+ pfs.GetContentData(ContentMetaType.Patch, _virtualFileSystem, ConfigurationState.Instance.System.IntegrityCheckLevel);
if (updates.Count == 0)
{
diff --git a/src/Ryujinx/Utilities/AppLibrary/ApplicationMetadata.cs b/src/Ryujinx/Systems/AppLibrary/ApplicationMetadata.cs
similarity index 97%
rename from src/Ryujinx/Utilities/AppLibrary/ApplicationMetadata.cs
rename to src/Ryujinx/Systems/AppLibrary/ApplicationMetadata.cs
index d823c7482..9d8488aeb 100644
--- a/src/Ryujinx/Utilities/AppLibrary/ApplicationMetadata.cs
+++ b/src/Ryujinx/Systems/AppLibrary/ApplicationMetadata.cs
@@ -1,7 +1,7 @@
using System;
using System.Text.Json.Serialization;
-namespace Ryujinx.Ava.Utilities.AppLibrary
+namespace Ryujinx.Ava.Systems.AppLibrary
{
public class ApplicationMetadata
{
diff --git a/src/Ryujinx/Utilities/AppLibrary/LdnGameData.cs b/src/Ryujinx/Systems/AppLibrary/LdnGameData.cs
similarity index 97%
rename from src/Ryujinx/Utilities/AppLibrary/LdnGameData.cs
rename to src/Ryujinx/Systems/AppLibrary/LdnGameData.cs
index 252c0ecdc..6750983d6 100644
--- a/src/Ryujinx/Utilities/AppLibrary/LdnGameData.cs
+++ b/src/Ryujinx/Systems/AppLibrary/LdnGameData.cs
@@ -4,7 +4,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
-namespace Ryujinx.Ava.Utilities.AppLibrary
+namespace Ryujinx.Ava.Systems.AppLibrary
{
public struct LdnGameData
{
diff --git a/src/Ryujinx/Utilities/AppLibrary/LdnGameDataReceivedEventArgs.cs b/src/Ryujinx/Systems/AppLibrary/LdnGameDataReceivedEventArgs.cs
similarity index 90%
rename from src/Ryujinx/Utilities/AppLibrary/LdnGameDataReceivedEventArgs.cs
rename to src/Ryujinx/Systems/AppLibrary/LdnGameDataReceivedEventArgs.cs
index 0eaa6ecb3..6c80c1924 100644
--- a/src/Ryujinx/Utilities/AppLibrary/LdnGameDataReceivedEventArgs.cs
+++ b/src/Ryujinx/Systems/AppLibrary/LdnGameDataReceivedEventArgs.cs
@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
-namespace Ryujinx.Ava.Utilities.AppLibrary
+namespace Ryujinx.Ava.Systems.AppLibrary
{
public class LdnGameDataReceivedEventArgs : EventArgs
{
diff --git a/src/Ryujinx/Utilities/AppLibrary/LdnGameDataSerializerContext.cs b/src/Ryujinx/Systems/AppLibrary/LdnGameDataSerializerContext.cs
similarity index 83%
rename from src/Ryujinx/Utilities/AppLibrary/LdnGameDataSerializerContext.cs
rename to src/Ryujinx/Systems/AppLibrary/LdnGameDataSerializerContext.cs
index 90d1894c7..ff7718ed5 100644
--- a/src/Ryujinx/Utilities/AppLibrary/LdnGameDataSerializerContext.cs
+++ b/src/Ryujinx/Systems/AppLibrary/LdnGameDataSerializerContext.cs
@@ -1,7 +1,7 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
-namespace Ryujinx.Ava.Utilities.AppLibrary
+namespace Ryujinx.Ava.Systems.AppLibrary
{
[JsonSerializable(typeof(IEnumerable))]
internal partial class LdnGameDataSerializerContext : JsonSerializerContext;
diff --git a/src/Ryujinx/Utilities/Compat/CompatibilityCsv.cs b/src/Ryujinx/Systems/CompatibilityCsv.cs
similarity index 99%
rename from src/Ryujinx/Utilities/Compat/CompatibilityCsv.cs
rename to src/Ryujinx/Systems/CompatibilityCsv.cs
index b58c05299..9bab87d9f 100644
--- a/src/Ryujinx/Utilities/Compat/CompatibilityCsv.cs
+++ b/src/Ryujinx/Systems/CompatibilityCsv.cs
@@ -9,7 +9,7 @@ using System.Linq;
using System.Reflection;
using System.Text;
-namespace Ryujinx.Ava.Utilities.Compat
+namespace Ryujinx.Ava.Systems
{
public struct ColumnIndices(Func, int> getIndex)
{
diff --git a/src/Ryujinx/Utilities/Configuration/AudioBackend.cs b/src/Ryujinx/Systems/Configuration/AudioBackend.cs
similarity index 84%
rename from src/Ryujinx/Utilities/Configuration/AudioBackend.cs
rename to src/Ryujinx/Systems/Configuration/AudioBackend.cs
index 8394bb282..a0aa30f38 100644
--- a/src/Ryujinx/Utilities/Configuration/AudioBackend.cs
+++ b/src/Ryujinx/Systems/Configuration/AudioBackend.cs
@@ -1,7 +1,7 @@
using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
-namespace Ryujinx.Ava.Utilities.Configuration
+namespace Ryujinx.Ava.Systems.Configuration
{
[JsonConverter(typeof(TypedStringEnumConverter))]
public enum AudioBackend
diff --git a/src/Ryujinx/Utilities/Configuration/ConfigurationFileFormat.cs b/src/Ryujinx/Systems/Configuration/ConfigurationFileFormat.cs
similarity index 99%
rename from src/Ryujinx/Utilities/Configuration/ConfigurationFileFormat.cs
rename to src/Ryujinx/Systems/Configuration/ConfigurationFileFormat.cs
index 814a48e53..042f95c46 100644
--- a/src/Ryujinx/Utilities/Configuration/ConfigurationFileFormat.cs
+++ b/src/Ryujinx/Systems/Configuration/ConfigurationFileFormat.cs
@@ -1,5 +1,5 @@
-using Ryujinx.Ava.Utilities.Configuration.System;
-using Ryujinx.Ava.Utilities.Configuration.UI;
+using Ryujinx.Ava.Systems.Configuration.System;
+using Ryujinx.Ava.Systems.Configuration.UI;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Configuration.Multiplayer;
@@ -8,7 +8,7 @@ using Ryujinx.Common.Utilities;
using Ryujinx.HLE;
using System.Collections.Generic;
-namespace Ryujinx.Ava.Utilities.Configuration
+namespace Ryujinx.Ava.Systems.Configuration
{
public class ConfigurationFileFormat
{
diff --git a/src/Ryujinx/Utilities/Configuration/ConfigurationFileFormatSettings.cs b/src/Ryujinx/Systems/Configuration/ConfigurationFileFormatSettings.cs
similarity index 83%
rename from src/Ryujinx/Utilities/Configuration/ConfigurationFileFormatSettings.cs
rename to src/Ryujinx/Systems/Configuration/ConfigurationFileFormatSettings.cs
index 175d4dee8..1d0350dd3 100644
--- a/src/Ryujinx/Utilities/Configuration/ConfigurationFileFormatSettings.cs
+++ b/src/Ryujinx/Systems/Configuration/ConfigurationFileFormatSettings.cs
@@ -1,6 +1,6 @@
using Ryujinx.Common.Utilities;
-namespace Ryujinx.Ava.Utilities.Configuration
+namespace Ryujinx.Ava.Systems.Configuration
{
internal static class ConfigurationFileFormatSettings
{
diff --git a/src/Ryujinx/Utilities/Configuration/ConfigurationJsonSerializerContext.cs b/src/Ryujinx/Systems/Configuration/ConfigurationJsonSerializerContext.cs
similarity index 84%
rename from src/Ryujinx/Utilities/Configuration/ConfigurationJsonSerializerContext.cs
rename to src/Ryujinx/Systems/Configuration/ConfigurationJsonSerializerContext.cs
index a81e00f4a..8574b3a93 100644
--- a/src/Ryujinx/Utilities/Configuration/ConfigurationJsonSerializerContext.cs
+++ b/src/Ryujinx/Systems/Configuration/ConfigurationJsonSerializerContext.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Ryujinx.Ava.Utilities.Configuration
+namespace Ryujinx.Ava.Systems.Configuration
{
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(ConfigurationFileFormat))]
diff --git a/src/Ryujinx/Utilities/Configuration/ConfigurationState.Migration.cs b/src/Ryujinx/Systems/Configuration/ConfigurationState.Migration.cs
similarity index 99%
rename from src/Ryujinx/Utilities/Configuration/ConfigurationState.Migration.cs
rename to src/Ryujinx/Systems/Configuration/ConfigurationState.Migration.cs
index 8a0ddb560..fcea6dbf0 100644
--- a/src/Ryujinx/Utilities/Configuration/ConfigurationState.Migration.cs
+++ b/src/Ryujinx/Systems/Configuration/ConfigurationState.Migration.cs
@@ -1,7 +1,7 @@
using Avalonia.Media;
using Gommon;
-using Ryujinx.Ava.Utilities.Configuration.System;
-using Ryujinx.Ava.Utilities.Configuration.UI;
+using Ryujinx.Ava.Systems.Configuration.System;
+using Ryujinx.Ava.Systems.Configuration.UI;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Configuration.Hid.Controller;
@@ -14,7 +14,7 @@ using System.Collections.Generic;
using System.Linq;
using RyuLogger = Ryujinx.Common.Logging.Logger;
-namespace Ryujinx.Ava.Utilities.Configuration
+namespace Ryujinx.Ava.Systems.Configuration
{
public partial class ConfigurationState
{
diff --git a/src/Ryujinx/Utilities/Configuration/ConfigurationState.Model.cs b/src/Ryujinx/Systems/Configuration/ConfigurationState.Model.cs
similarity index 98%
rename from src/Ryujinx/Utilities/Configuration/ConfigurationState.Model.cs
rename to src/Ryujinx/Systems/Configuration/ConfigurationState.Model.cs
index 2ebf5725b..4d8a75de9 100644
--- a/src/Ryujinx/Utilities/Configuration/ConfigurationState.Model.cs
+++ b/src/Ryujinx/Systems/Configuration/ConfigurationState.Model.cs
@@ -1,8 +1,8 @@
using ARMeilleure;
using Gommon;
using LibHac.Tools.FsSystem;
-using Ryujinx.Ava.Utilities.Configuration.System;
-using Ryujinx.Ava.Utilities.Configuration.UI;
+using Ryujinx.Ava.Systems.Configuration.System;
+using Ryujinx.Ava.Systems.Configuration.UI;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
@@ -16,7 +16,7 @@ using System.Collections.Generic;
using System.Linq;
using RyuLogger = Ryujinx.Common.Logging.Logger;
-namespace Ryujinx.Ava.Utilities.Configuration
+namespace Ryujinx.Ava.Systems.Configuration
{
public partial class ConfigurationState
{
@@ -352,6 +352,10 @@ namespace Ryujinx.Ava.Utilities.Configuration
///
public ReactiveObject EnableFsIntegrityChecks { get; private set; }
+ public IntegrityCheckLevel IntegrityCheckLevel => EnableFsIntegrityChecks
+ ? IntegrityCheckLevel.ErrorOnInvalid
+ : IntegrityCheckLevel.None;
+
///
/// Enables FS access log output to the console. Possible modes are 0-3
///
@@ -843,8 +847,8 @@ namespace Ryujinx.Ava.Utilities.Configuration
public HleConfiguration CreateHleConfiguration() =>
new(
System.DramSize,
- (SystemLanguage)System.Language.Value,
- (RegionCode)System.Region.Value,
+ System.Language.Value.ToHLE(),
+ System.Region.Value.ToHLE(),
Graphics.VSyncMode,
System.EnableDockedMode,
System.EnablePtc,
diff --git a/src/Ryujinx/Utilities/Configuration/ConfigurationState.cs b/src/Ryujinx/Systems/Configuration/ConfigurationState.cs
similarity index 99%
rename from src/Ryujinx/Utilities/Configuration/ConfigurationState.cs
rename to src/Ryujinx/Systems/Configuration/ConfigurationState.cs
index 5fb313cad..811c0b971 100644
--- a/src/Ryujinx/Utilities/Configuration/ConfigurationState.cs
+++ b/src/Ryujinx/Systems/Configuration/ConfigurationState.cs
@@ -1,5 +1,5 @@
-using Ryujinx.Ava.Utilities.Configuration.System;
-using Ryujinx.Ava.Utilities.Configuration.UI;
+using Ryujinx.Ava.Systems.Configuration.System;
+using Ryujinx.Ava.Systems.Configuration.UI;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Configuration.Hid.Keyboard;
@@ -9,7 +9,7 @@ using Ryujinx.HLE;
using System;
using System.Linq;
-namespace Ryujinx.Ava.Utilities.Configuration
+namespace Ryujinx.Ava.Systems.Configuration
{
public partial class ConfigurationState
{
diff --git a/src/Ryujinx/Utilities/Configuration/FileTypes.cs b/src/Ryujinx/Systems/Configuration/FileTypes.cs
similarity index 90%
rename from src/Ryujinx/Utilities/Configuration/FileTypes.cs
rename to src/Ryujinx/Systems/Configuration/FileTypes.cs
index c4550b5a6..70517683b 100644
--- a/src/Ryujinx/Utilities/Configuration/FileTypes.cs
+++ b/src/Ryujinx/Systems/Configuration/FileTypes.cs
@@ -1,8 +1,8 @@
using System;
-using static Ryujinx.Ava.Utilities.Configuration.ConfigurationState.UISection;
+using static Ryujinx.Ava.Systems.Configuration.ConfigurationState.UISection;
-namespace Ryujinx.Ava.Utilities.Configuration
+namespace Ryujinx.Ava.Systems.Configuration
{
public enum FileTypes
{
diff --git a/src/Ryujinx/Utilities/Configuration/LoggerModule.cs b/src/Ryujinx/Systems/Configuration/LoggerModule.cs
similarity index 98%
rename from src/Ryujinx/Utilities/Configuration/LoggerModule.cs
rename to src/Ryujinx/Systems/Configuration/LoggerModule.cs
index f6c1be082..941556c43 100644
--- a/src/Ryujinx/Utilities/Configuration/LoggerModule.cs
+++ b/src/Ryujinx/Systems/Configuration/LoggerModule.cs
@@ -4,7 +4,7 @@ using Ryujinx.Common.Logging.Targets;
using System;
using System.IO;
-namespace Ryujinx.Ava.Utilities.Configuration
+namespace Ryujinx.Ava.Systems.Configuration
{
public static class LoggerModule
{
diff --git a/src/Ryujinx/Utilities/Configuration/System/Language.cs b/src/Ryujinx/Systems/Configuration/System/Language.cs
similarity index 58%
rename from src/Ryujinx/Utilities/Configuration/System/Language.cs
rename to src/Ryujinx/Systems/Configuration/System/Language.cs
index 81a9bd192..ff1476b73 100644
--- a/src/Ryujinx/Utilities/Configuration/System/Language.cs
+++ b/src/Ryujinx/Systems/Configuration/System/Language.cs
@@ -1,7 +1,7 @@
using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
-namespace Ryujinx.Ava.Utilities.Configuration.System
+namespace Ryujinx.Ava.Systems.Configuration.System
{
[JsonConverter(typeof(TypedStringEnumConverter))]
public enum Language
@@ -25,4 +25,13 @@ namespace Ryujinx.Ava.Utilities.Configuration.System
TraditionalChinese,
BrazilianPortuguese,
}
+
+ public static class LanguageEnumHelper
+ {
+ public static Language ToUI(this HLE.HOS.SystemState.SystemLanguage hleLanguage)
+ => (Language)hleLanguage;
+
+ public static HLE.HOS.SystemState.SystemLanguage ToHLE(this Language uiLanguage)
+ => (HLE.HOS.SystemState.SystemLanguage)uiLanguage;
+ }
}
diff --git a/src/Ryujinx/Systems/Configuration/System/Region.cs b/src/Ryujinx/Systems/Configuration/System/Region.cs
new file mode 100644
index 000000000..0089f073c
--- /dev/null
+++ b/src/Ryujinx/Systems/Configuration/System/Region.cs
@@ -0,0 +1,26 @@
+using Ryujinx.Common.Utilities;
+using System.Text.Json.Serialization;
+
+namespace Ryujinx.Ava.Systems.Configuration.System
+{
+ [JsonConverter(typeof(TypedStringEnumConverter))]
+ public enum Region
+ {
+ Japan,
+ USA,
+ Europe,
+ Australia,
+ China,
+ Korea,
+ Taiwan,
+ }
+
+ public static class RegionEnumHelper
+ {
+ public static Region ToUI(this HLE.HOS.SystemState.RegionCode hleRegion)
+ => (Region)hleRegion;
+
+ public static HLE.HOS.SystemState.RegionCode ToHLE(this Region uiRegion)
+ => (HLE.HOS.SystemState.RegionCode)uiRegion;
+ }
+}
diff --git a/src/Ryujinx/Utilities/Configuration/UI/ColumnSort.cs b/src/Ryujinx/Systems/Configuration/UI/ColumnSort.cs
similarity index 73%
rename from src/Ryujinx/Utilities/Configuration/UI/ColumnSort.cs
rename to src/Ryujinx/Systems/Configuration/UI/ColumnSort.cs
index e74ca0ec5..e5f54c799 100644
--- a/src/Ryujinx/Utilities/Configuration/UI/ColumnSort.cs
+++ b/src/Ryujinx/Systems/Configuration/UI/ColumnSort.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Ava.Utilities.Configuration.UI
+namespace Ryujinx.Ava.Systems.Configuration.UI
{
public struct ColumnSort
{
diff --git a/src/Ryujinx/Utilities/Configuration/UI/FocusLostType.cs b/src/Ryujinx/Systems/Configuration/UI/FocusLostType.cs
similarity index 86%
rename from src/Ryujinx/Utilities/Configuration/UI/FocusLostType.cs
rename to src/Ryujinx/Systems/Configuration/UI/FocusLostType.cs
index eea588539..2d0341022 100644
--- a/src/Ryujinx/Utilities/Configuration/UI/FocusLostType.cs
+++ b/src/Ryujinx/Systems/Configuration/UI/FocusLostType.cs
@@ -1,7 +1,7 @@
using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
-namespace Ryujinx.Ava.Utilities.Configuration.UI
+namespace Ryujinx.Ava.Systems.Configuration.UI
{
[JsonConverter(typeof(TypedStringEnumConverter))]
public enum FocusLostType
diff --git a/src/Ryujinx/Utilities/Configuration/UI/GuiColumns.cs b/src/Ryujinx/Systems/Configuration/UI/GuiColumns.cs
similarity index 91%
rename from src/Ryujinx/Utilities/Configuration/UI/GuiColumns.cs
rename to src/Ryujinx/Systems/Configuration/UI/GuiColumns.cs
index 0ab9885fe..a0021be96 100644
--- a/src/Ryujinx/Utilities/Configuration/UI/GuiColumns.cs
+++ b/src/Ryujinx/Systems/Configuration/UI/GuiColumns.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Ava.Utilities.Configuration.UI
+namespace Ryujinx.Ava.Systems.Configuration.UI
{
public struct GuiColumns
{
diff --git a/src/Ryujinx/Utilities/Configuration/UI/ShownFileTypes.cs b/src/Ryujinx/Systems/Configuration/UI/ShownFileTypes.cs
similarity index 85%
rename from src/Ryujinx/Utilities/Configuration/UI/ShownFileTypes.cs
rename to src/Ryujinx/Systems/Configuration/UI/ShownFileTypes.cs
index 9541b4885..bc32bd153 100644
--- a/src/Ryujinx/Utilities/Configuration/UI/ShownFileTypes.cs
+++ b/src/Ryujinx/Systems/Configuration/UI/ShownFileTypes.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Ava.Utilities.Configuration.UI
+namespace Ryujinx.Ava.Systems.Configuration.UI
{
public struct ShownFileTypes
{
diff --git a/src/Ryujinx/Utilities/Configuration/UI/UpdaterType.cs b/src/Ryujinx/Systems/Configuration/UI/UpdaterType.cs
similarity index 83%
rename from src/Ryujinx/Utilities/Configuration/UI/UpdaterType.cs
rename to src/Ryujinx/Systems/Configuration/UI/UpdaterType.cs
index 2ab17a497..06cf35d10 100644
--- a/src/Ryujinx/Utilities/Configuration/UI/UpdaterType.cs
+++ b/src/Ryujinx/Systems/Configuration/UI/UpdaterType.cs
@@ -1,7 +1,7 @@
using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
-namespace Ryujinx.Ava.Utilities.Configuration.UI
+namespace Ryujinx.Ava.Systems.Configuration.UI
{
[JsonConverter(typeof(TypedStringEnumConverter))]
public enum UpdaterType
diff --git a/src/Ryujinx/Utilities/Configuration/UI/WindowStartup.cs b/src/Ryujinx/Systems/Configuration/UI/WindowStartup.cs
similarity index 85%
rename from src/Ryujinx/Utilities/Configuration/UI/WindowStartup.cs
rename to src/Ryujinx/Systems/Configuration/UI/WindowStartup.cs
index 6c5e36879..be93ef4b6 100644
--- a/src/Ryujinx/Utilities/Configuration/UI/WindowStartup.cs
+++ b/src/Ryujinx/Systems/Configuration/UI/WindowStartup.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Ava.Utilities.Configuration.UI
+namespace Ryujinx.Ava.Systems.Configuration.UI
{
public struct WindowStartup
{
diff --git a/src/Ryujinx/Utilities/PlayReport/Analyzer.cs b/src/Ryujinx/Systems/PlayReport/Analyzer.cs
similarity index 98%
rename from src/Ryujinx/Utilities/PlayReport/Analyzer.cs
rename to src/Ryujinx/Systems/PlayReport/Analyzer.cs
index 8faf4fb31..d4198cdcf 100644
--- a/src/Ryujinx/Utilities/PlayReport/Analyzer.cs
+++ b/src/Ryujinx/Systems/PlayReport/Analyzer.cs
@@ -1,5 +1,5 @@
using Gommon;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using Ryujinx.Common.Logging;
using System;
using System.Collections.Generic;
@@ -7,7 +7,7 @@ using System.Collections.ObjectModel;
using System.Globalization;
using System.Linq;
-namespace Ryujinx.Ava.Utilities.PlayReport
+namespace Ryujinx.Ava.Systems.PlayReport
{
///
/// The entrypoint for the Play Report analysis system.
diff --git a/src/Ryujinx/Utilities/PlayReport/Delegates.cs b/src/Ryujinx/Systems/PlayReport/Delegates.cs
similarity index 97%
rename from src/Ryujinx/Utilities/PlayReport/Delegates.cs
rename to src/Ryujinx/Systems/PlayReport/Delegates.cs
index 92569d32e..b3496ec4d 100644
--- a/src/Ryujinx/Utilities/PlayReport/Delegates.cs
+++ b/src/Ryujinx/Systems/PlayReport/Delegates.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.Ava.Utilities.PlayReport
+namespace Ryujinx.Ava.Systems.PlayReport
{
///
/// The delegate type that powers single value formatters.
diff --git a/src/Ryujinx/Utilities/PlayReport/MatchedValues.cs b/src/Ryujinx/Systems/PlayReport/MatchedValues.cs
similarity index 96%
rename from src/Ryujinx/Utilities/PlayReport/MatchedValues.cs
rename to src/Ryujinx/Systems/PlayReport/MatchedValues.cs
index 46cae678a..025130758 100644
--- a/src/Ryujinx/Utilities/PlayReport/MatchedValues.cs
+++ b/src/Ryujinx/Systems/PlayReport/MatchedValues.cs
@@ -1,8 +1,8 @@
using MsgPack;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using System.Collections.Generic;
-namespace Ryujinx.Ava.Utilities.PlayReport
+namespace Ryujinx.Ava.Systems.PlayReport
{
public abstract class MatchedValue
{
diff --git a/src/Ryujinx/Utilities/PlayReport/PlayReports.Formatters.cs b/src/Ryujinx/Systems/PlayReport/PlayReports.Formatters.cs
similarity index 99%
rename from src/Ryujinx/Utilities/PlayReport/PlayReports.Formatters.cs
rename to src/Ryujinx/Systems/PlayReport/PlayReports.Formatters.cs
index b5215c693..5c5fb40f4 100644
--- a/src/Ryujinx/Utilities/PlayReport/PlayReports.Formatters.cs
+++ b/src/Ryujinx/Systems/PlayReport/PlayReports.Formatters.cs
@@ -5,7 +5,7 @@ using System.Buffers.Binary;
using System.Collections.Generic;
using System.Linq;
-namespace Ryujinx.Ava.Utilities.PlayReport
+namespace Ryujinx.Ava.Systems.PlayReport
{
public partial class PlayReports
{
diff --git a/src/Ryujinx/Utilities/PlayReport/PlayReports.cs b/src/Ryujinx/Systems/PlayReport/PlayReports.cs
similarity index 99%
rename from src/Ryujinx/Utilities/PlayReport/PlayReports.cs
rename to src/Ryujinx/Systems/PlayReport/PlayReports.cs
index c46ae2be5..e42ca185c 100644
--- a/src/Ryujinx/Utilities/PlayReport/PlayReports.cs
+++ b/src/Ryujinx/Systems/PlayReport/PlayReports.cs
@@ -1,6 +1,6 @@
using System;
-namespace Ryujinx.Ava.Utilities.PlayReport
+namespace Ryujinx.Ava.Systems.PlayReport
{
public static partial class PlayReports
{
diff --git a/src/Ryujinx/Utilities/PlayReport/Specs.cs b/src/Ryujinx/Systems/PlayReport/Specs.cs
similarity index 97%
rename from src/Ryujinx/Utilities/PlayReport/Specs.cs
rename to src/Ryujinx/Systems/PlayReport/Specs.cs
index c162d4c2c..2dd1c02ac 100644
--- a/src/Ryujinx/Utilities/PlayReport/Specs.cs
+++ b/src/Ryujinx/Systems/PlayReport/Specs.cs
@@ -1,10 +1,10 @@
using MsgPack;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
-namespace Ryujinx.Ava.Utilities.PlayReport
+namespace Ryujinx.Ava.Systems.PlayReport
{
///
/// A mapping of title IDs to value formatter specs.
@@ -103,7 +103,7 @@ namespace Ryujinx.Ava.Utilities.PlayReport
/// matching a specific set of keys that could exist in a Play Report for the previously specified title IDs.
///
/// The 'Sparse' multi-value formatters do not require every key to be present.
- /// If you need this requirement, use .
+ /// If you need this requirement, use .
///
/// The key names to match.
/// The function which can format the values.
@@ -118,7 +118,7 @@ namespace Ryujinx.Ava.Utilities.PlayReport
/// matching a specific set of keys that could exist in a Play Report for the previously specified title IDs.
///
/// The 'Sparse' multi-value formatters do not require every key to be present.
- /// If you need this requirement, use .
+ /// If you need this requirement, use .
///
/// The resolution priority of this value formatter. Higher resolves sooner.
/// The key names to match.
diff --git a/src/Ryujinx/Utilities/PlayReport/Value.cs b/src/Ryujinx/Systems/PlayReport/Value.cs
similarity index 99%
rename from src/Ryujinx/Utilities/PlayReport/Value.cs
rename to src/Ryujinx/Systems/PlayReport/Value.cs
index b3108a41e..1c738c213 100644
--- a/src/Ryujinx/Utilities/PlayReport/Value.cs
+++ b/src/Ryujinx/Systems/PlayReport/Value.cs
@@ -3,7 +3,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
-namespace Ryujinx.Ava.Utilities.PlayReport
+namespace Ryujinx.Ava.Systems.PlayReport
{
///
/// The base input data to a ValueFormatter delegate,
diff --git a/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs b/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs
index a8a6f24c6..18252f337 100644
--- a/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs
+++ b/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs
@@ -7,7 +7,7 @@ using Ryujinx.Ava.UI.Controls;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.UI.Windows;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common;
using Ryujinx.HLE;
using Ryujinx.HLE.HOS.Applets;
diff --git a/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs b/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs
index cd6700aea..9635582c8 100644
--- a/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs
+++ b/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs
@@ -12,8 +12,7 @@ using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.UI.Views.Misc;
using Ryujinx.Ava.UI.Windows;
using Ryujinx.Ava.Utilities;
-using Ryujinx.Ava.Utilities.AppLibrary;
-using Ryujinx.Ava.Utilities.Compat;
+using Ryujinx.Ava.Systems.AppLibrary;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Helper;
using Ryujinx.HLE.HOS;
@@ -408,7 +407,7 @@ namespace Ryujinx.Ava.UI.Controls
public async void OpenApplicationCompatibility_Click(object sender, RoutedEventArgs args)
{
if (sender is MenuItem { DataContext: MainWindowViewModel { SelectedApplication: not null } viewModel })
- await CompatibilityList.Show(viewModel.SelectedApplication.IdString);
+ await CompatibilityListWindow.Show(viewModel.SelectedApplication.IdString);
}
public async void OpenApplicationData_Click(object sender, RoutedEventArgs args)
diff --git a/src/Ryujinx/UI/Helpers/ApplicationOpenedEventArgs.cs b/src/Ryujinx/UI/Helpers/ApplicationOpenedEventArgs.cs
index 0ceaa6c4c..93f6b4c3c 100644
--- a/src/Ryujinx/UI/Helpers/ApplicationOpenedEventArgs.cs
+++ b/src/Ryujinx/UI/Helpers/ApplicationOpenedEventArgs.cs
@@ -1,5 +1,5 @@
using Avalonia.Interactivity;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
namespace Ryujinx.Ava.UI.Helpers
{
diff --git a/src/Ryujinx/UI/Helpers/Converters/MultiplayerInfoConverter.cs b/src/Ryujinx/UI/Helpers/Converters/MultiplayerInfoConverter.cs
index 7694e8883..1dca0d164 100644
--- a/src/Ryujinx/UI/Helpers/Converters/MultiplayerInfoConverter.cs
+++ b/src/Ryujinx/UI/Helpers/Converters/MultiplayerInfoConverter.cs
@@ -2,7 +2,7 @@ using Avalonia.Data.Converters;
using Avalonia.Markup.Xaml;
using Gommon;
using Ryujinx.Ava.Common.Locale;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using System;
using System.Globalization;
using System.Text;
diff --git a/src/Ryujinx/UI/Helpers/LoggerAdapter.cs b/src/Ryujinx/UI/Helpers/LoggerAdapter.cs
index ba317e74a..902d3966f 100644
--- a/src/Ryujinx/UI/Helpers/LoggerAdapter.cs
+++ b/src/Ryujinx/UI/Helpers/LoggerAdapter.cs
@@ -1,7 +1,7 @@
using Avalonia.Logging;
using Avalonia.Utilities;
using Gommon;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common.Logging;
using System;
using System.Text;
diff --git a/src/Ryujinx/UI/Models/Generic/LastPlayedSortComparer.cs b/src/Ryujinx/UI/Models/Generic/LastPlayedSortComparer.cs
index f2d27f2df..3808ae6a2 100644
--- a/src/Ryujinx/UI/Models/Generic/LastPlayedSortComparer.cs
+++ b/src/Ryujinx/UI/Models/Generic/LastPlayedSortComparer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx/UI/Models/Generic/TimePlayedSortComparer.cs b/src/Ryujinx/UI/Models/Generic/TimePlayedSortComparer.cs
index d7ae51e96..321bde09b 100644
--- a/src/Ryujinx/UI/Models/Generic/TimePlayedSortComparer.cs
+++ b/src/Ryujinx/UI/Models/Generic/TimePlayedSortComparer.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx/UI/Models/SaveModel.cs b/src/Ryujinx/UI/Models/SaveModel.cs
index d50aabc4e..1a4718ddf 100644
--- a/src/Ryujinx/UI/Models/SaveModel.cs
+++ b/src/Ryujinx/UI/Models/SaveModel.cs
@@ -3,7 +3,7 @@ using LibHac.Fs;
using LibHac.Ncm;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.Utilities;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using Ryujinx.HLE.FileSystem;
using System.IO;
using System.Linq;
diff --git a/src/Ryujinx/UI/Renderer/EmbeddedWindow.cs b/src/Ryujinx/UI/Renderer/EmbeddedWindow.cs
index 21c39967f..7b642bb9d 100644
--- a/src/Ryujinx/UI/Renderer/EmbeddedWindow.cs
+++ b/src/Ryujinx/UI/Renderer/EmbeddedWindow.cs
@@ -1,7 +1,7 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Platform;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Helper;
using SPB.Graphics;
diff --git a/src/Ryujinx/UI/Renderer/EmbeddedWindowOpenGL.cs b/src/Ryujinx/UI/Renderer/EmbeddedWindowOpenGL.cs
index 81a94d6c4..e788272f6 100644
--- a/src/Ryujinx/UI/Renderer/EmbeddedWindowOpenGL.cs
+++ b/src/Ryujinx/UI/Renderer/EmbeddedWindowOpenGL.cs
@@ -1,5 +1,5 @@
using OpenTK.Graphics.OpenGL;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
diff --git a/src/Ryujinx/UI/Renderer/RendererHost.cs b/src/Ryujinx/UI/Renderer/RendererHost.cs
index 7352dbdb5..fd7124f2b 100644
--- a/src/Ryujinx/UI/Renderer/RendererHost.cs
+++ b/src/Ryujinx/UI/Renderer/RendererHost.cs
@@ -1,7 +1,7 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Media;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common.Configuration;
using System;
diff --git a/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs
index 7a63c3391..07aa84c04 100644
--- a/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs
@@ -5,7 +5,7 @@ using CommunityToolkit.Mvvm.ComponentModel;
using Gommon;
using Ryujinx.Ava.Common;
using Ryujinx.Ava.Common.Locale;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using System;
namespace Ryujinx.Ava.UI.ViewModels
diff --git a/src/Ryujinx/UI/ViewModels/AppListFavoriteComparable.cs b/src/Ryujinx/UI/ViewModels/AppListFavoriteComparable.cs
index 9c37368de..c8d648b99 100644
--- a/src/Ryujinx/UI/ViewModels/AppListFavoriteComparable.cs
+++ b/src/Ryujinx/UI/ViewModels/AppListFavoriteComparable.cs
@@ -1,4 +1,4 @@
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using System;
namespace Ryujinx.Ava.UI.ViewModels
diff --git a/src/Ryujinx/UI/ViewModels/ApplicationDataViewModel.cs b/src/Ryujinx/UI/ViewModels/ApplicationDataViewModel.cs
index 33c75bc62..4bffcb7d3 100644
--- a/src/Ryujinx/UI/ViewModels/ApplicationDataViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/ApplicationDataViewModel.cs
@@ -1,7 +1,7 @@
using Gommon;
using Ryujinx.Ava.Common.Locale;
-using Ryujinx.Ava.Utilities.AppLibrary;
-using Ryujinx.Ava.Utilities.PlayReport;
+using Ryujinx.Ava.Systems.AppLibrary;
+using Ryujinx.Ava.Systems.PlayReport;
namespace Ryujinx.Ava.UI.ViewModels
{
diff --git a/src/Ryujinx/Utilities/Compat/CompatibilityViewModel.cs b/src/Ryujinx/UI/ViewModels/CompatibilityViewModel.cs
similarity index 94%
rename from src/Ryujinx/Utilities/Compat/CompatibilityViewModel.cs
rename to src/Ryujinx/UI/ViewModels/CompatibilityViewModel.cs
index 721a36194..d6c10044d 100644
--- a/src/Ryujinx/Utilities/Compat/CompatibilityViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/CompatibilityViewModel.cs
@@ -1,10 +1,11 @@
using Gommon;
-using Ryujinx.Ava.UI.ViewModels;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems;
+using Ryujinx.Ava.Systems.AppLibrary;
+using Ryujinx.Ava.UI.Windows;
using System.Collections.Generic;
using System.Linq;
-namespace Ryujinx.Ava.Utilities.Compat
+namespace Ryujinx.Ava.UI.ViewModels
{
public class CompatibilityViewModel : BaseModel
{
diff --git a/src/Ryujinx/UI/ViewModels/DlcSelectViewModel.cs b/src/Ryujinx/UI/ViewModels/DlcSelectViewModel.cs
index b486aa766..e236ac737 100644
--- a/src/Ryujinx/UI/ViewModels/DlcSelectViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/DlcSelectViewModel.cs
@@ -1,6 +1,6 @@
using CommunityToolkit.Mvvm.ComponentModel;
using Ryujinx.Ava.Common.Models;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using System.Linq;
namespace Ryujinx.Ava.UI.ViewModels
diff --git a/src/Ryujinx/UI/ViewModels/DownloadableContentManagerViewModel.cs b/src/Ryujinx/UI/ViewModels/DownloadableContentManagerViewModel.cs
index a16a06ff5..dc1e928f1 100644
--- a/src/Ryujinx/UI/ViewModels/DownloadableContentManagerViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/DownloadableContentManagerViewModel.cs
@@ -7,7 +7,7 @@ using FluentAvalonia.UI.Controls;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.Common.Models;
using Ryujinx.Ava.UI.Helpers;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
diff --git a/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs b/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs
index 1b0291fb9..0431eab42 100644
--- a/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs
@@ -10,7 +10,7 @@ using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Models;
using Ryujinx.Ava.UI.Models.Input;
using Ryujinx.Ava.UI.Windows;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
diff --git a/src/Ryujinx/UI/ViewModels/Input/LedInputViewModel.cs b/src/Ryujinx/UI/ViewModels/Input/LedInputViewModel.cs
index 521b13859..effd07904 100644
--- a/src/Ryujinx/UI/ViewModels/Input/LedInputViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/Input/LedInputViewModel.cs
@@ -3,7 +3,7 @@ using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using Humanizer;
using Ryujinx.Ava.UI.Helpers;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using System.Globalization;
namespace Ryujinx.Ava.UI.ViewModels.Input
diff --git a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
index 2c42a1a1d..1e7480b11 100644
--- a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
@@ -23,8 +23,8 @@ using Ryujinx.Ava.UI.Models;
using Ryujinx.Ava.UI.Models.Generic;
using Ryujinx.Ava.UI.Renderer;
using Ryujinx.Ava.UI.Windows;
-using Ryujinx.Ava.Utilities.AppLibrary;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.AppLibrary;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Helper;
diff --git a/src/Ryujinx/UI/ViewModels/ModManagerViewModel.cs b/src/Ryujinx/UI/ViewModels/ModManagerViewModel.cs
index cda7e34cf..081ca0912 100644
--- a/src/Ryujinx/UI/ViewModels/ModManagerViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/ModManagerViewModel.cs
@@ -7,7 +7,7 @@ using Gommon;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Models;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
using Ryujinx.Common.Utilities;
diff --git a/src/Ryujinx/UI/ViewModels/SettingsHacksViewModel.cs b/src/Ryujinx/UI/ViewModels/SettingsHacksViewModel.cs
index 167b8a857..816e85c98 100644
--- a/src/Ryujinx/UI/ViewModels/SettingsHacksViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/SettingsHacksViewModel.cs
@@ -1,6 +1,6 @@
using CommunityToolkit.Mvvm.ComponentModel;
using Gommon;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
namespace Ryujinx.Ava.UI.ViewModels
{
diff --git a/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs b/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs
index d0a6c6d8a..aa6b34922 100644
--- a/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs
@@ -12,9 +12,9 @@ using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Models.Input;
using Ryujinx.Ava.UI.Windows;
-using Ryujinx.Ava.Utilities.Configuration;
-using Ryujinx.Ava.Utilities.Configuration.System;
-using Ryujinx.Ava.Utilities.Configuration.UI;
+using Ryujinx.Ava.Systems.Configuration;
+using Ryujinx.Ava.Systems.Configuration.System;
+using Ryujinx.Ava.Systems.Configuration.UI;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Multiplayer;
using Ryujinx.Common.GraphicsDriver;
diff --git a/src/Ryujinx/UI/ViewModels/TitleUpdateViewModel.cs b/src/Ryujinx/UI/ViewModels/TitleUpdateViewModel.cs
index 2b88aceed..7ecfc1c87 100644
--- a/src/Ryujinx/UI/ViewModels/TitleUpdateViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/TitleUpdateViewModel.cs
@@ -6,7 +6,7 @@ using FluentAvalonia.UI.Controls;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.Common.Models;
using Ryujinx.Ava.UI.Helpers;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using System.Collections.Generic;
using System.IO;
using System.Linq;
diff --git a/src/Ryujinx/UI/ViewModels/XCITrimmerViewModel.cs b/src/Ryujinx/UI/ViewModels/XCITrimmerViewModel.cs
index 560f852db..a48efcbd5 100644
--- a/src/Ryujinx/UI/ViewModels/XCITrimmerViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/XCITrimmerViewModel.cs
@@ -6,7 +6,7 @@ using Ryujinx.Ava.Common;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.Common.Models;
using Ryujinx.Ava.UI.Helpers;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using Ryujinx.Common.Utilities;
using System.Collections.Generic;
using System.Collections.ObjectModel;
diff --git a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs
index 6c2cf6cae..13c2f4c8a 100644
--- a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs
+++ b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs
@@ -11,9 +11,9 @@ using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.UI.Windows;
using Ryujinx.Ava.Utilities;
-using Ryujinx.Ava.Utilities.AppLibrary;
-using Ryujinx.Ava.Utilities.Compat;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.AppLibrary;
+using Ryujinx.Ava.Systems.Configuration;
+using Ryujinx.Ava.UI.Views.Misc;
using Ryujinx.Common;
using Ryujinx.Common.Helper;
using Ryujinx.Common.Utilities;
@@ -51,7 +51,7 @@ namespace Ryujinx.Ava.UI.Views.Main
UninstallFileTypesMenuItem.Command = Commands.Create(UninstallFileTypes);
XciTrimmerMenuItem.Command = Commands.Create(XCITrimmerWindow.Show);
AboutWindowMenuItem.Command = Commands.Create(AboutWindow.Show);
- CompatibilityListMenuItem.Command = Commands.Create(() => CompatibilityList.Show());
+ CompatibilityListMenuItem.Command = Commands.Create(() => CompatibilityListWindow.Show());
UpdateMenuItem.Command = MainWindowViewModel.UpdateCommand;
diff --git a/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml.cs b/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml.cs
index 5a023910c..f8c4c48a2 100644
--- a/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml.cs
+++ b/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml.cs
@@ -7,7 +7,7 @@ using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Controls;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.UI.Windows;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
diff --git a/src/Ryujinx/UI/Views/Misc/ApplicationDataView.axaml.cs b/src/Ryujinx/UI/Views/Misc/ApplicationDataView.axaml.cs
index 02020c78c..dc9dd527c 100644
--- a/src/Ryujinx/UI/Views/Misc/ApplicationDataView.axaml.cs
+++ b/src/Ryujinx/UI/Views/Misc/ApplicationDataView.axaml.cs
@@ -2,15 +2,13 @@
using Avalonia.Input.Platform;
using Avalonia.Interactivity;
using Avalonia.Layout;
-using Avalonia.Styling;
using FluentAvalonia.UI.Controls;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Controls;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.UI.Windows;
-using Ryujinx.Ava.Utilities.AppLibrary;
-using Ryujinx.Ava.Utilities.Compat;
+using Ryujinx.Ava.Systems.AppLibrary;
using System.Linq;
using System.Threading.Tasks;
@@ -46,21 +44,18 @@ namespace Ryujinx.Ava.UI.Views.Misc
if (RyujinxApp.AppLifetime.Windows.TryGetFirst(x => x is ContentDialogOverlayWindow, out Window window))
window.Close(ContentDialogResult.None);
- await CompatibilityList.Show((string)playabilityLabel.Tag);
+ await CompatibilityListWindow.Show((string)playabilityLabel.Tag);
}
private async void IdString_OnClick(object sender, RoutedEventArgs e)
{
- if (DataContext is not MainWindowViewModel mwvm)
- return;
-
if (sender is not Button { Content: TextBlock idText })
return;
if (!RyujinxApp.IsClipboardAvailable(out IClipboard clipboard))
return;
- ApplicationData appData = mwvm.Applications.FirstOrDefault(it => it.IdString == idText.Text);
+ ApplicationData appData = RyujinxApp.MainWindow.ViewModel.Applications.FirstOrDefault(it => it.IdString == idText.Text);
if (appData is null)
return;
diff --git a/src/Ryujinx/UI/Views/Misc/ApplicationGridView.axaml.cs b/src/Ryujinx/UI/Views/Misc/ApplicationGridView.axaml.cs
index bb7d62c8f..c1cf7a66b 100644
--- a/src/Ryujinx/UI/Views/Misc/ApplicationGridView.axaml.cs
+++ b/src/Ryujinx/UI/Views/Misc/ApplicationGridView.axaml.cs
@@ -4,7 +4,7 @@ using Avalonia.Interactivity;
using Ryujinx.Ava.UI.Controls;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using System;
namespace Ryujinx.Ava.UI.Views.Misc
diff --git a/src/Ryujinx/UI/Views/Misc/ApplicationListView.axaml.cs b/src/Ryujinx/UI/Views/Misc/ApplicationListView.axaml.cs
index e393d0836..aa87a8c9a 100644
--- a/src/Ryujinx/UI/Views/Misc/ApplicationListView.axaml.cs
+++ b/src/Ryujinx/UI/Views/Misc/ApplicationListView.axaml.cs
@@ -5,8 +5,8 @@ using Avalonia.Interactivity;
using Ryujinx.Ava.UI.Controls;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
-using Ryujinx.Ava.Utilities.AppLibrary;
-using Ryujinx.Ava.Utilities.Compat;
+using Ryujinx.Ava.Systems.AppLibrary;
+using Ryujinx.Ava.UI.Windows;
using System;
using System.Linq;
@@ -36,7 +36,7 @@ namespace Ryujinx.Ava.UI.Views.Misc
if (sender is not Button { Content: TextBlock playabilityLabel })
return;
- await CompatibilityList.Show((string)playabilityLabel.Tag);
+ await CompatibilityListWindow.Show((string)playabilityLabel.Tag);
}
private async void IdString_OnClick(object sender, RoutedEventArgs e)
diff --git a/src/Ryujinx/UI/Views/Misc/DlcSelectView.axaml.cs b/src/Ryujinx/UI/Views/Misc/DlcSelectView.axaml.cs
index 017ab9719..ebeaa0603 100644
--- a/src/Ryujinx/UI/Views/Misc/DlcSelectView.axaml.cs
+++ b/src/Ryujinx/UI/Views/Misc/DlcSelectView.axaml.cs
@@ -6,7 +6,7 @@ using Ryujinx.Ava.Common.Models;
using Ryujinx.Ava.UI.Controls;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using System.Threading.Tasks;
namespace Ryujinx.Ava.UI.Views.Misc
diff --git a/src/Ryujinx/UI/Windows/CheatWindow.axaml.cs b/src/Ryujinx/UI/Windows/CheatWindow.axaml.cs
index a9767bcca..2cdca2241 100644
--- a/src/Ryujinx/UI/Windows/CheatWindow.axaml.cs
+++ b/src/Ryujinx/UI/Windows/CheatWindow.axaml.cs
@@ -2,8 +2,8 @@ using Avalonia.Collections;
using LibHac.Tools.FsSystem;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Models;
-using Ryujinx.Ava.Utilities.AppLibrary;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.AppLibrary;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.HOS;
using System.Collections.Generic;
@@ -38,12 +38,9 @@ namespace Ryujinx.Ava.UI.Windows
MinHeight = 650;
LoadedCheats = [];
- IntegrityCheckLevel checkLevel = ConfigurationState.Instance.System.EnableFsIntegrityChecks
- ? IntegrityCheckLevel.ErrorOnInvalid
- : IntegrityCheckLevel.None;
Heading = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.CheatWindowHeading, titleName, titleId.ToUpper());
- BuildId = ApplicationData.GetBuildId(virtualFileSystem, checkLevel, titlePath);
+ BuildId = ApplicationData.GetBuildId(virtualFileSystem, ConfigurationState.Instance.System.IntegrityCheckLevel, titlePath);
InitializeComponent();
diff --git a/src/Ryujinx/UI/Windows/CompatibilityListWindow.axaml b/src/Ryujinx/UI/Windows/CompatibilityListWindow.axaml
new file mode 100644
index 000000000..e3347252f
--- /dev/null
+++ b/src/Ryujinx/UI/Windows/CompatibilityListWindow.axaml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Ryujinx/UI/Windows/CompatibilityListWindow.axaml.cs b/src/Ryujinx/UI/Windows/CompatibilityListWindow.axaml.cs
new file mode 100644
index 000000000..8b7954ee0
--- /dev/null
+++ b/src/Ryujinx/UI/Windows/CompatibilityListWindow.axaml.cs
@@ -0,0 +1,50 @@
+using Avalonia.Controls;
+using Avalonia.Styling;
+using FluentAvalonia.UI.Controls;
+using FluentAvalonia.UI.Windowing;
+using Ryujinx.Ava.Common.Locale;
+using Ryujinx.Ava.Systems.Configuration;
+using Ryujinx.Ava.UI.Helpers;
+using Ryujinx.Ava.UI.ViewModels;
+using Ryujinx.Ava.UI.Windows;
+using System.Threading.Tasks;
+
+namespace Ryujinx.Ava.UI.Windows
+{
+ public partial class CompatibilityListWindow : StyleableAppWindow
+ {
+ public static Task Show(string titleId = null) =>
+ ShowAsync(new CompatibilityListWindow
+ {
+ DataContext = new CompatibilityViewModel(RyujinxApp.MainWindow.ViewModel.ApplicationLibrary),
+ SearchBoxFlush = { Text = titleId ?? string.Empty },
+ SearchBoxNormal = { Text = titleId ?? string.Empty }
+ });
+
+ public CompatibilityListWindow() : base(useCustomTitleBar: true)
+ {
+ Title = RyujinxApp.FormatTitle(LocaleKeys.CompatibilityListTitle);
+
+ TitleBar.Height = 37;
+
+ InitializeComponent();
+
+ RyuLogo.Source = MainWindowViewModel.IconBitmap;
+ FlushControls.IsVisible = !ConfigurationState.Instance.ShowTitleBar;
+ NormalControls.IsVisible = ConfigurationState.Instance.ShowTitleBar;
+ }
+
+ // ReSharper disable once UnusedMember.Local
+ // its referenced in the axaml but rider keeps yelling at me that its unused so
+ private void TextBox_OnTextChanged(object sender, TextChangedEventArgs e)
+ {
+ if (DataContext is not CompatibilityViewModel cvm)
+ return;
+
+ if (sender is not TextBox searchBox)
+ return;
+
+ cvm.Search(searchBox.Text);
+ }
+ }
+}
diff --git a/src/Ryujinx/UI/Windows/DownloadableContentManagerWindow.axaml.cs b/src/Ryujinx/UI/Windows/DownloadableContentManagerWindow.axaml.cs
index c0897f910..9bd386d57 100644
--- a/src/Ryujinx/UI/Windows/DownloadableContentManagerWindow.axaml.cs
+++ b/src/Ryujinx/UI/Windows/DownloadableContentManagerWindow.axaml.cs
@@ -5,7 +5,7 @@ using FluentAvalonia.UI.Controls;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.Common.Models;
using Ryujinx.Ava.UI.ViewModels;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using Ryujinx.Common.Helper;
using System.Threading.Tasks;
diff --git a/src/Ryujinx/UI/Windows/GameSpecificSettingsWindow.axaml.cs b/src/Ryujinx/UI/Windows/GameSpecificSettingsWindow.axaml.cs
index a28099257..8e2761bff 100644
--- a/src/Ryujinx/UI/Windows/GameSpecificSettingsWindow.axaml.cs
+++ b/src/Ryujinx/UI/Windows/GameSpecificSettingsWindow.axaml.cs
@@ -11,7 +11,7 @@ using Ryujinx.Ava.UI.Models;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.UI.ViewModels.Input;
using Ryujinx.Ava.Utilities;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common.Configuration;
using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.HOS.SystemState;
diff --git a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
index 241a0c0dc..512a93f26 100644
--- a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
+++ b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
@@ -18,9 +18,9 @@ using Ryujinx.Ava.UI.Applet;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.Utilities;
-using Ryujinx.Ava.Utilities.AppLibrary;
-using Ryujinx.Ava.Utilities.Configuration;
-using Ryujinx.Ava.Utilities.Configuration.UI;
+using Ryujinx.Ava.Systems.AppLibrary;
+using Ryujinx.Ava.Systems.Configuration;
+using Ryujinx.Ava.Systems.Configuration.UI;
using Ryujinx.Common;
using Ryujinx.Common.Helper;
using Ryujinx.Common.Logging;
@@ -76,7 +76,7 @@ namespace Ryujinx.Ava.UI.Windows
public readonly double StatusBarHeight;
public readonly double MenuBarHeight;
- public MainWindow()
+ public MainWindow() : base(useCustomTitleBar: true)
{
DataContext = ViewModel = new MainWindowViewModel
{
@@ -90,9 +90,6 @@ namespace Ryujinx.Ava.UI.Windows
ViewModel.Title = RyujinxApp.FormatTitle();
- TitleBar.ExtendsContentIntoTitleBar = !ConfigurationState.Instance.ShowTitleBar;
- TitleBar.TitleBarHitTestType = (ConfigurationState.Instance.ShowTitleBar) ? TitleBarHitTestType.Simple : TitleBarHitTestType.Complex;
-
// NOTE: Height of MenuBar and StatusBar is not usable here, since it would still be 0 at this point.
StatusBarHeight = StatusBarView.StatusBar.MinHeight;
MenuBarHeight = MenuBar.MinHeight;
@@ -273,11 +270,7 @@ namespace Ryujinx.Ava.UI.Windows
LibHacHorizonManager.InitializeBcatServer();
LibHacHorizonManager.InitializeSystemClients();
- IntegrityCheckLevel checkLevel = ConfigurationState.Instance.System.EnableFsIntegrityChecks
- ? IntegrityCheckLevel.ErrorOnInvalid
- : IntegrityCheckLevel.None;
-
- ApplicationLibrary = new ApplicationLibrary(VirtualFileSystem, checkLevel)
+ ApplicationLibrary = new ApplicationLibrary(VirtualFileSystem, ConfigurationState.Instance.System.IntegrityCheckLevel)
{
DesiredLanguage = ConfigurationState.Instance.System.Language,
};
diff --git a/src/Ryujinx/UI/Windows/ModManagerWindow.axaml.cs b/src/Ryujinx/UI/Windows/ModManagerWindow.axaml.cs
index cb483b404..e51d1ca4a 100644
--- a/src/Ryujinx/UI/Windows/ModManagerWindow.axaml.cs
+++ b/src/Ryujinx/UI/Windows/ModManagerWindow.axaml.cs
@@ -6,7 +6,7 @@ using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Models;
using Ryujinx.Ava.UI.ViewModels;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using Ryujinx.Common.Helper;
using System.Threading.Tasks;
using Button = Avalonia.Controls.Button;
diff --git a/src/Ryujinx/UI/Windows/StyleableWindow.cs b/src/Ryujinx/UI/Windows/StyleableWindow.cs
index 0f3291226..294a36851 100644
--- a/src/Ryujinx/UI/Windows/StyleableWindow.cs
+++ b/src/Ryujinx/UI/Windows/StyleableWindow.cs
@@ -6,6 +6,7 @@ using Avalonia.Media;
using Avalonia.Platform;
using FluentAvalonia.UI.Windowing;
using Ryujinx.Ava.Common.Locale;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Ava.UI.ViewModels;
using System.Threading.Tasks;
@@ -21,7 +22,7 @@ namespace Ryujinx.Ava.UI.Windows
await appWindow.ShowDialog(owner ?? RyujinxApp.MainWindow);
}
- protected StyleableAppWindow()
+ protected StyleableAppWindow(bool useCustomTitleBar = false)
{
WindowStartupLocation = WindowStartupLocation.CenterOwner;
TransparencyLevelHint = [WindowTransparencyLevel.None];
@@ -29,6 +30,12 @@ namespace Ryujinx.Ava.UI.Windows
LocaleManager.Instance.LocaleChanged += LocaleChanged;
LocaleChanged();
+ if (useCustomTitleBar)
+ {
+ TitleBar.ExtendsContentIntoTitleBar = !ConfigurationState.Instance.ShowTitleBar;
+ TitleBar.TitleBarHitTestType = ConfigurationState.Instance.ShowTitleBar ? TitleBarHitTestType.Simple : TitleBarHitTestType.Complex;
+ }
+
Icon = MainWindowViewModel.IconBitmap;
}
diff --git a/src/Ryujinx/UI/Windows/TitleUpdateWindow.axaml.cs b/src/Ryujinx/UI/Windows/TitleUpdateWindow.axaml.cs
index b7c421c96..1146766b5 100644
--- a/src/Ryujinx/UI/Windows/TitleUpdateWindow.axaml.cs
+++ b/src/Ryujinx/UI/Windows/TitleUpdateWindow.axaml.cs
@@ -5,7 +5,7 @@ using FluentAvalonia.UI.Controls;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.Common.Models;
using Ryujinx.Ava.UI.ViewModels;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using Ryujinx.Common.Helper;
using System.Threading.Tasks;
diff --git a/src/Ryujinx/Utilities/AppletMetadata.cs b/src/Ryujinx/Utilities/AppletMetadata.cs
index 50f01b4c0..3dee3a94d 100644
--- a/src/Ryujinx/Utilities/AppletMetadata.cs
+++ b/src/Ryujinx/Utilities/AppletMetadata.cs
@@ -2,7 +2,7 @@
using LibHac.Ncm;
using LibHac.Ns;
using LibHac.Tools.FsSystem.NcaUtils;
-using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Systems.AppLibrary;
using Ryujinx.HLE;
using Ryujinx.HLE.FileSystem;
diff --git a/src/Ryujinx/Utilities/Compat/CompatibilityList.axaml b/src/Ryujinx/Utilities/Compat/CompatibilityList.axaml
deleted file mode 100644
index ef70a23d1..000000000
--- a/src/Ryujinx/Utilities/Compat/CompatibilityList.axaml
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Ryujinx/Utilities/Compat/CompatibilityList.axaml.cs b/src/Ryujinx/Utilities/Compat/CompatibilityList.axaml.cs
deleted file mode 100644
index db9feb36f..000000000
--- a/src/Ryujinx/Utilities/Compat/CompatibilityList.axaml.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-using Avalonia.Controls;
-using Avalonia.Styling;
-using FluentAvalonia.UI.Controls;
-using Ryujinx.Ava.Common.Locale;
-using Ryujinx.Ava.UI.Helpers;
-using System.Threading.Tasks;
-
-namespace Ryujinx.Ava.Utilities.Compat
-{
- public partial class CompatibilityList : UserControl
- {
- public static async Task Show(string titleId = null)
- {
- ContentDialog contentDialog = new()
- {
- PrimaryButtonText = string.Empty,
- SecondaryButtonText = string.Empty,
- CloseButtonText = LocaleManager.Instance[LocaleKeys.SettingsButtonClose],
- Content = new CompatibilityList
- {
- DataContext = new CompatibilityViewModel(RyujinxApp.MainWindow.ViewModel.ApplicationLibrary),
- SearchBox = {
- Text = titleId ?? ""
- }
- }
- };
-
- await ContentDialogHelper.ShowAsync(contentDialog.ApplyStyles());
- }
-
- public CompatibilityList()
- {
- InitializeComponent();
- }
-
- private void TextBox_OnTextChanged(object sender, TextChangedEventArgs e)
- {
- if (DataContext is not CompatibilityViewModel cvm)
- return;
-
- if (sender is not TextBox searchBox)
- return;
-
- cvm.Search(searchBox.Text);
- }
- }
-}
diff --git a/src/Ryujinx/Utilities/Configuration/System/Region.cs b/src/Ryujinx/Utilities/Configuration/System/Region.cs
deleted file mode 100644
index ff3352e6a..000000000
--- a/src/Ryujinx/Utilities/Configuration/System/Region.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using Ryujinx.Common.Utilities;
-using System.Text.Json.Serialization;
-
-namespace Ryujinx.Ava.Utilities.Configuration.System
-{
- [JsonConverter(typeof(TypedStringEnumConverter))]
- public enum Region
- {
- Japan,
- USA,
- Europe,
- Australia,
- China,
- Korea,
- Taiwan,
- }
-}
diff --git a/src/Ryujinx/Utilities/TitleUpdatesHelper.cs b/src/Ryujinx/Utilities/TitleUpdatesHelper.cs
index 12dd234d7..5fc9b609a 100644
--- a/src/Ryujinx/Utilities/TitleUpdatesHelper.cs
+++ b/src/Ryujinx/Utilities/TitleUpdatesHelper.cs
@@ -7,7 +7,7 @@ using LibHac.Ns;
using LibHac.Tools.FsSystem;
using LibHac.Tools.FsSystem.NcaUtils;
using Ryujinx.Ava.Common.Models;
-using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
using Ryujinx.Common.Utilities;
@@ -81,10 +81,6 @@ namespace Ryujinx.Ava.Utilities
{
List<(TitleUpdateModel, bool IsSelected)> result = [];
- IntegrityCheckLevel checkLevel = ConfigurationState.Instance.System.EnableFsIntegrityChecks
- ? IntegrityCheckLevel.ErrorOnInvalid
- : IntegrityCheckLevel.None;
-
foreach (string path in titleUpdateMetadata.Paths)
{
if (!File.Exists(path))
@@ -95,7 +91,7 @@ namespace Ryujinx.Ava.Utilities
using IFileSystem pfs = PartitionFileSystemUtils.OpenApplicationFileSystem(path, vfs);
Dictionary updates =
- pfs.GetContentData(ContentMetaType.Patch, vfs, checkLevel);
+ pfs.GetContentData(ContentMetaType.Patch, vfs, ConfigurationState.Instance.System.IntegrityCheckLevel);
if (!updates.TryGetValue(applicationIdBase, out ContentMetaData content))
continue;