Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
59277e49c5 | ||
|
|
8e8ad0f37e | ||
|
|
b883de5d67 | ||
|
|
1040ec4e53 | ||
|
|
4d1ebaf9ba | ||
|
|
dc3267f152 | ||
|
|
f76a97c976 | ||
|
|
0f3c7f920b | ||
|
|
9ae89d55ca | ||
|
|
dde62f44c7 | ||
|
|
decc93bcdc | ||
|
|
8b75ce1d98 | ||
|
|
509f6d738c | ||
|
|
f3efada444 | ||
|
|
b20613661c | ||
|
|
2facad4be3 | ||
|
|
741eba2798 | ||
|
|
59b3ff7802 | ||
|
|
c0cc3c4188 |
40
.github/dependabot.yml
vendored
40
.github/dependabot.yml
vendored
@@ -1,40 +0,0 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
labels:
|
||||
- "infra"
|
||||
reviewers:
|
||||
- TSRBerry
|
||||
commit-message:
|
||||
prefix: "ci"
|
||||
|
||||
- package-ecosystem: nuget
|
||||
directory: /
|
||||
open-pull-requests-limit: 10
|
||||
schedule:
|
||||
interval: daily
|
||||
labels:
|
||||
- "infra"
|
||||
reviewers:
|
||||
- TSRBerry
|
||||
commit-message:
|
||||
prefix: nuget
|
||||
groups:
|
||||
Avalonia:
|
||||
patterns:
|
||||
- "*Avalonia*"
|
||||
Silk.NET:
|
||||
patterns:
|
||||
- "Silk.NET*"
|
||||
OpenTK:
|
||||
patterns:
|
||||
- "OpenTK*"
|
||||
SixLabors:
|
||||
patterns:
|
||||
- "SixLabors*"
|
||||
NUnit:
|
||||
patterns:
|
||||
- "NUnit*"
|
||||
8
.github/workflows/release.yml
vendored
8
.github/workflows/release.yml
vendored
@@ -33,10 +33,11 @@ jobs:
|
||||
id: version_info
|
||||
run: |
|
||||
echo "build_version=${{ env.RYUJINX_BASE_VERSION }}.${{ github.run_number }}" >> $GITHUB_OUTPUT
|
||||
echo "prev_build_version=${{ env.RYUJINX_BASE_VERSION }}.$((${{ github.run_number }} - 1))" >> $GITHUB_OUTPUT
|
||||
shell: bash
|
||||
|
||||
- name: Create tag
|
||||
uses: actions/github-script@v6
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
github.rest.git.createRef({
|
||||
@@ -51,6 +52,7 @@ jobs:
|
||||
with:
|
||||
name: ${{ steps.version_info.outputs.build_version }}
|
||||
tag: ${{ steps.version_info.outputs.build_version }}
|
||||
body: "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${{ steps.version_info.outputs.prev_build_version }}...${{ steps.version_info.outputs.build_version }}"
|
||||
omitBodyDuringUpdate: true
|
||||
owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}
|
||||
repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}
|
||||
@@ -79,6 +81,7 @@ jobs:
|
||||
id: version_info
|
||||
run: |
|
||||
echo "build_version=${{ env.RYUJINX_BASE_VERSION }}.${{ github.run_number }}" >> $GITHUB_OUTPUT
|
||||
echo "prev_build_version=${{ env.RYUJINX_BASE_VERSION }}.$((${{ github.run_number }} - 1))" >> $GITHUB_OUTPUT
|
||||
echo "git_short_hash=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT
|
||||
shell: bash
|
||||
|
||||
@@ -132,6 +135,7 @@ jobs:
|
||||
name: ${{ steps.version_info.outputs.build_version }}
|
||||
artifacts: "release_output/*.tar.gz,release_output/*.zip"
|
||||
tag: ${{ steps.version_info.outputs.build_version }}
|
||||
body: "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${{ steps.version_info.outputs.prev_build_version }}...${{ steps.version_info.outputs.build_version }}"
|
||||
omitBodyDuringUpdate: true
|
||||
allowUpdates: true
|
||||
replacesArtifacts: true
|
||||
@@ -170,6 +174,7 @@ jobs:
|
||||
id: version_info
|
||||
run: |
|
||||
echo "build_version=${{ env.RYUJINX_BASE_VERSION }}.${{ github.run_number }}" >> $GITHUB_OUTPUT
|
||||
echo "prev_build_version=${{ env.RYUJINX_BASE_VERSION }}.$((${{ github.run_number }} - 1))" >> $GITHUB_OUTPUT
|
||||
echo "git_short_hash=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Configure for release
|
||||
@@ -196,6 +201,7 @@ jobs:
|
||||
name: ${{ steps.version_info.outputs.build_version }}
|
||||
artifacts: "publish_ava/*.tar.gz, publish_headless/*.tar.gz"
|
||||
tag: ${{ steps.version_info.outputs.build_version }}
|
||||
body: "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${{ steps.version_info.outputs.prev_build_version }}...${{ steps.version_info.outputs.build_version }}"
|
||||
omitBodyDuringUpdate: true
|
||||
allowUpdates: true
|
||||
replacesArtifacts: true
|
||||
|
||||
@@ -4,8 +4,8 @@ using System.Diagnostics;
|
||||
using System.Numerics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using System.Runtime.Intrinsics;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
// ReSharper disable InconsistentNaming
|
||||
|
||||
namespace Ryujinx.Common
|
||||
@@ -67,18 +67,198 @@ namespace Ryujinx.Common
|
||||
|
||||
private static ReadOnlySpan<byte> Xxh3KSecret =>
|
||||
[
|
||||
0xb8, 0xfe, 0x6c, 0x39, 0x23, 0xa4, 0x4b, 0xbe, 0x7c, 0x01, 0x81, 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
|
||||
0xb8,
|
||||
0xfe,
|
||||
0x6c,
|
||||
0x39,
|
||||
0x23,
|
||||
0xa4,
|
||||
0x4b,
|
||||
0xbe,
|
||||
0x7c,
|
||||
0x01,
|
||||
0x81,
|
||||
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)]
|
||||
|
||||
@@ -3,7 +3,7 @@ using System.Numerics;
|
||||
|
||||
namespace Ryujinx.Graphics.Texture.Astc
|
||||
{
|
||||
internal struct IntegerEncoded
|
||||
internal struct IntegerEncoded(IntegerEncoded.EIntegerEncoding encoding, int numBits)
|
||||
{
|
||||
internal const int StructSize = 8;
|
||||
private static readonly IntegerEncoded[] _encodings;
|
||||
@@ -15,11 +15,11 @@ namespace Ryujinx.Graphics.Texture.Astc
|
||||
Trit,
|
||||
}
|
||||
|
||||
readonly EIntegerEncoding _encoding;
|
||||
public byte NumberBits { get; private set; }
|
||||
public byte TritValue { get; private set; }
|
||||
public byte QuintValue { get; private set; }
|
||||
public int BitValue { get; private set; }
|
||||
readonly EIntegerEncoding _encoding = encoding;
|
||||
public byte NumberBits { get; } = (byte)numBits;
|
||||
public byte TritValue { get; private set; } = 0;
|
||||
public byte QuintValue { get; private set; } = 0;
|
||||
public int BitValue { get; private set; } = 0;
|
||||
|
||||
static IntegerEncoded()
|
||||
{
|
||||
@@ -31,15 +31,6 @@ namespace Ryujinx.Graphics.Texture.Astc
|
||||
}
|
||||
}
|
||||
|
||||
public IntegerEncoded(EIntegerEncoding encoding, int numBits)
|
||||
{
|
||||
_encoding = encoding;
|
||||
NumberBits = (byte)numBits;
|
||||
BitValue = 0;
|
||||
TritValue = 0;
|
||||
QuintValue = 0;
|
||||
}
|
||||
|
||||
public readonly bool MatchesEncoding(IntegerEncoded other)
|
||||
{
|
||||
return _encoding == other._encoding && NumberBits == other.NumberBits;
|
||||
|
||||
@@ -15,14 +15,8 @@ namespace Ryujinx.HLE.HOS.Applets
|
||||
|
||||
ResultCode GetResult();
|
||||
|
||||
bool DrawTo(RenderingSurfaceInfo surfaceInfo, IVirtualMemoryManager destination, ulong position)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
bool DrawTo(RenderingSurfaceInfo surfaceInfo, IVirtualMemoryManager destination, ulong position) => false;
|
||||
|
||||
static T ReadStruct<T>(ReadOnlySpan<byte> data) where T : unmanaged
|
||||
{
|
||||
return MemoryMarshal.Cast<byte, T>(data)[0];
|
||||
}
|
||||
static T ReadStruct<T>(ReadOnlySpan<byte> data) where T : unmanaged => MemoryMarshal.Cast<byte, T>(data)[0];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
|
||||
MemoryArrange.MemoryArrange4GiBAppletDev => 2048 * MiB,
|
||||
MemoryArrange.MemoryArrange6GiB => 4916 * MiB,
|
||||
MemoryArrange.MemoryArrange8GiB => 6964 * MiB,
|
||||
MemoryArrange.MemoryArrange12GiB => 11060 * MiB,
|
||||
_ => throw new ArgumentException($"Invalid memory arrange \"{arrange}\"."),
|
||||
};
|
||||
}
|
||||
@@ -43,7 +44,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
|
||||
MemoryArrange.MemoryArrange4GiBSystemDev => 448 * MiB,
|
||||
MemoryArrange.MemoryArrange6GiB => 562 * MiB,
|
||||
MemoryArrange.MemoryArrange6GiBAppletDev => 2193 * MiB,
|
||||
MemoryArrange.MemoryArrange8GiB => 562 * MiB,
|
||||
MemoryArrange.MemoryArrange8GiB or
|
||||
MemoryArrange.MemoryArrange12GiB => 562 * MiB,
|
||||
_ => throw new ArgumentException($"Invalid memory arrange \"{arrange}\"."),
|
||||
};
|
||||
}
|
||||
@@ -71,6 +73,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
|
||||
MemorySize.MemorySize4GiB => 4 * GiB,
|
||||
MemorySize.MemorySize6GiB => 6 * GiB,
|
||||
MemorySize.MemorySize8GiB => 8 * GiB,
|
||||
MemorySize.MemorySize12GiB => 12 * GiB,
|
||||
_ => throw new ArgumentException($"Invalid memory size \"{size}\"."),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,5 +8,6 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
|
||||
MemoryArrange6GiB,
|
||||
MemoryArrange6GiBAppletDev,
|
||||
MemoryArrange8GiB,
|
||||
MemoryArrange12GiB,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,5 +5,6 @@ namespace Ryujinx.HLE.HOS.Kernel.Common
|
||||
MemorySize4GiB = 0,
|
||||
MemorySize6GiB = 1,
|
||||
MemorySize8GiB = 2,
|
||||
MemorySize12GiB = 3,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,7 +111,7 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.Lib
|
||||
{
|
||||
// NOTE: This call reset two internal fields to 0 and one internal field to "true".
|
||||
// It seems to be used only with software keyboard inline.
|
||||
// Since we doesn't support applets for now, it's fine to stub it.
|
||||
// Since we don't support applets for now, it's fine to stub it.
|
||||
|
||||
Logger.Stub?.PrintStub(LogClass.ServiceAm);
|
||||
|
||||
|
||||
@@ -6,11 +6,12 @@ namespace Ryujinx.HLE
|
||||
public enum MemoryConfiguration
|
||||
{
|
||||
MemoryConfiguration4GiB = 0,
|
||||
MemoryConfiguration4GiBAppletDev = 1,
|
||||
MemoryConfiguration4GiBSystemDev = 2,
|
||||
MemoryConfiguration6GiB = 3,
|
||||
MemoryConfiguration6GiBAppletDev = 4,
|
||||
MemoryConfiguration8GiB = 5,
|
||||
MemoryConfiguration6GiB = 1,
|
||||
MemoryConfiguration8GiB = 2,
|
||||
MemoryConfiguration12GiB = 3,
|
||||
MemoryConfiguration4GiBAppletDev = 4,
|
||||
MemoryConfiguration4GiBSystemDev = 5,
|
||||
MemoryConfiguration6GiBAppletDev = 6,
|
||||
}
|
||||
|
||||
static class MemoryConfigurationExtensions
|
||||
@@ -28,6 +29,7 @@ namespace Ryujinx.HLE
|
||||
MemoryConfiguration.MemoryConfiguration6GiB => MemoryArrange.MemoryArrange6GiB,
|
||||
MemoryConfiguration.MemoryConfiguration6GiBAppletDev => MemoryArrange.MemoryArrange6GiBAppletDev,
|
||||
MemoryConfiguration.MemoryConfiguration8GiB => MemoryArrange.MemoryArrange8GiB,
|
||||
MemoryConfiguration.MemoryConfiguration12GiB => MemoryArrange.MemoryArrange12GiB,
|
||||
_ => throw new AggregateException($"Invalid memory configuration \"{configuration}\"."),
|
||||
};
|
||||
}
|
||||
@@ -42,6 +44,7 @@ namespace Ryujinx.HLE
|
||||
MemoryConfiguration.MemoryConfiguration6GiB or
|
||||
MemoryConfiguration.MemoryConfiguration6GiBAppletDev => MemorySize.MemorySize6GiB,
|
||||
MemoryConfiguration.MemoryConfiguration8GiB => MemorySize.MemorySize8GiB,
|
||||
MemoryConfiguration.MemoryConfiguration12GiB => MemorySize.MemorySize12GiB,
|
||||
_ => throw new AggregateException($"Invalid memory configuration \"{configuration}\"."),
|
||||
};
|
||||
}
|
||||
@@ -56,6 +59,7 @@ namespace Ryujinx.HLE
|
||||
MemoryConfiguration.MemoryConfiguration6GiB or
|
||||
MemoryConfiguration.MemoryConfiguration6GiBAppletDev => 6 * GiB,
|
||||
MemoryConfiguration.MemoryConfiguration8GiB => 8 * GiB,
|
||||
MemoryConfiguration.MemoryConfiguration12GiB => 12 * GiB,
|
||||
_ => throw new AggregateException($"Invalid memory configuration \"{configuration}\"."),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using CommandLine;
|
||||
using Ryujinx.Common.Configuration;
|
||||
using Ryujinx.HLE;
|
||||
using Ryujinx.HLE.HOS.SystemState;
|
||||
|
||||
namespace Ryujinx.Headless.SDL2
|
||||
@@ -219,8 +220,8 @@ namespace Ryujinx.Headless.SDL2
|
||||
|
||||
// Hacks
|
||||
|
||||
[Option("expand-ram", Required = false, Default = false, HelpText = "Expands the RAM amount on the emulated system from 4GiB to 8GiB.")]
|
||||
public bool ExpandRAM { get; set; }
|
||||
[Option("dram-size", Required = false, Default = MemoryConfiguration.MemoryConfiguration4GiB, HelpText = "Set the RAM amount on the emulated system.")]
|
||||
public MemoryConfiguration DramSize { get; set; }
|
||||
|
||||
[Option("ignore-missing-services", Required = false, Default = false, HelpText = "Enable ignoring missing services.")]
|
||||
public bool IgnoreMissingServices { get; set; }
|
||||
|
||||
@@ -562,7 +562,7 @@ namespace Ryujinx.Headless.SDL2
|
||||
_userChannelPersistence,
|
||||
renderer,
|
||||
new SDL2HardwareDeviceDriver(),
|
||||
options.ExpandRAM ? MemoryConfiguration.MemoryConfiguration8GiB : MemoryConfiguration.MemoryConfiguration4GiB,
|
||||
options.DramSize,
|
||||
window,
|
||||
options.SystemLanguage,
|
||||
options.SystemRegion,
|
||||
|
||||
@@ -147,7 +147,8 @@ namespace Ryujinx.Input.SDL2
|
||||
|
||||
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 highFrequencyRaw = (ushort)(highFrequency * ushort.MaxValue);
|
||||
@@ -265,7 +266,8 @@ namespace Ryujinx.Input.SDL2
|
||||
// ReSharper disable once ForeachCanBePartlyConvertedToQueryUsingAnotherGetEnumerator
|
||||
foreach (ButtonMappingEntry entry in _buttonsUserMapping)
|
||||
{
|
||||
if (!entry.IsValid) continue;
|
||||
if (!entry.IsValid)
|
||||
continue;
|
||||
|
||||
// Do not touch state of button already pressed
|
||||
if (!result.IsPressed(entry.To))
|
||||
@@ -291,12 +293,29 @@ namespace Ryujinx.Input.SDL2
|
||||
return value * ConvertRate;
|
||||
}
|
||||
|
||||
private JoyconConfigControllerStick<GamepadInputId, Common.Configuration.Hid.Controller.StickInputId> GetLogicalJoyStickConfig(StickInputId inputId)
|
||||
{
|
||||
switch (inputId)
|
||||
{
|
||||
case StickInputId.Left:
|
||||
if (_configuration.RightJoyconStick.Joystick == Common.Configuration.Hid.Controller.StickInputId.Left)
|
||||
return _configuration.RightJoyconStick;
|
||||
else
|
||||
return _configuration.LeftJoyconStick;
|
||||
case StickInputId.Right:
|
||||
if (_configuration.LeftJoyconStick.Joystick == Common.Configuration.Hid.Controller.StickInputId.Right)
|
||||
return _configuration.LeftJoyconStick;
|
||||
else
|
||||
return _configuration.RightJoyconStick;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public (float, float) GetStick(StickInputId inputId)
|
||||
{
|
||||
if (inputId == StickInputId.Unbound)
|
||||
return (0.0f, 0.0f);
|
||||
|
||||
|
||||
(short stickX, short stickY) = GetStickXY(inputId);
|
||||
|
||||
float resultX = ConvertRawStickValue(stickX);
|
||||
@@ -304,26 +323,24 @@ namespace Ryujinx.Input.SDL2
|
||||
|
||||
if (HasConfiguration)
|
||||
{
|
||||
if ((inputId == StickInputId.Left && _configuration.LeftJoyconStick.InvertStickX) ||
|
||||
(inputId == StickInputId.Right && _configuration.RightJoyconStick.InvertStickX))
|
||||
var joyconStickConfig = GetLogicalJoyStickConfig(inputId);
|
||||
|
||||
if (joyconStickConfig != null)
|
||||
{
|
||||
if (joyconStickConfig.InvertStickX)
|
||||
resultX = -resultX;
|
||||
}
|
||||
|
||||
if ((inputId == StickInputId.Left && _configuration.LeftJoyconStick.InvertStickY) ||
|
||||
(inputId == StickInputId.Right && _configuration.RightJoyconStick.InvertStickY))
|
||||
{
|
||||
if (joyconStickConfig.InvertStickY)
|
||||
resultY = -resultY;
|
||||
}
|
||||
|
||||
if ((inputId == StickInputId.Left && _configuration.LeftJoyconStick.Rotate90CW) ||
|
||||
(inputId == StickInputId.Right && _configuration.RightJoyconStick.Rotate90CW))
|
||||
if (joyconStickConfig.Rotate90CW)
|
||||
{
|
||||
float temp = resultX;
|
||||
resultX = resultY;
|
||||
resultY = -temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (resultX, resultY);
|
||||
}
|
||||
|
||||
@@ -83,6 +83,7 @@ namespace Ryujinx.Input.SDL2
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
GC.SuppressFinalize(this);
|
||||
_driver = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -171,6 +171,7 @@ namespace Ryujinx.Input.SDL2
|
||||
return;
|
||||
}
|
||||
|
||||
GC.SuppressFinalize(this);
|
||||
_isDisposed = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,18 +2,13 @@ using System;
|
||||
|
||||
namespace Ryujinx.Input.HLE
|
||||
{
|
||||
public class InputManager : IDisposable
|
||||
public class InputManager(IGamepadDriver keyboardDriver, IGamepadDriver gamepadDriver)
|
||||
: IDisposable
|
||||
{
|
||||
public IGamepadDriver KeyboardDriver { get; private set; }
|
||||
public IGamepadDriver GamepadDriver { get; private set; }
|
||||
public IGamepadDriver KeyboardDriver { get; } = keyboardDriver;
|
||||
public IGamepadDriver GamepadDriver { get; } = gamepadDriver;
|
||||
public IGamepadDriver MouseDriver { get; private set; }
|
||||
|
||||
public InputManager(IGamepadDriver keyboardDriver, IGamepadDriver gamepadDriver)
|
||||
{
|
||||
KeyboardDriver = keyboardDriver;
|
||||
GamepadDriver = gamepadDriver;
|
||||
}
|
||||
|
||||
public void SetMouseDriver(IGamepadDriver mouseDriver)
|
||||
{
|
||||
MouseDriver?.Dispose();
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace Ryujinx.UI.App.Common
|
||||
{
|
||||
public class ApplicationData
|
||||
{
|
||||
public static Func<string> LocalizedNever = () => "Never";
|
||||
public static Func<string> LocalizedNever { get; set; } = () => "Never";
|
||||
|
||||
public bool Favorite { get; set; }
|
||||
public byte[] Icon { get; set; }
|
||||
|
||||
@@ -986,6 +986,10 @@ namespace Ryujinx.UI.App.Common
|
||||
var shouldSelect = !currentlySelected.HasValue ||
|
||||
currentlySelected.Value.TitleUpdate.Version < update.Version;
|
||||
_titleUpdates.AddOrUpdate((update, shouldSelect));
|
||||
|
||||
if (currentlySelected.HasValue && shouldSelect)
|
||||
_titleUpdates.AddOrUpdate((currentlySelected.Value.TitleUpdate, false));
|
||||
|
||||
SaveTitleUpdatesForGame(update.TitleIdBase);
|
||||
numUpdatesLoaded++;
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ using Ryujinx.Common.Configuration.Hid;
|
||||
using Ryujinx.Common.Configuration.Multiplayer;
|
||||
using Ryujinx.Common.Logging;
|
||||
using Ryujinx.Common.Utilities;
|
||||
using Ryujinx.HLE;
|
||||
using Ryujinx.UI.Common.Configuration.System;
|
||||
using Ryujinx.UI.Common.Configuration.UI;
|
||||
using System.Collections.Generic;
|
||||
@@ -15,7 +16,7 @@ namespace Ryujinx.UI.Common.Configuration
|
||||
/// <summary>
|
||||
/// The current version of the file format
|
||||
/// </summary>
|
||||
public const int CurrentVersion = 53;
|
||||
public const int CurrentVersion = 54;
|
||||
|
||||
/// <summary>
|
||||
/// Version of the configuration file format
|
||||
@@ -245,7 +246,7 @@ namespace Ryujinx.UI.Common.Configuration
|
||||
/// <summary>
|
||||
/// Expands the RAM amount on the emulated system from 4GiB to 8GiB
|
||||
/// </summary>
|
||||
public bool ExpandRam { get; set; }
|
||||
public MemoryConfiguration DramSize { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Enable or disable ignoring missing services
|
||||
|
||||
@@ -7,6 +7,7 @@ using Ryujinx.Common.Configuration.Hid.Keyboard;
|
||||
using Ryujinx.Common.Configuration.Multiplayer;
|
||||
using Ryujinx.Common.Logging;
|
||||
using Ryujinx.Graphics.Vulkan;
|
||||
using Ryujinx.HLE;
|
||||
using Ryujinx.UI.Common.Configuration.System;
|
||||
using Ryujinx.UI.Common.Configuration.UI;
|
||||
using Ryujinx.UI.Common.Helper;
|
||||
@@ -366,7 +367,7 @@ namespace Ryujinx.UI.Common.Configuration
|
||||
/// <summary>
|
||||
/// Defines the amount of RAM available on the emulated system, and how it is distributed
|
||||
/// </summary>
|
||||
public ReactiveObject<bool> ExpandRam { get; private set; }
|
||||
public ReactiveObject<MemoryConfiguration> DramSize { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Enable or disable ignoring missing services
|
||||
@@ -400,8 +401,8 @@ namespace Ryujinx.UI.Common.Configuration
|
||||
AudioBackend.Event += static (sender, e) => LogValueChange(e, nameof(AudioBackend));
|
||||
MemoryManagerMode = new ReactiveObject<MemoryManagerMode>();
|
||||
MemoryManagerMode.Event += static (sender, e) => LogValueChange(e, nameof(MemoryManagerMode));
|
||||
ExpandRam = new ReactiveObject<bool>();
|
||||
ExpandRam.Event += static (sender, e) => LogValueChange(e, nameof(ExpandRam));
|
||||
DramSize = new ReactiveObject<MemoryConfiguration>();
|
||||
DramSize.Event += static (sender, e) => LogValueChange(e, nameof(DramSize));
|
||||
IgnoreMissingServices = new ReactiveObject<bool>();
|
||||
IgnoreMissingServices.Event += static (sender, e) => LogValueChange(e, nameof(IgnoreMissingServices));
|
||||
AudioVolume = new ReactiveObject<float>();
|
||||
@@ -721,7 +722,7 @@ namespace Ryujinx.UI.Common.Configuration
|
||||
AudioBackend = System.AudioBackend,
|
||||
AudioVolume = System.AudioVolume,
|
||||
MemoryManagerMode = System.MemoryManagerMode,
|
||||
ExpandRam = System.ExpandRam,
|
||||
DramSize = System.DramSize,
|
||||
IgnoreMissingServices = System.IgnoreMissingServices,
|
||||
UseHypervisor = System.UseHypervisor,
|
||||
GuiColumns = new GuiColumns
|
||||
@@ -834,7 +835,7 @@ namespace Ryujinx.UI.Common.Configuration
|
||||
System.AudioBackend.Value = AudioBackend.SDL2;
|
||||
System.AudioVolume.Value = 1;
|
||||
System.MemoryManagerMode.Value = MemoryManagerMode.HostMappedUnsafe;
|
||||
System.ExpandRam.Value = false;
|
||||
System.DramSize.Value = MemoryConfiguration.MemoryConfiguration4GiB;
|
||||
System.IgnoreMissingServices.Value = false;
|
||||
System.UseHypervisor.Value = true;
|
||||
Multiplayer.LanInterfaceId.Value = "0";
|
||||
@@ -897,7 +898,7 @@ namespace Ryujinx.UI.Common.Configuration
|
||||
Backend = InputBackendType.WindowKeyboard,
|
||||
Id = "0",
|
||||
PlayerIndex = PlayerIndex.Player1,
|
||||
ControllerType = ControllerType.JoyconPair,
|
||||
ControllerType = ControllerType.ProController,
|
||||
LeftJoycon = new LeftJoyconCommonConfig<Key>
|
||||
{
|
||||
DpadUp = Key.Up,
|
||||
@@ -1127,7 +1128,7 @@ namespace Ryujinx.UI.Common.Configuration
|
||||
Backend = InputBackendType.WindowKeyboard,
|
||||
Id = "0",
|
||||
PlayerIndex = PlayerIndex.Player1,
|
||||
ControllerType = ControllerType.JoyconPair,
|
||||
ControllerType = ControllerType.ProController,
|
||||
LeftJoycon = new LeftJoyconCommonConfig<Key>
|
||||
{
|
||||
DpadUp = Key.Up,
|
||||
@@ -1513,6 +1514,15 @@ namespace Ryujinx.UI.Common.Configuration
|
||||
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;
|
||||
Graphics.ResScale.Value = configurationFileFormat.ResScale;
|
||||
Graphics.ResScaleCustom.Value = configurationFileFormat.ResScaleCustom;
|
||||
@@ -1559,7 +1569,7 @@ namespace Ryujinx.UI.Common.Configuration
|
||||
System.AudioBackend.Value = configurationFileFormat.AudioBackend;
|
||||
System.AudioVolume.Value = configurationFileFormat.AudioVolume;
|
||||
System.MemoryManagerMode.Value = configurationFileFormat.MemoryManagerMode;
|
||||
System.ExpandRam.Value = configurationFileFormat.ExpandRam;
|
||||
System.DramSize.Value = configurationFileFormat.DramSize;
|
||||
System.IgnoreMissingServices.Value = configurationFileFormat.IgnoreMissingServices;
|
||||
System.UseHypervisor.Value = configurationFileFormat.UseHypervisor;
|
||||
UI.GuiColumns.FavColumn.Value = configurationFileFormat.GuiColumns.FavColumn;
|
||||
|
||||
@@ -86,6 +86,8 @@ namespace Ryujinx.UI.Common
|
||||
});
|
||||
}
|
||||
|
||||
public static void SwitchToMainState() => _discordClient?.SetPresence(_discordPresenceMain);
|
||||
|
||||
private static string TruncateToByteLength(string input)
|
||||
{
|
||||
if (Encoding.UTF8.GetByteCount(input) <= ApplicationByteLimit)
|
||||
|
||||
@@ -98,7 +98,6 @@ namespace Ryujinx.UI.Common.Helper
|
||||
if (baseApplicationExtension is not (".nro" or ".nso"))
|
||||
return IsFirmwareValid(contentManager, out error);
|
||||
|
||||
error = UserError.Success;
|
||||
}
|
||||
|
||||
error = UserError.ApplicationNotFound;
|
||||
|
||||
@@ -87,7 +87,8 @@ namespace Ryujinx.UI.Common.Helper
|
||||
|
||||
foreach (string path in titleUpdateMetadata.Paths)
|
||||
{
|
||||
if (!File.Exists(path)) continue;
|
||||
if (!File.Exists(path))
|
||||
continue;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
@@ -4,6 +4,8 @@ using Avalonia.Markup.Xaml;
|
||||
using Avalonia.Platform;
|
||||
using Avalonia.Styling;
|
||||
using Avalonia.Threading;
|
||||
using FluentAvalonia.UI.Windowing;
|
||||
using Gommon;
|
||||
using Ryujinx.Ava.Common;
|
||||
using Ryujinx.Ava.Common.Locale;
|
||||
using Ryujinx.Ava.UI.Helpers;
|
||||
@@ -24,6 +26,15 @@ namespace Ryujinx.Ava
|
||||
? $"Ryujinx {Program.Version}"
|
||||
: $"Ryujinx {Program.Version} - {LocaleManager.Instance[windowTitleKey.Value]}";
|
||||
|
||||
public static MainWindow MainWindow => Current!
|
||||
.ApplicationLifetime.Cast<IClassicDesktopStyleApplicationLifetime>()
|
||||
.MainWindow.Cast<MainWindow>();
|
||||
|
||||
public static void SetTaskbarProgress(TaskBarProgressBarState state) => MainWindow.PlatformFeatures.SetTaskBarProgressBarState(state);
|
||||
public static void SetTaskbarProgressValue(ulong current, ulong total) => MainWindow.PlatformFeatures.SetTaskBarProgressBarValue(current, total);
|
||||
public static void SetTaskbarProgressValue(long current, long total) => SetTaskbarProgressValue(Convert.ToUInt64(current), Convert.ToUInt64(total));
|
||||
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
Name = FormatTitle();
|
||||
@@ -62,8 +73,7 @@ namespace Ryujinx.Ava
|
||||
|
||||
private void ShowRestartDialog()
|
||||
{
|
||||
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
|
||||
Dispatcher.UIThread.InvokeAsync(async () =>
|
||||
_ = Dispatcher.UIThread.InvokeAsync(async () =>
|
||||
{
|
||||
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
|
||||
{
|
||||
@@ -82,7 +92,6 @@ namespace Ryujinx.Ava
|
||||
}
|
||||
}
|
||||
});
|
||||
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
|
||||
}
|
||||
|
||||
private void ThemeChanged_Event(object sender, ReactiveEventArgs<string> e)
|
||||
@@ -134,16 +143,9 @@ namespace Ryujinx.Ava
|
||||
_ => ThemeVariant.Default,
|
||||
};
|
||||
|
||||
public static ThemeVariant DetectSystemTheme()
|
||||
{
|
||||
if (Application.Current is App app)
|
||||
{
|
||||
var colorValues = app.PlatformSettings.GetColorValues();
|
||||
|
||||
return ConvertThemeVariant(colorValues.ThemeVariant);
|
||||
}
|
||||
|
||||
return ThemeVariant.Default;
|
||||
}
|
||||
public static ThemeVariant DetectSystemTheme() =>
|
||||
Current is App { PlatformSettings: not null } app
|
||||
? ConvertThemeVariant(app.PlatformSettings.GetColorValues().ThemeVariant)
|
||||
: ThemeVariant.Default;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -498,6 +498,7 @@ namespace Ryujinx.Ava
|
||||
public void Stop()
|
||||
{
|
||||
_isActive = false;
|
||||
DiscordIntegrationModule.SwitchToMainState();
|
||||
}
|
||||
|
||||
private void Exit()
|
||||
@@ -511,6 +512,7 @@ namespace Ryujinx.Ava
|
||||
|
||||
_isStopped = true;
|
||||
_isActive = false;
|
||||
DiscordIntegrationModule.SwitchToMainState();
|
||||
}
|
||||
|
||||
public void DisposeContext()
|
||||
@@ -843,9 +845,7 @@ namespace Ryujinx.Ava
|
||||
Logger.Info?.PrintMsg(LogClass.Gpu, $"Backend Threading ({threadingMode}): {isGALThreaded}");
|
||||
|
||||
// Initialize Configuration.
|
||||
var memoryConfiguration = ConfigurationState.Instance.System.ExpandRam
|
||||
? MemoryConfiguration.MemoryConfiguration8GiB
|
||||
: MemoryConfiguration.MemoryConfiguration4GiB;
|
||||
var memoryConfiguration = ConfigurationState.Instance.System.DramSize.Value;
|
||||
|
||||
Device = new Switch(new HLEConfiguration(
|
||||
VirtualFileSystem,
|
||||
@@ -965,7 +965,7 @@ namespace Ryujinx.Ava
|
||||
_viewModel.WindowState = WindowState.FullScreen;
|
||||
}
|
||||
|
||||
if (_viewModel.WindowState == WindowState.FullScreen)
|
||||
if (_viewModel.WindowState is WindowState.FullScreen)
|
||||
{
|
||||
_viewModel.ShowMenuAndStatusBar = false;
|
||||
}
|
||||
@@ -1136,7 +1136,7 @@ namespace Ryujinx.Ava
|
||||
|
||||
Dispatcher.UIThread.Post(() =>
|
||||
{
|
||||
if (_keyboardInterface.GetKeyboardStateSnapshot().IsPressed(Key.Delete) && _viewModel.WindowState != WindowState.FullScreen)
|
||||
if (_keyboardInterface.GetKeyboardStateSnapshot().IsPressed(Key.Delete) && _viewModel.WindowState is not WindowState.FullScreen)
|
||||
{
|
||||
Device.Processes.ActiveApplication.DiskCacheLoadState?.Cancel();
|
||||
}
|
||||
|
||||
@@ -145,7 +145,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "هاكات",
|
||||
"SettingsTabSystemHacksNote": "قد يتسبب في عدم الاستقرار",
|
||||
"SettingsTabSystemExpandDramSize": "استخدام تخطيط الذاكرة البديل (المطورين)",
|
||||
"SettingsTabSystemDramSize": "استخدام تخطيط الذاكرة البديل (المطورين)",
|
||||
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||
"SettingsTabSystemIgnoreMissingServices": "تجاهل الخدمات المفقودة",
|
||||
"SettingsTabGraphics": "الرسومات",
|
||||
"SettingsTabGraphicsAPI": "API الرسومات ",
|
||||
|
||||
@@ -145,7 +145,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "Hacks",
|
||||
"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",
|
||||
"SettingsTabGraphics": "Grafik",
|
||||
"SettingsTabGraphicsAPI": "Grafik-API",
|
||||
|
||||
@@ -145,7 +145,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "Μικροδιορθώσεις",
|
||||
"SettingsTabSystemHacksNote": " (Μπορεί να προκαλέσουν αστάθεια)",
|
||||
"SettingsTabSystemExpandDramSize": "Επέκταση μεγέθους DRAM στα 6GiB",
|
||||
"SettingsTabSystemDramSize": "Μέγεθος DRAM:",
|
||||
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||
"SettingsTabSystemIgnoreMissingServices": "Αγνόηση υπηρεσιών που λείπουν",
|
||||
"SettingsTabGraphics": "Γραφικά",
|
||||
"SettingsTabGraphicsAPI": "API Γραφικά",
|
||||
|
||||
@@ -149,7 +149,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "Hacks",
|
||||
"SettingsTabSystemHacksNote": "May cause instability",
|
||||
"SettingsTabSystemExpandDramSize": "Expand DRAM to 8GiB",
|
||||
"SettingsTabSystemDramSize": "DRAM size:",
|
||||
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||
"SettingsTabSystemIgnoreMissingServices": "Ignore Missing Services",
|
||||
"SettingsTabGraphics": "Graphics",
|
||||
"SettingsTabGraphicsAPI": "Graphics API",
|
||||
|
||||
@@ -145,7 +145,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "Hacks",
|
||||
"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",
|
||||
"SettingsTabGraphics": "Gráficos",
|
||||
"SettingsTabGraphicsAPI": "API de gráficos",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"Language": "Français",
|
||||
"MenuBarFileOpenApplet": "Ouvrir un applet",
|
||||
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "Ouvrir l'Applet Mii Editor en mode Standalone",
|
||||
"MenuBarFileOpenApplet": "Ouvrir un programme",
|
||||
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "Ouvrir l'éditeur Mii en mode Standalone",
|
||||
"SettingsTabInputDirectMouseAccess": "Accès direct à la souris",
|
||||
"SettingsTabSystemMemoryManagerMode": "Mode de gestion de la mémoire :",
|
||||
"SettingsTabSystemMemoryManagerModeSoftware": "Logiciel",
|
||||
@@ -10,7 +10,10 @@
|
||||
"SettingsTabSystemUseHypervisor": "Utiliser l'Hyperviseur",
|
||||
"MenuBarFile": "_Fichier",
|
||||
"MenuBarFileOpenFromFile": "_Charger un jeu depuis un fichier",
|
||||
"MenuBarFileOpenFromFileError": "Aucun jeu trouvé dans le fichier sélectionné",
|
||||
"MenuBarFileOpenUnpacked": "Charger un jeu extrait",
|
||||
"MenuBarFileLoadDlcFromFolder": "Charger les DLC depuis le dossier des DLC",
|
||||
"MenuBarFileLoadTitleUpdatesFromFolder": "Charger les mises à jour depuis le dossier des mises à jour",
|
||||
"MenuBarFileOpenEmuFolder": "Ouvrir le dossier Ryujinx",
|
||||
"MenuBarFileOpenLogsFolder": "Ouvrir le dossier des journaux",
|
||||
"MenuBarFileExit": "_Quitter",
|
||||
@@ -31,7 +34,7 @@
|
||||
"MenuBarToolsInstallFileTypes": "Installer les types de fichiers",
|
||||
"MenuBarToolsUninstallFileTypes": "Désinstaller les types de fichiers",
|
||||
"MenuBarView": "_View",
|
||||
"MenuBarViewWindow": "Window Size",
|
||||
"MenuBarViewWindow": "Taille de la fenêtre",
|
||||
"MenuBarViewWindow720": "720p",
|
||||
"MenuBarViewWindow1080": "1080p",
|
||||
"MenuBarHelp": "_Aide",
|
||||
@@ -54,19 +57,19 @@
|
||||
"GameListContextMenuOpenDeviceSaveDirectoryToolTip": "Ouvre le dossier contenant la sauvegarde console du jeu",
|
||||
"GameListContextMenuOpenBcatSaveDirectory": "Ouvrir le dossier de sauvegarde BCAT",
|
||||
"GameListContextMenuOpenBcatSaveDirectoryToolTip": "Ouvre le dossier contenant la sauvegarde BCAT du jeu",
|
||||
"GameListContextMenuManageTitleUpdates": "Gérer la mise à jour des titres",
|
||||
"GameListContextMenuManageTitleUpdates": "Gérer les mises à jour",
|
||||
"GameListContextMenuManageTitleUpdatesToolTip": "Ouvre la fenêtre de gestion des mises à jour du jeu",
|
||||
"GameListContextMenuManageDlc": "Gérer les DLC",
|
||||
"GameListContextMenuManageDlcToolTip": "Ouvre la fenêtre de gestion des DLC",
|
||||
"GameListContextMenuCacheManagement": "Gestion des caches",
|
||||
"GameListContextMenuCacheManagementPurgePptc": "Reconstruction du PPTC",
|
||||
"GameListContextMenuCacheManagementPurgePptcToolTip": "Effectuer une reconstruction du PPTC au prochain démarrage du jeu",
|
||||
"GameListContextMenuCacheManagementPurgeShaderCache": "Purger le cache des shaders",
|
||||
"GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "Supprime le cache des shaders du jeu",
|
||||
"GameListContextMenuCacheManagementPurgeShaderCache": "Purger les shaders",
|
||||
"GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "Supprime les shaders du jeu",
|
||||
"GameListContextMenuCacheManagementOpenPptcDirectory": "Ouvrir le dossier du PPTC",
|
||||
"GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "Ouvre le dossier contenant le PPTC du jeu",
|
||||
"GameListContextMenuCacheManagementOpenShaderCacheDirectory": "Ouvrir le dossier du cache des shaders",
|
||||
"GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "Ouvre le dossier contenant le cache des shaders du jeu",
|
||||
"GameListContextMenuCacheManagementOpenShaderCacheDirectory": "Ouvrir le dossier des shaders",
|
||||
"GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "Ouvre le dossier contenant les shaders du jeu",
|
||||
"GameListContextMenuExtractData": "Extraire les données",
|
||||
"GameListContextMenuExtractDataExeFS": "ExeFS",
|
||||
"GameListContextMenuExtractDataExeFSToolTip": "Extrait la section ExeFS du jeu (mise à jour incluse)",
|
||||
@@ -74,13 +77,13 @@
|
||||
"GameListContextMenuExtractDataRomFSToolTip": "Extrait la section RomFS du jeu (mise à jour incluse)",
|
||||
"GameListContextMenuExtractDataLogo": "Logo",
|
||||
"GameListContextMenuExtractDataLogoToolTip": "Extrait la section Logo du jeu (mise à jour incluse)",
|
||||
"GameListContextMenuCreateShortcut": "Créer un raccourci d'application",
|
||||
"GameListContextMenuCreateShortcutToolTip": "Créer un raccourci sur le bureau qui lance l'application sélectionnée",
|
||||
"GameListContextMenuCreateShortcutToolTipMacOS": "Créer un raccourci dans le dossier Applications de macOS qui lance l'application sélectionnée",
|
||||
"GameListContextMenuCreateShortcut": "Créer un raccourci",
|
||||
"GameListContextMenuCreateShortcutToolTip": "Créer un raccourci sur le bureau qui lance le jeu sélectionné",
|
||||
"GameListContextMenuCreateShortcutToolTipMacOS": "Créer un raccourci dans le dossier Applications de macOS qui lance le jeu sélectionné",
|
||||
"GameListContextMenuOpenModsDirectory": "Ouvrir le dossier des mods",
|
||||
"GameListContextMenuOpenModsDirectoryToolTip": "Ouvre le dossier contenant les mods de l'application",
|
||||
"GameListContextMenuOpenModsDirectoryToolTip": "Ouvre le dossier contenant les mods du jeu",
|
||||
"GameListContextMenuOpenSdModsDirectory": "Ouvrir le dossier des mods Atmosphère",
|
||||
"GameListContextMenuOpenSdModsDirectoryToolTip": "Ouvre le dossier alternatif de la carte SD Atmosphère qui contient les mods de l'application. Utile pour les mods conçus pour du matériel réel.",
|
||||
"GameListContextMenuOpenSdModsDirectoryToolTip": "Ouvre le dossier alternatif de la carte SD Atmosphère qui contient les mods de l'application. Utile pour les mods conçus pour console.",
|
||||
"StatusBarGamesLoaded": "{0}/{1} Jeux chargés",
|
||||
"StatusBarSystemVersion": "Version du Firmware: {0}",
|
||||
"LinuxVmMaxMapCountDialogTitle": "Limite basse pour les mappings mémoire détectée",
|
||||
@@ -96,12 +99,13 @@
|
||||
"SettingsTabGeneralEnableDiscordRichPresence": "Activer Discord Rich Presence",
|
||||
"SettingsTabGeneralCheckUpdatesOnLaunch": "Vérifier les mises à jour au démarrage",
|
||||
"SettingsTabGeneralShowConfirmExitDialog": "Afficher le message de \"Confirmation de sortie\"",
|
||||
"SettingsTabGeneralRememberWindowState": "Remember Window Size/Position",
|
||||
"SettingsTabGeneralRememberWindowState": "Mémoriser la taille/position de la fenêtre",
|
||||
"SettingsTabGeneralHideCursor": "Masquer le Curseur :",
|
||||
"SettingsTabGeneralHideCursorNever": "Jamais",
|
||||
"SettingsTabGeneralHideCursorOnIdle": "Masquer le curseur si inactif",
|
||||
"SettingsTabGeneralHideCursorAlways": "Toujours",
|
||||
"SettingsTabGeneralGameDirectories": "Dossiers des jeux",
|
||||
"SettingsTabGeneralAutoloadDirectories": "Dossiers des mises à jour/DLC",
|
||||
"SettingsTabGeneralAdd": "Ajouter",
|
||||
"SettingsTabGeneralRemove": "Retirer",
|
||||
"SettingsTabSystem": "Système",
|
||||
@@ -127,9 +131,9 @@
|
||||
"SettingsTabSystemSystemLanguagePortuguese": "Portugais",
|
||||
"SettingsTabSystemSystemLanguageRussian": "Russe",
|
||||
"SettingsTabSystemSystemLanguageTaiwanese": "Taïwanais",
|
||||
"SettingsTabSystemSystemLanguageBritishEnglish": "Anglais britannique ",
|
||||
"SettingsTabSystemSystemLanguageBritishEnglish": "Anglais Britannique ",
|
||||
"SettingsTabSystemSystemLanguageCanadianFrench": "Français Canadien",
|
||||
"SettingsTabSystemSystemLanguageLatinAmericanSpanish": "Espagnol latino-américain",
|
||||
"SettingsTabSystemSystemLanguageLatinAmericanSpanish": "Espagnol Latino-Américain",
|
||||
"SettingsTabSystemSystemLanguageSimplifiedChinese": "Chinois simplifié",
|
||||
"SettingsTabSystemSystemLanguageTraditionalChinese": "Chinois traditionnel",
|
||||
"SettingsTabSystemSystemTimeZone": "Fuseau horaire du système :",
|
||||
@@ -139,13 +143,17 @@
|
||||
"SettingsTabSystemEnableLowPowerPptc": "Low-power PPTC",
|
||||
"SettingsTabSystemEnableFsIntegrityChecks": "Activer la vérification de l'intégrité du système de fichiers",
|
||||
"SettingsTabSystemAudioBackend": "Bibliothèque Audio :",
|
||||
"SettingsTabSystemAudioBackendDummy": "Factice",
|
||||
"SettingsTabSystemAudioBackendDummy": "Désactivée",
|
||||
"SettingsTabSystemAudioBackendOpenAL": "OpenAL",
|
||||
"SettingsTabSystemAudioBackendSoundIO": "SoundIO",
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "Hacks",
|
||||
"SettingsTabSystemHacksNote": "Cela peut causer des instabilités",
|
||||
"SettingsTabSystemExpandDramSize": "Utiliser disposition alternative de la mémoire (développeur)",
|
||||
"SettingsTabSystemDramSize": "Taille de la DRAM:",
|
||||
"SettingsTabSystemDramSize4GiB": "4GiO",
|
||||
"SettingsTabSystemDramSize6GiB": "6GiO",
|
||||
"SettingsTabSystemDramSize8GiB": "8GiO",
|
||||
"SettingsTabSystemDramSize12GiB": "12GiO",
|
||||
"SettingsTabSystemIgnoreMissingServices": "Ignorer les services manquants",
|
||||
"SettingsTabGraphics": "Graphismes",
|
||||
"SettingsTabGraphicsAPI": "API Graphique",
|
||||
@@ -168,7 +176,7 @@
|
||||
"SettingsTabGraphicsAspectRatio16x10": "16:10",
|
||||
"SettingsTabGraphicsAspectRatio21x9": "21:9",
|
||||
"SettingsTabGraphicsAspectRatio32x9": "32:9",
|
||||
"SettingsTabGraphicsAspectRatioStretch": "Écran étiré",
|
||||
"SettingsTabGraphicsAspectRatioStretch": "Étirer pour remplir la fenêtre",
|
||||
"SettingsTabGraphicsDeveloperOptions": "Options développeur",
|
||||
"SettingsTabGraphicsShaderDumpPath": "Chemin du dossier de copie des shaders:",
|
||||
"SettingsTabLogging": "Journaux",
|
||||
@@ -211,7 +219,7 @@
|
||||
"ControllerSettingsInputDevice": "Périphériques",
|
||||
"ControllerSettingsRefresh": "Actualiser",
|
||||
"ControllerSettingsDeviceDisabled": "Désactivé",
|
||||
"ControllerSettingsControllerType": "Type de contrôleur",
|
||||
"ControllerSettingsControllerType": "Type de manette",
|
||||
"ControllerSettingsControllerTypeHandheld": "Portable",
|
||||
"ControllerSettingsControllerTypeProController": "Pro Controller",
|
||||
"ControllerSettingsControllerTypeJoyConPair": "JoyCon Joints",
|
||||
@@ -272,59 +280,59 @@
|
||||
"ControllerSettingsMotionGyroDeadzone": "Zone morte du gyroscope:",
|
||||
"ControllerSettingsSave": "Enregistrer",
|
||||
"ControllerSettingsClose": "Fermer",
|
||||
"KeyUnknown": "Unknown",
|
||||
"KeyShiftLeft": "Shift Left",
|
||||
"KeyShiftRight": "Shift Right",
|
||||
"KeyControlLeft": "Ctrl Left",
|
||||
"KeyMacControlLeft": "⌃ Left",
|
||||
"KeyControlRight": "Ctrl Right",
|
||||
"KeyMacControlRight": "⌃ Right",
|
||||
"KeyAltLeft": "Alt Left",
|
||||
"KeyMacAltLeft": "⌥ Left",
|
||||
"KeyAltRight": "Alt Right",
|
||||
"KeyMacAltRight": "⌥ Right",
|
||||
"KeyWinLeft": "⊞ Left",
|
||||
"KeyMacWinLeft": "⌘ Left",
|
||||
"KeyWinRight": "⊞ Right",
|
||||
"KeyMacWinRight": "⌘ Right",
|
||||
"KeyUnknown": "Touche inconnue",
|
||||
"KeyShiftLeft": "Maj Gauche",
|
||||
"KeyShiftRight": "Maj Droite",
|
||||
"KeyControlLeft": "Ctrl Gauche",
|
||||
"KeyMacControlLeft": "⌃ Gauche",
|
||||
"KeyControlRight": "Ctrl Droite",
|
||||
"KeyMacControlRight": "⌃ Droite",
|
||||
"KeyAltLeft": "Alt Gauche",
|
||||
"KeyMacAltLeft": "⌥ Gauche",
|
||||
"KeyAltRight": "Alt Droite",
|
||||
"KeyMacAltRight": "⌥ Droite",
|
||||
"KeyWinLeft": "⊞ Gauche",
|
||||
"KeyMacWinLeft": "⌘ Gauche",
|
||||
"KeyWinRight": "⊞ Droite",
|
||||
"KeyMacWinRight": "⌘ Droite",
|
||||
"KeyMenu": "Menu",
|
||||
"KeyUp": "Up",
|
||||
"KeyDown": "Down",
|
||||
"KeyLeft": "Left",
|
||||
"KeyRight": "Right",
|
||||
"KeyEnter": "Enter",
|
||||
"KeyEscape": "Escape",
|
||||
"KeySpace": "Space",
|
||||
"KeyUp": "Haut",
|
||||
"KeyDown": "Bas",
|
||||
"KeyLeft": "Gauche",
|
||||
"KeyRight": "Droite",
|
||||
"KeyEnter": "Entrée",
|
||||
"KeyEscape": "Esc",
|
||||
"KeySpace": "Espace",
|
||||
"KeyTab": "Tab",
|
||||
"KeyBackSpace": "Backspace",
|
||||
"KeyInsert": "Insert",
|
||||
"KeyDelete": "Delete",
|
||||
"KeyBackSpace": "Supprimer",
|
||||
"KeyInsert": "Ins",
|
||||
"KeyDelete": "Sup",
|
||||
"KeyPageUp": "Page Up",
|
||||
"KeyPageDown": "Page Down",
|
||||
"KeyHome": "Home",
|
||||
"KeyEnd": "End",
|
||||
"KeyCapsLock": "Caps Lock",
|
||||
"KeyScrollLock": "Scroll Lock",
|
||||
"KeyPrintScreen": "Print Screen",
|
||||
"KeyEnd": "Fin",
|
||||
"KeyCapsLock": "Verr. Maj",
|
||||
"KeyScrollLock": "Arr. Déf.",
|
||||
"KeyPrintScreen": "Imp. Écran",
|
||||
"KeyPause": "Pause",
|
||||
"KeyNumLock": "Num Lock",
|
||||
"KeyNumLock": "Verr. Num",
|
||||
"KeyClear": "Clear",
|
||||
"KeyKeypad0": "Keypad 0",
|
||||
"KeyKeypad1": "Keypad 1",
|
||||
"KeyKeypad2": "Keypad 2",
|
||||
"KeyKeypad3": "Keypad 3",
|
||||
"KeyKeypad4": "Keypad 4",
|
||||
"KeyKeypad5": "Keypad 5",
|
||||
"KeyKeypad6": "Keypad 6",
|
||||
"KeyKeypad7": "Keypad 7",
|
||||
"KeyKeypad8": "Keypad 8",
|
||||
"KeyKeypad9": "Keypad 9",
|
||||
"KeyKeypadDivide": "Keypad Divide",
|
||||
"KeyKeypadMultiply": "Keypad Multiply",
|
||||
"KeyKeypadSubtract": "Keypad Subtract",
|
||||
"KeyKeypadAdd": "Keypad Add",
|
||||
"KeyKeypadDecimal": "Keypad Decimal",
|
||||
"KeyKeypadEnter": "Keypad Enter",
|
||||
"KeyKeypad0": "Num. 0",
|
||||
"KeyKeypad1": "Num. 1",
|
||||
"KeyKeypad2": "Num. 2",
|
||||
"KeyKeypad3": "Num. 3",
|
||||
"KeyKeypad4": "Num. 4",
|
||||
"KeyKeypad5": "Num. 5",
|
||||
"KeyKeypad6": "Num. 6",
|
||||
"KeyKeypad7": "Num. 7",
|
||||
"KeyKeypad8": "Num. 8",
|
||||
"KeyKeypad9": "Num. 9",
|
||||
"KeyKeypadDivide": "Num. Diviser",
|
||||
"KeyKeypadMultiply": "Num. Multiplier",
|
||||
"KeyKeypadSubtract": "Num. Soustraire",
|
||||
"KeyKeypadAdd": "Num. Ajouter",
|
||||
"KeyKeypadDecimal": "Num. Point",
|
||||
"KeyKeypadEnter": "Num. Ent",
|
||||
"KeyNumber0": "0",
|
||||
"KeyNumber1": "1",
|
||||
"KeyNumber2": "2",
|
||||
@@ -347,32 +355,32 @@
|
||||
"KeyPeriod": ".",
|
||||
"KeySlash": "/",
|
||||
"KeyBackSlash": "\\",
|
||||
"KeyUnbound": "Unbound",
|
||||
"GamepadLeftStick": "L Stick Button",
|
||||
"GamepadRightStick": "R Stick Button",
|
||||
"GamepadLeftShoulder": "Left Shoulder",
|
||||
"GamepadRightShoulder": "Right Shoulder",
|
||||
"GamepadLeftTrigger": "Left Trigger",
|
||||
"GamepadRightTrigger": "Right Trigger",
|
||||
"GamepadDpadUp": "Up",
|
||||
"GamepadDpadDown": "Down",
|
||||
"GamepadDpadLeft": "Left",
|
||||
"GamepadDpadRight": "Right",
|
||||
"KeyUnbound": "Pas Attribuée",
|
||||
"GamepadLeftStick": "Bouton Joystick G.",
|
||||
"GamepadRightStick": "Bouton Joystick D.",
|
||||
"GamepadLeftShoulder": "Bouton Gachette G.",
|
||||
"GamepadRightShoulder": "Bouton Gachette D.",
|
||||
"GamepadLeftTrigger": "Gachette Gauche",
|
||||
"GamepadRightTrigger": "Gachette Droite",
|
||||
"GamepadDpadUp": "Haut",
|
||||
"GamepadDpadDown": "Bas",
|
||||
"GamepadDpadLeft": "Gauche",
|
||||
"GamepadDpadRight": "Droite",
|
||||
"GamepadMinus": "-",
|
||||
"GamepadPlus": "+",
|
||||
"GamepadGuide": "Guide",
|
||||
"GamepadMisc1": "Misc",
|
||||
"GamepadPaddle1": "Paddle 1",
|
||||
"GamepadPaddle2": "Paddle 2",
|
||||
"GamepadPaddle3": "Paddle 3",
|
||||
"GamepadPaddle4": "Paddle 4",
|
||||
"GamepadMisc1": "Autre",
|
||||
"GamepadPaddle1": "Palette 1",
|
||||
"GamepadPaddle2": "Palette 2",
|
||||
"GamepadPaddle3": "Palette 3",
|
||||
"GamepadPaddle4": "Palette 4",
|
||||
"GamepadTouchpad": "Touchpad",
|
||||
"GamepadSingleLeftTrigger0": "Left Trigger 0",
|
||||
"GamepadSingleRightTrigger0": "Right Trigger 0",
|
||||
"GamepadSingleLeftTrigger1": "Left Trigger 1",
|
||||
"GamepadSingleRightTrigger1": "Right Trigger 1",
|
||||
"StickLeft": "Left Stick",
|
||||
"StickRight": "Right Stick",
|
||||
"GamepadSingleLeftTrigger0": "Gachette Gauche 0",
|
||||
"GamepadSingleRightTrigger0": "Gachette Droite 0",
|
||||
"GamepadSingleLeftTrigger1": "Gachette Gauche 1",
|
||||
"GamepadSingleRightTrigger1": "Gachette Droite 1",
|
||||
"StickLeft": "Joystick Gauche",
|
||||
"StickRight": "Joystick Droite",
|
||||
"UserProfilesSelectedUserProfile": "Profil utilisateur sélectionné :",
|
||||
"UserProfilesSaveProfileName": "Enregistrer le nom du profil",
|
||||
"UserProfilesChangeProfileImage": "Changer l'image du profil",
|
||||
@@ -403,8 +411,9 @@
|
||||
"MenuBarFileToolsHideUi": "Masquer l'interface utilisateur",
|
||||
"GameListContextMenuRunApplication": "Démarrer l'application",
|
||||
"GameListContextMenuToggleFavorite": "Ajouter/Retirer des favoris",
|
||||
"GameListContextMenuToggleFavoriteToolTip": "Activer/désactiver le statut favori du jeu",
|
||||
"GameListContextMenuToggleFavoriteToolTip": "Définis un jeu comme faisant parti des favoris ou non",
|
||||
"SettingsTabGeneralTheme": "Thème :",
|
||||
"SettingsTabGeneralThemeAuto": "Auto",
|
||||
"SettingsTabGeneralThemeDark": "Sombre",
|
||||
"SettingsTabGeneralThemeLight": "Clair",
|
||||
"ControllerSettingsConfigureGeneral": "Configurer",
|
||||
@@ -443,7 +452,7 @@
|
||||
"DialogUpdaterNoInternetMessage": "Vous n'êtes pas connecté à Internet !",
|
||||
"DialogUpdaterNoInternetSubMessage": "Veuillez vérifier que vous disposez d'une connexion Internet fonctionnelle !",
|
||||
"DialogUpdaterDirtyBuildMessage": "Vous ne pouvez pas mettre à jour une version Dirty de Ryujinx !",
|
||||
"DialogUpdaterDirtyBuildSubMessage": "Veuillez télécharger Ryujinx sur https://https://github.com/GreemDev/Ryujinx/releases/ si vous recherchez une version prise en charge.",
|
||||
"DialogUpdaterDirtyBuildSubMessage": "Veuillez télécharger Ryujinx sur https://github.com/GreemDev/Ryujinx/releases/ si vous recherchez une version prise en charge.",
|
||||
"DialogRestartRequiredMessage": "Redémarrage requis",
|
||||
"DialogThemeRestartMessage": "Le thème a été enregistré. Un redémarrage est requis pour appliquer le thème.",
|
||||
"DialogThemeRestartSubMessage": "Voulez-vous redémarrer",
|
||||
@@ -456,14 +465,14 @@
|
||||
"DialogUninstallFileTypesSuccessMessage": "Types de fichiers désinstallés avec succès!",
|
||||
"DialogUninstallFileTypesErrorMessage": "Échec de la désinstallation des types de fichiers.",
|
||||
"DialogOpenSettingsWindowLabel": "Ouvrir la fenêtre de configuration",
|
||||
"DialogControllerAppletTitle": "Controller Applet",
|
||||
"DialogControllerAppletTitle": "Programme Manette",
|
||||
"DialogMessageDialogErrorExceptionMessage": "Erreur lors de l'affichage de la boîte de dialogue : {0}",
|
||||
"DialogSoftwareKeyboardErrorExceptionMessage": "Erreur lors de l'affichage du clavier logiciel: {0}",
|
||||
"DialogErrorAppletErrorExceptionMessage": "Erreur lors de l'affichage de la boîte de dialogue ErrorApplet: {0}",
|
||||
"DialogUserErrorDialogMessage": "{0}: {1}",
|
||||
"DialogUserErrorDialogInfoMessage": "\nPour plus d'informations sur la manière de corriger cette erreur, suivez notre Guide d'Installation.",
|
||||
"DialogUserErrorDialogTitle": "Erreur Ryujinx ({0})",
|
||||
"DialogAmiiboApiTitle": "Amiibo API",
|
||||
"DialogAmiiboApiTitle": "API Amiibo",
|
||||
"DialogAmiiboApiFailFetchMessage": "Une erreur est survenue lors de la récupération des informations de l'API.",
|
||||
"DialogAmiiboApiConnectErrorMessage": "Impossible de se connecter au serveur API Amiibo. Le service est peut-être hors service ou vous devriez peut-être vérifier que votre connexion internet est connectée.",
|
||||
"DialogProfileInvalidProfileErrorMessage": "Le profil {0} est incompatible avec le système de configuration de manette actuel.",
|
||||
@@ -489,7 +498,7 @@
|
||||
"DialogUserProfileUnsavedChangesTitle": "Avertissement - Modifications non enregistrées",
|
||||
"DialogUserProfileUnsavedChangesMessage": "Vous avez effectué des modifications sur ce profil d'utilisateur qui n'ont pas été enregistrées.",
|
||||
"DialogUserProfileUnsavedChangesSubMessage": "Voulez-vous annuler les modifications ?",
|
||||
"DialogControllerSettingsModifiedConfirmMessage": "Les paramètres actuels du contrôleur ont été mis à jour.",
|
||||
"DialogControllerSettingsModifiedConfirmMessage": "Les paramètres actuels de la manette ont été mis à jour.",
|
||||
"DialogControllerSettingsModifiedConfirmSubMessage": "Voulez-vous sauvegarder ?",
|
||||
"DialogLoadFileErrorMessage": "{0}. Fichier erroné : {1}",
|
||||
"DialogModAlreadyExistsMessage": "Le mod existe déjà",
|
||||
@@ -555,6 +564,9 @@
|
||||
"AddGameDirBoxTooltip": "Entrez un répertoire de jeux à ajouter à la liste",
|
||||
"AddGameDirTooltip": "Ajouter un répertoire de jeux à la liste",
|
||||
"RemoveGameDirTooltip": "Supprimer le répertoire de jeu sélectionné",
|
||||
"AddAutoloadDirBoxTooltip": "Entrez un répertoire de mises à jour/DLC à ajouter à la liste",
|
||||
"AddAutoloadDirTooltip": "Ajouter un répertoire de mises à jour/DLC à la liste",
|
||||
"RemoveAutoloadDirTooltip": "Supprimer le répertoire de mises à jour/DLC sélectionné",
|
||||
"CustomThemeCheckTooltip": "Utilisez un thème personnalisé Avalonia pour modifier l'apparence des menus de l'émulateur",
|
||||
"CustomThemePathTooltip": "Chemin vers le thème personnalisé de l'interface utilisateur",
|
||||
"CustomThemeBrowseTooltip": "Parcourir vers un thème personnalisé pour l'interface utilisateur",
|
||||
@@ -567,25 +579,25 @@
|
||||
"TimeTooltip": "Changer l'heure du système",
|
||||
"VSyncToggleTooltip": "La synchronisation verticale de la console émulée. Essentiellement un limiteur de trame pour la majorité des jeux ; le désactiver peut entraîner un fonctionnement plus rapide des jeux ou prolonger ou bloquer les écrans de chargement.\n\nPeut être activé ou désactivé en jeu avec un raccourci clavier de votre choix (F1 par défaut). Nous recommandons de le faire si vous envisagez de le désactiver.\n\nLaissez activé si vous n'êtes pas sûr.",
|
||||
"PptcToggleTooltip": "Sauvegarde les fonctions JIT afin qu'elles n'aient pas besoin d'être à chaque fois recompiler lorsque le jeu se charge.\n\nRéduit les lags et accélère considérablement le temps de chargement après le premier lancement d'un jeu.\n\nLaissez par défaut si vous n'êtes pas sûr.",
|
||||
"LowPowerPptcToggleTooltip": "Load the PPTC using a third of the amount of cores.",
|
||||
"FsIntegrityToggleTooltip": "Vérifie si des fichiers sont corrompus lors du lancement d'un jeu, et si des fichiers corrompus sont détectés, affiche une erreur de hachage dans la console.\n\nN'a aucun impact sur les performances et est destiné à aider le dépannage.\n\nLaissez activer en cas d'incertitude.",
|
||||
"AudioBackendTooltip": "Modifie le backend utilisé pour donnée un rendu audio.\n\nSDL2 est préféré, tandis que OpenAL et SoundIO sont utilisés comme backend secondaire. Le backend Dummy (Factice) ne rends aucun son.\n\nLaissez sur SDL2 si vous n'êtes pas sûr.",
|
||||
"MemoryManagerTooltip": "Change la façon dont la mémoire émulée est mappée et utiliser. Cela affecte grandement les performances du processeur.\n\nRéglez sur Host Uncheked en cas d'incertitude.",
|
||||
"MemoryManagerSoftwareTooltip": "Utilisez une table logicielle pour la traduction d'adresses. La plus grande précision est fournie, mais les performances en seront impacter.",
|
||||
"LowPowerPptcToggleTooltip": "Charger le PPTC en utilisant un tiers des coeurs.",
|
||||
"FsIntegrityToggleTooltip": "Vérifie si des fichiers sont corrompus lors du lancement d'un jeu, et si des fichiers corrompus sont détectés, affiche une erreur de hachage dans la console.\n\nN'a aucun impact sur les performances et est destiné à aider le dépannage.\n\nLaissez activé en cas d'incertitude.",
|
||||
"AudioBackendTooltip": "Modifie le backend utilisé pour donnée un rendu audio.\n\nSDL2 est recommandé, tandis que OpenAL et SoundIO sont utilisés comme backend secondaire. Le backend Dummy (Désactivé) ne rend aucun son.\n\nLaissez sur SDL2 si vous n'êtes pas sûr.",
|
||||
"MemoryManagerTooltip": "Change la façon dont la mémoire émulée est mappée et utilisée. Cela affecte grandement les performances du processeur.\n\nRéglez sur Host Uncheked en cas d'incertitude.",
|
||||
"MemoryManagerSoftwareTooltip": "Utilisez une table logicielle pour la traduction d'adresses. La plus grande précision est fournie, mais les performances en seront impactées.",
|
||||
"MemoryManagerHostTooltip": "Mappez directement la mémoire dans l'espace d'adresses de l'hôte. Compilation et exécution JIT beaucoup plus rapides.",
|
||||
"MemoryManagerUnsafeTooltip": "Mapper directement la mémoire dans la carte, mais ne pas masquer l'adresse dans l'espace d'adressage du client avant l'accès. Plus rapide, mais la sécurité sera négliger. L'application peut accéder à la mémoire depuis n'importe où dans Ryujinx, donc exécutez uniquement les programmes en qui vous avez confiance avec ce mode.",
|
||||
"MemoryManagerUnsafeTooltip": "Mapper directement la mémoire dans la carte, mais ne pas masquer l'adresse dans l'espace d'adressage du client avant l'accès. Plus rapide, mais la sécurité sera négligée. L'application peut accéder à la mémoire depuis n'importe où dans Ryujinx, donc exécutez uniquement les programmes en qui vous avez confiance avec ce mode.",
|
||||
"UseHypervisorTooltip": "Utiliser l'Hyperviseur au lieu du JIT. Améliore considérablement les performances lorsqu'il est disponible, mais peut être instable dans son état actuel.",
|
||||
"DRamTooltip": "Utilise une disposition alternative de la mémoire pour imiter le kit de développeur de la Switch.\n\nActiver cette option uniquement pour les packs de textures 4k ou les mods à résolution 4k.\nN'améliore pas les performances, cause des crashs dans certains jeux si activer.\n\nLaissez Désactiver en cas d'incertitude.",
|
||||
"DRamTooltip": "Utilise une disposition alternative de la mémoire avec 8GiO de DRAM pour imiter le kit de développeur de la Switch.\n\nActivez cette option pour les packs de textures 4k ou les mods à résolution 4k.\nN'améliore pas les performances.\n\nLaissez désactivé en cas d'incertitude.",
|
||||
"IgnoreMissingServicesTooltip": "Ignore les services Horizon OS non-intégré. Cela peut aider à contourner les plantages lors du démarrage de certains jeux.\n\nActivez-le en cas d'incertitude.",
|
||||
"GraphicsBackendThreadingTooltip": "Exécute des commandes du backend graphiques sur un second thread.\n\nAccélère la compilation des shaders, réduit les crashs et les lags, améliore les performances sur les pilotes GPU sans support de multithreading. Légère augementation des performances sur les pilotes avec multithreading intégrer.\n\nRéglez sur Auto en cas d'incertitude.",
|
||||
"GalThreadingTooltip": "Exécute des commandes du backend graphiques sur un second thread.\n\nAccélère la compilation des shaders, réduit les crashs et les lags, améliore les performances sur les pilotes GPU sans support de multithreading. Légère augementation des performances sur les pilotes avec multithreading intégrer.\n\nRéglez sur Auto en cas d'incertitude.",
|
||||
"ShaderCacheToggleTooltip": "Enregistre un cache de shaders sur le disque dur, réduit le lag lors de multiples exécutions.\n\nLaissez Activer si vous n'êtes pas sûr.",
|
||||
"ResolutionScaleTooltip": "Multiplie la résolution de rendu du jeu.\n\nQuelques jeux peuvent ne pas fonctionner avec cette fonctionnalité et sembler pixelisés même lorsque la résolution est augmentée ; pour ces jeux, vous devrez peut-être trouver des mods qui suppriment l'anti-aliasing ou qui augmentent leur résolution de rendu interne. Pour utiliser cette dernière option, vous voudrez probablement sélectionner \"Native\".\n\nCette option peut être modifiée pendant qu'un jeu est en cours d'exécution en cliquant sur \"Appliquer\" ci-dessous ; vous pouvez simplement déplacer la fenêtre des paramètres de côté et expérimenter jusqu'à ce que vous trouviez l'apparence souhaitée pour un jeu.\n\nGardez à l'esprit que 4x est excessif pour pratiquement n'importe quelle configuration.",
|
||||
"ResolutionScaleEntryTooltip": "Échelle de résolution à virgule flottante, telle que : 1.5. Les échelles non intégrales sont plus susceptibles de causer des problèmes ou des crashs.",
|
||||
"ShaderCacheToggleTooltip": "Enregistre un cache de shaders sur le disque dur, réduit le lag lors de multiples exécutions.\n\nLaissez activé si vous n'êtes pas sûr.",
|
||||
"ResolutionScaleTooltip": "Multiplie la résolution de rendu du jeu.\n\nQuelques jeux peuvent ne pas fonctionner avec cette fonctionnalité et sembler pixelisés même lorsque la résolution est augmentée ; pour ces jeux, vous devrez peut-être trouver des mods qui suppriment l'anti-aliasing ou qui augmentent leur résolution de rendu interne. Pour utiliser cette dernière option, vous voudrez probablement sélectionner \"Natif\".\n\nCette option peut être modifiée pendant qu'un jeu est en cours d'exécution en cliquant sur \"Appliquer\" ci-dessous ; vous pouvez simplement déplacer la fenêtre des paramètres sur le côté et expérimenter jusqu'à ce que vous trouviez l'apparence souhaitée pour un jeu.\n\nGardez à l'esprit que 4x est excessif pour pratiquement n'importe quelle configuration.",
|
||||
"ResolutionScaleEntryTooltip": "Échelle de résolution à virgule, telle que : 1.5. Les échelles non intégrales sont plus susceptibles de causer des problèmes ou des crashs.",
|
||||
"AnisotropyTooltip": "Niveau de filtrage anisotrope. Réglez sur Auto pour utiliser la valeur demandée par le jeu.",
|
||||
"AspectRatioTooltip": "Rapport d'aspect appliqué à la fenêtre du moteur de rendu.\n\nChangez cela uniquement si vous utilisez un mod de rapport d'aspect pour votre jeu, sinon les graphismes seront étirés.\n\nLaissez sur 16:9 si vous n'êtes pas sûr.",
|
||||
"ShaderDumpPathTooltip": "Chemin de copie des Shaders Graphiques",
|
||||
"FileLogTooltip": "Sauver le journal de la console dans un fichier journal sur le disque. Cela n'affecte pas les performances.",
|
||||
"AspectRatioTooltip": "Format d'affichage appliqué à la fenêtre du moteur de rendu.\n\nChangez cela uniquement si vous utilisez un mod changeant le format d'affichage pour votre jeu, sinon les graphismes seront étirés.\n\nLaissez sur 16:9 si vous n'êtes pas sûr.",
|
||||
"ShaderDumpPathTooltip": "Chemin de copie des Shaders",
|
||||
"FileLogTooltip": "Sauvegarde le journal de la console dans un fichier journal sur le disque. Cela n'affecte pas les performances.",
|
||||
"StubLogTooltip": "Affiche les messages de log dans la console. N'affecte pas les performances.",
|
||||
"InfoLogTooltip": "Affiche les messages de log d'informations dans la console. N'affecte pas les performances.",
|
||||
"WarnLogTooltip": "Affiche les messages d'avertissement dans la console. N'affecte pas les performances.",
|
||||
@@ -594,11 +606,13 @@
|
||||
"GuestLogTooltip": "Affiche les messages de log des invités dans la console. N'affecte pas les performances.",
|
||||
"FileAccessLogTooltip": "Affiche les messages de log d'accès aux fichiers dans la console.",
|
||||
"FSAccessLogModeTooltip": "Active la sortie du journal d'accès FS de la console. Les modes possibles sont 0-3",
|
||||
"DeveloperOptionTooltip": "Utiliser avec précaution",
|
||||
"DeveloperOptionTooltip": "À utiliser avec précaution",
|
||||
"OpenGlLogLevel": "Nécessite l'activation des niveaux de journalisation appropriés",
|
||||
"DebugLogTooltip": "Affiche les messages de débogage dans la console.\n\nN'utilisez ceci que si un membre du personnel le demande, car cela rendra les logs difficiles à lire et réduit les performances de l'émulateur.",
|
||||
"LoadApplicationFileTooltip": "Ouvrir un explorateur de fichiers pour choisir un fichier compatible Switch à charger",
|
||||
"LoadApplicationFolderTooltip": "Ouvrir un explorateur de fichiers pour choisir une application Switch compatible et décompressée à charger",
|
||||
"DebugLogTooltip": "Affiche les messages de débogage dans la console.\n\nN'utilisez ceci que si un développeur le demande, car cela rendra les logs difficiles à lire et réduit les performances de l'émulateur.",
|
||||
"LoadApplicationFileTooltip": "Ouvre l'explorateur de fichiers pour choisir un fichier compatible Switch à charger",
|
||||
"LoadApplicationFolderTooltip": "Ouvre l'explorateur de fichiers pour choisir une application Switch compatible et décompressée à charger",
|
||||
"LoadDlcFromFolderTooltip": "Ouvre l'explorateur de fichier pour choisir un ou plusieurs dossiers duquel charger les DLC",
|
||||
"LoadTitleUpdatesFromFolderTooltip": "Ouvre l'explorateur de fichier pour choisir un ou plusieurs dossiers duquel charger les mises à jour",
|
||||
"OpenRyujinxFolderTooltip": "Ouvrir le dossier du système de fichiers Ryujinx",
|
||||
"OpenRyujinxLogsTooltip": "Ouvre le dossier dans lequel les journaux sont écrits",
|
||||
"ExitTooltip": "Quitter Ryujinx",
|
||||
@@ -609,14 +623,14 @@
|
||||
"OpenAboutTooltip": "Ouvrir la fenêtre À Propos",
|
||||
"GridSize": "Taille de la grille",
|
||||
"GridSizeTooltip": "Modifier la taille des éléments de la grille",
|
||||
"SettingsTabSystemSystemLanguageBrazilianPortuguese": "Portugais brésilien",
|
||||
"SettingsTabSystemSystemLanguageBrazilianPortuguese": "Portugais Brésilien",
|
||||
"AboutRyujinxContributorsButtonHeader": "Voir tous les contributeurs",
|
||||
"SettingsTabSystemAudioVolume": "Volume :",
|
||||
"AudioVolumeTooltip": "Modifier le volume audio",
|
||||
"SettingsTabSystemEnableInternetAccess": "Accès Internet Invité/Mode LAN",
|
||||
"EnableInternetAccessTooltip": "Permet à l'application émulée de se connecter à Internet.\n\nLes jeux avec un mode LAN peuvent se connecter les uns aux autres lorsque cette option est cochée et que les systèmes sont connectés au même point d'accès. Cela inclut également les vrais consoles.\n\nCette option n'autorise PAS la connexion aux serveurs Nintendo. Elle peut faire planter certains jeux qui essaient de se connecter à l'Internet.\n\nLaissez DÉSACTIVÉ si vous n'êtes pas sûr.",
|
||||
"GameListContextMenuManageCheatToolTip": "Gérer la triche",
|
||||
"GameListContextMenuManageCheat": "Gérer la triche",
|
||||
"GameListContextMenuManageCheatToolTip": "Gérer les cheats",
|
||||
"GameListContextMenuManageCheat": "Gérer les cheats",
|
||||
"GameListContextMenuManageModToolTip": "Gérer les mods",
|
||||
"GameListContextMenuManageMod": "Gérer les mods",
|
||||
"ControllerSettingsStickRange": "Intervalle :",
|
||||
@@ -629,12 +643,12 @@
|
||||
"SettingsTabCpuCache": "Cache CPU",
|
||||
"SettingsTabCpuMemory": "Mémoire CPU",
|
||||
"DialogUpdaterFlatpakNotSupportedMessage": "Merci de mettre à jour Ryujinx via FlatHub.",
|
||||
"UpdaterDisabledWarningTitle": "Mise à jour désactivée !",
|
||||
"UpdaterDisabledWarningTitle": "Mises à jour désactivées !",
|
||||
"ControllerSettingsRotate90": "Faire pivoter de 90° à droite",
|
||||
"IconSize": "Taille d'icône",
|
||||
"IconSizeTooltip": "Changer la taille des icônes de jeu",
|
||||
"MenuBarOptionsShowConsole": "Afficher la console",
|
||||
"ShaderCachePurgeError": "Erreur lors de la purge du cache du Shader à {0}: {1}",
|
||||
"ShaderCachePurgeError": "Erreur lors de la purge des Shaders à {0}: {1}",
|
||||
"UserErrorNoKeys": "Clés introuvables",
|
||||
"UserErrorNoFirmware": "Firmware introuvable",
|
||||
"UserErrorFirmwareParsingFailed": "Erreur d'analyse du firmware",
|
||||
@@ -642,7 +656,7 @@
|
||||
"UserErrorUnknown": "Erreur inconnue",
|
||||
"UserErrorUndefined": "Erreur non définie",
|
||||
"UserErrorNoKeysDescription": "Ryujinx n'a pas pu trouver votre fichier 'prod.keys'",
|
||||
"UserErrorNoFirmwareDescription": "Ryujinx n'a pas trouvé de firmwares installés",
|
||||
"UserErrorNoFirmwareDescription": "Ryujinx n'a pas trouvé de firmware installé",
|
||||
"UserErrorFirmwareParsingFailedDescription": "Ryujinx n'a pas pu analyser le firmware fourni. Cela est généralement dû à des clés obsolètes.",
|
||||
"UserErrorApplicationNotFoundDescription": "Ryujinx n'a pas pu trouver une application valide dans le chemin indiqué.",
|
||||
"UserErrorUnknownDescription": "Une erreur inconnue est survenue !",
|
||||
@@ -650,6 +664,8 @@
|
||||
"OpenSetupGuideMessage": "Ouvrir le guide d'installation",
|
||||
"NoUpdate": "Aucune mise à jour",
|
||||
"TitleUpdateVersionLabel": "Version {0}",
|
||||
"TitleBundledUpdateVersionLabel": "Inclus avec le jeu: Version {0}",
|
||||
"TitleBundledDlcLabel": "Inclus avec le jeu:",
|
||||
"RyujinxInfo": "Ryujinx - Info",
|
||||
"RyujinxConfirm": "Ryujinx - Confirmation",
|
||||
"FileDialogAllTypes": "Tous les types",
|
||||
@@ -689,8 +705,8 @@
|
||||
"SettingsTabHotkeysScreenshotHotkey": "Capture d'écran :",
|
||||
"SettingsTabHotkeysShowUiHotkey": "Afficher UI :",
|
||||
"SettingsTabHotkeysPauseHotkey": "Suspendre :",
|
||||
"SettingsTabHotkeysToggleMuteHotkey": "Muet : ",
|
||||
"ControllerMotionTitle": "Réglages du contrôle par mouvement",
|
||||
"SettingsTabHotkeysToggleMuteHotkey": "Couper le son :",
|
||||
"ControllerMotionTitle": "Réglages des contrôles par mouvement",
|
||||
"ControllerRumbleTitle": "Paramètres de vibration",
|
||||
"SettingsSelectThemeFileDialogTitle": "Sélectionner un fichier de thème",
|
||||
"SettingsXamlThemeFile": "Fichier thème Xaml",
|
||||
@@ -703,13 +719,20 @@
|
||||
"SelectUpdateDialogTitle": "Sélectionner les fichiers de mise à jour",
|
||||
"SelectModDialogTitle": "Sélectionner le répertoire du mod",
|
||||
"UserProfileWindowTitle": "Gestionnaire de profils utilisateur",
|
||||
"CheatWindowTitle": "Gestionnaire de triches",
|
||||
"CheatWindowTitle": "Gestionnaire de cheats",
|
||||
"DlcWindowTitle": "Gérer le contenu téléchargeable pour {0} ({1})",
|
||||
"ModWindowTitle": "Gérer les mods pour {0} ({1})",
|
||||
"UpdateWindowTitle": "Gestionnaire de mises à jour",
|
||||
"UpdateWindowUpdateAddedMessage": "{0} nouvelle(s) mise(s) à jour ajoutée(s)",
|
||||
"UpdateWindowBundledContentNotice": "Les mises à jour incluses avec le jeu ne peuvent pas être supprimées mais peuvent être désactivées.",
|
||||
"CheatWindowHeading": "Cheats disponibles pour {0} [{1}]",
|
||||
"BuildId": "BuildId:",
|
||||
"DlcWindowBundledContentNotice": "Les DLC inclus avec le jeu ne peuvent pas être supprimés mais peuvent être désactivés.",
|
||||
"DlcWindowHeading": "{0} Contenu(s) téléchargeable(s)",
|
||||
"DlcWindowDlcAddedMessage": "{0} nouveau(x) contenu(s) téléchargeable(s) ajouté(s)",
|
||||
"AutoloadDlcAddedMessage": "{0} nouveau(x) contenu(s) téléchargeable(s) ajouté(s)",
|
||||
"AutoloadUpdateAddedMessage": "{0} nouvelle(s) mise(s) à jour ajoutée(s)",
|
||||
"AutoloadDlcAndUpdateAddedMessage": "{0} nouveau(x) contenu(s) téléchargeable(s) et {1} nouvelle(s) mise(s) à jour ajouté(s)",
|
||||
"ModWindowHeading": "{0} Mod(s)",
|
||||
"UserProfilesEditProfile": "Éditer la sélection",
|
||||
"Cancel": "Annuler",
|
||||
@@ -737,7 +760,7 @@
|
||||
"SettingsTabHotkeysVolumeUpHotkey": "Augmenter le volume :",
|
||||
"SettingsTabHotkeysVolumeDownHotkey": "Diminuer le volume :",
|
||||
"SettingsEnableMacroHLE": "Activer les macros HLE",
|
||||
"SettingsEnableMacroHLETooltip": "Émulation de haut niveau du code de Macro GPU.\n\nAméliore les performances, mais peut causer des artefacts graphiques dans certains jeux.\n\nLaissez ACTIVER si vous n'êtes pas sûr.",
|
||||
"SettingsEnableMacroHLETooltip": "Émulation de haut niveau du code de Macro GPU.\n\nAméliore les performances, mais peut causer des artefacts graphiques dans certains jeux.\n\nLaissez ACTIVÉ si vous n'êtes pas sûr.",
|
||||
"SettingsEnableColorSpacePassthrough": "Traversée de l'espace colorimétrique",
|
||||
"SettingsEnableColorSpacePassthroughTooltip": "Dirige l'interface graphique Vulkan pour qu'il transmette les informations de couleur sans spécifier d'espace colorimétrique. Pour les utilisateurs possédant des écrans Wide Color Gamut, cela peut entraîner des couleurs plus vives, au détriment de l'exactitude des couleurs.",
|
||||
"VolumeShort": "Vol",
|
||||
@@ -749,17 +772,18 @@
|
||||
"Name": "Nom ",
|
||||
"Size": "Taille",
|
||||
"Search": "Rechercher",
|
||||
"UserProfilesRecoverLostAccounts": "Récupérer les comptes perdus",
|
||||
"UserProfilesRecoverLostAccounts": "Récupérer les profils perdus",
|
||||
"Recover": "Récupérer",
|
||||
"UserProfilesRecoverHeading": "Des sauvegardes ont été trouvées pour les comptes suivants",
|
||||
"UserProfilesRecoverHeading": "Des sauvegardes ont été trouvées pour les profils suivants",
|
||||
"UserProfilesRecoverEmptyList": "Aucun profil à restaurer",
|
||||
"GraphicsAATooltip": "FXAA floute la plupart de l'image, tandis que SMAA tente de détecter les contours dentelés et de les lisser.\n\nIl n'est pas recommandé de l'utiliser en conjonction avec le filtre de mise à l'échelle FSR.\n\nCette option peut être modifiée pendant qu'un jeu est en cours d'exécution en cliquant sur \"Appliquer\" ci-dessous ; vous pouvez simplement déplacer la fenêtre des paramètres de côté et expérimenter jusqu'à ce que vous trouviez l'apparence souhaitée pour un jeu.\n\nLaissez sur NONE si vous n'êtes pas sûr.",
|
||||
"GraphicsAATooltip": "FXAA floute la plupart de l'image, tandis que SMAA tente de détecter les contours dentelés et de les lisser.\n\nIl n'est pas recommandé de l'utiliser en conjonction avec le filtre de mise à l'échelle FSR.\n\nCette option peut être modifiée pendant qu'un jeu est en cours d'exécution en cliquant sur \"Appliquer\" ci-dessous ; vous pouvez simplement déplacer la fenêtre des paramètres sur le côté et expérimenter jusqu'à ce que vous trouviez l'apparence souhaitée pour un jeu.\n\nLaissez sur AUCUN si vous n'êtes pas sûr.",
|
||||
"GraphicsAALabel": "Anticrénelage :",
|
||||
"GraphicsScalingFilterLabel": "Filtre de mise à l'échelle :",
|
||||
"GraphicsScalingFilterTooltip": "Choisissez le filtre de mise à l'échelle qui sera appliqué lors de l'utilisation de la mise à l'échelle de la résolution.\n\nLe filtre bilinéaire fonctionne bien pour les jeux en 3D et constitue une option par défaut sûre.\n\nLe filtre le plus proche est recommandé pour les jeux de pixel art.\n\nFSR 1.0 est simplement un filtre de netteté, non recommandé pour une utilisation avec FXAA ou SMAA.\n\nCette option peut être modifiée pendant qu'un jeu est en cours d'exécution en cliquant sur \"Appliquer\" ci-dessous ; vous pouvez simplement déplacer la fenêtre des paramètres de côté et expérimenter jusqu'à ce que vous trouviez l'aspect souhaité pour un jeu.\n\nLaissez sur BILINEAR si vous n'êtes pas sûr.",
|
||||
"GraphicsScalingFilterTooltip": "Choisissez le filtre de mise à l'échelle qui sera appliqué lors de l'utilisation de la mise à l'échelle de la résolution.\n\nLe filtre bilinéaire fonctionne bien pour les jeux en 3D et constitue une option par défaut sûre.\n\nLe filtre le plus proche est recommandé pour les jeux de pixel art.\n\nFSR 1.0 est simplement un filtre de netteté, non recommandé pour une utilisation avec FXAA ou SMAA.\n\nCette option peut être modifiée pendant qu'un jeu est en cours d'exécution en cliquant sur \"Appliquer\" ci-dessous ; vous pouvez simplement déplacer la fenêtre des paramètres de côté et expérimenter jusqu'à ce que vous trouviez l'aspect souhaité pour un jeu.\n\nLaissez sur BILINÉAIRE si vous n'êtes pas sûr.",
|
||||
"GraphicsScalingFilterBilinear": "Bilinéaire",
|
||||
"GraphicsScalingFilterNearest": "Le plus proche",
|
||||
"GraphicsScalingFilterFsr": "FSR",
|
||||
"GraphicsScalingFilterArea": "Zone",
|
||||
"GraphicsScalingFilterLevelLabel": "Niveau ",
|
||||
"GraphicsScalingFilterLevelTooltip": "Définissez le niveau de netteté FSR 1.0. Plus élevé signifie plus net.",
|
||||
"SmaaLow": "SMAA Faible",
|
||||
@@ -769,7 +793,7 @@
|
||||
"UserEditorTitle": "Modifier Utilisateur",
|
||||
"UserEditorTitleCreate": "Créer Utilisateur",
|
||||
"SettingsTabNetworkInterface": "Interface Réseau :",
|
||||
"NetworkInterfaceTooltip": "L'interface réseau utilisée pour les fonctionnalités LAN/LDN.\n\nEn conjonction avec un VPN ou XLink Kai et un jeu prenant en charge le LAN, peut être utilisée pour simuler une connexion sur le même réseau via Internet.\n\nLaissez sur DEFAULT si vous n'êtes pas sûr.",
|
||||
"NetworkInterfaceTooltip": "L'interface réseau utilisée pour les fonctionnalités LAN/LDN.\n\nEn conjonction avec un VPN ou XLink Kai et un jeu prenant en charge le LAN, peut être utilisée pour simuler une connexion sur le même réseau via Internet.\n\nLaissez sur PAR DÉFAU T si vous n'êtes pas sûr.",
|
||||
"NetworkInterfaceDefault": "Par défaut",
|
||||
"PackagingShaders": "Empaquetage des Shaders",
|
||||
"AboutChangelogButton": "Voir le Changelog sur GitHub",
|
||||
|
||||
@@ -145,7 +145,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "האצות",
|
||||
"SettingsTabSystemHacksNote": "עלול לגרום לאי יציבות",
|
||||
"SettingsTabSystemExpandDramSize": "השתמש בפריסת זיכרון חלופית (נועד למפתחים)",
|
||||
"SettingsTabSystemDramSize": "השתמש בפריסת זיכרון חלופית (נועד למפתחים)",
|
||||
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||
"SettingsTabSystemIgnoreMissingServices": "התעלם משירותים חסרים",
|
||||
"SettingsTabGraphics": "גרפיקה",
|
||||
"SettingsTabGraphicsAPI": "ממשק גראפי",
|
||||
|
||||
@@ -145,7 +145,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "Espedienti",
|
||||
"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",
|
||||
"SettingsTabGraphics": "Grafica",
|
||||
"SettingsTabGraphicsAPI": "API grafica",
|
||||
|
||||
@@ -145,7 +145,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "ハック",
|
||||
"SettingsTabSystemHacksNote": " (挙動が不安定になる可能性があります)",
|
||||
"SettingsTabSystemExpandDramSize": "DRAMサイズを6GiBに拡大する",
|
||||
"SettingsTabSystemDramSize": "DRAMサイズ:",
|
||||
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||
"SettingsTabSystemIgnoreMissingServices": "未実装サービスを無視する",
|
||||
"SettingsTabGraphics": "グラフィックス",
|
||||
"SettingsTabGraphicsAPI": "グラフィックスAPI",
|
||||
|
||||
@@ -145,7 +145,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "해킹",
|
||||
"SettingsTabSystemHacksNote": "불안정성을 유발할 수 있음",
|
||||
"SettingsTabSystemExpandDramSize": "대체 메모리 레이아웃 사용(개발자)",
|
||||
"SettingsTabSystemDramSize": "대체 메모리 레이아웃 사용(개발자)",
|
||||
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||
"SettingsTabSystemIgnoreMissingServices": "누락된 서비스 무시",
|
||||
"SettingsTabGraphics": "그래픽",
|
||||
"SettingsTabGraphicsAPI": "그래픽 API",
|
||||
|
||||
@@ -145,7 +145,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "Hacki",
|
||||
"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",
|
||||
"SettingsTabGraphics": "Grafika",
|
||||
"SettingsTabGraphicsAPI": "Graficzne API",
|
||||
|
||||
@@ -145,7 +145,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "Hacks",
|
||||
"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",
|
||||
"SettingsTabGraphics": "Gráficos",
|
||||
"SettingsTabGraphicsAPI": "API gráfica",
|
||||
|
||||
@@ -145,7 +145,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "Хаки",
|
||||
"SettingsTabSystemHacksNote": "Возможна нестабильная работа",
|
||||
"SettingsTabSystemExpandDramSize": "Использовать альтернативный макет памяти (для разработчиков)",
|
||||
"SettingsTabSystemDramSize": "Использовать альтернативный макет памяти (для разработчиков)",
|
||||
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||
"SettingsTabSystemIgnoreMissingServices": "Игнорировать отсутствующие службы",
|
||||
"SettingsTabGraphics": "Графика",
|
||||
"SettingsTabGraphicsAPI": "Графические API",
|
||||
|
||||
@@ -145,7 +145,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "แฮ็ก",
|
||||
"SettingsTabSystemHacksNote": "อาจทำให้เกิดข้อผิดพลาดได้",
|
||||
"SettingsTabSystemExpandDramSize": "ใช้รูปแบบหน่วยความจำสำรอง (โหมดนักพัฒนา)",
|
||||
"SettingsTabSystemDramSize": "ใช้รูปแบบหน่วยความจำสำรอง (โหมดนักพัฒนา)",
|
||||
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||
"SettingsTabSystemIgnoreMissingServices": "ไม่สนใจบริการที่ขาดหายไป",
|
||||
"SettingsTabGraphics": "กราฟิก",
|
||||
"SettingsTabGraphicsAPI": "กราฟฟิก API",
|
||||
|
||||
@@ -145,7 +145,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "Hack'ler",
|
||||
"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",
|
||||
"SettingsTabGraphics": "Grafikler",
|
||||
"SettingsTabGraphicsAPI": "Grafikler API",
|
||||
|
||||
@@ -145,7 +145,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "Хитрощі",
|
||||
"SettingsTabSystemHacksNote": " (може викликати нестабільність)",
|
||||
"SettingsTabSystemExpandDramSize": "Використовувати альтернативне розташування пам'яті (розробники)",
|
||||
"SettingsTabSystemDramSize": "Використовувати альтернативне розташування пам'яті (розробники)",
|
||||
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||
"SettingsTabSystemIgnoreMissingServices": "Ігнорувати відсутні служби",
|
||||
"SettingsTabGraphics": "Графіка",
|
||||
"SettingsTabGraphicsAPI": "Графічний API",
|
||||
|
||||
@@ -10,7 +10,10 @@
|
||||
"SettingsTabSystemUseHypervisor": "使用 Hypervisor 虚拟化",
|
||||
"MenuBarFile": "文件(_F)",
|
||||
"MenuBarFileOpenFromFile": "加载游戏文件(_L)",
|
||||
"MenuBarFileOpenFromFileError": "未发现应用",
|
||||
"MenuBarFileOpenUnpacked": "加载解包后的游戏(_U)",
|
||||
"MenuBarFileLoadDlcFromFolder": "从文件夹加载DLC",
|
||||
"MenuBarFileLoadTitleUpdatesFromFolder": "从文件夹加载游戏更新",
|
||||
"MenuBarFileOpenEmuFolder": "打开 Ryujinx 系统目录",
|
||||
"MenuBarFileOpenLogsFolder": "打开日志目录",
|
||||
"MenuBarFileExit": "退出(_E)",
|
||||
@@ -102,6 +105,7 @@
|
||||
"SettingsTabGeneralHideCursorOnIdle": "自动隐藏",
|
||||
"SettingsTabGeneralHideCursorAlways": "始终隐藏",
|
||||
"SettingsTabGeneralGameDirectories": "游戏目录",
|
||||
"SettingsTabGeneralAutoloadDirectories": "自动加载DLC/游戏更新目录",
|
||||
"SettingsTabGeneralAdd": "添加",
|
||||
"SettingsTabGeneralRemove": "删除",
|
||||
"SettingsTabSystem": "系统",
|
||||
@@ -145,7 +149,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "修改",
|
||||
"SettingsTabSystemHacksNote": "会导致模拟器不稳定",
|
||||
"SettingsTabSystemExpandDramSize": "使用开发机的内存布局(开发人员使用)",
|
||||
"SettingsTabSystemDramSize": "使用开发机的内存布局(开发人员使用)",
|
||||
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||
"SettingsTabSystemIgnoreMissingServices": "忽略缺失的服务",
|
||||
"SettingsTabGraphics": "图形",
|
||||
"SettingsTabGraphicsAPI": "图形 API",
|
||||
@@ -405,6 +413,7 @@
|
||||
"GameListContextMenuToggleFavorite": "收藏",
|
||||
"GameListContextMenuToggleFavoriteToolTip": "切换游戏的收藏状态",
|
||||
"SettingsTabGeneralTheme": "主题:",
|
||||
"SettingsTabGeneralThemeAuto": "自动",
|
||||
"SettingsTabGeneralThemeDark": "深色(暗黑)",
|
||||
"SettingsTabGeneralThemeLight": "浅色(亮色)",
|
||||
"ControllerSettingsConfigureGeneral": "配置",
|
||||
@@ -555,6 +564,9 @@
|
||||
"AddGameDirBoxTooltip": "输入要添加的游戏目录",
|
||||
"AddGameDirTooltip": "添加游戏目录到列表中",
|
||||
"RemoveGameDirTooltip": "移除选中的目录",
|
||||
"AddAutoloadDirBoxTooltip": "输入需要添加到列表中的自动加载目录",
|
||||
"AddAutoloadDirTooltip": "添加一个自动加载目录到列表中",
|
||||
"RemoveAutoloadDirTooltip": "移除被选中的自动加载目录",
|
||||
"CustomThemeCheckTooltip": "使用自定义的 Avalonia 主题作为模拟器菜单的外观",
|
||||
"CustomThemePathTooltip": "自定义主题的目录",
|
||||
"CustomThemeBrowseTooltip": "查找自定义主题",
|
||||
@@ -567,7 +579,7 @@
|
||||
"TimeTooltip": "更改系统时间",
|
||||
"VSyncToggleTooltip": "模拟控制台的垂直同步,开启后会降低大部分游戏的帧率。关闭后,可以获得更高的帧率,但也可能导致游戏画面加载耗时更长或卡住。\n\n在游戏中可以使用热键进行切换(默认为 F1 键)。\n\n如果不确定,请保持开启状态。",
|
||||
"PptcToggleTooltip": "缓存已编译的游戏指令,这样每次游戏加载时就无需重新编译。\n\n可以减少卡顿和启动时间,提高游戏响应速度。\n\n如果不确定,请保持开启状态。",
|
||||
"LowPowerPptcToggleTooltip": "Load the PPTC using a third of the amount of cores.",
|
||||
"LowPowerPptcToggleTooltip": "使用三分之一的核心数加载PPTC.",
|
||||
"FsIntegrityToggleTooltip": "启动游戏时检查游戏文件的完整性,并在日志中记录损坏的文件。\n\n对性能没有影响,用于排查故障。\n\n如果不确定,请保持开启状态。",
|
||||
"AudioBackendTooltip": "更改音频处理引擎。\n\n推荐选择“SDL2”,另外“OpenAL”和“SoundIO”可以作为备选,选择“无”将没有声音。\n\n如果不确定,请设置为“SDL2”。",
|
||||
"MemoryManagerTooltip": "更改模拟器内存映射和访问的方式,对模拟器 CPU 的性能影响很大。\n\n如果不确定,请设置为“跳过检查的本机映射”。",
|
||||
@@ -599,6 +611,8 @@
|
||||
"DebugLogTooltip": "在控制台中显示调试日志。\n\n仅在特别需要时使用此功能,因为它会导致日志信息难以阅读,并降低模拟器性能。",
|
||||
"LoadApplicationFileTooltip": "选择 Switch 游戏文件并加载",
|
||||
"LoadApplicationFolderTooltip": "选择解包后的 Switch 游戏目录并加载",
|
||||
"LoadDlcFromFolderTooltip": "打开文件资源管理器以选择一个或多个文件夹来批量加载DLC。",
|
||||
"LoadTitleUpdatesFromFolderTooltip": "打开文件资源管理器以选择一个或多个文件夹来批量加载游戏更新。",
|
||||
"OpenRyujinxFolderTooltip": "打开 Ryujinx 模拟器系统目录",
|
||||
"OpenRyujinxLogsTooltip": "打开日志存放的目录",
|
||||
"ExitTooltip": "退出 Ryujinx 模拟器",
|
||||
@@ -650,6 +664,8 @@
|
||||
"OpenSetupGuideMessage": "打开安装指南",
|
||||
"NoUpdate": "无更新(或不加载游戏更新)",
|
||||
"TitleUpdateVersionLabel": "游戏更新的版本 {0}",
|
||||
"TitleBundledUpdateVersionLabel": "捆绑:版本 {0}",
|
||||
"TitleBundledDlcLabel": "捆绑:",
|
||||
"RyujinxInfo": "Ryujinx - 信息",
|
||||
"RyujinxConfirm": "Ryujinx - 确认",
|
||||
"FileDialogAllTypes": "全部类型",
|
||||
@@ -707,10 +723,17 @@
|
||||
"DlcWindowTitle": "管理 {0} ({1}) 的 DLC",
|
||||
"ModWindowTitle": "管理 {0} ({1}) 的 MOD",
|
||||
"UpdateWindowTitle": "游戏更新管理器",
|
||||
"UpdateWindowUpdateAddedMessage": "{0} 个更新被添加",
|
||||
"UpdateWindowBundledContentNotice": "捆绑的更新无法被移除,只可被禁用。",
|
||||
"CheatWindowHeading": "适用于 {0} [{1}] 的金手指",
|
||||
"BuildId": "游戏版本 ID:",
|
||||
"DlcWindowBundledContentNotice": "捆绑的DLC无法被移除,只可被禁用。",
|
||||
"DlcWindowHeading": "{0} 个 DLC",
|
||||
"ModWindowHeading": "{0} 个 MOD",
|
||||
"DlcWindowDlcAddedMessage": "{0} 个DLC被添加",
|
||||
"AutoloadDlcAddedMessage": "{0} 个DLC被添加",
|
||||
"AutoloadUpdateAddedMessage": "{0} 个游戏更新被添加",
|
||||
"AutoloadDlcAndUpdateAddedMessage": "{0} 个DLC和{1} 个游戏更新被添加",
|
||||
"ModWindowHeading": "{0} Mod(s)",
|
||||
"UserProfilesEditProfile": "编辑所选",
|
||||
"Cancel": "取消",
|
||||
"Save": "保存",
|
||||
@@ -756,10 +779,11 @@
|
||||
"GraphicsAATooltip": "抗锯齿是一种图形处理技术,用于减少图像边缘的锯齿状现象,使图像更加平滑。\n\nFXAA(快速近似抗锯齿)是一种性能开销相对较小的抗锯齿方法,但可能会使得整体图像看起来有些模糊。\n\nSMAA(增强型子像素抗锯齿)则更加精细,它会尝试找到锯齿边缘并平滑它们,相比 FXAA 有更好的图像质量,但性能开销可能会稍大一些。\n\n如果开启了 FSR(FidelityFX Super Resolution,超级分辨率锐画技术)来提高性能或图像质量,不建议再启用抗锯齿,因为它们会产生不必要的图形处理开销,或者相互之间效果不协调。\n\n在游戏运行时,通过点击下面的“应用”按钮可以使设置生效;你可以将设置窗口移开,并试验找到您喜欢的游戏画面效果。\n\n如果不确定,请保持为“无”。",
|
||||
"GraphicsAALabel": "抗锯齿:",
|
||||
"GraphicsScalingFilterLabel": "缩放过滤:",
|
||||
"GraphicsScalingFilterTooltip": "选择在分辨率缩放时将使用的缩放过滤器。\n\nBilinear(双线性过滤)对于3D游戏效果较好,是一个安全的默认选项。\n\nNearest(最近邻过滤)推荐用于像素艺术游戏。\n\nFSR(超级分辨率锐画)只是一个锐化过滤器,不推荐与 FXAA 或 SMAA 抗锯齿一起使用。\n\n在游戏运行时,通过点击下面的“应用”按钮可以使设置生效;你可以将设置窗口移开,并试验找到您喜欢的游戏画面效果。\n\n如果不确定,请保持为“Bilinear(双线性过滤)”。",
|
||||
"GraphicsScalingFilterTooltip": "选择在分辨率缩放时将使用的缩放过滤器。\n\nBilinear(双线性过滤)对于3D游戏效果较好,是一个安全的默认选项。\n\nNearest(最近邻过滤)推荐用于像素艺术游戏。\n\nFSR(超级分辨率锐画)只是一个锐化过滤器,不推荐与 FXAA 或 SMAA 抗锯齿一起使用。\n\nArea(局部过滤),当渲染分辨率大于窗口实际分辨率,推荐该选项。该选项在渲染比例大于2.0的情况下,可以实现超采样的效果。\n\n在游戏运行时,通过点击下面的“应用”按钮可以使设置生效;你可以将设置窗口移开,并试验找到您喜欢的游戏画面效果。\n\n如果不确定,请保持为“Bilinear(双线性过滤)”。",
|
||||
"GraphicsScalingFilterBilinear": "Bilinear(双线性过滤)",
|
||||
"GraphicsScalingFilterNearest": "Nearest(最近邻过滤)",
|
||||
"GraphicsScalingFilterFsr": "FSR(超级分辨率锐画技术)",
|
||||
"GraphicsScalingFilterArea": "Area(局部过滤)",
|
||||
"GraphicsScalingFilterLevelLabel": "等级",
|
||||
"GraphicsScalingFilterLevelTooltip": "设置 FSR 1.0 的锐化等级,数值越高,图像越锐利。",
|
||||
"SmaaLow": "SMAA 低质量",
|
||||
|
||||
@@ -145,7 +145,11 @@
|
||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||
"SettingsTabSystemHacks": "補釘修正",
|
||||
"SettingsTabSystemHacksNote": "可能導致模擬器不穩定",
|
||||
"SettingsTabSystemExpandDramSize": "使用替代的記憶體配置 (開發者專用)",
|
||||
"SettingsTabSystemDramSize": "使用替代的記憶體配置 (開發者專用)",
|
||||
"SettingsTabSystemDramSize4GiB": "4GiB",
|
||||
"SettingsTabSystemDramSize6GiB": "6GiB",
|
||||
"SettingsTabSystemDramSize8GiB": "8GiB",
|
||||
"SettingsTabSystemDramSize12GiB": "12GiB",
|
||||
"SettingsTabSystemIgnoreMissingServices": "忽略缺少的模擬器功能",
|
||||
"SettingsTabGraphics": "圖形",
|
||||
"SettingsTabGraphicsAPI": "圖形 API",
|
||||
|
||||
@@ -21,7 +21,8 @@ namespace Ryujinx.Ava.Common.Locale
|
||||
new CompiledBindingPathBuilder()
|
||||
.Property(PropertyInfo, PropertyInfoAccessorFactory.CreateInpcPropertyAccessor)
|
||||
.Build()
|
||||
) { Source = LocaleManager.Instance }
|
||||
)
|
||||
{ Source = LocaleManager.Instance }
|
||||
.ProvideValue(serviceProvider);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -466,7 +466,7 @@ namespace Ryujinx.Modules
|
||||
using Stream updateFileStream = File.Open(updateFile, FileMode.Create);
|
||||
|
||||
long totalBytes = response.Content.Headers.ContentLength.Value;
|
||||
long byteWritten = 0;
|
||||
long bytesWritten = 0;
|
||||
|
||||
byte[] buffer = new byte[32 * 1024];
|
||||
|
||||
@@ -479,9 +479,10 @@ namespace Ryujinx.Modules
|
||||
break;
|
||||
}
|
||||
|
||||
byteWritten += readSize;
|
||||
bytesWritten += readSize;
|
||||
|
||||
taskDialog.SetProgressBarState(GetPercentage(byteWritten, totalBytes), TaskDialogProgressState.Normal);
|
||||
taskDialog.SetProgressBarState(GetPercentage(bytesWritten, totalBytes), TaskDialogProgressState.Normal);
|
||||
App.SetTaskbarProgressValue(bytesWritten, totalBytes);
|
||||
|
||||
updateFileStream.Write(buffer, 0, readSize);
|
||||
}
|
||||
|
||||
@@ -198,9 +198,6 @@ namespace Ryujinx.Ava.UI.Applet
|
||||
return showDetails;
|
||||
}
|
||||
|
||||
public IDynamicTextInputHandler CreateDynamicTextInputHandler()
|
||||
{
|
||||
return new AvaloniaDynamicTextInputHandler(_parent);
|
||||
}
|
||||
public IDynamicTextInputHandler CreateDynamicTextInputHandler() => new AvaloniaDynamicTextInputHandler(_parent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,14 +102,8 @@ namespace Ryujinx.Ava.UI.Applet
|
||||
|
||||
public bool TextProcessingEnabled
|
||||
{
|
||||
get
|
||||
{
|
||||
return Volatile.Read(ref _canProcessInput);
|
||||
}
|
||||
set
|
||||
{
|
||||
Volatile.Write(ref _canProcessInput, value);
|
||||
}
|
||||
get => Volatile.Read(ref _canProcessInput);
|
||||
set => Volatile.Write(ref _canProcessInput, value);
|
||||
}
|
||||
|
||||
public event DynamicTextChangedHandler TextChangedEvent;
|
||||
@@ -135,17 +129,14 @@ namespace Ryujinx.Ava.UI.Applet
|
||||
});
|
||||
}
|
||||
|
||||
public void SetText(string text, int cursorBegin)
|
||||
{
|
||||
public void SetText(string text, int cursorBegin) =>
|
||||
Dispatcher.UIThread.Post(() =>
|
||||
{
|
||||
_hiddenTextBox.Text = text;
|
||||
_hiddenTextBox.CaretIndex = cursorBegin;
|
||||
});
|
||||
}
|
||||
|
||||
public void SetText(string text, int cursorBegin, int cursorEnd)
|
||||
{
|
||||
public void SetText(string text, int cursorBegin, int cursorEnd) =>
|
||||
Dispatcher.UIThread.Post(() =>
|
||||
{
|
||||
_hiddenTextBox.Text = text;
|
||||
@@ -154,4 +145,3 @@ namespace Ryujinx.Ava.UI.Applet
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,16 +12,7 @@
|
||||
x:DataType="applet:ControllerAppletDialog">
|
||||
<Grid
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
VerticalAlignment="Stretch" RowDefinitions="Auto,*,Auto" ColumnDefinitions="*,Auto">
|
||||
<Border
|
||||
Grid.Column="0"
|
||||
Grid.Row="0"
|
||||
|
||||
@@ -17,16 +17,7 @@
|
||||
<Grid
|
||||
Margin="20"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
VerticalAlignment="Stretch" RowDefinitions="Auto,*,Auto" ColumnDefinitions="Auto,*">
|
||||
<Image
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
|
||||
@@ -12,18 +12,7 @@
|
||||
<Grid
|
||||
Margin="20"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
VerticalAlignment="Stretch" RowDefinitions="Auto,Auto,Auto,Auto,Auto" ColumnDefinitions="Auto,*">
|
||||
<Image
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="5"
|
||||
|
||||
@@ -84,7 +84,7 @@ namespace Ryujinx.Ava.UI.Helpers
|
||||
return await ShowContentDialog(title, content, primaryButton, secondaryButton, closeButton, primaryButtonResult, deferResetEvent, deferCloseAction);
|
||||
}
|
||||
|
||||
public static Task<UserResult> ShowDeferredContentDialog(
|
||||
public static async Task<UserResult> ShowDeferredContentDialog(
|
||||
Window window,
|
||||
string title,
|
||||
string primaryText,
|
||||
@@ -98,7 +98,7 @@ namespace Ryujinx.Ava.UI.Helpers
|
||||
{
|
||||
bool startedDeferring = false;
|
||||
|
||||
return ShowTextDialog(
|
||||
return await ShowTextDialog(
|
||||
title,
|
||||
primaryText,
|
||||
secondaryText,
|
||||
@@ -209,14 +209,14 @@ namespace Ryujinx.Ava.UI.Helpers
|
||||
closeButton,
|
||||
(int)Symbol.Important);
|
||||
|
||||
internal static Task<UserResult> CreateConfirmationDialog(
|
||||
internal static async Task<UserResult> CreateConfirmationDialog(
|
||||
string primaryText,
|
||||
string secondaryText,
|
||||
string acceptButtonText,
|
||||
string cancelButtonText,
|
||||
string title,
|
||||
UserResult primaryButtonResult = UserResult.Yes)
|
||||
=> ShowTextDialog(
|
||||
=> await ShowTextDialog(
|
||||
string.IsNullOrWhiteSpace(title) ? LocaleManager.Instance[LocaleKeys.DialogConfirmationTitle] : title,
|
||||
primaryText,
|
||||
secondaryText,
|
||||
@@ -226,16 +226,16 @@ namespace Ryujinx.Ava.UI.Helpers
|
||||
(int)Symbol.Help,
|
||||
primaryButtonResult);
|
||||
|
||||
internal static Task<UserResult> CreateLocalizedConfirmationDialog(string primaryText, string secondaryText)
|
||||
=> CreateConfirmationDialog(
|
||||
internal static async Task<UserResult> CreateLocalizedConfirmationDialog(string primaryText, string secondaryText)
|
||||
=> await CreateConfirmationDialog(
|
||||
primaryText,
|
||||
secondaryText,
|
||||
LocaleManager.Instance[LocaleKeys.InputDialogYes],
|
||||
LocaleManager.Instance[LocaleKeys.InputDialogNo],
|
||||
LocaleManager.Instance[LocaleKeys.RyujinxConfirm]);
|
||||
|
||||
internal static Task CreateUpdaterInfoDialog(string primary, string secondaryText)
|
||||
=> ShowTextDialog(
|
||||
internal static async Task CreateUpdaterInfoDialog(string primary, string secondaryText)
|
||||
=> await ShowTextDialog(
|
||||
LocaleManager.Instance[LocaleKeys.DialogUpdaterTitle],
|
||||
primary,
|
||||
secondaryText,
|
||||
@@ -244,8 +244,8 @@ namespace Ryujinx.Ava.UI.Helpers
|
||||
LocaleManager.Instance[LocaleKeys.InputDialogOk],
|
||||
(int)Symbol.Important);
|
||||
|
||||
internal static Task CreateWarningDialog(string primary, string secondaryText)
|
||||
=> ShowTextDialog(
|
||||
internal static async Task CreateWarningDialog(string primary, string secondaryText)
|
||||
=> await ShowTextDialog(
|
||||
LocaleManager.Instance[LocaleKeys.DialogWarningTitle],
|
||||
primary,
|
||||
secondaryText,
|
||||
@@ -254,11 +254,11 @@ namespace Ryujinx.Ava.UI.Helpers
|
||||
LocaleManager.Instance[LocaleKeys.InputDialogOk],
|
||||
(int)Symbol.Important);
|
||||
|
||||
internal static Task CreateErrorDialog(string errorMessage, string secondaryErrorMessage = "")
|
||||
internal static async Task CreateErrorDialog(string errorMessage, string secondaryErrorMessage = "")
|
||||
{
|
||||
Logger.Error?.Print(LogClass.Application, errorMessage);
|
||||
|
||||
return ShowTextDialog(
|
||||
await ShowTextDialog(
|
||||
LocaleManager.Instance[LocaleKeys.DialogErrorTitle],
|
||||
LocaleManager.Instance[LocaleKeys.DialogErrorMessage],
|
||||
errorMessage,
|
||||
@@ -399,11 +399,9 @@ namespace Ryujinx.Ava.UI.Helpers
|
||||
return result;
|
||||
}
|
||||
|
||||
public static Task ShowWindowAsync(Window dialogWindow, Window mainWindow = null)
|
||||
public static async Task ShowWindowAsync(Window dialogWindow, Window mainWindow = null)
|
||||
{
|
||||
mainWindow ??= GetMainWindow();
|
||||
|
||||
return dialogWindow.ShowDialog(_contentDialogOverlayWindow ?? mainWindow);
|
||||
await dialogWindow.ShowDialog(_contentDialogOverlayWindow ?? mainWindow ?? GetMainWindow());
|
||||
}
|
||||
|
||||
private static Window GetMainWindow()
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace Ryujinx.Ava.UI.Models
|
||||
TitleId = info.ProgramId;
|
||||
UserId = info.UserId;
|
||||
|
||||
var appData = MainWindow.MainWindowViewModel.Applications.FirstOrDefault(x => x.IdString.Equals(TitleIdString, StringComparison.OrdinalIgnoreCase));
|
||||
var appData = App.MainWindow.ViewModel.Applications.FirstOrDefault(x => x.IdString.Equals(TitleIdString, StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
InGameList = appData != null;
|
||||
|
||||
|
||||
@@ -1,15 +1,10 @@
|
||||
using Avalonia.Media.Imaging;
|
||||
using Avalonia.Platform;
|
||||
using Avalonia.Styling;
|
||||
using Avalonia.Threading;
|
||||
using Ryujinx.Ava.Common;
|
||||
using Ryujinx.Ava.Common.Locale;
|
||||
using Ryujinx.Common.Utilities;
|
||||
using Ryujinx.UI.Common.Configuration;
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ryujinx.Ava.UI.ViewModels
|
||||
{
|
||||
@@ -76,10 +71,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||
DiscordLogo = LoadBitmap($"{basePath}Logo_Discord_{themeSuffix}?assembly=Ryujinx.UI.Common");
|
||||
}
|
||||
|
||||
private Bitmap LoadBitmap(string uri)
|
||||
{
|
||||
return new Bitmap(Avalonia.Platform.AssetLoader.Open(new Uri(uri)));
|
||||
}
|
||||
private static Bitmap LoadBitmap(string uri) => new(Avalonia.Platform.AssetLoader.Open(new Uri(uri)));
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||
private readonly string _amiiboJsonPath;
|
||||
private readonly byte[] _amiiboLogoBytes;
|
||||
private readonly HttpClient _httpClient;
|
||||
private readonly StyleableAppWindow _owner;
|
||||
private readonly AmiiboWindow _owner;
|
||||
|
||||
private Bitmap _amiiboImage;
|
||||
private List<AmiiboApi> _amiiboList;
|
||||
@@ -49,7 +49,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||
|
||||
private static readonly AmiiboJsonSerializerContext _serializerContext = new(JsonHelper.GetDefaultSerializerOptions());
|
||||
|
||||
public AmiiboWindowViewModel(StyleableAppWindow owner, string lastScannedAmiiboId, string titleId)
|
||||
public AmiiboWindowViewModel(AmiiboWindow owner, string lastScannedAmiiboId, string titleId)
|
||||
{
|
||||
_owner = owner;
|
||||
|
||||
@@ -186,6 +186,22 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
public void Scan()
|
||||
{
|
||||
if (AmiiboSelectedIndex > -1)
|
||||
{
|
||||
_owner.ScannedAmiibo = AmiiboList[AmiiboSelectedIndex];
|
||||
_owner.IsScanned = true;
|
||||
_owner.Close();
|
||||
}
|
||||
}
|
||||
|
||||
public void Cancel()
|
||||
{
|
||||
_owner.IsScanned = false;
|
||||
_owner.Close();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
GC.SuppressFinalize(this);
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||
|
||||
private PlayerIndex _playerId;
|
||||
private int _controller;
|
||||
private int _controllerNumber;
|
||||
private readonly int _controllerNumber;
|
||||
private string _controllerImage;
|
||||
private int _device;
|
||||
private object _configViewModel;
|
||||
@@ -433,12 +433,28 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||
|
||||
public void LoadDevices()
|
||||
{
|
||||
string GetGamepadName(IGamepad gamepad, int controllerNumber)
|
||||
{
|
||||
return $"{GetShortGamepadName(gamepad.Name)} ({controllerNumber})";
|
||||
}
|
||||
string GetUniqueGamepadName(IGamepad gamepad, ref int controllerNumber)
|
||||
{
|
||||
string name = GetGamepadName(gamepad, controllerNumber);
|
||||
if (Devices.Any(controller => controller.Name == name))
|
||||
{
|
||||
controllerNumber++;
|
||||
name = GetGamepadName(gamepad, controllerNumber);
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
lock (Devices)
|
||||
{
|
||||
Devices.Clear();
|
||||
DeviceList.Clear();
|
||||
Devices.Add((DeviceType.None, Disabled, LocaleManager.Instance[LocaleKeys.ControllerSettingsDeviceDisabled]));
|
||||
|
||||
int controllerNumber = 0;
|
||||
foreach (string id in _mainWindow.InputManager.KeyboardDriver.GamepadsIds)
|
||||
{
|
||||
using IGamepad gamepad = _mainWindow.InputManager.KeyboardDriver.GetGamepad(id);
|
||||
@@ -455,17 +471,11 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||
|
||||
if (gamepad != null)
|
||||
{
|
||||
if (Devices.Any(controller => GetShortGamepadId(controller.Id) == GetShortGamepadId(gamepad.Id)))
|
||||
{
|
||||
_controllerNumber++;
|
||||
}
|
||||
|
||||
Devices.Add((DeviceType.Controller, id, $"{GetShortGamepadName(gamepad.Name)} ({_controllerNumber})"));
|
||||
string name = GetUniqueGamepadName(gamepad, ref controllerNumber);
|
||||
Devices.Add((DeviceType.Controller, id, name));
|
||||
}
|
||||
}
|
||||
|
||||
_controllerNumber = 0;
|
||||
|
||||
DeviceList.AddRange(Devices.Select(x => x.Name));
|
||||
Device = Math.Min(Device, DeviceList.Count);
|
||||
}
|
||||
@@ -679,7 +689,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
|
||||
|
||||
if (!File.Exists(path))
|
||||
{
|
||||
var index = ProfilesList.IndexOf(ProfileName);
|
||||
int index = ProfilesList.IndexOf(ProfileName);
|
||||
if (index != -1)
|
||||
{
|
||||
ProfilesList.RemoveAt(index);
|
||||
|
||||
@@ -110,6 +110,8 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||
public ApplicationData ListSelectedApplication;
|
||||
public ApplicationData GridSelectedApplication;
|
||||
|
||||
public MainWindow Window { get; init; }
|
||||
|
||||
internal AppHost AppHost { get; set; }
|
||||
|
||||
public MainWindowViewModel()
|
||||
@@ -1424,7 +1426,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||
|
||||
public async Task ExitCurrentState()
|
||||
{
|
||||
if (WindowState == WindowState.FullScreen)
|
||||
if (WindowState is WindowState.FullScreen)
|
||||
{
|
||||
ToggleFullscreen();
|
||||
}
|
||||
@@ -1710,6 +1712,28 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||
});
|
||||
}
|
||||
|
||||
public async Task OpenAmiiboWindow()
|
||||
{
|
||||
if (!IsAmiiboRequested)
|
||||
return;
|
||||
|
||||
if (AppHost.Device.System.SearchingForAmiibo(out int deviceId))
|
||||
{
|
||||
string titleId = AppHost.Device.Processes.ActiveApplication.ProgramIdText.ToUpper();
|
||||
AmiiboWindow window = new(ShowAll, LastScannedAmiiboId, titleId);
|
||||
|
||||
await window.ShowDialog(Window);
|
||||
|
||||
if (window.IsScanned)
|
||||
{
|
||||
ShowAll = window.ViewModel.ShowAllAmiibo;
|
||||
LastScannedAmiiboId = window.ScannedAmiibo.GetId();
|
||||
|
||||
AppHost.Device.System.ScanAmiibo(deviceId, LastScannedAmiiboId, window.ViewModel.UseRandomUuid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ToggleFullscreen()
|
||||
{
|
||||
if (Environment.TickCount64 - LastFullscreenToggle < HotKeyPressDelayMs)
|
||||
@@ -1719,7 +1743,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||
|
||||
LastFullscreenToggle = Environment.TickCount64;
|
||||
|
||||
if (WindowState == WindowState.FullScreen)
|
||||
if (WindowState is not WindowState.Normal)
|
||||
{
|
||||
WindowState = WindowState.Normal;
|
||||
|
||||
@@ -1738,7 +1762,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
IsFullScreen = WindowState == WindowState.FullScreen;
|
||||
IsFullScreen = WindowState is WindowState.FullScreen;
|
||||
}
|
||||
|
||||
public static void SaveConfig()
|
||||
|
||||
@@ -14,6 +14,7 @@ using Ryujinx.Common.Configuration.Multiplayer;
|
||||
using Ryujinx.Common.GraphicsDriver;
|
||||
using Ryujinx.Common.Logging;
|
||||
using Ryujinx.Graphics.Vulkan;
|
||||
using Ryujinx.HLE;
|
||||
using Ryujinx.HLE.FileSystem;
|
||||
using Ryujinx.HLE.HOS.Services.Time.TimeZone;
|
||||
using Ryujinx.UI.Common.Configuration;
|
||||
@@ -154,7 +155,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||
public bool EnableInternetAccess { get; set; }
|
||||
public bool EnableFsIntegrityChecks { get; set; }
|
||||
public bool IgnoreMissingServices { get; set; }
|
||||
public bool ExpandDramSize { get; set; }
|
||||
public MemoryConfiguration DramSize { get; set; }
|
||||
public bool EnableShaderCache { get; set; }
|
||||
public bool EnableTextureRecompression { get; set; }
|
||||
public bool EnableMacroHLE { get; set; }
|
||||
@@ -444,7 +445,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||
|
||||
EnableVsync = config.Graphics.EnableVsync;
|
||||
EnableFsIntegrityChecks = config.System.EnableFsIntegrityChecks;
|
||||
ExpandDramSize = config.System.ExpandRam;
|
||||
DramSize = config.System.DramSize;
|
||||
IgnoreMissingServices = config.System.IgnoreMissingServices;
|
||||
|
||||
// CPU
|
||||
@@ -545,7 +546,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||
config.System.SystemTimeOffset.Value = Convert.ToInt64((CurrentDate.ToUnixTimeSeconds() + CurrentTime.TotalSeconds) - DateTimeOffset.Now.ToUnixTimeSeconds());
|
||||
config.Graphics.EnableVsync.Value = EnableVsync;
|
||||
config.System.EnableFsIntegrityChecks.Value = EnableFsIntegrityChecks;
|
||||
config.System.ExpandRam.Value = ExpandDramSize;
|
||||
config.System.DramSize.Value = DramSize;
|
||||
config.System.IgnoreMissingServices.Value = IgnoreMissingServices;
|
||||
|
||||
// CPU
|
||||
|
||||
@@ -240,6 +240,7 @@
|
||||
Click="OpenAmiiboWindow"
|
||||
Header="{locale:Locale MenuBarActionsScanAmiibo}"
|
||||
Icon="{icon:Icon mdi-cube-scan}"
|
||||
InputGesture="Ctrl + A"
|
||||
IsEnabled="{Binding IsAmiiboRequested}" />
|
||||
<MenuItem
|
||||
Command="{Binding TakeScreenshot}"
|
||||
|
||||
@@ -144,26 +144,7 @@ namespace Ryujinx.Ava.UI.Views.Main
|
||||
}
|
||||
|
||||
public async void OpenAmiiboWindow(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!ViewModel.IsAmiiboRequested)
|
||||
return;
|
||||
|
||||
if (ViewModel.AppHost.Device.System.SearchingForAmiibo(out int deviceId))
|
||||
{
|
||||
string titleId = ViewModel.AppHost.Device.Processes.ActiveApplication.ProgramIdText.ToUpper();
|
||||
AmiiboWindow window = new(ViewModel.ShowAll, ViewModel.LastScannedAmiiboId, titleId);
|
||||
|
||||
await window.ShowDialog(Window);
|
||||
|
||||
if (window.IsScanned)
|
||||
{
|
||||
ViewModel.ShowAll = window.ViewModel.ShowAllAmiibo;
|
||||
ViewModel.LastScannedAmiiboId = window.ScannedAmiibo.GetId();
|
||||
|
||||
ViewModel.AppHost.Device.System.ScanAmiibo(deviceId, ViewModel.LastScannedAmiiboId, window.ViewModel.UseRandomUuid);
|
||||
}
|
||||
}
|
||||
}
|
||||
=> await ViewModel.OpenAmiiboWindow();
|
||||
|
||||
public async void OpenCheatManagerForCurrentApp(object sender, RoutedEventArgs e)
|
||||
{
|
||||
@@ -205,7 +186,8 @@ namespace Ryujinx.Ava.UI.Views.Main
|
||||
|
||||
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(' ')
|
||||
.Into(parts => (int.Parse(parts[0]), int.Parse(parts[1])));
|
||||
|
||||
@@ -29,12 +29,7 @@
|
||||
Margin="5"
|
||||
VerticalAlignment="Center"
|
||||
IsVisible="{Binding EnableNonGameRunningControls}">
|
||||
<Grid Margin="0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid Margin="0" ColumnDefinitions="Auto,Auto,*">
|
||||
<Button
|
||||
Width="25"
|
||||
Height="25"
|
||||
|
||||
@@ -2,6 +2,8 @@ using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Input;
|
||||
using Avalonia.Interactivity;
|
||||
using Avalonia.Threading;
|
||||
using Ryujinx.Ava.Common.Locale;
|
||||
using Ryujinx.Ava.UI.Windows;
|
||||
using Ryujinx.Common.Configuration;
|
||||
using Ryujinx.Common.Logging;
|
||||
@@ -27,6 +29,11 @@ namespace Ryujinx.Ava.UI.Views.Main
|
||||
{
|
||||
Window = window;
|
||||
DataContext = window.ViewModel;
|
||||
LocaleManager.Instance.LocaleChanged += () => Dispatcher.UIThread.Post(() =>
|
||||
{
|
||||
if (Window.ViewModel.EnableNonGameRunningControls)
|
||||
Refresh_OnClick(null, null);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,10 +55,7 @@ namespace Ryujinx.Ava.UI.Views.Main
|
||||
ConfigurationState.Instance.Graphics.AspectRatio.Value = (int)aspectRatio + 1 > Enum.GetNames(typeof(AspectRatio)).Length - 1 ? AspectRatio.Fixed4x3 : aspectRatio + 1;
|
||||
}
|
||||
|
||||
private void Refresh_OnClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Window.LoadApplications();
|
||||
}
|
||||
private void Refresh_OnClick(object sender, RoutedEventArgs e) => Window.LoadApplications();
|
||||
|
||||
private void VolumeStatus_OnPointerWheelChanged(object sender, PointerWheelEventArgs e)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<UserControl
|
||||
<UserControl
|
||||
x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsSystemView"
|
||||
xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
@@ -203,15 +203,36 @@
|
||||
Foreground="{DynamicResource SecondaryTextColor}"
|
||||
Text="{locale:Locale SettingsTabSystemHacksNote}" />
|
||||
</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
|
||||
Margin="10,0,0,0"
|
||||
HorizontalAlignment="Stretch"
|
||||
Orientation="Vertical">
|
||||
<CheckBox
|
||||
IsChecked="{Binding ExpandDramSize}"
|
||||
ToolTip.Tip="{locale:Locale DRamTooltip}">
|
||||
<TextBlock Text="{locale:Locale SettingsTabSystemExpandDramSize}" />
|
||||
</CheckBox>
|
||||
<CheckBox
|
||||
IsChecked="{Binding IgnoreMissingServices}"
|
||||
ToolTip.Tip="{locale:Locale IgnoreMissingServicesTooltip}">
|
||||
|
||||
@@ -18,32 +18,17 @@
|
||||
<Design.DataContext>
|
||||
<viewModel:AboutWindowViewModel />
|
||||
</Design.DataContext>
|
||||
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ColumnDefinitions="Auto,Auto,*">
|
||||
<Grid
|
||||
Grid.Column="0"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
VerticalAlignment="Stretch" RowDefinitions="Auto,*,Auto">
|
||||
<StackPanel
|
||||
Grid.Row="0"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch"
|
||||
Spacing="10">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid ColumnDefinitions="Auto,*,Auto">
|
||||
<StackPanel
|
||||
Grid.Column="1"
|
||||
Orientation="Horizontal"
|
||||
@@ -84,7 +69,6 @@
|
||||
Text="{Binding Version}"
|
||||
TextAlignment="Center" />
|
||||
<Border
|
||||
|
||||
Height="1"
|
||||
Margin="0,20, 0, 20"
|
||||
HorizontalAlignment="Stretch"
|
||||
@@ -156,11 +140,7 @@
|
||||
<Grid
|
||||
Grid.Column="2"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
VerticalAlignment="Stretch" RowDefinitions="Auto,Auto">
|
||||
<StackPanel
|
||||
Grid.Row="0"
|
||||
Margin="0,10,0,0"
|
||||
|
||||
@@ -22,18 +22,8 @@
|
||||
<Design.DataContext>
|
||||
<viewModels:AmiiboWindowViewModel />
|
||||
</Design.DataContext>
|
||||
<Grid Margin="15" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid Grid.Row="1" HorizontalAlignment="Stretch">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid RowDefinitions="Auto,Auto,*,Auto" Margin="15" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
|
||||
<Grid ColumnDefinitions="*,*" Grid.Row="1" HorizontalAlignment="Stretch" >
|
||||
<StackPanel Spacing="10" Orientation="Horizontal" HorizontalAlignment="Left">
|
||||
<TextBlock VerticalAlignment="Center" Text="{locale:Locale AmiiboSeriesLabel}" />
|
||||
<ComboBox SelectedIndex="{Binding SeriesSelectedIndex}" ItemsSource="{Binding AmiiboSeries}" MinWidth="100" />
|
||||
@@ -51,24 +41,27 @@
|
||||
TextAlignment="Center" />
|
||||
</ScrollViewer>
|
||||
</StackPanel>
|
||||
<Grid Grid.Row="3">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<CheckBox Margin="10" Grid.Column="0" VerticalContentAlignment="Center" IsChecked="{Binding ShowAllAmiibo}"
|
||||
<Grid Grid.Row="3" ColumnDefinitions="Auto,Auto,*,Auto,Auto">
|
||||
<CheckBox Margin="10" Grid.Column="0" VerticalContentAlignment="Center"
|
||||
IsChecked="{Binding ShowAllAmiibo}"
|
||||
Content="{locale:Locale AmiiboOptionsShowAllLabel}" />
|
||||
<CheckBox Margin="10" VerticalContentAlignment="Center" Grid.Column="1" IsChecked="{Binding UseRandomUuid}"
|
||||
<CheckBox HotKey="H"
|
||||
Margin="10" VerticalContentAlignment="Center" Grid.Column="1"
|
||||
IsChecked="{Binding UseRandomUuid}"
|
||||
Content="{locale:Locale AmiiboOptionsUsRandomTagLabel}" />
|
||||
|
||||
<Button Grid.Column="3" IsEnabled="{Binding EnableScanning}" Width="80"
|
||||
Content="{locale:Locale AmiiboScanButtonLabel}" Name="ScanButton"
|
||||
<Button Grid.Column="3"
|
||||
IsEnabled="{Binding EnableScanning}"
|
||||
Width="80"
|
||||
Name="ScanButton"
|
||||
HotKey="Return"
|
||||
Content="{locale:Locale AmiiboScanButtonLabel}"
|
||||
Click="ScanButton_Click" />
|
||||
<Button Grid.Column="4" Margin="10,0" Width="80" Content="{locale:Locale InputDialogCancel}"
|
||||
<Button Grid.Column="4"
|
||||
Margin="10,0"
|
||||
Width="80"
|
||||
Name="CancelButton"
|
||||
HotKey="Escape"
|
||||
Content="{locale:Locale InputDialogCancel}"
|
||||
Click="CancelButton_Click" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
@@ -9,13 +9,11 @@ namespace Ryujinx.Ava.UI.Windows
|
||||
{
|
||||
public AmiiboWindow(bool showAll, string lastScannedAmiiboId, string titleId)
|
||||
{
|
||||
ViewModel = new AmiiboWindowViewModel(this, lastScannedAmiiboId, titleId)
|
||||
DataContext = ViewModel = new AmiiboWindowViewModel(this, lastScannedAmiiboId, titleId)
|
||||
{
|
||||
ShowAllAmiibo = showAll,
|
||||
};
|
||||
|
||||
DataContext = ViewModel;
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
Title = App.FormatTitle(LocaleKeys.Amiibo);
|
||||
@@ -23,9 +21,7 @@ namespace Ryujinx.Ava.UI.Windows
|
||||
|
||||
public AmiiboWindow()
|
||||
{
|
||||
ViewModel = new AmiiboWindowViewModel(this, string.Empty, string.Empty);
|
||||
|
||||
DataContext = ViewModel;
|
||||
DataContext = ViewModel = new AmiiboWindowViewModel(this, string.Empty, string.Empty);
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
@@ -37,23 +33,10 @@ namespace Ryujinx.Ava.UI.Windows
|
||||
|
||||
public bool IsScanned { get; set; }
|
||||
public AmiiboApi ScannedAmiibo { get; set; }
|
||||
public AmiiboWindowViewModel ViewModel { get; set; }
|
||||
public AmiiboWindowViewModel ViewModel;
|
||||
|
||||
private void ScanButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ViewModel.AmiiboSelectedIndex > -1)
|
||||
{
|
||||
ScannedAmiibo = ViewModel.AmiiboList[ViewModel.AmiiboSelectedIndex];
|
||||
IsScanned = true;
|
||||
Close();
|
||||
}
|
||||
}
|
||||
private void ScanButton_Click(object sender, RoutedEventArgs e) => ViewModel.Scan();
|
||||
|
||||
private void CancelButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
IsScanned = false;
|
||||
|
||||
Close();
|
||||
}
|
||||
private void CancelButton_Click(object sender, RoutedEventArgs e) => ViewModel.Cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<window:StyleableAppWindow
|
||||
<window:StyleableAppWindow
|
||||
x:Class="Ryujinx.Ava.UI.Windows.CheatWindow"
|
||||
xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
@@ -20,18 +20,7 @@
|
||||
<Setter Property="IsExpanded" Value="True" />
|
||||
</Style>
|
||||
</Window.Styles>
|
||||
<Grid Name="CheatGrid" Margin="15">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid Name="CheatGrid" Margin="15" RowDefinitions="Auto,Auto,Auto,*,Auto" ColumnDefinitions="*,*">
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
@@ -109,6 +98,7 @@
|
||||
Name="SaveButton"
|
||||
MinWidth="90"
|
||||
Margin="5"
|
||||
HotKey="Ctrl+S"
|
||||
Command="{Binding Save}"
|
||||
IsVisible="{Binding !NoCheatsFound}">
|
||||
<TextBlock Text="{locale:Locale SettingsButtonSave}" />
|
||||
@@ -117,6 +107,7 @@
|
||||
Name="CancelButton"
|
||||
MinWidth="90"
|
||||
Margin="5"
|
||||
HotKey="Escape"
|
||||
Command="{Binding Close}">
|
||||
<TextBlock Text="{locale:Locale InputDialogCancel}" />
|
||||
</Button>
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
x:DataType="viewModels:MainWindowViewModel"
|
||||
mc:Ignorable="d"
|
||||
WindowStartupLocation="Manual"
|
||||
Icon="resm:Ryujinx.UI.Common.Resources.Logo_Ryujinx.png?assembly=Ryujinx.UI.Common"
|
||||
Focusable="True">
|
||||
<Window.Styles>
|
||||
<Style Selector="TitleBar:fullscreen">
|
||||
@@ -39,23 +40,13 @@
|
||||
<KeyBinding Gesture="Ctrl+Cmd+F" Command="{Binding ToggleFullscreen}" />
|
||||
<KeyBinding Gesture="F9" Command="{Binding ToggleDockMode}" />
|
||||
<KeyBinding Gesture="Escape" Command="{Binding ExitCurrentState}" />
|
||||
<KeyBinding Gesture="Ctrl+A" Command="{Binding OpenAmiiboWindow}" />
|
||||
</Window.KeyBindings>
|
||||
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" RowDefinitions="*">
|
||||
<helpers:OffscreenTextBox IsEnabled="False" Opacity="0" Name="HiddenTextBox" IsHitTestVisible="False" IsTabStop="False" />
|
||||
<Grid
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
VerticalAlignment="Stretch" ColumnDefinitions="*" RowDefinitions="Auto,*,Auto">
|
||||
<StackPanel
|
||||
Name="MenuBar"
|
||||
MinHeight="35"
|
||||
@@ -78,11 +69,8 @@
|
||||
BorderThickness="0,0,0,0"
|
||||
DockPanel.Dock="Top"
|
||||
IsVisible="{Binding ShowContent}">
|
||||
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Name="GameLibrary">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Name="GameLibrary"
|
||||
RowDefinitions="Auto,*">
|
||||
<main:MainViewControls
|
||||
Name="ViewControls"
|
||||
Grid.Row="0"/>
|
||||
@@ -116,11 +104,7 @@
|
||||
Margin="40"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
IsVisible="{Binding ShowLoadProgress}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
IsVisible="{Binding ShowLoadProgress}" ColumnDefinitions="Auto,*">
|
||||
<Border
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="0"
|
||||
@@ -143,12 +127,7 @@
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Center"
|
||||
IsVisible="{Binding ShowLoadProgress}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
IsVisible="{Binding ShowLoadProgress}" RowDefinitions="Auto,Auto,Auto">
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
Margin="10"
|
||||
|
||||
@@ -37,8 +37,6 @@ namespace Ryujinx.Ava.UI.Windows
|
||||
{
|
||||
public partial class MainWindow : StyleableAppWindow
|
||||
{
|
||||
internal static MainWindowViewModel MainWindowViewModel { get; private set; }
|
||||
|
||||
public MainWindowViewModel ViewModel { get; }
|
||||
|
||||
internal readonly AvaHostUIHandler UiHandler;
|
||||
@@ -71,7 +69,10 @@ namespace Ryujinx.Ava.UI.Windows
|
||||
|
||||
public MainWindow()
|
||||
{
|
||||
DataContext = ViewModel = MainWindowViewModel = new MainWindowViewModel();
|
||||
DataContext = ViewModel = new MainWindowViewModel
|
||||
{
|
||||
Window = this
|
||||
};
|
||||
|
||||
InitializeComponent();
|
||||
Load();
|
||||
@@ -184,7 +185,7 @@ namespace Ryujinx.Ava.UI.Windows
|
||||
ViewModel.ShowContent = true;
|
||||
ViewModel.IsLoadingIndeterminate = false;
|
||||
|
||||
if (startFullscreen && ViewModel.WindowState != WindowState.FullScreen)
|
||||
if (startFullscreen && ViewModel.WindowState is not WindowState.FullScreen)
|
||||
{
|
||||
ViewModel.ToggleFullscreen();
|
||||
}
|
||||
@@ -196,7 +197,7 @@ namespace Ryujinx.Ava.UI.Windows
|
||||
ViewModel.ShowLoadProgress = true;
|
||||
ViewModel.IsLoadingIndeterminate = true;
|
||||
|
||||
if (startFullscreen && ViewModel.WindowState != WindowState.FullScreen)
|
||||
if (startFullscreen && ViewModel.WindowState is not WindowState.FullScreen)
|
||||
{
|
||||
ViewModel.ToggleFullscreen();
|
||||
}
|
||||
@@ -664,7 +665,8 @@ namespace Ryujinx.Ava.UI.Windows
|
||||
? string.Format(LocaleManager.Instance[LocaleKeys.AutoloadUpdateAddedMessage], numUpdatesAdded)
|
||||
: null;
|
||||
|
||||
if (msg is null) return;
|
||||
if (msg is null)
|
||||
return;
|
||||
|
||||
|
||||
Dispatcher.UIThread.InvokeAsync(async () =>
|
||||
|
||||
@@ -14,21 +14,11 @@
|
||||
x:CompileBindings="True"
|
||||
x:DataType="viewModels:ModManagerViewModel"
|
||||
Focusable="True">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid RowDefinitions="Auto,*,Auto">
|
||||
<Panel
|
||||
Margin="0 0 0 10"
|
||||
Grid.Row="0">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid ColumnDefinitions="Auto,Auto,*">
|
||||
<TextBlock
|
||||
Grid.Column="0"
|
||||
Text="{Binding ModCount}" />
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace Ryujinx.Ava.UI.Windows
|
||||
{
|
||||
public partial class ModManagerWindow : UserControl
|
||||
{
|
||||
public ModManagerViewModel ViewModel;
|
||||
public readonly ModManagerViewModel ViewModel;
|
||||
|
||||
public ModManagerWindow()
|
||||
{
|
||||
|
||||
@@ -21,12 +21,7 @@
|
||||
<Design.DataContext>
|
||||
<viewModels:SettingsViewModel />
|
||||
</Design.DataContext>
|
||||
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MinWidth="600">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MinWidth="600" RowDefinitions="Auto,*,Auto">
|
||||
<ContentPresenter
|
||||
x:Name="ContentPresenter"
|
||||
Grid.Row="1"
|
||||
|
||||
@@ -10,14 +10,13 @@ namespace Ryujinx.Ava.UI.Windows
|
||||
{
|
||||
public partial class SettingsWindow : StyleableAppWindow
|
||||
{
|
||||
internal SettingsViewModel ViewModel { get; set; }
|
||||
internal readonly SettingsViewModel ViewModel;
|
||||
|
||||
public SettingsWindow(VirtualFileSystem virtualFileSystem, ContentManager contentManager)
|
||||
{
|
||||
Title = App.FormatTitle(LocaleKeys.Settings);
|
||||
|
||||
ViewModel = new SettingsViewModel(virtualFileSystem, contentManager);
|
||||
DataContext = ViewModel;
|
||||
DataContext = ViewModel = new SettingsViewModel(virtualFileSystem, contentManager);
|
||||
|
||||
ViewModel.CloseWindow += Close;
|
||||
ViewModel.SaveSettingsEvent += SaveSettings;
|
||||
@@ -28,8 +27,7 @@ namespace Ryujinx.Ava.UI.Windows
|
||||
|
||||
public SettingsWindow()
|
||||
{
|
||||
ViewModel = new SettingsViewModel();
|
||||
DataContext = ViewModel;
|
||||
DataContext = ViewModel = new SettingsViewModel();
|
||||
|
||||
InitializeComponent();
|
||||
Load();
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.Primitives;
|
||||
using Avalonia.Media;
|
||||
using Avalonia.Media.Imaging;
|
||||
using Avalonia.Platform;
|
||||
using FluentAvalonia.UI.Windowing;
|
||||
using Ryujinx.Ava.Common.Locale;
|
||||
using Ryujinx.UI.Common.Configuration;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Ryujinx.Ava.UI.Windows
|
||||
{
|
||||
|
||||
@@ -17,12 +17,7 @@
|
||||
<UserControl.Resources>
|
||||
<helpers:TitleUpdateLabelConverter x:Key="TitleUpdateLabel" />
|
||||
</UserControl.Resources>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid RowDefinitions="Auto,*,Auto">
|
||||
<StackPanel
|
||||
Grid.Row="0"
|
||||
Margin="0 0 0 10"
|
||||
|
||||
Reference in New Issue
Block a user