aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HLEConfiguration.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.HLE/HLEConfiguration.cs')
-rw-r--r--Ryujinx.HLE/HLEConfiguration.cs179
1 files changed, 179 insertions, 0 deletions
diff --git a/Ryujinx.HLE/HLEConfiguration.cs b/Ryujinx.HLE/HLEConfiguration.cs
new file mode 100644
index 00000000..00c79169
--- /dev/null
+++ b/Ryujinx.HLE/HLEConfiguration.cs
@@ -0,0 +1,179 @@
+using LibHac.FsSystem;
+using Ryujinx.Audio.Integration;
+using Ryujinx.Common;
+using Ryujinx.Common.Configuration;
+using Ryujinx.Common.Configuration.Hid;
+using Ryujinx.Graphics.GAL;
+using Ryujinx.HLE.FileSystem;
+using Ryujinx.HLE.FileSystem.Content;
+using Ryujinx.HLE.HOS;
+using Ryujinx.HLE.HOS.Services.Account.Acc;
+using Ryujinx.HLE.HOS.SystemState;
+using System;
+using System.Collections.Generic;
+
+namespace Ryujinx.HLE
+{
+ /// <summary>
+ /// HLE configuration.
+ /// </summary>
+ public class HLEConfiguration
+ {
+ /// <summary>
+ /// The virtual file system used by the FS service.
+ /// </summary>
+ /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
+ internal readonly VirtualFileSystem VirtualFileSystem;
+
+ /// <summary>
+ /// The account manager used by the account service.
+ /// </summary>
+ /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
+ internal readonly AccountManager AccountManager;
+
+ /// <summary>
+ /// The content manager used by the NCM service.
+ /// </summary>
+ /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
+ internal readonly ContentManager ContentManager;
+
+ /// <summary>
+ /// The persistant information between run for multi-application capabilities.
+ /// </summary>
+ /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
+ public readonly UserChannelPersistence UserChannelPersistence;
+
+ /// <summary>
+ /// The GPU renderer to use for all GPU operations.
+ /// </summary>
+ /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
+ internal readonly IRenderer GpuRenderer;
+
+ /// <summary>
+ /// The audio device driver to use for all audio operations.
+ /// </summary>
+ /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
+ internal readonly IHardwareDeviceDriver AudioDeviceDriver;
+
+ /// <summary>
+ /// The handler for various UI related operations needed outside of HLE.
+ /// </summary>
+ /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
+ internal readonly IHostUiHandler HostUiHandler;
+
+ /// <summary>
+ /// Control the memory configuration used by the emulation context.
+ /// </summary>
+ /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
+ internal readonly MemoryConfiguration MemoryConfiguration;
+
+ /// <summary>
+ /// The system language to use in the settings service.
+ /// </summary>
+ /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
+ internal readonly SystemLanguage SystemLanguage;
+
+ /// <summary>
+ /// The system region to use in the settings service.
+ /// </summary>
+ /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
+ internal readonly RegionCode Region;
+
+ /// <summary>
+ /// Control the initial state of the vertical sync in the SurfaceFlinger service.
+ /// </summary>
+ internal readonly bool EnableVsync;
+
+ /// <summary>
+ /// Control the initial state of the docked mode.
+ /// </summary>
+ internal readonly bool EnableDockedMode;
+
+ /// <summary>
+ /// Control if the Profiled Translation Cache (PTC) should be used.
+ /// </summary>
+ internal readonly bool EnablePtc;
+
+ /// <summary>
+ /// Control LibHac's integrity check level.
+ /// </summary>
+ /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
+ internal readonly IntegrityCheckLevel FsIntegrityCheckLevel;
+
+ /// <summary>
+ /// Control LibHac's global access logging level. Value must be between 0 and 3.
+ /// </summary>
+ /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
+ internal readonly int FsGlobalAccessLogMode;
+
+ /// <summary>
+ /// The system time offset to apply to the time service steady and local clocks.
+ /// </summary>
+ /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
+ internal readonly long SystemTimeOffset;
+
+ /// <summary>
+ /// The system timezone used by the time service.
+ /// </summary>
+ /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
+ internal readonly string TimeZone;
+
+ /// <summary>
+ /// Control the inital state of the ignore missing services setting.
+ /// If this is set to true, when a missing service is encountered, it will try to automatically handle it instead of throwing an exception.
+ /// </summary>
+ /// TODO: Update this again.
+ public bool IgnoreMissingServices { internal get; set; }
+
+ /// <summary>
+ /// Aspect Ratio applied to the renderer window by the SurfaceFlinger service.
+ /// </summary>
+ public AspectRatio AspectRatio { internal get; set; }
+
+ /// <summary>
+ /// An action called when HLE force a refresh of output after docked mode changed.
+ /// </summary>
+ public Action RefreshInputConfig { internal get; set; }
+
+ public HLEConfiguration(VirtualFileSystem virtualFileSystem,
+ ContentManager contentManager,
+ AccountManager accountManager,
+ UserChannelPersistence userChannelPersistence,
+ IRenderer gpuRenderer,
+ IHardwareDeviceDriver audioDeviceDriver,
+ MemoryConfiguration memoryConfiguration,
+ IHostUiHandler hostUiHandler,
+ SystemLanguage systemLanguage,
+ RegionCode region,
+ bool enableVsync,
+ bool enableDockedMode,
+ bool enablePtc,
+ IntegrityCheckLevel fsIntegrityCheckLevel,
+ int fsGlobalAccessLogMode,
+ long systemTimeOffset,
+ string timeZone,
+ bool ignoreMissingServices,
+ AspectRatio aspectRatio)
+ {
+ VirtualFileSystem = virtualFileSystem;
+ AccountManager = accountManager;
+ ContentManager = contentManager;
+ UserChannelPersistence = userChannelPersistence;
+ GpuRenderer = gpuRenderer;
+ AudioDeviceDriver = audioDeviceDriver;
+ MemoryConfiguration = memoryConfiguration;
+ HostUiHandler = hostUiHandler;
+ SystemLanguage = systemLanguage;
+ Region = region;
+ EnableVsync = enableVsync;
+ EnableDockedMode = enableDockedMode;
+ EnablePtc = enablePtc;
+ FsIntegrityCheckLevel = fsIntegrityCheckLevel;
+ FsGlobalAccessLogMode = fsGlobalAccessLogMode;
+ SystemTimeOffset = systemTimeOffset;
+ TimeZone = timeZone;
+ IgnoreMissingServices = ignoreMissingServices;
+ AspectRatio = aspectRatio;
+ }
+ }
+}