| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467 |
- using Ryujinx.Ava.Utilities.Configuration.System;
- using Ryujinx.Ava.Utilities.Configuration.UI;
- using Ryujinx.Common.Configuration;
- using Ryujinx.Common.Configuration.Hid;
- using Ryujinx.Common.Configuration.Multiplayer;
- using Ryujinx.Common.Logging;
- using Ryujinx.Common.Utilities;
- using Ryujinx.HLE;
- using System.Collections.Generic;
- namespace Ryujinx.Ava.Utilities.Configuration
- {
- public class ConfigurationFileFormat
- {
- /// <summary>
- /// The current version of the file format
- /// </summary>
- public const int CurrentVersion = 62;
- /// <summary>
- /// Version of the configuration file format
- /// </summary>
- public int Version { get; set; }
- /// <summary>
- /// Enables or disables logging to a file on disk
- /// </summary>
- public bool EnableFileLog { get; set; }
- /// <summary>
- /// Whether or not backend threading is enabled. The "Auto" setting will determine whether threading should be enabled at runtime.
- /// </summary>
- public BackendThreading BackendThreading { get; set; }
- /// <summary>
- /// Resolution Scale. An integer scale applied to applicable render targets. Values 1-4, or -1 to use a custom floating point scale instead.
- /// </summary>
- public int ResScale { get; set; }
- /// <summary>
- /// Custom Resolution Scale. A custom floating point scale applied to applicable render targets. Only active when Resolution Scale is -1.
- /// </summary>
- public float ResScaleCustom { get; set; }
- /// <summary>
- /// Max Anisotropy. Values range from 0 - 16. Set to -1 to let the game decide.
- /// </summary>
- public float MaxAnisotropy { get; set; }
- /// <summary>
- /// Aspect Ratio applied to the renderer window.
- /// </summary>
- public AspectRatio AspectRatio { get; set; }
- /// <summary>
- /// Applies anti-aliasing to the renderer.
- /// </summary>
- public AntiAliasing AntiAliasing { get; set; }
- /// <summary>
- /// Sets the framebuffer upscaling type.
- /// </summary>
- public ScalingFilter ScalingFilter { get; set; }
- /// <summary>
- /// Sets the framebuffer upscaling level.
- /// </summary>
- public int ScalingFilterLevel { get; set; }
- /// <summary>
- /// Dumps shaders in this local directory
- /// </summary>
- public string GraphicsShadersDumpPath { get; set; }
- /// <summary>
- /// Enables printing debug log messages
- /// </summary>
- public bool LoggingEnableDebug { get; set; }
- /// <summary>
- /// Enables printing stub log messages
- /// </summary>
- public bool LoggingEnableStub { get; set; }
- /// <summary>
- /// Enables printing info log messages
- /// </summary>
- public bool LoggingEnableInfo { get; set; }
- /// <summary>
- /// Enables printing warning log messages
- /// </summary>
- public bool LoggingEnableWarn { get; set; }
- /// <summary>
- /// Enables printing error log messages
- /// </summary>
- public bool LoggingEnableError { get; set; }
- /// <summary>
- /// Enables printing trace log messages
- /// </summary>
- public bool LoggingEnableTrace { get; set; }
- /// <summary>
- /// Enables printing guest log messages
- /// </summary>
- public bool LoggingEnableGuest { get; set; }
- /// <summary>
- /// Enables printing FS access log messages
- /// </summary>
- public bool LoggingEnableFsAccessLog { get; set; }
- /// <summary>
- /// Controls which log messages are written to the log targets
- /// </summary>
- public LogClass[] LoggingFilteredClasses { get; set; }
- /// <summary>
- /// Change Graphics API debug log level
- /// </summary>
- public GraphicsDebugLevel LoggingGraphicsDebugLevel { get; set; }
- /// <summary>
- /// Change System Language
- /// </summary>
- public Language SystemLanguage { get; set; }
- /// <summary>
- /// Change System Region
- /// </summary>
- public Region SystemRegion { get; set; }
- /// <summary>
- /// Change System TimeZone
- /// </summary>
- public string SystemTimeZone { get; set; }
- /// <summary>
- /// Change System Time Offset in seconds
- /// </summary>
- public long SystemTimeOffset { get; set; }
- /// <summary>
- /// Enables or disables Docked Mode
- /// </summary>
- public bool DockedMode { get; set; }
- /// <summary>
- /// Enables or disables Discord Rich Presence
- /// </summary>
- public bool EnableDiscordIntegration { get; set; }
- /// <summary>
- /// Checks for updates when Ryujinx starts when enabled
- /// </summary>
- public bool CheckUpdatesOnStart { get; set; }
- /// <summary>
- /// Show "Confirm Exit" Dialog
- /// </summary>
- public bool ShowConfirmExit { get; set; }
- /// <summary>
- /// ignore "Applet" dialog
- /// </summary>
- public bool IgnoreApplet { get; set; }
- /// <summary>
- /// Enables or disables save window size, position and state on close.
- /// </summary>
- public bool RememberWindowState { get; set; }
- /// <summary>
- /// Enables or disables the redesigned title bar
- /// </summary>
- public bool ShowTitleBar { get; set; }
- /// <summary>
- /// Enables hardware-accelerated rendering for Avalonia
- /// </summary>
- public bool EnableHardwareAcceleration { get; set; }
- /// <summary>
- /// Whether to hide cursor on idle, always or never
- /// </summary>
- public HideCursorMode HideCursor { get; set; }
- /// <summary>
- /// Enables or disables Vertical Sync
- /// </summary>
- /// <remarks>Kept for file format compatibility (to avoid possible failure when parsing configuration on old versions)</remarks>
- /// TODO: Remove this when those older versions aren't in use anymore.
- public bool EnableVsync { get; set; }
- /// <summary>
- /// Current VSync mode; 60 (Switch), unbounded ("Vsync off"), or custom
- /// </summary>
- public VSyncMode VSyncMode { get; set; }
- /// <summary>
- /// Enables or disables the custom present interval
- /// </summary>
- public bool EnableCustomVSyncInterval { get; set; }
- /// <summary>
- /// The custom present interval value
- /// </summary>
- public int CustomVSyncInterval { get; set; }
- /// <summary>
- /// Enables or disables Shader cache
- /// </summary>
- public bool EnableShaderCache { get; set; }
- /// <summary>
- /// Enables or disables texture recompression
- /// </summary>
- public bool EnableTextureRecompression { get; set; }
- /// <summary>
- /// Enables or disables Macro high-level emulation
- /// </summary>
- public bool EnableMacroHLE { get; set; }
- /// <summary>
- /// Enables or disables color space passthrough, if available.
- /// </summary>
- public bool EnableColorSpacePassthrough { get; set; }
- /// <summary>
- /// Enables or disables profiled translation cache persistency
- /// </summary>
- public bool EnablePtc { get; set; }
- /// <summary>
- /// Enables or disables low-power profiled translation cache persistency loading
- /// </summary>
- public bool EnableLowPowerPtc { get; set; }
- /// <summary>
- /// Enables or disables guest Internet access
- /// </summary>
- public bool EnableInternetAccess { get; set; }
- /// <summary>
- /// Enables integrity checks on Game content files
- /// </summary>
- public bool EnableFsIntegrityChecks { get; set; }
- /// <summary>
- /// Enables FS access log output to the console. Possible modes are 0-3
- /// </summary>
- public int FsGlobalAccessLogMode { get; set; }
- /// <summary>
- /// The selected audio backend
- /// </summary>
- public AudioBackend AudioBackend { get; set; }
- /// <summary>
- /// The audio volume
- /// </summary>
- public float AudioVolume { get; set; }
- /// <summary>
- /// The selected memory manager mode
- /// </summary>
- public MemoryManagerMode MemoryManagerMode { get; set; }
- /// <summary>
- /// Expands the RAM amount on the emulated system
- /// </summary>
- public MemoryConfiguration DramSize { get; set; }
- /// <summary>
- /// Enable or disable ignoring missing services
- /// </summary>
- public bool IgnoreMissingServices { get; set; }
- /// <summary>
- /// Used to toggle columns in the GUI
- /// </summary>
- public GuiColumns GuiColumns { get; set; }
- /// <summary>
- /// Used to configure column sort settings in the GUI
- /// </summary>
- public ColumnSort ColumnSort { get; set; }
- /// <summary>
- /// A list of directories containing games to be used to load games into the games list
- /// </summary>
- public List<string> GameDirs { get; set; }
- /// <summary>
- /// A list of directories containing DLC/updates the user wants to autoload during library refreshes
- /// </summary>
- public List<string> AutoloadDirs { get; set; }
- /// <summary>
- /// A list of file types to be hidden in the games List
- /// </summary>
- public ShownFileTypes ShownFileTypes { get; set; }
- /// <summary>
- /// Main window start-up position, size and state
- /// </summary>
- public WindowStartup WindowStartup { get; set; }
- /// <summary>
- /// Language Code for the UI
- /// </summary>
- public string LanguageCode { get; set; }
- /// <summary>
- /// Chooses the base style // Not Used
- /// </summary>
- public string BaseStyle { get; set; }
- /// <summary>
- /// Chooses the view mode of the game list // Not Used
- /// </summary>
- public int GameListViewMode { get; set; }
- /// <summary>
- /// Show application name in Grid Mode // Not Used
- /// </summary>
- public bool ShowNames { get; set; }
- /// <summary>
- /// Sets App Icon Size // Not Used
- /// </summary>
- public int GridSize { get; set; }
- /// <summary>
- /// Sorts Apps in the game list // Not Used
- /// </summary>
- public int ApplicationSort { get; set; }
- /// <summary>
- /// Sets if Grid is ordered in Ascending Order // Not Used
- /// </summary>
- public bool IsAscendingOrder { get; set; }
- /// <summary>
- /// Start games in fullscreen mode
- /// </summary>
- public bool StartFullscreen { get; set; }
- /// <summary>
- /// Start games with UI hidden
- /// </summary>
- public bool StartNoUI { get; set; }
- /// <summary>
- /// Show console window
- /// </summary>
- public bool ShowConsole { get; set; }
- /// <summary>
- /// Enable or disable keyboard support (Independent from controllers binding)
- /// </summary>
- public bool EnableKeyboard { get; set; }
- /// <summary>
- /// Enable or disable mouse support (Independent from controllers binding)
- /// </summary>
- public bool EnableMouse { get; set; }
- /// <summary>
- /// Hotkey Keyboard Bindings
- /// </summary>
- public KeyboardHotkeys Hotkeys { get; set; }
- /// <summary>
- /// Input configurations
- /// </summary>
- public List<InputConfig> InputConfig { get; set; }
-
- /// <summary>
- /// The speed of spectrum cycling for the Rainbow LED feature.
- /// </summary>
- public float RainbowSpeed { get; set; }
- /// <summary>
- /// Graphics backend
- /// </summary>
- public GraphicsBackend GraphicsBackend { get; set; }
- /// <summary>
- /// Preferred GPU
- /// </summary>
- public string PreferredGpu { get; set; }
- /// <summary>
- /// Multiplayer Mode
- /// </summary>
- public MultiplayerMode MultiplayerMode { get; set; }
- /// <summary>
- /// GUID for the network interface used by LAN (or 0 for default)
- /// </summary>
- public string MultiplayerLanInterfaceId { get; set; }
- /// <summary>
- /// Disable P2p Toggle
- /// </summary>
- public bool MultiplayerDisableP2p { get; set; }
- /// <summary>
- /// Local network passphrase, for private networks.
- /// </summary>
- public string MultiplayerLdnPassphrase { get; set; }
- /// <summary>
- /// Custom LDN Server
- /// </summary>
- public string LdnServer { get; set; }
- /// <summary>
- /// Uses Hypervisor over JIT if available
- /// </summary>
- public bool UseHypervisor { get; set; }
-
- /// <summary>
- /// Show toggles for dirty hacks in the UI.
- /// </summary>
- public bool ShowDirtyHacks { get; set; }
-
- /// <summary>
- /// The packed values of the enabled dirty hacks.
- /// </summary>
- public ulong[] DirtyHacks { get; set; }
-
- /// <summary>
- /// Loads a configuration file from disk
- /// </summary>
- /// <param name="path">The path to the JSON configuration file</param>
- /// <param name="configurationFileFormat">Parsed configuration file</param>
- public static bool TryLoad(string path, out ConfigurationFileFormat configurationFileFormat)
- {
- try
- {
- configurationFileFormat = JsonHelper.DeserializeFromFile(path, ConfigurationFileFormatSettings.SerializerContext.ConfigurationFileFormat);
- return configurationFileFormat.Version != 0;
- }
- catch
- {
- configurationFileFormat = null;
- return false;
- }
- }
- /// <summary>
- /// Save a configuration file to disk
- /// </summary>
- /// <param name="path">The path to the JSON configuration file</param>
- public void SaveConfig(string path)
- {
- JsonHelper.SerializeToFile(path, this, ConfigurationFileFormatSettings.SerializerContext.ConfigurationFileFormat);
- }
- }
- }
|