diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ba1a2df9c..9b11f0778 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -61,11 +61,11 @@ jobs: if: matrix.platform.name != 'linux-arm64' - name: Publish Ryujinx - run: dotnet publish -c "${{ matrix.configuration }}" -r "${{ matrix.platform.name }}" -o ./publish -p:Version="${{ env.RYUJINX_BASE_VERSION }}" -p:DebugType=embedded -p:SourceRevisionId="${{ steps.git_short_hash.outputs.result }}" -p:ExtraDefineConstants=DISABLE_UPDATER src/Ryujinx --self-contained true + run: dotnet publish -c "${{ matrix.configuration }}" -r "${{ matrix.platform.name }}" -o ./publish -p:Version="${{ env.RYUJINX_BASE_VERSION }}" -p:DebugType=embedded -p:SourceRevisionId="${{ steps.git_short_hash.outputs.result }}" -p:ExtraDefineConstants=DISABLE_UPDATER src/Ryujinx --self-contained if: github.event_name == 'pull_request' && matrix.platform.os != 'macos-13' - name: Publish Ryujinx.Headless.SDL2 - run: dotnet publish -c "${{ matrix.configuration }}" -r "${{ matrix.platform.name }}" -o ./publish_sdl2_headless -p:Version="${{ env.RYUJINX_BASE_VERSION }}" -p:DebugType=embedded -p:SourceRevisionId="${{ steps.git_short_hash.outputs.result }}" -p:ExtraDefineConstants=DISABLE_UPDATER src/Ryujinx.Headless.SDL2 --self-contained true + run: dotnet publish -c "${{ matrix.configuration }}" -r "${{ matrix.platform.name }}" -o ./publish_sdl2_headless -p:Version="${{ env.RYUJINX_BASE_VERSION }}" -p:DebugType=embedded -p:SourceRevisionId="${{ steps.git_short_hash.outputs.result }}" -p:ExtraDefineConstants=DISABLE_UPDATER src/Ryujinx.Headless.SDL2 --self-contained if: github.event_name == 'pull_request' && matrix.platform.os != 'macos-13' - name: Set executable bit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3caedacfc..aad32deb6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -101,17 +101,19 @@ jobs: - name: Publish run: | - dotnet publish -c Release -r "${{ matrix.platform.name }}" -o ./publish_ava/publish -p:Version="${{ steps.version_info.outputs.build_version }}" -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:DebugType=embedded src/Ryujinx --self-contained true - dotnet publish -c Release -r "${{ matrix.platform.name }}" -o ./publish_sdl2_headless/publish -p:Version="${{ steps.version_info.outputs.build_version }}" -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:DebugType=embedded src/Ryujinx.Headless.SDL2 --self-contained true + dotnet publish -c Release -r "${{ matrix.platform.name }}" -o ./publish_ava/publish -p:Version="${{ steps.version_info.outputs.build_version }}" -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:DebugType=embedded src/Ryujinx --self-contained -p:IncludeNativeLibrariesForSelfExtract=true + dotnet publish -c Release -r "${{ matrix.platform.name }}" -o ./publish_sdl2_headless/publish -p:Version="${{ steps.version_info.outputs.build_version }}" -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:DebugType=embedded src/Ryujinx.Headless.SDL2 --self-contained -p:IncludeNativeLibrariesForSelfExtract=true - name: Packing Windows builds if: matrix.platform.os == 'windows-latest' run: | pushd publish_ava + rm publish/libarmeilleure-jitsupport.dylib 7z a ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip publish popd pushd publish_sdl2_headless + rm publish/libarmeilleure-jitsupport.dylib 7z a ../release_output/sdl2-ryujinx-headless-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip publish popd shell: bash @@ -120,11 +122,13 @@ jobs: if: matrix.platform.os == 'ubuntu-latest' run: | pushd publish_ava + rm publish/libarmeilleure-jitsupport.dylib chmod +x publish/Ryujinx.sh publish/Ryujinx tar -czvf ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz publish popd pushd publish_sdl2_headless + rm publish/libarmeilleure-jitsupport.dylib chmod +x publish/Ryujinx.sh publish/Ryujinx.Headless.SDL2 tar -czvf ../release_output/sdl2-ryujinx-headless-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz publish popd diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 366eb8435..af47fc9d9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,24 +12,15 @@ Please read the entire document before continuing as it can potentially save eve We always welcome bug reports, feature proposals and overall feedback. Here are a few tips on how you can make reporting your issue as effective as possible. -### Identify Where to Report - -The Ryujinx codebase is distributed across multiple repositories in the [Ryujinx organization](https://github.com/Ryujinx). Depending on the feedback you might want to file the issue on a different repo. Here are a few common repos: - -* [Ryujinx/Ryujinx](https://github.com/Ryujinx/Ryujinx) Ryujinx core project files. -* [Ryujinx/Ryujinx-Games-List](https://github.com/Ryujinx/Ryujinx-Games-List) Ryujinx game compatibility list. -* [Ryujinx/Ryujinx-Website](https://github.com/Ryujinx/Ryujinx-Website) Ryujinx website source code. -* [Ryujinx/Ryujinx-Ldn-Website](https://github.com/Ryujinx/Ryujinx-Ldn-Website) Ryujinx LDN website source code. - ### Finding Existing Issues -Before filing a new issue, please search our [open issues](https://github.com/Ryujinx/Ryujinx/issues) to check if it already exists. +Before filing a new issue, please search our [open issues](https://github.com/GreemDev/Ryujinx/issues) to check if it already exists. If you do find an existing issue, please include your own feedback in the discussion. Do consider upvoting (👍 reaction) the original post, as this helps us prioritize popular issues in our backlog. ### Writing a Good Feature Request -Please review any feature requests already opened to both check it has not already been suggested, and to familiarize yourself with the format. When ready to submit a proposal, please use the [Feature Request issue template](https://github.com/Ryujinx/Ryujinx/issues/new?assignees=&labels=&projects=&template=feature_request.yml&title=%5BFeature+Request%5D). +Please review any feature requests already opened to both check it has not already been suggested, and to familiarize yourself with the format. When ready to submit a proposal, please use the [Feature Request issue template](https://github.com/GreemDev/Ryujinx/issues/new?assignees=&labels=&projects=&template=feature_request.yml&title=%5BFeature+Request%5D). ### Writing a Good Bug Report @@ -43,13 +34,13 @@ Ideally, a bug report should contain the following information: * A Ryujinx log file of the run instance where the issue occurred. Log files can be found in `[Executable Folder]/Logs` and are named chronologically. * Additional information, e.g. is it a regression from previous versions? Are there any known workarounds? -When ready to submit a bug report, please use the [Bug Report issue template](https://github.com/Ryujinx/Ryujinx/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D). +When ready to submit a bug report, please use the [Bug Report issue template](https://github.com/GreemDev/Ryujinx/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D). ## Contributing Changes Project maintainers will merge changes that both improve the project and meet our standards for code quality. -The [Pull Request Guide](docs/workflow/pr-guide.md) and [License](https://github.com/Ryujinx/Ryujinx/blob/master/LICENSE.txt) docs define additional guidance. +The [Pull Request Guide](docs/workflow/pr-guide.md) and [License](https://github.com/GreemDev/Ryujinx/blob/master/LICENSE.txt) docs define additional guidance. ### DOs and DON'Ts @@ -83,15 +74,15 @@ We use and recommend the following workflow: 3. In your fork, create a branch off of main (`git checkout -b mybranch`). - Branches are useful since they isolate your changes from incoming changes from upstream. They also enable you to create multiple PRs from the same fork. 4. Make and commit your changes to your branch. - - [Build Instructions](https://github.com/Ryujinx/Ryujinx#building) explains how to build and test. + - [Build Instructions](https://github.com/GreemDev/Ryujinx#building) explains how to build and test. - Commit messages should be clear statements of action and intent. 6. Build the repository with your changes. - Make sure that the builds are clean. - Make sure that `dotnet format` has been run and any corrections tested and committed. 7. Create a pull request (PR) against the Ryujinx/Ryujinx repository's **main** branch. - State in the description what issue or improvement your change is addressing. - - Check if all the Continuous Integration checks are passing. Refer to [Actions](https://github.com/Ryujinx/Ryujinx/actions) to check for outstanding errors. -8. Wait for feedback or approval of your changes from the [core development team](https://github.com/orgs/Ryujinx/teams/developers) + - Check if all the Continuous Integration checks are passing. Refer to [Actions](https://github.com/GreemDev/Ryujinx/actions) to check for outstanding errors. +8. Wait for feedback or approval of your changes from the core development team - Details about the pull request [review procedure](docs/workflow/ci/pr-guide.md). 9. When the team members have signed off, and all checks are green, your PR will be merged. - The next official build will automatically include your change. @@ -99,7 +90,7 @@ We use and recommend the following workflow: ### Good First Issues -The team marks the most straightforward issues as [good first issues](https://github.com/Ryujinx/Ryujinx/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22). This set of issues is the place to start if you are interested in contributing but new to the codebase. +The team marks the most straightforward issues as [good first issues](https://github.com/GreemDev/Ryujinx/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22). This set of issues is the place to start if you are interested in contributing but new to the codebase. ### Commit Messages @@ -122,7 +113,7 @@ Also do your best to factor commits appropriately, not too large with unrelated ### PR - CI Process -The [Ryujinx continuous integration](https://github.com/Ryujinx/Ryujinx/actions) (CI) system will automatically perform the required builds and run tests (including the ones you are expected to run) for PRs. Builds and test runs must be clean or have bugs properly filed against flaky/unexpected failures that are unrelated to your change. +The [Ryujinx continuous integration](https://github.com/GreemDev/Ryujinx/actions) (CI) system will automatically perform the required builds and run tests (including the ones you are expected to run) for PRs. Builds and test runs must be clean or have bugs properly filed against flaky/unexpected failures that are unrelated to your change. If the CI build fails for any reason, the PR actions tab should be consulted for further information on the failure. There are a few usual suspects for such a failure: * `dotnet format` has not been run on the PR and has outstanding stylistic issues. @@ -143,5 +134,5 @@ Ryujinx uses some implementations and frameworks from other projects. The follow - The license of the file is [permissive](https://en.wikipedia.org/wiki/Permissive_free_software_licence). - The license of the file is left in-tact. -- The contribution is correctly attributed in the [3rd party notices](https://github.com/Ryujinx/Ryujinx/blob/master/distribution/legal/THIRDPARTY.md) file in the repository, as needed. +- The contribution is correctly attributed in the [3rd party notices](https://github.com/GreemDev/Ryujinx/blob/master/distribution/legal/THIRDPARTY.md) file in the repository, as needed. diff --git a/README.md b/README.md index 22f601083..f03a1205f 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,14 @@
(REE-YOU-JINX)
+ + + + + Latest Release +

@@ -17,25 +25,22 @@

On October 1st 2024, Ryujinx was discontinued as the creator was forced to abandon the project. - This fork is intended to be a direct continuation for existing Ryujinx users. - Guides and documentation will not be provided at this time, though you can find the old ones on the Internet Archive. +
+ This fork is intended to be a QoL uplift for existing Ryujinx users. +
+ This is not a Ryujinx revival project. This is not a Phoenix project. +
+ Guides and documentation can be found on the Wiki tab.

- If you would like a version more true to original Ryujinx, check out ryujinx-mirror. + If you would like a version more preservative fork of Ryujinx, check out ryujinx-mirror.

- - - - - - + Click below to join the Discord: +
- Discord + Discord

@@ -61,6 +66,8 @@ failing to meet this requirement may result in a poor gameplay experience or une These builds are compiled automatically for each commit on the master branch. While we strive to ensure optimal stability and performance prior to pushing an update, our automated builds **may be unstable or completely broken**. +You can find the latest release [here](https://github.com/GreemDev/Ryujinx/releases/latest). + ## Documentation If you are planning to contribute or just want to learn more about this project please read through our [documentation](docs/README.md). diff --git a/Ryujinx.sln b/Ryujinx.sln index 8a582d32d..eaa28f8dd 100644 --- a/Ryujinx.sln +++ b/Ryujinx.sln @@ -33,6 +33,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig Directory.Packages.props = Directory.Packages.props + Release Script = .github/workflows/release.yml + Build Script = .github/workflows/build.yml EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Memory", "src\Ryujinx.Memory\Ryujinx.Memory.csproj", "{A5E6C691-9E22-4263-8F40-42F002CE66BE}" diff --git a/distribution/macos/Ryujinx.icns b/distribution/macos/Ryujinx.icns index f54a9aeb7..1bb88a5d7 100644 Binary files a/distribution/macos/Ryujinx.icns and b/distribution/macos/Ryujinx.icns differ diff --git a/distribution/misc/Logo.svg b/distribution/misc/Logo.svg index d6a76312a..d3327f2ef 100644 --- a/distribution/misc/Logo.svg +++ b/distribution/misc/Logo.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/shell.png b/docs/shell.png index 943e18b0e..f1eda13e8 100644 Binary files a/docs/shell.png and b/docs/shell.png differ diff --git a/docs/workflow/pr-guide.md b/docs/workflow/pr-guide.md index cc2c5900b..c03db210b 100644 --- a/docs/workflow/pr-guide.md +++ b/docs/workflow/pr-guide.md @@ -2,7 +2,7 @@ ## Contributing Rules -All contributions to Ryujinx/Ryujinx repository are made via pull requests (PRs) rather than through direct commits. The pull requests are reviewed and merged by the maintainers after a review and at least two approvals from the core development team. +All contributions to GreemDev/Ryujinx repository are made via pull requests (PRs) rather than through direct commits. The pull requests are reviewed and merged by the maintainers after a review and at least two approvals from the core development team. To merge pull requests, you must have write permissions in the repository. @@ -24,7 +24,7 @@ If during the code review process a merge conflict occurs, the PR author is resp ## Pull Request Builds -When submitting a PR to the `Ryujinx/Ryujinx` repository, various builds will run validating many areas to ensure we keep developer productivity and product quality high. These various workflows can be tracked in the [Actions](https://github.com/Ryujinx/Ryujinx/actions) tab of the repository. If the job continues to completion, the build artifacts will be uploaded and posted as a comment in the PR discussion. +When submitting a PR to the `GreemDev/Ryujinx` repository, various builds will run validating many areas to ensure we keep developer productivity and product quality high. These various workflows can be tracked in the [Actions](https://github.com/GreemDev/Ryujinx/actions) tab of the repository. If the job continues to completion, the build artifacts will be uploaded and posted as a comment in the PR discussion. ## Review Turnaround Times @@ -42,7 +42,7 @@ Anyone with write access can merge a pull request manually when the following co * The PR has been approved by two reviewers and any other objections are addressed. * You can request follow up reviews from the original reviewers if they requested changes. -* The PR successfully builds and passes all tests in the Continuous Integration (CI) system. In case of failures, refer to the [Actions](https://github.com/Ryujinx/Ryujinx/actions) tab of your PR. +* The PR successfully builds and passes all tests in the Continuous Integration (CI) system. In case of failures, refer to the [Actions](https://github.com/GreemDev/Ryujinx/actions) tab of your PR. Typically, PRs are merged as one commit (squash merges). It creates a simpler history than a Merge Commit. "Special circumstances" are rare, and typically mean that there are a series of cleanly separated changes that will be too hard to understand if squashed together, or for some reason we want to preserve the ability to dissect them. diff --git a/src/ARMeilleure/Translation/PTC/Ptc.cs b/src/ARMeilleure/Translation/PTC/Ptc.cs index 2fecbc3d9..6dd38ed89 100644 --- a/src/ARMeilleure/Translation/PTC/Ptc.cs +++ b/src/ARMeilleure/Translation/PTC/Ptc.cs @@ -855,6 +855,7 @@ namespace ARMeilleure.Translation.PTC Thread thread = new(TranslateFuncs) { IsBackground = true, + Name = "Ptc.TranslateThread." + i }; threads.Add(thread); @@ -885,6 +886,7 @@ namespace ARMeilleure.Translation.PTC Thread preSaveThread = new(PreSave) { IsBackground = true, + Name = "Ptc.DiskWriter" }; preSaveThread.Start(); } diff --git a/src/Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceDriver.cs b/src/Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceDriver.cs index 01286992f..25f91f8e9 100644 --- a/src/Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceDriver.cs +++ b/src/Ryujinx.Audio.Backends.OpenAL/OpenALHardwareDeviceDriver.cs @@ -41,7 +41,7 @@ namespace Ryujinx.Audio.Backends.OpenAL public OpenALHardwareDeviceDriver() { - _device = ALC.OpenDevice(""); + _device = ALC.OpenDevice(string.Empty); _context = ALC.CreateContext(_device, new ALContextAttributes()); _updateRequiredEvent = new ManualResetEvent(false); _pauseEvent = new ManualResetEvent(true); diff --git a/src/Ryujinx.Audio/Renderer/Dsp/AdpcmHelper.cs b/src/Ryujinx.Audio/Renderer/Dsp/AdpcmHelper.cs index 5cb4509ff..8b497fe2a 100644 --- a/src/Ryujinx.Audio/Renderer/Dsp/AdpcmHelper.cs +++ b/src/Ryujinx.Audio/Renderer/Dsp/AdpcmHelper.cs @@ -81,7 +81,7 @@ namespace Ryujinx.Audio.Renderer.Dsp [MethodImpl(MethodImplOptions.AggressiveInlining)] private static short GetCoefficientAtIndex(ReadOnlySpan coefficients, int index) { - if ((uint)index > (uint)coefficients.Length) + if ((uint)index >= (uint)coefficients.Length) { Logger.Error?.Print(LogClass.AudioRenderer, $"Out of bound read for coefficient at index {index}"); diff --git a/src/Ryujinx.Common/Configuration/AppDataManager.cs b/src/Ryujinx.Common/Configuration/AppDataManager.cs index 0b1740ba2..ca8e389ba 100644 --- a/src/Ryujinx.Common/Configuration/AppDataManager.cs +++ b/src/Ryujinx.Common/Configuration/AppDataManager.cs @@ -119,7 +119,7 @@ namespace Ryujinx.Common.Configuration private static string SetUpLogsDir() { - string logDir = ""; + string logDir = string.Empty; if (Mode == LaunchMode.Portable) { @@ -148,7 +148,7 @@ namespace Ryujinx.Common.Configuration catch { Logger.Warning?.Print(LogClass.Application, $"Logging directory could not be created '{logDir}'"); - logDir = ""; + logDir = string.Empty; } if (string.IsNullOrEmpty(logDir)) @@ -179,7 +179,7 @@ namespace Ryujinx.Common.Configuration catch { Logger.Warning?.Print(LogClass.Application, $"Logging directory could not be created '{logDir}'"); - logDir = ""; + logDir = string.Empty; } if (string.IsNullOrEmpty(logDir)) diff --git a/src/Ryujinx.Common/GraphicsDriver/NVThreadedOptimization.cs b/src/Ryujinx.Common/GraphicsDriver/NVThreadedOptimization.cs index c1e9e8fbb..8d969bd6a 100644 --- a/src/Ryujinx.Common/GraphicsDriver/NVThreadedOptimization.cs +++ b/src/Ryujinx.Common/GraphicsDriver/NVThreadedOptimization.cs @@ -121,8 +121,8 @@ namespace Ryujinx.Common.GraphicsDriver }; application.AppName.Set("Ryujinx.exe"); application.UserFriendlyName.Set("Ryujinx"); - application.Launcher.Set(""); - application.FileInFolder.Set(""); + application.Launcher.Set(string.Empty); + application.FileInFolder.Set(string.Empty); Check(NvAPI_DRS_CreateApplication(handle, profileHandle, ref application)); } diff --git a/src/Ryujinx.Common/Logging/Logger.cs b/src/Ryujinx.Common/Logging/Logger.cs index 8dcf1a7cf..26d343969 100644 --- a/src/Ryujinx.Common/Logging/Logger.cs +++ b/src/Ryujinx.Common/Logging/Logger.cs @@ -38,7 +38,7 @@ namespace Ryujinx.Common.Logging { if (_enabledClasses[(int)logClass]) { - Updated?.Invoke(null, new LogEventArgs(Level, _time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, "", message))); + Updated?.Invoke(null, new LogEventArgs(Level, _time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, string.Empty, message))); } } diff --git a/src/Ryujinx.Common/Ryujinx.Common.csproj b/src/Ryujinx.Common/Ryujinx.Common.csproj index 722509f33..dee462fdb 100644 --- a/src/Ryujinx.Common/Ryujinx.Common.csproj +++ b/src/Ryujinx.Common/Ryujinx.Common.csproj @@ -10,6 +10,7 @@ + diff --git a/src/Ryujinx.Common/Utilities/JsonHelper.cs b/src/Ryujinx.Common/Utilities/JsonHelper.cs index 65b8cb109..276dd5f8c 100644 --- a/src/Ryujinx.Common/Utilities/JsonHelper.cs +++ b/src/Ryujinx.Common/Utilities/JsonHelper.cs @@ -17,29 +17,19 @@ namespace Ryujinx.Common.Utilities /// It is REQUIRED for you to save returned options statically or as a part of static serializer context /// in order to avoid performance issues. You can safely modify returned options for your case before storing. /// - public static JsonSerializerOptions GetDefaultSerializerOptions(bool indented = true) - { - JsonSerializerOptions options = new() + public static JsonSerializerOptions GetDefaultSerializerOptions(bool indented = true) => + new() { DictionaryKeyPolicy = _snakeCasePolicy, PropertyNamingPolicy = _snakeCasePolicy, WriteIndented = indented, AllowTrailingCommas = true, - ReadCommentHandling = JsonCommentHandling.Skip, + ReadCommentHandling = JsonCommentHandling.Skip }; - return options; - } + public static string Serialize(T value, JsonTypeInfo typeInfo) => JsonSerializer.Serialize(value, typeInfo); - public static string Serialize(T value, JsonTypeInfo typeInfo) - { - return JsonSerializer.Serialize(value, typeInfo); - } - - public static T Deserialize(string value, JsonTypeInfo typeInfo) - { - return JsonSerializer.Deserialize(value, typeInfo); - } + public static T Deserialize(string value, JsonTypeInfo typeInfo) => JsonSerializer.Deserialize(value, typeInfo); public static void SerializeToFile(string filePath, T value, JsonTypeInfo typeInfo) { @@ -53,10 +43,7 @@ namespace Ryujinx.Common.Utilities return JsonSerializer.Deserialize(file, typeInfo); } - public static void SerializeToStream(Stream stream, T value, JsonTypeInfo typeInfo) - { - JsonSerializer.Serialize(stream, value, typeInfo); - } + public static void SerializeToStream(Stream stream, T value, JsonTypeInfo typeInfo) => JsonSerializer.Serialize(stream, value, typeInfo); private class SnakeCaseNamingPolicy : JsonNamingPolicy { diff --git a/src/Ryujinx.Graphics.Gpu/GpuContext.cs b/src/Ryujinx.Graphics.Gpu/GpuContext.cs index 048d32fb7..fb529e914 100644 --- a/src/Ryujinx.Graphics.Gpu/GpuContext.cs +++ b/src/Ryujinx.Graphics.Gpu/GpuContext.cs @@ -152,16 +152,17 @@ namespace Ryujinx.Graphics.Gpu /// Creates a new GPU memory manager. /// /// ID of the process that owns the memory manager + /// The amount of physical CPU Memory Avaiable on the device. /// The memory manager /// Thrown when is invalid - public MemoryManager CreateMemoryManager(ulong pid) + public MemoryManager CreateMemoryManager(ulong pid, ulong cpuMemorySize) { if (!PhysicalMemoryRegistry.TryGetValue(pid, out var physicalMemory)) { throw new ArgumentException("The PID is invalid or the process was not registered", nameof(pid)); } - return new MemoryManager(physicalMemory); + return new MemoryManager(physicalMemory, cpuMemorySize); } ///

diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index ad6c1fecb..74967b190 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -1,3 +1,4 @@ +using Ryujinx.Common.Logging; using System; using System.Collections; using System.Collections.Generic; @@ -47,11 +48,17 @@ namespace Ryujinx.Graphics.Gpu.Image { private const int MinCountForDeletion = 32; private const int MaxCapacity = 2048; + private const ulong GiB = 1024 * 1024 * 1024; + private ulong MaxTextureSizeCapacity = 4UL * GiB; private const ulong MinTextureSizeCapacity = 512 * 1024 * 1024; - private const ulong MaxTextureSizeCapacity = 4UL * 1024 * 1024 * 1024; - private const ulong DefaultTextureSizeCapacity = 1UL * 1024 * 1024 * 1024; + private const ulong DefaultTextureSizeCapacity = 1 * GiB; + private const ulong TextureSizeCapacity6GiB = 4 * GiB; + private const ulong TextureSizeCapacity8GiB = 6 * GiB; + private const ulong TextureSizeCapacity12GiB = 12 * GiB; + + private const float MemoryScaleFactor = 0.50f; - private ulong _maxCacheMemoryUsage = 0; + private ulong _maxCacheMemoryUsage = DefaultTextureSizeCapacity; private readonly LinkedList _textures; private ulong _totalSize; @@ -66,18 +73,38 @@ namespace Ryujinx.Graphics.Gpu.Image /// /// /// If the backend GPU has 0 memory capacity, the cache size defaults to `DefaultTextureSizeCapacity`. + /// + /// Reads the current Device total CPU Memory, to determine the maximum amount of Vram available. Capped to 50% of Current GPU Memory. /// /// The GPU context that the cache belongs to - public void Initialize(GpuContext context) + /// The amount of physical CPU Memory Avaiable on the device. + public void Initialize(GpuContext context, ulong cpuMemorySize) { + var cpuMemorySizeGiB = cpuMemorySize / GiB; + + if (cpuMemorySizeGiB < 6 || context.Capabilities.MaximumGpuMemory == 0) + { + _maxCacheMemoryUsage = DefaultTextureSizeCapacity; + return; + } + else if (cpuMemorySizeGiB == 6) + { + MaxTextureSizeCapacity = TextureSizeCapacity6GiB; + } + else if (cpuMemorySizeGiB == 8) + { + MaxTextureSizeCapacity = TextureSizeCapacity8GiB; + } + else + { + MaxTextureSizeCapacity = TextureSizeCapacity12GiB; + } + var cacheMemory = (ulong)(context.Capabilities.MaximumGpuMemory * MemoryScaleFactor); _maxCacheMemoryUsage = Math.Clamp(cacheMemory, MinTextureSizeCapacity, MaxTextureSizeCapacity); - if (context.Capabilities.MaximumGpuMemory == 0) - { - _maxCacheMemoryUsage = DefaultTextureSizeCapacity; - } + Logger.Info?.Print(LogClass.Gpu, $"AutoDelete Cache Allocated VRAM : {_maxCacheMemoryUsage / GiB} GiB"); } /// diff --git a/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs b/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs index 1587e2018..2cfd9af5b 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs @@ -71,9 +71,10 @@ namespace Ryujinx.Graphics.Gpu.Image /// /// Initializes the cache, setting the maximum texture capacity for the specified GPU context. /// - public void Initialize() + /// The amount of physical CPU Memory Avaiable on the device. + public void Initialize(ulong cpuMemorySize) { - _cache.Initialize(_context); + _cache.Initialize(_context, cpuMemorySize); } /// diff --git a/src/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs b/src/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs index d1065431d..59e618c02 100644 --- a/src/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs +++ b/src/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs @@ -55,7 +55,8 @@ namespace Ryujinx.Graphics.Gpu.Memory /// Creates a new instance of the GPU memory manager. /// /// Physical memory that this memory manager will map into - internal MemoryManager(PhysicalMemory physicalMemory) + /// The amount of physical CPU Memory Avaiable on the device. + internal MemoryManager(PhysicalMemory physicalMemory, ulong cpuMemorySize) { Physical = physicalMemory; VirtualRangeCache = new VirtualRangeCache(this); @@ -65,7 +66,7 @@ namespace Ryujinx.Graphics.Gpu.Memory MemoryUnmapped += Physical.BufferCache.MemoryUnmappedHandler; MemoryUnmapped += VirtualRangeCache.MemoryUnmappedHandler; MemoryUnmapped += CounterCache.MemoryUnmappedHandler; - Physical.TextureCache.Initialize(); + Physical.TextureCache.Initialize(cpuMemorySize); } /// diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs index 4308b08f8..56507a2a4 100644 --- a/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs +++ b/src/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstGenMemory.cs @@ -432,7 +432,7 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl.Instructions bool colorIsVector = isGather || !isShadow; - texCall += ")" + (colorIsVector ? GetMaskMultiDest(texOp.Index) : ""); + texCall += ")" + (colorIsVector ? GetMaskMultiDest(texOp.Index) : string.Empty); return texCall; } diff --git a/src/Ryujinx.Graphics.Shader/Translation/FunctionMatch.cs b/src/Ryujinx.Graphics.Shader/Translation/FunctionMatch.cs index 714a9d68c..b792776df 100644 --- a/src/Ryujinx.Graphics.Shader/Translation/FunctionMatch.cs +++ b/src/Ryujinx.Graphics.Shader/Translation/FunctionMatch.cs @@ -830,12 +830,12 @@ namespace Ryujinx.Graphics.Shader.Translation if (use.Node != null) { - Console.Write($"{indentation} {separator}- ({(use.Inverted ? "INV " : "")}{use.Index})"); + Console.Write($"{indentation} {separator}- ({(use.Inverted ? "INV " : string.Empty)}{use.Index})"); PrintTreeNode(use.Node, indentation + (last ? " " : " | ")); } else { - Console.WriteLine($"{indentation} {separator}- ({(use.Inverted ? "INV " : "")}{use.Index}) NULL"); + Console.WriteLine($"{indentation} {separator}- ({(use.Inverted ? "INV " : string.Empty)}{use.Index}) NULL"); } } } @@ -852,12 +852,12 @@ namespace Ryujinx.Graphics.Shader.Translation if (use.Node != null) { - Console.Write($"{indentation} {separator}- ({(use.Inverted ? "INV " : "")}{use.Index})"); + Console.Write($"{indentation} {separator}- ({(use.Inverted ? "INV " : string.Empty)}{use.Index})"); PrintTreeNode(use.Node, indentation + (last ? " " : " | ")); } else { - Console.WriteLine($"{indentation} {separator}- ({(use.Inverted ? "INV " : "")}{use.Index}) NULL"); + Console.WriteLine($"{indentation} {separator}- ({(use.Inverted ? "INV " : string.Empty)}{use.Index}) NULL"); } } } diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs index af2cfa17f..8d324957a 100644 --- a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs +++ b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs @@ -104,25 +104,27 @@ namespace Ryujinx.Graphics.Vulkan public event EventHandler ScreenCaptured; - public VulkanRenderer(Vk api, Func surfaceFunc, Func requiredExtensionsFunc, string preferredGpuId) + public VulkanRenderer(Vk api, Func getSurface, Func requiredExtensionsFunc, string preferredGpuId) { - _getSurface = surfaceFunc; + _getSurface = getSurface; _getRequiredExtensions = requiredExtensionsFunc; _preferredGpuId = preferredGpuId; Api = api; - Shaders = new HashSet(); - Textures = new HashSet(); - Samplers = new HashSet(); + Shaders = []; + Textures = []; + Samplers = []; - if (OperatingSystem.IsMacOS()) - { + // Any device running on MacOS is using MoltenVK, even Intel and AMD vendors. + if (IsMoltenVk = OperatingSystem.IsMacOS()) MVKInitialization.Initialize(); - - // Any device running on MacOS is using MoltenVK, even Intel and AMD vendors. - IsMoltenVk = true; - } } + public static VulkanRenderer Create( + string preferredGpuId, + Func getSurface, + Func getRequiredExtensions + ) => new(Vk.GetApi(), getSurface, getRequiredExtensions, preferredGpuId); + private unsafe void LoadFeatures(uint maxQueueCount, uint queueFamilyIndex) { FormatCapabilities = new FormatCapabilities(Api, _physicalDevice.PhysicalDevice); diff --git a/src/Ryujinx.HLE.Generators/IpcServiceGenerator.cs b/src/Ryujinx.HLE.Generators/IpcServiceGenerator.cs index d6b6f23ef..5dcd49af5 100644 --- a/src/Ryujinx.HLE.Generators/IpcServiceGenerator.cs +++ b/src/Ryujinx.HLE.Generators/IpcServiceGenerator.cs @@ -22,7 +22,7 @@ namespace Ryujinx.HLE.Generators { if (className.Modifiers.Any(SyntaxKind.AbstractKeyword) || className.Modifiers.Any(SyntaxKind.PrivateKeyword) || !className.AttributeLists.Any(x => x.Attributes.Any(y => y.ToString().StartsWith("Service")))) continue; - var name = GetFullName(className, context).Replace("global::", ""); + var name = GetFullName(className, context).Replace("global::", string.Empty); if (!name.StartsWith("Ryujinx.HLE.HOS.Services")) continue; var constructors = className.ChildNodes().Where(x => x.IsKind(SyntaxKind.ConstructorDeclaration)).Select(y => y as ConstructorDeclarationSyntax).ToArray(); diff --git a/src/Ryujinx.HLE/FileSystem/ContentManager.cs b/src/Ryujinx.HLE/FileSystem/ContentManager.cs index 952271fa1..fc8def9d2 100644 --- a/src/Ryujinx.HLE/FileSystem/ContentManager.cs +++ b/src/Ryujinx.HLE/FileSystem/ContentManager.cs @@ -523,7 +523,7 @@ namespace Ryujinx.HLE.FileSystem { // Clean up the name and get the NcaId - string[] pathComponents = entry.FullName.Replace(".cnmt", "").Split('/'); + string[] pathComponents = entry.FullName.Replace(".cnmt", string.Empty).Split('/'); string ncaId = pathComponents[^1]; diff --git a/src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs b/src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs index 0e1265fb6..39c544eac 100644 --- a/src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs +++ b/src/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs @@ -132,7 +132,7 @@ namespace Ryujinx.HLE.FileSystem if (systemPath.StartsWith(baseSystemPath)) { - string rawPath = systemPath.Replace(baseSystemPath, ""); + string rawPath = systemPath.Replace(baseSystemPath, string.Empty); int firstSeparatorOffset = rawPath.IndexOf(Path.DirectorySeparatorChar); if (firstSeparatorOffset == -1) diff --git a/src/Ryujinx.HLE/HOS/Applets/Error/ErrorApplet.cs b/src/Ryujinx.HLE/HOS/Applets/Error/ErrorApplet.cs index 5a40433cb..87d88fc65 100644 --- a/src/Ryujinx.HLE/HOS/Applets/Error/ErrorApplet.cs +++ b/src/Ryujinx.HLE/HOS/Applets/Error/ErrorApplet.cs @@ -107,7 +107,7 @@ namespace Ryujinx.HLE.HOS.Applets.Error private static string CleanText(string value) { - return CleanTextRegex().Replace(value, "").Replace("\0", ""); + return CleanTextRegex().Replace(value, string.Empty).Replace("\0", string.Empty); } private string GetMessageText(uint module, uint description, string key) @@ -129,17 +129,15 @@ namespace Ryujinx.HLE.HOS.Applets.Error return CleanText(reader.ReadToEnd()); } - else - { - return ""; - } + + return string.Empty; } private string[] GetButtonsText(uint module, uint description, string key) { string buttonsText = GetMessageText(module, description, key); - return (buttonsText == "") ? null : buttonsText.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None); + return (buttonsText == string.Empty) ? null : buttonsText.Split(["\r\n", "\r", "\n"], StringSplitOptions.None); } private void ParseErrorCommonArg() @@ -156,7 +154,7 @@ namespace Ryujinx.HLE.HOS.Applets.Error string message = GetMessageText(module, description, "DlgMsg"); - if (message == "") + if (message == string.Empty) { message = "An error has occured.\n\nPlease try again later."; } @@ -190,7 +188,7 @@ namespace Ryujinx.HLE.HOS.Applets.Error // TODO: Handle the LanguageCode to return the translated "OK" and "Details". - if (detailsText.Trim() != "") + if (detailsText.Trim() != string.Empty) { buttons.Add("Details"); } diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardApplet.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardApplet.cs index 0462a5b00..e04fc64fe 100644 --- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardApplet.cs +++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardApplet.cs @@ -51,7 +51,7 @@ namespace Ryujinx.HLE.HOS.Applets private byte[] _transferMemory; - private string _textValue = ""; + private string _textValue = string.Empty; private int _cursorBegin = 0; private Encoding _encoding = Encoding.Unicode; private KeyboardResult _lastResult = KeyboardResult.NotSet; diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardRendererBase.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardRendererBase.cs index cc62eca1d..67b5f2b1f 100644 --- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardRendererBase.cs +++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardRendererBase.cs @@ -305,7 +305,7 @@ namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard { SKRect bounds = SKRect.Empty; - if (text == "") + if (text == string.Empty) { paint.MeasureText(" ", ref bounds); } @@ -321,7 +321,7 @@ namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard { SKRect bounds = SKRect.Empty; - if (text == "") + if (text == string.Empty) { paint.MeasureText(" ", ref bounds); } diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardUIState.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardUIState.cs index 6199ff666..da5220364 100644 --- a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardUIState.cs +++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardUIState.cs @@ -7,7 +7,7 @@ namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard /// internal class SoftwareKeyboardUIState { - public string InputText = ""; + public string InputText = string.Empty; public int CursorBegin = 0; public int CursorEnd = 0; public bool AcceptPressed = false; diff --git a/src/Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs b/src/Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs index 7578f1d2f..ff3de4a17 100644 --- a/src/Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs +++ b/src/Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs @@ -238,7 +238,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process } else { - info.SubName = ""; + info.SubName = string.Empty; } info.ImageName = GetGuessedNsoNameFromIndex(imageIndex); diff --git a/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountManager.cs b/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountManager.cs index c724660ea..d2da9e248 100644 --- a/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountManager.cs +++ b/src/Ryujinx.HLE/HOS/Services/Account/Acc/AccountManager.cs @@ -64,7 +64,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc { if (userId.IsNull) { - userId = new UserId(Guid.NewGuid().ToString().Replace("-", "")); + userId = new UserId(Guid.NewGuid().ToString().Replace("-", string.Empty)); } UserProfile profile = new(userId, name, image); diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Hid.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Hid.cs index dbcbe1870..66b5a5cba 100644 --- a/src/Ryujinx.HLE/HOS/Services/Hid/Hid.cs +++ b/src/Ryujinx.HLE/HOS/Services/Hid/Hid.cs @@ -5,6 +5,7 @@ using Ryujinx.HLE.Exceptions; using Ryujinx.HLE.HOS.Kernel.Memory; using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory; using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common; +using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.DebugMouse; using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.DebugPad; using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Keyboard; using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Mouse; @@ -28,6 +29,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid public DebugPadDevice DebugPad; public TouchDevice Touchscreen; public MouseDevice Mouse; + public DebugMouseDevice DebugMouse; public KeyboardDevice Keyboard; public NpadDevices Npads; @@ -44,6 +46,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid CheckTypeSizeOrThrow>(0x2c8); CheckTypeSizeOrThrow>(0x2C38); CheckTypeSizeOrThrow>(0x350); + CheckTypeSizeOrThrow>(0x350); CheckTypeSizeOrThrow>(0x3D8); CheckTypeSizeOrThrow>(0x32000); CheckTypeSizeOrThrow(Horizon.HidSize); @@ -64,6 +67,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid DebugPad = new DebugPadDevice(_device, true); Touchscreen = new TouchDevice(_device, true); Mouse = new MouseDevice(_device, false); + DebugMouse = new DebugMouseDevice(_device, false); Keyboard = new KeyboardDevice(_device, false); Npads = new NpadDevices(_device, true); } diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/HidDevices/DebugMouseDevice.cs b/src/Ryujinx.HLE/HOS/Services/Hid/HidDevices/DebugMouseDevice.cs new file mode 100644 index 000000000..cb917444b --- /dev/null +++ b/src/Ryujinx.HLE/HOS/Services/Hid/HidDevices/DebugMouseDevice.cs @@ -0,0 +1,29 @@ +using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common; +using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.DebugMouse; + +namespace Ryujinx.HLE.HOS.Services.Hid +{ + public class DebugMouseDevice : BaseDevice + { + public DebugMouseDevice(Switch device, bool active) : base(device, active) { } + + public void Update() + { + ref RingLifo lifo = ref _device.Hid.SharedMemory.DebugMouse; + + ref DebugMouseState previousEntry = ref lifo.GetCurrentEntryRef(); + + DebugMouseState newState = new() + { + SamplingNumber = previousEntry.SamplingNumber + 1, + }; + + if (Active) + { + // TODO: This is a debug device only present in dev environment, do we want to support it? + } + + lifo.Write(ref newState); + } + } +} diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs b/src/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs index e3f505f37..556e35ea6 100644 --- a/src/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs +++ b/src/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs @@ -130,6 +130,26 @@ namespace Ryujinx.HLE.HOS.Services.Hid return ResultCode.Success; } + + [CommandCmif(26)] + // ActivateDebugMouse(nn::applet::AppletResourceUserId) + public ResultCode ActivateDebugMouse(ServiceCtx context) + { + long appletResourceUserId = context.RequestData.ReadInt64(); + + context.Device.Hid.DebugMouse.Active = true; + + // Initialize entries to avoid issues with some games. + + for (int entry = 0; entry < Hid.SharedMemEntryCount; entry++) + { + context.Device.Hid.DebugMouse.Update(); + } + + Logger.Stub?.PrintStub(LogClass.ServiceHid, new { appletResourceUserId }); + + return ResultCode.Success; + } [CommandCmif(31)] // ActivateKeyboard(nn::applet::AppletResourceUserId) diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugMouse/DebugMouseAttribute.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugMouse/DebugMouseAttribute.cs new file mode 100644 index 000000000..0b55277d4 --- /dev/null +++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugMouse/DebugMouseAttribute.cs @@ -0,0 +1,12 @@ +using System; + +namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.DebugMouse +{ + [Flags] + enum DebugMouseAttribute : uint + { + None = 0, + Transferable = 1 << 0, + IsConnected = 1 << 1, + } +} diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugMouse/DebugMouseButton.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugMouse/DebugMouseButton.cs new file mode 100644 index 000000000..c07fa84af --- /dev/null +++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugMouse/DebugMouseButton.cs @@ -0,0 +1,15 @@ +using System; + +namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.DebugMouse +{ + [Flags] + enum DebugMouseButton : uint + { + None = 0, + Left = 1 << 0, + Right = 1 << 1, + Middle = 1 << 2, + Forward = 1 << 3, + Back = 1 << 4, + } +} diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugMouse/DebugMouseState.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugMouse/DebugMouseState.cs new file mode 100644 index 000000000..e2860c9f5 --- /dev/null +++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/DebugMouse/DebugMouseState.cs @@ -0,0 +1,19 @@ +using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common; +using System.Runtime.InteropServices; + +namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.DebugMouse +{ + [StructLayout(LayoutKind.Sequential, Pack = 1)] + struct DebugMouseState : ISampledDataStruct + { + public ulong SamplingNumber; + public int X; + public int Y; + public int DeltaX; + public int DeltaY; + public int WheelDeltaX; + public int WheelDeltaY; + public DebugMouseButton Buttons; + public DebugMouseAttribute Attributes; + } +} diff --git a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/SharedMemory.cs b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/SharedMemory.cs index d6283eb57..59d8f4489 100644 --- a/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/SharedMemory.cs +++ b/src/Ryujinx.HLE/HOS/Services/Hid/Types/SharedMemory/SharedMemory.cs @@ -1,5 +1,6 @@ using Ryujinx.Common.Memory; using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common; +using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.DebugMouse; using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.DebugPad; using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Keyboard; using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Mouse; @@ -44,6 +45,12 @@ namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory /// [FieldOffset(0x9A00)] public Array10 Npads; + + /// + /// Debug mouse. + /// + [FieldOffset(0x3DC00)] + public RingLifo DebugMouse; public static SharedMemory Create() { diff --git a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LanProtocol.cs b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LanProtocol.cs index 4b01bfe31..b60b70d80 100644 --- a/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LanProtocol.cs +++ b/src/Ryujinx.HLE/HOS/Services/Ldn/UserServiceCreator/LdnMitm/LanProtocol.cs @@ -1,3 +1,4 @@ +using Gommon; using Ryujinx.Common.Logging; using Ryujinx.Common.Memory; using Ryujinx.Common.Utilities; @@ -143,7 +144,7 @@ namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.LdnMitm if (decompressedLdnData.Length != header.DecompressLength) { Logger.Error?.PrintMsg(LogClass.ServiceLdn, $"Decompress error: length does not match. ({decompressedLdnData.Length} != {header.DecompressLength})"); - Logger.Error?.PrintMsg(LogClass.ServiceLdn, $"Decompress error data: '{string.Join("", decompressedLdnData.Select(x => (int)x).ToArray())}'"); + Logger.Error?.PrintMsg(LogClass.ServiceLdn, $"Decompress error data: '{decompressedLdnData.Select(x => (int)x).JoinToString(string.Empty)}'"); return; } diff --git a/src/Ryujinx.HLE/HOS/Services/Ngct/NgctServer.cs b/src/Ryujinx.HLE/HOS/Services/Ngct/NgctServer.cs index f652ecda8..b076958eb 100644 --- a/src/Ryujinx.HLE/HOS/Services/Ngct/NgctServer.cs +++ b/src/Ryujinx.HLE/HOS/Services/Ngct/NgctServer.cs @@ -15,7 +15,7 @@ namespace Ryujinx.HLE.HOS.Services.Ngct ulong bufferSize = context.Request.PtrBuff[0].Size; bool isMatch = false; - string text = ""; + string text = string.Empty; if (bufferSize != 0) { @@ -57,8 +57,8 @@ namespace Ryujinx.HLE.HOS.Services.Ngct ulong bufferFilteredPosition = context.Request.RecvListBuff[0].Position; - string text = ""; - string textFiltered = ""; + string text = string.Empty; + string textFiltered = string.Empty; if (bufferSize != 0) { diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/NvHostAsGpuDeviceFile.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/NvHostAsGpuDeviceFile.cs index ff9a67644..0f5d7547c 100644 --- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/NvHostAsGpuDeviceFile.cs +++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/NvHostAsGpuDeviceFile.cs @@ -42,7 +42,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu public NvHostAsGpuDeviceFile(ServiceCtx context, IVirtualMemoryManager memory, ulong owner) : base(context, owner) { - _asContext = new AddressSpaceContext(context.Device.Gpu.CreateMemoryManager(owner)); + _asContext = new AddressSpaceContext(context.Device.Gpu.CreateMemoryManager(owner, context.Device.Memory.Size)); _memoryAllocator = new NvMemoryAllocator(); } diff --git a/src/Ryujinx.HLE/HOS/Services/Settings/NxSettings.cs b/src/Ryujinx.HLE/HOS/Services/Settings/NxSettings.cs index b2d4d55cc..b0b854f74 100644 --- a/src/Ryujinx.HLE/HOS/Services/Settings/NxSettings.cs +++ b/src/Ryujinx.HLE/HOS/Services/Settings/NxSettings.cs @@ -73,1529 +73,1529 @@ namespace Ryujinx.HLE.HOS.Services.Settings { "ns.sdcard!compare_sdcard", 0 }, { "ns.gamecard!mount_gamecard_result_value", 0 }, { "ns.gamecard!try_gamecard_access_result_value", 0 }, - { "nv!00008600", "" }, - { "nv!0007b25e", "" }, - { "nv!0083e1", "" }, - { "nv!01621887", "" }, - { "nv!03134743", "" }, - { "nv!0356afd0", "" }, - { "nv!0356afd1", "" }, - { "nv!0356afd2", "" }, - { "nv!0356afd3", "" }, - { "nv!094313", "" }, - { "nv!0x04dc09", "" }, - { "nv!0x111133", "" }, - { "nv!0x1aa483", "" }, - { "nv!0x1cb1cf", "" }, - { "nv!0x1cb1d0", "" }, - { "nv!0x1e3221", "" }, - { "nv!0x300fc8", "" }, - { "nv!0x301fc8", "" }, - { "nv!0x302fc8", "" }, - { "nv!0x3eec59", "" }, - { "nv!0x46b3ed", "" }, - { "nv!0x523dc0", "" }, - { "nv!0x523dc1", "" }, - { "nv!0x523dc2", "" }, - { "nv!0x523dc3", "" }, - { "nv!0x523dc4", "" }, - { "nv!0x523dc5", "" }, - { "nv!0x523dc6", "" }, - { "nv!0x523dd0", "" }, - { "nv!0x523dd1", "" }, - { "nv!0x523dd3", "" }, - { "nv!0x5344bb", "" }, - { "nv!0x555237", "" }, - { "nv!0x58a234", "" }, - { "nv!0x7b4428", "" }, - { "nv!0x923dc0", "" }, - { "nv!0x923dc1", "" }, - { "nv!0x923dc2", "" }, - { "nv!0x923dc3", "" }, - { "nv!0x923dc4", "" }, - { "nv!0x923dd3", "" }, - { "nv!0x9abdc5", "" }, - { "nv!0x9abdc6", "" }, - { "nv!0xaaa36c", "" }, - { "nv!0xb09da0", "" }, - { "nv!0xb09da1", "" }, - { "nv!0xb09da2", "" }, - { "nv!0xb09da3", "" }, - { "nv!0xb09da4", "" }, - { "nv!0xb09da5", "" }, - { "nv!0xb0b348", "" }, - { "nv!0xb0b349", "" }, - { "nv!0xbb558f", "" }, - { "nv!0xbd10fb", "" }, - { "nv!0xc32ad3", "" }, - { "nv!0xce2348", "" }, - { "nv!0xcfd81f", "" }, - { "nv!0xe0036b", "" }, - { "nv!0xe01f2d", "" }, - { "nv!0xe17212", "" }, - { "nv!0xeae966", "" }, - { "nv!0xed4f82", "" }, - { "nv!0xf12335", "" }, - { "nv!0xf12336", "" }, - { "nv!10261989", "" }, - { "nv!1042d483", "" }, - { "nv!10572898", "" }, - { "nv!115631", "" }, - { "nv!12950094", "" }, - { "nv!1314f311", "" }, - { "nv!1314f312", "" }, - { "nv!13279512", "" }, - { "nv!13813496", "" }, - { "nv!14507179", "" }, - { "nv!15694569", "" }, - { "nv!16936964", "" }, - { "nv!17aa230c", "" }, - { "nv!182054", "" }, - { "nv!18273275", "" }, - { "nv!18273276", "" }, - { "nv!1854d03b", "" }, - { "nv!18add00d", "" }, - { "nv!19156670", "" }, - { "nv!19286545", "" }, - { "nv!1a298e9f", "" }, - { "nv!1acf43fe", "" }, - { "nv!1bda43fe", "" }, - { "nv!1c3b92", "" }, - { "nv!21509920", "" }, - { "nv!215323457", "" }, - { "nv!2165ad", "" }, - { "nv!2165ae", "" }, - { "nv!21be9c", "" }, - { "nv!233264316", "" }, - { "nv!234557580", "" }, - { "nv!23cd0e", "" }, - { "nv!24189123", "" }, - { "nv!2443266", "" }, - { "nv!25025519", "" }, - { "nv!255e39", "" }, - { "nv!2583364", "" }, - { "nv!2888c1", "" }, - { "nv!28ca3e", "" }, - { "nv!29871243", "" }, - { "nv!2a1f64", "" }, - { "nv!2dc432", "" }, - { "nv!2de437", "" }, - { "nv!2f3bb89c", "" }, - { "nv!2fd652", "" }, - { "nv!3001ac", "" }, - { "nv!31298772", "" }, - { "nv!313233", "" }, - { "nv!31f7d603", "" }, - { "nv!320ce4", "" }, - { "nv!32153248", "" }, - { "nv!32153249", "" }, - { "nv!335bca", "" }, - { "nv!342abb", "" }, - { "nv!34dfe6", "" }, - { "nv!34dfe7", "" }, - { "nv!34dfe8", "" }, - { "nv!34dfe9", "" }, - { "nv!35201578", "" }, - { "nv!359278", "" }, - { "nv!37f53a", "" }, - { "nv!38144972", "" }, - { "nv!38542646", "" }, - { "nv!3b74c9", "" }, - { "nv!3c136f", "" }, - { "nv!3cf72823", "" }, - { "nv!3d7af029", "" }, - { "nv!3ff34782", "" }, - { "nv!4129618", "" }, - { "nv!4189fac3", "" }, - { "nv!420bd4", "" }, - { "nv!42a699", "" }, - { "nv!441369", "" }, - { "nv!4458713e", "" }, - { "nv!4554b6", "" }, - { "nv!457425", "" }, - { "nv!4603b207", "" }, - { "nv!46574957", "" }, - { "nv!46574958", "" }, - { "nv!46813529", "" }, - { "nv!46f1e13d", "" }, - { "nv!47534c43", "" }, - { "nv!48550336", "" }, - { "nv!48576893", "" }, - { "nv!48576894", "" }, - { "nv!4889ac02", "" }, - { "nv!49005740", "" }, - { "nv!49867584", "" }, - { "nv!49960973", "" }, - { "nv!4a5341", "" }, - { "nv!4f4e48", "" }, - { "nv!4f8a0a", "" }, - { "nv!50299698", "" }, - { "nv!50299699", "" }, - { "nv!50361291", "" }, - { "nv!5242ae", "" }, - { "nv!53d30c", "" }, - { "nv!56347a", "" }, - { "nv!563a95f1", "" }, - { "nv!573823", "" }, - { "nv!58027529", "" }, - { "nv!5d2d63", "" }, - { "nv!5f7e3b", "" }, - { "nv!60461793", "" }, - { "nv!60d355", "" }, - { "nv!616627aa", "" }, - { "nv!62317182", "" }, - { "nv!6253fa2e", "" }, - { "nv!64100768", "" }, - { "nv!64100769", "" }, - { "nv!64100770", "" }, - { "nv!647395", "" }, - { "nv!66543234", "" }, - { "nv!67674763", "" }, - { "nv!67739784", "" }, - { "nv!68fb9c", "" }, - { "nv!69801276", "" }, - { "nv!6af9fa2f", "" }, - { "nv!6af9fa3f", "" }, - { "nv!6af9fa4f", "" }, - { "nv!6bd8c7", "" }, - { "nv!6c7691", "" }, - { "nv!6d4296ce", "" }, - { "nv!6dd7e7", "" }, - { "nv!6dd7e8", "" }, - { "nv!6fe11ec1", "" }, - { "nv!716511763", "" }, - { "nv!72504593", "" }, - { "nv!73304097", "" }, - { "nv!73314098", "" }, - { "nv!74095213", "" }, - { "nv!74095213a", "" }, - { "nv!74095213b", "" }, - { "nv!74095214", "" }, - { "nv!748f9649", "" }, - { "nv!75494732", "" }, - { "nv!78452832", "" }, - { "nv!784561", "" }, - { "nv!78e16b9c", "" }, - { "nv!79251225", "" }, - { "nv!7c128b", "" }, - { "nv!7ccd93", "" }, - { "nv!7df8d1", "" }, - { "nv!800c2310", "" }, - { "nv!80546710", "" }, - { "nv!80772310", "" }, - { "nv!808ee280", "" }, - { "nv!81131154", "" }, - { "nv!81274457", "" }, - { "nv!8292291f", "" }, - { "nv!83498426", "" }, - { "nv!84993794", "" }, - { "nv!84995585", "" }, - { "nv!84a0a0", "" }, - { "nv!852142", "" }, - { "nv!85612309", "" }, - { "nv!85612310", "" }, - { "nv!85612311", "" }, - { "nv!85612312", "" }, - { "nv!8623ff27", "" }, - { "nv!87364952", "" }, - { "nv!87f6275666", "" }, - { "nv!886748", "" }, - { "nv!89894423", "" }, - { "nv!8ad8a75", "" }, - { "nv!8ad8ad00", "" }, - { "nv!8bb815", "" }, - { "nv!8bb817", "" }, - { "nv!8bb818", "" }, - { "nv!8bb819", "" }, - { "nv!8e640cd1", "" }, - { "nv!8f34971a", "" }, - { "nv!8f773984", "" }, - { "nv!8f7a7d", "" }, - { "nv!902486209", "" }, - { "nv!90482571", "" }, - { "nv!91214835", "" }, - { "nv!912848290", "" }, - { "nv!915e56", "" }, - { "nv!92179063", "" }, - { "nv!92179064", "" }, - { "nv!92179065", "" }, - { "nv!92179066", "" }, - { "nv!92350358", "" }, - { "nv!92809063", "" }, - { "nv!92809064", "" }, - { "nv!92809065", "" }, - { "nv!92809066", "" }, - { "nv!92920143", "" }, - { "nv!93a89b12", "" }, - { "nv!93a89c0b", "" }, - { "nv!94812574", "" }, - { "nv!95282304", "" }, - { "nv!95394027", "" }, - { "nv!959b1f", "" }, - { "nv!9638af", "" }, - { "nv!96fd59", "" }, - { "nv!97f6275666", "" }, - { "nv!97f6275667", "" }, - { "nv!97f6275668", "" }, - { "nv!97f6275669", "" }, - { "nv!97f627566a", "" }, - { "nv!97f627566b", "" }, - { "nv!97f627566d", "" }, - { "nv!97f627566e", "" }, - { "nv!97f627566f", "" }, - { "nv!97f6275670", "" }, - { "nv!97f6275671", "" }, - { "nv!97f727566e", "" }, - { "nv!98480775", "" }, - { "nv!98480776", "" }, - { "nv!98480777", "" }, - { "nv!992431", "" }, - { "nv!9aa29065", "" }, - { "nv!9af32c", "" }, - { "nv!9af32d", "" }, - { "nv!9af32e", "" }, - { "nv!9c108b71", "" }, - { "nv!9f279065", "" }, - { "nv!a01bc728", "" }, - { "nv!a13b46c80", "" }, - { "nv!a22eb0", "" }, - { "nv!a2fb451e", "" }, - { "nv!a3456abe", "" }, - { "nv!a7044887", "" }, - { "nv!a7149200", "" }, - { "nv!a766215670", "" }, - { "nv!aac_drc_boost", "" }, - { "nv!aac_drc_cut", "" }, - { "nv!aac_drc_enc_target_level", "" }, - { "nv!aac_drc_heavy", "" }, - { "nv!aac_drc_reference_level", "" }, - { "nv!aalinegamma", "" }, - { "nv!aalinetweaks", "" }, - { "nv!ab34ee01", "" }, - { "nv!ab34ee02", "" }, - { "nv!ab34ee03", "" }, - { "nv!ac0274", "" }, - { "nv!af73c63e", "" }, - { "nv!af73c63f", "" }, - { "nv!af9927", "" }, - { "nv!afoverride", "" }, - { "nv!allocdeviceevents", "" }, - { "nv!applicationkey", "" }, - { "nv!appreturnonlybasicglsltype", "" }, - { "nv!app_softimage", "" }, - { "nv!app_supportbits2", "" }, - { "nv!assumetextureismipmappedatcreation", "" }, - { "nv!b1fb0f01", "" }, - { "nv!b3edd5", "" }, - { "nv!b40d9e03d", "" }, - { "nv!b7f6275666", "" }, - { "nv!b812c1", "" }, - { "nv!ba14ba1a", "" }, - { "nv!ba14ba1b", "" }, - { "nv!bd7559", "" }, - { "nv!bd755a", "" }, - { "nv!bd755c", "" }, - { "nv!bd755d", "" }, - { "nv!be58bb", "" }, - { "nv!be92cb", "" }, - { "nv!beefcba3", "" }, - { "nv!beefcba4", "" }, - { "nv!c023777f", "" }, - { "nv!c09dc8", "" }, - { "nv!c0d340", "" }, - { "nv!c2ff374c", "" }, - { "nv!c5e9d7a3", "" }, - { "nv!c5e9d7a4", "" }, - { "nv!c5e9d7b4", "" }, - { "nv!c618f9", "" }, - { "nv!ca345840", "" }, - { "nv!cachedisable", "" }, - { "nv!cast.on", "" }, - { "nv!cde", "" }, - { "nv!channelpriorityoverride", "" }, - { "nv!cleardatastorevidmem", "" }, - { "nv!cmdbufmemoryspaceenables", "" }, - { "nv!cmdbufminwords", "" }, - { "nv!cmdbufsizewords", "" }, - { "nv!conformantblitframebufferscissor", "" }, - { "nv!conformantincompletetextures", "" }, - { "nv!copybuffermethod", "" }, - { "nv!cubemapaniso", "" }, - { "nv!cubemapfiltering", "" }, - { "nv!d0e9a4d7", "" }, - { "nv!d13733f12", "" }, - { "nv!d1b399", "" }, - { "nv!d2983c32", "" }, - { "nv!d2983c33", "" }, - { "nv!d2e71b", "" }, - { "nv!d377dc", "" }, - { "nv!d377dd", "" }, - { "nv!d489f4", "" }, - { "nv!d4bce1", "" }, - { "nv!d518cb", "" }, - { "nv!d518cd", "" }, - { "nv!d518ce", "" }, - { "nv!d518d0", "" }, - { "nv!d518d1", "" }, - { "nv!d518d2", "" }, - { "nv!d518d3", "" }, - { "nv!d518d4", "" }, - { "nv!d518d5", "" }, - { "nv!d59eda", "" }, - { "nv!d83cbd", "" }, - { "nv!d8e777", "" }, - { "nv!debug_level", "" }, - { "nv!debug_mask", "" }, - { "nv!debug_options", "" }, - { "nv!devshmpageableallocations", "" }, - { "nv!df1f9812", "" }, - { "nv!df783c", "" }, - { "nv!diagenable", "" }, - { "nv!disallowcemask", "" }, - { "nv!disallowz16", "" }, - { "nv!dlmemoryspaceenables", "" }, - { "nv!e0bfec", "" }, - { "nv!e433456d", "" }, - { "nv!e435563f", "" }, - { "nv!e4cd9c", "" }, - { "nv!e5c972", "" }, - { "nv!e639ef", "" }, - { "nv!e802af", "" }, - { "nv!eae964", "" }, - { "nv!earlytexturehwallocation", "" }, - { "nv!eb92a3", "" }, - { "nv!ebca56", "" }, - { "nv!enable-noaud", "" }, - { "nv!enable-noavs", "" }, - { "nv!enable-prof", "" }, - { "nv!enable-sxesmode", "" }, - { "nv!enable-ulld", "" }, - { "nv!expert_detail_level", "" }, - { "nv!expert_output_mask", "" }, - { "nv!expert_report_mask", "" }, - { "nv!extensionstringnvarch", "" }, - { "nv!extensionstringversion", "" }, - { "nv!f00f1938", "" }, - { "nv!f10736", "" }, - { "nv!f1846870", "" }, - { "nv!f33bc370", "" }, - { "nv!f392a874", "" }, - { "nv!f49ae8", "" }, - { "nv!fa345cce", "" }, - { "nv!fa35cc4", "" }, - { "nv!faa14a", "" }, - { "nv!faf8a723", "" }, - { "nv!fastgs", "" }, - { "nv!fbf4ac45", "" }, - { "nv!fbo_blit_ignore_srgb", "" }, - { "nv!fc64c7", "" }, - { "nv!ff54ec97", "" }, - { "nv!ff54ec98", "" }, - { "nv!forceexitprocessdetach", "" }, - { "nv!forcerequestedesversion", "" }, - { "nv!__gl_", "" }, - { "nv!__gl_00008600", "" }, - { "nv!__gl_0007b25e", "" }, - { "nv!__gl_0083e1", "" }, - { "nv!__gl_01621887", "" }, - { "nv!__gl_03134743", "" }, - { "nv!__gl_0356afd0", "" }, - { "nv!__gl_0356afd1", "" }, - { "nv!__gl_0356afd2", "" }, - { "nv!__gl_0356afd3", "" }, - { "nv!__gl_094313", "" }, - { "nv!__gl_0x04dc09", "" }, - { "nv!__gl_0x111133", "" }, - { "nv!__gl_0x1aa483", "" }, - { "nv!__gl_0x1cb1cf", "" }, - { "nv!__gl_0x1cb1d0", "" }, - { "nv!__gl_0x1e3221", "" }, - { "nv!__gl_0x300fc8", "" }, - { "nv!__gl_0x301fc8", "" }, - { "nv!__gl_0x302fc8", "" }, - { "nv!__gl_0x3eec59", "" }, - { "nv!__gl_0x46b3ed", "" }, - { "nv!__gl_0x523dc0", "" }, - { "nv!__gl_0x523dc1", "" }, - { "nv!__gl_0x523dc2", "" }, - { "nv!__gl_0x523dc3", "" }, - { "nv!__gl_0x523dc4", "" }, - { "nv!__gl_0x523dc5", "" }, - { "nv!__gl_0x523dc6", "" }, - { "nv!__gl_0x523dd0", "" }, - { "nv!__gl_0x523dd1", "" }, - { "nv!__gl_0x523dd3", "" }, - { "nv!__gl_0x5344bb", "" }, - { "nv!__gl_0x555237", "" }, - { "nv!__gl_0x58a234", "" }, - { "nv!__gl_0x7b4428", "" }, - { "nv!__gl_0x923dc0", "" }, - { "nv!__gl_0x923dc1", "" }, - { "nv!__gl_0x923dc2", "" }, - { "nv!__gl_0x923dc3", "" }, - { "nv!__gl_0x923dc4", "" }, - { "nv!__gl_0x923dd3", "" }, - { "nv!__gl_0x9abdc5", "" }, - { "nv!__gl_0x9abdc6", "" }, - { "nv!__gl_0xaaa36c", "" }, - { "nv!__gl_0xb09da0", "" }, - { "nv!__gl_0xb09da1", "" }, - { "nv!__gl_0xb09da2", "" }, - { "nv!__gl_0xb09da3", "" }, - { "nv!__gl_0xb09da4", "" }, - { "nv!__gl_0xb09da5", "" }, - { "nv!__gl_0xb0b348", "" }, - { "nv!__gl_0xb0b349", "" }, - { "nv!__gl_0xbb558f", "" }, - { "nv!__gl_0xbd10fb", "" }, - { "nv!__gl_0xc32ad3", "" }, - { "nv!__gl_0xce2348", "" }, - { "nv!__gl_0xcfd81f", "" }, - { "nv!__gl_0xe0036b", "" }, - { "nv!__gl_0xe01f2d", "" }, - { "nv!__gl_0xe17212", "" }, - { "nv!__gl_0xeae966", "" }, - { "nv!__gl_0xed4f82", "" }, - { "nv!__gl_0xf12335", "" }, - { "nv!__gl_0xf12336", "" }, - { "nv!__gl_10261989", "" }, - { "nv!__gl_1042d483", "" }, - { "nv!__gl_10572898", "" }, - { "nv!__gl_115631", "" }, - { "nv!__gl_12950094", "" }, - { "nv!__gl_1314f311", "" }, - { "nv!__gl_1314f312", "" }, - { "nv!__gl_13279512", "" }, - { "nv!__gl_13813496", "" }, - { "nv!__gl_14507179", "" }, - { "nv!__gl_15694569", "" }, - { "nv!__gl_16936964", "" }, - { "nv!__gl_17aa230c", "" }, - { "nv!__gl_182054", "" }, - { "nv!__gl_18273275", "" }, - { "nv!__gl_18273276", "" }, - { "nv!__gl_1854d03b", "" }, - { "nv!__gl_18add00d", "" }, - { "nv!__gl_19156670", "" }, - { "nv!__gl_19286545", "" }, - { "nv!__gl_1a298e9f", "" }, - { "nv!__gl_1acf43fe", "" }, - { "nv!__gl_1bda43fe", "" }, - { "nv!__gl_1c3b92", "" }, - { "nv!__gl_21509920", "" }, - { "nv!__gl_215323457", "" }, - { "nv!__gl_2165ad", "" }, - { "nv!__gl_2165ae", "" }, - { "nv!__gl_21be9c", "" }, - { "nv!__gl_233264316", "" }, - { "nv!__gl_234557580", "" }, - { "nv!__gl_23cd0e", "" }, - { "nv!__gl_24189123", "" }, - { "nv!__gl_2443266", "" }, - { "nv!__gl_25025519", "" }, - { "nv!__gl_255e39", "" }, - { "nv!__gl_2583364", "" }, - { "nv!__gl_2888c1", "" }, - { "nv!__gl_28ca3e", "" }, - { "nv!__gl_29871243", "" }, - { "nv!__gl_2a1f64", "" }, - { "nv!__gl_2dc432", "" }, - { "nv!__gl_2de437", "" }, - { "nv!__gl_2f3bb89c", "" }, - { "nv!__gl_2fd652", "" }, - { "nv!__gl_3001ac", "" }, - { "nv!__gl_31298772", "" }, - { "nv!__gl_313233", "" }, - { "nv!__gl_31f7d603", "" }, - { "nv!__gl_320ce4", "" }, - { "nv!__gl_32153248", "" }, - { "nv!__gl_32153249", "" }, - { "nv!__gl_335bca", "" }, - { "nv!__gl_342abb", "" }, - { "nv!__gl_34dfe6", "" }, - { "nv!__gl_34dfe7", "" }, - { "nv!__gl_34dfe8", "" }, - { "nv!__gl_34dfe9", "" }, - { "nv!__gl_35201578", "" }, - { "nv!__gl_359278", "" }, - { "nv!__gl_37f53a", "" }, - { "nv!__gl_38144972", "" }, - { "nv!__gl_38542646", "" }, - { "nv!__gl_3b74c9", "" }, - { "nv!__gl_3c136f", "" }, - { "nv!__gl_3cf72823", "" }, - { "nv!__gl_3d7af029", "" }, - { "nv!__gl_3ff34782", "" }, - { "nv!__gl_4129618", "" }, - { "nv!__gl_4189fac3", "" }, - { "nv!__gl_420bd4", "" }, - { "nv!__gl_42a699", "" }, - { "nv!__gl_441369", "" }, - { "nv!__gl_4458713e", "" }, - { "nv!__gl_4554b6", "" }, - { "nv!__gl_457425", "" }, - { "nv!__gl_4603b207", "" }, - { "nv!__gl_46574957", "" }, - { "nv!__gl_46574958", "" }, - { "nv!__gl_46813529", "" }, - { "nv!__gl_46f1e13d", "" }, - { "nv!__gl_47534c43", "" }, - { "nv!__gl_48550336", "" }, - { "nv!__gl_48576893", "" }, - { "nv!__gl_48576894", "" }, - { "nv!__gl_4889ac02", "" }, - { "nv!__gl_49005740", "" }, - { "nv!__gl_49867584", "" }, - { "nv!__gl_49960973", "" }, - { "nv!__gl_4a5341", "" }, - { "nv!__gl_4f4e48", "" }, - { "nv!__gl_4f8a0a", "" }, - { "nv!__gl_50299698", "" }, - { "nv!__gl_50299699", "" }, - { "nv!__gl_50361291", "" }, - { "nv!__gl_5242ae", "" }, - { "nv!__gl_53d30c", "" }, - { "nv!__gl_56347a", "" }, - { "nv!__gl_563a95f1", "" }, - { "nv!__gl_573823", "" }, - { "nv!__gl_58027529", "" }, - { "nv!__gl_5d2d63", "" }, - { "nv!__gl_5f7e3b", "" }, - { "nv!__gl_60461793", "" }, - { "nv!__gl_60d355", "" }, - { "nv!__gl_616627aa", "" }, - { "nv!__gl_62317182", "" }, - { "nv!__gl_6253fa2e", "" }, - { "nv!__gl_64100768", "" }, - { "nv!__gl_64100769", "" }, - { "nv!__gl_64100770", "" }, - { "nv!__gl_647395", "" }, - { "nv!__gl_66543234", "" }, - { "nv!__gl_67674763", "" }, - { "nv!__gl_67739784", "" }, - { "nv!__gl_68fb9c", "" }, - { "nv!__gl_69801276", "" }, - { "nv!__gl_6af9fa2f", "" }, - { "nv!__gl_6af9fa3f", "" }, - { "nv!__gl_6af9fa4f", "" }, - { "nv!__gl_6bd8c7", "" }, - { "nv!__gl_6c7691", "" }, - { "nv!__gl_6d4296ce", "" }, - { "nv!__gl_6dd7e7", "" }, - { "nv!__gl_6dd7e8", "" }, - { "nv!__gl_6fe11ec1", "" }, - { "nv!__gl_716511763", "" }, - { "nv!__gl_72504593", "" }, - { "nv!__gl_73304097", "" }, - { "nv!__gl_73314098", "" }, - { "nv!__gl_74095213", "" }, - { "nv!__gl_74095213a", "" }, - { "nv!__gl_74095213b", "" }, - { "nv!__gl_74095214", "" }, - { "nv!__gl_748f9649", "" }, - { "nv!__gl_75494732", "" }, - { "nv!__gl_78452832", "" }, - { "nv!__gl_784561", "" }, - { "nv!__gl_78e16b9c", "" }, - { "nv!__gl_79251225", "" }, - { "nv!__gl_7c128b", "" }, - { "nv!__gl_7ccd93", "" }, - { "nv!__gl_7df8d1", "" }, - { "nv!__gl_800c2310", "" }, - { "nv!__gl_80546710", "" }, - { "nv!__gl_80772310", "" }, - { "nv!__gl_808ee280", "" }, - { "nv!__gl_81131154", "" }, - { "nv!__gl_81274457", "" }, - { "nv!__gl_8292291f", "" }, - { "nv!__gl_83498426", "" }, - { "nv!__gl_84993794", "" }, - { "nv!__gl_84995585", "" }, - { "nv!__gl_84a0a0", "" }, - { "nv!__gl_852142", "" }, - { "nv!__gl_85612309", "" }, - { "nv!__gl_85612310", "" }, - { "nv!__gl_85612311", "" }, - { "nv!__gl_85612312", "" }, - { "nv!__gl_8623ff27", "" }, - { "nv!__gl_87364952", "" }, - { "nv!__gl_87f6275666", "" }, - { "nv!__gl_886748", "" }, - { "nv!__gl_89894423", "" }, - { "nv!__gl_8ad8a75", "" }, - { "nv!__gl_8ad8ad00", "" }, - { "nv!__gl_8bb815", "" }, - { "nv!__gl_8bb817", "" }, - { "nv!__gl_8bb818", "" }, - { "nv!__gl_8bb819", "" }, - { "nv!__gl_8e640cd1", "" }, - { "nv!__gl_8f34971a", "" }, - { "nv!__gl_8f773984", "" }, - { "nv!__gl_8f7a7d", "" }, - { "nv!__gl_902486209", "" }, - { "nv!__gl_90482571", "" }, - { "nv!__gl_91214835", "" }, - { "nv!__gl_912848290", "" }, - { "nv!__gl_915e56", "" }, - { "nv!__gl_92179063", "" }, - { "nv!__gl_92179064", "" }, - { "nv!__gl_92179065", "" }, - { "nv!__gl_92179066", "" }, - { "nv!__gl_92350358", "" }, - { "nv!__gl_92809063", "" }, - { "nv!__gl_92809064", "" }, - { "nv!__gl_92809065", "" }, - { "nv!__gl_92809066", "" }, - { "nv!__gl_92920143", "" }, - { "nv!__gl_93a89b12", "" }, - { "nv!__gl_93a89c0b", "" }, - { "nv!__gl_94812574", "" }, - { "nv!__gl_95282304", "" }, - { "nv!__gl_95394027", "" }, - { "nv!__gl_959b1f", "" }, - { "nv!__gl_9638af", "" }, - { "nv!__gl_96fd59", "" }, - { "nv!__gl_97f6275666", "" }, - { "nv!__gl_97f6275667", "" }, - { "nv!__gl_97f6275668", "" }, - { "nv!__gl_97f6275669", "" }, - { "nv!__gl_97f627566a", "" }, - { "nv!__gl_97f627566b", "" }, - { "nv!__gl_97f627566d", "" }, - { "nv!__gl_97f627566e", "" }, - { "nv!__gl_97f627566f", "" }, - { "nv!__gl_97f6275670", "" }, - { "nv!__gl_97f6275671", "" }, - { "nv!__gl_97f727566e", "" }, - { "nv!__gl_98480775", "" }, - { "nv!__gl_98480776", "" }, - { "nv!__gl_98480777", "" }, - { "nv!__gl_992431", "" }, - { "nv!__gl_9aa29065", "" }, - { "nv!__gl_9af32c", "" }, - { "nv!__gl_9af32d", "" }, - { "nv!__gl_9af32e", "" }, - { "nv!__gl_9c108b71", "" }, - { "nv!__gl_9f279065", "" }, - { "nv!__gl_a01bc728", "" }, - { "nv!__gl_a13b46c80", "" }, - { "nv!__gl_a22eb0", "" }, - { "nv!__gl_a2fb451e", "" }, - { "nv!__gl_a3456abe", "" }, - { "nv!__gl_a7044887", "" }, - { "nv!__gl_a7149200", "" }, - { "nv!__gl_a766215670", "" }, - { "nv!__gl_aalinegamma", "" }, - { "nv!__gl_aalinetweaks", "" }, - { "nv!__gl_ab34ee01", "" }, - { "nv!__gl_ab34ee02", "" }, - { "nv!__gl_ab34ee03", "" }, - { "nv!__gl_ac0274", "" }, - { "nv!__gl_af73c63e", "" }, - { "nv!__gl_af73c63f", "" }, - { "nv!__gl_af9927", "" }, - { "nv!__gl_afoverride", "" }, - { "nv!__gl_allocdeviceevents", "" }, - { "nv!__gl_applicationkey", "" }, - { "nv!__gl_appreturnonlybasicglsltype", "" }, - { "nv!__gl_app_softimage", "" }, - { "nv!__gl_app_supportbits2", "" }, - { "nv!__gl_assumetextureismipmappedatcreation", "" }, - { "nv!__gl_b1fb0f01", "" }, - { "nv!__gl_b3edd5", "" }, - { "nv!__gl_b40d9e03d", "" }, - { "nv!__gl_b7f6275666", "" }, - { "nv!__gl_b812c1", "" }, - { "nv!__gl_ba14ba1a", "" }, - { "nv!__gl_ba14ba1b", "" }, - { "nv!__gl_bd7559", "" }, - { "nv!__gl_bd755a", "" }, - { "nv!__gl_bd755c", "" }, - { "nv!__gl_bd755d", "" }, - { "nv!__gl_be58bb", "" }, - { "nv!__gl_be92cb", "" }, - { "nv!__gl_beefcba3", "" }, - { "nv!__gl_beefcba4", "" }, - { "nv!__gl_c023777f", "" }, - { "nv!__gl_c09dc8", "" }, - { "nv!__gl_c0d340", "" }, - { "nv!__gl_c2ff374c", "" }, - { "nv!__gl_c5e9d7a3", "" }, - { "nv!__gl_c5e9d7a4", "" }, - { "nv!__gl_c5e9d7b4", "" }, - { "nv!__gl_c618f9", "" }, - { "nv!__gl_ca345840", "" }, - { "nv!__gl_cachedisable", "" }, - { "nv!__gl_channelpriorityoverride", "" }, - { "nv!__gl_cleardatastorevidmem", "" }, - { "nv!__gl_cmdbufmemoryspaceenables", "" }, - { "nv!__gl_cmdbufminwords", "" }, - { "nv!__gl_cmdbufsizewords", "" }, - { "nv!__gl_conformantblitframebufferscissor", "" }, - { "nv!__gl_conformantincompletetextures", "" }, - { "nv!__gl_copybuffermethod", "" }, - { "nv!__gl_cubemapaniso", "" }, - { "nv!__gl_cubemapfiltering", "" }, - { "nv!__gl_d0e9a4d7", "" }, - { "nv!__gl_d13733f12", "" }, - { "nv!__gl_d1b399", "" }, - { "nv!__gl_d2983c32", "" }, - { "nv!__gl_d2983c33", "" }, - { "nv!__gl_d2e71b", "" }, - { "nv!__gl_d377dc", "" }, - { "nv!__gl_d377dd", "" }, - { "nv!__gl_d489f4", "" }, - { "nv!__gl_d4bce1", "" }, - { "nv!__gl_d518cb", "" }, - { "nv!__gl_d518cd", "" }, - { "nv!__gl_d518ce", "" }, - { "nv!__gl_d518d0", "" }, - { "nv!__gl_d518d1", "" }, - { "nv!__gl_d518d2", "" }, - { "nv!__gl_d518d3", "" }, - { "nv!__gl_d518d4", "" }, - { "nv!__gl_d518d5", "" }, - { "nv!__gl_d59eda", "" }, - { "nv!__gl_d83cbd", "" }, - { "nv!__gl_d8e777", "" }, - { "nv!__gl_debug_level", "" }, - { "nv!__gl_debug_mask", "" }, - { "nv!__gl_debug_options", "" }, - { "nv!__gl_devshmpageableallocations", "" }, - { "nv!__gl_df1f9812", "" }, - { "nv!__gl_df783c", "" }, - { "nv!__gl_diagenable", "" }, - { "nv!__gl_disallowcemask", "" }, - { "nv!__gl_disallowz16", "" }, - { "nv!__gl_dlmemoryspaceenables", "" }, - { "nv!__gl_e0bfec", "" }, - { "nv!__gl_e433456d", "" }, - { "nv!__gl_e435563f", "" }, - { "nv!__gl_e4cd9c", "" }, - { "nv!__gl_e5c972", "" }, - { "nv!__gl_e639ef", "" }, - { "nv!__gl_e802af", "" }, - { "nv!__gl_eae964", "" }, - { "nv!__gl_earlytexturehwallocation", "" }, - { "nv!__gl_eb92a3", "" }, - { "nv!__gl_ebca56", "" }, - { "nv!__gl_expert_detail_level", "" }, - { "nv!__gl_expert_output_mask", "" }, - { "nv!__gl_expert_report_mask", "" }, - { "nv!__gl_extensionstringnvarch", "" }, - { "nv!__gl_extensionstringversion", "" }, - { "nv!__gl_f00f1938", "" }, - { "nv!__gl_f10736", "" }, - { "nv!__gl_f1846870", "" }, - { "nv!__gl_f33bc370", "" }, - { "nv!__gl_f392a874", "" }, - { "nv!__gl_f49ae8", "" }, - { "nv!__gl_fa345cce", "" }, - { "nv!__gl_fa35cc4", "" }, - { "nv!__gl_faa14a", "" }, - { "nv!__gl_faf8a723", "" }, - { "nv!__gl_fastgs", "" }, - { "nv!__gl_fbf4ac45", "" }, - { "nv!__gl_fbo_blit_ignore_srgb", "" }, - { "nv!__gl_fc64c7", "" }, - { "nv!__gl_ff54ec97", "" }, - { "nv!__gl_ff54ec98", "" }, - { "nv!__gl_forceexitprocessdetach", "" }, - { "nv!__gl_forcerequestedesversion", "" }, - { "nv!__gl_glsynctovblank", "" }, - { "nv!__gl_gvitimeoutcontrol", "" }, - { "nv!__gl_hcctrl", "" }, - { "nv!__gl_hwstate_per_ctx", "" }, - { "nv!__gl_machinecachelimit", "" }, - { "nv!__gl_maxframesallowed", "" }, - { "nv!__gl_memmgrcachedalloclimit", "" }, - { "nv!__gl_memmgrcachedalloclimitratio", "" }, - { "nv!__gl_memmgrsysheapalloclimit", "" }, - { "nv!__gl_memmgrsysheapalloclimitratio", "" }, - { "nv!__gl_memmgrvidheapalloclimit", "" }, - { "nv!__gl_mosaic_clip_to_subdev", "" }, - { "nv!__gl_mosaic_clip_to_subdev_h_overlap", "" }, - { "nv!__gl_mosaic_clip_to_subdev_v_overlap", "" }, - { "nv!__gl_overlaymergeblittimerms", "" }, - { "nv!__gl_perfmon_mode", "" }, - { "nv!__gl_pixbar_mode", "" }, - { "nv!__gl_qualityenhancements", "" }, - { "nv!__gl_r27s18q28", "" }, - { "nv!__gl_r2d7c1d8", "" }, - { "nv!__gl_renderer", "" }, - { "nv!__gl_renderqualityflags", "" }, - { "nv!__gl_s3tcquality", "" }, - { "nv!__gl_shaderatomics", "" }, - { "nv!__gl_shadercacheinitsize", "" }, - { "nv!__gl_shader_disk_cache_path", "" }, - { "nv!__gl_shader_disk_cache_read_only", "" }, - { "nv!__gl_shaderobjects", "" }, - { "nv!__gl_shaderportabilitywarnings", "" }, - { "nv!__gl_shaderwarningsaserrors", "" }, - { "nv!__gl_skiptexturehostcopies", "" }, - { "nv!__glslc_debug_level", "" }, - { "nv!__glslc_debug_mask", "" }, - { "nv!__glslc_debug_options", "" }, - { "nv!__glslc_debug_filename", "" }, - { "nv!__gl_sli_dli_control", "" }, - { "nv!__gl_sparsetexture", "" }, - { "nv!__gl_spinlooptimeout", "" }, - { "nv!__gl_sync_to_vblank", "" }, - { "nv!glsynctovblank", "" }, - { "nv!__gl_sysheapreuseratio", "" }, - { "nv!__gl_sysmemtexturepromotion", "" }, - { "nv!__gl_targetflushcount", "" }, - { "nv!__gl_tearingfreeswappresent", "" }, - { "nv!__gl_texclampbehavior", "" }, - { "nv!__gl_texlodbias", "" }, - { "nv!__gl_texmemoryspaceenables", "" }, - { "nv!__gl_textureprecache", "" }, - { "nv!__gl_threadcontrol", "" }, - { "nv!__gl_threadcontrol2", "" }, - { "nv!__gl_usegvievents", "" }, - { "nv!__gl_vbomemoryspaceenables", "" }, - { "nv!__gl_vertexlimit", "" }, - { "nv!__gl_vidheapreuseratio", "" }, - { "nv!__gl_vpipe", "" }, - { "nv!__gl_vpipeformatbloatlimit", "" }, - { "nv!__gl_wglmessageboxonabort", "" }, - { "nv!__gl_writeinfolog", "" }, - { "nv!__gl_writeprogramobjectassembly", "" }, - { "nv!__gl_writeprogramobjectsource", "" }, - { "nv!__gl_xnvadapterpresent", "" }, - { "nv!__gl_yield", "" }, - { "nv!__gl_yieldfunction", "" }, - { "nv!__gl_yieldfunctionfast", "" }, - { "nv!__gl_yieldfunctionslow", "" }, - { "nv!__gl_yieldfunctionwaitfordcqueue", "" }, - { "nv!__gl_yieldfunctionwaitforframe", "" }, - { "nv!__gl_yieldfunctionwaitforgpu", "" }, - { "nv!__gl_zbctableaddhysteresis", "" }, - { "nv!gpu_debug_mode", "" }, - { "nv!gpu_stay_on", "" }, - { "nv!gpu_timeout_ms_max", "" }, - { "nv!gvitimeoutcontrol", "" }, - { "nv!hcctrl", "" }, - { "nv!hwstate_per_ctx", "" }, - { "nv!libandroid_enable_log", "" }, - { "nv!machinecachelimit", "" }, - { "nv!maxframesallowed", "" }, - { "nv!media.aac_51_output_enabled", "" }, - { "nv!memmgrcachedalloclimit", "" }, - { "nv!memmgrcachedalloclimitratio", "" }, - { "nv!memmgrsysheapalloclimit", "" }, - { "nv!memmgrsysheapalloclimitratio", "" }, - { "nv!memmgrvidheapalloclimit", "" }, - { "nv!mosaic_clip_to_subdev", "" }, - { "nv!mosaic_clip_to_subdev_h_overlap", "" }, - { "nv!mosaic_clip_to_subdev_v_overlap", "" }, - { "nv!nvblit.dump", "" }, - { "nv!nvblit.profile", "" }, - { "nv!nvblit.twod", "" }, - { "nv!nvblit.vic", "" }, - { "nv!nvddk_vic_prevent_use", "" }, - { "nv!nv_decompression", "" }, + { "nv!00008600", string.Empty }, + { "nv!0007b25e", string.Empty }, + { "nv!0083e1", string.Empty }, + { "nv!01621887", string.Empty }, + { "nv!03134743", string.Empty }, + { "nv!0356afd0", string.Empty }, + { "nv!0356afd1", string.Empty }, + { "nv!0356afd2", string.Empty }, + { "nv!0356afd3", string.Empty }, + { "nv!094313", string.Empty }, + { "nv!0x04dc09", string.Empty }, + { "nv!0x111133", string.Empty }, + { "nv!0x1aa483", string.Empty }, + { "nv!0x1cb1cf", string.Empty }, + { "nv!0x1cb1d0", string.Empty }, + { "nv!0x1e3221", string.Empty }, + { "nv!0x300fc8", string.Empty }, + { "nv!0x301fc8", string.Empty }, + { "nv!0x302fc8", string.Empty }, + { "nv!0x3eec59", string.Empty }, + { "nv!0x46b3ed", string.Empty }, + { "nv!0x523dc0", string.Empty }, + { "nv!0x523dc1", string.Empty }, + { "nv!0x523dc2", string.Empty }, + { "nv!0x523dc3", string.Empty }, + { "nv!0x523dc4", string.Empty }, + { "nv!0x523dc5", string.Empty }, + { "nv!0x523dc6", string.Empty }, + { "nv!0x523dd0", string.Empty }, + { "nv!0x523dd1", string.Empty }, + { "nv!0x523dd3", string.Empty }, + { "nv!0x5344bb", string.Empty }, + { "nv!0x555237", string.Empty }, + { "nv!0x58a234", string.Empty }, + { "nv!0x7b4428", string.Empty }, + { "nv!0x923dc0", string.Empty }, + { "nv!0x923dc1", string.Empty }, + { "nv!0x923dc2", string.Empty }, + { "nv!0x923dc3", string.Empty }, + { "nv!0x923dc4", string.Empty }, + { "nv!0x923dd3", string.Empty }, + { "nv!0x9abdc5", string.Empty }, + { "nv!0x9abdc6", string.Empty }, + { "nv!0xaaa36c", string.Empty }, + { "nv!0xb09da0", string.Empty }, + { "nv!0xb09da1", string.Empty }, + { "nv!0xb09da2", string.Empty }, + { "nv!0xb09da3", string.Empty }, + { "nv!0xb09da4", string.Empty }, + { "nv!0xb09da5", string.Empty }, + { "nv!0xb0b348", string.Empty }, + { "nv!0xb0b349", string.Empty }, + { "nv!0xbb558f", string.Empty }, + { "nv!0xbd10fb", string.Empty }, + { "nv!0xc32ad3", string.Empty }, + { "nv!0xce2348", string.Empty }, + { "nv!0xcfd81f", string.Empty }, + { "nv!0xe0036b", string.Empty }, + { "nv!0xe01f2d", string.Empty }, + { "nv!0xe17212", string.Empty }, + { "nv!0xeae966", string.Empty }, + { "nv!0xed4f82", string.Empty }, + { "nv!0xf12335", string.Empty }, + { "nv!0xf12336", string.Empty }, + { "nv!10261989", string.Empty }, + { "nv!1042d483", string.Empty }, + { "nv!10572898", string.Empty }, + { "nv!115631", string.Empty }, + { "nv!12950094", string.Empty }, + { "nv!1314f311", string.Empty }, + { "nv!1314f312", string.Empty }, + { "nv!13279512", string.Empty }, + { "nv!13813496", string.Empty }, + { "nv!14507179", string.Empty }, + { "nv!15694569", string.Empty }, + { "nv!16936964", string.Empty }, + { "nv!17aa230c", string.Empty }, + { "nv!182054", string.Empty }, + { "nv!18273275", string.Empty }, + { "nv!18273276", string.Empty }, + { "nv!1854d03b", string.Empty }, + { "nv!18add00d", string.Empty }, + { "nv!19156670", string.Empty }, + { "nv!19286545", string.Empty }, + { "nv!1a298e9f", string.Empty }, + { "nv!1acf43fe", string.Empty }, + { "nv!1bda43fe", string.Empty }, + { "nv!1c3b92", string.Empty }, + { "nv!21509920", string.Empty }, + { "nv!215323457", string.Empty }, + { "nv!2165ad", string.Empty }, + { "nv!2165ae", string.Empty }, + { "nv!21be9c", string.Empty }, + { "nv!233264316", string.Empty }, + { "nv!234557580", string.Empty }, + { "nv!23cd0e", string.Empty }, + { "nv!24189123", string.Empty }, + { "nv!2443266", string.Empty }, + { "nv!25025519", string.Empty }, + { "nv!255e39", string.Empty }, + { "nv!2583364", string.Empty }, + { "nv!2888c1", string.Empty }, + { "nv!28ca3e", string.Empty }, + { "nv!29871243", string.Empty }, + { "nv!2a1f64", string.Empty }, + { "nv!2dc432", string.Empty }, + { "nv!2de437", string.Empty }, + { "nv!2f3bb89c", string.Empty }, + { "nv!2fd652", string.Empty }, + { "nv!3001ac", string.Empty }, + { "nv!31298772", string.Empty }, + { "nv!313233", string.Empty }, + { "nv!31f7d603", string.Empty }, + { "nv!320ce4", string.Empty }, + { "nv!32153248", string.Empty }, + { "nv!32153249", string.Empty }, + { "nv!335bca", string.Empty }, + { "nv!342abb", string.Empty }, + { "nv!34dfe6", string.Empty }, + { "nv!34dfe7", string.Empty }, + { "nv!34dfe8", string.Empty }, + { "nv!34dfe9", string.Empty }, + { "nv!35201578", string.Empty }, + { "nv!359278", string.Empty }, + { "nv!37f53a", string.Empty }, + { "nv!38144972", string.Empty }, + { "nv!38542646", string.Empty }, + { "nv!3b74c9", string.Empty }, + { "nv!3c136f", string.Empty }, + { "nv!3cf72823", string.Empty }, + { "nv!3d7af029", string.Empty }, + { "nv!3ff34782", string.Empty }, + { "nv!4129618", string.Empty }, + { "nv!4189fac3", string.Empty }, + { "nv!420bd4", string.Empty }, + { "nv!42a699", string.Empty }, + { "nv!441369", string.Empty }, + { "nv!4458713e", string.Empty }, + { "nv!4554b6", string.Empty }, + { "nv!457425", string.Empty }, + { "nv!4603b207", string.Empty }, + { "nv!46574957", string.Empty }, + { "nv!46574958", string.Empty }, + { "nv!46813529", string.Empty }, + { "nv!46f1e13d", string.Empty }, + { "nv!47534c43", string.Empty }, + { "nv!48550336", string.Empty }, + { "nv!48576893", string.Empty }, + { "nv!48576894", string.Empty }, + { "nv!4889ac02", string.Empty }, + { "nv!49005740", string.Empty }, + { "nv!49867584", string.Empty }, + { "nv!49960973", string.Empty }, + { "nv!4a5341", string.Empty }, + { "nv!4f4e48", string.Empty }, + { "nv!4f8a0a", string.Empty }, + { "nv!50299698", string.Empty }, + { "nv!50299699", string.Empty }, + { "nv!50361291", string.Empty }, + { "nv!5242ae", string.Empty }, + { "nv!53d30c", string.Empty }, + { "nv!56347a", string.Empty }, + { "nv!563a95f1", string.Empty }, + { "nv!573823", string.Empty }, + { "nv!58027529", string.Empty }, + { "nv!5d2d63", string.Empty }, + { "nv!5f7e3b", string.Empty }, + { "nv!60461793", string.Empty }, + { "nv!60d355", string.Empty }, + { "nv!616627aa", string.Empty }, + { "nv!62317182", string.Empty }, + { "nv!6253fa2e", string.Empty }, + { "nv!64100768", string.Empty }, + { "nv!64100769", string.Empty }, + { "nv!64100770", string.Empty }, + { "nv!647395", string.Empty }, + { "nv!66543234", string.Empty }, + { "nv!67674763", string.Empty }, + { "nv!67739784", string.Empty }, + { "nv!68fb9c", string.Empty }, + { "nv!69801276", string.Empty }, + { "nv!6af9fa2f", string.Empty }, + { "nv!6af9fa3f", string.Empty }, + { "nv!6af9fa4f", string.Empty }, + { "nv!6bd8c7", string.Empty }, + { "nv!6c7691", string.Empty }, + { "nv!6d4296ce", string.Empty }, + { "nv!6dd7e7", string.Empty }, + { "nv!6dd7e8", string.Empty }, + { "nv!6fe11ec1", string.Empty }, + { "nv!716511763", string.Empty }, + { "nv!72504593", string.Empty }, + { "nv!73304097", string.Empty }, + { "nv!73314098", string.Empty }, + { "nv!74095213", string.Empty }, + { "nv!74095213a", string.Empty }, + { "nv!74095213b", string.Empty }, + { "nv!74095214", string.Empty }, + { "nv!748f9649", string.Empty }, + { "nv!75494732", string.Empty }, + { "nv!78452832", string.Empty }, + { "nv!784561", string.Empty }, + { "nv!78e16b9c", string.Empty }, + { "nv!79251225", string.Empty }, + { "nv!7c128b", string.Empty }, + { "nv!7ccd93", string.Empty }, + { "nv!7df8d1", string.Empty }, + { "nv!800c2310", string.Empty }, + { "nv!80546710", string.Empty }, + { "nv!80772310", string.Empty }, + { "nv!808ee280", string.Empty }, + { "nv!81131154", string.Empty }, + { "nv!81274457", string.Empty }, + { "nv!8292291f", string.Empty }, + { "nv!83498426", string.Empty }, + { "nv!84993794", string.Empty }, + { "nv!84995585", string.Empty }, + { "nv!84a0a0", string.Empty }, + { "nv!852142", string.Empty }, + { "nv!85612309", string.Empty }, + { "nv!85612310", string.Empty }, + { "nv!85612311", string.Empty }, + { "nv!85612312", string.Empty }, + { "nv!8623ff27", string.Empty }, + { "nv!87364952", string.Empty }, + { "nv!87f6275666", string.Empty }, + { "nv!886748", string.Empty }, + { "nv!89894423", string.Empty }, + { "nv!8ad8a75", string.Empty }, + { "nv!8ad8ad00", string.Empty }, + { "nv!8bb815", string.Empty }, + { "nv!8bb817", string.Empty }, + { "nv!8bb818", string.Empty }, + { "nv!8bb819", string.Empty }, + { "nv!8e640cd1", string.Empty }, + { "nv!8f34971a", string.Empty }, + { "nv!8f773984", string.Empty }, + { "nv!8f7a7d", string.Empty }, + { "nv!902486209", string.Empty }, + { "nv!90482571", string.Empty }, + { "nv!91214835", string.Empty }, + { "nv!912848290", string.Empty }, + { "nv!915e56", string.Empty }, + { "nv!92179063", string.Empty }, + { "nv!92179064", string.Empty }, + { "nv!92179065", string.Empty }, + { "nv!92179066", string.Empty }, + { "nv!92350358", string.Empty }, + { "nv!92809063", string.Empty }, + { "nv!92809064", string.Empty }, + { "nv!92809065", string.Empty }, + { "nv!92809066", string.Empty }, + { "nv!92920143", string.Empty }, + { "nv!93a89b12", string.Empty }, + { "nv!93a89c0b", string.Empty }, + { "nv!94812574", string.Empty }, + { "nv!95282304", string.Empty }, + { "nv!95394027", string.Empty }, + { "nv!959b1f", string.Empty }, + { "nv!9638af", string.Empty }, + { "nv!96fd59", string.Empty }, + { "nv!97f6275666", string.Empty }, + { "nv!97f6275667", string.Empty }, + { "nv!97f6275668", string.Empty }, + { "nv!97f6275669", string.Empty }, + { "nv!97f627566a", string.Empty }, + { "nv!97f627566b", string.Empty }, + { "nv!97f627566d", string.Empty }, + { "nv!97f627566e", string.Empty }, + { "nv!97f627566f", string.Empty }, + { "nv!97f6275670", string.Empty }, + { "nv!97f6275671", string.Empty }, + { "nv!97f727566e", string.Empty }, + { "nv!98480775", string.Empty }, + { "nv!98480776", string.Empty }, + { "nv!98480777", string.Empty }, + { "nv!992431", string.Empty }, + { "nv!9aa29065", string.Empty }, + { "nv!9af32c", string.Empty }, + { "nv!9af32d", string.Empty }, + { "nv!9af32e", string.Empty }, + { "nv!9c108b71", string.Empty }, + { "nv!9f279065", string.Empty }, + { "nv!a01bc728", string.Empty }, + { "nv!a13b46c80", string.Empty }, + { "nv!a22eb0", string.Empty }, + { "nv!a2fb451e", string.Empty }, + { "nv!a3456abe", string.Empty }, + { "nv!a7044887", string.Empty }, + { "nv!a7149200", string.Empty }, + { "nv!a766215670", string.Empty }, + { "nv!aac_drc_boost", string.Empty }, + { "nv!aac_drc_cut", string.Empty }, + { "nv!aac_drc_enc_target_level", string.Empty }, + { "nv!aac_drc_heavy", string.Empty }, + { "nv!aac_drc_reference_level", string.Empty }, + { "nv!aalinegamma", string.Empty }, + { "nv!aalinetweaks", string.Empty }, + { "nv!ab34ee01", string.Empty }, + { "nv!ab34ee02", string.Empty }, + { "nv!ab34ee03", string.Empty }, + { "nv!ac0274", string.Empty }, + { "nv!af73c63e", string.Empty }, + { "nv!af73c63f", string.Empty }, + { "nv!af9927", string.Empty }, + { "nv!afoverride", string.Empty }, + { "nv!allocdeviceevents", string.Empty }, + { "nv!applicationkey", string.Empty }, + { "nv!appreturnonlybasicglsltype", string.Empty }, + { "nv!app_softimage", string.Empty }, + { "nv!app_supportbits2", string.Empty }, + { "nv!assumetextureismipmappedatcreation", string.Empty }, + { "nv!b1fb0f01", string.Empty }, + { "nv!b3edd5", string.Empty }, + { "nv!b40d9e03d", string.Empty }, + { "nv!b7f6275666", string.Empty }, + { "nv!b812c1", string.Empty }, + { "nv!ba14ba1a", string.Empty }, + { "nv!ba14ba1b", string.Empty }, + { "nv!bd7559", string.Empty }, + { "nv!bd755a", string.Empty }, + { "nv!bd755c", string.Empty }, + { "nv!bd755d", string.Empty }, + { "nv!be58bb", string.Empty }, + { "nv!be92cb", string.Empty }, + { "nv!beefcba3", string.Empty }, + { "nv!beefcba4", string.Empty }, + { "nv!c023777f", string.Empty }, + { "nv!c09dc8", string.Empty }, + { "nv!c0d340", string.Empty }, + { "nv!c2ff374c", string.Empty }, + { "nv!c5e9d7a3", string.Empty }, + { "nv!c5e9d7a4", string.Empty }, + { "nv!c5e9d7b4", string.Empty }, + { "nv!c618f9", string.Empty }, + { "nv!ca345840", string.Empty }, + { "nv!cachedisable", string.Empty }, + { "nv!cast.on", string.Empty }, + { "nv!cde", string.Empty }, + { "nv!channelpriorityoverride", string.Empty }, + { "nv!cleardatastorevidmem", string.Empty }, + { "nv!cmdbufmemoryspaceenables", string.Empty }, + { "nv!cmdbufminwords", string.Empty }, + { "nv!cmdbufsizewords", string.Empty }, + { "nv!conformantblitframebufferscissor", string.Empty }, + { "nv!conformantincompletetextures", string.Empty }, + { "nv!copybuffermethod", string.Empty }, + { "nv!cubemapaniso", string.Empty }, + { "nv!cubemapfiltering", string.Empty }, + { "nv!d0e9a4d7", string.Empty }, + { "nv!d13733f12", string.Empty }, + { "nv!d1b399", string.Empty }, + { "nv!d2983c32", string.Empty }, + { "nv!d2983c33", string.Empty }, + { "nv!d2e71b", string.Empty }, + { "nv!d377dc", string.Empty }, + { "nv!d377dd", string.Empty }, + { "nv!d489f4", string.Empty }, + { "nv!d4bce1", string.Empty }, + { "nv!d518cb", string.Empty }, + { "nv!d518cd", string.Empty }, + { "nv!d518ce", string.Empty }, + { "nv!d518d0", string.Empty }, + { "nv!d518d1", string.Empty }, + { "nv!d518d2", string.Empty }, + { "nv!d518d3", string.Empty }, + { "nv!d518d4", string.Empty }, + { "nv!d518d5", string.Empty }, + { "nv!d59eda", string.Empty }, + { "nv!d83cbd", string.Empty }, + { "nv!d8e777", string.Empty }, + { "nv!debug_level", string.Empty }, + { "nv!debug_mask", string.Empty }, + { "nv!debug_options", string.Empty }, + { "nv!devshmpageableallocations", string.Empty }, + { "nv!df1f9812", string.Empty }, + { "nv!df783c", string.Empty }, + { "nv!diagenable", string.Empty }, + { "nv!disallowcemask", string.Empty }, + { "nv!disallowz16", string.Empty }, + { "nv!dlmemoryspaceenables", string.Empty }, + { "nv!e0bfec", string.Empty }, + { "nv!e433456d", string.Empty }, + { "nv!e435563f", string.Empty }, + { "nv!e4cd9c", string.Empty }, + { "nv!e5c972", string.Empty }, + { "nv!e639ef", string.Empty }, + { "nv!e802af", string.Empty }, + { "nv!eae964", string.Empty }, + { "nv!earlytexturehwallocation", string.Empty }, + { "nv!eb92a3", string.Empty }, + { "nv!ebca56", string.Empty }, + { "nv!enable-noaud", string.Empty }, + { "nv!enable-noavs", string.Empty }, + { "nv!enable-prof", string.Empty }, + { "nv!enable-sxesmode", string.Empty }, + { "nv!enable-ulld", string.Empty }, + { "nv!expert_detail_level", string.Empty }, + { "nv!expert_output_mask", string.Empty }, + { "nv!expert_report_mask", string.Empty }, + { "nv!extensionstringnvarch", string.Empty }, + { "nv!extensionstringversion", string.Empty }, + { "nv!f00f1938", string.Empty }, + { "nv!f10736", string.Empty }, + { "nv!f1846870", string.Empty }, + { "nv!f33bc370", string.Empty }, + { "nv!f392a874", string.Empty }, + { "nv!f49ae8", string.Empty }, + { "nv!fa345cce", string.Empty }, + { "nv!fa35cc4", string.Empty }, + { "nv!faa14a", string.Empty }, + { "nv!faf8a723", string.Empty }, + { "nv!fastgs", string.Empty }, + { "nv!fbf4ac45", string.Empty }, + { "nv!fbo_blit_ignore_srgb", string.Empty }, + { "nv!fc64c7", string.Empty }, + { "nv!ff54ec97", string.Empty }, + { "nv!ff54ec98", string.Empty }, + { "nv!forceexitprocessdetach", string.Empty }, + { "nv!forcerequestedesversion", string.Empty }, + { "nv!__gl_", string.Empty }, + { "nv!__gl_00008600", string.Empty }, + { "nv!__gl_0007b25e", string.Empty }, + { "nv!__gl_0083e1", string.Empty }, + { "nv!__gl_01621887", string.Empty }, + { "nv!__gl_03134743", string.Empty }, + { "nv!__gl_0356afd0", string.Empty }, + { "nv!__gl_0356afd1", string.Empty }, + { "nv!__gl_0356afd2", string.Empty }, + { "nv!__gl_0356afd3", string.Empty }, + { "nv!__gl_094313", string.Empty }, + { "nv!__gl_0x04dc09", string.Empty }, + { "nv!__gl_0x111133", string.Empty }, + { "nv!__gl_0x1aa483", string.Empty }, + { "nv!__gl_0x1cb1cf", string.Empty }, + { "nv!__gl_0x1cb1d0", string.Empty }, + { "nv!__gl_0x1e3221", string.Empty }, + { "nv!__gl_0x300fc8", string.Empty }, + { "nv!__gl_0x301fc8", string.Empty }, + { "nv!__gl_0x302fc8", string.Empty }, + { "nv!__gl_0x3eec59", string.Empty }, + { "nv!__gl_0x46b3ed", string.Empty }, + { "nv!__gl_0x523dc0", string.Empty }, + { "nv!__gl_0x523dc1", string.Empty }, + { "nv!__gl_0x523dc2", string.Empty }, + { "nv!__gl_0x523dc3", string.Empty }, + { "nv!__gl_0x523dc4", string.Empty }, + { "nv!__gl_0x523dc5", string.Empty }, + { "nv!__gl_0x523dc6", string.Empty }, + { "nv!__gl_0x523dd0", string.Empty }, + { "nv!__gl_0x523dd1", string.Empty }, + { "nv!__gl_0x523dd3", string.Empty }, + { "nv!__gl_0x5344bb", string.Empty }, + { "nv!__gl_0x555237", string.Empty }, + { "nv!__gl_0x58a234", string.Empty }, + { "nv!__gl_0x7b4428", string.Empty }, + { "nv!__gl_0x923dc0", string.Empty }, + { "nv!__gl_0x923dc1", string.Empty }, + { "nv!__gl_0x923dc2", string.Empty }, + { "nv!__gl_0x923dc3", string.Empty }, + { "nv!__gl_0x923dc4", string.Empty }, + { "nv!__gl_0x923dd3", string.Empty }, + { "nv!__gl_0x9abdc5", string.Empty }, + { "nv!__gl_0x9abdc6", string.Empty }, + { "nv!__gl_0xaaa36c", string.Empty }, + { "nv!__gl_0xb09da0", string.Empty }, + { "nv!__gl_0xb09da1", string.Empty }, + { "nv!__gl_0xb09da2", string.Empty }, + { "nv!__gl_0xb09da3", string.Empty }, + { "nv!__gl_0xb09da4", string.Empty }, + { "nv!__gl_0xb09da5", string.Empty }, + { "nv!__gl_0xb0b348", string.Empty }, + { "nv!__gl_0xb0b349", string.Empty }, + { "nv!__gl_0xbb558f", string.Empty }, + { "nv!__gl_0xbd10fb", string.Empty }, + { "nv!__gl_0xc32ad3", string.Empty }, + { "nv!__gl_0xce2348", string.Empty }, + { "nv!__gl_0xcfd81f", string.Empty }, + { "nv!__gl_0xe0036b", string.Empty }, + { "nv!__gl_0xe01f2d", string.Empty }, + { "nv!__gl_0xe17212", string.Empty }, + { "nv!__gl_0xeae966", string.Empty }, + { "nv!__gl_0xed4f82", string.Empty }, + { "nv!__gl_0xf12335", string.Empty }, + { "nv!__gl_0xf12336", string.Empty }, + { "nv!__gl_10261989", string.Empty }, + { "nv!__gl_1042d483", string.Empty }, + { "nv!__gl_10572898", string.Empty }, + { "nv!__gl_115631", string.Empty }, + { "nv!__gl_12950094", string.Empty }, + { "nv!__gl_1314f311", string.Empty }, + { "nv!__gl_1314f312", string.Empty }, + { "nv!__gl_13279512", string.Empty }, + { "nv!__gl_13813496", string.Empty }, + { "nv!__gl_14507179", string.Empty }, + { "nv!__gl_15694569", string.Empty }, + { "nv!__gl_16936964", string.Empty }, + { "nv!__gl_17aa230c", string.Empty }, + { "nv!__gl_182054", string.Empty }, + { "nv!__gl_18273275", string.Empty }, + { "nv!__gl_18273276", string.Empty }, + { "nv!__gl_1854d03b", string.Empty }, + { "nv!__gl_18add00d", string.Empty }, + { "nv!__gl_19156670", string.Empty }, + { "nv!__gl_19286545", string.Empty }, + { "nv!__gl_1a298e9f", string.Empty }, + { "nv!__gl_1acf43fe", string.Empty }, + { "nv!__gl_1bda43fe", string.Empty }, + { "nv!__gl_1c3b92", string.Empty }, + { "nv!__gl_21509920", string.Empty }, + { "nv!__gl_215323457", string.Empty }, + { "nv!__gl_2165ad", string.Empty }, + { "nv!__gl_2165ae", string.Empty }, + { "nv!__gl_21be9c", string.Empty }, + { "nv!__gl_233264316", string.Empty }, + { "nv!__gl_234557580", string.Empty }, + { "nv!__gl_23cd0e", string.Empty }, + { "nv!__gl_24189123", string.Empty }, + { "nv!__gl_2443266", string.Empty }, + { "nv!__gl_25025519", string.Empty }, + { "nv!__gl_255e39", string.Empty }, + { "nv!__gl_2583364", string.Empty }, + { "nv!__gl_2888c1", string.Empty }, + { "nv!__gl_28ca3e", string.Empty }, + { "nv!__gl_29871243", string.Empty }, + { "nv!__gl_2a1f64", string.Empty }, + { "nv!__gl_2dc432", string.Empty }, + { "nv!__gl_2de437", string.Empty }, + { "nv!__gl_2f3bb89c", string.Empty }, + { "nv!__gl_2fd652", string.Empty }, + { "nv!__gl_3001ac", string.Empty }, + { "nv!__gl_31298772", string.Empty }, + { "nv!__gl_313233", string.Empty }, + { "nv!__gl_31f7d603", string.Empty }, + { "nv!__gl_320ce4", string.Empty }, + { "nv!__gl_32153248", string.Empty }, + { "nv!__gl_32153249", string.Empty }, + { "nv!__gl_335bca", string.Empty }, + { "nv!__gl_342abb", string.Empty }, + { "nv!__gl_34dfe6", string.Empty }, + { "nv!__gl_34dfe7", string.Empty }, + { "nv!__gl_34dfe8", string.Empty }, + { "nv!__gl_34dfe9", string.Empty }, + { "nv!__gl_35201578", string.Empty }, + { "nv!__gl_359278", string.Empty }, + { "nv!__gl_37f53a", string.Empty }, + { "nv!__gl_38144972", string.Empty }, + { "nv!__gl_38542646", string.Empty }, + { "nv!__gl_3b74c9", string.Empty }, + { "nv!__gl_3c136f", string.Empty }, + { "nv!__gl_3cf72823", string.Empty }, + { "nv!__gl_3d7af029", string.Empty }, + { "nv!__gl_3ff34782", string.Empty }, + { "nv!__gl_4129618", string.Empty }, + { "nv!__gl_4189fac3", string.Empty }, + { "nv!__gl_420bd4", string.Empty }, + { "nv!__gl_42a699", string.Empty }, + { "nv!__gl_441369", string.Empty }, + { "nv!__gl_4458713e", string.Empty }, + { "nv!__gl_4554b6", string.Empty }, + { "nv!__gl_457425", string.Empty }, + { "nv!__gl_4603b207", string.Empty }, + { "nv!__gl_46574957", string.Empty }, + { "nv!__gl_46574958", string.Empty }, + { "nv!__gl_46813529", string.Empty }, + { "nv!__gl_46f1e13d", string.Empty }, + { "nv!__gl_47534c43", string.Empty }, + { "nv!__gl_48550336", string.Empty }, + { "nv!__gl_48576893", string.Empty }, + { "nv!__gl_48576894", string.Empty }, + { "nv!__gl_4889ac02", string.Empty }, + { "nv!__gl_49005740", string.Empty }, + { "nv!__gl_49867584", string.Empty }, + { "nv!__gl_49960973", string.Empty }, + { "nv!__gl_4a5341", string.Empty }, + { "nv!__gl_4f4e48", string.Empty }, + { "nv!__gl_4f8a0a", string.Empty }, + { "nv!__gl_50299698", string.Empty }, + { "nv!__gl_50299699", string.Empty }, + { "nv!__gl_50361291", string.Empty }, + { "nv!__gl_5242ae", string.Empty }, + { "nv!__gl_53d30c", string.Empty }, + { "nv!__gl_56347a", string.Empty }, + { "nv!__gl_563a95f1", string.Empty }, + { "nv!__gl_573823", string.Empty }, + { "nv!__gl_58027529", string.Empty }, + { "nv!__gl_5d2d63", string.Empty }, + { "nv!__gl_5f7e3b", string.Empty }, + { "nv!__gl_60461793", string.Empty }, + { "nv!__gl_60d355", string.Empty }, + { "nv!__gl_616627aa", string.Empty }, + { "nv!__gl_62317182", string.Empty }, + { "nv!__gl_6253fa2e", string.Empty }, + { "nv!__gl_64100768", string.Empty }, + { "nv!__gl_64100769", string.Empty }, + { "nv!__gl_64100770", string.Empty }, + { "nv!__gl_647395", string.Empty }, + { "nv!__gl_66543234", string.Empty }, + { "nv!__gl_67674763", string.Empty }, + { "nv!__gl_67739784", string.Empty }, + { "nv!__gl_68fb9c", string.Empty }, + { "nv!__gl_69801276", string.Empty }, + { "nv!__gl_6af9fa2f", string.Empty }, + { "nv!__gl_6af9fa3f", string.Empty }, + { "nv!__gl_6af9fa4f", string.Empty }, + { "nv!__gl_6bd8c7", string.Empty }, + { "nv!__gl_6c7691", string.Empty }, + { "nv!__gl_6d4296ce", string.Empty }, + { "nv!__gl_6dd7e7", string.Empty }, + { "nv!__gl_6dd7e8", string.Empty }, + { "nv!__gl_6fe11ec1", string.Empty }, + { "nv!__gl_716511763", string.Empty }, + { "nv!__gl_72504593", string.Empty }, + { "nv!__gl_73304097", string.Empty }, + { "nv!__gl_73314098", string.Empty }, + { "nv!__gl_74095213", string.Empty }, + { "nv!__gl_74095213a", string.Empty }, + { "nv!__gl_74095213b", string.Empty }, + { "nv!__gl_74095214", string.Empty }, + { "nv!__gl_748f9649", string.Empty }, + { "nv!__gl_75494732", string.Empty }, + { "nv!__gl_78452832", string.Empty }, + { "nv!__gl_784561", string.Empty }, + { "nv!__gl_78e16b9c", string.Empty }, + { "nv!__gl_79251225", string.Empty }, + { "nv!__gl_7c128b", string.Empty }, + { "nv!__gl_7ccd93", string.Empty }, + { "nv!__gl_7df8d1", string.Empty }, + { "nv!__gl_800c2310", string.Empty }, + { "nv!__gl_80546710", string.Empty }, + { "nv!__gl_80772310", string.Empty }, + { "nv!__gl_808ee280", string.Empty }, + { "nv!__gl_81131154", string.Empty }, + { "nv!__gl_81274457", string.Empty }, + { "nv!__gl_8292291f", string.Empty }, + { "nv!__gl_83498426", string.Empty }, + { "nv!__gl_84993794", string.Empty }, + { "nv!__gl_84995585", string.Empty }, + { "nv!__gl_84a0a0", string.Empty }, + { "nv!__gl_852142", string.Empty }, + { "nv!__gl_85612309", string.Empty }, + { "nv!__gl_85612310", string.Empty }, + { "nv!__gl_85612311", string.Empty }, + { "nv!__gl_85612312", string.Empty }, + { "nv!__gl_8623ff27", string.Empty }, + { "nv!__gl_87364952", string.Empty }, + { "nv!__gl_87f6275666", string.Empty }, + { "nv!__gl_886748", string.Empty }, + { "nv!__gl_89894423", string.Empty }, + { "nv!__gl_8ad8a75", string.Empty }, + { "nv!__gl_8ad8ad00", string.Empty }, + { "nv!__gl_8bb815", string.Empty }, + { "nv!__gl_8bb817", string.Empty }, + { "nv!__gl_8bb818", string.Empty }, + { "nv!__gl_8bb819", string.Empty }, + { "nv!__gl_8e640cd1", string.Empty }, + { "nv!__gl_8f34971a", string.Empty }, + { "nv!__gl_8f773984", string.Empty }, + { "nv!__gl_8f7a7d", string.Empty }, + { "nv!__gl_902486209", string.Empty }, + { "nv!__gl_90482571", string.Empty }, + { "nv!__gl_91214835", string.Empty }, + { "nv!__gl_912848290", string.Empty }, + { "nv!__gl_915e56", string.Empty }, + { "nv!__gl_92179063", string.Empty }, + { "nv!__gl_92179064", string.Empty }, + { "nv!__gl_92179065", string.Empty }, + { "nv!__gl_92179066", string.Empty }, + { "nv!__gl_92350358", string.Empty }, + { "nv!__gl_92809063", string.Empty }, + { "nv!__gl_92809064", string.Empty }, + { "nv!__gl_92809065", string.Empty }, + { "nv!__gl_92809066", string.Empty }, + { "nv!__gl_92920143", string.Empty }, + { "nv!__gl_93a89b12", string.Empty }, + { "nv!__gl_93a89c0b", string.Empty }, + { "nv!__gl_94812574", string.Empty }, + { "nv!__gl_95282304", string.Empty }, + { "nv!__gl_95394027", string.Empty }, + { "nv!__gl_959b1f", string.Empty }, + { "nv!__gl_9638af", string.Empty }, + { "nv!__gl_96fd59", string.Empty }, + { "nv!__gl_97f6275666", string.Empty }, + { "nv!__gl_97f6275667", string.Empty }, + { "nv!__gl_97f6275668", string.Empty }, + { "nv!__gl_97f6275669", string.Empty }, + { "nv!__gl_97f627566a", string.Empty }, + { "nv!__gl_97f627566b", string.Empty }, + { "nv!__gl_97f627566d", string.Empty }, + { "nv!__gl_97f627566e", string.Empty }, + { "nv!__gl_97f627566f", string.Empty }, + { "nv!__gl_97f6275670", string.Empty }, + { "nv!__gl_97f6275671", string.Empty }, + { "nv!__gl_97f727566e", string.Empty }, + { "nv!__gl_98480775", string.Empty }, + { "nv!__gl_98480776", string.Empty }, + { "nv!__gl_98480777", string.Empty }, + { "nv!__gl_992431", string.Empty }, + { "nv!__gl_9aa29065", string.Empty }, + { "nv!__gl_9af32c", string.Empty }, + { "nv!__gl_9af32d", string.Empty }, + { "nv!__gl_9af32e", string.Empty }, + { "nv!__gl_9c108b71", string.Empty }, + { "nv!__gl_9f279065", string.Empty }, + { "nv!__gl_a01bc728", string.Empty }, + { "nv!__gl_a13b46c80", string.Empty }, + { "nv!__gl_a22eb0", string.Empty }, + { "nv!__gl_a2fb451e", string.Empty }, + { "nv!__gl_a3456abe", string.Empty }, + { "nv!__gl_a7044887", string.Empty }, + { "nv!__gl_a7149200", string.Empty }, + { "nv!__gl_a766215670", string.Empty }, + { "nv!__gl_aalinegamma", string.Empty }, + { "nv!__gl_aalinetweaks", string.Empty }, + { "nv!__gl_ab34ee01", string.Empty }, + { "nv!__gl_ab34ee02", string.Empty }, + { "nv!__gl_ab34ee03", string.Empty }, + { "nv!__gl_ac0274", string.Empty }, + { "nv!__gl_af73c63e", string.Empty }, + { "nv!__gl_af73c63f", string.Empty }, + { "nv!__gl_af9927", string.Empty }, + { "nv!__gl_afoverride", string.Empty }, + { "nv!__gl_allocdeviceevents", string.Empty }, + { "nv!__gl_applicationkey", string.Empty }, + { "nv!__gl_appreturnonlybasicglsltype", string.Empty }, + { "nv!__gl_app_softimage", string.Empty }, + { "nv!__gl_app_supportbits2", string.Empty }, + { "nv!__gl_assumetextureismipmappedatcreation", string.Empty }, + { "nv!__gl_b1fb0f01", string.Empty }, + { "nv!__gl_b3edd5", string.Empty }, + { "nv!__gl_b40d9e03d", string.Empty }, + { "nv!__gl_b7f6275666", string.Empty }, + { "nv!__gl_b812c1", string.Empty }, + { "nv!__gl_ba14ba1a", string.Empty }, + { "nv!__gl_ba14ba1b", string.Empty }, + { "nv!__gl_bd7559", string.Empty }, + { "nv!__gl_bd755a", string.Empty }, + { "nv!__gl_bd755c", string.Empty }, + { "nv!__gl_bd755d", string.Empty }, + { "nv!__gl_be58bb", string.Empty }, + { "nv!__gl_be92cb", string.Empty }, + { "nv!__gl_beefcba3", string.Empty }, + { "nv!__gl_beefcba4", string.Empty }, + { "nv!__gl_c023777f", string.Empty }, + { "nv!__gl_c09dc8", string.Empty }, + { "nv!__gl_c0d340", string.Empty }, + { "nv!__gl_c2ff374c", string.Empty }, + { "nv!__gl_c5e9d7a3", string.Empty }, + { "nv!__gl_c5e9d7a4", string.Empty }, + { "nv!__gl_c5e9d7b4", string.Empty }, + { "nv!__gl_c618f9", string.Empty }, + { "nv!__gl_ca345840", string.Empty }, + { "nv!__gl_cachedisable", string.Empty }, + { "nv!__gl_channelpriorityoverride", string.Empty }, + { "nv!__gl_cleardatastorevidmem", string.Empty }, + { "nv!__gl_cmdbufmemoryspaceenables", string.Empty }, + { "nv!__gl_cmdbufminwords", string.Empty }, + { "nv!__gl_cmdbufsizewords", string.Empty }, + { "nv!__gl_conformantblitframebufferscissor", string.Empty }, + { "nv!__gl_conformantincompletetextures", string.Empty }, + { "nv!__gl_copybuffermethod", string.Empty }, + { "nv!__gl_cubemapaniso", string.Empty }, + { "nv!__gl_cubemapfiltering", string.Empty }, + { "nv!__gl_d0e9a4d7", string.Empty }, + { "nv!__gl_d13733f12", string.Empty }, + { "nv!__gl_d1b399", string.Empty }, + { "nv!__gl_d2983c32", string.Empty }, + { "nv!__gl_d2983c33", string.Empty }, + { "nv!__gl_d2e71b", string.Empty }, + { "nv!__gl_d377dc", string.Empty }, + { "nv!__gl_d377dd", string.Empty }, + { "nv!__gl_d489f4", string.Empty }, + { "nv!__gl_d4bce1", string.Empty }, + { "nv!__gl_d518cb", string.Empty }, + { "nv!__gl_d518cd", string.Empty }, + { "nv!__gl_d518ce", string.Empty }, + { "nv!__gl_d518d0", string.Empty }, + { "nv!__gl_d518d1", string.Empty }, + { "nv!__gl_d518d2", string.Empty }, + { "nv!__gl_d518d3", string.Empty }, + { "nv!__gl_d518d4", string.Empty }, + { "nv!__gl_d518d5", string.Empty }, + { "nv!__gl_d59eda", string.Empty }, + { "nv!__gl_d83cbd", string.Empty }, + { "nv!__gl_d8e777", string.Empty }, + { "nv!__gl_debug_level", string.Empty }, + { "nv!__gl_debug_mask", string.Empty }, + { "nv!__gl_debug_options", string.Empty }, + { "nv!__gl_devshmpageableallocations", string.Empty }, + { "nv!__gl_df1f9812", string.Empty }, + { "nv!__gl_df783c", string.Empty }, + { "nv!__gl_diagenable", string.Empty }, + { "nv!__gl_disallowcemask", string.Empty }, + { "nv!__gl_disallowz16", string.Empty }, + { "nv!__gl_dlmemoryspaceenables", string.Empty }, + { "nv!__gl_e0bfec", string.Empty }, + { "nv!__gl_e433456d", string.Empty }, + { "nv!__gl_e435563f", string.Empty }, + { "nv!__gl_e4cd9c", string.Empty }, + { "nv!__gl_e5c972", string.Empty }, + { "nv!__gl_e639ef", string.Empty }, + { "nv!__gl_e802af", string.Empty }, + { "nv!__gl_eae964", string.Empty }, + { "nv!__gl_earlytexturehwallocation", string.Empty }, + { "nv!__gl_eb92a3", string.Empty }, + { "nv!__gl_ebca56", string.Empty }, + { "nv!__gl_expert_detail_level", string.Empty }, + { "nv!__gl_expert_output_mask", string.Empty }, + { "nv!__gl_expert_report_mask", string.Empty }, + { "nv!__gl_extensionstringnvarch", string.Empty }, + { "nv!__gl_extensionstringversion", string.Empty }, + { "nv!__gl_f00f1938", string.Empty }, + { "nv!__gl_f10736", string.Empty }, + { "nv!__gl_f1846870", string.Empty }, + { "nv!__gl_f33bc370", string.Empty }, + { "nv!__gl_f392a874", string.Empty }, + { "nv!__gl_f49ae8", string.Empty }, + { "nv!__gl_fa345cce", string.Empty }, + { "nv!__gl_fa35cc4", string.Empty }, + { "nv!__gl_faa14a", string.Empty }, + { "nv!__gl_faf8a723", string.Empty }, + { "nv!__gl_fastgs", string.Empty }, + { "nv!__gl_fbf4ac45", string.Empty }, + { "nv!__gl_fbo_blit_ignore_srgb", string.Empty }, + { "nv!__gl_fc64c7", string.Empty }, + { "nv!__gl_ff54ec97", string.Empty }, + { "nv!__gl_ff54ec98", string.Empty }, + { "nv!__gl_forceexitprocessdetach", string.Empty }, + { "nv!__gl_forcerequestedesversion", string.Empty }, + { "nv!__gl_glsynctovblank", string.Empty }, + { "nv!__gl_gvitimeoutcontrol", string.Empty }, + { "nv!__gl_hcctrl", string.Empty }, + { "nv!__gl_hwstate_per_ctx", string.Empty }, + { "nv!__gl_machinecachelimit", string.Empty }, + { "nv!__gl_maxframesallowed", string.Empty }, + { "nv!__gl_memmgrcachedalloclimit", string.Empty }, + { "nv!__gl_memmgrcachedalloclimitratio", string.Empty }, + { "nv!__gl_memmgrsysheapalloclimit", string.Empty }, + { "nv!__gl_memmgrsysheapalloclimitratio", string.Empty }, + { "nv!__gl_memmgrvidheapalloclimit", string.Empty }, + { "nv!__gl_mosaic_clip_to_subdev", string.Empty }, + { "nv!__gl_mosaic_clip_to_subdev_h_overlap", string.Empty }, + { "nv!__gl_mosaic_clip_to_subdev_v_overlap", string.Empty }, + { "nv!__gl_overlaymergeblittimerms", string.Empty }, + { "nv!__gl_perfmon_mode", string.Empty }, + { "nv!__gl_pixbar_mode", string.Empty }, + { "nv!__gl_qualityenhancements", string.Empty }, + { "nv!__gl_r27s18q28", string.Empty }, + { "nv!__gl_r2d7c1d8", string.Empty }, + { "nv!__gl_renderer", string.Empty }, + { "nv!__gl_renderqualityflags", string.Empty }, + { "nv!__gl_s3tcquality", string.Empty }, + { "nv!__gl_shaderatomics", string.Empty }, + { "nv!__gl_shadercacheinitsize", string.Empty }, + { "nv!__gl_shader_disk_cache_path", string.Empty }, + { "nv!__gl_shader_disk_cache_read_only", string.Empty }, + { "nv!__gl_shaderobjects", string.Empty }, + { "nv!__gl_shaderportabilitywarnings", string.Empty }, + { "nv!__gl_shaderwarningsaserrors", string.Empty }, + { "nv!__gl_skiptexturehostcopies", string.Empty }, + { "nv!__glslc_debug_level", string.Empty }, + { "nv!__glslc_debug_mask", string.Empty }, + { "nv!__glslc_debug_options", string.Empty }, + { "nv!__glslc_debug_filename", string.Empty }, + { "nv!__gl_sli_dli_control", string.Empty }, + { "nv!__gl_sparsetexture", string.Empty }, + { "nv!__gl_spinlooptimeout", string.Empty }, + { "nv!__gl_sync_to_vblank", string.Empty }, + { "nv!glsynctovblank", string.Empty }, + { "nv!__gl_sysheapreuseratio", string.Empty }, + { "nv!__gl_sysmemtexturepromotion", string.Empty }, + { "nv!__gl_targetflushcount", string.Empty }, + { "nv!__gl_tearingfreeswappresent", string.Empty }, + { "nv!__gl_texclampbehavior", string.Empty }, + { "nv!__gl_texlodbias", string.Empty }, + { "nv!__gl_texmemoryspaceenables", string.Empty }, + { "nv!__gl_textureprecache", string.Empty }, + { "nv!__gl_threadcontrol", string.Empty }, + { "nv!__gl_threadcontrol2", string.Empty }, + { "nv!__gl_usegvievents", string.Empty }, + { "nv!__gl_vbomemoryspaceenables", string.Empty }, + { "nv!__gl_vertexlimit", string.Empty }, + { "nv!__gl_vidheapreuseratio", string.Empty }, + { "nv!__gl_vpipe", string.Empty }, + { "nv!__gl_vpipeformatbloatlimit", string.Empty }, + { "nv!__gl_wglmessageboxonabort", string.Empty }, + { "nv!__gl_writeinfolog", string.Empty }, + { "nv!__gl_writeprogramobjectassembly", string.Empty }, + { "nv!__gl_writeprogramobjectsource", string.Empty }, + { "nv!__gl_xnvadapterpresent", string.Empty }, + { "nv!__gl_yield", string.Empty }, + { "nv!__gl_yieldfunction", string.Empty }, + { "nv!__gl_yieldfunctionfast", string.Empty }, + { "nv!__gl_yieldfunctionslow", string.Empty }, + { "nv!__gl_yieldfunctionwaitfordcqueue", string.Empty }, + { "nv!__gl_yieldfunctionwaitforframe", string.Empty }, + { "nv!__gl_yieldfunctionwaitforgpu", string.Empty }, + { "nv!__gl_zbctableaddhysteresis", string.Empty }, + { "nv!gpu_debug_mode", string.Empty }, + { "nv!gpu_stay_on", string.Empty }, + { "nv!gpu_timeout_ms_max", string.Empty }, + { "nv!gvitimeoutcontrol", string.Empty }, + { "nv!hcctrl", string.Empty }, + { "nv!hwstate_per_ctx", string.Empty }, + { "nv!libandroid_enable_log", string.Empty }, + { "nv!machinecachelimit", string.Empty }, + { "nv!maxframesallowed", string.Empty }, + { "nv!media.aac_51_output_enabled", string.Empty }, + { "nv!memmgrcachedalloclimit", string.Empty }, + { "nv!memmgrcachedalloclimitratio", string.Empty }, + { "nv!memmgrsysheapalloclimit", string.Empty }, + { "nv!memmgrsysheapalloclimitratio", string.Empty }, + { "nv!memmgrvidheapalloclimit", string.Empty }, + { "nv!mosaic_clip_to_subdev", string.Empty }, + { "nv!mosaic_clip_to_subdev_h_overlap", string.Empty }, + { "nv!mosaic_clip_to_subdev_v_overlap", string.Empty }, + { "nv!nvblit.dump", string.Empty }, + { "nv!nvblit.profile", string.Empty }, + { "nv!nvblit.twod", string.Empty }, + { "nv!nvblit.vic", string.Empty }, + { "nv!nvddk_vic_prevent_use", string.Empty }, + { "nv!nv_decompression", string.Empty }, { "nv!nvdisp_bl_ctrl", "0" }, - { "nv!nvdisp_debug_mask", "" }, + { "nv!nvdisp_debug_mask", string.Empty }, { "nv!nvdisp_enable_ts", "0" }, { "nv!nvhdcp_timeout_ms", "12000" }, { "nv!nvhdcp_max_retries", "5" }, - { "nv!nv_emc_dvfs_test", "" }, - { "nv!nv_emc_init_rate_hz", "" }, - { "nv!nv_gmmu_va_page_split", "" }, - { "nv!nv_gmmu_va_range", "" }, - { "nv!nvhost_debug_mask", "" }, - { "nv!nvidia.hwc.dump_config", "" }, - { "nv!nvidia.hwc.dump_layerlist", "" }, - { "nv!nvidia.hwc.dump_windows", "" }, - { "nv!nvidia.hwc.enable_disp_trans", "" }, - { "nv!nvidia.hwc.ftrace_enable", "" }, - { "nv!nvidia.hwc.hdcp_enable", "" }, - { "nv!nvidia.hwc.hidden_window_mask0", "" }, - { "nv!nvidia.hwc.hidden_window_mask1", "" }, - { "nv!nvidia.hwc.immediate_modeset", "" }, - { "nv!nvidia.hwc.imp_enable", "" }, - { "nv!nvidia.hwc.no_egl", "" }, - { "nv!nvidia.hwc.no_scratchblit", "" }, - { "nv!nvidia.hwc.no_vic", "" }, - { "nv!nvidia.hwc.null_display", "" }, - { "nv!nvidia.hwc.scan_props", "" }, - { "nv!nvidia.hwc.swap_interval", "" }, + { "nv!nv_emc_dvfs_test", string.Empty }, + { "nv!nv_emc_init_rate_hz", string.Empty }, + { "nv!nv_gmmu_va_page_split", string.Empty }, + { "nv!nv_gmmu_va_range", string.Empty }, + { "nv!nvhost_debug_mask", string.Empty }, + { "nv!nvidia.hwc.dump_config", string.Empty }, + { "nv!nvidia.hwc.dump_layerlist", string.Empty }, + { "nv!nvidia.hwc.dump_windows", string.Empty }, + { "nv!nvidia.hwc.enable_disp_trans", string.Empty }, + { "nv!nvidia.hwc.ftrace_enable", string.Empty }, + { "nv!nvidia.hwc.hdcp_enable", string.Empty }, + { "nv!nvidia.hwc.hidden_window_mask0", string.Empty }, + { "nv!nvidia.hwc.hidden_window_mask1", string.Empty }, + { "nv!nvidia.hwc.immediate_modeset", string.Empty }, + { "nv!nvidia.hwc.imp_enable", string.Empty }, + { "nv!nvidia.hwc.no_egl", string.Empty }, + { "nv!nvidia.hwc.no_scratchblit", string.Empty }, + { "nv!nvidia.hwc.no_vic", string.Empty }, + { "nv!nvidia.hwc.null_display", string.Empty }, + { "nv!nvidia.hwc.scan_props", string.Empty }, + { "nv!nvidia.hwc.swap_interval", string.Empty }, { "nv!nvidia.hwc.war_1515812", "0" }, - { "nv!nvmap_debug_mask", "" }, - { "nv!nv_memory_profiler", "" }, - { "nv!nvnflinger_enable_log", "" }, - { "nv!nvnflinger_flip_policy", "" }, + { "nv!nvmap_debug_mask", string.Empty }, + { "nv!nv_memory_profiler", string.Empty }, + { "nv!nvnflinger_enable_log", string.Empty }, + { "nv!nvnflinger_flip_policy", string.Empty }, { "nv!nvnflinger_hotplug_autoswitch", "0" }, { "nv!nvnflinger_prefer_primary_layer", "0" }, - { "nv!nvnflinger_service_priority", "" }, - { "nv!nvnflinger_service_threads", "" }, - { "nv!nvnflinger_swap_interval", "" }, - { "nv!nvnflinger_track_perf", "" }, + { "nv!nvnflinger_service_priority", string.Empty }, + { "nv!nvnflinger_service_threads", string.Empty }, + { "nv!nvnflinger_swap_interval", string.Empty }, + { "nv!nvnflinger_track_perf", string.Empty }, { "nv!nvnflinger_virtualdisplay_policy", "60hz" }, { "nv!nvn_no_vsync_capability", false }, - { "nv!nvn_through_opengl", "" }, - { "nv!nv_pllcx_always_on", "" }, - { "nv!nv_pllcx_safe_div", "" }, - { "nv!nvrm_gpu_channel_interleave", "" }, - { "nv!nvrm_gpu_channel_priority", "" }, - { "nv!nvrm_gpu_channel_timeslice", "" }, - { "nv!nvrm_gpu_default_device_index", "" }, - { "nv!nvrm_gpu_dummy", "" }, - { "nv!nvrm_gpu_help", "" }, - { "nv!nvrm_gpu_nvgpu_disable", "" }, - { "nv!nvrm_gpu_nvgpu_do_nfa_partial_map", "" }, - { "nv!nvrm_gpu_nvgpu_ecc_overrides", "" }, - { "nv!nvrm_gpu_nvgpu_no_as_get_va_regions", "" }, - { "nv!nvrm_gpu_nvgpu_no_channel_abort", "" }, - { "nv!nvrm_gpu_nvgpu_no_cyclestats", "" }, - { "nv!nvrm_gpu_nvgpu_no_fixed", "" }, - { "nv!nvrm_gpu_nvgpu_no_gpu_characteristics", "" }, - { "nv!nvrm_gpu_nvgpu_no_ioctl_mutex", "" }, - { "nv!nvrm_gpu_nvgpu_no_map_buffer_ex", "" }, - { "nv!nvrm_gpu_nvgpu_no_robustness", "" }, - { "nv!nvrm_gpu_nvgpu_no_sparse", "" }, - { "nv!nvrm_gpu_nvgpu_no_syncpoints", "" }, - { "nv!nvrm_gpu_nvgpu_no_tsg", "" }, - { "nv!nvrm_gpu_nvgpu_no_zbc", "" }, - { "nv!nvrm_gpu_nvgpu_no_zcull", "" }, - { "nv!nvrm_gpu_nvgpu_wrap_channels_in_tsgs", "" }, - { "nv!nvrm_gpu_prevent_use", "" }, - { "nv!nvrm_gpu_trace", "" }, - { "nv!nvsched_debug_mask", "" }, - { "nv!nvsched_force_enable", "" }, - { "nv!nvsched_force_log", "" }, - { "nv!nv_usb_plls_hw_ctrl", "" }, - { "nv!nv_winsys", "" }, - { "nv!nvwsi_dump", "" }, - { "nv!nvwsi_fill", "" }, - { "nv!ogl_", "" }, - { "nv!ogl_0356afd0", "" }, - { "nv!ogl_0356afd1", "" }, - { "nv!ogl_0356afd2", "" }, - { "nv!ogl_0356afd3", "" }, - { "nv!ogl_0x923dc0", "" }, - { "nv!ogl_0x923dc1", "" }, - { "nv!ogl_0x923dc2", "" }, - { "nv!ogl_0x923dc3", "" }, - { "nv!ogl_0x923dc4", "" }, - { "nv!ogl_0x923dd3", "" }, - { "nv!ogl_0x9abdc5", "" }, - { "nv!ogl_0x9abdc6", "" }, - { "nv!ogl_0xbd10fb", "" }, - { "nv!ogl_0xce2348", "" }, - { "nv!ogl_10261989", "" }, - { "nv!ogl_1042d483", "" }, - { "nv!ogl_10572898", "" }, - { "nv!ogl_115631", "" }, - { "nv!ogl_12950094", "" }, - { "nv!ogl_1314f311", "" }, - { "nv!ogl_1314f312", "" }, - { "nv!ogl_13279512", "" }, - { "nv!ogl_13813496", "" }, - { "nv!ogl_14507179", "" }, - { "nv!ogl_15694569", "" }, - { "nv!ogl_16936964", "" }, - { "nv!ogl_17aa230c", "" }, - { "nv!ogl_182054", "" }, - { "nv!ogl_18273275", "" }, - { "nv!ogl_18273276", "" }, - { "nv!ogl_1854d03b", "" }, - { "nv!ogl_18add00d", "" }, - { "nv!ogl_19156670", "" }, - { "nv!ogl_19286545", "" }, - { "nv!ogl_1a298e9f", "" }, - { "nv!ogl_1acf43fe", "" }, - { "nv!ogl_1bda43fe", "" }, - { "nv!ogl_1c3b92", "" }, - { "nv!ogl_21509920", "" }, - { "nv!ogl_215323457", "" }, - { "nv!ogl_2165ad", "" }, - { "nv!ogl_2165ae", "" }, - { "nv!ogl_21be9c", "" }, - { "nv!ogl_233264316", "" }, - { "nv!ogl_234557580", "" }, - { "nv!ogl_23cd0e", "" }, - { "nv!ogl_24189123", "" }, - { "nv!ogl_2443266", "" }, - { "nv!ogl_25025519", "" }, - { "nv!ogl_255e39", "" }, - { "nv!ogl_2583364", "" }, - { "nv!ogl_2888c1", "" }, - { "nv!ogl_28ca3e", "" }, - { "nv!ogl_29871243", "" }, - { "nv!ogl_2a1f64", "" }, - { "nv!ogl_2dc432", "" }, - { "nv!ogl_2de437", "" }, - { "nv!ogl_2f3bb89c", "" }, - { "nv!ogl_2fd652", "" }, - { "nv!ogl_3001ac", "" }, - { "nv!ogl_31298772", "" }, - { "nv!ogl_313233", "" }, - { "nv!ogl_31f7d603", "" }, - { "nv!ogl_320ce4", "" }, - { "nv!ogl_32153248", "" }, - { "nv!ogl_32153249", "" }, - { "nv!ogl_335bca", "" }, - { "nv!ogl_342abb", "" }, - { "nv!ogl_34dfe6", "" }, - { "nv!ogl_34dfe7", "" }, - { "nv!ogl_34dfe8", "" }, - { "nv!ogl_34dfe9", "" }, - { "nv!ogl_35201578", "" }, - { "nv!ogl_359278", "" }, - { "nv!ogl_37f53a", "" }, - { "nv!ogl_38144972", "" }, - { "nv!ogl_38542646", "" }, - { "nv!ogl_3b74c9", "" }, - { "nv!ogl_3c136f", "" }, - { "nv!ogl_3cf72823", "" }, - { "nv!ogl_3d7af029", "" }, - { "nv!ogl_3ff34782", "" }, - { "nv!ogl_4129618", "" }, - { "nv!ogl_4189fac3", "" }, - { "nv!ogl_420bd4", "" }, - { "nv!ogl_42a699", "" }, - { "nv!ogl_441369", "" }, - { "nv!ogl_4458713e", "" }, - { "nv!ogl_4554b6", "" }, - { "nv!ogl_457425", "" }, - { "nv!ogl_4603b207", "" }, - { "nv!ogl_46574957", "" }, - { "nv!ogl_46574958", "" }, - { "nv!ogl_46813529", "" }, - { "nv!ogl_46f1e13d", "" }, - { "nv!ogl_47534c43", "" }, - { "nv!ogl_48550336", "" }, - { "nv!ogl_48576893", "" }, - { "nv!ogl_48576894", "" }, - { "nv!ogl_4889ac02", "" }, - { "nv!ogl_49005740", "" }, - { "nv!ogl_49867584", "" }, - { "nv!ogl_49960973", "" }, - { "nv!ogl_4a5341", "" }, - { "nv!ogl_4f4e48", "" }, - { "nv!ogl_4f8a0a", "" }, - { "nv!ogl_50299698", "" }, - { "nv!ogl_50299699", "" }, - { "nv!ogl_50361291", "" }, - { "nv!ogl_5242ae", "" }, - { "nv!ogl_53d30c", "" }, - { "nv!ogl_56347a", "" }, - { "nv!ogl_563a95f1", "" }, - { "nv!ogl_573823", "" }, - { "nv!ogl_58027529", "" }, - { "nv!ogl_5d2d63", "" }, - { "nv!ogl_5f7e3b", "" }, - { "nv!ogl_60461793", "" }, - { "nv!ogl_60d355", "" }, - { "nv!ogl_616627aa", "" }, - { "nv!ogl_62317182", "" }, - { "nv!ogl_6253fa2e", "" }, - { "nv!ogl_64100768", "" }, - { "nv!ogl_64100769", "" }, - { "nv!ogl_64100770", "" }, - { "nv!ogl_647395", "" }, - { "nv!ogl_66543234", "" }, - { "nv!ogl_67674763", "" }, - { "nv!ogl_67739784", "" }, - { "nv!ogl_68fb9c", "" }, - { "nv!ogl_69801276", "" }, - { "nv!ogl_6af9fa2f", "" }, - { "nv!ogl_6af9fa3f", "" }, - { "nv!ogl_6af9fa4f", "" }, - { "nv!ogl_6bd8c7", "" }, - { "nv!ogl_6c7691", "" }, - { "nv!ogl_6d4296ce", "" }, - { "nv!ogl_6dd7e7", "" }, - { "nv!ogl_6dd7e8", "" }, - { "nv!ogl_6fe11ec1", "" }, - { "nv!ogl_716511763", "" }, - { "nv!ogl_72504593", "" }, - { "nv!ogl_73304097", "" }, - { "nv!ogl_73314098", "" }, - { "nv!ogl_74095213", "" }, - { "nv!ogl_74095213a", "" }, - { "nv!ogl_74095213b", "" }, - { "nv!ogl_74095214", "" }, - { "nv!ogl_748f9649", "" }, - { "nv!ogl_75494732", "" }, - { "nv!ogl_78452832", "" }, - { "nv!ogl_784561", "" }, - { "nv!ogl_78e16b9c", "" }, - { "nv!ogl_79251225", "" }, - { "nv!ogl_7c128b", "" }, - { "nv!ogl_7ccd93", "" }, - { "nv!ogl_7df8d1", "" }, - { "nv!ogl_800c2310", "" }, - { "nv!ogl_80546710", "" }, - { "nv!ogl_80772310", "" }, - { "nv!ogl_808ee280", "" }, - { "nv!ogl_81131154", "" }, - { "nv!ogl_81274457", "" }, - { "nv!ogl_8292291f", "" }, - { "nv!ogl_83498426", "" }, - { "nv!ogl_84993794", "" }, - { "nv!ogl_84995585", "" }, - { "nv!ogl_84a0a0", "" }, - { "nv!ogl_852142", "" }, - { "nv!ogl_85612309", "" }, - { "nv!ogl_85612310", "" }, - { "nv!ogl_85612311", "" }, - { "nv!ogl_85612312", "" }, - { "nv!ogl_8623ff27", "" }, - { "nv!ogl_87364952", "" }, - { "nv!ogl_87f6275666", "" }, - { "nv!ogl_886748", "" }, - { "nv!ogl_89894423", "" }, - { "nv!ogl_8ad8a75", "" }, - { "nv!ogl_8ad8ad00", "" }, - { "nv!ogl_8bb815", "" }, - { "nv!ogl_8bb817", "" }, - { "nv!ogl_8bb818", "" }, - { "nv!ogl_8bb819", "" }, - { "nv!ogl_8e640cd1", "" }, - { "nv!ogl_8f34971a", "" }, - { "nv!ogl_8f773984", "" }, - { "nv!ogl_8f7a7d", "" }, - { "nv!ogl_902486209", "" }, - { "nv!ogl_90482571", "" }, - { "nv!ogl_91214835", "" }, - { "nv!ogl_912848290", "" }, - { "nv!ogl_915e56", "" }, - { "nv!ogl_92179063", "" }, - { "nv!ogl_92179064", "" }, - { "nv!ogl_92179065", "" }, - { "nv!ogl_92179066", "" }, - { "nv!ogl_92350358", "" }, - { "nv!ogl_92809063", "" }, - { "nv!ogl_92809064", "" }, - { "nv!ogl_92809065", "" }, - { "nv!ogl_92809066", "" }, - { "nv!ogl_92920143", "" }, - { "nv!ogl_93a89b12", "" }, - { "nv!ogl_93a89c0b", "" }, - { "nv!ogl_94812574", "" }, - { "nv!ogl_95282304", "" }, - { "nv!ogl_95394027", "" }, - { "nv!ogl_959b1f", "" }, - { "nv!ogl_9638af", "" }, - { "nv!ogl_96fd59", "" }, - { "nv!ogl_97f6275666", "" }, - { "nv!ogl_97f6275667", "" }, - { "nv!ogl_97f6275668", "" }, - { "nv!ogl_97f6275669", "" }, - { "nv!ogl_97f627566a", "" }, - { "nv!ogl_97f627566b", "" }, - { "nv!ogl_97f627566d", "" }, - { "nv!ogl_97f627566e", "" }, - { "nv!ogl_97f627566f", "" }, - { "nv!ogl_97f6275670", "" }, - { "nv!ogl_97f6275671", "" }, - { "nv!ogl_97f727566e", "" }, - { "nv!ogl_98480775", "" }, - { "nv!ogl_98480776", "" }, - { "nv!ogl_98480777", "" }, - { "nv!ogl_992431", "" }, - { "nv!ogl_9aa29065", "" }, - { "nv!ogl_9af32c", "" }, - { "nv!ogl_9af32d", "" }, - { "nv!ogl_9af32e", "" }, - { "nv!ogl_9c108b71", "" }, - { "nv!ogl_9f279065", "" }, - { "nv!ogl_a01bc728", "" }, - { "nv!ogl_a13b46c80", "" }, - { "nv!ogl_a22eb0", "" }, - { "nv!ogl_a2fb451e", "" }, - { "nv!ogl_a3456abe", "" }, - { "nv!ogl_a7044887", "" }, - { "nv!ogl_a7149200", "" }, - { "nv!ogl_a766215670", "" }, - { "nv!ogl_aalinegamma", "" }, - { "nv!ogl_aalinetweaks", "" }, - { "nv!ogl_ab34ee01", "" }, - { "nv!ogl_ab34ee02", "" }, - { "nv!ogl_ab34ee03", "" }, - { "nv!ogl_ac0274", "" }, - { "nv!ogl_af73c63e", "" }, - { "nv!ogl_af73c63f", "" }, - { "nv!ogl_af9927", "" }, - { "nv!ogl_afoverride", "" }, - { "nv!ogl_allocdeviceevents", "" }, - { "nv!ogl_applicationkey", "" }, - { "nv!ogl_appreturnonlybasicglsltype", "" }, - { "nv!ogl_app_softimage", "" }, - { "nv!ogl_app_supportbits2", "" }, - { "nv!ogl_assumetextureismipmappedatcreation", "" }, - { "nv!ogl_b1fb0f01", "" }, - { "nv!ogl_b3edd5", "" }, - { "nv!ogl_b40d9e03d", "" }, - { "nv!ogl_b7f6275666", "" }, - { "nv!ogl_b812c1", "" }, - { "nv!ogl_ba14ba1a", "" }, - { "nv!ogl_ba14ba1b", "" }, - { "nv!ogl_bd7559", "" }, - { "nv!ogl_bd755a", "" }, - { "nv!ogl_bd755c", "" }, - { "nv!ogl_bd755d", "" }, - { "nv!ogl_be58bb", "" }, - { "nv!ogl_be92cb", "" }, - { "nv!ogl_beefcba3", "" }, - { "nv!ogl_beefcba4", "" }, - { "nv!ogl_c023777f", "" }, - { "nv!ogl_c09dc8", "" }, - { "nv!ogl_c0d340", "" }, - { "nv!ogl_c2ff374c", "" }, - { "nv!ogl_c5e9d7a3", "" }, - { "nv!ogl_c5e9d7a4", "" }, - { "nv!ogl_c5e9d7b4", "" }, - { "nv!ogl_c618f9", "" }, - { "nv!ogl_ca345840", "" }, - { "nv!ogl_cachedisable", "" }, - { "nv!ogl_channelpriorityoverride", "" }, - { "nv!ogl_cleardatastorevidmem", "" }, - { "nv!ogl_cmdbufmemoryspaceenables", "" }, - { "nv!ogl_cmdbufminwords", "" }, - { "nv!ogl_cmdbufsizewords", "" }, - { "nv!ogl_conformantblitframebufferscissor", "" }, - { "nv!ogl_conformantincompletetextures", "" }, - { "nv!ogl_copybuffermethod", "" }, - { "nv!ogl_cubemapaniso", "" }, - { "nv!ogl_cubemapfiltering", "" }, - { "nv!ogl_d0e9a4d7", "" }, - { "nv!ogl_d13733f12", "" }, - { "nv!ogl_d1b399", "" }, - { "nv!ogl_d2983c32", "" }, - { "nv!ogl_d2983c33", "" }, - { "nv!ogl_d2e71b", "" }, - { "nv!ogl_d377dc", "" }, - { "nv!ogl_d377dd", "" }, - { "nv!ogl_d489f4", "" }, - { "nv!ogl_d4bce1", "" }, - { "nv!ogl_d518cb", "" }, - { "nv!ogl_d518cd", "" }, - { "nv!ogl_d518ce", "" }, - { "nv!ogl_d518d0", "" }, - { "nv!ogl_d518d1", "" }, - { "nv!ogl_d518d2", "" }, - { "nv!ogl_d518d3", "" }, - { "nv!ogl_d518d4", "" }, - { "nv!ogl_d518d5", "" }, - { "nv!ogl_d59eda", "" }, - { "nv!ogl_d83cbd", "" }, - { "nv!ogl_d8e777", "" }, - { "nv!ogl_debug_level", "" }, - { "nv!ogl_debug_mask", "" }, - { "nv!ogl_debug_options", "" }, - { "nv!ogl_devshmpageableallocations", "" }, - { "nv!ogl_df1f9812", "" }, - { "nv!ogl_df783c", "" }, - { "nv!ogl_diagenable", "" }, - { "nv!ogl_disallowcemask", "" }, - { "nv!ogl_disallowz16", "" }, - { "nv!ogl_dlmemoryspaceenables", "" }, - { "nv!ogl_e0bfec", "" }, - { "nv!ogl_e433456d", "" }, - { "nv!ogl_e435563f", "" }, - { "nv!ogl_e4cd9c", "" }, - { "nv!ogl_e5c972", "" }, - { "nv!ogl_e639ef", "" }, - { "nv!ogl_e802af", "" }, - { "nv!ogl_eae964", "" }, - { "nv!ogl_earlytexturehwallocation", "" }, - { "nv!ogl_eb92a3", "" }, - { "nv!ogl_ebca56", "" }, - { "nv!ogl_expert_detail_level", "" }, - { "nv!ogl_expert_output_mask", "" }, - { "nv!ogl_expert_report_mask", "" }, - { "nv!ogl_extensionstringnvarch", "" }, - { "nv!ogl_extensionstringversion", "" }, - { "nv!ogl_f00f1938", "" }, - { "nv!ogl_f10736", "" }, - { "nv!ogl_f1846870", "" }, - { "nv!ogl_f33bc370", "" }, - { "nv!ogl_f392a874", "" }, - { "nv!ogl_f49ae8", "" }, - { "nv!ogl_fa345cce", "" }, - { "nv!ogl_fa35cc4", "" }, - { "nv!ogl_faa14a", "" }, - { "nv!ogl_faf8a723", "" }, - { "nv!ogl_fastgs", "" }, - { "nv!ogl_fbf4ac45", "" }, - { "nv!ogl_fbo_blit_ignore_srgb", "" }, - { "nv!ogl_fc64c7", "" }, - { "nv!ogl_ff54ec97", "" }, - { "nv!ogl_ff54ec98", "" }, - { "nv!ogl_forceexitprocessdetach", "" }, - { "nv!ogl_forcerequestedesversion", "" }, - { "nv!ogl_glsynctovblank", "" }, - { "nv!ogl_gvitimeoutcontrol", "" }, - { "nv!ogl_hcctrl", "" }, - { "nv!ogl_hwstate_per_ctx", "" }, - { "nv!ogl_machinecachelimit", "" }, - { "nv!ogl_maxframesallowed", "" }, - { "nv!ogl_memmgrcachedalloclimit", "" }, - { "nv!ogl_memmgrcachedalloclimitratio", "" }, - { "nv!ogl_memmgrsysheapalloclimit", "" }, - { "nv!ogl_memmgrsysheapalloclimitratio", "" }, - { "nv!ogl_memmgrvidheapalloclimit", "" }, - { "nv!ogl_mosaic_clip_to_subdev", "" }, - { "nv!ogl_mosaic_clip_to_subdev_h_overlap", "" }, - { "nv!ogl_mosaic_clip_to_subdev_v_overlap", "" }, - { "nv!ogl_overlaymergeblittimerms", "" }, - { "nv!ogl_perfmon_mode", "" }, - { "nv!ogl_pixbar_mode", "" }, - { "nv!ogl_qualityenhancements", "" }, - { "nv!ogl_r27s18q28", "" }, - { "nv!ogl_r2d7c1d8", "" }, - { "nv!ogl_renderer", "" }, - { "nv!ogl_renderqualityflags", "" }, - { "nv!ogl_s3tcquality", "" }, - { "nv!ogl_shaderatomics", "" }, - { "nv!ogl_shadercacheinitsize", "" }, - { "nv!ogl_shader_disk_cache_path", "" }, - { "nv!ogl_shader_disk_cache_read_only", "" }, - { "nv!ogl_shaderobjects", "" }, - { "nv!ogl_shaderportabilitywarnings", "" }, - { "nv!ogl_shaderwarningsaserrors", "" }, - { "nv!ogl_skiptexturehostcopies", "" }, - { "nv!ogl_sli_dli_control", "" }, - { "nv!ogl_sparsetexture", "" }, - { "nv!ogl_spinlooptimeout", "" }, - { "nv!ogl_sync_to_vblank", "" }, - { "nv!ogl_sysheapreuseratio", "" }, - { "nv!ogl_sysmemtexturepromotion", "" }, - { "nv!ogl_targetflushcount", "" }, - { "nv!ogl_tearingfreeswappresent", "" }, - { "nv!ogl_texclampbehavior", "" }, - { "nv!ogl_texlodbias", "" }, - { "nv!ogl_texmemoryspaceenables", "" }, - { "nv!ogl_textureprecache", "" }, - { "nv!ogl_threadcontrol", "" }, - { "nv!ogl_threadcontrol2", "" }, - { "nv!ogl_usegvievents", "" }, - { "nv!ogl_vbomemoryspaceenables", "" }, - { "nv!ogl_vertexlimit", "" }, - { "nv!ogl_vidheapreuseratio", "" }, - { "nv!ogl_vpipe", "" }, - { "nv!ogl_vpipeformatbloatlimit", "" }, - { "nv!ogl_wglmessageboxonabort", "" }, - { "nv!ogl_writeinfolog", "" }, - { "nv!ogl_writeprogramobjectassembly", "" }, - { "nv!ogl_writeprogramobjectsource", "" }, - { "nv!ogl_xnvadapterpresent", "" }, - { "nv!ogl_yield", "" }, - { "nv!ogl_yieldfunction", "" }, - { "nv!ogl_yieldfunctionfast", "" }, - { "nv!ogl_yieldfunctionslow", "" }, - { "nv!ogl_yieldfunctionwaitfordcqueue", "" }, - { "nv!ogl_yieldfunctionwaitforframe", "" }, - { "nv!ogl_yieldfunctionwaitforgpu", "" }, - { "nv!ogl_zbctableaddhysteresis", "" }, - { "nv!overlaymergeblittimerms", "" }, - { "nv!perfmon_mode", "" }, - { "nv!persist.sys.display.resolution", "" }, - { "nv!persist.tegra.composite.fallb", "" }, - { "nv!persist.tegra.composite.policy", "" }, - { "nv!persist.tegra.composite.range", "" }, - { "nv!persist.tegra.compositor", "" }, - { "nv!persist.tegra.compositor.virt", "" }, - { "nv!persist.tegra.compression", "" }, - { "nv!persist.tegra.cursor.enable", "" }, - { "nv!persist.tegra.didim.enable", "" }, - { "nv!persist.tegra.didim.normal", "" }, - { "nv!persist.tegra.didim.video", "" }, - { "nv!persist.tegra.disp.heads", "" }, - { "nv!persist.tegra.gamma_correction", "" }, - { "nv!persist.tegra.gpu_mapping_cache", "" }, - { "nv!persist.tegra.grlayout", "" }, - { "nv!persist.tegra.hdmi.2020.10", "" }, - { "nv!persist.tegra.hdmi.2020.fake", "" }, - { "nv!persist.tegra.hdmi.2020.force", "" }, - { "nv!persist.tegra.hdmi.autorotate", "" }, - { "nv!persist.tegra.hdmi.hdr.fake", "" }, - { "nv!persist.tegra.hdmi.ignore_ratio", "" }, - { "nv!persist.tegra.hdmi.limit.clock", "" }, - { "nv!persist.tegra.hdmi.only_16_9", "" }, - { "nv!persist.tegra.hdmi.range", "" }, - { "nv!persist.tegra.hdmi.resolution", "" }, - { "nv!persist.tegra.hdmi.underscan", "" }, - { "nv!persist.tegra.hdmi.yuv.422", "" }, - { "nv!persist.tegra.hdmi.yuv.444", "" }, - { "nv!persist.tegra.hdmi.yuv.enable", "" }, - { "nv!persist.tegra.hdmi.yuv.force", "" }, - { "nv!persist.tegra.hwc.nvdc", "" }, - { "nv!persist.tegra.idle.minimum_fps", "" }, - { "nv!persist.tegra.panel.rotation", "" }, - { "nv!persist.tegra.scan_props", "" }, - { "nv!persist.tegra.stb.mode", "" }, - { "nv!persist.tegra.zbc_override", "" }, - { "nv!pixbar_mode", "" }, - { "nv!qualityenhancements", "" }, - { "nv!r27s18q28", "" }, - { "nv!r2d7c1d8", "" }, - { "nv!renderer", "" }, - { "nv!renderqualityflags", "" }, - { "nv!rmos_debug_mask", "" }, - { "nv!rmos_set_production_mode", "" }, - { "nv!s3tcquality", "" }, - { "nv!shaderatomics", "" }, - { "nv!shadercacheinitsize", "" }, - { "nv!shader_disk_cache_path", "" }, - { "nv!shader_disk_cache_read_only", "" }, - { "nv!shaderobjects", "" }, - { "nv!shaderportabilitywarnings", "" }, - { "nv!shaderwarningsaserrors", "" }, - { "nv!skiptexturehostcopies", "" }, - { "nv!sli_dli_control", "" }, - { "nv!sparsetexture", "" }, - { "nv!spinlooptimeout", "" }, - { "nv!sync_to_vblank", "" }, - { "nv!sysheapreuseratio", "" }, - { "nv!sysmemtexturepromotion", "" }, - { "nv!targetflushcount", "" }, - { "nv!tearingfreeswappresent", "" }, - { "nv!tegra.refresh", "" }, - { "nv!texclampbehavior", "" }, - { "nv!texlodbias", "" }, - { "nv!texmemoryspaceenables", "" }, - { "nv!textureprecache", "" }, - { "nv!threadcontrol", "" }, - { "nv!threadcontrol2", "" }, - { "nv!tvmr.avp.logs", "" }, - { "nv!tvmr.buffer.logs", "" }, - { "nv!tvmr.dec.prof", "" }, - { "nv!tvmr.deint.logs", "" }, - { "nv!tvmr.dfs.logs", "" }, - { "nv!tvmr.ffprof.logs", "" }, - { "nv!tvmr.game.stream", "" }, - { "nv!tvmr.general.logs", "" }, - { "nv!tvmr.input.dump", "" }, - { "nv!tvmr.seeking.logs", "" }, - { "nv!tvmr.ts_pulldown", "" }, - { "nv!usegvievents", "" }, - { "nv!vbomemoryspaceenables", "" }, - { "nv!vcc_debug_ip", "" }, - { "nv!vcc_verbose_level", "" }, - { "nv!vertexlimit", "" }, - { "nv!viccomposer.filter", "" }, - { "nv!videostats-enable", "" }, - { "nv!vidheapreuseratio", "" }, - { "nv!vpipe", "" }, - { "nv!vpipeformatbloatlimit", "" }, - { "nv!wglmessageboxonabort", "" }, - { "nv!writeinfolog", "" }, - { "nv!writeprogramobjectassembly", "" }, - { "nv!writeprogramobjectsource", "" }, - { "nv!xnvadapterpresent", "" }, - { "nv!yield", "" }, - { "nv!yieldfunction", "" }, - { "nv!yieldfunctionfast", "" }, - { "nv!yieldfunctionslow", "" }, - { "nv!yieldfunctionwaitfordcqueue", "" }, - { "nv!yieldfunctionwaitforframe", "" }, - { "nv!yieldfunctionwaitforgpu", "" }, - { "nv!zbctableaddhysteresis", "" }, + { "nv!nvn_through_opengl", string.Empty }, + { "nv!nv_pllcx_always_on", string.Empty }, + { "nv!nv_pllcx_safe_div", string.Empty }, + { "nv!nvrm_gpu_channel_interleave", string.Empty }, + { "nv!nvrm_gpu_channel_priority", string.Empty }, + { "nv!nvrm_gpu_channel_timeslice", string.Empty }, + { "nv!nvrm_gpu_default_device_index", string.Empty }, + { "nv!nvrm_gpu_dummy", string.Empty }, + { "nv!nvrm_gpu_help", string.Empty }, + { "nv!nvrm_gpu_nvgpu_disable", string.Empty }, + { "nv!nvrm_gpu_nvgpu_do_nfa_partial_map", string.Empty }, + { "nv!nvrm_gpu_nvgpu_ecc_overrides", string.Empty }, + { "nv!nvrm_gpu_nvgpu_no_as_get_va_regions", string.Empty }, + { "nv!nvrm_gpu_nvgpu_no_channel_abort", string.Empty }, + { "nv!nvrm_gpu_nvgpu_no_cyclestats", string.Empty }, + { "nv!nvrm_gpu_nvgpu_no_fixed", string.Empty }, + { "nv!nvrm_gpu_nvgpu_no_gpu_characteristics", string.Empty }, + { "nv!nvrm_gpu_nvgpu_no_ioctl_mutex", string.Empty }, + { "nv!nvrm_gpu_nvgpu_no_map_buffer_ex", string.Empty }, + { "nv!nvrm_gpu_nvgpu_no_robustness", string.Empty }, + { "nv!nvrm_gpu_nvgpu_no_sparse", string.Empty }, + { "nv!nvrm_gpu_nvgpu_no_syncpoints", string.Empty }, + { "nv!nvrm_gpu_nvgpu_no_tsg", string.Empty }, + { "nv!nvrm_gpu_nvgpu_no_zbc", string.Empty }, + { "nv!nvrm_gpu_nvgpu_no_zcull", string.Empty }, + { "nv!nvrm_gpu_nvgpu_wrap_channels_in_tsgs", string.Empty }, + { "nv!nvrm_gpu_prevent_use", string.Empty }, + { "nv!nvrm_gpu_trace", string.Empty }, + { "nv!nvsched_debug_mask", string.Empty }, + { "nv!nvsched_force_enable", string.Empty }, + { "nv!nvsched_force_log", string.Empty }, + { "nv!nv_usb_plls_hw_ctrl", string.Empty }, + { "nv!nv_winsys", string.Empty }, + { "nv!nvwsi_dump", string.Empty }, + { "nv!nvwsi_fill", string.Empty }, + { "nv!ogl_", string.Empty }, + { "nv!ogl_0356afd0", string.Empty }, + { "nv!ogl_0356afd1", string.Empty }, + { "nv!ogl_0356afd2", string.Empty }, + { "nv!ogl_0356afd3", string.Empty }, + { "nv!ogl_0x923dc0", string.Empty }, + { "nv!ogl_0x923dc1", string.Empty }, + { "nv!ogl_0x923dc2", string.Empty }, + { "nv!ogl_0x923dc3", string.Empty }, + { "nv!ogl_0x923dc4", string.Empty }, + { "nv!ogl_0x923dd3", string.Empty }, + { "nv!ogl_0x9abdc5", string.Empty }, + { "nv!ogl_0x9abdc6", string.Empty }, + { "nv!ogl_0xbd10fb", string.Empty }, + { "nv!ogl_0xce2348", string.Empty }, + { "nv!ogl_10261989", string.Empty }, + { "nv!ogl_1042d483", string.Empty }, + { "nv!ogl_10572898", string.Empty }, + { "nv!ogl_115631", string.Empty }, + { "nv!ogl_12950094", string.Empty }, + { "nv!ogl_1314f311", string.Empty }, + { "nv!ogl_1314f312", string.Empty }, + { "nv!ogl_13279512", string.Empty }, + { "nv!ogl_13813496", string.Empty }, + { "nv!ogl_14507179", string.Empty }, + { "nv!ogl_15694569", string.Empty }, + { "nv!ogl_16936964", string.Empty }, + { "nv!ogl_17aa230c", string.Empty }, + { "nv!ogl_182054", string.Empty }, + { "nv!ogl_18273275", string.Empty }, + { "nv!ogl_18273276", string.Empty }, + { "nv!ogl_1854d03b", string.Empty }, + { "nv!ogl_18add00d", string.Empty }, + { "nv!ogl_19156670", string.Empty }, + { "nv!ogl_19286545", string.Empty }, + { "nv!ogl_1a298e9f", string.Empty }, + { "nv!ogl_1acf43fe", string.Empty }, + { "nv!ogl_1bda43fe", string.Empty }, + { "nv!ogl_1c3b92", string.Empty }, + { "nv!ogl_21509920", string.Empty }, + { "nv!ogl_215323457", string.Empty }, + { "nv!ogl_2165ad", string.Empty }, + { "nv!ogl_2165ae", string.Empty }, + { "nv!ogl_21be9c", string.Empty }, + { "nv!ogl_233264316", string.Empty }, + { "nv!ogl_234557580", string.Empty }, + { "nv!ogl_23cd0e", string.Empty }, + { "nv!ogl_24189123", string.Empty }, + { "nv!ogl_2443266", string.Empty }, + { "nv!ogl_25025519", string.Empty }, + { "nv!ogl_255e39", string.Empty }, + { "nv!ogl_2583364", string.Empty }, + { "nv!ogl_2888c1", string.Empty }, + { "nv!ogl_28ca3e", string.Empty }, + { "nv!ogl_29871243", string.Empty }, + { "nv!ogl_2a1f64", string.Empty }, + { "nv!ogl_2dc432", string.Empty }, + { "nv!ogl_2de437", string.Empty }, + { "nv!ogl_2f3bb89c", string.Empty }, + { "nv!ogl_2fd652", string.Empty }, + { "nv!ogl_3001ac", string.Empty }, + { "nv!ogl_31298772", string.Empty }, + { "nv!ogl_313233", string.Empty }, + { "nv!ogl_31f7d603", string.Empty }, + { "nv!ogl_320ce4", string.Empty }, + { "nv!ogl_32153248", string.Empty }, + { "nv!ogl_32153249", string.Empty }, + { "nv!ogl_335bca", string.Empty }, + { "nv!ogl_342abb", string.Empty }, + { "nv!ogl_34dfe6", string.Empty }, + { "nv!ogl_34dfe7", string.Empty }, + { "nv!ogl_34dfe8", string.Empty }, + { "nv!ogl_34dfe9", string.Empty }, + { "nv!ogl_35201578", string.Empty }, + { "nv!ogl_359278", string.Empty }, + { "nv!ogl_37f53a", string.Empty }, + { "nv!ogl_38144972", string.Empty }, + { "nv!ogl_38542646", string.Empty }, + { "nv!ogl_3b74c9", string.Empty }, + { "nv!ogl_3c136f", string.Empty }, + { "nv!ogl_3cf72823", string.Empty }, + { "nv!ogl_3d7af029", string.Empty }, + { "nv!ogl_3ff34782", string.Empty }, + { "nv!ogl_4129618", string.Empty }, + { "nv!ogl_4189fac3", string.Empty }, + { "nv!ogl_420bd4", string.Empty }, + { "nv!ogl_42a699", string.Empty }, + { "nv!ogl_441369", string.Empty }, + { "nv!ogl_4458713e", string.Empty }, + { "nv!ogl_4554b6", string.Empty }, + { "nv!ogl_457425", string.Empty }, + { "nv!ogl_4603b207", string.Empty }, + { "nv!ogl_46574957", string.Empty }, + { "nv!ogl_46574958", string.Empty }, + { "nv!ogl_46813529", string.Empty }, + { "nv!ogl_46f1e13d", string.Empty }, + { "nv!ogl_47534c43", string.Empty }, + { "nv!ogl_48550336", string.Empty }, + { "nv!ogl_48576893", string.Empty }, + { "nv!ogl_48576894", string.Empty }, + { "nv!ogl_4889ac02", string.Empty }, + { "nv!ogl_49005740", string.Empty }, + { "nv!ogl_49867584", string.Empty }, + { "nv!ogl_49960973", string.Empty }, + { "nv!ogl_4a5341", string.Empty }, + { "nv!ogl_4f4e48", string.Empty }, + { "nv!ogl_4f8a0a", string.Empty }, + { "nv!ogl_50299698", string.Empty }, + { "nv!ogl_50299699", string.Empty }, + { "nv!ogl_50361291", string.Empty }, + { "nv!ogl_5242ae", string.Empty }, + { "nv!ogl_53d30c", string.Empty }, + { "nv!ogl_56347a", string.Empty }, + { "nv!ogl_563a95f1", string.Empty }, + { "nv!ogl_573823", string.Empty }, + { "nv!ogl_58027529", string.Empty }, + { "nv!ogl_5d2d63", string.Empty }, + { "nv!ogl_5f7e3b", string.Empty }, + { "nv!ogl_60461793", string.Empty }, + { "nv!ogl_60d355", string.Empty }, + { "nv!ogl_616627aa", string.Empty }, + { "nv!ogl_62317182", string.Empty }, + { "nv!ogl_6253fa2e", string.Empty }, + { "nv!ogl_64100768", string.Empty }, + { "nv!ogl_64100769", string.Empty }, + { "nv!ogl_64100770", string.Empty }, + { "nv!ogl_647395", string.Empty }, + { "nv!ogl_66543234", string.Empty }, + { "nv!ogl_67674763", string.Empty }, + { "nv!ogl_67739784", string.Empty }, + { "nv!ogl_68fb9c", string.Empty }, + { "nv!ogl_69801276", string.Empty }, + { "nv!ogl_6af9fa2f", string.Empty }, + { "nv!ogl_6af9fa3f", string.Empty }, + { "nv!ogl_6af9fa4f", string.Empty }, + { "nv!ogl_6bd8c7", string.Empty }, + { "nv!ogl_6c7691", string.Empty }, + { "nv!ogl_6d4296ce", string.Empty }, + { "nv!ogl_6dd7e7", string.Empty }, + { "nv!ogl_6dd7e8", string.Empty }, + { "nv!ogl_6fe11ec1", string.Empty }, + { "nv!ogl_716511763", string.Empty }, + { "nv!ogl_72504593", string.Empty }, + { "nv!ogl_73304097", string.Empty }, + { "nv!ogl_73314098", string.Empty }, + { "nv!ogl_74095213", string.Empty }, + { "nv!ogl_74095213a", string.Empty }, + { "nv!ogl_74095213b", string.Empty }, + { "nv!ogl_74095214", string.Empty }, + { "nv!ogl_748f9649", string.Empty }, + { "nv!ogl_75494732", string.Empty }, + { "nv!ogl_78452832", string.Empty }, + { "nv!ogl_784561", string.Empty }, + { "nv!ogl_78e16b9c", string.Empty }, + { "nv!ogl_79251225", string.Empty }, + { "nv!ogl_7c128b", string.Empty }, + { "nv!ogl_7ccd93", string.Empty }, + { "nv!ogl_7df8d1", string.Empty }, + { "nv!ogl_800c2310", string.Empty }, + { "nv!ogl_80546710", string.Empty }, + { "nv!ogl_80772310", string.Empty }, + { "nv!ogl_808ee280", string.Empty }, + { "nv!ogl_81131154", string.Empty }, + { "nv!ogl_81274457", string.Empty }, + { "nv!ogl_8292291f", string.Empty }, + { "nv!ogl_83498426", string.Empty }, + { "nv!ogl_84993794", string.Empty }, + { "nv!ogl_84995585", string.Empty }, + { "nv!ogl_84a0a0", string.Empty }, + { "nv!ogl_852142", string.Empty }, + { "nv!ogl_85612309", string.Empty }, + { "nv!ogl_85612310", string.Empty }, + { "nv!ogl_85612311", string.Empty }, + { "nv!ogl_85612312", string.Empty }, + { "nv!ogl_8623ff27", string.Empty }, + { "nv!ogl_87364952", string.Empty }, + { "nv!ogl_87f6275666", string.Empty }, + { "nv!ogl_886748", string.Empty }, + { "nv!ogl_89894423", string.Empty }, + { "nv!ogl_8ad8a75", string.Empty }, + { "nv!ogl_8ad8ad00", string.Empty }, + { "nv!ogl_8bb815", string.Empty }, + { "nv!ogl_8bb817", string.Empty }, + { "nv!ogl_8bb818", string.Empty }, + { "nv!ogl_8bb819", string.Empty }, + { "nv!ogl_8e640cd1", string.Empty }, + { "nv!ogl_8f34971a", string.Empty }, + { "nv!ogl_8f773984", string.Empty }, + { "nv!ogl_8f7a7d", string.Empty }, + { "nv!ogl_902486209", string.Empty }, + { "nv!ogl_90482571", string.Empty }, + { "nv!ogl_91214835", string.Empty }, + { "nv!ogl_912848290", string.Empty }, + { "nv!ogl_915e56", string.Empty }, + { "nv!ogl_92179063", string.Empty }, + { "nv!ogl_92179064", string.Empty }, + { "nv!ogl_92179065", string.Empty }, + { "nv!ogl_92179066", string.Empty }, + { "nv!ogl_92350358", string.Empty }, + { "nv!ogl_92809063", string.Empty }, + { "nv!ogl_92809064", string.Empty }, + { "nv!ogl_92809065", string.Empty }, + { "nv!ogl_92809066", string.Empty }, + { "nv!ogl_92920143", string.Empty }, + { "nv!ogl_93a89b12", string.Empty }, + { "nv!ogl_93a89c0b", string.Empty }, + { "nv!ogl_94812574", string.Empty }, + { "nv!ogl_95282304", string.Empty }, + { "nv!ogl_95394027", string.Empty }, + { "nv!ogl_959b1f", string.Empty }, + { "nv!ogl_9638af", string.Empty }, + { "nv!ogl_96fd59", string.Empty }, + { "nv!ogl_97f6275666", string.Empty }, + { "nv!ogl_97f6275667", string.Empty }, + { "nv!ogl_97f6275668", string.Empty }, + { "nv!ogl_97f6275669", string.Empty }, + { "nv!ogl_97f627566a", string.Empty }, + { "nv!ogl_97f627566b", string.Empty }, + { "nv!ogl_97f627566d", string.Empty }, + { "nv!ogl_97f627566e", string.Empty }, + { "nv!ogl_97f627566f", string.Empty }, + { "nv!ogl_97f6275670", string.Empty }, + { "nv!ogl_97f6275671", string.Empty }, + { "nv!ogl_97f727566e", string.Empty }, + { "nv!ogl_98480775", string.Empty }, + { "nv!ogl_98480776", string.Empty }, + { "nv!ogl_98480777", string.Empty }, + { "nv!ogl_992431", string.Empty }, + { "nv!ogl_9aa29065", string.Empty }, + { "nv!ogl_9af32c", string.Empty }, + { "nv!ogl_9af32d", string.Empty }, + { "nv!ogl_9af32e", string.Empty }, + { "nv!ogl_9c108b71", string.Empty }, + { "nv!ogl_9f279065", string.Empty }, + { "nv!ogl_a01bc728", string.Empty }, + { "nv!ogl_a13b46c80", string.Empty }, + { "nv!ogl_a22eb0", string.Empty }, + { "nv!ogl_a2fb451e", string.Empty }, + { "nv!ogl_a3456abe", string.Empty }, + { "nv!ogl_a7044887", string.Empty }, + { "nv!ogl_a7149200", string.Empty }, + { "nv!ogl_a766215670", string.Empty }, + { "nv!ogl_aalinegamma", string.Empty }, + { "nv!ogl_aalinetweaks", string.Empty }, + { "nv!ogl_ab34ee01", string.Empty }, + { "nv!ogl_ab34ee02", string.Empty }, + { "nv!ogl_ab34ee03", string.Empty }, + { "nv!ogl_ac0274", string.Empty }, + { "nv!ogl_af73c63e", string.Empty }, + { "nv!ogl_af73c63f", string.Empty }, + { "nv!ogl_af9927", string.Empty }, + { "nv!ogl_afoverride", string.Empty }, + { "nv!ogl_allocdeviceevents", string.Empty }, + { "nv!ogl_applicationkey", string.Empty }, + { "nv!ogl_appreturnonlybasicglsltype", string.Empty }, + { "nv!ogl_app_softimage", string.Empty }, + { "nv!ogl_app_supportbits2", string.Empty }, + { "nv!ogl_assumetextureismipmappedatcreation", string.Empty }, + { "nv!ogl_b1fb0f01", string.Empty }, + { "nv!ogl_b3edd5", string.Empty }, + { "nv!ogl_b40d9e03d", string.Empty }, + { "nv!ogl_b7f6275666", string.Empty }, + { "nv!ogl_b812c1", string.Empty }, + { "nv!ogl_ba14ba1a", string.Empty }, + { "nv!ogl_ba14ba1b", string.Empty }, + { "nv!ogl_bd7559", string.Empty }, + { "nv!ogl_bd755a", string.Empty }, + { "nv!ogl_bd755c", string.Empty }, + { "nv!ogl_bd755d", string.Empty }, + { "nv!ogl_be58bb", string.Empty }, + { "nv!ogl_be92cb", string.Empty }, + { "nv!ogl_beefcba3", string.Empty }, + { "nv!ogl_beefcba4", string.Empty }, + { "nv!ogl_c023777f", string.Empty }, + { "nv!ogl_c09dc8", string.Empty }, + { "nv!ogl_c0d340", string.Empty }, + { "nv!ogl_c2ff374c", string.Empty }, + { "nv!ogl_c5e9d7a3", string.Empty }, + { "nv!ogl_c5e9d7a4", string.Empty }, + { "nv!ogl_c5e9d7b4", string.Empty }, + { "nv!ogl_c618f9", string.Empty }, + { "nv!ogl_ca345840", string.Empty }, + { "nv!ogl_cachedisable", string.Empty }, + { "nv!ogl_channelpriorityoverride", string.Empty }, + { "nv!ogl_cleardatastorevidmem", string.Empty }, + { "nv!ogl_cmdbufmemoryspaceenables", string.Empty }, + { "nv!ogl_cmdbufminwords", string.Empty }, + { "nv!ogl_cmdbufsizewords", string.Empty }, + { "nv!ogl_conformantblitframebufferscissor", string.Empty }, + { "nv!ogl_conformantincompletetextures", string.Empty }, + { "nv!ogl_copybuffermethod", string.Empty }, + { "nv!ogl_cubemapaniso", string.Empty }, + { "nv!ogl_cubemapfiltering", string.Empty }, + { "nv!ogl_d0e9a4d7", string.Empty }, + { "nv!ogl_d13733f12", string.Empty }, + { "nv!ogl_d1b399", string.Empty }, + { "nv!ogl_d2983c32", string.Empty }, + { "nv!ogl_d2983c33", string.Empty }, + { "nv!ogl_d2e71b", string.Empty }, + { "nv!ogl_d377dc", string.Empty }, + { "nv!ogl_d377dd", string.Empty }, + { "nv!ogl_d489f4", string.Empty }, + { "nv!ogl_d4bce1", string.Empty }, + { "nv!ogl_d518cb", string.Empty }, + { "nv!ogl_d518cd", string.Empty }, + { "nv!ogl_d518ce", string.Empty }, + { "nv!ogl_d518d0", string.Empty }, + { "nv!ogl_d518d1", string.Empty }, + { "nv!ogl_d518d2", string.Empty }, + { "nv!ogl_d518d3", string.Empty }, + { "nv!ogl_d518d4", string.Empty }, + { "nv!ogl_d518d5", string.Empty }, + { "nv!ogl_d59eda", string.Empty }, + { "nv!ogl_d83cbd", string.Empty }, + { "nv!ogl_d8e777", string.Empty }, + { "nv!ogl_debug_level", string.Empty }, + { "nv!ogl_debug_mask", string.Empty }, + { "nv!ogl_debug_options", string.Empty }, + { "nv!ogl_devshmpageableallocations", string.Empty }, + { "nv!ogl_df1f9812", string.Empty }, + { "nv!ogl_df783c", string.Empty }, + { "nv!ogl_diagenable", string.Empty }, + { "nv!ogl_disallowcemask", string.Empty }, + { "nv!ogl_disallowz16", string.Empty }, + { "nv!ogl_dlmemoryspaceenables", string.Empty }, + { "nv!ogl_e0bfec", string.Empty }, + { "nv!ogl_e433456d", string.Empty }, + { "nv!ogl_e435563f", string.Empty }, + { "nv!ogl_e4cd9c", string.Empty }, + { "nv!ogl_e5c972", string.Empty }, + { "nv!ogl_e639ef", string.Empty }, + { "nv!ogl_e802af", string.Empty }, + { "nv!ogl_eae964", string.Empty }, + { "nv!ogl_earlytexturehwallocation", string.Empty }, + { "nv!ogl_eb92a3", string.Empty }, + { "nv!ogl_ebca56", string.Empty }, + { "nv!ogl_expert_detail_level", string.Empty }, + { "nv!ogl_expert_output_mask", string.Empty }, + { "nv!ogl_expert_report_mask", string.Empty }, + { "nv!ogl_extensionstringnvarch", string.Empty }, + { "nv!ogl_extensionstringversion", string.Empty }, + { "nv!ogl_f00f1938", string.Empty }, + { "nv!ogl_f10736", string.Empty }, + { "nv!ogl_f1846870", string.Empty }, + { "nv!ogl_f33bc370", string.Empty }, + { "nv!ogl_f392a874", string.Empty }, + { "nv!ogl_f49ae8", string.Empty }, + { "nv!ogl_fa345cce", string.Empty }, + { "nv!ogl_fa35cc4", string.Empty }, + { "nv!ogl_faa14a", string.Empty }, + { "nv!ogl_faf8a723", string.Empty }, + { "nv!ogl_fastgs", string.Empty }, + { "nv!ogl_fbf4ac45", string.Empty }, + { "nv!ogl_fbo_blit_ignore_srgb", string.Empty }, + { "nv!ogl_fc64c7", string.Empty }, + { "nv!ogl_ff54ec97", string.Empty }, + { "nv!ogl_ff54ec98", string.Empty }, + { "nv!ogl_forceexitprocessdetach", string.Empty }, + { "nv!ogl_forcerequestedesversion", string.Empty }, + { "nv!ogl_glsynctovblank", string.Empty }, + { "nv!ogl_gvitimeoutcontrol", string.Empty }, + { "nv!ogl_hcctrl", string.Empty }, + { "nv!ogl_hwstate_per_ctx", string.Empty }, + { "nv!ogl_machinecachelimit", string.Empty }, + { "nv!ogl_maxframesallowed", string.Empty }, + { "nv!ogl_memmgrcachedalloclimit", string.Empty }, + { "nv!ogl_memmgrcachedalloclimitratio", string.Empty }, + { "nv!ogl_memmgrsysheapalloclimit", string.Empty }, + { "nv!ogl_memmgrsysheapalloclimitratio", string.Empty }, + { "nv!ogl_memmgrvidheapalloclimit", string.Empty }, + { "nv!ogl_mosaic_clip_to_subdev", string.Empty }, + { "nv!ogl_mosaic_clip_to_subdev_h_overlap", string.Empty }, + { "nv!ogl_mosaic_clip_to_subdev_v_overlap", string.Empty }, + { "nv!ogl_overlaymergeblittimerms", string.Empty }, + { "nv!ogl_perfmon_mode", string.Empty }, + { "nv!ogl_pixbar_mode", string.Empty }, + { "nv!ogl_qualityenhancements", string.Empty }, + { "nv!ogl_r27s18q28", string.Empty }, + { "nv!ogl_r2d7c1d8", string.Empty }, + { "nv!ogl_renderer", string.Empty }, + { "nv!ogl_renderqualityflags", string.Empty }, + { "nv!ogl_s3tcquality", string.Empty }, + { "nv!ogl_shaderatomics", string.Empty }, + { "nv!ogl_shadercacheinitsize", string.Empty }, + { "nv!ogl_shader_disk_cache_path", string.Empty }, + { "nv!ogl_shader_disk_cache_read_only", string.Empty }, + { "nv!ogl_shaderobjects", string.Empty }, + { "nv!ogl_shaderportabilitywarnings", string.Empty }, + { "nv!ogl_shaderwarningsaserrors", string.Empty }, + { "nv!ogl_skiptexturehostcopies", string.Empty }, + { "nv!ogl_sli_dli_control", string.Empty }, + { "nv!ogl_sparsetexture", string.Empty }, + { "nv!ogl_spinlooptimeout", string.Empty }, + { "nv!ogl_sync_to_vblank", string.Empty }, + { "nv!ogl_sysheapreuseratio", string.Empty }, + { "nv!ogl_sysmemtexturepromotion", string.Empty }, + { "nv!ogl_targetflushcount", string.Empty }, + { "nv!ogl_tearingfreeswappresent", string.Empty }, + { "nv!ogl_texclampbehavior", string.Empty }, + { "nv!ogl_texlodbias", string.Empty }, + { "nv!ogl_texmemoryspaceenables", string.Empty }, + { "nv!ogl_textureprecache", string.Empty }, + { "nv!ogl_threadcontrol", string.Empty }, + { "nv!ogl_threadcontrol2", string.Empty }, + { "nv!ogl_usegvievents", string.Empty }, + { "nv!ogl_vbomemoryspaceenables", string.Empty }, + { "nv!ogl_vertexlimit", string.Empty }, + { "nv!ogl_vidheapreuseratio", string.Empty }, + { "nv!ogl_vpipe", string.Empty }, + { "nv!ogl_vpipeformatbloatlimit", string.Empty }, + { "nv!ogl_wglmessageboxonabort", string.Empty }, + { "nv!ogl_writeinfolog", string.Empty }, + { "nv!ogl_writeprogramobjectassembly", string.Empty }, + { "nv!ogl_writeprogramobjectsource", string.Empty }, + { "nv!ogl_xnvadapterpresent", string.Empty }, + { "nv!ogl_yield", string.Empty }, + { "nv!ogl_yieldfunction", string.Empty }, + { "nv!ogl_yieldfunctionfast", string.Empty }, + { "nv!ogl_yieldfunctionslow", string.Empty }, + { "nv!ogl_yieldfunctionwaitfordcqueue", string.Empty }, + { "nv!ogl_yieldfunctionwaitforframe", string.Empty }, + { "nv!ogl_yieldfunctionwaitforgpu", string.Empty }, + { "nv!ogl_zbctableaddhysteresis", string.Empty }, + { "nv!overlaymergeblittimerms", string.Empty }, + { "nv!perfmon_mode", string.Empty }, + { "nv!persist.sys.display.resolution", string.Empty }, + { "nv!persist.tegra.composite.fallb", string.Empty }, + { "nv!persist.tegra.composite.policy", string.Empty }, + { "nv!persist.tegra.composite.range", string.Empty }, + { "nv!persist.tegra.compositor", string.Empty }, + { "nv!persist.tegra.compositor.virt", string.Empty }, + { "nv!persist.tegra.compression", string.Empty }, + { "nv!persist.tegra.cursor.enable", string.Empty }, + { "nv!persist.tegra.didim.enable", string.Empty }, + { "nv!persist.tegra.didim.normal", string.Empty }, + { "nv!persist.tegra.didim.video", string.Empty }, + { "nv!persist.tegra.disp.heads", string.Empty }, + { "nv!persist.tegra.gamma_correction", string.Empty }, + { "nv!persist.tegra.gpu_mapping_cache", string.Empty }, + { "nv!persist.tegra.grlayout", string.Empty }, + { "nv!persist.tegra.hdmi.2020.10", string.Empty }, + { "nv!persist.tegra.hdmi.2020.fake", string.Empty }, + { "nv!persist.tegra.hdmi.2020.force", string.Empty }, + { "nv!persist.tegra.hdmi.autorotate", string.Empty }, + { "nv!persist.tegra.hdmi.hdr.fake", string.Empty }, + { "nv!persist.tegra.hdmi.ignore_ratio", string.Empty }, + { "nv!persist.tegra.hdmi.limit.clock", string.Empty }, + { "nv!persist.tegra.hdmi.only_16_9", string.Empty }, + { "nv!persist.tegra.hdmi.range", string.Empty }, + { "nv!persist.tegra.hdmi.resolution", string.Empty }, + { "nv!persist.tegra.hdmi.underscan", string.Empty }, + { "nv!persist.tegra.hdmi.yuv.422", string.Empty }, + { "nv!persist.tegra.hdmi.yuv.444", string.Empty }, + { "nv!persist.tegra.hdmi.yuv.enable", string.Empty }, + { "nv!persist.tegra.hdmi.yuv.force", string.Empty }, + { "nv!persist.tegra.hwc.nvdc", string.Empty }, + { "nv!persist.tegra.idle.minimum_fps", string.Empty }, + { "nv!persist.tegra.panel.rotation", string.Empty }, + { "nv!persist.tegra.scan_props", string.Empty }, + { "nv!persist.tegra.stb.mode", string.Empty }, + { "nv!persist.tegra.zbc_override", string.Empty }, + { "nv!pixbar_mode", string.Empty }, + { "nv!qualityenhancements", string.Empty }, + { "nv!r27s18q28", string.Empty }, + { "nv!r2d7c1d8", string.Empty }, + { "nv!renderer", string.Empty }, + { "nv!renderqualityflags", string.Empty }, + { "nv!rmos_debug_mask", string.Empty }, + { "nv!rmos_set_production_mode", string.Empty }, + { "nv!s3tcquality", string.Empty }, + { "nv!shaderatomics", string.Empty }, + { "nv!shadercacheinitsize", string.Empty }, + { "nv!shader_disk_cache_path", string.Empty }, + { "nv!shader_disk_cache_read_only", string.Empty }, + { "nv!shaderobjects", string.Empty }, + { "nv!shaderportabilitywarnings", string.Empty }, + { "nv!shaderwarningsaserrors", string.Empty }, + { "nv!skiptexturehostcopies", string.Empty }, + { "nv!sli_dli_control", string.Empty }, + { "nv!sparsetexture", string.Empty }, + { "nv!spinlooptimeout", string.Empty }, + { "nv!sync_to_vblank", string.Empty }, + { "nv!sysheapreuseratio", string.Empty }, + { "nv!sysmemtexturepromotion", string.Empty }, + { "nv!targetflushcount", string.Empty }, + { "nv!tearingfreeswappresent", string.Empty }, + { "nv!tegra.refresh", string.Empty }, + { "nv!texclampbehavior", string.Empty }, + { "nv!texlodbias", string.Empty }, + { "nv!texmemoryspaceenables", string.Empty }, + { "nv!textureprecache", string.Empty }, + { "nv!threadcontrol", string.Empty }, + { "nv!threadcontrol2", string.Empty }, + { "nv!tvmr.avp.logs", string.Empty }, + { "nv!tvmr.buffer.logs", string.Empty }, + { "nv!tvmr.dec.prof", string.Empty }, + { "nv!tvmr.deint.logs", string.Empty }, + { "nv!tvmr.dfs.logs", string.Empty }, + { "nv!tvmr.ffprof.logs", string.Empty }, + { "nv!tvmr.game.stream", string.Empty }, + { "nv!tvmr.general.logs", string.Empty }, + { "nv!tvmr.input.dump", string.Empty }, + { "nv!tvmr.seeking.logs", string.Empty }, + { "nv!tvmr.ts_pulldown", string.Empty }, + { "nv!usegvievents", string.Empty }, + { "nv!vbomemoryspaceenables", string.Empty }, + { "nv!vcc_debug_ip", string.Empty }, + { "nv!vcc_verbose_level", string.Empty }, + { "nv!vertexlimit", string.Empty }, + { "nv!viccomposer.filter", string.Empty }, + { "nv!videostats-enable", string.Empty }, + { "nv!vidheapreuseratio", string.Empty }, + { "nv!vpipe", string.Empty }, + { "nv!vpipeformatbloatlimit", string.Empty }, + { "nv!wglmessageboxonabort", string.Empty }, + { "nv!writeinfolog", string.Empty }, + { "nv!writeprogramobjectassembly", string.Empty }, + { "nv!writeprogramobjectsource", string.Empty }, + { "nv!xnvadapterpresent", string.Empty }, + { "nv!yield", string.Empty }, + { "nv!yieldfunction", string.Empty }, + { "nv!yieldfunctionfast", string.Empty }, + { "nv!yieldfunctionslow", string.Empty }, + { "nv!yieldfunctionwaitfordcqueue", string.Empty }, + { "nv!yieldfunctionwaitforframe", string.Empty }, + { "nv!yieldfunctionwaitforgpu", string.Empty }, + { "nv!zbctableaddhysteresis", string.Empty }, { "pcm!enable", true }, { "pctl!intermittent_task_interval_seconds", 21600 }, { "prepo!devmenu_prepo_page_view", false }, @@ -1611,7 +1611,7 @@ namespace Ryujinx.HLE.HOS.Services.Settings { "systempowerstate!always_reboot", false }, { "systempowerstate!power_state_message_emulation_trigger_time", 0 }, { "systempowerstate!power_state_message_to_emulate", 0 }, - { "target_manager!device_name", "" }, + { "target_manager!device_name", string.Empty }, { "vulnerability!needs_update_vulnerability_policy", 0 }, { "apm!performance_mode_policy", "auto" }, { "apm!sdev_throttling_enabled", true }, diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Manager/FqdnResolver.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Manager/FqdnResolver.cs index 2ec0f744e..3ff48b883 100644 --- a/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Manager/FqdnResolver.cs +++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Nsd/Manager/FqdnResolver.cs @@ -36,7 +36,7 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Nsd.Manager // TODO: Load Environment from the savedata. address = address.Replace("%", IManager.NsdSettings.Environment); - resolvedAddress = ""; + resolvedAddress = string.Empty; if (IManager.NsdSettings == null) { diff --git a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Parcel.cs b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Parcel.cs index 1df280dce..25c89baec 100644 --- a/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Parcel.cs +++ b/src/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Parcel.cs @@ -63,7 +63,7 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger if (size < 0) { - return ""; + return string.Empty; } ReadOnlySpan data = ReadInPlace((size + 1) * 2); diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/IApplicationDisplayService.cs b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/IApplicationDisplayService.cs index a2b1fb524..edb441a0a 100644 --- a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/IApplicationDisplayService.cs +++ b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/IApplicationDisplayService.cs @@ -166,7 +166,7 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService private ResultCode OpenDisplayImpl(ServiceCtx context, string name) { - if (name == "") + if (name == string.Empty) { return ResultCode.InvalidValue; } diff --git a/src/Ryujinx.HLE/Loaders/Executables/NsoExecutable.cs b/src/Ryujinx.HLE/Loaders/Executables/NsoExecutable.cs index 83ad5d7e8..1caedb51e 100644 --- a/src/Ryujinx.HLE/Loaders/Executables/NsoExecutable.cs +++ b/src/Ryujinx.HLE/Loaders/Executables/NsoExecutable.cs @@ -102,7 +102,7 @@ namespace Ryujinx.HLE.Loaders.Executables Match fsSdkMatch = FsSdkRegex().Match(rawTextBuffer); if (fsSdkMatch.Success) { - stringBuilder.AppendLine($" FS SDK Version: {fsSdkMatch.Value.Replace("sdk_version: ", "")}"); + stringBuilder.AppendLine($" FS SDK Version: {fsSdkMatch.Value.Replace("sdk_version: ", string.Empty)}"); } MatchCollection sdkMwMatches = SdkMwRegex().Matches(rawTextBuffer); diff --git a/src/Ryujinx.HLE/Loaders/Processes/Extensions/FileSystemExtensions.cs b/src/Ryujinx.HLE/Loaders/Processes/Extensions/FileSystemExtensions.cs index 3904d660e..cd215781f 100644 --- a/src/Ryujinx.HLE/Loaders/Processes/Extensions/FileSystemExtensions.cs +++ b/src/Ryujinx.HLE/Loaders/Processes/Extensions/FileSystemExtensions.cs @@ -89,7 +89,7 @@ namespace Ryujinx.HLE.Loaders.Processes.Extensions Logger.Warning?.Print(LogClass.Ptc, "Detected unsupported ExeFs modifications. PTC disabled."); } - string programName = ""; + string programName = string.Empty; if (!isHomebrew && programId > 0x010000000000FFFF) { diff --git a/src/Ryujinx.HLE/Loaders/Processes/Extensions/LocalFileSystemExtensions.cs b/src/Ryujinx.HLE/Loaders/Processes/Extensions/LocalFileSystemExtensions.cs index 6c2a19894..e3ae9bf5f 100644 --- a/src/Ryujinx.HLE/Loaders/Processes/Extensions/LocalFileSystemExtensions.cs +++ b/src/Ryujinx.HLE/Loaders/Processes/Extensions/LocalFileSystemExtensions.cs @@ -15,7 +15,7 @@ namespace Ryujinx.HLE.Loaders.Processes var nacpData = new BlitStruct(1); ulong programId = metaLoader.GetProgramId(); - device.Configuration.VirtualFileSystem.ModLoader.CollectMods(new[] { programId }); + device.Configuration.VirtualFileSystem.ModLoader.CollectMods([programId]); if (programId != 0) { diff --git a/src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs b/src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs index 12d9c8bd9..a0e7e0fa1 100644 --- a/src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs +++ b/src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs @@ -145,7 +145,7 @@ namespace Ryujinx.HLE.Loaders.Processes IFileSystem dummyExeFs = null; Stream romfsStream = null; - string programName = ""; + string programName = string.Empty; ulong programId = 0000000000000000; // Load executable. diff --git a/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs b/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs index cf4eb416e..33aee1c4c 100644 --- a/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs +++ b/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs @@ -255,7 +255,7 @@ namespace Ryujinx.HLE.Loaders.Processes { NsoExecutable nso => Convert.ToHexString(nso.BuildId.ItemsRo.ToArray()), NroExecutable nro => Convert.ToHexString(nro.Header.BuildId), - _ => "", + _ => string.Empty }).ToUpper()); ulong[] nsoBase = new ulong[executables.Length]; diff --git a/src/Ryujinx.Headless.SDL2/WindowBase.cs b/src/Ryujinx.Headless.SDL2/WindowBase.cs index 4addf62b5..bd47dfd5d 100644 --- a/src/Ryujinx.Headless.SDL2/WindowBase.cs +++ b/src/Ryujinx.Headless.SDL2/WindowBase.cs @@ -1,3 +1,4 @@ +using Humanizer; using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration.Hid; using Ryujinx.Common.Logging; @@ -485,10 +486,10 @@ namespace Ryujinx.Headless.SDL2 { string playerCount = args.PlayerCountMin == args.PlayerCountMax ? $"exactly {args.PlayerCountMin}" : $"{args.PlayerCountMin}-{args.PlayerCountMax}"; - string message = $"Application requests {playerCount} player(s) with:\n\n" + string message = $"Application requests {playerCount} {"player".ToQuantity(args.PlayerCountMin + args.PlayerCountMax, ShowQuantityAs.None)} with:\n\n" + $"TYPES: {args.SupportedStyles}\n\n" + $"PLAYERS: {string.Join(", ", args.SupportedPlayers)}\n\n" - + (args.IsDocked ? "Docked mode set. Handheld is also invalid.\n\n" : "") + + (args.IsDocked ? "Docked mode set. Handheld is also invalid.\n\n" : string.Empty) + "Please reconfigure Input now and then press OK."; return DisplayMessageDialog("Controller Applet", message); diff --git a/src/Ryujinx.Horizon.Common/ResultNames.cs b/src/Ryujinx.Horizon.Common/ResultNames.cs index 55a33d680..25d04b308 100644 --- a/src/Ryujinx.Horizon.Common/ResultNames.cs +++ b/src/Ryujinx.Horizon.Common/ResultNames.cs @@ -1235,14 +1235,14 @@ namespace Ryujinx.Horizon.Common { 0x412, "NotFound" }, { 0x612, "NotEnoughBuffer" }, { 0xCA12, "Cancelled" }, - { 0x7FE12, "" }, - { 0xFA212, "" }, + { 0x7FE12, string.Empty }, + { 0xFA212, string.Empty }, { 0xFA612, "InvalidTaskId" }, { 0xFB612, "InvalidSize" }, { 0xFCA12, "TaskCancelled" }, { 0xFCC12, "TaskNotCompleted" }, { 0xFCE12, "TaskQueueNotAvailable" }, - { 0x106A12, "" }, + { 0x106A12, string.Empty }, { 0x106C12, "OutOfRpcTask" }, { 0x109612, "InvalidCategory" }, { 0x214, "OutOfKeyResource" }, diff --git a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/AhoCorasick.cs b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/AhoCorasick.cs index 6acb9be97..03f61c218 100644 --- a/src/Ryujinx.Horizon/Sdk/Ngc/Detail/AhoCorasick.cs +++ b/src/Ryujinx.Horizon/Sdk/Ngc/Detail/AhoCorasick.cs @@ -221,7 +221,7 @@ namespace Ryujinx.Horizon.Sdk.Ngc.Detail if (includeMultiWord) { int lastMultiWordIndex = 0; - string multiWord = ""; + string multiWord = string.Empty; while (_multiWordMap.Has(nodePlainIndex)) { diff --git a/src/Ryujinx.UI.Common/App/ApplicationData.cs b/src/Ryujinx.UI.Common/App/ApplicationData.cs index b1e346291..4c1c1a043 100644 --- a/src/Ryujinx.UI.Common/App/ApplicationData.cs +++ b/src/Ryujinx.UI.Common/App/ApplicationData.cs @@ -162,7 +162,7 @@ namespace Ryujinx.UI.App.Common NsoReader reader = new(); reader.Initialize(nsoFile.Release().AsStorage().AsFile(OpenMode.Read)).ThrowIfFailure(); - return BitConverter.ToString(reader.Header.ModuleId.ItemsRo.ToArray()).Replace("-", "").ToUpper()[..16]; + return BitConverter.ToString(reader.Header.ModuleId.ItemsRo.ToArray()).Replace("-", string.Empty).ToUpper()[..16]; } } } diff --git a/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs b/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs index 1eb970016..77c6346f2 100644 --- a/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs +++ b/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs @@ -16,7 +16,7 @@ namespace Ryujinx.UI.Common.Configuration /// /// The current version of the file format /// - public const int CurrentVersion = 55; + public const int CurrentVersion = 56; /// /// Version of the configuration file format @@ -173,6 +173,11 @@ namespace Ryujinx.UI.Common.Configuration /// public bool RememberWindowState { get; set; } + /// + /// Enables or disables the redesigned title bar + /// + public bool ShowTitleBar { get; set; } + /// /// Enables hardware-accelerated rendering for Avalonia /// @@ -293,16 +298,6 @@ namespace Ryujinx.UI.Common.Configuration /// public string LanguageCode { get; set; } - /// - /// Enable or disable custom themes in the GUI - /// - public bool EnableCustomTheme { get; set; } - - /// - /// Path to custom GUI theme - /// - public string CustomThemePath { get; set; } - /// /// Chooses the base style // Not Used /// diff --git a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs b/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs index 89aaaabbe..50b3569a1 100644 --- a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs +++ b/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs @@ -144,16 +144,6 @@ namespace Ryujinx.UI.Common.Configuration /// public ReactiveObject LanguageCode { get; private set; } - /// - /// Enable or disable custom themes in the GUI - /// - public ReactiveObject EnableCustomTheme { get; private set; } - - /// - /// Path to custom GUI theme - /// - public ReactiveObject CustomThemePath { get; private set; } - /// /// Selects the base style /// @@ -202,8 +192,6 @@ namespace Ryujinx.UI.Common.Configuration AutoloadDirs = new ReactiveObject>(); ShownFileTypes = new ShownFileTypeSettings(); WindowStartup = new WindowStartupSettings(); - EnableCustomTheme = new ReactiveObject(); - CustomThemePath = new ReactiveObject(); BaseStyle = new ReactiveObject(); StartFullscreen = new ReactiveObject(); GameListViewMode = new ReactiveObject(); @@ -652,6 +640,11 @@ namespace Ryujinx.UI.Common.Configuration /// public ReactiveObject RememberWindowState { get; private set; } + /// + /// Enables or disables the redesigned title bar + /// + public ReactiveObject ShowTitleBar { get; private set; } + /// /// Enables hardware-accelerated rendering for Avalonia /// @@ -675,6 +668,7 @@ namespace Ryujinx.UI.Common.Configuration ShowConfirmExit = new ReactiveObject(); IgnoreApplet = new ReactiveObject(); RememberWindowState = new ReactiveObject(); + ShowTitleBar = new ReactiveObject(); EnableHardwareAcceleration = new ReactiveObject(); HideCursor = new ReactiveObject(); } @@ -714,6 +708,7 @@ namespace Ryujinx.UI.Common.Configuration ShowConfirmExit = ShowConfirmExit, IgnoreApplet = IgnoreApplet, RememberWindowState = RememberWindowState, + ShowTitleBar = ShowTitleBar, EnableHardwareAcceleration = EnableHardwareAcceleration, HideCursor = HideCursor, EnableVsync = Graphics.EnableVsync, @@ -770,8 +765,6 @@ namespace Ryujinx.UI.Common.Configuration WindowMaximized = UI.WindowStartup.WindowMaximized, }, LanguageCode = UI.LanguageCode, - EnableCustomTheme = UI.EnableCustomTheme, - CustomThemePath = UI.CustomThemePath, BaseStyle = UI.BaseStyle, GameListViewMode = UI.GameListViewMode, ShowNames = UI.ShowNames, @@ -804,8 +797,8 @@ namespace Ryujinx.UI.Common.Configuration Graphics.MaxAnisotropy.Value = -1.0f; Graphics.AspectRatio.Value = AspectRatio.Fixed16x9; Graphics.GraphicsBackend.Value = DefaultGraphicsBackend(); - Graphics.PreferredGpu.Value = ""; - Graphics.ShadersDumpPath.Value = ""; + Graphics.PreferredGpu.Value = string.Empty; + Graphics.ShadersDumpPath.Value = string.Empty; Logger.EnableDebug.Value = false; Logger.EnableStub.Value = true; Logger.EnableInfo.Value = true; @@ -814,7 +807,7 @@ namespace Ryujinx.UI.Common.Configuration Logger.EnableTrace.Value = false; Logger.EnableGuest.Value = true; Logger.EnableFsAccessLog.Value = false; - Logger.FilteredClasses.Value = Array.Empty(); + Logger.FilteredClasses.Value = []; Logger.GraphicsDebugLevel.Value = GraphicsDebugLevel.None; System.Language.Value = Language.AmericanEnglish; System.Region.Value = Region.USA; @@ -826,6 +819,7 @@ namespace Ryujinx.UI.Common.Configuration ShowConfirmExit.Value = true; IgnoreApplet.Value = false; RememberWindowState.Value = true; + ShowTitleBar.Value = !OperatingSystem.IsWindows(); EnableHardwareAcceleration.Value = true; HideCursor.Value = HideCursorMode.OnIdle; Graphics.EnableVsync.Value = true; @@ -860,17 +854,15 @@ namespace Ryujinx.UI.Common.Configuration UI.GuiColumns.PathColumn.Value = true; UI.ColumnSort.SortColumnId.Value = 0; UI.ColumnSort.SortAscending.Value = false; - UI.GameDirs.Value = new List(); - UI.AutoloadDirs.Value = new List(); + UI.GameDirs.Value = []; + UI.AutoloadDirs.Value = []; UI.ShownFileTypes.NSP.Value = true; UI.ShownFileTypes.PFS0.Value = true; UI.ShownFileTypes.XCI.Value = true; UI.ShownFileTypes.NCA.Value = true; UI.ShownFileTypes.NRO.Value = true; UI.ShownFileTypes.NSO.Value = true; - UI.EnableCustomTheme.Value = true; UI.LanguageCode.Value = "en_US"; - UI.CustomThemePath.Value = ""; UI.BaseStyle.Value = "Dark"; UI.GameListViewMode.Value = 0; UI.ShowNames.Value = true; @@ -1540,6 +1532,15 @@ namespace Ryujinx.UI.Common.Configuration configurationFileUpdated = true; } + if (configurationFileFormat.Version < 56) + { + Ryujinx.Common.Logging.Logger.Warning?.Print(LogClass.Application, $"Outdated configuration version {configurationFileFormat.Version}, migrating to version 56."); + + configurationFileFormat.ShowTitleBar = !OperatingSystem.IsWindows(); + + configurationFileUpdated = true; + } + Logger.EnableFileLog.Value = configurationFileFormat.EnableFileLog; Graphics.ResScale.Value = configurationFileFormat.ResScale; Graphics.ResScaleCustom.Value = configurationFileFormat.ResScaleCustom; @@ -1572,6 +1573,7 @@ namespace Ryujinx.UI.Common.Configuration ShowConfirmExit.Value = configurationFileFormat.ShowConfirmExit; IgnoreApplet.Value = configurationFileFormat.IgnoreApplet; RememberWindowState.Value = configurationFileFormat.RememberWindowState; + ShowTitleBar.Value = configurationFileFormat.ShowTitleBar; EnableHardwareAcceleration.Value = configurationFileFormat.EnableHardwareAcceleration; HideCursor.Value = configurationFileFormat.HideCursor; Graphics.EnableVsync.Value = configurationFileFormat.EnableVsync; @@ -1610,9 +1612,7 @@ namespace Ryujinx.UI.Common.Configuration UI.ShownFileTypes.NCA.Value = configurationFileFormat.ShownFileTypes.NCA; UI.ShownFileTypes.NRO.Value = configurationFileFormat.ShownFileTypes.NRO; UI.ShownFileTypes.NSO.Value = configurationFileFormat.ShownFileTypes.NSO; - UI.EnableCustomTheme.Value = configurationFileFormat.EnableCustomTheme; UI.LanguageCode.Value = configurationFileFormat.LanguageCode; - UI.CustomThemePath.Value = configurationFileFormat.CustomThemePath; UI.BaseStyle.Value = configurationFileFormat.BaseStyle; UI.GameListViewMode.Value = configurationFileFormat.GameListViewMode; UI.ShowNames.Value = configurationFileFormat.ShowNames; diff --git a/src/Ryujinx.UI.Common/Helper/FileAssociationHelper.cs b/src/Ryujinx.UI.Common/Helper/FileAssociationHelper.cs index b7631f48a..93b2d6138 100644 --- a/src/Ryujinx.UI.Common/Helper/FileAssociationHelper.cs +++ b/src/Ryujinx.UI.Common/Helper/FileAssociationHelper.cs @@ -35,7 +35,7 @@ namespace Ryujinx.UI.Common.Helper if ((uninstall && AreMimeTypesRegisteredLinux()) || (!uninstall && !AreMimeTypesRegisteredLinux())) { string mimeTypesFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "mime", "Ryujinx.xml"); - string additionalArgs = !uninstall ? "--novendor" : ""; + string additionalArgs = !uninstall ? "--novendor" : string.Empty; using Process mimeProcess = new(); @@ -83,7 +83,7 @@ namespace Ryujinx.UI.Common.Helper var openCmd = key.OpenSubKey(@"shell\open\command"); - string keyValue = (string)openCmd.GetValue(""); + string keyValue = (string)openCmd.GetValue(string.Empty); return keyValue is not null && (keyValue.Contains("Ryujinx") || keyValue.Contains(AppDomain.CurrentDomain.FriendlyName)); } diff --git a/src/Ryujinx.UI.Common/Helper/SetupValidator.cs b/src/Ryujinx.UI.Common/Helper/SetupValidator.cs index 908476e48..45d9f8f0d 100644 --- a/src/Ryujinx.UI.Common/Helper/SetupValidator.cs +++ b/src/Ryujinx.UI.Common/Helper/SetupValidator.cs @@ -12,18 +12,11 @@ namespace Ryujinx.UI.Common.Helper { public static bool IsFirmwareValid(ContentManager contentManager, out UserError error) { - bool hasFirmware = contentManager.GetCurrentFirmwareVersion() != null; + error = contentManager.GetCurrentFirmwareVersion() != null + ? UserError.Success + : UserError.NoFirmware; - if (hasFirmware) - { - error = UserError.Success; - - return true; - } - - error = UserError.NoFirmware; - - return false; + return error is UserError.Success; } public static bool CanFixStartApplication(ContentManager contentManager, string baseApplicationPath, UserError error, out SystemVersion firmwareVersion) @@ -95,14 +88,18 @@ namespace Ryujinx.UI.Common.Helper string baseApplicationExtension = Path.GetExtension(baseApplicationPath).ToLowerInvariant(); // NOTE: We don't force homebrew developers to install a system firmware. - if (baseApplicationExtension is not (".nro" or ".nso")) - return IsFirmwareValid(contentManager, out error); - + if (baseApplicationExtension is ".nro" or ".nso") + { + error = UserError.Success; + return true; + } + + return IsFirmwareValid(contentManager, out error); } error = UserError.ApplicationNotFound; - return error is UserError.Success; + return false; } } } diff --git a/src/Ryujinx.UI.Common/Helper/TitleUpdatesHelper.cs b/src/Ryujinx.UI.Common/Helper/TitleUpdatesHelper.cs index d9bc7b6fe..18fbabd6d 100644 --- a/src/Ryujinx.UI.Common/Helper/TitleUpdatesHelper.cs +++ b/src/Ryujinx.UI.Common/Helper/TitleUpdatesHelper.cs @@ -53,7 +53,7 @@ namespace Ryujinx.UI.Common.Helper { var titleUpdateWindowData = new TitleUpdateMetadata { - Selected = "", + Selected = string.Empty, Paths = [], }; diff --git a/src/Ryujinx.UI.Common/Resources/Logo_Ryujinx.png b/src/Ryujinx.UI.Common/Resources/Logo_Ryujinx.png index 88cf82513..28067e908 100644 Binary files a/src/Ryujinx.UI.Common/Resources/Logo_Ryujinx.png and b/src/Ryujinx.UI.Common/Resources/Logo_Ryujinx.png differ diff --git a/src/Ryujinx.UI.Common/Ryujinx.UI.Common.csproj b/src/Ryujinx.UI.Common/Ryujinx.UI.Common.csproj index 142cd44a5..df6532a63 100644 --- a/src/Ryujinx.UI.Common/Ryujinx.UI.Common.csproj +++ b/src/Ryujinx.UI.Common/Ryujinx.UI.Common.csproj @@ -51,7 +51,6 @@ - diff --git a/src/Ryujinx.UI.LocaleGenerator/LocaleGenerator.cs b/src/Ryujinx.UI.LocaleGenerator/LocaleGenerator.cs index bb4918d55..729a166b6 100644 --- a/src/Ryujinx.UI.LocaleGenerator/LocaleGenerator.cs +++ b/src/Ryujinx.UI.LocaleGenerator/LocaleGenerator.cs @@ -15,7 +15,7 @@ namespace Ryujinx.UI.LocaleGenerator context.RegisterSourceOutput(contents, (spc, content) => { - var lines = content.Split('\n').Where(x => x.Trim().StartsWith("\"")).Select(x => x.Split(':')[0].Trim().Replace("\"", "")); + var lines = content.Split('\n').Where(x => x.Trim().StartsWith("\"")).Select(x => x.Split(':')[0].Trim().Replace("\"", string.Empty)); StringBuilder enumSourceBuilder = new(); enumSourceBuilder.AppendLine("namespace Ryujinx.Ava.Common.Locale;"); enumSourceBuilder.AppendLine("internal enum LocaleKeys"); diff --git a/src/Ryujinx/App.axaml.cs b/src/Ryujinx/App.axaml.cs index 295ac1503..509deb34c 100644 --- a/src/Ryujinx/App.axaml.cs +++ b/src/Ryujinx/App.axaml.cs @@ -58,11 +58,9 @@ namespace Ryujinx.Ava if (Program.PreviewerDetached) { - ApplyConfiguredTheme(); + ApplyConfiguredTheme(ConfigurationState.Instance.UI.BaseStyle); ConfigurationState.Instance.UI.BaseStyle.Event += ThemeChanged_Event; - ConfigurationState.Instance.UI.CustomThemePath.Event += ThemeChanged_Event; - ConfigurationState.Instance.UI.EnableCustomTheme.Event += CustomThemeChanged_Event; } } @@ -88,17 +86,13 @@ namespace Ryujinx.Ava } }); } - - private void CustomThemeChanged_Event(object _, ReactiveEventArgs __) => ApplyConfiguredTheme(); - private void ThemeChanged_Event(object _, ReactiveEventArgs __) => ApplyConfiguredTheme(); + private void ThemeChanged_Event(object _, ReactiveEventArgs rArgs) => ApplyConfiguredTheme(rArgs.NewValue); - public void ApplyConfiguredTheme() + public void ApplyConfiguredTheme(string baseStyle) { try { - string baseStyle = ConfigurationState.Instance.UI.BaseStyle; - if (string.IsNullOrWhiteSpace(baseStyle)) { ConfigurationState.Instance.UI.BaseStyle.Value = "Auto"; diff --git a/src/Ryujinx/AppHost.cs b/src/Ryujinx/AppHost.cs index e2cede1c4..dc4f4ff36 100644 --- a/src/Ryujinx/AppHost.cs +++ b/src/Ryujinx/AppHost.cs @@ -604,61 +604,59 @@ namespace Ryujinx.Ava SystemVersion firmwareVersion = ContentManager.GetCurrentFirmwareVersion(); - if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime) { if (!SetupValidator.CanStartApplication(ContentManager, ApplicationPath, out UserError userError)) - { + { + if (SetupValidator.CanFixStartApplication(ContentManager, ApplicationPath, userError, out firmwareVersion)) { - if (SetupValidator.CanFixStartApplication(ContentManager, ApplicationPath, userError, out firmwareVersion)) + if (userError is UserError.NoFirmware) { - if (userError == UserError.NoFirmware) - { - UserResult result = await ContentDialogHelper.CreateConfirmationDialog( - LocaleManager.Instance[LocaleKeys.DialogFirmwareNoFirmwareInstalledMessage], - LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogFirmwareInstallEmbeddedMessage, firmwareVersion.VersionString), - LocaleManager.Instance[LocaleKeys.InputDialogYes], - LocaleManager.Instance[LocaleKeys.InputDialogNo], - ""); + UserResult result = await ContentDialogHelper.CreateConfirmationDialog( + LocaleManager.Instance[LocaleKeys.DialogFirmwareNoFirmwareInstalledMessage], + LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogFirmwareInstallEmbeddedMessage, firmwareVersion.VersionString), + LocaleManager.Instance[LocaleKeys.InputDialogYes], + LocaleManager.Instance[LocaleKeys.InputDialogNo], + string.Empty); - if (result != UserResult.Yes) - { - await UserErrorDialog.ShowUserErrorDialog(userError); - Device.Dispose(); - - return false; - } - } - - if (!SetupValidator.TryFixStartApplication(ContentManager, ApplicationPath, userError, out _)) + if (result != UserResult.Yes) { await UserErrorDialog.ShowUserErrorDialog(userError); Device.Dispose(); return false; } - - // Tell the user that we installed a firmware for them. - if (userError == UserError.NoFirmware) - { - firmwareVersion = ContentManager.GetCurrentFirmwareVersion(); - - _viewModel.RefreshFirmwareStatus(); - - await ContentDialogHelper.CreateInfoDialog( - LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogFirmwareInstalledMessage, firmwareVersion.VersionString), - LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogFirmwareInstallEmbeddedSuccessMessage, firmwareVersion.VersionString), - LocaleManager.Instance[LocaleKeys.InputDialogOk], - "", - LocaleManager.Instance[LocaleKeys.RyujinxInfo]); - } } - else + + if (!SetupValidator.TryFixStartApplication(ContentManager, ApplicationPath, userError, out _)) { await UserErrorDialog.ShowUserErrorDialog(userError); Device.Dispose(); return false; } + + // Tell the user that we installed a firmware for them. + if (userError is UserError.NoFirmware) + { + firmwareVersion = ContentManager.GetCurrentFirmwareVersion(); + + _viewModel.RefreshFirmwareStatus(); + + await ContentDialogHelper.CreateInfoDialog( + LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogFirmwareInstalledMessage, firmwareVersion.VersionString), + LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogFirmwareInstallEmbeddedSuccessMessage, firmwareVersion.VersionString), + LocaleManager.Instance[LocaleKeys.InputDialogOk], + string.Empty, + LocaleManager.Instance[LocaleKeys.RyujinxInfo]); + } + } + else + { + await UserErrorDialog.ShowUserErrorDialog(userError); + Device.Dispose(); + + return false; } } } @@ -820,20 +818,12 @@ namespace Ryujinx.Ava VirtualFileSystem.ReloadKeySet(); // Initialize Renderer. - IRenderer renderer; - - if (ConfigurationState.Instance.Graphics.GraphicsBackend.Value == GraphicsBackend.Vulkan) - { - renderer = new VulkanRenderer( - Vk.GetApi(), + IRenderer renderer = ConfigurationState.Instance.Graphics.GraphicsBackend.Value == GraphicsBackend.OpenGl + ? new OpenGLRenderer() + : VulkanRenderer.Create( + ConfigurationState.Instance.Graphics.PreferredGpu, (RendererHost.EmbeddedWindow as EmbeddedWindowVulkan)!.CreateSurface, - VulkanHelper.GetRequiredInstanceExtensions, - ConfigurationState.Instance.Graphics.PreferredGpu.Value); - } - else - { - renderer = new OpenGLRenderer(); - } + VulkanHelper.GetRequiredInstanceExtensions); BackendThreading threadingMode = ConfigurationState.Instance.Graphics.BackendThreading; diff --git a/src/Ryujinx/Assets/Locales/ar_SA.json b/src/Ryujinx/Assets/Locales/ar_SA.json index f0dfe40b8..22e270901 100644 --- a/src/Ryujinx/Assets/Locales/ar_SA.json +++ b/src/Ryujinx/Assets/Locales/ar_SA.json @@ -97,6 +97,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "التحقق من وجود تحديثات عند التشغيل", "SettingsTabGeneralShowConfirmExitDialog": "إظهار مربع حوار \"تأكيد الخروج\"", "SettingsTabGeneralRememberWindowState": "تذكر حجم/موضع النافذة", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "إخفاء المؤشر:", "SettingsTabGeneralHideCursorNever": "مطلقا", "SettingsTabGeneralHideCursorOnIdle": "عند الخمول", diff --git a/src/Ryujinx/Assets/Locales/de_DE.json b/src/Ryujinx/Assets/Locales/de_DE.json index dbda1755b..94e372e2e 100644 --- a/src/Ryujinx/Assets/Locales/de_DE.json +++ b/src/Ryujinx/Assets/Locales/de_DE.json @@ -97,6 +97,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "Beim Start nach Updates suchen", "SettingsTabGeneralShowConfirmExitDialog": "Zeige den \"Beenden bestätigen\"-Dialog", "SettingsTabGeneralRememberWindowState": "Fenstergröße/-position merken", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "Mauszeiger ausblenden", "SettingsTabGeneralHideCursorNever": "Niemals", "SettingsTabGeneralHideCursorOnIdle": "Mauszeiger bei Inaktivität ausblenden", diff --git a/src/Ryujinx/Assets/Locales/el_GR.json b/src/Ryujinx/Assets/Locales/el_GR.json index c42a73726..89389d337 100644 --- a/src/Ryujinx/Assets/Locales/el_GR.json +++ b/src/Ryujinx/Assets/Locales/el_GR.json @@ -97,6 +97,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "Έλεγχος για Ενημερώσεις στην Εκκίνηση", "SettingsTabGeneralShowConfirmExitDialog": "Εμφάνιση διαλόγου \"Επιβεβαίωση Εξόδου\".", "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "Απόκρυψη Κέρσορα:", "SettingsTabGeneralHideCursorNever": "Ποτέ", "SettingsTabGeneralHideCursorOnIdle": "Απόκρυψη Δρομέα στην Αδράνεια", diff --git a/src/Ryujinx/Assets/Locales/en_US.json b/src/Ryujinx/Assets/Locales/en_US.json index 26342ec4b..68b48146b 100644 --- a/src/Ryujinx/Assets/Locales/en_US.json +++ b/src/Ryujinx/Assets/Locales/en_US.json @@ -100,6 +100,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "Check for Updates on Launch", "SettingsTabGeneralShowConfirmExitDialog": "Show \"Confirm Exit\" Dialog", "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "Hide Cursor:", "SettingsTabGeneralHideCursorNever": "Never", "SettingsTabGeneralHideCursorOnIdle": "On Idle", diff --git a/src/Ryujinx/Assets/Locales/es_ES.json b/src/Ryujinx/Assets/Locales/es_ES.json index d3050f979..d6eb8017a 100644 --- a/src/Ryujinx/Assets/Locales/es_ES.json +++ b/src/Ryujinx/Assets/Locales/es_ES.json @@ -97,6 +97,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "Buscar actualizaciones al iniciar", "SettingsTabGeneralShowConfirmExitDialog": "Mostrar diálogo de confirmación al cerrar", "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "Esconder el cursor:", "SettingsTabGeneralHideCursorNever": "Nunca", "SettingsTabGeneralHideCursorOnIdle": "Ocultar cursor cuando esté inactivo", diff --git a/src/Ryujinx/Assets/Locales/fr_FR.json b/src/Ryujinx/Assets/Locales/fr_FR.json index 689ea8a2a..df8adac00 100644 --- a/src/Ryujinx/Assets/Locales/fr_FR.json +++ b/src/Ryujinx/Assets/Locales/fr_FR.json @@ -100,6 +100,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "Vérifier les mises à jour au démarrage", "SettingsTabGeneralShowConfirmExitDialog": "Afficher le message de \"Confirmation de sortie\"", "SettingsTabGeneralRememberWindowState": "Mémoriser la taille/position de la fenêtre", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "Masquer le Curseur :", "SettingsTabGeneralHideCursorNever": "Jamais", "SettingsTabGeneralHideCursorOnIdle": "Masquer le curseur si inactif", @@ -111,7 +112,7 @@ "SettingsTabGeneralRemove": "Retirer", "SettingsTabSystem": "Système", "SettingsTabSystemCore": "Cœur", - "SettingsTabSystemSystemRegion": "Région du système:", + "SettingsTabSystemSystemRegion": "Région du système :", "SettingsTabSystemSystemRegionJapan": "Japon", "SettingsTabSystemSystemRegionUSA": "USA", "SettingsTabSystemSystemRegionEurope": "Europe", @@ -119,7 +120,7 @@ "SettingsTabSystemSystemRegionChina": "Chine", "SettingsTabSystemSystemRegionKorea": "Corée", "SettingsTabSystemSystemRegionTaiwan": "Taïwan", - "SettingsTabSystemSystemLanguage": "Langue du système:", + "SettingsTabSystemSystemLanguage": "Langue du système :", "SettingsTabSystemSystemLanguageJapanese": "Japonais", "SettingsTabSystemSystemLanguageAmericanEnglish": "Anglais Américain", "SettingsTabSystemSystemLanguageFrench": "Français", @@ -138,7 +139,7 @@ "SettingsTabSystemSystemLanguageSimplifiedChinese": "Chinois simplifié", "SettingsTabSystemSystemLanguageTraditionalChinese": "Chinois traditionnel", "SettingsTabSystemSystemTimeZone": "Fuseau horaire du système :", - "SettingsTabSystemSystemTime": "Heure du système:", + "SettingsTabSystemSystemTime": "Heure du système :", "SettingsTabSystemEnableVsync": "Synchronisation verticale (VSync)", "SettingsTabSystemEnablePptc": "Activer le PPTC (Profiled Persistent Translation Cache)", "SettingsTabSystemEnableLowPowerPptc": "PPTC à faible puissance", @@ -160,13 +161,13 @@ "SettingsTabGraphics": "Graphismes", "SettingsTabGraphicsAPI": "API Graphique", "SettingsTabGraphicsEnableShaderCache": "Activer le cache des shaders", - "SettingsTabGraphicsAnisotropicFiltering": "Filtrage anisotrope:", + "SettingsTabGraphicsAnisotropicFiltering": "Filtrage anisotrope :", "SettingsTabGraphicsAnisotropicFilteringAuto": "Auto", "SettingsTabGraphicsAnisotropicFiltering2x": "x2", "SettingsTabGraphicsAnisotropicFiltering4x": "x4", "SettingsTabGraphicsAnisotropicFiltering8x": "x8", "SettingsTabGraphicsAnisotropicFiltering16x": "x16", - "SettingsTabGraphicsResolutionScale": "Échelle de résolution:", + "SettingsTabGraphicsResolutionScale": "Échelle de résolution :", "SettingsTabGraphicsResolutionScaleCustom": "Personnalisée (Non recommandée)", "SettingsTabGraphicsResolutionScaleNative": "Natif (720p/1080p)", "SettingsTabGraphicsResolutionScale2x": "x2 (1440p/2160p)", @@ -188,10 +189,10 @@ "SettingsTabLoggingEnableInfoLogs": "Activer les journaux d'informations", "SettingsTabLoggingEnableWarningLogs": "Activer les journaux d'avertissements", "SettingsTabLoggingEnableErrorLogs": "Activer les journaux d'erreurs", - "SettingsTabLoggingEnableTraceLogs": "Activer journaux d'erreurs Trace", + "SettingsTabLoggingEnableTraceLogs": "Activer les journaux d'erreurs Trace", "SettingsTabLoggingEnableGuestLogs": "Activer les journaux du programme simulé", "SettingsTabLoggingEnableFsAccessLogs": "Activer les journaux d'accès au système de fichiers", - "SettingsTabLoggingFsGlobalAccessLogMode": "Niveau des journaux d'accès au système de fichiers:", + "SettingsTabLoggingFsGlobalAccessLogMode": "Niveau des journaux d'accès au système de fichiers :", "SettingsTabLoggingDeveloperOptions": "Options développeur", "SettingsTabLoggingDeveloperOptionsNote": "ATTENTION : Réduira les performances", "SettingsTabLoggingGraphicsBackendLogLevel": "Niveau du journal du backend graphique :", @@ -223,7 +224,7 @@ "ControllerSettingsDeviceDisabled": "Désactivé", "ControllerSettingsControllerType": "Type de manette", "ControllerSettingsControllerTypeHandheld": "Portable", - "ControllerSettingsControllerTypeProController": "Manette Pro", + "ControllerSettingsControllerTypeProController": "Manette Switch Pro", "ControllerSettingsControllerTypeJoyConPair": "JoyCon Joints", "ControllerSettingsControllerTypeJoyConLeft": "JoyCon Gauche", "ControllerSettingsControllerTypeJoyConRight": "JoyCon Droite", @@ -271,15 +272,15 @@ "ControllerSettingsExtraButtonsLeft": "Boutons Gauche", "ControllerSettingsExtraButtonsRight": "Boutons Droite", "ControllerSettingsMisc": "Divers", - "ControllerSettingsTriggerThreshold": "Seuil de gachettes:", + "ControllerSettingsTriggerThreshold": "Seuil de gachettes :", "ControllerSettingsMotion": "Mouvements", "ControllerSettingsMotionUseCemuhookCompatibleMotion": "Utiliser un capteur de mouvements CemuHook", - "ControllerSettingsMotionControllerSlot": "Contrôleur ID:", + "ControllerSettingsMotionControllerSlot": "Contrôleur ID :", "ControllerSettingsMotionMirrorInput": "Inverser les contrôles", - "ControllerSettingsMotionRightJoyConSlot": "JoyCon Droit ID:", + "ControllerSettingsMotionRightJoyConSlot": "JoyCon Droit ID :", "ControllerSettingsMotionServerHost": "Serveur d'hébergement :", - "ControllerSettingsMotionGyroSensitivity": "Sensibilitée du gyroscope:", - "ControllerSettingsMotionGyroDeadzone": "Zone morte du gyroscope:", + "ControllerSettingsMotionGyroSensitivity": "Sensibilitée du gyroscope :", + "ControllerSettingsMotionGyroDeadzone": "Zone morte du gyroscope :", "ControllerSettingsSave": "Enregistrer", "ControllerSettingsClose": "Fermer", "KeyUnknown": "Touche inconnue", @@ -519,7 +520,7 @@ "DialogModManagerDeletionWarningMessage": "Vous êtes sur le point de supprimer le mod : {0}\n\nÊtes-vous sûr de vouloir continuer ?", "DialogModManagerDeletionAllWarningMessage": "Vous êtes sur le point de supprimer tous les mods pour ce titre.\n\nÊtes-vous sûr de vouloir continuer ?", "SettingsTabGraphicsFeaturesOptions": "Fonctionnalités", - "SettingsTabGraphicsBackendMultithreading": "Interface graphique multithread", + "SettingsTabGraphicsBackendMultithreading": "Interface graphique multithread :", "CommonAuto": "Auto", "CommonOff": "Désactivé", "CommonOn": "Activé", @@ -589,7 +590,7 @@ "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é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 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.", + "DRamTooltip": "Change le montant de DRAM qui est alloué.\n\nActivez cette option pour les packs de textures 4k ou les mods à résolution 4k.\nN'améliore pas les performances.\n\nLaissez à 4GiO en cas de doute.", "IgnoreMissingServicesTooltip": "Ignore les services Horizon OS non-intégrés. Cela peut aider à contourner les plantages lors du démarrage de certains jeux.\n\nLaissez désactivé en cas d'incertitude.", "IgnoreAppletTooltip": "La boîte de dialogue externe \"Programme Manette\" n'apparaîtra pas si la manette est déconnectée en jeu. Il n'y aura aucune boîte de dialogue ouverte pour configurer une nouvelle manette. Une fois que la manette précédemment déconnectée est reconnectée, le jeu reprendra automatiquement. \n\nLaissez désactivé 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.", @@ -599,14 +600,14 @@ "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": "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 la performance.", - "StubLogTooltip": "Affiche les messages de journaux dans la console. N'affecte pas la performance.", - "InfoLogTooltip": "Affiche les messages de journaux d'informations dans la console. N'affecte pas la performance.", - "WarnLogTooltip": "Affiche les messages d'avertissement dans la console. N'affecte pas la performancs.", - "ErrorLogTooltip": "Affiche les messages de journaux d'erreur dans la console. N'affecte pas la performance.", - "TraceLogTooltip": "Affiche la trace des messages de journaux dans la console. N'affecte pas la performance.", - "GuestLogTooltip": "Affiche les messages de journaux des invités dans la console. N'affecte pas la performance.", + "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 journaux dans la console. N'affecte pas les performances.", + "InfoLogTooltip": "Affiche les messages de journaux d'informations dans la console. N'affecte pas les performances.", + "WarnLogTooltip": "Affiche les messages d'avertissement dans la console. N'affecte pas les performances.", + "ErrorLogTooltip": "Affiche les messages de journaux d'erreur dans la console. N'affecte pas les performances.", + "TraceLogTooltip": "Affiche la trace des messages de journaux dans la console. N'affecte pas les performances.", + "GuestLogTooltip": "Affiche les messages de journaux des invités dans la console. N'affecte pas les performances.", "FileAccessLogTooltip": "Affiche les messages de journaux 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", @@ -680,7 +681,7 @@ "SoftwareKeyboardModeAlphabet": "Doit être uniquement des caractères non CJK", "SoftwareKeyboardModeASCII": "Doit être uniquement du texte ASCII", "ControllerAppletControllers": "Contrôleurs pris en charge :", - "ControllerAppletPlayers": "Joueurs :", + "ControllerAppletPlayers": "Joueurs :", "ControllerAppletDescription": "Votre configuration actuelle n'est pas valide. Ouvrez les paramètres et reconfigurez vos contrôles.", "ControllerAppletDocked": "Mode station d'accueil défini. Le mode contrôle portable doit être désactivé.", "UpdaterRenaming": "Renommage des anciens fichiers...", @@ -729,7 +730,7 @@ "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:", + "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)", diff --git a/src/Ryujinx/Assets/Locales/he_IL.json b/src/Ryujinx/Assets/Locales/he_IL.json index 1bf6f3154..eb7ccf322 100644 --- a/src/Ryujinx/Assets/Locales/he_IL.json +++ b/src/Ryujinx/Assets/Locales/he_IL.json @@ -97,6 +97,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "בדוק אם קיימים עדכונים בהפעלה", "SettingsTabGeneralShowConfirmExitDialog": "הראה דיאלוג \"אשר יציאה\"", "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "הסתר את הסמן", "SettingsTabGeneralHideCursorNever": "אף פעם", "SettingsTabGeneralHideCursorOnIdle": "במצב סרק", diff --git a/src/Ryujinx/Assets/Locales/it_IT.json b/src/Ryujinx/Assets/Locales/it_IT.json index 07169c3e3..87c8e6bab 100644 --- a/src/Ryujinx/Assets/Locales/it_IT.json +++ b/src/Ryujinx/Assets/Locales/it_IT.json @@ -30,6 +30,9 @@ "MenuBarToolsManageFileTypes": "Gestisci i tipi di file", "MenuBarToolsInstallFileTypes": "Installa i tipi di file", "MenuBarToolsUninstallFileTypes": "Disinstalla i tipi di file", + "MenuBarFileLoadDlcFromFolder": "Carica DLC Da una Cartella", + "MenuBarFileLoadTitleUpdatesFromFolder": "Carica Aggiornamenti Da una Cartella", + "MenuBarFileOpenFromFileError": "Nessuna applicazione trovata nel file selezionato", "MenuBarView": "_View", "MenuBarViewWindow": "Window Size", "MenuBarViewWindow720": "720p", @@ -97,6 +100,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "Controlla aggiornamenti all'avvio", "SettingsTabGeneralShowConfirmExitDialog": "Mostra dialogo \"Conferma Uscita\"", "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "Nascondi il cursore:", "SettingsTabGeneralHideCursorNever": "Mai", "SettingsTabGeneralHideCursorOnIdle": "Quando è inattivo", @@ -110,6 +114,8 @@ "SettingsTabSystemSystemRegionJapan": "Giappone", "SettingsTabSystemSystemRegionUSA": "Stati Uniti d'America", "SettingsTabSystemSystemRegionEurope": "Europa", + "SettingsTabGeneralAutoloadDirectories": "Directory di Caricamento Automatico per DLC/Aggiornamenti", + "SettingsTabGeneralAutoloadNote": "Aggiornamenti e DLC che collegano a file mancanti verranno disabilitati automaticamente", "SettingsTabSystemSystemRegionAustralia": "Australia", "SettingsTabSystemSystemRegionChina": "Cina", "SettingsTabSystemSystemRegionKorea": "Corea", @@ -410,6 +416,7 @@ "GameListContextMenuToggleFavorite": "Preferito", "GameListContextMenuToggleFavoriteToolTip": "Segna il gioco come preferito", "SettingsTabGeneralTheme": "Tema:", + "SettingsTabGeneralThemeAuto": "Auto", "SettingsTabGeneralThemeDark": "Scuro", "SettingsTabGeneralThemeLight": "Chiaro", "ControllerSettingsConfigureGeneral": "Configura", @@ -563,6 +570,7 @@ "CustomThemeCheckTooltip": "Attiva o disattiva temi personalizzati nella GUI", "CustomThemePathTooltip": "Percorso al tema GUI personalizzato", "CustomThemeBrowseTooltip": "Sfoglia per cercare un tema GUI personalizzato", + "RemoveAutoloadDirTooltip": "Rimuovi la directory di autoload selezionata", "DockModeToggleTooltip": "La modalità TV fa sì che il sistema emulato si comporti come una Nintendo Switch posizionata nella sua base. Ciò migliora la qualità grafica nella maggior parte dei giochi. Al contrario, disabilitandola il sistema emulato si comporterà come una Nintendo Switch in modalità portatile, riducendo la qualità grafica.\n\nConfigura i controlli del giocatore 1 se intendi usare la modalità TV; configura i controlli della modalità portatile se intendi usare quest'ultima.\n\nNel dubbio, lascia l'opzione attiva.", "DirectKeyboardTooltip": "Supporto per l'accesso diretto alla tastiera (HID). Fornisce ai giochi l'accesso alla tastiera come dispositivo di inserimento del testo.\n\nFunziona solo con i giochi che supportano nativamente l'utilizzo della tastiera su hardware Switch.\n\nNel dubbio, lascia l'opzione disattivata.", "DirectMouseTooltip": "Supporto per l'accesso diretto al mouse (HID). Fornisce ai giochi l'accesso al mouse come dispositivo di puntamento.\n\nFunziona solo con i rari giochi che supportano nativamente l'utilizzo del mouse su hardware Switch.\n\nQuando questa opzione è attivata, il touchscreen potrebbe non funzionare.\n\nNel dubbio, lascia l'opzione disattivata.", @@ -572,7 +580,9 @@ "TimeTooltip": "Cambia data e ora di sistema", "VSyncToggleTooltip": "Sincronizzazione verticale della console Emulata. Essenzialmente un limitatore di frame per la maggior parte dei giochi; disabilitarlo può far girare giochi a velocità più alta, allungare le schermate di caricamento o farle bloccare.\n\nPuò essere attivata in gioco con un tasto di scelta rapida (F1 per impostazione predefinita). Ti consigliamo di farlo se hai intenzione di disabilitarlo.\n\nLascia ON se non sei sicuro.", "PptcToggleTooltip": "Salva le funzioni JIT tradotte in modo che non debbano essere tradotte tutte le volte che si avvia un determinato gioco.\n\nRiduce i fenomeni di stuttering e velocizza sensibilmente gli avvii successivi del gioco.\n\nNel dubbio, lascia l'opzione attiva.", - "LowPowerPptcToggleTooltip": "Load the PPTC using a third of the amount of cores.", + "AddAutoloadDirBoxTooltip": "Inserisci una directory di \"autoload\" da aggiungere alla lista", + "AddAutoloadDirTooltip": "Aggiungi una directory di \"autoload\" alla lista", + "LowPowerPptcToggleTooltip": "Carica il PPTC usando un terzo dei core.", "FsIntegrityToggleTooltip": "Controlla la presenza di file corrotti quando si avvia un gioco. Se vengono rilevati dei file corrotti, verrà mostrato un errore di hash nel log.\n\nQuesta opzione non influisce sulle prestazioni ed è pensata per facilitare la risoluzione dei problemi.\n\nNel dubbio, lascia l'opzione attiva.", "AudioBackendTooltip": "Cambia il backend usato per riprodurre l'audio.\n\nSDL2 è quello preferito, mentre OpenAL e SoundIO sono usati come ripiego. Dummy non riprodurrà alcun suono.\n\nNel dubbio, imposta l'opzione su SDL2.", "MemoryManagerTooltip": "Cambia il modo in cui la memoria guest è mappata e vi si accede. Influisce notevolmente sulle prestazioni della CPU emulata.\n\nNel dubbio, imposta l'opzione su Host Unchecked.", @@ -617,6 +627,8 @@ "GridSizeTooltip": "Cambia la dimensione dei riquadri della griglia", "SettingsTabSystemSystemLanguageBrazilianPortuguese": "Portoghese brasiliano", "AboutRyujinxContributorsButtonHeader": "Mostra tutti i contributori", + "LoadDlcFromFolderTooltip": "Apri un esploratore file per scegliere una o più cartelle dalle quali caricare DLC in massa", + "LoadTitleUpdatesFromFolderTooltip": "Apri un esploratore file per scegliere una o più cartelle dalle quali caricare aggiornamenti in massa", "SettingsTabSystemAudioVolume": "Volume: ", "AudioVolumeTooltip": "Cambia volume audio", "SettingsTabSystemEnableInternetAccess": "Attiva l'accesso a Internet da parte del guest/Modalità LAN", @@ -656,6 +668,8 @@ "OpenSetupGuideMessage": "Apri la guida all'installazione", "NoUpdate": "Nessun aggiornamento", "TitleUpdateVersionLabel": "Versione {0}", + "TitleBundledUpdateVersionLabel": "Incluso: Version {0}", + "TitleBundledDlcLabel": "Incluso:", "RyujinxInfo": "Ryujinx - Info", "RyujinxConfirm": "Ryujinx - Conferma", "FileDialogAllTypes": "Tutti i tipi", @@ -721,6 +735,14 @@ "Cancel": "Annulla", "Save": "Salva", "Discard": "Scarta", + "UpdateWindowBundledContentNotice": "Gli aggiornamenti inclusi non possono essere eliminati, ma solo disattivati", + "AutoloadDlcAddedMessage": "{0} contenuto/i scaricabile/i aggiunto/i", + "AutoloadDlcRemovedMessage": "{0} contenuto/i scaricabile/i mancante/i rimosso/i", + "AutoloadUpdateAddedMessage": "{0} aggiornamento/i aggiunto/i", + "AutoloadUpdateRemovedMessage": "{0} aggiornamento/i mancante/i rimosso/i", + "DlcWindowBundledContentNotice": "i DLC \"impacchettati\" non possono essere rimossi, ma solo disabilitati.", + "DlcWindowDlcAddedMessage": "{0} nuovo/i contenuto/i scaricabile/i aggiunto/i", + "UpdateWindowUpdateAddedMessage": "{0} aggiornamento/i aggiunto/i", "Paused": "In pausa", "UserProfilesSetProfileImage": "Imposta immagine profilo", "UserProfileEmptyNameError": "Il nome è obbligatorio", @@ -771,6 +793,7 @@ "SmaaLow": "SMAA Basso", "SmaaMedium": "SMAA Medio", "SmaaHigh": "SMAA Alto", + "GraphicsScalingFilterArea": "Area", "SmaaUltra": "SMAA Ultra", "UserEditorTitle": "Modificare L'Utente", "UserEditorTitleCreate": "Crea Un Utente", diff --git a/src/Ryujinx/Assets/Locales/ja_JP.json b/src/Ryujinx/Assets/Locales/ja_JP.json index 907740004..d43dedc2a 100644 --- a/src/Ryujinx/Assets/Locales/ja_JP.json +++ b/src/Ryujinx/Assets/Locales/ja_JP.json @@ -97,6 +97,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "起動時にアップデートを確認する", "SettingsTabGeneralShowConfirmExitDialog": "\"終了を確認\" ダイアログを表示する", "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "マウスカーソルを非表示", "SettingsTabGeneralHideCursorNever": "決して", "SettingsTabGeneralHideCursorOnIdle": "アイドル時", diff --git a/src/Ryujinx/Assets/Locales/ko_KR.json b/src/Ryujinx/Assets/Locales/ko_KR.json index f08c0e5f9..6e5a7f187 100644 --- a/src/Ryujinx/Assets/Locales/ko_KR.json +++ b/src/Ryujinx/Assets/Locales/ko_KR.json @@ -97,6 +97,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "시작 시, 업데이트 확인", "SettingsTabGeneralShowConfirmExitDialog": "\"종료 확인\" 대화 상자 표시", "SettingsTabGeneralRememberWindowState": "창 크기/위치 기억", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "마우스 커서 숨기기", "SettingsTabGeneralHideCursorNever": "절대 안 함", "SettingsTabGeneralHideCursorOnIdle": "유휴 상태", diff --git a/src/Ryujinx/Assets/Locales/pl_PL.json b/src/Ryujinx/Assets/Locales/pl_PL.json index 03df59406..a377979bd 100644 --- a/src/Ryujinx/Assets/Locales/pl_PL.json +++ b/src/Ryujinx/Assets/Locales/pl_PL.json @@ -97,6 +97,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "Sprawdzaj aktualizacje przy uruchomieniu", "SettingsTabGeneralShowConfirmExitDialog": "Pokazuj okno dialogowe \"Potwierdź wyjście\"", "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "Ukryj kursor:", "SettingsTabGeneralHideCursorNever": "Nigdy", "SettingsTabGeneralHideCursorOnIdle": "Gdy bezczynny", diff --git a/src/Ryujinx/Assets/Locales/pt_BR.json b/src/Ryujinx/Assets/Locales/pt_BR.json index 235ad388a..6aeb422ed 100644 --- a/src/Ryujinx/Assets/Locales/pt_BR.json +++ b/src/Ryujinx/Assets/Locales/pt_BR.json @@ -10,7 +10,10 @@ "SettingsTabSystemUseHypervisor": "Usar Hipervisor", "MenuBarFile": "_Arquivo", "MenuBarFileOpenFromFile": "_Abrir ROM do jogo...", + "MenuBarFileOpenFromFileError": "Nenhum aplicativo encontrado no arquivo selecionado.", "MenuBarFileOpenUnpacked": "Abrir jogo _extraído...", + "MenuBarFileLoadDlcFromFolder": "Carregar DLC da Pasta", + "MenuBarFileLoadTitleUpdatesFromFolder": "Carregar Atualizações de Jogo da Pasta", "MenuBarFileOpenEmuFolder": "Abrir diretório do e_mulador...", "MenuBarFileOpenLogsFolder": "Abrir diretório de _logs...", "MenuBarFileExit": "_Sair", @@ -97,11 +100,14 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "Verificar se há atualizações ao iniciar", "SettingsTabGeneralShowConfirmExitDialog": "Exibir diálogo de confirmação ao sair", "SettingsTabGeneralRememberWindowState": "Lembrar tamanho/posição da Janela", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "Esconder o cursor do mouse:", "SettingsTabGeneralHideCursorNever": "Nunca", "SettingsTabGeneralHideCursorOnIdle": "Esconder o cursor quando ocioso", "SettingsTabGeneralHideCursorAlways": "Sempre", "SettingsTabGeneralGameDirectories": "Diretórios de jogo", + "SettingsTabGeneralAutoloadDirectories": "Carregar Automaticamente Diretórios de DLC/Atualizações", + "SettingsTabGeneralAutoloadNote": "DLCs e Atualizações que se referem a arquivos ausentes serão descarregadas automaticamente", "SettingsTabGeneralAdd": "Adicionar", "SettingsTabGeneralRemove": "Remover", "SettingsTabSystem": "Sistema", @@ -411,6 +417,7 @@ "GameListContextMenuToggleFavoriteToolTip": "Marca ou desmarca jogo como favorito", "SettingsTabGeneralTheme": "Tema:", "SettingsTabGeneralThemeDark": "Escuro", + "SettingsTabGeneralThemeAuto": "Automático", "SettingsTabGeneralThemeLight": "Claro", "ControllerSettingsConfigureGeneral": "Configurar", "ControllerSettingsRumble": "Vibração", @@ -453,7 +460,7 @@ "DialogThemeRestartMessage": "O tema foi salvo. Uma reinicialização é necessária para aplicar o tema.", "DialogThemeRestartSubMessage": "Deseja reiniciar?", "DialogFirmwareInstallEmbeddedMessage": "Gostaria de instalar o firmware incluso neste jogo? (Firmware {0})", - "DialogFirmwareInstallEmbeddedSuccessMessage": "No installed firmware was found but Ryujinx was able to install firmware {0} from the provided game.\nThe emulator will now start.", + "DialogFirmwareInstallEmbeddedSuccessMessage": "Nenhum firmware instalado foi encontrado, mas o Ryujinx conseguiu instalar o firmware {0} a partir do jogo fornecido.\nO emulador será iniciado agora.", "DialogFirmwareNoFirmwareInstalledMessage": "Firmware não foi instalado", "DialogFirmwareInstalledMessage": "Firmware {0} foi instalado", "DialogInstallFileTypesSuccessMessage": "Tipos de arquivo instalados com sucesso!", @@ -496,10 +503,10 @@ "DialogUserProfileUnsavedChangesSubMessage": "Deseja descartar as alterações?", "DialogControllerSettingsModifiedConfirmMessage": "As configurações de controle atuais foram atualizadas.", "DialogControllerSettingsModifiedConfirmSubMessage": "Deseja salvar?", - "DialogLoadFileErrorMessage": "{0}. Errored File: {1}", - "DialogModAlreadyExistsMessage": "Mod already exists", - "DialogModInvalidMessage": "The specified directory does not contain a mod!", - "DialogModDeleteNoParentMessage": "Failed to Delete: Could not find the parent directory for mod \"{0}\"!", + "DialogLoadFileErrorMessage": "{0}. Arquivo com erro: {1}", + "DialogModAlreadyExistsMessage": "O mod já existe", + "DialogModInvalidMessage": "O diretório especificado não contém um mod!", + "DialogModDeleteNoParentMessage": "Falha ao excluir: Não foi possível encontrar o diretório pai do mod \"{0}\"!", "DialogDlcNoDlcErrorMessage": "O arquivo especificado não contém DLCs para o título selecionado!", "DialogPerformanceCheckLoggingEnabledMessage": "Os logs de depuração estão ativos, esse recurso é feito para ser usado apenas por desenvolvedores.", "DialogPerformanceCheckLoggingEnabledConfirmMessage": "Para melhor performance, é recomendável desabilitar os logs de depuração. Gostaria de desabilitar os logs de depuração agora?", @@ -510,8 +517,8 @@ "DialogUpdateAddUpdateErrorMessage": "O arquivo especificado não contém atualizações para o título selecionado!", "DialogSettingsBackendThreadingWarningTitle": "Alerta - Threading da API gráfica", "DialogSettingsBackendThreadingWarningMessage": "Ryujinx precisa ser reiniciado após mudar essa opção para que ela tenha efeito. Dependendo da sua plataforma, pode ser preciso desabilitar o multithreading do driver de vídeo quando usar o Ryujinx.", - "DialogModManagerDeletionWarningMessage": "You are about to delete the mod: {0}\n\nAre you sure you want to proceed?", - "DialogModManagerDeletionAllWarningMessage": "You are about to delete all mods for this title.\n\nAre you sure you want to proceed?", + "DialogModManagerDeletionWarningMessage": "Você está prestes a excluir o mod: {0}\n\nTem certeza de que deseja continuar?", + "DialogModManagerDeletionAllWarningMessage": "Você está prestes a excluir todos os mods para este jogo.\n\nTem certeza de que deseja continuar?", "SettingsTabGraphicsFeaturesOptions": "Recursos", "SettingsTabGraphicsBackendMultithreading": "Multithreading da API gráfica:", "CommonAuto": "Automático", @@ -546,7 +553,7 @@ "DlcManagerRemoveAllButton": "Remover todos", "DlcManagerEnableAllButton": "Habilitar todos", "DlcManagerDisableAllButton": "Desabilitar todos", - "ModManagerDeleteAllButton": "Delete All", + "ModManagerDeleteAllButton": "Apagar Tudo", "MenuBarOptionsChangeLanguage": "Mudar idioma", "MenuBarShowFileTypes": "Mostrar tipos de arquivo", "CommonSort": "Ordenar", @@ -560,19 +567,22 @@ "AddGameDirBoxTooltip": "Escreva um diretório de jogo para adicionar à lista", "AddGameDirTooltip": "Adicionar um diretório de jogo à lista", "RemoveGameDirTooltip": "Remover diretório de jogo selecionado", + "AddAutoloadDirBoxTooltip": "Insira um diretório de carregamento automático para adicionar à lista", + "AddAutoloadDirTooltip": "Adicionar um diretório de carregamento automático à lista", + "RemoveAutoloadDirTooltip": "Remover o diretório de carregamento automático selecionado", "CustomThemeCheckTooltip": "Habilita ou desabilita temas customizados na interface gráfica", "CustomThemePathTooltip": "Diretório do tema customizado", "CustomThemeBrowseTooltip": "Navegar até um tema customizado", - "DockModeToggleTooltip": "Habilita ou desabilita modo TV", - "DirectKeyboardTooltip": "Direct keyboard access (HID) support. Provides games access to your keyboard as a text entry device.\n\nOnly works with games that natively support keyboard usage on Switch hardware.\n\nLeave OFF if unsure.", - "DirectMouseTooltip": "Direct mouse access (HID) support. Provides games access to your mouse as a pointing device.\n\nOnly works with games that natively support mouse controls on Switch hardware, which are few and far between.\n\nWhen enabled, touch screen functionality may not work.\n\nLeave OFF if unsure.", + "DockModeToggleTooltip": "O modo TV faz o sistema emulado se comportar como um Nintendo Switch na TV, o que melhora a fidelidade gráfica na maioria dos jogos. Por outro lado, desativar essa opção fará o sistema emulado se comportar como um Nintendo Switch portátil, reduzindo a qualidade gráfica.\n\nConfigure os controles do jogador 1 se planeja usar o modo TV; configure os controles de portátil se planeja usar o modo Portátil.\n\nMantenha ativado se estiver em dúvida.", + "DirectKeyboardTooltip": "Suporte para acesso direto ao teclado (HID). Permite que os jogos acessem seu teclado como um dispositivo de entrada de texto.\n\nFunciona apenas com jogos que suportam o uso de teclado nativamente no hardware do Switch.\n\nDeixe desativado se estiver em dúvida.", + "DirectMouseTooltip": "Suporte para acesso direto ao mouse (HID). Permite que os jogos acessem seu mouse como um dispositivo de apontamento.\n\nFunciona apenas com jogos que suportam controles de mouse nativamente no hardware do Switch, o que é raro.\n\nQuando ativado, a funcionalidade de tela sensível ao toque pode não funcionar.\n\nDeixe desativado se estiver em dúvida.", "RegionTooltip": "Mudar a região do sistema", "LanguageTooltip": "Mudar o idioma do sistema", "TimezoneTooltip": "Mudar o fuso-horário do sistema", "TimeTooltip": "Mudar a hora do sistema", - "VSyncToggleTooltip": "Emulated console's Vertical Sync. Essentially a frame-limiter for the majority of games; disabling it may cause games to run at higher speed or make loading screens take longer or get stuck.\n\nCan be toggled in-game with a hotkey of your preference (F1 by default). We recommend doing this if you plan on disabling it.\n\nLeave ON if unsure.", + "VSyncToggleTooltip": "V-Sync do console emulado. Funciona essencialmente como um limitador de quadros para a maioria dos jogos; desativá-lo pode fazer com que os jogos rodem em uma velocidade mais alta ou que telas de carregamento demorem mais ou travem.\n\nPode ser alternado durante o jogo com uma tecla de atalho de sua preferência (F1 por padrão). Recomendamos isso caso planeje desativá-lo.\n\nMantenha ligado se estiver em dúvida.", "PptcToggleTooltip": "Habilita ou desabilita PPTC", - "LowPowerPptcToggleTooltip": "Load the PPTC using a third of the amount of cores.", + "LowPowerPptcToggleTooltip": "Carregar o PPTC usando um terço da quantidade de núcleos.", "FsIntegrityToggleTooltip": "Habilita ou desabilita verificação de integridade dos arquivos do jogo", "AudioBackendTooltip": "Mudar biblioteca de áudio", "MemoryManagerTooltip": "Muda como a memória do sistema convidado é acessada. Tem um grande impacto na performance da CPU emulada.", @@ -586,10 +596,10 @@ "GraphicsBackendThreadingTooltip": "Habilita multithreading do backend gráfico", "GalThreadingTooltip": "Executa comandos do backend gráfico em uma segunda thread. Permite multithreading em tempo de execução da compilação de shader, diminui os travamentos, e melhora performance em drivers sem suporte embutido a multithreading. Pequena variação na performance máxima em drivers com suporte a multithreading. Ryujinx pode precisar ser reiniciado para desabilitar adequadamente o multithreading embutido do driver, ou você pode precisar fazer isso manualmente para ter a melhor performance.", "ShaderCacheToggleTooltip": "Habilita ou desabilita o cache de shader", - "ResolutionScaleTooltip": "Multiplies the game's rendering resolution.\n\nA few games may not work with this and look pixelated even when the resolution is increased; for those games, you may need to find mods that remove anti-aliasing or that increase their internal rendering resolution. For using the latter, you'll likely want to select Native.\n\nThis option can be changed while a game is running by clicking \"Apply\" below; you can simply move the settings window aside and experiment until you find your preferred look for a game.\n\nKeep in mind 4x is overkill for virtually any setup.", + "ResolutionScaleTooltip": "Multiplica a resolução de renderização do jogo.\n\nAlguns jogos podem não funcionar bem com essa opção e apresentar uma aparência pixelada, mesmo com o aumento da resolução; para esses jogos, talvez seja necessário encontrar mods que removam o anti-aliasing ou aumentem a resolução de renderização interna. Ao usar a segunda opção, provavelmente desejará selecionar Nativa.\n\nEssa opção pode ser alterada enquanto um jogo está em execução, clicando em \"Aplicar\" abaixo; basta mover a janela de configurações para o lado e experimentar até encontrar o visual preferido para o jogo.\n\nLembre-se de que 4x é exagerado para praticamente qualquer configuração.", "ResolutionScaleEntryTooltip": "Escala de resolução de ponto flutuante, como 1.5. Valores não inteiros tem probabilidade maior de causar problemas ou quebras.", - "AnisotropyTooltip": "Level of Anisotropic Filtering. Set to Auto to use the value requested by the game.", - "AspectRatioTooltip": "Aspect Ratio applied to the renderer window.\n\nOnly change this if you're using an aspect ratio mod for your game, otherwise the graphics will be stretched.\n\nLeave on 16:9 if unsure.", + "AnisotropyTooltip": "Nível de Filtragem Anisotrópica. Defina como Automático para usar o valor solicitado pelo jogo.", + "AspectRatioTooltip": "Proporção de Tela aplicada à janela do renderizador.\n\nAltere isso apenas se estiver usando um mod de proporção para o seu jogo; caso contrário, os gráficos ficarão esticados.\n\nMantenha em 16:9 se estiver em dúvida.", "ShaderDumpPathTooltip": "Diretòrio de despejo de shaders", "FileLogTooltip": "Habilita ou desabilita log para um arquivo no disco", "StubLogTooltip": "Habilita ou desabilita exibição de mensagens de stub", @@ -606,6 +616,8 @@ "LoadApplicationFileTooltip": "Abre o navegador de arquivos para seleção de um arquivo do Switch compatível a ser carregado", "LoadApplicationFolderTooltip": "Abre o navegador de pastas para seleção de pasta extraída do Switch compatível a ser carregada", "OpenRyujinxFolderTooltip": "Abre o diretório do sistema de arquivos do Ryujinx", + "LoadTitleUpdatesFromFolderTooltip": "Abra o explorador de arquivos para selecionar uma ou mais pastas e carregar atualizações de jogo em massa.", + "OpenRyujinxFolderTooltip": "Abrir diretório do sistema de arquivos do Ryujinx", "OpenRyujinxLogsTooltip": "Abre o diretório onde os logs são salvos", "ExitTooltip": "Sair do Ryujinx", "OpenSettingsTooltip": "Abrir janela de configurações", @@ -623,8 +635,8 @@ "EnableInternetAccessTooltip": "Habilita acesso à internet do programa convidado. Se habilitado, o aplicativo vai se comportar como se o sistema Switch emulado estivesse conectado a Internet. Note que em alguns casos, aplicativos podem acessar a Internet mesmo com essa opção desabilitada", "GameListContextMenuManageCheatToolTip": "Gerenciar Cheats", "GameListContextMenuManageCheat": "Gerenciar Cheats", - "GameListContextMenuManageModToolTip": "Manage Mods", - "GameListContextMenuManageMod": "Manage Mods", + "GameListContextMenuManageModToolTip": "Gerenciar Mods", + "GameListContextMenuManageMod": "Gerenciar Mods", "ControllerSettingsStickRange": "Intervalo:", "DialogStopEmulationTitle": "Ryujinx - Parar emulação", "DialogStopEmulationMessage": "Tem certeza que deseja parar a emulação?", @@ -655,7 +667,9 @@ "UserErrorUndefinedDescription": "Um erro indefinido occoreu! Isso não deveria acontecer, por favor contate um desenvolvedor!", "OpenSetupGuideMessage": "Abrir o guia de configuração", "NoUpdate": "Sem atualizações", - "TitleUpdateVersionLabel": "Versão {0} - {1}", + "TitleUpdateVersionLabel": "Versão {0}", + "TitleBundledUpdateVersionLabel": "Empacotado: Versão {0}", + "TitleBundledDlcLabel": "Empacotado:", "RyujinxInfo": "Ryujinx - Informação", "RyujinxConfirm": "Ryujinx - Confirmação", "FileDialogAllTypes": "Todos os tipos", @@ -667,7 +681,7 @@ "SoftwareKeyboardModeAlphabet": "Apenas devem ser caracteres não CJK.", "SoftwareKeyboardModeASCII": "Deve ser apenas texto ASCII", "ControllerAppletControllers": "Supported Controllers:", - "ControllerAppletPlayers": "Players:", + "ControllerAppletPlayers": "Jogadores:", "ControllerAppletDescription": "Your current configuration is invalid. Open settings and reconfigure your inputs.", "ControllerAppletDocked": "Docked mode set. Handheld control should be disabled.", "UpdaterRenaming": "Renomeando arquivos antigos...", @@ -711,11 +725,19 @@ "UserProfileWindowTitle": "Gerenciador de perfis de usuário", "CheatWindowTitle": "Gerenciador de Cheats", "DlcWindowTitle": "Gerenciador de DLC", - "ModWindowTitle": "Manage Mods for {0} ({1})", + "ModWindowTitle": "Gerenciar Mods para {0} ({1})", "UpdateWindowTitle": "Gerenciador de atualizações", + "UpdateWindowUpdateAddedMessage": "{0} nova(s) atualização(ões) adicionada(s)", + "UpdateWindowBundledContentNotice": "Atualizações incorporadas não podem ser removidas, apenas desativadas.", "CheatWindowHeading": "Cheats disponíveis para {0} [{1}]", - "BuildId": "ID da Build", + "BuildId": "ID da Build:", + "DlcWindowBundledContentNotice": "DLCs incorporadas não podem ser removidas, apenas desativadas.", "DlcWindowHeading": "{0} DLCs disponíveis para {1} ({2})", + "DlcWindowDlcAddedMessage": "{0} novo(s) conteúdo(s) para download adicionado(s)", + "AutoloadDlcAddedMessage": "{0} novo(s) conteúdo(s) para download adicionado(s)", + "AutoloadDlcRemovedMessage": "{0} conteúdo(s) para download ausente(s) removido(s)", + "AutoloadUpdateAddedMessage": "{0} nova(s) atualização(ões) adicionada(s)", + "AutoloadUpdateRemovedMessage": "{0} atualização(ões) ausente(s) removida(s)", "ModWindowHeading": "{0} Mod(s)", "UserProfilesEditProfile": "Editar selecionado", "Cancel": "Cancelar", @@ -759,15 +781,16 @@ "Recover": "Recuperar", "UserProfilesRecoverHeading": "Jogos salvos foram encontrados para as seguintes contas", "UserProfilesRecoverEmptyList": "Nenhum perfil para recuperar", - "GraphicsAATooltip": "Applies anti-aliasing to the game render.\n\nFXAA will blur most of the image, while SMAA will attempt to find jagged edges and smooth them out.\n\nNot recommended to use in conjunction with the FSR scaling filter.\n\nThis option can be changed while a game is running by clicking \"Apply\" below; you can simply move the settings window aside and experiment until you find your preferred look for a game.\n\nLeave on NONE if unsure.", + "GraphicsAATooltip": "Aplica anti-aliasing à renderização do jogo.\n\nFXAA borrará a maior parte da imagem, enquanto SMAA tentará identificar e suavizar bordas serrilhadas.\n\nNão é recomendado usar em conjunto com o filtro de escala FSR.\n\nEssa opção pode ser alterada enquanto o jogo está em execução clicando em \"Aplicar\" abaixo; basta mover a janela de configurações para o lado e experimentar até encontrar o visual preferido para o jogo.\n\nDeixe em NENHUM se estiver em dúvida.", "GraphicsAALabel": "Anti-serrilhado:", "GraphicsScalingFilterLabel": "Filtro de escala:", - "GraphicsScalingFilterTooltip": "Choose the scaling filter that will be applied when using resolution scale.\n\nBilinear works well for 3D games and is a safe default option.\n\nNearest is recommended for pixel art games.\n\nFSR 1.0 is merely a sharpening filter, not recommended for use with FXAA or SMAA.\n\nThis option can be changed while a game is running by clicking \"Apply\" below; you can simply move the settings window aside and experiment until you find your preferred look for a game.\n\nLeave on BILINEAR if unsure.", + "GraphicsScalingFilterTooltip": "Escolha o filtro de escala que será aplicado ao usar a escala de resolução.\n\nBilinear funciona bem para jogos 3D e é uma opção padrão segura.\n\nNearest é recomendado para jogos em pixel art.\n\nFSR 1.0 é apenas um filtro de nitidez, não recomendado para uso com FXAA ou SMAA.\n\nEssa opção pode ser alterada enquanto o jogo está em execução, clicando em \"Aplicar\" abaixo; basta mover a janela de configurações para o lado e experimentar até encontrar o visual preferido para o jogo.\n\nMantenha em BILINEAR se estiver em dúvida.", "GraphicsScalingFilterBilinear": "Bilinear", "GraphicsScalingFilterNearest": "Nearest", "GraphicsScalingFilterFsr": "FSR", + "GraphicsScalingFilterArea": "Area", "GraphicsScalingFilterLevelLabel": "Nível", - "GraphicsScalingFilterLevelTooltip": "Set FSR 1.0 sharpening level. Higher is sharper.", + "GraphicsScalingFilterLevelTooltip": "Defina o nível de nitidez do FSR 1.0. Quanto maior, mais nítido.", "SmaaLow": "SMAA Baixo", "SmaaMedium": "SMAA Médio", "SmaaHigh": "SMAA Alto", @@ -775,14 +798,14 @@ "UserEditorTitle": "Editar usuário", "UserEditorTitleCreate": "Criar usuário", "SettingsTabNetworkInterface": "Interface de rede:", - "NetworkInterfaceTooltip": "The network interface used for LAN/LDN features.\n\nIn conjunction with a VPN or XLink Kai and a game with LAN support, can be used to spoof a same-network connection over the Internet.\n\nLeave on DEFAULT if unsure.", + "NetworkInterfaceTooltip": "A interface de rede usada para recursos de LAN/LDN.\n\nEm conjunto com uma VPN ou XLink Kai e um jogo com suporte a LAN, pode ser usada para simular uma conexão na mesma rede pela Internet.\n\nMantenha em PADRÃO se estiver em dúvida.", "NetworkInterfaceDefault": "Padrão", "PackagingShaders": "Empacotamento de Shaders", "AboutChangelogButton": "Ver mudanças no GitHub", "AboutChangelogButtonTooltipMessage": "Clique para abrir o relatório de alterações para esta versão no seu navegador padrão.", "SettingsTabNetworkMultiplayer": "Multiplayer", "MultiplayerMode": "Modo:", - "MultiplayerModeTooltip": "Change LDN multiplayer mode.\n\nLdnMitm will modify local wireless/local play functionality in games to function as if it were LAN, allowing for local, same-network connections with other Ryujinx instances and hacked Nintendo Switch consoles that have the ldn_mitm module installed.\n\nMultiplayer requires all players to be on the same game version (i.e. Super Smash Bros. Ultimate v13.0.1 can't connect to v13.0.0).\n\nLeave DISABLED if unsure.", - "MultiplayerModeDisabled": "Disabled", + "MultiplayerModeTooltip": "Alterar o modo multiplayer LDN.\n\nLdnMitm modificará a funcionalidade de jogo sem fio/local nos jogos para funcionar como se fosse LAN, permitindo conexões locais, na mesma rede, com outras instâncias do Ryujinx e consoles Nintendo Switch hackeados que possuem o módulo ldn_mitm instalado.\n\nO multiplayer exige que todos os jogadores estejam na mesma versão do jogo (ex.: Super Smash Bros. Ultimate v13.0.1 não consegue se conectar à v13.0.0).\n\nDeixe DESATIVADO se estiver em dúvida.", + "MultiplayerModeDisabled": "Desativado", "MultiplayerModeLdnMitm": "ldn_mitm" } diff --git a/src/Ryujinx/Assets/Locales/ru_RU.json b/src/Ryujinx/Assets/Locales/ru_RU.json index 8b0235cb8..8b9d39302 100644 --- a/src/Ryujinx/Assets/Locales/ru_RU.json +++ b/src/Ryujinx/Assets/Locales/ru_RU.json @@ -97,6 +97,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "Проверять наличие обновлений при запуске", "SettingsTabGeneralShowConfirmExitDialog": "Подтверждать выход из приложения", "SettingsTabGeneralRememberWindowState": "Запомнить размер/положение окна", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "Скрывать курсор", "SettingsTabGeneralHideCursorNever": "Никогда", "SettingsTabGeneralHideCursorOnIdle": "В простое", diff --git a/src/Ryujinx/Assets/Locales/th_TH.json b/src/Ryujinx/Assets/Locales/th_TH.json index e300d0c35..9e267dc9e 100644 --- a/src/Ryujinx/Assets/Locales/th_TH.json +++ b/src/Ryujinx/Assets/Locales/th_TH.json @@ -100,6 +100,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "ตรวจหาการอัปเดตเมื่อเปิดโปรแกรม", "SettingsTabGeneralShowConfirmExitDialog": "แสดง \"ปุ่มยืนยันการออก\" เมื่อออกเกม", "SettingsTabGeneralRememberWindowState": "จดจำ ขนาดหน้าต่างแอพพลิเคชั่น/คำแหน่ง", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "ซ่อน เคอร์เซอร์:", "SettingsTabGeneralHideCursorNever": "ไม่ต้อง", "SettingsTabGeneralHideCursorOnIdle": "เมื่อไม่ได้ใช้งาน", diff --git a/src/Ryujinx/Assets/Locales/tr_TR.json b/src/Ryujinx/Assets/Locales/tr_TR.json index a31c8df6e..1360a122e 100644 --- a/src/Ryujinx/Assets/Locales/tr_TR.json +++ b/src/Ryujinx/Assets/Locales/tr_TR.json @@ -97,6 +97,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "Her Açılışta Güncellemeleri Denetle", "SettingsTabGeneralShowConfirmExitDialog": "\"Çıkışı Onayla\" Diyaloğunu Göster", "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "İşaretçiyi Gizle:", "SettingsTabGeneralHideCursorNever": "Hiçbir Zaman", "SettingsTabGeneralHideCursorOnIdle": "Hareketsiz Durumda", diff --git a/src/Ryujinx/Assets/Locales/uk_UA.json b/src/Ryujinx/Assets/Locales/uk_UA.json index 5c8d6af5b..2fe5758b5 100644 --- a/src/Ryujinx/Assets/Locales/uk_UA.json +++ b/src/Ryujinx/Assets/Locales/uk_UA.json @@ -97,6 +97,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "Перевіряти наявність оновлень під час запуску", "SettingsTabGeneralShowConfirmExitDialog": "Показати діалогове вікно «Підтвердити вихід».", "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "Сховати вказівник:", "SettingsTabGeneralHideCursorNever": "Ніколи", "SettingsTabGeneralHideCursorOnIdle": "Сховати у режимі очікування", diff --git a/src/Ryujinx/Assets/Locales/zh_CN.json b/src/Ryujinx/Assets/Locales/zh_CN.json index 044da488d..e0fd15922 100644 --- a/src/Ryujinx/Assets/Locales/zh_CN.json +++ b/src/Ryujinx/Assets/Locales/zh_CN.json @@ -100,6 +100,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "启动时检查更新", "SettingsTabGeneralShowConfirmExitDialog": "退出游戏时需要确认", "SettingsTabGeneralRememberWindowState": "记住窗口大小和位置", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "隐藏鼠标指针:", "SettingsTabGeneralHideCursorNever": "从不隐藏", "SettingsTabGeneralHideCursorOnIdle": "自动隐藏", diff --git a/src/Ryujinx/Assets/Locales/zh_TW.json b/src/Ryujinx/Assets/Locales/zh_TW.json index bd1682262..e7cf35e5f 100644 --- a/src/Ryujinx/Assets/Locales/zh_TW.json +++ b/src/Ryujinx/Assets/Locales/zh_TW.json @@ -97,6 +97,7 @@ "SettingsTabGeneralCheckUpdatesOnLaunch": "啟動時檢查更新", "SettingsTabGeneralShowConfirmExitDialog": "顯示「確認結束」對話方塊", "SettingsTabGeneralRememberWindowState": "記住視窗大小/位置", + "SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralHideCursor": "隱藏滑鼠游標:", "SettingsTabGeneralHideCursorNever": "從不", "SettingsTabGeneralHideCursorOnIdle": "閒置時", diff --git a/src/Ryujinx/Common/Locale/LocaleExtension.cs b/src/Ryujinx/Common/Locale/LocaleExtension.cs deleted file mode 100644 index 54441c4cc..000000000 --- a/src/Ryujinx/Common/Locale/LocaleExtension.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Avalonia.Data.Core; -using Avalonia.Markup.Xaml; -using Avalonia.Markup.Xaml.MarkupExtensions; -using Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings; -using System; - -namespace Ryujinx.Ava.Common.Locale -{ - internal class LocaleExtension(LocaleKeys key) : MarkupExtension - { - private ClrPropertyInfo PropertyInfo - => new( - "Item", - _ => LocaleManager.Instance[key], - null, - typeof(string) - ); - - public override object ProvideValue(IServiceProvider serviceProvider) => - new CompiledBindingExtension( - new CompiledBindingPathBuilder() - .Property(PropertyInfo, PropertyInfoAccessorFactory.CreateInpcPropertyAccessor) - .Build() - ) - { Source = LocaleManager.Instance } - .ProvideValue(serviceProvider); - } -} diff --git a/src/Ryujinx/Common/Locale/LocaleManager.cs b/src/Ryujinx/Common/LocaleManager.cs similarity index 100% rename from src/Ryujinx/Common/Locale/LocaleManager.cs rename to src/Ryujinx/Common/LocaleManager.cs diff --git a/src/Ryujinx/Common/Icon/IconExtension.cs b/src/Ryujinx/Common/Markup/BasicMarkupExtension.cs similarity index 56% rename from src/Ryujinx/Common/Icon/IconExtension.cs rename to src/Ryujinx/Common/Markup/BasicMarkupExtension.cs index 41bdf5b02..73b298bc7 100644 --- a/src/Ryujinx/Common/Icon/IconExtension.cs +++ b/src/Ryujinx/Common/Markup/BasicMarkupExtension.cs @@ -1,21 +1,15 @@ -using Avalonia.Data.Core; +using Avalonia.Data.Core; using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml.MarkupExtensions; using Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings; using System; -namespace Ryujinx.Ava.Common.Icon +namespace Ryujinx.Ava.Common.Markup { - internal class IconExtension(string iconString) : MarkupExtension + internal abstract class BasicMarkupExtension : MarkupExtension { - private ClrPropertyInfo PropertyInfo - => new( - "Item", - _ => new Projektanker.Icons.Avalonia.Icon { Value = iconString }, - null, - typeof(Projektanker.Icons.Avalonia.Icon) - ); - + protected abstract ClrPropertyInfo PropertyInfo { get; } + public override object ProvideValue(IServiceProvider serviceProvider) => new CompiledBindingExtension( new CompiledBindingPathBuilder() diff --git a/src/Ryujinx/Common/Markup/MarkupExtensions.cs b/src/Ryujinx/Common/Markup/MarkupExtensions.cs new file mode 100644 index 000000000..af917b973 --- /dev/null +++ b/src/Ryujinx/Common/Markup/MarkupExtensions.cs @@ -0,0 +1,51 @@ +using Avalonia.Data.Core; +using Avalonia.Markup.Xaml; +using Avalonia.Markup.Xaml.MarkupExtensions; +using Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings; +using Projektanker.Icons.Avalonia; +using Ryujinx.Ava.Common.Locale; +using System; + +namespace Ryujinx.Ava.Common.Markup +{ + internal class IconExtension(string iconString) : BasicMarkupExtension + { + protected override ClrPropertyInfo PropertyInfo + => new( + "Item", + _ => new Icon { Value = iconString }, + null, + typeof(Icon) + ); + } + + internal class SpinningIconExtension(string iconString) : BasicMarkupExtension + { + protected override ClrPropertyInfo PropertyInfo + => new( + "Item", + _ => new Icon { Value = iconString, Animation = IconAnimation.Spin }, + null, + typeof(Icon) + ); + } + + internal class LocaleExtension(LocaleKeys key) : MarkupExtension + { + private ClrPropertyInfo PropertyInfo + => new( + "Item", + _ => LocaleManager.Instance[key], + null, + typeof(string) + ); + + public override object ProvideValue(IServiceProvider serviceProvider) => + new CompiledBindingExtension( + new CompiledBindingPathBuilder() + .Property(PropertyInfo, PropertyInfoAccessorFactory.CreateInpcPropertyAccessor) + .Build() + ) { Source = LocaleManager.Instance } + .ProvideValue(serviceProvider); + } +} diff --git a/src/Ryujinx/Program.cs b/src/Ryujinx/Program.cs index 5087d5d82..a6a616c6a 100644 --- a/src/Ryujinx/Program.cs +++ b/src/Ryujinx/Program.cs @@ -14,7 +14,6 @@ using Ryujinx.Common.GraphicsDriver; using Ryujinx.Common.Logging; using Ryujinx.Common.SystemInterop; using Ryujinx.Graphics.Vulkan.MoltenVK; -using Ryujinx.Modules; using Ryujinx.SDL2.Common; using Ryujinx.UI.App.Common; using Ryujinx.UI.Common; @@ -46,8 +45,7 @@ namespace Ryujinx.Ava public static int Main(string[] args) { Version = ReleaseInformation.Version; - - + if (OperatingSystem.IsWindows() && !OperatingSystem.IsWindowsVersionAtLeast(10, 0, 17134)) { _ = MessageBoxA(nint.Zero, "You are running an outdated version of Windows.\n\nRyujinx supports Windows 10 version 1803 and newer.\n", $"Ryujinx {Version}", MbIconwarning); diff --git a/src/Ryujinx/Ryujinx.ico b/src/Ryujinx/Ryujinx.ico index 679ff6e0d..0da5a311f 100644 Binary files a/src/Ryujinx/Ryujinx.ico and b/src/Ryujinx/Ryujinx.ico differ diff --git a/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs b/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs index d5c910629..f09460b1f 100644 --- a/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs +++ b/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs @@ -120,7 +120,7 @@ namespace Ryujinx.Ava.UI.Applet bool okPressed = false; bool error = false; - string inputText = args.InitialText ?? ""; + string inputText = args.InitialText ?? string.Empty; Dispatcher.UIThread.InvokeAsync(async () => { diff --git a/src/Ryujinx/UI/Applet/ControllerAppletDialog.axaml b/src/Ryujinx/UI/Applet/ControllerAppletDialog.axaml index e24a1bb1d..038698f9f 100644 --- a/src/Ryujinx/UI/Applet/ControllerAppletDialog.axaml +++ b/src/Ryujinx/UI/Applet/ControllerAppletDialog.axaml @@ -4,7 +4,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" + xmlns:ext="clr-namespace:Ryujinx.Ava.Common.Markup" xmlns:applet="using:Ryujinx.Ava.UI.Applet" mc:Ignorable="d" Width="400" @@ -25,11 +25,11 @@ Spacing="10" Margin="10"> + Text="{ext:Locale ControllerAppletDescription}" /> + Text="{ext:Locale ControllerAppletDocked}" /> + Text="{ext:Locale ControllerAppletControllers}" /> + Text="{ext:Locale ControllerAppletPlayers}" /> - + diff --git a/src/Ryujinx/UI/Applet/ControllerAppletDialog.axaml.cs b/src/Ryujinx/UI/Applet/ControllerAppletDialog.axaml.cs index de9d10ddd..3a8350893 100644 --- a/src/Ryujinx/UI/Applet/ControllerAppletDialog.axaml.cs +++ b/src/Ryujinx/UI/Applet/ControllerAppletDialog.axaml.cs @@ -26,7 +26,7 @@ namespace Ryujinx.Ava.UI.Applet public static SvgImage JoyconLeftImage => GetResource(JoyConLeftResource); public static SvgImage JoyconRightImage => GetResource(JoyConRightResource); - public string PlayerCount { get; set; } = ""; + public string PlayerCount { get; set; } = string.Empty; public bool SupportsProController { get; set; } public bool SupportsLeftJoycon { get; set; } public bool SupportsRightJoycon { get; set; } diff --git a/src/Ryujinx/UI/Applet/ErrorAppletWindow.axaml b/src/Ryujinx/UI/Applet/ErrorAppletWindow.axaml index 709d833b8..c7aa56fb8 100644 --- a/src/Ryujinx/UI/Applet/ErrorAppletWindow.axaml +++ b/src/Ryujinx/UI/Applet/ErrorAppletWindow.axaml @@ -3,9 +3,9 @@ xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" + xmlns:ext="clr-namespace:Ryujinx.Ava.Common.Markup" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - Title="{locale:Locale ErrorWindowTitle}" + Title="{ext:Locale ErrorWindowTitle}" xmlns:views="using:Ryujinx.Ava.UI.Applet" Width="450" Height="340" diff --git a/src/Ryujinx/UI/Applet/SwkbdAppletDialog.axaml.cs b/src/Ryujinx/UI/Applet/SwkbdAppletDialog.axaml.cs index af3837e43..75a9b3d41 100644 --- a/src/Ryujinx/UI/Applet/SwkbdAppletDialog.axaml.cs +++ b/src/Ryujinx/UI/Applet/SwkbdAppletDialog.axaml.cs @@ -27,13 +27,18 @@ namespace Ryujinx.Ava.UI.Controls { MainText = mainText; SecondaryText = secondaryText; - Message = message ?? ""; + Message = message ?? string.Empty; DataContext = this; _placeholder = placeholder; InitializeComponent(); Input.Watermark = _placeholder; + if (string.IsNullOrWhiteSpace(Input.Watermark)) + { + Input.UseFloatingWatermark = false; + } + Input.AddHandler(TextInputEvent, Message_TextInput, RoutingStrategies.Tunnel, true); } @@ -50,9 +55,9 @@ namespace Ryujinx.Ava.UI.Controls Input.Focus(); } - public string Message { get; set; } = ""; - public string MainText { get; set; } = ""; - public string SecondaryText { get; set; } = ""; + public string Message { get; set; } = string.Empty; + public string MainText { get; set; } = string.Empty; + public string SecondaryText { get; set; } = string.Empty; public static async Task<(UserResult Result, string Input)> ShowInputDialog(string title, SoftwareKeyboardUIArgs args) { @@ -71,7 +76,7 @@ namespace Ryujinx.Ava.UI.Controls contentDialog.Title = title; contentDialog.PrimaryButtonText = args.SubmitText; contentDialog.IsPrimaryButtonEnabled = content._checkLength(content.Message.Length); - contentDialog.SecondaryButtonText = ""; + contentDialog.SecondaryButtonText = string.Empty; contentDialog.CloseButtonText = LocaleManager.Instance[LocaleKeys.InputDialogCancel]; contentDialog.Content = content; @@ -105,13 +110,13 @@ namespace Ryujinx.Ava.UI.Controls Error.IsVisible = false; Error.FontStyle = FontStyle.Italic; - string validationInfoText = ""; + string validationInfoText = string.Empty; if (_inputMin <= 0 && _inputMax == int.MaxValue) // Disable. { Error.IsVisible = false; - _checkLength = length => true; + _checkLength = _ => true; } else if (_inputMin > 0 && _inputMax == int.MaxValue) { diff --git a/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml b/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml index 4a6c99d1d..926af7686 100644 --- a/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml +++ b/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml @@ -2,109 +2,108 @@ x:Class="Ryujinx.Ava.UI.Controls.ApplicationContextMenu" xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:icon="clr-namespace:Ryujinx.Ava.Common.Icon" + xmlns:ext="clr-namespace:Ryujinx.Ava.Common.Markup" xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" x:DataType="viewModels:MainWindowViewModel"> + Header="{ext:Locale GameListContextMenuRunApplication}" + Icon="{ext:Icon fa-solid fa-play}"/> + Header="{ext:Locale GameListContextMenuToggleFavorite}" + Icon="{ext:Icon fa-solid fa-star}" + ToolTip.Tip="{ext:Locale GameListContextMenuToggleFavoriteToolTip}" /> + Icon="{ext:Icon fa-solid fa-bookmark}" + ToolTip.Tip="{OnPlatform Default={ext:Locale GameListContextMenuCreateShortcutToolTip}, macOS={ext:Locale GameListContextMenuCreateShortcutToolTipMacOS}}" /> + ToolTip.Tip="{ext:Locale GameListContextMenuOpenUserSaveDirectoryToolTip}" /> + ToolTip.Tip="{ext:Locale GameListContextMenuOpenDeviceSaveDirectoryToolTip}" /> + ToolTip.Tip="{ext:Locale GameListContextMenuOpenBcatSaveDirectoryToolTip}" /> + Header="{ext:Locale GameListContextMenuManageTitleUpdates}" + Icon="{ext:Icon fa-solid fa-code-compare}" + ToolTip.Tip="{ext:Locale GameListContextMenuManageTitleUpdatesToolTip}" /> + Header="{ext:Locale GameListContextMenuManageDlc}" + Icon="{ext:Icon fa-solid fa-download}" + ToolTip.Tip="{ext:Locale GameListContextMenuManageDlcToolTip}" /> + Header="{ext:Locale GameListContextMenuManageCheat}" + Icon="{ext:Icon fa-solid fa-code}" + ToolTip.Tip="{ext:Locale GameListContextMenuManageCheatToolTip}" /> + Header="{ext:Locale GameListContextMenuManageMod}" + Icon="{ext:Icon mdi-view-module}" + ToolTip.Tip="{ext:Locale GameListContextMenuManageModToolTip}" /> + Header="{ext:Locale GameListContextMenuOpenModsDirectory}" + Icon="{ext:Icon mdi-folder-file}" + ToolTip.Tip="{ext:Locale GameListContextMenuOpenModsDirectoryToolTip}" /> + Header="{ext:Locale GameListContextMenuOpenSdModsDirectory}" + Icon="{ext:Icon mdi-folder-file}" + ToolTip.Tip="{ext:Locale GameListContextMenuOpenSdModsDirectoryToolTip}" /> - + + Header="{ext:Locale GameListContextMenuCacheManagementPurgePptc}" + Icon="{ext:Icon mdi-refresh}" + ToolTip.Tip="{ext:Locale GameListContextMenuCacheManagementPurgePptcToolTip}" /> + Header="{ext:Locale GameListContextMenuCacheManagementPurgeShaderCache}" + Icon="{ext:Icon mdi-delete-alert}" + ToolTip.Tip="{ext:Locale GameListContextMenuCacheManagementPurgeShaderCacheToolTip}" /> + Header="{ext:Locale GameListContextMenuCacheManagementOpenPptcDirectory}" + Icon="{ext:Icon mdi-folder-arrow-up-down}" + ToolTip.Tip="{ext:Locale GameListContextMenuCacheManagementOpenPptcDirectoryToolTip}" /> + Header="{ext:Locale GameListContextMenuCacheManagementOpenShaderCacheDirectory}" + Icon="{ext:Icon mdi-folder-arrow-up-down}" + ToolTip.Tip="{ext:Locale GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip}" /> - + + Header="{ext:Locale GameListContextMenuExtractDataExeFS}" + ToolTip.Tip="{ext:Locale GameListContextMenuExtractDataExeFSToolTip}" /> + Header="{ext:Locale GameListContextMenuExtractDataRomFS}" + ToolTip.Tip="{ext:Locale GameListContextMenuExtractDataRomFSToolTip}" /> + Header="{ext:Locale GameListContextMenuExtractDataLogo}" + ToolTip.Tip="{ext:Locale GameListContextMenuExtractDataLogoToolTip}" /> diff --git a/src/Ryujinx/UI/Controls/ApplicationListView.axaml b/src/Ryujinx/UI/Controls/ApplicationListView.axaml index 6c7a080d1..ea748a3bf 100644 --- a/src/Ryujinx/UI/Controls/ApplicationListView.axaml +++ b/src/Ryujinx/UI/Controls/ApplicationListView.axaml @@ -55,14 +55,7 @@ VerticalAlignment="Stretch" ClipToBounds="True" CornerRadius="5"> - - - - - - - - + await ContentDialogHelper.CreateErrorDialog( + LocaleManager.Instance[LocaleKeys.DialogUserProfileDeletionWarningMessage])); return; - - static async void Action() - { - await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance[LocaleKeys.DialogUserProfileDeletionWarningMessage]); - } } AccountManager.OpenUser(profile.UserId); @@ -170,10 +167,10 @@ namespace Ryujinx.Ava.UI.Controls var result = await ContentDialogHelper.CreateConfirmationDialog( LocaleManager.Instance[LocaleKeys.DialogUserProfileDeletionConfirmMessage], - "", + string.Empty, LocaleManager.Instance[LocaleKeys.InputDialogYes], LocaleManager.Instance[LocaleKeys.InputDialogNo], - ""); + string.Empty); if (result == UserResult.Yes) { diff --git a/src/Ryujinx/UI/Helpers/ContentDialogHelper.cs b/src/Ryujinx/UI/Helpers/ContentDialogHelper.cs index a2c40c5b0..67a3642a9 100644 --- a/src/Ryujinx/UI/Helpers/ContentDialogHelper.cs +++ b/src/Ryujinx/UI/Helpers/ContentDialogHelper.cs @@ -205,7 +205,7 @@ namespace Ryujinx.Ava.UI.Helpers primary, secondaryText, acceptButton, - "", + string.Empty, closeButton, (int)Symbol.Important); @@ -221,7 +221,7 @@ namespace Ryujinx.Ava.UI.Helpers primaryText, secondaryText, acceptButtonText, - "", + string.Empty, cancelButtonText, (int)Symbol.Help, primaryButtonResult); @@ -239,8 +239,8 @@ namespace Ryujinx.Ava.UI.Helpers LocaleManager.Instance[LocaleKeys.DialogUpdaterTitle], primary, secondaryText, - "", - "", + string.Empty, + string.Empty, LocaleManager.Instance[LocaleKeys.InputDialogOk], (int)Symbol.Important); @@ -249,8 +249,8 @@ namespace Ryujinx.Ava.UI.Helpers LocaleManager.Instance[LocaleKeys.DialogWarningTitle], primary, secondaryText, - "", - "", + string.Empty, + string.Empty, LocaleManager.Instance[LocaleKeys.InputDialogOk], (int)Symbol.Important); @@ -263,7 +263,7 @@ namespace Ryujinx.Ava.UI.Helpers LocaleManager.Instance[LocaleKeys.DialogErrorMessage], errorMessage, secondaryErrorMessage, - "", + string.Empty, LocaleManager.Instance[LocaleKeys.InputDialogOk], (int)Symbol.Dismiss); } @@ -282,7 +282,7 @@ namespace Ryujinx.Ava.UI.Helpers primary, secondaryText, LocaleManager.Instance[LocaleKeys.InputDialogYes], - "", + string.Empty, LocaleManager.Instance[LocaleKeys.InputDialogNo], (int)Symbol.Help, UserResult.Yes); diff --git a/src/Ryujinx/UI/Helpers/KeyValueConverter.cs b/src/Ryujinx/UI/Helpers/KeyValueConverter.cs index 5b0d6ee1c..d20098426 100644 --- a/src/Ryujinx/UI/Helpers/KeyValueConverter.cs +++ b/src/Ryujinx/UI/Helpers/KeyValueConverter.cs @@ -122,7 +122,7 @@ namespace Ryujinx.Ava.UI.Helpers public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { - string keyString = ""; + string keyString = string.Empty; LocaleKeys localeKey; switch (value) diff --git a/src/Ryujinx/UI/Helpers/UserErrorDialog.cs b/src/Ryujinx/UI/Helpers/UserErrorDialog.cs index c0b552454..b981a8275 100644 --- a/src/Ryujinx/UI/Helpers/UserErrorDialog.cs +++ b/src/Ryujinx/UI/Helpers/UserErrorDialog.cs @@ -40,7 +40,7 @@ namespace Ryujinx.Ava.UI.Helpers await ContentDialogHelper.CreateInfoDialog( LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogUserErrorDialogMessage, errorCode, GetErrorTitle(error)), GetErrorDescription(error), - "", + string.Empty, LocaleManager.Instance[LocaleKeys.InputDialogOk], LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogUserErrorDialogTitle, errorCode)); } diff --git a/src/Ryujinx/UI/ViewModels/AmiiboWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/AmiiboWindowViewModel.cs index 5ea38b8ab..a852d474c 100644 --- a/src/Ryujinx/UI/ViewModels/AmiiboWindowViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/AmiiboWindowViewModel.cs @@ -320,7 +320,7 @@ namespace Ryujinx.Ava.UI.ViewModels } } - if (LastScannedAmiiboId != "") + if (LastScannedAmiiboId != string.Empty) { SelectLastScannedAmiibo(); } @@ -421,7 +421,7 @@ namespace Ryujinx.Ava.UI.ViewModels usageStringBuilder.Append($"{LocaleManager.Instance[LocaleKeys.Unknown]}."); } - Usage = $"{LocaleManager.Instance[LocaleKeys.Usage]} {(writable ? $" ({LocaleManager.Instance[LocaleKeys.Writable]})" : "")} : {usageStringBuilder}"; + Usage = $"{LocaleManager.Instance[LocaleKeys.Usage]} {(writable ? $" ({LocaleManager.Instance[LocaleKeys.Writable]})" : string.Empty)} : {usageStringBuilder}"; } } @@ -480,7 +480,7 @@ namespace Ryujinx.Ava.UI.ViewModels await ContentDialogHelper.CreateInfoDialog(LocaleManager.Instance[LocaleKeys.DialogAmiiboApiTitle], LocaleManager.Instance[LocaleKeys.DialogAmiiboApiFailFetchMessage], LocaleManager.Instance[LocaleKeys.InputDialogOk], - "", + string.Empty, LocaleManager.Instance[LocaleKeys.RyujinxInfo]); return null; @@ -530,7 +530,7 @@ namespace Ryujinx.Ava.UI.ViewModels await ContentDialogHelper.CreateInfoDialog(LocaleManager.Instance[LocaleKeys.DialogAmiiboApiTitle], LocaleManager.Instance[LocaleKeys.DialogAmiiboApiConnectErrorMessage], LocaleManager.Instance[LocaleKeys.InputDialogOk], - "", + string.Empty, LocaleManager.Instance[LocaleKeys.RyujinxInfo]); } } diff --git a/src/Ryujinx/UI/ViewModels/DownloadableContentManagerViewModel.cs b/src/Ryujinx/UI/ViewModels/DownloadableContentManagerViewModel.cs index 8206d863b..3abaae3ae 100644 --- a/src/Ryujinx/UI/ViewModels/DownloadableContentManagerViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/DownloadableContentManagerViewModel.cs @@ -287,7 +287,14 @@ namespace Ryujinx.Ava.UI.ViewModels var msg = string.Format(LocaleManager.Instance[LocaleKeys.DlcWindowDlcAddedMessage], numAdded); return Dispatcher.UIThread.InvokeAsync(async () => { - await ContentDialogHelper.ShowTextDialog(LocaleManager.Instance[LocaleKeys.DialogConfirmationTitle], msg, "", "", "", LocaleManager.Instance[LocaleKeys.InputDialogOk], (int)Symbol.Checkmark); + await ContentDialogHelper.ShowTextDialog( + LocaleManager.Instance[LocaleKeys.DialogConfirmationTitle], + msg, + string.Empty, + string.Empty, + string.Empty, + LocaleManager.Instance[LocaleKeys.InputDialogOk], + (int)Symbol.Checkmark); }); } } diff --git a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs index 05104cf54..88a24c34d 100644 --- a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs @@ -29,7 +29,6 @@ using Ryujinx.HLE.HOS; using Ryujinx.HLE.HOS.Services.Account.Acc; using Ryujinx.HLE.UI; using Ryujinx.Input.HLE; -using Ryujinx.Modules; using Ryujinx.UI.App.Common; using Ryujinx.UI.Common; using Ryujinx.UI.Common.Configuration; @@ -1092,7 +1091,12 @@ namespace Ryujinx.Ava.UI.ViewModels string message = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogFirmwareInstallerFirmwareInstallSuccessMessage, firmwareVersion.VersionString); - await ContentDialogHelper.CreateInfoDialog(dialogTitle, message, LocaleManager.Instance[LocaleKeys.InputDialogOk], "", LocaleManager.Instance[LocaleKeys.RyujinxInfo]); + await ContentDialogHelper.CreateInfoDialog( + dialogTitle, + message, + LocaleManager.Instance[LocaleKeys.InputDialogOk], + string.Empty, + LocaleManager.Instance[LocaleKeys.RyujinxInfo]); Logger.Info?.Print(LogClass.Application, message); @@ -1163,7 +1167,7 @@ namespace Ryujinx.Ava.UI.ViewModels case LoadState.Loaded: LoadHeading = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.LoadingHeading, _currentApplicationData.Name); IsLoadingIndeterminate = true; - CacheLoadStatus = ""; + CacheLoadStatus = string.Empty; break; } break; @@ -1183,7 +1187,7 @@ namespace Ryujinx.Ava.UI.ViewModels case ShaderCacheLoadingState.Loaded: LoadHeading = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.LoadingHeading, _currentApplicationData.Name); IsLoadingIndeterminate = true; - CacheLoadStatus = ""; + CacheLoadStatus = string.Empty; break; } break; @@ -1303,7 +1307,12 @@ namespace Ryujinx.Ava.UI.ViewModels { await ContentDialogHelper.ShowTextDialog( LocaleManager.Instance[numAdded > 0 || numRemoved > 0 ? LocaleKeys.RyujinxConfirm : LocaleKeys.RyujinxInfo], - msg, "", "", "", LocaleManager.Instance[LocaleKeys.InputDialogOk], (int)Symbol.Checkmark); + msg, + string.Empty, + string.Empty, + string.Empty, + LocaleManager.Instance[LocaleKeys.InputDialogOk], + (int)Symbol.Checkmark); }); } } @@ -1600,7 +1609,7 @@ namespace Ryujinx.Ava.UI.ViewModels LocaleManager.Instance[LocaleKeys.DialogLoadAppGameAlreadyLoadedMessage], LocaleManager.Instance[LocaleKeys.DialogLoadAppGameAlreadyLoadedSubMessage], LocaleManager.Instance[LocaleKeys.InputDialogOk], - "", + string.Empty, LocaleManager.Instance[LocaleKeys.RyujinxInfo]); return; @@ -1817,7 +1826,7 @@ namespace Ryujinx.Ava.UI.ViewModels if (result == UserResult.Yes) { - ConfigurationState.Instance.Graphics.ShadersDumpPath.Value = ""; + ConfigurationState.Instance.Graphics.ShadersDumpPath.Value = string.Empty; SaveConfig(); } diff --git a/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs b/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs index ce024784e..f069896f8 100644 --- a/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs @@ -80,8 +80,8 @@ namespace Ryujinx.Ava.UI.ViewModels { Dispatcher.UIThread.InvokeAsync(() => ContentDialogHelper.CreateInfoDialog(LocaleManager.Instance[LocaleKeys.DialogSettingsBackendThreadingWarningMessage], - "", - "", + string.Empty, + string.Empty, LocaleManager.Instance[LocaleKeys.InputDialogOk], LocaleManager.Instance[LocaleKeys.DialogSettingsBackendThreadingWarningTitle]) ); @@ -146,6 +146,7 @@ namespace Ryujinx.Ava.UI.ViewModels public bool ShowConfirmExit { get; set; } public bool IgnoreApplet { get; set; } public bool RememberWindowState { get; set; } + public bool ShowTitleBar { get; set; } public int HideCursor { get; set; } public bool EnableDockedMode { get; set; } public bool EnableKeyboard { get; set; } @@ -337,7 +338,7 @@ namespace Ryujinx.Ava.UI.ViewModels { _gpuIds.Add(device.Id); - AvailableGpus.Add(new ComboBoxItem { Content = $"{device.Name} {(device.IsDiscrete ? "(dGPU)" : "")}" }); + AvailableGpus.Add(new ComboBoxItem { Content = $"{device.Name} {(device.IsDiscrete ? "(dGPU)" : string.Empty)}" }); }); } } @@ -410,6 +411,7 @@ namespace Ryujinx.Ava.UI.ViewModels ShowConfirmExit = config.ShowConfirmExit; IgnoreApplet = config.IgnoreApplet; RememberWindowState = config.RememberWindowState; + ShowTitleBar = config.ShowTitleBar; HideCursor = (int)config.HideCursor.Value; GameDirectories.Clear(); @@ -507,6 +509,7 @@ namespace Ryujinx.Ava.UI.ViewModels config.ShowConfirmExit.Value = ShowConfirmExit; config.IgnoreApplet.Value = IgnoreApplet; config.RememberWindowState.Value = RememberWindowState; + config.ShowTitleBar.Value = ShowTitleBar; config.HideCursor.Value = (HideCursorMode)HideCursor; if (_gameDirectoryChanged) diff --git a/src/Ryujinx/UI/ViewModels/TitleUpdateViewModel.cs b/src/Ryujinx/UI/ViewModels/TitleUpdateViewModel.cs index 108bbbc61..dacdc3056 100644 --- a/src/Ryujinx/UI/ViewModels/TitleUpdateViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/TitleUpdateViewModel.cs @@ -227,10 +227,16 @@ namespace Ryujinx.Ava.UI.ViewModels private Task ShowNewUpdatesAddedDialog(int numAdded) { var msg = string.Format(LocaleManager.Instance[LocaleKeys.UpdateWindowUpdateAddedMessage], numAdded); - return Dispatcher.UIThread.InvokeAsync(async () => - { - await ContentDialogHelper.ShowTextDialog(LocaleManager.Instance[LocaleKeys.DialogConfirmationTitle], msg, "", "", "", LocaleManager.Instance[LocaleKeys.InputDialogOk], (int)Symbol.Checkmark); - }); + return Dispatcher.UIThread.InvokeAsync(async () => + await ContentDialogHelper.ShowTextDialog( + LocaleManager.Instance[LocaleKeys.DialogConfirmationTitle], + msg, + string.Empty, + string.Empty, + string.Empty, + LocaleManager.Instance[LocaleKeys.InputDialogOk], + (int)Symbol.Checkmark + )); } } } diff --git a/src/Ryujinx/UI/Views/Input/ControllerInputView.axaml b/src/Ryujinx/UI/Views/Input/ControllerInputView.axaml index 08bdf90f4..7daf23eb6 100644 --- a/src/Ryujinx/UI/Views/Input/ControllerInputView.axaml +++ b/src/Ryujinx/UI/Views/Input/ControllerInputView.axaml @@ -1,7 +1,7 @@ + Text="{ext:Locale ControllerSettingsLStick}" /> @@ -139,7 +139,7 @@ Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickButton}" + Text="{ext:Locale ControllerSettingsStickButton}" TextAlignment="Center" /> - + - + - + + Text="{ext:Locale ControllerSettingsStickDeadzone}" /> + Text="{ext:Locale ControllerSettingsStickRange}" /> + Text="{ext:Locale ControllerSettingsDPad}" /> + Text="{ext:Locale ControllerSettingsTriggerThreshold}" /> @@ -363,7 +363,7 @@ Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsLeftSR}" + Text="{ext:Locale ControllerSettingsLeftSR}" TextAlignment="Center" /> - + @@ -476,13 +476,13 @@ MinWidth="0" Grid.Column="0" IsChecked="{Binding Config.EnableRumble, Mode=TwoWay}"> - + @@ -519,7 +519,7 @@ Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsTriggerZR}" + Text="{ext:Locale ControllerSettingsTriggerZR}" TextAlignment="Center" /> + Text="{ext:Locale ControllerSettingsButtons}" /> @@ -590,7 +590,7 @@ Margin="0,0,10,0" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsButtonA}" + Text="{ext:Locale ControllerSettingsButtonA}" TextAlignment="Center" /> + Text="{ext:Locale ControllerSettingsRStick}" /> @@ -675,7 +675,7 @@ Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickButton}" + Text="{ext:Locale ControllerSettingsStickButton}" TextAlignment="Center" /> - + - + - + + Text="{ext:Locale ControllerSettingsStickDeadzone}" /> + Text="{ext:Locale ControllerSettingsStickRange}" /> + Text="{ext:Locale ControllerSettingsPlayer}" /> + Text="{ext:Locale ControllerSettingsProfile}" /> + Text="{ext:Locale ControllerSettingsInputDevice}" /> + Text="{ext:Locale ControllerSettingsControllerType}" /> + Text="{ext:Locale ControllerSettingsLStick}" /> @@ -139,7 +139,7 @@ Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickButton}" + Text="{ext:Locale ControllerSettingsStickButton}" TextAlignment="Center" /> + Text="{ext:Locale ControllerSettingsDPad}" /> + Text="{ext:Locale ControllerSettingsButtons}" /> @@ -504,7 +504,7 @@ Margin="0,0,10,0" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsButtonA}" + Text="{ext:Locale ControllerSettingsButtonA}" TextAlignment="Center" /> + Text="{ext:Locale ControllerSettingsRStick}" /> @@ -590,7 +590,7 @@ Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsStickButton}" + Text="{ext:Locale ControllerSettingsStickButton}" TextAlignment="Center" /> - \ No newline at end of file + diff --git a/src/Ryujinx/UI/Views/Input/MotionInputView.axaml b/src/Ryujinx/UI/Views/Input/MotionInputView.axaml index 0d018e297..9096a06d1 100644 --- a/src/Ryujinx/UI/Views/Input/MotionInputView.axaml +++ b/src/Ryujinx/UI/Views/Input/MotionInputView.axaml @@ -5,7 +5,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls" xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" + xmlns:ext="clr-namespace:Ryujinx.Ava.Common.Markup" xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels.Input" mc:Ignorable="d" x:Class="Ryujinx.Ava.UI.Views.Input.MotionInputView" @@ -23,7 +23,7 @@ + Text="{ext:Locale ControllerSettingsMotionGyroSensitivity}" /> + Text="{ext:Locale ControllerSettingsMotionGyroDeadzone}" /> + Text="{ext:Locale ControllerSettingsMotionUseCemuhookCompatibleMotion}" /> + Text="{ext:Locale ControllerSettingsMotionServerHost}" /> + Text="{ext:Locale ControllerSettingsMotionControllerSlot}" /> + Text="{ext:Locale ControllerSettingsMotionRightJoyConSlot}" /> + Text="{ext:Locale ControllerSettingsMotionMirrorInput}" /> diff --git a/src/Ryujinx/UI/Views/Input/MotionInputView.axaml.cs b/src/Ryujinx/UI/Views/Input/MotionInputView.axaml.cs index 2304364b6..ca4a4e1cf 100644 --- a/src/Ryujinx/UI/Views/Input/MotionInputView.axaml.cs +++ b/src/Ryujinx/UI/Views/Input/MotionInputView.axaml.cs @@ -43,7 +43,7 @@ namespace Ryujinx.Ava.UI.Views.Input { Title = LocaleManager.Instance[LocaleKeys.ControllerMotionTitle], PrimaryButtonText = LocaleManager.Instance[LocaleKeys.ControllerSettingsSave], - SecondaryButtonText = "", + SecondaryButtonText = string.Empty, CloseButtonText = LocaleManager.Instance[LocaleKeys.ControllerSettingsClose], Content = content, }; diff --git a/src/Ryujinx/UI/Views/Input/RumbleInputView.axaml b/src/Ryujinx/UI/Views/Input/RumbleInputView.axaml index 1beb1f06e..5f6cde5b5 100644 --- a/src/Ryujinx/UI/Views/Input/RumbleInputView.axaml +++ b/src/Ryujinx/UI/Views/Input/RumbleInputView.axaml @@ -4,7 +4,7 @@ xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" + xmlns:ext="clr-namespace:Ryujinx.Ava.Common.Markup" xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels.Input" mc:Ignorable="d" x:Class="Ryujinx.Ava.UI.Views.Input.RumbleInputView" @@ -21,7 +21,7 @@ Width="100" TextWrapping="WrapWithOverflow" HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsRumbleStrongMultiplier}" /> + Text="{ext:Locale ControllerSettingsRumbleStrongMultiplier}" /> + Text="{ext:Locale ControllerSettingsRumbleWeakMultiplier}" /> - + - + + ToolTip.Tip="{ext:Locale LoadApplicationFileTooltip}" /> + ToolTip.Tip="{ext:Locale LoadApplicationFolderTooltip}" /> + ToolTip.Tip="{ext:Locale LoadDlcFromFolderTooltip}" /> - + ToolTip.Tip="{ext:Locale LoadTitleUpdatesFromFolderTooltip}" /> + + Icon="{ext:Icon fa-solid fa-person}" + ToolTip.Tip="{ext:Locale MenuBarFileOpenAppletOpenMiiAppletToolTip}" /> + Header="{ext:Locale MenuBarFileOpenEmuFolder}" + ToolTip.Tip="{ext:Locale OpenRyujinxFolderTooltip}" /> + Header="{ext:Locale MenuBarFileOpenLogsFolder}" + ToolTip.Tip="{ext:Locale OpenRyujinxLogsTooltip}" /> + Header="{ext:Locale MenuBarFileExit}" + Icon="{ext:Icon fa-solid fa-xmark}" + ToolTip.Tip="{ext:Locale ExitTooltip}" /> - +