aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/HLEConfiguration.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.HLE/HLEConfiguration.cs')
-rw-r--r--src/Ryujinx.HLE/HLEConfiguration.cs219
1 files changed, 219 insertions, 0 deletions
diff --git a/src/Ryujinx.HLE/HLEConfiguration.cs b/src/Ryujinx.HLE/HLEConfiguration.cs
new file mode 100644
index 00000000..df8dea6d
--- /dev/null
+++ b/src/Ryujinx.HLE/HLEConfiguration.cs
@@ -0,0 +1,219 @@
+using LibHac.Tools.FsSystem;
+using Ryujinx.Audio.Integration;
+using Ryujinx.Common.Configuration;
+using Ryujinx.Graphics.GAL;
+using Ryujinx.HLE.FileSystem;
+using Ryujinx.HLE.HOS;
+using Ryujinx.HLE.HOS.Services.Account.Acc;
+using Ryujinx.HLE.HOS.SystemState;
+using Ryujinx.HLE.Ui;
+using System;
+
+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 manager for handling a LibHac Horizon instance.
+ /// </summary>
+ /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
+ internal readonly LibHacHorizonManager LibHacHorizonManager;
+
+ /// <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 persistent 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 if the guest application should be told that there is a Internet connection available.
+ /// </summary>
+ internal readonly bool EnableInternetAccess;
+
+ /// <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>
+ /// Type of the memory manager used on CPU emulation.
+ /// </summary>
+ public MemoryManagerMode MemoryManagerMode { internal get; set; }
+
+ /// <summary>
+ /// Control the initial 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 { get; set; }
+
+ /// <summary>
+ /// The audio volume level.
+ /// </summary>
+ public float AudioVolume { get; set; }
+
+ /// <summary>
+ /// Use Hypervisor over JIT if available.
+ /// </summary>
+ internal readonly bool UseHypervisor;
+
+ /// <summary>
+ /// Multiplayer LAN Interface ID (device GUID)
+ /// </summary>
+ public string MultiplayerLanInterfaceId { 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,
+ LibHacHorizonManager libHacHorizonManager,
+ ContentManager contentManager,
+ AccountManager accountManager,
+ UserChannelPersistence userChannelPersistence,
+ IRenderer gpuRenderer,
+ IHardwareDeviceDriver audioDeviceDriver,
+ MemoryConfiguration memoryConfiguration,
+ IHostUiHandler hostUiHandler,
+ SystemLanguage systemLanguage,
+ RegionCode region,
+ bool enableVsync,
+ bool enableDockedMode,
+ bool enablePtc,
+ bool enableInternetAccess,
+ IntegrityCheckLevel fsIntegrityCheckLevel,
+ int fsGlobalAccessLogMode,
+ long systemTimeOffset,
+ string timeZone,
+ MemoryManagerMode memoryManagerMode,
+ bool ignoreMissingServices,
+ AspectRatio aspectRatio,
+ float audioVolume,
+ bool useHypervisor,
+ string multiplayerLanInterfaceId)
+ {
+ VirtualFileSystem = virtualFileSystem;
+ LibHacHorizonManager = libHacHorizonManager;
+ AccountManager = accountManager;
+ ContentManager = contentManager;
+ UserChannelPersistence = userChannelPersistence;
+ GpuRenderer = gpuRenderer;
+ AudioDeviceDriver = audioDeviceDriver;
+ MemoryConfiguration = memoryConfiguration;
+ HostUiHandler = hostUiHandler;
+ SystemLanguage = systemLanguage;
+ Region = region;
+ EnableVsync = enableVsync;
+ EnableDockedMode = enableDockedMode;
+ EnablePtc = enablePtc;
+ EnableInternetAccess = enableInternetAccess;
+ FsIntegrityCheckLevel = fsIntegrityCheckLevel;
+ FsGlobalAccessLogMode = fsGlobalAccessLogMode;
+ SystemTimeOffset = systemTimeOffset;
+ TimeZone = timeZone;
+ MemoryManagerMode = memoryManagerMode;
+ IgnoreMissingServices = ignoreMissingServices;
+ AspectRatio = aspectRatio;
+ AudioVolume = audioVolume;
+ UseHypervisor = useHypervisor;
+ MultiplayerLanInterfaceId = multiplayerLanInterfaceId;
+ }
+ }
+} \ No newline at end of file