mirror of
https://github.com/GreemDev/Ryujinx.git
synced 2024-12-22 18:05: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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,10 +7,10 @@ namespace Ryujinx.Common
|
||||||
public static T AlignUp<T>(T value, T size) where T : IBinaryInteger<T>
|
public static T AlignUp<T>(T value, T size) where T : IBinaryInteger<T>
|
||||||
=> (value + (size - T.One)) & -size;
|
=> (value + (size - T.One)) & -size;
|
||||||
|
|
||||||
public static T AlignDown<T>(T value, T size) where T : IBinaryInteger<T>
|
public static T AlignDown<T>(T value, T size) where T : IBinaryInteger<T>
|
||||||
=> value & -size;
|
=> value & -size;
|
||||||
|
|
||||||
public static T DivRoundUp<T>(T value, T dividend) where T : IBinaryInteger<T>
|
public static T DivRoundUp<T>(T value, T dividend) where T : IBinaryInteger<T>
|
||||||
=> (value + (dividend - T.One)) / dividend;
|
=> (value + (dividend - T.One)) / dividend;
|
||||||
|
|
||||||
public static int Pow2RoundDown(int value) => BitOperations.IsPow2(value) ? value : Pow2RoundUp(value) >> 1;
|
public static int Pow2RoundDown(int value) => BitOperations.IsPow2(value) ? value : Pow2RoundUp(value) >> 1;
|
||||||
|
|
|
@ -72,7 +72,7 @@ namespace Ryujinx.Graphics.Nvdec.FFmpeg.H264
|
||||||
Flush();
|
Flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
public readonly Span<byte> AsSpan()
|
public readonly Span<byte> AsSpan()
|
||||||
=> new Span<byte>(workBuffer)[.._offset];
|
=> new Span<byte>(workBuffer)[.._offset];
|
||||||
|
|
||||||
public void WriteU(uint value, int valueSize) => WriteBits((int)value, valueSize);
|
public void WriteU(uint value, int valueSize) => WriteBits((int)value, valueSize);
|
||||||
|
|
|
@ -114,7 +114,7 @@ namespace Ryujinx.Graphics.Texture
|
||||||
_height == other._height &&
|
_height == other._height &&
|
||||||
_stride == other._stride &&
|
_stride == other._stride &&
|
||||||
_bytesPerPixel == other._bytesPerPixel;
|
_bytesPerPixel == other._bytesPerPixel;
|
||||||
|
|
||||||
|
|
||||||
return !other._isLinear && _layoutConverter.LayoutMatches(other._layoutConverter);
|
return !other._isLinear && _layoutConverter.LayoutMatches(other._layoutConverter);
|
||||||
}
|
}
|
||||||
|
|
|
@ -589,12 +589,12 @@ namespace Ryujinx.HLE.FileSystem
|
||||||
// So, we check it early for a better user experience.
|
// So, we check it early for a better user experience.
|
||||||
if (_virtualFileSystem.KeySet.HeaderKey.IsZeros())
|
if (_virtualFileSystem.KeySet.HeaderKey.IsZeros())
|
||||||
throw new MissingKeyException("HeaderKey is empty. Cannot decrypt NCA headers.");
|
throw new MissingKeyException("HeaderKey is empty. Cannot decrypt NCA headers.");
|
||||||
|
|
||||||
Dictionary<ulong, List<(NcaContentType type, string path)>> updateNcas = new();
|
Dictionary<ulong, List<(NcaContentType type, string path)>> updateNcas = new();
|
||||||
|
|
||||||
if (Directory.Exists(firmwarePackage))
|
if (Directory.Exists(firmwarePackage))
|
||||||
return VerifyAndGetVersionDirectory(firmwarePackage);
|
return VerifyAndGetVersionDirectory(firmwarePackage);
|
||||||
|
|
||||||
if (!File.Exists(firmwarePackage))
|
if (!File.Exists(firmwarePackage))
|
||||||
throw new FileNotFoundException("Firmware file does not exist.");
|
throw new FileNotFoundException("Firmware file does not exist.");
|
||||||
|
|
||||||
|
@ -620,7 +620,7 @@ namespace Ryujinx.HLE.FileSystem
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
SystemVersion VerifyAndGetVersionDirectory(string firmwareDirectory)
|
SystemVersion VerifyAndGetVersionDirectory(string firmwareDirectory)
|
||||||
=> VerifyAndGetVersion(new LocalFileSystem(firmwareDirectory));
|
=> VerifyAndGetVersion(new LocalFileSystem(firmwareDirectory));
|
||||||
|
|
||||||
SystemVersion VerifyAndGetVersionZip(ZipArchive archive)
|
SystemVersion VerifyAndGetVersionZip(ZipArchive archive)
|
||||||
|
|
|
@ -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}\"."),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ namespace Ryujinx.Headless.SDL2
|
||||||
public bool TextProcessingEnabled
|
public bool TextProcessingEnabled
|
||||||
{
|
{
|
||||||
get => Volatile.Read(ref _canProcessInput);
|
get => Volatile.Read(ref _canProcessInput);
|
||||||
|
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
Volatile.Write(ref _canProcessInput, value);
|
Volatile.Write(ref _canProcessInput, value);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -14,8 +14,8 @@ namespace Ryujinx.UI.Common
|
||||||
public static class DiscordIntegrationModule
|
public static class DiscordIntegrationModule
|
||||||
{
|
{
|
||||||
public static Timestamps StartedAt { get; set; }
|
public static Timestamps StartedAt { get; set; }
|
||||||
|
|
||||||
private static readonly string _description = ReleaseInformation.IsValid
|
private static readonly string _description = ReleaseInformation.IsValid
|
||||||
? $"v{ReleaseInformation.Version} {ReleaseInformation.ReleaseChannelOwner}/{ReleaseInformation.ReleaseChannelRepo}@{ReleaseInformation.BuildGitHash}"
|
? $"v{ReleaseInformation.Version} {ReleaseInformation.ReleaseChannelOwner}/{ReleaseInformation.ReleaseChannelRepo}@{ReleaseInformation.BuildGitHash}"
|
||||||
: "dev build";
|
: "dev build";
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ namespace Ryujinx.UI.Common
|
||||||
},
|
},
|
||||||
Details = TruncateToByteLength($"Playing {appMeta.Title}"),
|
Details = TruncateToByteLength($"Playing {appMeta.Title}"),
|
||||||
State = appMeta.LastPlayed.HasValue && appMeta.TimePlayed.TotalSeconds > 5
|
State = appMeta.LastPlayed.HasValue && appMeta.TimePlayed.TotalSeconds > 5
|
||||||
? $"Total play time: {appMeta.TimePlayed.Humanize(2, false)}"
|
? $"Total play time: {appMeta.TimePlayed.Humanize(2, false)}"
|
||||||
: "Never played",
|
: "Never played",
|
||||||
Timestamps = Timestamps.Now
|
Timestamps = Timestamps.Now
|
||||||
});
|
});
|
||||||
|
@ -120,7 +120,7 @@ namespace Ryujinx.UI.Common
|
||||||
_discordClient?.Dispose();
|
_discordClient?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static readonly string[] _discordGameAssetKeys =
|
private static readonly string[] _discordGameAssetKeys =
|
||||||
[
|
[
|
||||||
"01002da013484000", // The Legend of Zelda: Skyward Sword HD
|
"01002da013484000", // The Legend of Zelda: Skyward Sword HD
|
||||||
"01007ef00011e000", // The Legend of Zelda: Breath of the Wild
|
"01007ef00011e000", // The Legend of Zelda: Breath of the Wild
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -9,7 +9,7 @@ namespace Ryujinx.UI.Common.Helper
|
||||||
{
|
{
|
||||||
if (activeProcess == null)
|
if (activeProcess == null)
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
|
|
||||||
string titleNameSection = string.IsNullOrWhiteSpace(activeProcess.Name) ? string.Empty : $" {activeProcess.Name}";
|
string titleNameSection = string.IsNullOrWhiteSpace(activeProcess.Name) ? string.Empty : $" {activeProcess.Name}";
|
||||||
string titleVersionSection = string.IsNullOrWhiteSpace(activeProcess.DisplayVersion) ? string.Empty : $" v{activeProcess.DisplayVersion}";
|
string titleVersionSection = string.IsNullOrWhiteSpace(activeProcess.DisplayVersion) ? string.Empty : $" v{activeProcess.DisplayVersion}";
|
||||||
string titleIdSection = $" ({activeProcess.ProgramIdText.ToUpper()})";
|
string titleIdSection = $" ({activeProcess.ProgramIdText.ToUpper()})";
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
@ -104,7 +105,7 @@ namespace Ryujinx.UI.Common.Helper
|
||||||
|
|
||||||
if (controlNca is null || patchNca is null)
|
if (controlNca is null || patchNca is null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ApplicationControlProperty controlData = new();
|
ApplicationControlProperty controlData = new();
|
||||||
|
|
||||||
using UniqueRef<IFile> nacpFile = new();
|
using UniqueRef<IFile> nacpFile = new();
|
||||||
|
@ -144,7 +145,7 @@ namespace Ryujinx.UI.Common.Helper
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string PathToGameUpdatesJson(ulong applicationIdBase)
|
private static string PathToGameUpdatesJson(ulong applicationIdBase)
|
||||||
=> Path.Combine(AppDataManager.GamesDirPath, applicationIdBase.ToString("x16"), "updates.json");
|
=> Path.Combine(AppDataManager.GamesDirPath, applicationIdBase.ToString("x16"), "updates.json");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,10 +34,10 @@ namespace Ryujinx.UI.Common.SystemInfo
|
||||||
{
|
{
|
||||||
if (OperatingSystem.IsWindows())
|
if (OperatingSystem.IsWindows())
|
||||||
return new WindowsSystemInfo();
|
return new WindowsSystemInfo();
|
||||||
|
|
||||||
if (OperatingSystem.IsLinux())
|
if (OperatingSystem.IsLinux())
|
||||||
return new LinuxSystemInfo();
|
return new LinuxSystemInfo();
|
||||||
|
|
||||||
if (OperatingSystem.IsMacOS())
|
if (OperatingSystem.IsMacOS())
|
||||||
return new MacOSSystemInfo();
|
return new MacOSSystemInfo();
|
||||||
|
|
||||||
|
|
|
@ -22,8 +22,8 @@ namespace Ryujinx.Ava
|
||||||
public class App : Application
|
public class App : Application
|
||||||
{
|
{
|
||||||
internal static string FormatTitle(LocaleKeys? windowTitleKey = null)
|
internal static string FormatTitle(LocaleKeys? windowTitleKey = null)
|
||||||
=> windowTitleKey is null
|
=> windowTitleKey is null
|
||||||
? $"Ryujinx {Program.Version}"
|
? $"Ryujinx {Program.Version}"
|
||||||
: $"Ryujinx {Program.Version} - {LocaleManager.Instance[windowTitleKey.Value]}";
|
: $"Ryujinx {Program.Version} - {LocaleManager.Instance[windowTitleKey.Value]}";
|
||||||
|
|
||||||
public static MainWindow MainWindow => Current!
|
public static MainWindow MainWindow => Current!
|
||||||
|
|
|
@ -541,7 +541,7 @@ namespace Ryujinx.Ava
|
||||||
{
|
{
|
||||||
if (Device.Processes != null)
|
if (Device.Processes != null)
|
||||||
MainWindowViewModel.UpdateGameMetadata(Device.Processes.ActiveApplication.ProgramIdText);
|
MainWindowViewModel.UpdateGameMetadata(Device.Processes.ActiveApplication.ProgramIdText);
|
||||||
|
|
||||||
|
|
||||||
ConfigurationState.Instance.System.IgnoreMissingServices.Event -= UpdateIgnoreMissingServicesState;
|
ConfigurationState.Instance.System.IgnoreMissingServices.Event -= UpdateIgnoreMissingServicesState;
|
||||||
ConfigurationState.Instance.Graphics.AspectRatio.Event -= UpdateAspectRatioState;
|
ConfigurationState.Instance.Graphics.AspectRatio.Event -= UpdateAspectRatioState;
|
||||||
|
@ -786,7 +786,7 @@ namespace Ryujinx.Ava
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ApplicationMetadata appMeta = ApplicationLibrary.LoadAndSaveMetaData(Device.Processes.ActiveApplication.ProgramIdText,
|
ApplicationMetadata appMeta = ApplicationLibrary.LoadAndSaveMetaData(Device.Processes.ActiveApplication.ProgramIdText,
|
||||||
appMetadata => appMetadata.UpdatePreGame()
|
appMetadata => appMetadata.UpdatePreGame()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
@ -867,7 +865,7 @@ namespace Ryujinx.Ava
|
||||||
ConfigurationState.Instance.System.EnableInternetAccess,
|
ConfigurationState.Instance.System.EnableInternetAccess,
|
||||||
ConfigurationState.Instance.System.EnableFsIntegrityChecks ? IntegrityCheckLevel.ErrorOnInvalid : IntegrityCheckLevel.None,
|
ConfigurationState.Instance.System.EnableFsIntegrityChecks ? IntegrityCheckLevel.ErrorOnInvalid : IntegrityCheckLevel.None,
|
||||||
ConfigurationState.Instance.System.FsGlobalAccessLogMode,
|
ConfigurationState.Instance.System.FsGlobalAccessLogMode,
|
||||||
ConfigurationState.Instance.System.SystemTimeOffset,
|
ConfigurationState.Instance.System.SystemTimeOffset,
|
||||||
ConfigurationState.Instance.System.TimeZone,
|
ConfigurationState.Instance.System.TimeZone,
|
||||||
ConfigurationState.Instance.System.MemoryManagerMode,
|
ConfigurationState.Instance.System.MemoryManagerMode,
|
||||||
ConfigurationState.Instance.System.IgnoreMissingServices,
|
ConfigurationState.Instance.System.IgnoreMissingServices,
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,8 +80,8 @@ namespace Ryujinx.Ava.Common.Locale
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the locale doesn't contain the key return the default one.
|
// If the locale doesn't contain the key return the default one.
|
||||||
return _localeDefaultStrings.TryGetValue(key, out string defaultValue)
|
return _localeDefaultStrings.TryGetValue(key, out string defaultValue)
|
||||||
? defaultValue
|
? defaultValue
|
||||||
: key.ToString(); // If the locale text doesn't exist return the key.
|
: key.ToString(); // If the locale text doesn't exist return the key.
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
|
|
|
@ -72,23 +72,23 @@ namespace Ryujinx.Ava
|
||||||
EnableMultiTouch = true,
|
EnableMultiTouch = true,
|
||||||
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)
|
||||||
{
|
{
|
||||||
// Ensure Discord presence timestamp begins at the absolute start of when Ryujinx is launched
|
// Ensure Discord presence timestamp begins at the absolute start of when Ryujinx is launched
|
||||||
DiscordIntegrationModule.StartedAt = Timestamps.Now;
|
DiscordIntegrationModule.StartedAt = Timestamps.Now;
|
||||||
|
|
||||||
// Parse arguments
|
// Parse arguments
|
||||||
CommandLineState.ParseArguments(args);
|
CommandLineState.ParseArguments(args);
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@ namespace Ryujinx.Ava
|
||||||
// Check if docked mode was overriden.
|
// Check if docked mode was overriden.
|
||||||
if (CommandLineState.OverrideDockedMode.HasValue)
|
if (CommandLineState.OverrideDockedMode.HasValue)
|
||||||
ConfigurationState.Instance.System.EnableDockedMode.Value = CommandLineState.OverrideDockedMode.Value;
|
ConfigurationState.Instance.System.EnableDockedMode.Value = CommandLineState.OverrideDockedMode.Value;
|
||||||
|
|
||||||
|
|
||||||
// Check if HideCursor was overridden.
|
// Check if HideCursor was overridden.
|
||||||
if (CommandLineState.OverrideHideCursor is not null)
|
if (CommandLineState.OverrideHideCursor is not null)
|
||||||
|
@ -214,7 +214,7 @@ namespace Ryujinx.Ava
|
||||||
"always" => HideCursorMode.Always,
|
"always" => HideCursorMode.Always,
|
||||||
_ => ConfigurationState.Instance.HideCursor,
|
_ => ConfigurationState.Instance.HideCursor,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Check if hardware-acceleration was overridden.
|
// Check if hardware-acceleration was overridden.
|
||||||
if (CommandLineState.OverrideHardwareAcceleration != null)
|
if (CommandLineState.OverrideHardwareAcceleration != null)
|
||||||
|
|
|
@ -136,7 +136,7 @@ namespace Ryujinx.Ava.UI.Applet
|
||||||
_hiddenTextBox.CaretIndex = cursorBegin;
|
_hiddenTextBox.CaretIndex = cursorBegin;
|
||||||
});
|
});
|
||||||
|
|
||||||
public void SetText(string text, int cursorBegin, int cursorEnd) =>
|
public void SetText(string text, int cursorBegin, int cursorEnd) =>
|
||||||
Dispatcher.UIThread.Post(() =>
|
Dispatcher.UIThread.Post(() =>
|
||||||
{
|
{
|
||||||
_hiddenTextBox.Text = text;
|
_hiddenTextBox.Text = text;
|
||||||
|
|
|
@ -224,7 +224,7 @@ namespace Ryujinx.Ava.UI.Controls
|
||||||
{
|
{
|
||||||
if (sender is not MenuItem { DataContext: MainWindowViewModel { SelectedApplication: not null } viewModel })
|
if (sender is not MenuItem { DataContext: MainWindowViewModel { SelectedApplication: not null } viewModel })
|
||||||
return;
|
return;
|
||||||
|
|
||||||
string ptcDir = Path.Combine(AppDataManager.GamesDirPath, viewModel.SelectedApplication.IdString, "cache", "cpu");
|
string ptcDir = Path.Combine(AppDataManager.GamesDirPath, viewModel.SelectedApplication.IdString, "cache", "cpu");
|
||||||
string mainDir = Path.Combine(ptcDir, "0");
|
string mainDir = Path.Combine(ptcDir, "0");
|
||||||
string backupDir = Path.Combine(ptcDir, "1");
|
string backupDir = Path.Combine(ptcDir, "1");
|
||||||
|
|
|
@ -199,7 +199,7 @@ namespace Ryujinx.Ava.UI.Helpers
|
||||||
string secondaryText,
|
string secondaryText,
|
||||||
string acceptButton,
|
string acceptButton,
|
||||||
string closeButton,
|
string closeButton,
|
||||||
string title)
|
string title)
|
||||||
=> ShowTextDialog(
|
=> ShowTextDialog(
|
||||||
title,
|
title,
|
||||||
primary,
|
primary,
|
||||||
|
@ -215,7 +215,7 @@ namespace Ryujinx.Ava.UI.Helpers
|
||||||
string acceptButtonText,
|
string acceptButtonText,
|
||||||
string cancelButtonText,
|
string cancelButtonText,
|
||||||
string title,
|
string title,
|
||||||
UserResult primaryButtonResult = UserResult.Yes)
|
UserResult primaryButtonResult = UserResult.Yes)
|
||||||
=> await ShowTextDialog(
|
=> await ShowTextDialog(
|
||||||
string.IsNullOrWhiteSpace(title) ? LocaleManager.Instance[LocaleKeys.DialogConfirmationTitle] : title,
|
string.IsNullOrWhiteSpace(title) ? LocaleManager.Instance[LocaleKeys.DialogConfirmationTitle] : title,
|
||||||
primaryText,
|
primaryText,
|
||||||
|
@ -226,7 +226,7 @@ namespace Ryujinx.Ava.UI.Helpers
|
||||||
(int)Symbol.Help,
|
(int)Symbol.Help,
|
||||||
primaryButtonResult);
|
primaryButtonResult);
|
||||||
|
|
||||||
internal static async Task<UserResult> CreateLocalizedConfirmationDialog(string primaryText, string secondaryText)
|
internal static async Task<UserResult> CreateLocalizedConfirmationDialog(string primaryText, string secondaryText)
|
||||||
=> await CreateConfirmationDialog(
|
=> await CreateConfirmationDialog(
|
||||||
primaryText,
|
primaryText,
|
||||||
secondaryText,
|
secondaryText,
|
||||||
|
@ -234,7 +234,7 @@ namespace Ryujinx.Ava.UI.Helpers
|
||||||
LocaleManager.Instance[LocaleKeys.InputDialogNo],
|
LocaleManager.Instance[LocaleKeys.InputDialogNo],
|
||||||
LocaleManager.Instance[LocaleKeys.RyujinxConfirm]);
|
LocaleManager.Instance[LocaleKeys.RyujinxConfirm]);
|
||||||
|
|
||||||
internal static async Task CreateUpdaterInfoDialog(string primary, string secondaryText)
|
internal static async Task CreateUpdaterInfoDialog(string primary, string secondaryText)
|
||||||
=> await ShowTextDialog(
|
=> await ShowTextDialog(
|
||||||
LocaleManager.Instance[LocaleKeys.DialogUpdaterTitle],
|
LocaleManager.Instance[LocaleKeys.DialogUpdaterTitle],
|
||||||
primary,
|
primary,
|
||||||
|
@ -244,7 +244,7 @@ namespace Ryujinx.Ava.UI.Helpers
|
||||||
LocaleManager.Instance[LocaleKeys.InputDialogOk],
|
LocaleManager.Instance[LocaleKeys.InputDialogOk],
|
||||||
(int)Symbol.Important);
|
(int)Symbol.Important);
|
||||||
|
|
||||||
internal static async Task CreateWarningDialog(string primary, string secondaryText)
|
internal static async Task CreateWarningDialog(string primary, string secondaryText)
|
||||||
=> await ShowTextDialog(
|
=> await ShowTextDialog(
|
||||||
LocaleManager.Instance[LocaleKeys.DialogWarningTitle],
|
LocaleManager.Instance[LocaleKeys.DialogWarningTitle],
|
||||||
primary,
|
primary,
|
||||||
|
|
|
@ -39,8 +39,8 @@ namespace Ryujinx.Ava.UI.Helpers
|
||||||
|
|
||||||
await ContentDialogHelper.CreateInfoDialog(
|
await ContentDialogHelper.CreateInfoDialog(
|
||||||
LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogUserErrorDialogMessage, errorCode, GetErrorTitle(error)),
|
LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogUserErrorDialogMessage, errorCode, GetErrorTitle(error)),
|
||||||
GetErrorDescription(error),
|
GetErrorDescription(error),
|
||||||
"",
|
"",
|
||||||
LocaleManager.Instance[LocaleKeys.InputDialogOk],
|
LocaleManager.Instance[LocaleKeys.InputDialogOk],
|
||||||
LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogUserErrorDialogTitle, errorCode));
|
LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogUserErrorDialogTitle, errorCode));
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -913,7 +913,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
|
||||||
public KeyGesture PauseKey
|
public KeyGesture PauseKey
|
||||||
{
|
{
|
||||||
get => KeyGesture.Parse(_pauseKey);
|
get => KeyGesture.Parse(_pauseKey);
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_pauseKey = value.ToString();
|
_pauseKey = value.ToString();
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -143,14 +143,14 @@ namespace Ryujinx.Ava.UI.Views.Main
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async void OpenAmiiboWindow(object sender, RoutedEventArgs e)
|
public async void OpenAmiiboWindow(object sender, RoutedEventArgs e)
|
||||||
=> await ViewModel.OpenAmiiboWindow();
|
=> await ViewModel.OpenAmiiboWindow();
|
||||||
|
|
||||||
public async void OpenCheatManagerForCurrentApp(object sender, RoutedEventArgs e)
|
public async void OpenCheatManagerForCurrentApp(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (!ViewModel.IsGameRunning)
|
if (!ViewModel.IsGameRunning)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
string name = ViewModel.AppHost.Device.Processes.ActiveApplication.ApplicationControlProperties.Title[(int)ViewModel.AppHost.Device.System.State.DesiredTitleLanguage].NameString.ToString();
|
string name = ViewModel.AppHost.Device.Processes.ActiveApplication.ApplicationControlProperties.Title[(int)ViewModel.AppHost.Device.System.State.DesiredTitleLanguage].NameString.ToString();
|
||||||
|
|
||||||
await new CheatWindow(
|
await new CheatWindow(
|
||||||
|
@ -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}">
|
||||||
|
@ -221,4 +242,4 @@
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Border>
|
</Border>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|
|
@ -83,7 +83,7 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
|
|
||||||
TitleBar.ExtendsContentIntoTitleBar = true;
|
TitleBar.ExtendsContentIntoTitleBar = true;
|
||||||
TitleBar.TitleBarHitTestType = TitleBarHitTestType.Complex;
|
TitleBar.TitleBarHitTestType = TitleBarHitTestType.Complex;
|
||||||
|
|
||||||
|
|
||||||
// NOTE: Height of MenuBar and StatusBar is not usable here, since it would still be 0 at this point.
|
// NOTE: Height of MenuBar and StatusBar is not usable here, since it would still be 0 at this point.
|
||||||
StatusBarHeight = StatusBarView.StatusBar.MinHeight;
|
StatusBarHeight = StatusBarView.StatusBar.MinHeight;
|
||||||
|
@ -665,8 +665,9 @@ 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