mirror of
https://github.com/GreemDev/Ryujinx.git
synced 2025-08-30 07:25:05 +00:00
Some checks are pending
Release job / Create tag (push) Waiting to run
Release job / Release for linux-arm64 (push) Waiting to run
Release job / Release for linux-x64 (push) Waiting to run
Release job / Release for win-x64 (push) Waiting to run
Release job / Release MacOS universal (push) Waiting to run
Significant changes include LDN functionality from @Vudjun (no more separate build!) and an XCI trimmer from @amurgshere. Merged PRs in this release (in the order they were merged): #183, #150, #105, #160, #188, #98, #158, #13, #216, #73, #217, #122, #228, #65, #226, #236, #247, #243, #249, #242, #260, #273, #272, #262, #259, #241 ## Versioning: There now exists "stable" (release branch) and ["canary" (master branch)](https://github.com/GreemDev/Ryujinx-Canary/releases) versions. Instead of everyone using the same emulator, getting updates for every code change, you now *opt-in* to the more frequent updates by using the Canary version. Use stable and you'll get about an update a week, but that update will be MUCH more significant as it's the entire previous week's changes & PR merges. ## LDN LDN functionality is now merged! Use [this](https://github.com/GreemDev/Ryujinx/wiki/Multiplayer%E2%80%90(LDN%E2%80%90Local%E2%80%90Wireless)%E2%80%90Guide) to get started. Please note that LDN is only for local wireless; **this is not a Nintendo Switch Online emulation feature**. ## UI - Added an XCI trimmer (#105). - You can use this feature to trim dead bytes & the embedded firmware out of your dumped XCIs, to make them smaller. - If you right-click an XCI and the trim button it is greyed out, that means your XCI is already as small as possible. - Fix for fullscreen not being really fullscreen (#150) - Fix window sizing calculations when Show Title Bar is enabled (#247) - The "Install/Uninstall file types" buttons will be enabled/disabled depending on which one you contextually need; install will be clickable when they aren't installed, and vice versa. - Fix for showing default config screen when swapping players in controller settings (#122) - Command-line argument to prevent update checking `--hide-updates` (#272) - # RPC: - Added a LOT of game images to Discord RPC. - Play time will now show the time unit hours at a maximum. ## Localization - Update outdated/incorrect & added missing translations for zh-TW (#158) - Add many missing locale strings to all languages (#160) - Update & improve Korean translation (#226) - Minor fixes & add missing translations to Spanish translation (#242) ## Headless - Added `ignore-controller-applet` as an option you can configure via headless command-line options. ## Graphics Backend - ### Vulkan - fix divide-by-zero when recovering from missed draw (#235) - fixes crash in 'Baldo: The Guardian Owls' opening cutscene ## Horizon - fix crash that occurs when launching an NSP forwarder generated by Nro2Nsp (#237) # Nerd Zone Slightly more technical information. If you don't understand what's under here, no worry. - Updater now uses the release's Tag Name instead of its Name for version checking. - Baked in value change logging into ReactiveObject. - Split ConfigurationState into 3, smaller partial classes of the same name. - Specify if the current version is Canary in the version log line --------- Co-authored-by: James Duarte <GarnetSunset@users.noreply.github.com> Co-authored-by: Luke Warner <65521430+LukeWarnut@users.noreply.github.com> Co-authored-by: TheToid <amurgshere@gmail.com> Co-authored-by: GabCoolGuy <gabrielfreville@proton.me> Co-authored-by: Kekschen <52585984+Kek5chen@users.noreply.github.com> Co-authored-by: WilliamWsyHK <WilliamWsyHK@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jacobwasbeast <38381609+Jacobwasbeast@users.noreply.github.com> Co-authored-by: Piplup <100526773+piplup55@users.noreply.github.com> Co-authored-by: Vladimir Sokolov <tehnicalmailone@gmail.com> Co-authored-by: Jonas Henriksson <gr3ger@gmail.com> Co-authored-by: Vudjun <Vudjun@users.noreply.github.com> Co-authored-by: extherian <extherian@gmail.com> Co-authored-by: Hack茶ん <120134269+Hackjjang@users.noreply.github.com> Co-authored-by: EmulationEnjoyer <144477224+EmulationEnjoyer@users.noreply.github.com> Co-authored-by: Nicola <61830443+nicola02nb@users.noreply.github.com> Co-authored-by: jzumaran <juan.zumaran@gitz.cl> Co-authored-by: Pitchoune <yrigaud@icloud.com> Co-authored-by: Narugakuruga <31060534+Narugakuruga@users.noreply.github.com>
248 lines
10 KiB
C#
248 lines
10 KiB
C#
using LibHac.Tools.FsSystem;
|
|
using Ryujinx.Audio.Integration;
|
|
using Ryujinx.Common.Configuration;
|
|
using Ryujinx.Common.Configuration.Multiplayer;
|
|
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>
|
|
public bool EnableInternetAccess { internal get; set; }
|
|
|
|
/// <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>
|
|
/// Multiplayer Mode
|
|
/// </summary>
|
|
public MultiplayerMode MultiplayerMode { internal get; set; }
|
|
|
|
/// <summary>
|
|
/// Disable P2P mode
|
|
/// </summary>
|
|
public bool MultiplayerDisableP2p { internal get; set; }
|
|
|
|
/// <summary>
|
|
/// Multiplayer Passphrase
|
|
/// </summary>
|
|
public string MultiplayerLdnPassphrase { internal get; set; }
|
|
|
|
/// <summary>
|
|
/// LDN Server
|
|
/// </summary>
|
|
public string MultiplayerLdnServer { 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,
|
|
MultiplayerMode multiplayerMode,
|
|
bool multiplayerDisableP2p,
|
|
string multiplayerLdnPassphrase,
|
|
string multiplayerLdnServer)
|
|
{
|
|
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;
|
|
MultiplayerMode = multiplayerMode;
|
|
MultiplayerDisableP2p = multiplayerDisableP2p;
|
|
MultiplayerLdnPassphrase = multiplayerLdnPassphrase;
|
|
MultiplayerLdnServer = multiplayerLdnServer;
|
|
}
|
|
}
|
|
}
|