mirror of
https://github.com/GreemDev/Ryujinx.git
synced 2024-12-22 22:45:46 +00:00
Replace 'Expand DRAM' option with dropdown menu (#32)
Allows to use mods that require a larger memory pool to allocate from.
This commit is contained in:
parent
0f3c7f920b
commit
f76a97c976
54 changed files with 416 additions and 118 deletions
|
@ -492,7 +492,7 @@ namespace Ryujinx.Common.Collections
|
||||||
Start = start;
|
Start = start;
|
||||||
End = end;
|
End = end;
|
||||||
Max = end;
|
Max = end;
|
||||||
Values = [ new RangeNode<TKey, TValue>(start, end, value) ];
|
Values = [new RangeNode<TKey, TValue>(start, end, value)];
|
||||||
Parent = parent;
|
Parent = parent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,8 @@ using System.Diagnostics;
|
||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Runtime.Intrinsics.X86;
|
|
||||||
using System.Runtime.Intrinsics;
|
using System.Runtime.Intrinsics;
|
||||||
|
using System.Runtime.Intrinsics.X86;
|
||||||
// ReSharper disable InconsistentNaming
|
// ReSharper disable InconsistentNaming
|
||||||
|
|
||||||
namespace Ryujinx.Common
|
namespace Ryujinx.Common
|
||||||
|
@ -67,18 +67,198 @@ namespace Ryujinx.Common
|
||||||
|
|
||||||
private static ReadOnlySpan<byte> Xxh3KSecret =>
|
private static ReadOnlySpan<byte> Xxh3KSecret =>
|
||||||
[
|
[
|
||||||
0xb8, 0xfe, 0x6c, 0x39, 0x23, 0xa4, 0x4b, 0xbe, 0x7c, 0x01, 0x81, 0x2c, 0xf7, 0x21, 0xad, 0x1c,
|
0xb8,
|
||||||
0xde, 0xd4, 0x6d, 0xe9, 0x83, 0x90, 0x97, 0xdb, 0x72, 0x40, 0xa4, 0xa4, 0xb7, 0xb3, 0x67, 0x1f,
|
0xfe,
|
||||||
0xcb, 0x79, 0xe6, 0x4e, 0xcc, 0xc0, 0xe5, 0x78, 0x82, 0x5a, 0xd0, 0x7d, 0xcc, 0xff, 0x72, 0x21,
|
0x6c,
|
||||||
0xb8, 0x08, 0x46, 0x74, 0xf7, 0x43, 0x24, 0x8e, 0xe0, 0x35, 0x90, 0xe6, 0x81, 0x3a, 0x26, 0x4c,
|
0x39,
|
||||||
0x3c, 0x28, 0x52, 0xbb, 0x91, 0xc3, 0x00, 0xcb, 0x88, 0xd0, 0x65, 0x8b, 0x1b, 0x53, 0x2e, 0xa3,
|
0x23,
|
||||||
0x71, 0x64, 0x48, 0x97, 0xa2, 0x0d, 0xf9, 0x4e, 0x38, 0x19, 0xef, 0x46, 0xa9, 0xde, 0xac, 0xd8,
|
0xa4,
|
||||||
0xa8, 0xfa, 0x76, 0x3f, 0xe3, 0x9c, 0x34, 0x3f, 0xf9, 0xdc, 0xbb, 0xc7, 0xc7, 0x0b, 0x4f, 0x1d,
|
0x4b,
|
||||||
0x8a, 0x51, 0xe0, 0x4b, 0xcd, 0xb4, 0x59, 0x31, 0xc8, 0x9f, 0x7e, 0xc9, 0xd9, 0x78, 0x73, 0x64,
|
0xbe,
|
||||||
0xea, 0xc5, 0xac, 0x83, 0x34, 0xd3, 0xeb, 0xc3, 0xc5, 0x81, 0xa0, 0xff, 0xfa, 0x13, 0x63, 0xeb,
|
0x7c,
|
||||||
0x17, 0x0d, 0xdd, 0x51, 0xb7, 0xf0, 0xda, 0x49, 0xd3, 0x16, 0x55, 0x26, 0x29, 0xd4, 0x68, 0x9e,
|
0x01,
|
||||||
0x2b, 0x16, 0xbe, 0x58, 0x7d, 0x47, 0xa1, 0xfc, 0x8f, 0xf8, 0xb8, 0xd1, 0x7a, 0xd0, 0x31, 0xce,
|
0x81,
|
||||||
0x45, 0xcb, 0x3a, 0x8f, 0x95, 0x16, 0x04, 0x28, 0xaf, 0xd7, 0xfb, 0xca, 0xbb, 0x4b, 0x40, 0x7e
|
0x2c,
|
||||||
|
0xf7,
|
||||||
|
0x21,
|
||||||
|
0xad,
|
||||||
|
0x1c,
|
||||||
|
0xde,
|
||||||
|
0xd4,
|
||||||
|
0x6d,
|
||||||
|
0xe9,
|
||||||
|
0x83,
|
||||||
|
0x90,
|
||||||
|
0x97,
|
||||||
|
0xdb,
|
||||||
|
0x72,
|
||||||
|
0x40,
|
||||||
|
0xa4,
|
||||||
|
0xa4,
|
||||||
|
0xb7,
|
||||||
|
0xb3,
|
||||||
|
0x67,
|
||||||
|
0x1f,
|
||||||
|
0xcb,
|
||||||
|
0x79,
|
||||||
|
0xe6,
|
||||||
|
0x4e,
|
||||||
|
0xcc,
|
||||||
|
0xc0,
|
||||||
|
0xe5,
|
||||||
|
0x78,
|
||||||
|
0x82,
|
||||||
|
0x5a,
|
||||||
|
0xd0,
|
||||||
|
0x7d,
|
||||||
|
0xcc,
|
||||||
|
0xff,
|
||||||
|
0x72,
|
||||||
|
0x21,
|
||||||
|
0xb8,
|
||||||
|
0x08,
|
||||||
|
0x46,
|
||||||
|
0x74,
|
||||||
|
0xf7,
|
||||||
|
0x43,
|
||||||
|
0x24,
|
||||||
|
0x8e,
|
||||||
|
0xe0,
|
||||||
|
0x35,
|
||||||
|
0x90,
|
||||||
|
0xe6,
|
||||||
|
0x81,
|
||||||
|
0x3a,
|
||||||
|
0x26,
|
||||||
|
0x4c,
|
||||||
|
0x3c,
|
||||||
|
0x28,
|
||||||
|
0x52,
|
||||||
|
0xbb,
|
||||||
|
0x91,
|
||||||
|
0xc3,
|
||||||
|
0x00,
|
||||||
|
0xcb,
|
||||||
|
0x88,
|
||||||
|
0xd0,
|
||||||
|
0x65,
|
||||||
|
0x8b,
|
||||||
|
0x1b,
|
||||||
|
0x53,
|
||||||
|
0x2e,
|
||||||
|
0xa3,
|
||||||
|
0x71,
|
||||||
|
0x64,
|
||||||
|
0x48,
|
||||||
|
0x97,
|
||||||
|
0xa2,
|
||||||
|
0x0d,
|
||||||
|
0xf9,
|
||||||
|
0x4e,
|
||||||
|
0x38,
|
||||||
|
0x19,
|
||||||
|
0xef,
|
||||||
|
0x46,
|
||||||
|
0xa9,
|
||||||
|
0xde,
|
||||||
|
0xac,
|
||||||
|
0xd8,
|
||||||
|
0xa8,
|
||||||
|
0xfa,
|
||||||
|
0x76,
|
||||||
|
0x3f,
|
||||||
|
0xe3,
|
||||||
|
0x9c,
|
||||||
|
0x34,
|
||||||
|
0x3f,
|
||||||
|
0xf9,
|
||||||
|
0xdc,
|
||||||
|
0xbb,
|
||||||
|
0xc7,
|
||||||
|
0xc7,
|
||||||
|
0x0b,
|
||||||
|
0x4f,
|
||||||
|
0x1d,
|
||||||
|
0x8a,
|
||||||
|
0x51,
|
||||||
|
0xe0,
|
||||||
|
0x4b,
|
||||||
|
0xcd,
|
||||||
|
0xb4,
|
||||||
|
0x59,
|
||||||
|
0x31,
|
||||||
|
0xc8,
|
||||||
|
0x9f,
|
||||||
|
0x7e,
|
||||||
|
0xc9,
|
||||||
|
0xd9,
|
||||||
|
0x78,
|
||||||
|
0x73,
|
||||||
|
0x64,
|
||||||
|
0xea,
|
||||||
|
0xc5,
|
||||||
|
0xac,
|
||||||
|
0x83,
|
||||||
|
0x34,
|
||||||
|
0xd3,
|
||||||
|
0xeb,
|
||||||
|
0xc3,
|
||||||
|
0xc5,
|
||||||
|
0x81,
|
||||||
|
0xa0,
|
||||||
|
0xff,
|
||||||
|
0xfa,
|
||||||
|
0x13,
|
||||||
|
0x63,
|
||||||
|
0xeb,
|
||||||
|
0x17,
|
||||||
|
0x0d,
|
||||||
|
0xdd,
|
||||||
|
0x51,
|
||||||
|
0xb7,
|
||||||
|
0xf0,
|
||||||
|
0xda,
|
||||||
|
0x49,
|
||||||
|
0xd3,
|
||||||
|
0x16,
|
||||||
|
0x55,
|
||||||
|
0x26,
|
||||||
|
0x29,
|
||||||
|
0xd4,
|
||||||
|
0x68,
|
||||||
|
0x9e,
|
||||||
|
0x2b,
|
||||||
|
0x16,
|
||||||
|
0xbe,
|
||||||
|
0x58,
|
||||||
|
0x7d,
|
||||||
|
0x47,
|
||||||
|
0xa1,
|
||||||
|
0xfc,
|
||||||
|
0x8f,
|
||||||
|
0xf8,
|
||||||
|
0xb8,
|
||||||
|
0xd1,
|
||||||
|
0x7a,
|
||||||
|
0xd0,
|
||||||
|
0x31,
|
||||||
|
0xce,
|
||||||
|
0x45,
|
||||||
|
0xcb,
|
||||||
|
0x3a,
|
||||||
|
0x8f,
|
||||||
|
0x95,
|
||||||
|
0x16,
|
||||||
|
0x04,
|
||||||
|
0x28,
|
||||||
|
0xaf,
|
||||||
|
0xd7,
|
||||||
|
0xfb,
|
||||||
|
0xca,
|
||||||
|
0xbb,
|
||||||
|
0x4b,
|
||||||
|
0x40,
|
||||||
|
0x7e
|
||||||
];
|
];
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
@ -551,6 +731,6 @@ namespace Ryujinx.Common
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
|
||||||
MemoryArrange.MemoryArrange4GiBAppletDev => 2048 * MiB,
|
MemoryArrange.MemoryArrange4GiBAppletDev => 2048 * MiB,
|
||||||
MemoryArrange.MemoryArrange6GiB => 4916 * MiB,
|
MemoryArrange.MemoryArrange6GiB => 4916 * MiB,
|
||||||
MemoryArrange.MemoryArrange8GiB => 6964 * MiB,
|
MemoryArrange.MemoryArrange8GiB => 6964 * MiB,
|
||||||
|
MemoryArrange.MemoryArrange12GiB => 11060 * MiB,
|
||||||
_ => throw new ArgumentException($"Invalid memory arrange \"{arrange}\"."),
|
_ => throw new ArgumentException($"Invalid memory arrange \"{arrange}\"."),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -43,7 +44,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
|
||||||
MemoryArrange.MemoryArrange4GiBSystemDev => 448 * MiB,
|
MemoryArrange.MemoryArrange4GiBSystemDev => 448 * MiB,
|
||||||
MemoryArrange.MemoryArrange6GiB => 562 * MiB,
|
MemoryArrange.MemoryArrange6GiB => 562 * MiB,
|
||||||
MemoryArrange.MemoryArrange6GiBAppletDev => 2193 * MiB,
|
MemoryArrange.MemoryArrange6GiBAppletDev => 2193 * MiB,
|
||||||
MemoryArrange.MemoryArrange8GiB => 562 * MiB,
|
MemoryArrange.MemoryArrange8GiB or
|
||||||
|
MemoryArrange.MemoryArrange12GiB => 562 * MiB,
|
||||||
_ => throw new ArgumentException($"Invalid memory arrange \"{arrange}\"."),
|
_ => throw new ArgumentException($"Invalid memory arrange \"{arrange}\"."),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -71,6 +73,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
|
||||||
MemorySize.MemorySize4GiB => 4 * GiB,
|
MemorySize.MemorySize4GiB => 4 * GiB,
|
||||||
MemorySize.MemorySize6GiB => 6 * GiB,
|
MemorySize.MemorySize6GiB => 6 * GiB,
|
||||||
MemorySize.MemorySize8GiB => 8 * GiB,
|
MemorySize.MemorySize8GiB => 8 * GiB,
|
||||||
|
MemorySize.MemorySize12GiB => 12 * GiB,
|
||||||
_ => throw new ArgumentException($"Invalid memory size \"{size}\"."),
|
_ => throw new ArgumentException($"Invalid memory size \"{size}\"."),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,5 +8,6 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
|
||||||
MemoryArrange6GiB,
|
MemoryArrange6GiB,
|
||||||
MemoryArrange6GiBAppletDev,
|
MemoryArrange6GiBAppletDev,
|
||||||
MemoryArrange8GiB,
|
MemoryArrange8GiB,
|
||||||
|
MemoryArrange12GiB,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,5 +5,6 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
|
||||||
MemorySize4GiB = 0,
|
MemorySize4GiB = 0,
|
||||||
MemorySize6GiB = 1,
|
MemorySize6GiB = 1,
|
||||||
MemorySize8GiB = 2,
|
MemorySize8GiB = 2,
|
||||||
|
MemorySize12GiB = 3,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,11 +6,12 @@ namespace Ryujinx.HLE
|
||||||
public enum MemoryConfiguration
|
public enum MemoryConfiguration
|
||||||
{
|
{
|
||||||
MemoryConfiguration4GiB = 0,
|
MemoryConfiguration4GiB = 0,
|
||||||
MemoryConfiguration4GiBAppletDev = 1,
|
MemoryConfiguration6GiB = 1,
|
||||||
MemoryConfiguration4GiBSystemDev = 2,
|
MemoryConfiguration8GiB = 2,
|
||||||
MemoryConfiguration6GiB = 3,
|
MemoryConfiguration12GiB = 3,
|
||||||
MemoryConfiguration6GiBAppletDev = 4,
|
MemoryConfiguration4GiBAppletDev = 4,
|
||||||
MemoryConfiguration8GiB = 5,
|
MemoryConfiguration4GiBSystemDev = 5,
|
||||||
|
MemoryConfiguration6GiBAppletDev = 6,
|
||||||
}
|
}
|
||||||
|
|
||||||
static class MemoryConfigurationExtensions
|
static class MemoryConfigurationExtensions
|
||||||
|
@ -28,6 +29,7 @@ namespace Ryujinx.HLE
|
||||||
MemoryConfiguration.MemoryConfiguration6GiB => MemoryArrange.MemoryArrange6GiB,
|
MemoryConfiguration.MemoryConfiguration6GiB => MemoryArrange.MemoryArrange6GiB,
|
||||||
MemoryConfiguration.MemoryConfiguration6GiBAppletDev => MemoryArrange.MemoryArrange6GiBAppletDev,
|
MemoryConfiguration.MemoryConfiguration6GiBAppletDev => MemoryArrange.MemoryArrange6GiBAppletDev,
|
||||||
MemoryConfiguration.MemoryConfiguration8GiB => MemoryArrange.MemoryArrange8GiB,
|
MemoryConfiguration.MemoryConfiguration8GiB => MemoryArrange.MemoryArrange8GiB,
|
||||||
|
MemoryConfiguration.MemoryConfiguration12GiB => MemoryArrange.MemoryArrange12GiB,
|
||||||
_ => throw new AggregateException($"Invalid memory configuration \"{configuration}\"."),
|
_ => throw new AggregateException($"Invalid memory configuration \"{configuration}\"."),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -42,6 +44,7 @@ namespace Ryujinx.HLE
|
||||||
MemoryConfiguration.MemoryConfiguration6GiB or
|
MemoryConfiguration.MemoryConfiguration6GiB or
|
||||||
MemoryConfiguration.MemoryConfiguration6GiBAppletDev => MemorySize.MemorySize6GiB,
|
MemoryConfiguration.MemoryConfiguration6GiBAppletDev => MemorySize.MemorySize6GiB,
|
||||||
MemoryConfiguration.MemoryConfiguration8GiB => MemorySize.MemorySize8GiB,
|
MemoryConfiguration.MemoryConfiguration8GiB => MemorySize.MemorySize8GiB,
|
||||||
|
MemoryConfiguration.MemoryConfiguration12GiB => MemorySize.MemorySize12GiB,
|
||||||
_ => throw new AggregateException($"Invalid memory configuration \"{configuration}\"."),
|
_ => throw new AggregateException($"Invalid memory configuration \"{configuration}\"."),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -56,6 +59,7 @@ namespace Ryujinx.HLE
|
||||||
MemoryConfiguration.MemoryConfiguration6GiB or
|
MemoryConfiguration.MemoryConfiguration6GiB or
|
||||||
MemoryConfiguration.MemoryConfiguration6GiBAppletDev => 6 * GiB,
|
MemoryConfiguration.MemoryConfiguration6GiBAppletDev => 6 * GiB,
|
||||||
MemoryConfiguration.MemoryConfiguration8GiB => 8 * GiB,
|
MemoryConfiguration.MemoryConfiguration8GiB => 8 * GiB,
|
||||||
|
MemoryConfiguration.MemoryConfiguration12GiB => 12 * GiB,
|
||||||
_ => throw new AggregateException($"Invalid memory configuration \"{configuration}\"."),
|
_ => throw new AggregateException($"Invalid memory configuration \"{configuration}\"."),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
using CommandLine;
|
using CommandLine;
|
||||||
using Ryujinx.Common.Configuration;
|
using Ryujinx.Common.Configuration;
|
||||||
|
using Ryujinx.HLE;
|
||||||
using Ryujinx.HLE.HOS.SystemState;
|
using Ryujinx.HLE.HOS.SystemState;
|
||||||
|
|
||||||
namespace Ryujinx.Headless.SDL2
|
namespace Ryujinx.Headless.SDL2
|
||||||
|
@ -219,8 +220,8 @@ namespace Ryujinx.Headless.SDL2
|
||||||
|
|
||||||
// Hacks
|
// Hacks
|
||||||
|
|
||||||
[Option("expand-ram", Required = false, Default = false, HelpText = "Expands the RAM amount on the emulated system from 4GiB to 8GiB.")]
|
[Option("dram-size", Required = false, Default = MemoryConfiguration.MemoryConfiguration4GiB, HelpText = "Set the RAM amount on the emulated system.")]
|
||||||
public bool ExpandRAM { get; set; }
|
public MemoryConfiguration DramSize { get; set; }
|
||||||
|
|
||||||
[Option("ignore-missing-services", Required = false, Default = false, HelpText = "Enable ignoring missing services.")]
|
[Option("ignore-missing-services", Required = false, Default = false, HelpText = "Enable ignoring missing services.")]
|
||||||
public bool IgnoreMissingServices { get; set; }
|
public bool IgnoreMissingServices { get; set; }
|
||||||
|
|
|
@ -562,7 +562,7 @@ namespace Ryujinx.Headless.SDL2
|
||||||
_userChannelPersistence,
|
_userChannelPersistence,
|
||||||
renderer,
|
renderer,
|
||||||
new SDL2HardwareDeviceDriver(),
|
new SDL2HardwareDeviceDriver(),
|
||||||
options.ExpandRAM ? MemoryConfiguration.MemoryConfiguration8GiB : MemoryConfiguration.MemoryConfiguration4GiB,
|
options.DramSize,
|
||||||
window,
|
window,
|
||||||
options.SystemLanguage,
|
options.SystemLanguage,
|
||||||
options.SystemRegion,
|
options.SystemRegion,
|
||||||
|
|
|
@ -147,7 +147,8 @@ namespace Ryujinx.Input.SDL2
|
||||||
|
|
||||||
public void Rumble(float lowFrequency, float highFrequency, uint durationMs)
|
public void Rumble(float lowFrequency, float highFrequency, uint durationMs)
|
||||||
{
|
{
|
||||||
if (!Features.HasFlag(GamepadFeaturesFlag.Rumble)) return;
|
if (!Features.HasFlag(GamepadFeaturesFlag.Rumble))
|
||||||
|
return;
|
||||||
|
|
||||||
ushort lowFrequencyRaw = (ushort)(lowFrequency * ushort.MaxValue);
|
ushort lowFrequencyRaw = (ushort)(lowFrequency * ushort.MaxValue);
|
||||||
ushort highFrequencyRaw = (ushort)(highFrequency * ushort.MaxValue);
|
ushort highFrequencyRaw = (ushort)(highFrequency * ushort.MaxValue);
|
||||||
|
@ -265,7 +266,8 @@ namespace Ryujinx.Input.SDL2
|
||||||
// ReSharper disable once ForeachCanBePartlyConvertedToQueryUsingAnotherGetEnumerator
|
// ReSharper disable once ForeachCanBePartlyConvertedToQueryUsingAnotherGetEnumerator
|
||||||
foreach (ButtonMappingEntry entry in _buttonsUserMapping)
|
foreach (ButtonMappingEntry entry in _buttonsUserMapping)
|
||||||
{
|
{
|
||||||
if (!entry.IsValid) continue;
|
if (!entry.IsValid)
|
||||||
|
continue;
|
||||||
|
|
||||||
// Do not touch state of button already pressed
|
// Do not touch state of button already pressed
|
||||||
if (!result.IsPressed(entry.To))
|
if (!result.IsPressed(entry.To))
|
||||||
|
|
|
@ -3,6 +3,7 @@ using Ryujinx.Common.Configuration.Hid;
|
||||||
using Ryujinx.Common.Configuration.Multiplayer;
|
using Ryujinx.Common.Configuration.Multiplayer;
|
||||||
using Ryujinx.Common.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.Common.Utilities;
|
using Ryujinx.Common.Utilities;
|
||||||
|
using Ryujinx.HLE;
|
||||||
using Ryujinx.UI.Common.Configuration.System;
|
using Ryujinx.UI.Common.Configuration.System;
|
||||||
using Ryujinx.UI.Common.Configuration.UI;
|
using Ryujinx.UI.Common.Configuration.UI;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -15,7 +16,7 @@ namespace Ryujinx.UI.Common.Configuration
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The current version of the file format
|
/// The current version of the file format
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const int CurrentVersion = 53;
|
public const int CurrentVersion = 54;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Version of the configuration file format
|
/// Version of the configuration file format
|
||||||
|
@ -245,7 +246,7 @@ namespace Ryujinx.UI.Common.Configuration
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Expands the RAM amount on the emulated system from 4GiB to 8GiB
|
/// Expands the RAM amount on the emulated system from 4GiB to 8GiB
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool ExpandRam { get; set; }
|
public MemoryConfiguration DramSize { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Enable or disable ignoring missing services
|
/// Enable or disable ignoring missing services
|
||||||
|
|
|
@ -7,6 +7,7 @@ using Ryujinx.Common.Configuration.Hid.Keyboard;
|
||||||
using Ryujinx.Common.Configuration.Multiplayer;
|
using Ryujinx.Common.Configuration.Multiplayer;
|
||||||
using Ryujinx.Common.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.Graphics.Vulkan;
|
using Ryujinx.Graphics.Vulkan;
|
||||||
|
using Ryujinx.HLE;
|
||||||
using Ryujinx.UI.Common.Configuration.System;
|
using Ryujinx.UI.Common.Configuration.System;
|
||||||
using Ryujinx.UI.Common.Configuration.UI;
|
using Ryujinx.UI.Common.Configuration.UI;
|
||||||
using Ryujinx.UI.Common.Helper;
|
using Ryujinx.UI.Common.Helper;
|
||||||
|
@ -366,7 +367,7 @@ namespace Ryujinx.UI.Common.Configuration
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Defines the amount of RAM available on the emulated system, and how it is distributed
|
/// Defines the amount of RAM available on the emulated system, and how it is distributed
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ReactiveObject<bool> ExpandRam { get; private set; }
|
public ReactiveObject<MemoryConfiguration> DramSize { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Enable or disable ignoring missing services
|
/// Enable or disable ignoring missing services
|
||||||
|
@ -400,8 +401,8 @@ namespace Ryujinx.UI.Common.Configuration
|
||||||
AudioBackend.Event += static (sender, e) => LogValueChange(e, nameof(AudioBackend));
|
AudioBackend.Event += static (sender, e) => LogValueChange(e, nameof(AudioBackend));
|
||||||
MemoryManagerMode = new ReactiveObject<MemoryManagerMode>();
|
MemoryManagerMode = new ReactiveObject<MemoryManagerMode>();
|
||||||
MemoryManagerMode.Event += static (sender, e) => LogValueChange(e, nameof(MemoryManagerMode));
|
MemoryManagerMode.Event += static (sender, e) => LogValueChange(e, nameof(MemoryManagerMode));
|
||||||
ExpandRam = new ReactiveObject<bool>();
|
DramSize = new ReactiveObject<MemoryConfiguration>();
|
||||||
ExpandRam.Event += static (sender, e) => LogValueChange(e, nameof(ExpandRam));
|
DramSize.Event += static (sender, e) => LogValueChange(e, nameof(DramSize));
|
||||||
IgnoreMissingServices = new ReactiveObject<bool>();
|
IgnoreMissingServices = new ReactiveObject<bool>();
|
||||||
IgnoreMissingServices.Event += static (sender, e) => LogValueChange(e, nameof(IgnoreMissingServices));
|
IgnoreMissingServices.Event += static (sender, e) => LogValueChange(e, nameof(IgnoreMissingServices));
|
||||||
AudioVolume = new ReactiveObject<float>();
|
AudioVolume = new ReactiveObject<float>();
|
||||||
|
@ -721,7 +722,7 @@ namespace Ryujinx.UI.Common.Configuration
|
||||||
AudioBackend = System.AudioBackend,
|
AudioBackend = System.AudioBackend,
|
||||||
AudioVolume = System.AudioVolume,
|
AudioVolume = System.AudioVolume,
|
||||||
MemoryManagerMode = System.MemoryManagerMode,
|
MemoryManagerMode = System.MemoryManagerMode,
|
||||||
ExpandRam = System.ExpandRam,
|
DramSize = System.DramSize,
|
||||||
IgnoreMissingServices = System.IgnoreMissingServices,
|
IgnoreMissingServices = System.IgnoreMissingServices,
|
||||||
UseHypervisor = System.UseHypervisor,
|
UseHypervisor = System.UseHypervisor,
|
||||||
GuiColumns = new GuiColumns
|
GuiColumns = new GuiColumns
|
||||||
|
@ -834,7 +835,7 @@ namespace Ryujinx.UI.Common.Configuration
|
||||||
System.AudioBackend.Value = AudioBackend.SDL2;
|
System.AudioBackend.Value = AudioBackend.SDL2;
|
||||||
System.AudioVolume.Value = 1;
|
System.AudioVolume.Value = 1;
|
||||||
System.MemoryManagerMode.Value = MemoryManagerMode.HostMappedUnsafe;
|
System.MemoryManagerMode.Value = MemoryManagerMode.HostMappedUnsafe;
|
||||||
System.ExpandRam.Value = false;
|
System.DramSize.Value = MemoryConfiguration.MemoryConfiguration4GiB;
|
||||||
System.IgnoreMissingServices.Value = false;
|
System.IgnoreMissingServices.Value = false;
|
||||||
System.UseHypervisor.Value = true;
|
System.UseHypervisor.Value = true;
|
||||||
Multiplayer.LanInterfaceId.Value = "0";
|
Multiplayer.LanInterfaceId.Value = "0";
|
||||||
|
@ -1513,6 +1514,15 @@ namespace Ryujinx.UI.Common.Configuration
|
||||||
configurationFileUpdated = true;
|
configurationFileUpdated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (configurationFileFormat.Version < 54)
|
||||||
|
{
|
||||||
|
Ryujinx.Common.Logging.Logger.Warning?.Print(LogClass.Application, $"Outdated configuration version {configurationFileFormat.Version}, migrating to version 54.");
|
||||||
|
|
||||||
|
configurationFileFormat.DramSize = MemoryConfiguration.MemoryConfiguration4GiB;
|
||||||
|
|
||||||
|
configurationFileUpdated = true;
|
||||||
|
}
|
||||||
|
|
||||||
Logger.EnableFileLog.Value = configurationFileFormat.EnableFileLog;
|
Logger.EnableFileLog.Value = configurationFileFormat.EnableFileLog;
|
||||||
Graphics.ResScale.Value = configurationFileFormat.ResScale;
|
Graphics.ResScale.Value = configurationFileFormat.ResScale;
|
||||||
Graphics.ResScaleCustom.Value = configurationFileFormat.ResScaleCustom;
|
Graphics.ResScaleCustom.Value = configurationFileFormat.ResScaleCustom;
|
||||||
|
@ -1559,7 +1569,7 @@ namespace Ryujinx.UI.Common.Configuration
|
||||||
System.AudioBackend.Value = configurationFileFormat.AudioBackend;
|
System.AudioBackend.Value = configurationFileFormat.AudioBackend;
|
||||||
System.AudioVolume.Value = configurationFileFormat.AudioVolume;
|
System.AudioVolume.Value = configurationFileFormat.AudioVolume;
|
||||||
System.MemoryManagerMode.Value = configurationFileFormat.MemoryManagerMode;
|
System.MemoryManagerMode.Value = configurationFileFormat.MemoryManagerMode;
|
||||||
System.ExpandRam.Value = configurationFileFormat.ExpandRam;
|
System.DramSize.Value = configurationFileFormat.DramSize;
|
||||||
System.IgnoreMissingServices.Value = configurationFileFormat.IgnoreMissingServices;
|
System.IgnoreMissingServices.Value = configurationFileFormat.IgnoreMissingServices;
|
||||||
System.UseHypervisor.Value = configurationFileFormat.UseHypervisor;
|
System.UseHypervisor.Value = configurationFileFormat.UseHypervisor;
|
||||||
UI.GuiColumns.FavColumn.Value = configurationFileFormat.GuiColumns.FavColumn;
|
UI.GuiColumns.FavColumn.Value = configurationFileFormat.GuiColumns.FavColumn;
|
||||||
|
|
|
@ -98,7 +98,6 @@ namespace Ryujinx.UI.Common.Helper
|
||||||
if (baseApplicationExtension is not (".nro" or ".nso"))
|
if (baseApplicationExtension is not (".nro" or ".nso"))
|
||||||
return IsFirmwareValid(contentManager, out error);
|
return IsFirmwareValid(contentManager, out error);
|
||||||
|
|
||||||
error = UserError.Success;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
error = UserError.ApplicationNotFound;
|
error = UserError.ApplicationNotFound;
|
||||||
|
|
|
@ -87,7 +87,8 @@ namespace Ryujinx.UI.Common.Helper
|
||||||
|
|
||||||
foreach (string path in titleUpdateMetadata.Paths)
|
foreach (string path in titleUpdateMetadata.Paths)
|
||||||
{
|
{
|
||||||
if (!File.Exists(path)) continue;
|
if (!File.Exists(path))
|
||||||
|
continue;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
@ -845,9 +845,7 @@ namespace Ryujinx.Ava
|
||||||
Logger.Info?.PrintMsg(LogClass.Gpu, $"Backend Threading ({threadingMode}): {isGALThreaded}");
|
Logger.Info?.PrintMsg(LogClass.Gpu, $"Backend Threading ({threadingMode}): {isGALThreaded}");
|
||||||
|
|
||||||
// Initialize Configuration.
|
// Initialize Configuration.
|
||||||
var memoryConfiguration = ConfigurationState.Instance.System.ExpandRam
|
var memoryConfiguration = ConfigurationState.Instance.System.DramSize.Value;
|
||||||
? MemoryConfiguration.MemoryConfiguration8GiB
|
|
||||||
: MemoryConfiguration.MemoryConfiguration4GiB;
|
|
||||||
|
|
||||||
Device = new Switch(new HLEConfiguration(
|
Device = new Switch(new HLEConfiguration(
|
||||||
VirtualFileSystem,
|
VirtualFileSystem,
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "هاكات",
|
"SettingsTabSystemHacks": "هاكات",
|
||||||
"SettingsTabSystemHacksNote": "قد يتسبب في عدم الاستقرار",
|
"SettingsTabSystemHacksNote": "قد يتسبب في عدم الاستقرار",
|
||||||
"SettingsTabSystemExpandDramSize": "استخدام تخطيط الذاكرة البديل (المطورين)",
|
"SettingsTabSystemDramSize": "استخدام تخطيط الذاكرة البديل (المطورين)",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "تجاهل الخدمات المفقودة",
|
"SettingsTabSystemIgnoreMissingServices": "تجاهل الخدمات المفقودة",
|
||||||
"SettingsTabGraphics": "الرسومات",
|
"SettingsTabGraphics": "الرسومات",
|
||||||
"SettingsTabGraphicsAPI": "API الرسومات ",
|
"SettingsTabGraphicsAPI": "API الرسومات ",
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "Hacks",
|
"SettingsTabSystemHacks": "Hacks",
|
||||||
"SettingsTabSystemHacksNote": " (Kann Fehler verursachen)",
|
"SettingsTabSystemHacksNote": " (Kann Fehler verursachen)",
|
||||||
"SettingsTabSystemExpandDramSize": "Erweitere DRAM Größe auf 6GiB",
|
"SettingsTabSystemDramSize": "DRAM Größe:",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "Ignoriere fehlende Dienste",
|
"SettingsTabSystemIgnoreMissingServices": "Ignoriere fehlende Dienste",
|
||||||
"SettingsTabGraphics": "Grafik",
|
"SettingsTabGraphics": "Grafik",
|
||||||
"SettingsTabGraphicsAPI": "Grafik-API",
|
"SettingsTabGraphicsAPI": "Grafik-API",
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "Μικροδιορθώσεις",
|
"SettingsTabSystemHacks": "Μικροδιορθώσεις",
|
||||||
"SettingsTabSystemHacksNote": " (Μπορεί να προκαλέσουν αστάθεια)",
|
"SettingsTabSystemHacksNote": " (Μπορεί να προκαλέσουν αστάθεια)",
|
||||||
"SettingsTabSystemExpandDramSize": "Επέκταση μεγέθους DRAM στα 6GiB",
|
"SettingsTabSystemDramSize": "Μέγεθος DRAM:",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "Αγνόηση υπηρεσιών που λείπουν",
|
"SettingsTabSystemIgnoreMissingServices": "Αγνόηση υπηρεσιών που λείπουν",
|
||||||
"SettingsTabGraphics": "Γραφικά",
|
"SettingsTabGraphics": "Γραφικά",
|
||||||
"SettingsTabGraphicsAPI": "API Γραφικά",
|
"SettingsTabGraphicsAPI": "API Γραφικά",
|
||||||
|
|
|
@ -149,7 +149,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "Hacks",
|
"SettingsTabSystemHacks": "Hacks",
|
||||||
"SettingsTabSystemHacksNote": "May cause instability",
|
"SettingsTabSystemHacksNote": "May cause instability",
|
||||||
"SettingsTabSystemExpandDramSize": "Expand DRAM to 8GiB",
|
"SettingsTabSystemDramSize": "DRAM size:",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "Ignore Missing Services",
|
"SettingsTabSystemIgnoreMissingServices": "Ignore Missing Services",
|
||||||
"SettingsTabGraphics": "Graphics",
|
"SettingsTabGraphics": "Graphics",
|
||||||
"SettingsTabGraphicsAPI": "Graphics API",
|
"SettingsTabGraphicsAPI": "Graphics API",
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "Hacks",
|
"SettingsTabSystemHacks": "Hacks",
|
||||||
"SettingsTabSystemHacksNote": " (Pueden causar inestabilidad)",
|
"SettingsTabSystemHacksNote": " (Pueden causar inestabilidad)",
|
||||||
"SettingsTabSystemExpandDramSize": "Usar diseño alternativo de memoria (Desarrolladores)",
|
"SettingsTabSystemDramSize": "Tamaño DRAM:",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "Ignorar servicios no implementados",
|
"SettingsTabSystemIgnoreMissingServices": "Ignorar servicios no implementados",
|
||||||
"SettingsTabGraphics": "Gráficos",
|
"SettingsTabGraphics": "Gráficos",
|
||||||
"SettingsTabGraphicsAPI": "API de gráficos",
|
"SettingsTabGraphicsAPI": "API de gráficos",
|
||||||
|
|
|
@ -149,7 +149,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "Hacks",
|
"SettingsTabSystemHacks": "Hacks",
|
||||||
"SettingsTabSystemHacksNote": "Cela peut causer des instabilités",
|
"SettingsTabSystemHacksNote": "Cela peut causer des instabilités",
|
||||||
"SettingsTabSystemExpandDramSize": "Étendre la mémoire à 8GiO",
|
"SettingsTabSystemDramSize": "Taille de la DRAM:",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiO",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiO",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiO",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiO",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "Ignorer les services manquants",
|
"SettingsTabSystemIgnoreMissingServices": "Ignorer les services manquants",
|
||||||
"SettingsTabGraphics": "Graphismes",
|
"SettingsTabGraphics": "Graphismes",
|
||||||
"SettingsTabGraphicsAPI": "API Graphique",
|
"SettingsTabGraphicsAPI": "API Graphique",
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "האצות",
|
"SettingsTabSystemHacks": "האצות",
|
||||||
"SettingsTabSystemHacksNote": "עלול לגרום לאי יציבות",
|
"SettingsTabSystemHacksNote": "עלול לגרום לאי יציבות",
|
||||||
"SettingsTabSystemExpandDramSize": "השתמש בפריסת זיכרון חלופית (נועד למפתחים)",
|
"SettingsTabSystemDramSize": "השתמש בפריסת זיכרון חלופית (נועד למפתחים)",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "התעלם משירותים חסרים",
|
"SettingsTabSystemIgnoreMissingServices": "התעלם משירותים חסרים",
|
||||||
"SettingsTabGraphics": "גרפיקה",
|
"SettingsTabGraphics": "גרפיקה",
|
||||||
"SettingsTabGraphicsAPI": "ממשק גראפי",
|
"SettingsTabGraphicsAPI": "ממשק גראפי",
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "Espedienti",
|
"SettingsTabSystemHacks": "Espedienti",
|
||||||
"SettingsTabSystemHacksNote": "Possono causare instabilità",
|
"SettingsTabSystemHacksNote": "Possono causare instabilità",
|
||||||
"SettingsTabSystemExpandDramSize": "Usa layout di memoria alternativo (per sviluppatori)",
|
"SettingsTabSystemDramSize": "Usa layout di memoria alternativo (per sviluppatori)",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "Ignora servizi mancanti",
|
"SettingsTabSystemIgnoreMissingServices": "Ignora servizi mancanti",
|
||||||
"SettingsTabGraphics": "Grafica",
|
"SettingsTabGraphics": "Grafica",
|
||||||
"SettingsTabGraphicsAPI": "API grafica",
|
"SettingsTabGraphicsAPI": "API grafica",
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "ハック",
|
"SettingsTabSystemHacks": "ハック",
|
||||||
"SettingsTabSystemHacksNote": " (挙動が不安定になる可能性があります)",
|
"SettingsTabSystemHacksNote": " (挙動が不安定になる可能性があります)",
|
||||||
"SettingsTabSystemExpandDramSize": "DRAMサイズを6GiBに拡大する",
|
"SettingsTabSystemDramSize": "DRAMサイズ:",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "未実装サービスを無視する",
|
"SettingsTabSystemIgnoreMissingServices": "未実装サービスを無視する",
|
||||||
"SettingsTabGraphics": "グラフィックス",
|
"SettingsTabGraphics": "グラフィックス",
|
||||||
"SettingsTabGraphicsAPI": "グラフィックスAPI",
|
"SettingsTabGraphicsAPI": "グラフィックスAPI",
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "해킹",
|
"SettingsTabSystemHacks": "해킹",
|
||||||
"SettingsTabSystemHacksNote": "불안정성을 유발할 수 있음",
|
"SettingsTabSystemHacksNote": "불안정성을 유발할 수 있음",
|
||||||
"SettingsTabSystemExpandDramSize": "대체 메모리 레이아웃 사용(개발자)",
|
"SettingsTabSystemDramSize": "대체 메모리 레이아웃 사용(개발자)",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "누락된 서비스 무시",
|
"SettingsTabSystemIgnoreMissingServices": "누락된 서비스 무시",
|
||||||
"SettingsTabGraphics": "그래픽",
|
"SettingsTabGraphics": "그래픽",
|
||||||
"SettingsTabGraphicsAPI": "그래픽 API",
|
"SettingsTabGraphicsAPI": "그래픽 API",
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "Hacki",
|
"SettingsTabSystemHacks": "Hacki",
|
||||||
"SettingsTabSystemHacksNote": " (mogą powodować niestabilność)",
|
"SettingsTabSystemHacksNote": " (mogą powodować niestabilność)",
|
||||||
"SettingsTabSystemExpandDramSize": "Użyj alternatywnego układu pamięci (Deweloperzy)",
|
"SettingsTabSystemDramSize": "Użyj alternatywnego układu pamięci (Deweloperzy)",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "Ignoruj Brakujące Usługi",
|
"SettingsTabSystemIgnoreMissingServices": "Ignoruj Brakujące Usługi",
|
||||||
"SettingsTabGraphics": "Grafika",
|
"SettingsTabGraphics": "Grafika",
|
||||||
"SettingsTabGraphicsAPI": "Graficzne API",
|
"SettingsTabGraphicsAPI": "Graficzne API",
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "Hacks",
|
"SettingsTabSystemHacks": "Hacks",
|
||||||
"SettingsTabSystemHacksNote": " (Pode causar instabilidade)",
|
"SettingsTabSystemHacksNote": " (Pode causar instabilidade)",
|
||||||
"SettingsTabSystemExpandDramSize": "Expandir memória para 6GiB",
|
"SettingsTabSystemDramSize": "Tamanho da DRAM:",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "Ignorar serviços não implementados",
|
"SettingsTabSystemIgnoreMissingServices": "Ignorar serviços não implementados",
|
||||||
"SettingsTabGraphics": "Gráficos",
|
"SettingsTabGraphics": "Gráficos",
|
||||||
"SettingsTabGraphicsAPI": "API gráfica",
|
"SettingsTabGraphicsAPI": "API gráfica",
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "Хаки",
|
"SettingsTabSystemHacks": "Хаки",
|
||||||
"SettingsTabSystemHacksNote": "Возможна нестабильная работа",
|
"SettingsTabSystemHacksNote": "Возможна нестабильная работа",
|
||||||
"SettingsTabSystemExpandDramSize": "Использовать альтернативный макет памяти (для разработчиков)",
|
"SettingsTabSystemDramSize": "Использовать альтернативный макет памяти (для разработчиков)",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "Игнорировать отсутствующие службы",
|
"SettingsTabSystemIgnoreMissingServices": "Игнорировать отсутствующие службы",
|
||||||
"SettingsTabGraphics": "Графика",
|
"SettingsTabGraphics": "Графика",
|
||||||
"SettingsTabGraphicsAPI": "Графические API",
|
"SettingsTabGraphicsAPI": "Графические API",
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "แฮ็ก",
|
"SettingsTabSystemHacks": "แฮ็ก",
|
||||||
"SettingsTabSystemHacksNote": "อาจทำให้เกิดข้อผิดพลาดได้",
|
"SettingsTabSystemHacksNote": "อาจทำให้เกิดข้อผิดพลาดได้",
|
||||||
"SettingsTabSystemExpandDramSize": "ใช้รูปแบบหน่วยความจำสำรอง (โหมดนักพัฒนา)",
|
"SettingsTabSystemDramSize": "ใช้รูปแบบหน่วยความจำสำรอง (โหมดนักพัฒนา)",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "ไม่สนใจบริการที่ขาดหายไป",
|
"SettingsTabSystemIgnoreMissingServices": "ไม่สนใจบริการที่ขาดหายไป",
|
||||||
"SettingsTabGraphics": "กราฟิก",
|
"SettingsTabGraphics": "กราฟิก",
|
||||||
"SettingsTabGraphicsAPI": "กราฟฟิก API",
|
"SettingsTabGraphicsAPI": "กราฟฟิก API",
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "Hack'ler",
|
"SettingsTabSystemHacks": "Hack'ler",
|
||||||
"SettingsTabSystemHacksNote": " (dengesizlik oluşturabilir)",
|
"SettingsTabSystemHacksNote": " (dengesizlik oluşturabilir)",
|
||||||
"SettingsTabSystemExpandDramSize": "Alternatif bellek düzeni kullan (Geliştirici)",
|
"SettingsTabSystemDramSize": "Alternatif bellek düzeni kullan (Geliştirici)",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "Eksik Servisleri Görmezden Gel",
|
"SettingsTabSystemIgnoreMissingServices": "Eksik Servisleri Görmezden Gel",
|
||||||
"SettingsTabGraphics": "Grafikler",
|
"SettingsTabGraphics": "Grafikler",
|
||||||
"SettingsTabGraphicsAPI": "Grafikler API",
|
"SettingsTabGraphicsAPI": "Grafikler API",
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "Хитрощі",
|
"SettingsTabSystemHacks": "Хитрощі",
|
||||||
"SettingsTabSystemHacksNote": " (може викликати нестабільність)",
|
"SettingsTabSystemHacksNote": " (може викликати нестабільність)",
|
||||||
"SettingsTabSystemExpandDramSize": "Використовувати альтернативне розташування пам'яті (розробники)",
|
"SettingsTabSystemDramSize": "Використовувати альтернативне розташування пам'яті (розробники)",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "Ігнорувати відсутні служби",
|
"SettingsTabSystemIgnoreMissingServices": "Ігнорувати відсутні служби",
|
||||||
"SettingsTabGraphics": "Графіка",
|
"SettingsTabGraphics": "Графіка",
|
||||||
"SettingsTabGraphicsAPI": "Графічний API",
|
"SettingsTabGraphicsAPI": "Графічний API",
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "修改",
|
"SettingsTabSystemHacks": "修改",
|
||||||
"SettingsTabSystemHacksNote": "会导致模拟器不稳定",
|
"SettingsTabSystemHacksNote": "会导致模拟器不稳定",
|
||||||
"SettingsTabSystemExpandDramSize": "使用开发机的内存布局(开发人员使用)",
|
"SettingsTabSystemDramSize": "使用开发机的内存布局(开发人员使用)",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "忽略缺失的服务",
|
"SettingsTabSystemIgnoreMissingServices": "忽略缺失的服务",
|
||||||
"SettingsTabGraphics": "图形",
|
"SettingsTabGraphics": "图形",
|
||||||
"SettingsTabGraphicsAPI": "图形 API",
|
"SettingsTabGraphicsAPI": "图形 API",
|
||||||
|
|
|
@ -145,7 +145,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "補釘修正",
|
"SettingsTabSystemHacks": "補釘修正",
|
||||||
"SettingsTabSystemHacksNote": "可能導致模擬器不穩定",
|
"SettingsTabSystemHacksNote": "可能導致模擬器不穩定",
|
||||||
"SettingsTabSystemExpandDramSize": "使用替代的記憶體配置 (開發者專用)",
|
"SettingsTabSystemDramSize": "使用替代的記憶體配置 (開發者專用)",
|
||||||
|
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||||
|
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||||
|
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||||
|
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "忽略缺少的模擬器功能",
|
"SettingsTabSystemIgnoreMissingServices": "忽略缺少的模擬器功能",
|
||||||
"SettingsTabGraphics": "圖形",
|
"SettingsTabGraphics": "圖形",
|
||||||
"SettingsTabGraphicsAPI": "圖形 API",
|
"SettingsTabGraphicsAPI": "圖形 API",
|
||||||
|
|
|
@ -21,7 +21,8 @@ namespace Ryujinx.Ava.Common.Locale
|
||||||
new CompiledBindingPathBuilder()
|
new CompiledBindingPathBuilder()
|
||||||
.Property(PropertyInfo, PropertyInfoAccessorFactory.CreateInpcPropertyAccessor)
|
.Property(PropertyInfo, PropertyInfoAccessorFactory.CreateInpcPropertyAccessor)
|
||||||
.Build()
|
.Build()
|
||||||
) { Source = LocaleManager.Instance }
|
)
|
||||||
|
{ Source = LocaleManager.Instance }
|
||||||
.ProvideValue(serviceProvider);
|
.ProvideValue(serviceProvider);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,15 +73,15 @@ namespace Ryujinx.Ava
|
||||||
EnableIme = true,
|
EnableIme = true,
|
||||||
EnableInputFocusProxy = Environment.GetEnvironmentVariable("XDG_CURRENT_DESKTOP") == "gamescope",
|
EnableInputFocusProxy = Environment.GetEnvironmentVariable("XDG_CURRENT_DESKTOP") == "gamescope",
|
||||||
RenderingMode = UseHardwareAcceleration
|
RenderingMode = UseHardwareAcceleration
|
||||||
? [ X11RenderingMode.Glx, X11RenderingMode.Software ]
|
? [X11RenderingMode.Glx, X11RenderingMode.Software]
|
||||||
: [ X11RenderingMode.Software ],
|
: [X11RenderingMode.Software],
|
||||||
})
|
})
|
||||||
.With(new Win32PlatformOptions
|
.With(new Win32PlatformOptions
|
||||||
{
|
{
|
||||||
WinUICompositionBackdropCornerRadius = 8.0f,
|
WinUICompositionBackdropCornerRadius = 8.0f,
|
||||||
RenderingMode = UseHardwareAcceleration
|
RenderingMode = UseHardwareAcceleration
|
||||||
? [ Win32RenderingMode.AngleEgl, Win32RenderingMode.Software ]
|
? [Win32RenderingMode.AngleEgl, Win32RenderingMode.Software]
|
||||||
: [ Win32RenderingMode.Software ],
|
: [Win32RenderingMode.Software],
|
||||||
});
|
});
|
||||||
|
|
||||||
private static void Initialize(string[] args)
|
private static void Initialize(string[] args)
|
||||||
|
|
|
@ -45,7 +45,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||||
|
|
||||||
private PlayerIndex _playerId;
|
private PlayerIndex _playerId;
|
||||||
private int _controller;
|
private int _controller;
|
||||||
private int _controllerNumber;
|
private readonly int _controllerNumber;
|
||||||
private string _controllerImage;
|
private string _controllerImage;
|
||||||
private int _device;
|
private int _device;
|
||||||
private object _configViewModel;
|
private object _configViewModel;
|
||||||
|
|
|
@ -14,6 +14,7 @@ using Ryujinx.Common.Configuration.Multiplayer;
|
||||||
using Ryujinx.Common.GraphicsDriver;
|
using Ryujinx.Common.GraphicsDriver;
|
||||||
using Ryujinx.Common.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.Graphics.Vulkan;
|
using Ryujinx.Graphics.Vulkan;
|
||||||
|
using Ryujinx.HLE;
|
||||||
using Ryujinx.HLE.FileSystem;
|
using Ryujinx.HLE.FileSystem;
|
||||||
using Ryujinx.HLE.HOS.Services.Time.TimeZone;
|
using Ryujinx.HLE.HOS.Services.Time.TimeZone;
|
||||||
using Ryujinx.UI.Common.Configuration;
|
using Ryujinx.UI.Common.Configuration;
|
||||||
|
@ -154,7 +155,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
public bool EnableInternetAccess { get; set; }
|
public bool EnableInternetAccess { get; set; }
|
||||||
public bool EnableFsIntegrityChecks { get; set; }
|
public bool EnableFsIntegrityChecks { get; set; }
|
||||||
public bool IgnoreMissingServices { get; set; }
|
public bool IgnoreMissingServices { get; set; }
|
||||||
public bool ExpandDramSize { get; set; }
|
public MemoryConfiguration DramSize { get; set; }
|
||||||
public bool EnableShaderCache { get; set; }
|
public bool EnableShaderCache { get; set; }
|
||||||
public bool EnableTextureRecompression { get; set; }
|
public bool EnableTextureRecompression { get; set; }
|
||||||
public bool EnableMacroHLE { get; set; }
|
public bool EnableMacroHLE { get; set; }
|
||||||
|
@ -444,7 +445,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
|
||||||
EnableVsync = config.Graphics.EnableVsync;
|
EnableVsync = config.Graphics.EnableVsync;
|
||||||
EnableFsIntegrityChecks = config.System.EnableFsIntegrityChecks;
|
EnableFsIntegrityChecks = config.System.EnableFsIntegrityChecks;
|
||||||
ExpandDramSize = config.System.ExpandRam;
|
DramSize = config.System.DramSize;
|
||||||
IgnoreMissingServices = config.System.IgnoreMissingServices;
|
IgnoreMissingServices = config.System.IgnoreMissingServices;
|
||||||
|
|
||||||
// CPU
|
// CPU
|
||||||
|
@ -545,7 +546,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
config.System.SystemTimeOffset.Value = Convert.ToInt64((CurrentDate.ToUnixTimeSeconds() + CurrentTime.TotalSeconds) - DateTimeOffset.Now.ToUnixTimeSeconds());
|
config.System.SystemTimeOffset.Value = Convert.ToInt64((CurrentDate.ToUnixTimeSeconds() + CurrentTime.TotalSeconds) - DateTimeOffset.Now.ToUnixTimeSeconds());
|
||||||
config.Graphics.EnableVsync.Value = EnableVsync;
|
config.Graphics.EnableVsync.Value = EnableVsync;
|
||||||
config.System.EnableFsIntegrityChecks.Value = EnableFsIntegrityChecks;
|
config.System.EnableFsIntegrityChecks.Value = EnableFsIntegrityChecks;
|
||||||
config.System.ExpandRam.Value = ExpandDramSize;
|
config.System.DramSize.Value = DramSize;
|
||||||
config.System.IgnoreMissingServices.Value = IgnoreMissingServices;
|
config.System.IgnoreMissingServices.Value = IgnoreMissingServices;
|
||||||
|
|
||||||
// CPU
|
// CPU
|
||||||
|
|
|
@ -186,7 +186,8 @@ namespace Ryujinx.Ava.UI.Views.Main
|
||||||
|
|
||||||
private async void ChangeWindowSize_Click(object sender, RoutedEventArgs e)
|
private async void ChangeWindowSize_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (sender is not MenuItem { Tag: string resolution }) return;
|
if (sender is not MenuItem { Tag: string resolution })
|
||||||
|
return;
|
||||||
|
|
||||||
(int height, int width) = resolution.Split(' ')
|
(int height, int width) = resolution.Split(' ')
|
||||||
.Into(parts => (int.Parse(parts[0]), int.Parse(parts[1])));
|
.Into(parts => (int.Parse(parts[0]), int.Parse(parts[1])));
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<UserControl
|
<UserControl
|
||||||
x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsSystemView"
|
x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsSystemView"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
@ -203,15 +203,36 @@
|
||||||
Foreground="{DynamicResource SecondaryTextColor}"
|
Foreground="{DynamicResource SecondaryTextColor}"
|
||||||
Text="{locale:Locale SettingsTabSystemHacksNote}" />
|
Text="{locale:Locale SettingsTabSystemHacksNote}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Margin="10,0,0,0"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale SettingsTabSystemDramSize}"
|
||||||
|
Width="250" />
|
||||||
|
<ComboBox
|
||||||
|
SelectedIndex="{Binding DramSize}"
|
||||||
|
ToolTip.Tip="{locale:Locale DRamTooltip}"
|
||||||
|
HorizontalContentAlignment="Left"
|
||||||
|
Width="350">
|
||||||
|
<ComboBoxItem>
|
||||||
|
<TextBlock Text="{locale:Locale SettingsTabSystemDramSize4GiB}" />
|
||||||
|
</ComboBoxItem>
|
||||||
|
<ComboBoxItem>
|
||||||
|
<TextBlock Text="{locale:Locale SettingsTabSystemDramSize6GiB}" />
|
||||||
|
</ComboBoxItem>
|
||||||
|
<ComboBoxItem>
|
||||||
|
<TextBlock Text="{locale:Locale SettingsTabSystemDramSize8GiB}" />
|
||||||
|
</ComboBoxItem>
|
||||||
|
<ComboBoxItem>
|
||||||
|
<TextBlock Text="{locale:Locale SettingsTabSystemDramSize12GiB}" />
|
||||||
|
</ComboBoxItem>
|
||||||
|
</ComboBox>
|
||||||
|
</StackPanel>
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Margin="10,0,0,0"
|
Margin="10,0,0,0"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
Orientation="Vertical">
|
Orientation="Vertical">
|
||||||
<CheckBox
|
|
||||||
IsChecked="{Binding ExpandDramSize}"
|
|
||||||
ToolTip.Tip="{locale:Locale DRamTooltip}">
|
|
||||||
<TextBlock Text="{locale:Locale SettingsTabSystemExpandDramSize}" />
|
|
||||||
</CheckBox>
|
|
||||||
<CheckBox
|
<CheckBox
|
||||||
IsChecked="{Binding IgnoreMissingServices}"
|
IsChecked="{Binding IgnoreMissingServices}"
|
||||||
ToolTip.Tip="{locale:Locale IgnoreMissingServicesTooltip}">
|
ToolTip.Tip="{locale:Locale IgnoreMissingServicesTooltip}">
|
||||||
|
|
|
@ -665,7 +665,8 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
? string.Format(LocaleManager.Instance[LocaleKeys.AutoloadUpdateAddedMessage], numUpdatesAdded)
|
? string.Format(LocaleManager.Instance[LocaleKeys.AutoloadUpdateAddedMessage], numUpdatesAdded)
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
if (msg is null) return;
|
if (msg is null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
Dispatcher.UIThread.InvokeAsync(async () =>
|
Dispatcher.UIThread.InvokeAsync(async () =>
|
||||||
|
|
Loading…
Reference in a new issue