diff --git a/Directory.Packages.props b/Directory.Packages.props
index 4c3d5bcd3..b2a838496 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -14,10 +14,10 @@
-
-
+
+
-
+
@@ -40,11 +40,11 @@
-
+
-
+
@@ -59,4 +59,4 @@
-
+
\ No newline at end of file
diff --git a/distribution/macos/Info.plist b/distribution/macos/Info.plist
index 2602f9905..7f7fe0dd4 100644
--- a/distribution/macos/Info.plist
+++ b/distribution/macos/Info.plist
@@ -34,7 +34,7 @@
CFBundleInfoDictionaryVersion
6.0
CFBundleLongVersionString
- %%RYUJINX_BUILD_VERSION%%-%%RYUJINX_BUILD_GIT_HASH%%"
+ %%RYUJINX_BUILD_VERSION%%-%%RYUJINX_BUILD_GIT_HASH%%
CFBundleName
Ryujinx
CFBundlePackageType
@@ -44,13 +44,13 @@
CFBundleSignature
????
CFBundleVersion
- 1.2.0
+ %%RYUJINX_BUILD_VERSION%%
NSHighResolutionCapable
CSResourcesFileMapped
NSHumanReadableCopyright
- Copyright © 2018 - 2023 Ryujinx Team and Contributors.
+ Copyright © 2018 - 2024 Ryujinx Team and Contributors. Copyright © 2024 - 2025 Ryubing and Contributors.
LSApplicationCategoryType
public.app-category.games
LSMinimumSystemVersion
diff --git a/src/ARMeilleure/CodeGen/X86/AssemblerTable.cs b/src/ARMeilleure/CodeGen/X86/AssemblerTable.cs
index 4b226803b..ddceae057 100644
--- a/src/ARMeilleure/CodeGen/X86/AssemblerTable.cs
+++ b/src/ARMeilleure/CodeGen/X86/AssemblerTable.cs
@@ -1,5 +1,4 @@
using System;
-using System.Diagnostics.CodeAnalysis;
namespace ARMeilleure.CodeGen.X86
{
diff --git a/src/ARMeilleure/CodeGen/X86/CodeGenContext.cs b/src/ARMeilleure/CodeGen/X86/CodeGenContext.cs
index afae3211f..6d72e0aff 100644
--- a/src/ARMeilleure/CodeGen/X86/CodeGenContext.cs
+++ b/src/ARMeilleure/CodeGen/X86/CodeGenContext.cs
@@ -2,7 +2,6 @@ using ARMeilleure.CodeGen.RegisterAllocators;
using ARMeilleure.IntermediateRepresentation;
using Microsoft.IO;
using Ryujinx.Common.Memory;
-using System.IO;
using System.Numerics;
namespace ARMeilleure.CodeGen.X86
diff --git a/src/ARMeilleure/CodeGen/X86/X86Register.cs b/src/ARMeilleure/CodeGen/X86/X86Register.cs
index bcce4f974..d1394deaa 100644
--- a/src/ARMeilleure/CodeGen/X86/X86Register.cs
+++ b/src/ARMeilleure/CodeGen/X86/X86Register.cs
@@ -1,5 +1,3 @@
-using System.Diagnostics.CodeAnalysis;
-
namespace ARMeilleure.CodeGen.X86
{
enum X86Register
diff --git a/src/ARMeilleure/Instructions/InstEmitMul.cs b/src/ARMeilleure/Instructions/InstEmitMul.cs
index cb48deb03..bd2ac8d64 100644
--- a/src/ARMeilleure/Instructions/InstEmitMul.cs
+++ b/src/ARMeilleure/Instructions/InstEmitMul.cs
@@ -2,7 +2,6 @@ using ARMeilleure.Decoders;
using ARMeilleure.IntermediateRepresentation;
using ARMeilleure.Translation;
using System;
-using System.Diagnostics.CodeAnalysis;
using static ARMeilleure.Instructions.InstEmitHelper;
namespace ARMeilleure.Instructions
diff --git a/src/ARMeilleure/IntermediateRepresentation/Intrinsic.cs b/src/ARMeilleure/IntermediateRepresentation/Intrinsic.cs
index 9d87c13b3..31dc97bd6 100644
--- a/src/ARMeilleure/IntermediateRepresentation/Intrinsic.cs
+++ b/src/ARMeilleure/IntermediateRepresentation/Intrinsic.cs
@@ -1,5 +1,4 @@
using System;
-using System.Diagnostics.CodeAnalysis;
namespace ARMeilleure.IntermediateRepresentation
{
diff --git a/src/Ryujinx.Audio/Renderer/Dsp/Command/DataSourceVersion2Command.cs b/src/Ryujinx.Audio/Renderer/Dsp/Command/DataSourceVersion2Command.cs
index 8b72687da..10723b3db 100644
--- a/src/Ryujinx.Audio/Renderer/Dsp/Command/DataSourceVersion2Command.cs
+++ b/src/Ryujinx.Audio/Renderer/Dsp/Command/DataSourceVersion2Command.cs
@@ -3,7 +3,6 @@ using Ryujinx.Audio.Renderer.Common;
using Ryujinx.Audio.Renderer.Server.Voice;
using System;
using Ryujinx.Audio.Renderer.Parameter;
-using Ryujinx.Memory;
using WaveBuffer = Ryujinx.Audio.Renderer.Common.WaveBuffer;
namespace Ryujinx.Audio.Renderer.Dsp.Command
diff --git a/src/Ryujinx.Audio/Renderer/Dsp/Command/FillBufferCommand.cs b/src/Ryujinx.Audio/Renderer/Dsp/Command/FillBufferCommand.cs
index 15ccd5239..c14eeac2b 100644
--- a/src/Ryujinx.Audio/Renderer/Dsp/Command/FillBufferCommand.cs
+++ b/src/Ryujinx.Audio/Renderer/Dsp/Command/FillBufferCommand.cs
@@ -1,5 +1,4 @@
using Ryujinx.Audio.Renderer.Server.Splitter;
-using System;
using System.Runtime.CompilerServices;
namespace Ryujinx.Audio.Renderer.Dsp.Command
diff --git a/src/Ryujinx.Audio/Renderer/Parameter/VoiceInParameter2.cs b/src/Ryujinx.Audio/Renderer/Parameter/VoiceInParameter2.cs
index 78e47b69a..bc047759b 100644
--- a/src/Ryujinx.Audio/Renderer/Parameter/VoiceInParameter2.cs
+++ b/src/Ryujinx.Audio/Renderer/Parameter/VoiceInParameter2.cs
@@ -1,9 +1,6 @@
using Ryujinx.Audio.Common;
using Ryujinx.Audio.Renderer.Common;
-using Ryujinx.Audio.Renderer.Dsp;
using Ryujinx.Common.Memory;
-using System;
-using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace Ryujinx.Audio.Renderer.Parameter
diff --git a/src/Ryujinx.Audio/Renderer/Server/CommandBuffer.cs b/src/Ryujinx.Audio/Renderer/Server/CommandBuffer.cs
index 70564ace9..a2901baf0 100644
--- a/src/Ryujinx.Audio/Renderer/Server/CommandBuffer.cs
+++ b/src/Ryujinx.Audio/Renderer/Server/CommandBuffer.cs
@@ -10,7 +10,6 @@ using Ryujinx.Audio.Renderer.Server.Upsampler;
using Ryujinx.Audio.Renderer.Server.Voice;
using Ryujinx.Common;
using System;
-using System.Runtime.CompilerServices;
using CpuAddress = System.UInt64;
namespace Ryujinx.Audio.Renderer.Server
diff --git a/src/Ryujinx.Audio/Renderer/Server/CommandGenerator.cs b/src/Ryujinx.Audio/Renderer/Server/CommandGenerator.cs
index 600f51576..9651d204f 100644
--- a/src/Ryujinx.Audio/Renderer/Server/CommandGenerator.cs
+++ b/src/Ryujinx.Audio/Renderer/Server/CommandGenerator.cs
@@ -1,6 +1,5 @@
using Ryujinx.Audio.Common;
using Ryujinx.Audio.Renderer.Common;
-using Ryujinx.Audio.Renderer.Dsp;
using Ryujinx.Audio.Renderer.Dsp.Command;
using Ryujinx.Audio.Renderer.Dsp.State;
using Ryujinx.Audio.Renderer.Parameter;
diff --git a/src/Ryujinx.Audio/Renderer/Server/Splitter/SplitterDestinationVersion2.cs b/src/Ryujinx.Audio/Renderer/Server/Splitter/SplitterDestinationVersion2.cs
index 7fb455241..cc4cf4466 100644
--- a/src/Ryujinx.Audio/Renderer/Server/Splitter/SplitterDestinationVersion2.cs
+++ b/src/Ryujinx.Audio/Renderer/Server/Splitter/SplitterDestinationVersion2.cs
@@ -1,4 +1,3 @@
-using Ryujinx.Audio.Renderer.Dsp;
using Ryujinx.Audio.Renderer.Parameter;
using Ryujinx.Common.Memory;
using Ryujinx.Common.Utilities;
diff --git a/src/Ryujinx.Audio/Renderer/Server/Voice/VoiceInfo.cs b/src/Ryujinx.Audio/Renderer/Server/Voice/VoiceInfo.cs
index c6a4149f8..558a66baa 100644
--- a/src/Ryujinx.Audio/Renderer/Server/Voice/VoiceInfo.cs
+++ b/src/Ryujinx.Audio/Renderer/Server/Voice/VoiceInfo.cs
@@ -12,7 +12,6 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;
using static Ryujinx.Audio.Renderer.Common.BehaviourParameter;
-using static Ryujinx.Audio.Renderer.Parameter.VoiceInParameter1;
using PlayState = Ryujinx.Audio.Renderer.Server.Types.PlayState;
namespace Ryujinx.Audio.Renderer.Server.Voice
diff --git a/src/Ryujinx.Common/Logging/LogEventArgsJson.cs b/src/Ryujinx.Common/Logging/LogEventArgsJson.cs
deleted file mode 100644
index 7c745d63e..000000000
--- a/src/Ryujinx.Common/Logging/LogEventArgsJson.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using Ryujinx.Common.Logging.Formatters;
-using System;
-using System.Text.Json.Serialization;
-
-namespace Ryujinx.Common.Logging
-{
- internal class LogEventArgsJson
- {
- public LogLevel Level { get; }
- public TimeSpan Time { get; }
- public string ThreadName { get; }
-
- public string Message { get; }
- public string Data { get; }
-
- [JsonConstructor]
- public LogEventArgsJson(LogLevel level, TimeSpan time, string threadName, string message, string data = null)
- {
- Level = level;
- Time = time;
- ThreadName = threadName;
- Message = message;
- Data = data;
- }
-
- public static LogEventArgsJson FromLogEventArgs(LogEventArgs args)
- {
- return new LogEventArgsJson(args.Level, args.Time, args.ThreadName, args.Message, DynamicObjectFormatter.Format(args.Data));
- }
- }
-}
diff --git a/src/Ryujinx.Common/Logging/LogEventJsonSerializerContext.cs b/src/Ryujinx.Common/Logging/LogEventJsonSerializerContext.cs
deleted file mode 100644
index ac63d9a10..000000000
--- a/src/Ryujinx.Common/Logging/LogEventJsonSerializerContext.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using System.Text.Json.Serialization;
-
-namespace Ryujinx.Common.Logging
-{
- [JsonSerializable(typeof(LogEventArgsJson))]
- internal partial class LogEventJsonSerializerContext : JsonSerializerContext
- {
- }
-}
diff --git a/src/Ryujinx.Common/Logging/Logger.cs b/src/Ryujinx.Common/Logging/Logger.cs
index 0d8bd3ac3..64a76a3e4 100644
--- a/src/Ryujinx.Common/Logging/Logger.cs
+++ b/src/Ryujinx.Common/Logging/Logger.cs
@@ -230,14 +230,14 @@ namespace Ryujinx.Common.Logging
switch (logLevel)
{
#pragma warning disable IDE0055 // Disable formatting
- case LogLevel.Debug : Debug = enabled ? new Log(LogLevel.Debug) : new Log?(); break;
- case LogLevel.Info : Info = enabled ? new Log(LogLevel.Info) : new Log?(); break;
- case LogLevel.Warning : Warning = enabled ? new Log(LogLevel.Warning) : new Log?(); break;
- case LogLevel.Error : Error = enabled ? new Log(LogLevel.Error) : new Log?(); break;
- case LogLevel.Guest : Guest = enabled ? new Log(LogLevel.Guest) : new Log?(); break;
- case LogLevel.AccessLog : AccessLog = enabled ? new Log(LogLevel.AccessLog) : new Log?(); break;
- case LogLevel.Stub : Stub = enabled ? new Log(LogLevel.Stub) : new Log?(); break;
- case LogLevel.Trace : Trace = enabled ? new Log(LogLevel.Trace) : new Log?(); break;
+ case LogLevel.Debug : Debug = enabled ? new Log(LogLevel.Debug) : null; break;
+ case LogLevel.Info : Info = enabled ? new Log(LogLevel.Info) : null; break;
+ case LogLevel.Warning : Warning = enabled ? new Log(LogLevel.Warning) : null; break;
+ case LogLevel.Error : Error = enabled ? new Log(LogLevel.Error) : null; break;
+ case LogLevel.Guest : Guest = enabled ? new Log(LogLevel.Guest) : null; break;
+ case LogLevel.AccessLog : AccessLog = enabled ? new Log(LogLevel.AccessLog) : null; break;
+ case LogLevel.Stub : Stub = enabled ? new Log(LogLevel.Stub) : null; break;
+ case LogLevel.Trace : Trace = enabled ? new Log(LogLevel.Trace) : null; break;
case LogLevel.Notice : break;
default: throw new ArgumentException("Unknown Log Level", nameof(logLevel));
#pragma warning restore IDE0055
diff --git a/src/Ryujinx.Common/Logging/Targets/JsonLogTarget.cs b/src/Ryujinx.Common/Logging/Targets/JsonLogTarget.cs
deleted file mode 100644
index 88b324a36..000000000
--- a/src/Ryujinx.Common/Logging/Targets/JsonLogTarget.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using Ryujinx.Common.Utilities;
-using System;
-using System.IO;
-
-namespace Ryujinx.Common.Logging.Targets
-{
- public class JsonLogTarget : ILogTarget
- {
- private readonly Stream _stream;
- private readonly bool _leaveOpen;
- private readonly string _name;
-
- string ILogTarget.Name { get => _name; }
-
- public JsonLogTarget(Stream stream, string name)
- {
- _stream = stream;
- _name = name;
- }
-
- public JsonLogTarget(Stream stream, bool leaveOpen)
- {
- _stream = stream;
- _leaveOpen = leaveOpen;
- }
-
- public void Log(object sender, LogEventArgs e)
- {
- LogEventArgsJson logEventArgsJson = LogEventArgsJson.FromLogEventArgs(e);
- JsonHelper.SerializeToStream(_stream, logEventArgsJson, LogEventJsonSerializerContext.Default.LogEventArgsJson);
- }
-
- public void Dispose()
- {
- GC.SuppressFinalize(this);
- if (!_leaveOpen)
- {
- _stream.Dispose();
- }
- }
- }
-}
diff --git a/src/Ryujinx.Common/Pools/ObjectPool.cs b/src/Ryujinx.Common/Pools/ObjectPool.cs
index 65baa00f9..ad56a04a2 100644
--- a/src/Ryujinx.Common/Pools/ObjectPool.cs
+++ b/src/Ryujinx.Common/Pools/ObjectPool.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Concurrent;
-using System.Threading;
namespace Ryujinx.Common
{
diff --git a/src/Ryujinx.Common/ReferenceEqualityComparer.cs b/src/Ryujinx.Common/ReferenceEqualityComparer.cs
deleted file mode 100644
index 714a967a4..000000000
--- a/src/Ryujinx.Common/ReferenceEqualityComparer.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-
-namespace Ryujinx.Common
-{
- public class ReferenceEqualityComparer : IEqualityComparer
- where T : class
- {
- public bool Equals(T x, T y)
- {
- return x == y;
- }
-
- public int GetHashCode([DisallowNull] T obj)
- {
- return obj.GetHashCode();
- }
- }
-}
diff --git a/src/Ryujinx.Common/ReleaseInformation.cs b/src/Ryujinx.Common/ReleaseInformation.cs
index a5beb1009..530dc369e 100644
--- a/src/Ryujinx.Common/ReleaseInformation.cs
+++ b/src/Ryujinx.Common/ReleaseInformation.cs
@@ -1,10 +1,5 @@
-using Ryujinx.Common.Utilities;
using System;
-using System.Net.Http;
-using System.Net.Http.Json;
using System.Reflection;
-using System.Text.Json.Serialization;
-using System.Threading.Tasks;
namespace Ryujinx.Common
{
diff --git a/src/Ryujinx.Cpu/IExecutionContext.cs b/src/Ryujinx.Cpu/IExecutionContext.cs
index c3ebe5aa5..004451f6d 100644
--- a/src/Ryujinx.Cpu/IExecutionContext.cs
+++ b/src/Ryujinx.Cpu/IExecutionContext.cs
@@ -1,6 +1,5 @@
using ARMeilleure.State;
using System;
-using System.Threading;
namespace Ryujinx.Cpu
{
diff --git a/src/Ryujinx.Cpu/LightningJit/State/ExecutionContext.cs b/src/Ryujinx.Cpu/LightningJit/State/ExecutionContext.cs
index a1ba0002e..27ce0c4a8 100644
--- a/src/Ryujinx.Cpu/LightningJit/State/ExecutionContext.cs
+++ b/src/Ryujinx.Cpu/LightningJit/State/ExecutionContext.cs
@@ -1,4 +1,3 @@
-using ARMeilleure;
using ARMeilleure.Memory;
using ARMeilleure.State;
using System;
diff --git a/src/Ryujinx.Graphics.GAL/ViewportSwizzle.cs b/src/Ryujinx.Graphics.GAL/ViewportSwizzle.cs
index 69de93ad5..79fed54e7 100644
--- a/src/Ryujinx.Graphics.GAL/ViewportSwizzle.cs
+++ b/src/Ryujinx.Graphics.GAL/ViewportSwizzle.cs
@@ -1,5 +1,3 @@
-using System.Diagnostics.CodeAnalysis;
-
namespace Ryujinx.Graphics.GAL
{
public enum ViewportSwizzle
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/IndirectDrawType.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/IndirectDrawType.cs
index 402e3ff80..5260c9233 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/IndirectDrawType.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/IndirectDrawType.cs
@@ -1,5 +1,3 @@
-using System.Diagnostics.CodeAnalysis;
-
namespace Ryujinx.Graphics.Gpu.Engine.Threed
{
///
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/SpecializationStateUpdater.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/SpecializationStateUpdater.cs
index db8bde751..2fb8de920 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/SpecializationStateUpdater.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/SpecializationStateUpdater.cs
@@ -1,4 +1,3 @@
-using Ryujinx.Common.Memory;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Engine.Types;
using Ryujinx.Graphics.Gpu.Shader;
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs
index 409dbab41..99cd0c2b2 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/ThreedClass.cs
@@ -1,4 +1,3 @@
-using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Device;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Engine.GPFifo;
diff --git a/src/Ryujinx.Graphics.Gpu/Image/FormatTable.cs b/src/Ryujinx.Graphics.Gpu/Image/FormatTable.cs
index 8d8b00719..8bfebe8a1 100644
--- a/src/Ryujinx.Graphics.Gpu/Image/FormatTable.cs
+++ b/src/Ryujinx.Graphics.Gpu/Image/FormatTable.cs
@@ -1,6 +1,5 @@
using Ryujinx.Graphics.GAL;
using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
namespace Ryujinx.Graphics.Gpu.Image
{
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/BufferBackingState.cs b/src/Ryujinx.Graphics.Gpu/Memory/BufferBackingState.cs
index 186bea77b..a81e7e98f 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/BufferBackingState.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/BufferBackingState.cs
@@ -1,7 +1,6 @@
using Ryujinx.Graphics.GAL;
using Ryujinx.Memory.Range;
using System;
-using System.Collections.Generic;
namespace Ryujinx.Graphics.Gpu.Memory
{
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/BufferModifiedRangeList.cs b/src/Ryujinx.Graphics.Gpu/Memory/BufferModifiedRangeList.cs
index cd9043059..fee4b11c0 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/BufferModifiedRangeList.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/BufferModifiedRangeList.cs
@@ -1,6 +1,5 @@
using Ryujinx.Memory.Range;
using System;
-using System.Collections.Generic;
using System.Linq;
namespace Ryujinx.Graphics.Gpu.Memory
diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstType.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstType.cs
index 43ff12168..217c6ae73 100644
--- a/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstType.cs
+++ b/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstType.cs
@@ -1,5 +1,4 @@
using System;
-using System.Diagnostics.CodeAnalysis;
namespace Ryujinx.Graphics.Shader.CodeGen.Glsl.Instructions
{
diff --git a/src/Ryujinx.Graphics.Shader/IntermediateRepresentation/TextureFlags.cs b/src/Ryujinx.Graphics.Shader/IntermediateRepresentation/TextureFlags.cs
index 61e6ecf5a..3b0e38542 100644
--- a/src/Ryujinx.Graphics.Shader/IntermediateRepresentation/TextureFlags.cs
+++ b/src/Ryujinx.Graphics.Shader/IntermediateRepresentation/TextureFlags.cs
@@ -1,5 +1,4 @@
using System;
-using System.Diagnostics.CodeAnalysis;
namespace Ryujinx.Graphics.Shader.IntermediateRepresentation
{
diff --git a/src/Ryujinx.Graphics.Shader/Translation/AggregateType.cs b/src/Ryujinx.Graphics.Shader/Translation/AggregateType.cs
index 496fbc235..85d58bb0a 100644
--- a/src/Ryujinx.Graphics.Shader/Translation/AggregateType.cs
+++ b/src/Ryujinx.Graphics.Shader/Translation/AggregateType.cs
@@ -1,5 +1,4 @@
using System;
-using System.Diagnostics.CodeAnalysis;
namespace Ryujinx.Graphics.Shader.Translation
{
diff --git a/src/Ryujinx.Graphics.Vic/Image/SurfaceReader.cs b/src/Ryujinx.Graphics.Vic/Image/SurfaceReader.cs
index 2747ae805..1411ec939 100644
--- a/src/Ryujinx.Graphics.Vic/Image/SurfaceReader.cs
+++ b/src/Ryujinx.Graphics.Vic/Image/SurfaceReader.cs
@@ -1,5 +1,4 @@
using Ryujinx.Common.Logging;
-using Ryujinx.Common.Memory;
using Ryujinx.Graphics.Texture;
using Ryujinx.Graphics.Vic.Types;
using System;
diff --git a/src/Ryujinx.Graphics.Vulkan/HelperShader.cs b/src/Ryujinx.Graphics.Vulkan/HelperShader.cs
index c75561690..a60e060c0 100644
--- a/src/Ryujinx.Graphics.Vulkan/HelperShader.cs
+++ b/src/Ryujinx.Graphics.Vulkan/HelperShader.cs
@@ -4,7 +4,6 @@ using Ryujinx.Graphics.Shader;
using Ryujinx.Graphics.Shader.Translation;
using Silk.NET.Vulkan;
using System;
-using System.Collections.Generic;
using System.Numerics;
using Buffer = Silk.NET.Vulkan.Buffer;
using CompareOp = Ryujinx.Graphics.GAL.CompareOp;
diff --git a/src/Ryujinx.Graphics.Vulkan/IndexBufferPattern.cs b/src/Ryujinx.Graphics.Vulkan/IndexBufferPattern.cs
index 9054b2e71..852634513 100644
--- a/src/Ryujinx.Graphics.Vulkan/IndexBufferPattern.cs
+++ b/src/Ryujinx.Graphics.Vulkan/IndexBufferPattern.cs
@@ -1,6 +1,5 @@
using Ryujinx.Graphics.GAL;
using System;
-using System.Collections.Generic;
using System.Runtime.InteropServices;
namespace Ryujinx.Graphics.Vulkan
diff --git a/src/Ryujinx.HLE/Debugger/Debugger.Rcmd.cs b/src/Ryujinx.HLE/Debugger/Debugger.Rcmd.cs
index 1dcc0a622..d3094d842 100644
--- a/src/Ryujinx.HLE/Debugger/Debugger.Rcmd.cs
+++ b/src/Ryujinx.HLE/Debugger/Debugger.Rcmd.cs
@@ -1,12 +1,8 @@
using Gommon;
-using JetBrains.Annotations;
using Ryujinx.Common.Logging;
-using Ryujinx.HLE.HOS.Kernel.Process;
-using Ryujinx.HLE.HOS.Kernel.Threading;
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
namespace Ryujinx.HLE.Debugger
{
diff --git a/src/Ryujinx.HLE/Debugger/Debugger.cs b/src/Ryujinx.HLE/Debugger/Debugger.cs
index 5ffb71ca8..ff928aa90 100644
--- a/src/Ryujinx.HLE/Debugger/Debugger.cs
+++ b/src/Ryujinx.HLE/Debugger/Debugger.cs
@@ -5,7 +5,6 @@ using Ryujinx.HLE.HOS.Kernel.Process;
using Ryujinx.HLE.HOS.Kernel.Threading;
using System;
using System.Collections.Concurrent;
-using System.Diagnostics;
using System.Linq;
using System.Net.Sockets;
using System.Threading;
diff --git a/src/Ryujinx.HLE/FileSystem/ContentMetaData.cs b/src/Ryujinx.HLE/FileSystem/ContentMetaData.cs
index a1f29bd13..d9699ce5c 100644
--- a/src/Ryujinx.HLE/FileSystem/ContentMetaData.cs
+++ b/src/Ryujinx.HLE/FileSystem/ContentMetaData.cs
@@ -49,7 +49,7 @@ namespace Ryujinx.HLE.FileSystem
string ncaId = Convert.ToHexStringLower(entry.NcaId).Replace("-", null);
Nca nca = _pfs.GetNca(keySet, $"/{ncaId}.nca");
- if (nca.GetProgramIndex() == programIndex)
+ if (nca.ProgramIndex == programIndex)
{
return nca;
}
diff --git a/src/Ryujinx.HLE/Loaders/Processes/Extensions/FileSystemExtensions.cs b/src/Ryujinx.HLE/Loaders/Processes/Extensions/FileSystemExtensions.cs
index b043f29ef..7373e2f45 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/Extensions/FileSystemExtensions.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/Extensions/FileSystemExtensions.cs
@@ -36,7 +36,7 @@ namespace Ryujinx.HLE.Loaders.Processes.Extensions
public static ProcessResult Load(this IFileSystem exeFs, Switch device, BlitStruct nacpData, MetaLoader metaLoader, byte programIndex, bool isHomebrew = false)
{
- ulong programId = metaLoader.GetProgramId();
+ ulong programId = metaLoader.ProgramId;
// Replace the whole ExeFs partition by the modded one.
if (device.Configuration.VirtualFileSystem.ModLoader.ReplaceExefsPartition(programId, ref exeFs))
@@ -118,13 +118,13 @@ namespace Ryujinx.HLE.Loaders.Processes.Extensions
modLoadResult.Hash,
true,
programName,
- metaLoader.GetProgramId(),
+ programId,
programIndex,
null,
nsoExecutables);
// TODO: This should be stored using ProcessId instead.
- device.System.LibHacHorizonManager.ArpIReader.ApplicationId = new LibHac.ApplicationId(metaLoader.GetProgramId());
+ device.System.LibHacHorizonManager.ArpIReader.ApplicationId = new LibHac.ApplicationId(programId);
return processResult;
}
diff --git a/src/Ryujinx.HLE/Loaders/Processes/Extensions/LocalFileSystemExtensions.cs b/src/Ryujinx.HLE/Loaders/Processes/Extensions/LocalFileSystemExtensions.cs
index 140be91b5..94a76e12b 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/Extensions/LocalFileSystemExtensions.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/Extensions/LocalFileSystemExtensions.cs
@@ -13,7 +13,7 @@ namespace Ryujinx.HLE.Loaders.Processes
{
MetaLoader metaLoader = exeFs.GetNpdm();
BlitStruct nacpData = new(1);
- ulong programId = metaLoader.GetProgramId();
+ ulong programId = metaLoader.ProgramId;
device.Configuration.VirtualFileSystem.ModLoader.CollectMods([programId]);
diff --git a/src/Ryujinx.HLE/Loaders/Processes/Extensions/MetaLoaderExtensions.cs b/src/Ryujinx.HLE/Loaders/Processes/Extensions/MetaLoaderExtensions.cs
index f6dab1583..87713a2f7 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/Extensions/MetaLoaderExtensions.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/Extensions/MetaLoaderExtensions.cs
@@ -1,61 +1,15 @@
-using LibHac.Common;
-using LibHac.Fs;
-using LibHac.Fs.Fsa;
using LibHac.Loader;
-using LibHac.Util;
using Ryujinx.Common;
-using System;
namespace Ryujinx.HLE.Loaders.Processes.Extensions
{
public static class MetaLoaderExtensions
{
- public static ulong GetProgramId(this MetaLoader metaLoader)
- {
- metaLoader.GetNpdm(out LibHac.Loader.Npdm npdm).ThrowIfFailure();
-
- return npdm.Aci.ProgramId.Value;
- }
-
- public static string GetProgramName(this MetaLoader metaLoader)
- {
- metaLoader.GetNpdm(out LibHac.Loader.Npdm npdm).ThrowIfFailure();
-
- return StringUtils.Utf8ZToString(npdm.Meta.ProgramName);
- }
-
- public static bool IsProgram64Bit(this MetaLoader metaLoader)
- {
- metaLoader.GetNpdm(out LibHac.Loader.Npdm npdm).ThrowIfFailure();
-
- return (npdm.Meta.Flags & 1) != 0;
- }
-
public static void LoadDefault(this MetaLoader metaLoader)
{
byte[] npdmBuffer = EmbeddedResources.Read("Ryujinx.HLE/Homebrew.npdm");
metaLoader.Load(npdmBuffer).ThrowIfFailure();
}
-
- public static void LoadFromFile(this MetaLoader metaLoader, IFileSystem fileSystem, string path = "")
- {
- if (string.IsNullOrEmpty(path))
- {
- path = ProcessConst.MainNpdmPath;
- }
-
- using UniqueRef npdmFile = new();
-
- fileSystem.OpenFile(ref npdmFile.Ref, path.ToU8Span(), OpenMode.Read).ThrowIfFailure();
-
- npdmFile.Get.GetSize(out long fileSize).ThrowIfFailure();
-
- Span npdmBuffer = new byte[fileSize];
-
- npdmFile.Get.Read(out _, 0, npdmBuffer).ThrowIfFailure();
-
- metaLoader.Load(npdmBuffer).ThrowIfFailure();
- }
}
}
diff --git a/src/Ryujinx.HLE/Loaders/Processes/Extensions/NcaExtensions.cs b/src/Ryujinx.HLE/Loaders/Processes/Extensions/NcaExtensions.cs
index be37078f5..f2dddc866 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/Extensions/NcaExtensions.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/Extensions/NcaExtensions.cs
@@ -44,7 +44,7 @@ namespace Ryujinx.HLE.Loaders.Processes.Extensions
// Collecting mods related to AocTitleIds and ProgramId.
device.Configuration.VirtualFileSystem.ModLoader.CollectMods(
- device.Configuration.ContentManager.GetAocTitleIds().Prepend(metaLoader.GetProgramId()),
+ device.Configuration.ContentManager.GetAocTitleIds().Prepend(metaLoader.ProgramId),
ModLoader.GetModsBasePath(),
ModLoader.GetSdModsBasePath());
@@ -74,7 +74,7 @@ namespace Ryujinx.HLE.Loaders.Processes.Extensions
*/
- ProcessResult processResult = exeFs.Load(device, nacpData, metaLoader, (byte)nca.GetProgramIndex());
+ ProcessResult processResult = exeFs.Load(device, nacpData, metaLoader, (byte)nca.ProgramIndex);
// Load RomFS.
if (romFs == null)
@@ -99,38 +99,6 @@ namespace Ryujinx.HLE.Loaders.Processes.Extensions
return processResult;
}
- public static ulong GetProgramIdBase(this Nca nca)
- {
- return nca.Header.TitleId & ~0x1FFFUL;
- }
-
- public static int GetProgramIndex(this Nca nca)
- {
- return (int)(nca.Header.TitleId & 0xF);
- }
-
- public static bool IsProgram(this Nca nca)
- {
- return nca.Header.ContentType == NcaContentType.Program;
- }
-
- public static bool IsMain(this Nca nca)
- {
- return nca.IsProgram() && !nca.IsPatch();
- }
-
- public static bool IsPatch(this Nca nca)
- {
- int dataIndex = Nca.GetSectionIndexFromType(NcaSectionType.Data, NcaContentType.Program);
-
- return nca.IsProgram() && nca.SectionExists(NcaSectionType.Data) && nca.Header.GetFsHeader(dataIndex).IsPatchSection();
- }
-
- public static bool IsControl(this Nca nca)
- {
- return nca.Header.ContentType == NcaContentType.Control;
- }
-
public static (Nca, Nca) GetUpdateData(this Nca mainNca, VirtualFileSystem fileSystem, IntegrityCheckLevel checkLevel, int programIndex, out string updatePath)
{
updatePath = null;
@@ -140,7 +108,7 @@ namespace Ryujinx.HLE.Loaders.Processes.Extensions
Nca updateControlNca = null;
// Clear the program index part.
- ulong titleIdBase = mainNca.GetProgramIdBase();
+ ulong titleIdBase = mainNca.ProgramIdBase;
// Load update information if exists.
string titleUpdateMetadataPath = Path.Combine(AppDataManager.GamesDirPath, titleIdBase.ToString("x16"), "updates.json");
diff --git a/src/Ryujinx.HLE/Loaders/Processes/Extensions/PartitionFileSystemExtensions.cs b/src/Ryujinx.HLE/Loaders/Processes/Extensions/PartitionFileSystemExtensions.cs
index 798b1f86f..3e7408194 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/Extensions/PartitionFileSystemExtensions.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/Extensions/PartitionFileSystemExtensions.cs
@@ -118,7 +118,7 @@ namespace Ryujinx.HLE.Loaders.Processes.Extensions
device.Configuration.ContentManager.ClearAocData();
// Load DownloadableContents.
- string addOnContentMetadataPath = System.IO.Path.Combine(AppDataManager.GamesDirPath, mainNca.GetProgramIdBase().ToString("x16"), "dlc.json");
+ string addOnContentMetadataPath = System.IO.Path.Combine(AppDataManager.GamesDirPath, mainNca.ProgramIdBase.ToString("x16"), "dlc.json");
if (File.Exists(addOnContentMetadataPath))
{
List dlcContainerList = JsonHelper.DeserializeFromFile(addOnContentMetadataPath, _contentSerializerContext.ListDownloadableContentContainer);
@@ -149,14 +149,5 @@ namespace Ryujinx.HLE.Loaders.Processes.Extensions
return (false, ProcessResult.Failed);
}
-
- public static Nca GetNca(this IFileSystem fileSystem, KeySet keySet, string path)
- {
- using UniqueRef ncaFile = new();
-
- fileSystem.OpenFile(ref ncaFile.Ref, path.ToU8Span(), OpenMode.Read).ThrowIfFailure();
-
- return new Nca(keySet, ncaFile.Release().AsStorage());
- }
}
}
diff --git a/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs b/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs
index 7f0c6b3f5..afd8ebffc 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs
@@ -17,7 +17,6 @@ using Ryujinx.HLE.HOS.Kernel.Common;
using Ryujinx.HLE.HOS.Kernel.Memory;
using Ryujinx.HLE.HOS.Kernel.Process;
using Ryujinx.HLE.Loaders.Executables;
-using Ryujinx.HLE.Loaders.Processes.Extensions;
using Ryujinx.Horizon.Common;
using Ryujinx.Horizon.Sdk.Arp;
using System;
@@ -44,12 +43,12 @@ namespace Ryujinx.HLE.Loaders.Processes
{
Nca nca = partitionFileSystem.GetNca(device.FileSystem.KeySet, fileEntry.FullPath);
- if (!nca.IsProgram())
+ if (!nca.IsProgram)
{
continue;
}
- ulong currentMainProgramId = nca.GetProgramIdBase();
+ ulong currentMainProgramId = nca.ProgramIdBase;
if (applicationId == 0 && currentMainProgramId != 0)
{
@@ -66,7 +65,7 @@ namespace Ryujinx.HLE.Loaders.Processes
break;
}
- hasIndex[nca.GetProgramIndex()] = true;
+ hasIndex[nca.ProgramIndex] = true;
}
if (programCount == 0)
@@ -365,7 +364,7 @@ namespace Ryujinx.HLE.Loaders.Processes
string displayVersion;
- if (metaLoader.GetProgramId() > 0x0100000000007FFF)
+ if (metaLoader.ProgramId > 0x0100000000007FFF)
{
displayVersion = applicationControlProperties.Value.DisplayVersionString.ToString();
}
diff --git a/src/Ryujinx.HLE/Loaders/Processes/ProcessResult.cs b/src/Ryujinx.HLE/Loaders/Processes/ProcessResult.cs
index 18b2b78d1..d6e492317 100644
--- a/src/Ryujinx.HLE/Loaders/Processes/ProcessResult.cs
+++ b/src/Ryujinx.HLE/Loaders/Processes/ProcessResult.cs
@@ -52,7 +52,7 @@ namespace Ryujinx.HLE.Loaders.Processes
if (metaLoader is not null)
{
- ulong programId = metaLoader.GetProgramId();
+ ulong programId = metaLoader.ProgramId;
Name = ApplicationControlProperties.Title[(int)titleLanguage].NameString.ToString();
@@ -70,7 +70,7 @@ namespace Ryujinx.HLE.Loaders.Processes
DisplayVersion = ApplicationControlProperties.DisplayVersionString.ToString();
ProgramId = programId;
ProgramIdText = $"{programId:x16}";
- Is64Bit = metaLoader.IsProgram64Bit();
+ Is64Bit = metaLoader.IsProgram64Bit;
}
DiskCacheEnabled = diskCacheEnabled;
diff --git a/src/Ryujinx.Input.SDL2/SDL2JoyConPair.cs b/src/Ryujinx.Input.SDL2/SDL2JoyConPair.cs
index be70cc4f9..dce767523 100644
--- a/src/Ryujinx.Input.SDL2/SDL2JoyConPair.cs
+++ b/src/Ryujinx.Input.SDL2/SDL2JoyConPair.cs
@@ -1,6 +1,4 @@
using Ryujinx.Common.Configuration.Hid;
-using Ryujinx.Common.Configuration.Hid.Controller;
-using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
diff --git a/src/Ryujinx.Memory/WindowsShared/PlaceholderManager.cs b/src/Ryujinx.Memory/WindowsShared/PlaceholderManager.cs
index 6ae540178..344a48be6 100644
--- a/src/Ryujinx.Memory/WindowsShared/PlaceholderManager.cs
+++ b/src/Ryujinx.Memory/WindowsShared/PlaceholderManager.cs
@@ -2,7 +2,6 @@ using Ryujinx.Common;
using Ryujinx.Common.Collections;
using Ryujinx.Common.Memory.PartialUnmaps;
using System;
-using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
diff --git a/src/Ryujinx.Tests/Memory/PartialUnmaps.cs b/src/Ryujinx.Tests/Memory/PartialUnmaps.cs
index 1a01a36bc..73a7f7dfc 100644
--- a/src/Ryujinx.Tests/Memory/PartialUnmaps.cs
+++ b/src/Ryujinx.Tests/Memory/PartialUnmaps.cs
@@ -11,7 +11,6 @@ using Ryujinx.Memory;
using Ryujinx.Memory.Tracking;
using System;
using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
diff --git a/src/Ryujinx/Program.cs b/src/Ryujinx/Program.cs
index 509a9f18e..f0e0c2ec3 100644
--- a/src/Ryujinx/Program.cs
+++ b/src/Ryujinx/Program.cs
@@ -119,7 +119,6 @@ namespace Ryujinx.Ava
=> ProcessUnhandledException(sender, e.Exception, false);
AppDomain.CurrentDomain.ProcessExit += (_, _) => Exit();
-
// Setup base data directory.
AppDataManager.Initialize(CommandLineState.BaseDirPathArg);
diff --git a/src/Ryujinx/Systems/AppHost.cs b/src/Ryujinx/Systems/AppHost.cs
index da2b5c80c..0aca8d3a4 100644
--- a/src/Ryujinx/Systems/AppHost.cs
+++ b/src/Ryujinx/Systems/AppHost.cs
@@ -4,7 +4,6 @@ using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Input;
using Avalonia.Threading;
using DiscordRPC;
-using Gommon;
using LibHac.Common;
using LibHac.Ns;
using Ryujinx.Audio.Backends.Dummy;
@@ -480,10 +479,7 @@ namespace Ryujinx.Ava.Systems
Dispatcher.UIThread.InvokeAsync(() =>
{
- if (ConfigurationState.Instance.ShowOldUI)
- {
- _viewModel.Title = TitleHelper.ActiveApplicationTitle(Device.Processes.ActiveApplication, Program.Version, !ConfigurationState.Instance.ShowOldUI);
- }
+ _viewModel.Title = TitleHelper.ActiveApplicationTitle(Device.Processes.ActiveApplication, Program.Version, !ConfigurationState.Instance.ShowOldUI);
});
_viewModel.SetUiProgressHandlers(Device);
@@ -903,10 +899,7 @@ namespace Ryujinx.Ava.Systems
_viewModel.IsPaused = false;
_playTimer.Start();
- if (ConfigurationState.Instance.ShowOldUI)
- {
- _viewModel.Title = TitleHelper.ActiveApplicationTitle(Device?.Processes.ActiveApplication, Program.Version, !ConfigurationState.Instance.ShowOldUI);
- }
+ _viewModel.Title = TitleHelper.ActiveApplicationTitle(Device?.Processes.ActiveApplication, Program.Version, !ConfigurationState.Instance.ShowOldUI);
Logger.Info?.Print(LogClass.Emulation, "Emulation was resumed");
}
@@ -916,10 +909,7 @@ namespace Ryujinx.Ava.Systems
_viewModel.IsPaused = true;
_playTimer.Stop();
- if (ConfigurationState.Instance.ShowOldUI)
- {
- _viewModel.Title = TitleHelper.ActiveApplicationTitle(Device?.Processes.ActiveApplication, Program.Version, !ConfigurationState.Instance.ShowOldUI, LocaleManager.Instance[LocaleKeys.Paused]);
- }
+ _viewModel.Title = TitleHelper.ActiveApplicationTitle(Device?.Processes.ActiveApplication, Program.Version, !ConfigurationState.Instance.ShowOldUI, LocaleManager.Instance[LocaleKeys.Paused]);
Logger.Info?.Print(LogClass.Emulation, "Emulation was paused");
}
diff --git a/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs b/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs
index 7cf111017..2831802fe 100644
--- a/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs
+++ b/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs
@@ -1,7 +1,6 @@
using DynamicData;
using DynamicData.Kernel;
using Gommon;
-using LibHac;
using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
@@ -469,7 +468,7 @@ namespace Ryujinx.Ava.Systems.AppLibrary
Nca nca = new(_virtualFileSystem.KeySet, new FileStream(applicationPath, FileMode.Open, FileAccess.Read).AsStorage());
- if (!nca.IsProgram() || nca.IsPatch())
+ if (!nca.IsProgram || nca.IsPatch)
{
return false;
}
diff --git a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
index 7f12a6119..e2aaf60af 100644
--- a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
@@ -1861,14 +1861,14 @@ namespace Ryujinx.Ava.UI.ViewModels
///
public static void PreLaunchNotification()
{
- if (ConfigurationState.Instance.Debug.DebuggerSuspendOnStart.Value)
+ if (ConfigurationState.Instance.Debug.DebuggerSuspendOnStart)
{
NotificationHelper.ShowInformation(
LocaleManager.Instance[LocaleKeys.NotificationLaunchCheckSuspendOnStartTitle],
LocaleManager.Instance[LocaleKeys.NotificationLaunchCheckSuspendOnStartMessage]);
}
- if (ConfigurationState.Instance.Debug.EnableGdbStub.Value)
+ if (ConfigurationState.Instance.Debug.EnableGdbStub)
{
NotificationHelper.ShowInformation(
LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.NotificationLaunchCheckGdbStubTitle, ConfigurationState.Instance.Debug.GdbStubPort.Value),
@@ -1877,7 +1877,7 @@ namespace Ryujinx.Ava.UI.ViewModels
if (ConfigurationState.Instance.System.DramSize.Value != MemoryConfiguration.MemoryConfiguration4GiB)
{
- var MemoryConfigurationLocaleKey = ConfigurationState.Instance.System.DramSize.Value switch
+ var memoryConfigurationLocaleKey = ConfigurationState.Instance.System.DramSize.Value switch
{
MemoryConfiguration.MemoryConfiguration4GiB or
MemoryConfiguration.MemoryConfiguration4GiBAppletDev or
@@ -1889,10 +1889,11 @@ namespace Ryujinx.Ava.UI.ViewModels
_ => LocaleKeys.SettingsTabSystemDramSize4GiB,
};
- var MemoryConfigurationLocale = LocaleManager.Instance[MemoryConfigurationLocaleKey];
-
NotificationHelper.ShowWarning(
- LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.NotificationLaunchCheckDramSizeTitle, MemoryConfigurationLocale),
+ LocaleManager.Instance.UpdateAndGetDynamicValue(
+ LocaleKeys.NotificationLaunchCheckDramSizeTitle,
+ LocaleManager.Instance[memoryConfigurationLocaleKey]
+ ),
LocaleManager.Instance[LocaleKeys.NotificationLaunchCheckDramSizeMessage]);
}
}
@@ -2348,24 +2349,23 @@ namespace Ryujinx.Ava.UI.ViewModels
Commands.CreateConditional(vm => vm?.SelectedApplication != null,
async viewModel =>
{
- IReadOnlyList result = await viewModel.StorageProvider.OpenFolderPickerAsync(
+ Optional resOpt = await viewModel.StorageProvider.OpenSingleFolderPickerAsync(
new FolderPickerOpenOptions
{
- Title = LocaleManager.Instance[LocaleKeys.FolderDialogExtractTitle],
- AllowMultiple = false,
+ Title = LocaleManager.Instance[LocaleKeys.FolderDialogExtractTitle]
});
- if (result.Count == 0)
+ if (!resOpt.TryGet(out IStorageFolder result))
return;
ApplicationHelper.ExtractSection(
- result[0].Path.LocalPath,
+ result.Path.LocalPath,
NcaSectionType.Logo,
viewModel.SelectedApplication.Path,
viewModel.SelectedApplication.Name);
IStorageFile iconFile =
- await result[0].CreateFileAsync($"{viewModel.SelectedApplication.IdString}.png");
+ await result.CreateFileAsync($"{viewModel.SelectedApplication.IdString}.png");
await using Stream fileStream = await iconFile.OpenWriteAsync();
using SKBitmap bitmap = SKBitmap.Decode(viewModel.SelectedApplication.Icon)
diff --git a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
index 2a7bfa8ef..e363ee2cd 100644
--- a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
+++ b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
@@ -139,15 +139,13 @@ namespace Ryujinx.Ava.UI.Windows
Executor.ExecuteBackgroundAsync(async () =>
{
await ShowIntelMacWarningAsync();
- FilePath firmwarePath = CommandLineState.FirmwareToInstallPathArg;
- if (firmwarePath is not null)
+ if (CommandLineState.FirmwareToInstallPathArg.TryGet(out FilePath fwPath))
{
- if ((firmwarePath.ExistsAsFile && firmwarePath.Extension is "xci" or "zip") ||
- firmwarePath.ExistsAsDirectory)
+ if (fwPath is { ExistsAsFile: true, Extension: "xci" or "zip" } || fwPath.ExistsAsDirectory)
{
await Dispatcher.UIThread.InvokeAsync(() =>
- ViewModel.HandleFirmwareInstallation(firmwarePath));
- CommandLineState.FirmwareToInstallPathArg = null;
+ ViewModel.HandleFirmwareInstallation(fwPath));
+ CommandLineState.FirmwareToInstallPathArg = default;
}
else
Logger.Notice.Print(LogClass.UI, "Invalid firmware type provided. Path must be a directory, or a .zip or .xci file.");
diff --git a/src/Ryujinx/Utilities/CommandLineState.cs b/src/Ryujinx/Utilities/CommandLineState.cs
index f156792a1..28f302e9d 100644
--- a/src/Ryujinx/Utilities/CommandLineState.cs
+++ b/src/Ryujinx/Utilities/CommandLineState.cs
@@ -19,7 +19,7 @@ namespace Ryujinx.Ava.Utilities
public static string OverrideSystemLanguage { get; private set; }
public static string OverrideHideCursor { get; private set; }
public static string BaseDirPathArg { get; private set; }
- public static FilePath FirmwareToInstallPathArg { get; set; }
+ public static Optional FirmwareToInstallPathArg { get; set; }
public static string Profile { get; private set; }
public static string LaunchPathArg { get; private set; }
public static string LaunchApplicationId { get; private set; }