diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..a3b40925 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,84 @@ +name: Build docs + +on: + push: + branches: + - 'mirror/master' + paths: + - 'docs/**' + - '.github/workflows/docs.yml' + pull_request: + paths: + - 'docs/**' + - '.github/workflows/docs.yml' + workflow_dispatch: + inputs: + deploy: + description: 'Deploy to GitHub Pages' + required: false + default: false + type: boolean + +permissions: + contents: write + checks: write + +jobs: + build-docs: + runs-on: ubuntu-latest + + steps: + - name: Print inputs + if: github.event_name == 'workflow_dispatch' + run: | + echo "Inputs: ${{ toJson(inputs) }}" + + - uses: actions/checkout@v4 + + - name: Configure Git Credentials + run: | + git config user.name github-actions[bot] + git config user.email 41898282+github-actions[bot]@users.noreply.github.com + + - uses: actions/setup-python@v5 + with: + python-version: 3.x + cache: 'pip' + + - run: pip install -r requirements.txt + working-directory: docs + + - name: Build Docs and Capture Warnings + id: build_docs + working-directory: docs + run: | + mkdocs build 2>&1 | tee mkdocs-output.log + + - name: Annotate Warnings and Errors + if: always() && steps.build_docs.outcome != 'skipped' + working-directory: docs + run: | + warnings=$(grep -i 'WARNING' mkdocs-output.log || true) + errors=$(grep -i 'ERROR' mkdocs-output.log || true) + + if [ -n "$warnings" ]; then + # Annotate warnings + echo "$warnings" | while read -r warning; do + echo "::warning::${warning}" + done + fi + + if [ -n "$errors" ]; then + # Annotate errors + echo "$errors" | while read -r error; do + echo "::error::${error}" + done + + # Fail the build if any errors were found + exit 1 + fi + + - name: Deploy to GitHub Pages + if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' && github.event.inputs.deploy == 'true' + working-directory: docs + run: mkdocs gh-deploy --force diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000..c554447a --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,6 @@ +# MkDocs build output +/site/ + +# Python virtual env +venv/ +.venv/ diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml new file mode 100644 index 00000000..625e36c8 --- /dev/null +++ b/docs/mkdocs.yml @@ -0,0 +1,65 @@ +site_name: Ryujinx +repo_url: "https://github.com/ryujinx-mirror/ryujinx" + +docs_dir: src + +repo_name: "ryujinx-mirror/ryujinx" +remote_branch: docs +theme: + name: material + logo: assets/icon.svg + favicon: assets/icon.svg + palette: + - media: "(prefers-color-scheme: light)" + scheme: default + primary: custom + toggle: + icon: material/brightness-7 + name: Switch to dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + primary: custom + toggle: + icon: material/brightness-4 + name: Switch to light mode + features: + - navigation.tracking + - navigation.tabs + - navigation.indexes + - navigation.expand + - navigation.sections + - header.autohide + - content.code.copy + - content.code.select + - content.code.annotate +markdown_extensions: + - pymdownx.highlight: + anchor_linenums: true + pygments_lang_class: true + line_spans: __span + - pymdownx.inlinehilite + - pymdownx.superfences + - pymdownx.smartsymbols + - sane_lists +extra_css: + - stylesheets/extra.css +plugins: + - search +nav: + - Home: + - index.md + - Setup: + - setup/index.md + - Firmware Dumping: setup/firmware-dumping/index.md + - Keys: setup/keys.md + - Multiplayer: setup/multiplayer-ldn/index.md + - Development Guide: + - dev-guide/index.md + - Code Style: dev-guide/coding-guidelines/coding-style.md + - PR Guidelines: dev-guide/workflow/pr-guide.md + - Guides: + - dev-guide/guides/index.md + - Mac Metal Frame Capture: dev-guide/guides/metal-frame-capture.md + - Support: + - FAQ / Troubleshooting: faq/faq.md + - Change Log: changelog.md diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 00000000..b6943161 --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,2 @@ +mkdocs-material +mkdocs-redirects diff --git a/docs/src/assets/icon-border.svg b/docs/src/assets/icon-border.svg new file mode 100644 index 00000000..0afd755d --- /dev/null +++ b/docs/src/assets/icon-border.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/src/assets/icon.svg b/docs/src/assets/icon.svg new file mode 100644 index 00000000..d6a76312 --- /dev/null +++ b/docs/src/assets/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/src/changelog-old.md b/docs/src/changelog-old.md new file mode 100644 index 00000000..39722d99 --- /dev/null +++ b/docs/src/changelog-old.md @@ -0,0 +1,4249 @@ +This is the changelog page for versions before 1.1.x (AppVeyor releases) + +## 1.0.7181 - 2022-01-21 +### Fixed: +- Fix deadlock for GPU counter report when 0 draws are done. + - Fixes a rare bug where reporting a counter for a region containing 0 draws could deadlock the GPU, usually showing an error saying "Gpu AwaitResult: Error: Query result timed out. Took more than 5000 tries". + - This uncommon bug affected games such as Mario Kart 8 Deluxe, Splatoon 2 and Super Mario Odyssey when backend multithreading was set to Auto/On. + +## 1.0.7180 - 2022-01-21 +### Fixed: +- Add host CPU memory barriers for DMB/DSB and ordered load/store. + - Fixes softlocks in Pokémon Brilliant Diamond/Shining Pearl and Pokémon Mystery Dungeon DX. + - May fix or reduce softlocks in Pokémon Sword/Shield, Xenoblade Chronicles 2 and Yumenikki -Dream Diary-, possibly other games with similar softlocks. + +## 1.0.7179 - 2022-01-21 +### Changed: +- Stop using glTransformFeedbackVaryings and use explicit layout on the shader. + - Reduces code differences between main build and Vulkan branch. No changes in games. + +## 1.0.7178 - 2022-01-20 +### Added: +- Add capability for BGRA formats. + - Reduces code differences between main build and Vulkan branch. No changes in games. + +## 1.0.7177 - 2022-01-20 +### Added: +- Implement FCVTNS (Scalar GP). + - Allows NBA 2K21 to boot. + +## 1.0.7176 - 2022-01-18 +### Changed: +- Readme overhaul. + - Updates and cleans up the Readme.md file. + +## 1.0.7175 - 2022-01-16 +### Fixed: +- Scale scissor used for clears. + - Fixes a regression introduced in 1.0.7168 that would cause the screen to flicker in some games with resolution scale other than native, like Luigi's Mansion 3 or Tetris 99. + +## 1.0.7174 - 2022-01-16 +### Fixed: +- kernel: Fix deadlock when pinning in interrupt handler. + - Fixes a deadlock on DoDonPachi Resurrection when starting a new game. + - May fix similar deadlocks on other games. + +## 1.0.7173 - 2022-01-16 +### Fixed: +- Fix return type mismatch on 32-bit titles. + - Fixes an assert that was caused by the return type not matching the actual return type of the function, due to the address being 32-bits. + - Only affects debug builds. + +## 1.0.7172 - 2022-01-13 +### Added: +- ssl: Implement SSL connectivity. + - Adds support for SSL connection using .NET APIs for it. + - May improve games that connect to non-Nintendo servers. + +## 1.0.7171 - 2022-01-12 +### Changed: +- bsd: Revamp API and make socket abstract. + - Cleans up the emulator's sockets code. No known changes to emulator functionality. + +## 1.0.7170 - 2022-01-12 +### Fixed: +- sfdnsres: Fix serialization issues. + - Fixes a crash in Monster Hunter Rise when guest Internet access is enabled. + +## 1.0.7169 - 2022-01-12 +### Changed: +- Update to LibHac 0.15.0. + - No changes to emulator functionality. + +## 1.0.7168 - 2022-01-11 +### Fixed: +- Fix render target clear when sizes mismatch. + - Fixes Pathway not entirely clearing the screen. + +## 1.0.7167 - 2022-01-11 +### Fixed: +- Fix adjacent 3d texture slices being detected as Incompatible Overlaps. + - Fixes some regressions introduced in 1.0.7162 which caused 3D texture data to be lost for most slices. + - Fixes colour grading in Xenoblade Chronicles 2, and probably more games. + +## 1.0.7166 - 2022-01-11 +### Changed: +- account: Rework LoadIdTokenCache to auto generate a random JWT token. + +## 1.0.7165 - 2022-01-11 +### Changed: +- sfdnsres: Block communication attempt with NPLN servers. + - Blocks the emulator from communicating with Monster Hunter Rise servers. + +## 1.0.7164 - 2022-01-10 +### Added: +- Implement IMUL, PCNT and CONT shader instructions, fix FFMA32I and HFMA32I. + - Required by MelonDS Switch port and some homebrew applications. (MelonDS still needs more changes to work.) + - Fixes a regression introduced in 1.0.7069. + +## 1.0.7163 - 2022-01-10 +### Fixed: +- Fix sampled multisample texture size. + - Fixes rendering in Okami HD. + +## 1.0.7162 - 2022-01-09 +### Fixed: +- Texture Sync, incompatible overlap handling, data flush improvements. + - Fixes white water and teleportation animation in Breath of the Wild. + - Fixes rainbow lighting in Splatoon 2 after loading screens. + - Fixes many rendering/ texture streaming issues in (mostly) UE3/UE4 games, including A Hat in Time, Brothers: A Tale of Two Sons, Darksiders 3, Hellblade: Senua's Sacrifice, Life is Strange: True Colors, possibly more. + - Fixes texture corruption in The Witcher 3. + - Fixes Mario Kart 8 Deluxe replay thumbnails being from the previous race or black. + +## 1.0.7161 - 2022-01-08 +### Fixed: +- Return error on DNS resolution when guest internet access is disabled. + - Fixes a regression introduced in 1.0.7137 that made Crash Bandicoot 4 crash early on boot after trying to connect to some server. Note that the game will still crash if guest internet access is enabled. + +## 1.0.7160 - 2022-01-08 +### Fixed: +- Add support for render scale to vertex stage. + - Fixes render scale causing offset bloom (ghost images) in Super Mario Party, Mario Party Superstars and Clubhouse Games. + - Fixes grid-like artifacts when increasing the resolution on Hyrule Warriors: Age of Calamity. + +## 1.0.7159 - 2022-01-04 +### Added: +- CPU - Implement FCVTMS (Vector). + - Allows XCOM 2 Collection to boot. + +## 1.0.7158 - 2022-01-03 +### Fixed: +- sfdnsres: Implement NSD resolution. + - Fixes a missing implementation usage of NSD on IResolver when requested on GetAddrInfoRequest* and GetHostByNameRequest*. + +## 1.0.7157 - 2022-01-03 +### Fixed: +- Fix build id case issue for enabled cheats. + - Fixes an issue where cheats wouldn't work if the cheat file name was lowercase. + +## 1.0.7156 - 2022-01-03 +### Added: +- Implement analog stick range modifier. + - Adds range modification to the analog sticks of a given controller. Setting it above 1.00 makes it easier for controllers (especially older ones) to reach max stick values. + +## 1.0.7155 - 2022-01-03 +### Added: +- ffmpeg: Add extra checks and error messages. + - In Linux, these logs will make it more evident that a game is crashing because the necessary ffmpeg packages aren't installed. + +## 1.0.7154 - 2022-01-03 +### Added: +- Add Cheat Manager. + - Adds a cheat manager which makes it possible to disable and enable installed cheats while a game is running. However, it does not allow you to edit or add cheats, and any new cheats added to the cheat file while a game is running, will not work. + - Cheat manager can be accessed by right clicking games on the list or from Actions > Manage Cheats during gameplay. + +## 1.0.7153 - 2022-01-03 +### Added: +- misc - Improve DNS blacklist for Nintendo servers. + - Blacklists more DNS addresses for Nintendo’s servers. + +## 1.0.7152 - 2021-12-31 +### Fixed: +- Force crop when presentation cached texture size mismatches. + - Fixes rendering being shifted up slightly in Hades. + - Fixes NSO Nintendo 64 game selection being shifted up. (The NSO games still require more changes to run.) + - Fixes similar issue in Super Mario Sunshine. + +## 1.0.7151 - 2021-12-30 +### Fixed: +- Add support for the R4G4 texture format. + - Fixes black HUD elements in the Nintendo 64 NSO version of Ocarina of Time. (The NSO games still require more changes to run.) + +## 1.0.7150 - 2021-12-30 +### Fixed: +- Fix A1B5G5R5 texture format. + - Fixes graphical glitches in the Nintendo 64 NSO version of Ocarina of Time. May fix similar glitches in other N64 emulated titles. (The NSO games still require more changes to run.) + +## 1.0.7149 - 2021-12-30 +### Changed: +- friend: Stub IsFriendListCacheAvailable and EnsureFriendListAvailable. + - Super Bomberman R Online will no longer crash on boot, however it will still get stuck on the loading screen due to other issues. + +## 1.0.7148 - 2021-12-30 +### Changed: +- am: Stub SetMediaPlaybackStateForApplication. + - Required by the YouTube app. + +## 1.0.7147 - 2021-12-30 +### Added: +- kernel: Implement thread pinning support. + - Adds support for 8.x thread pinning changes and implements SynchronizePreemptionState syscall. + - May fix some softlocks. + +## 1.0.7146 - 2021-12-29 +### Fixed: +- Improve SocketOption handling. + - Fixes some warnings caused by missing options. + +## 1.0.7145 - 2021-12-29 +### Changed: +- hid: A little cleanup. + - Small code cleanup. No changes expected in emulator functionality. + +## 1.0.7144 - 2021-12-28 +### Fixed: +- Flip scissor box when the YNegate bit is set. + - Fixes in-game UI in Bloons TD 5. + - Fixes menus being cut off in the YouTube app. + - May fix similar issues in games using OpenGL on the Switch. + +## 1.0.7143 - 2021-12-28 +### Fixed: +- Fix GetHostByNameRequestWithOptions and GetHostByAddrRequestWithOptions. + - Allows the Twitch app to boot further, but it still doesn't work as it requires unimplemented SSL functions. + +## 1.0.7142 - 2021-12-27 +### Fixed: +- Use minimum stream sample count on SDL2 audio backend. + - Fixes "New audio stream setup with a sample count of ..." log spam followed by massive slowdown in some games, such as Final Fantasy VII, when using the SDL2 audio backend. + +## 1.0.7141 - 2021-12-27 +### Fixed: +- Fix wrong title language. + - Fixes a regression introduced in 1.0.7131 that caused game titles to display in the wrong language (for example, Korean being displayed when British English was selected). + +## 1.0.7140 - 2021-12-26 +### Fixed: +- Fix DMA copy fast path line size when xCount < stride. + - Fixes some random crashes in the Youtube app. + - Possibly fixes some other games that do DMA copy with linear source textures. + +## 1.0.7139 - 2021-12-26 +### Fixed: +- Fix missing default value of audio volume. + - Volume level default is now set to 100% instead of 0. + +## 1.0.7138 - 2021-12-26 +### Fixed: +- Fix I2M texture copies when line length is not a multiple of 4. + - Fixes some texture corruption on games using OpenGL on the Switch, such as subtitle text in Cat Girl Without Salad. + - Fixes a similar issue in the YouTube app. + +## 1.0.7137 - 2021-12-26 +### Fixed: +- Fix GetAddrInfoWithOptions and some sockets issues. + - A new "Enable guest Internet access" option has been added. When enabled, applications might try to access their servers. (This does NOT include Nintendo Switch Online servers.) + - Allows the YouTube app to run. Requires "Enable guest Internet access". + - Might improve games with network related issues. + +## 1.0.7136 - 2021-12-26 +### Fixed: +- Fix bug causing an audio buffer to be enqueued more than once. + - Fixes audio in the YouTube app. Potentially fixes games with broken audio. + +## 1.0.7135 - 2021-12-23 +### Changed: +- Revert "sdl2: Update to Ryujinx.SDL2-CS 2.0.19" (1.0.7132). + - Reverted as it was causing crashes on latest Windows 10 build for some people. + +## 1.0.7134 - 2021-12-23 +### Changed: +- Remove PortRemoteClosed warning. + - Removes the warning as the result is not really an error, but a normal result that is returned under normal operation, when a service session is closed. + +## 1.0.7133 - 2021-12-23 +### Changed: +- misc: Update SPB to 0.0.4-build17. + - Update to a new SPB version targeting .NET 6. + +## 1.0.7132 - 2021-12-23 +### Fixed: +- sdl2: Update to Ryujinx.SDL2-CS 2.0.19. + - Fixes G-Shark gamepad. + - Fixes broken motion controls on Linux. + +## 1.0.7131 - 2021-12-23 +### Fixed: +- Update to LibHac v0.14.3. + - Support reading NCAs with sparse partitions. Fixes NSPs with FS entry offsets outside of the total NCA length being unable to boot. + - Allow deleting read-only files and directories in LocalFileSystem. Fixes +Ryujinx saves getting corrupted if backed up using Google Drive. + - Disable AesXtsFileSystem. Fixes +LibHac failing to decrypt some games on launch with AES-XTS keys error, such as Alien: Isolation or Pokkén Tournament DX Demo. + - The IFileSystem interface has been updated for system version 12.0.0. Now it uses the Fs.Path type for paths instead of a Span. + - LibHac now uses SharedRef and UniqueRef types which are similar to the std::shared_ptr and std::unique_ptr types used in Horizon. These help ensure resources are properly closed. FS IPC interfaces were updated to use these types. + - Fix loading NCAs that don't have a data partition. + - Ruined King: A League of Legends Story now goes in game. + - Hextech Mayhem: A League of Legends Story now goes in game. + - Fire Emblem: Shadow Dragon and the Blade of Light now goes in game + - Lost in Random now goes in game. + - Last Stop now goes in game. + +## 1.0.7130 - 2021-12-23 +### Added: +- Add Volume Controls + Mute Toggle (F2). + - Adds volume controls to the Settings > System page, as well as a volume indicator in the bottom bar. + - Clicking the volume indicator in the bottom bar or pressing F2 toggles mute. + +## 1.0.7129 - 2021-12-19 +### Fixed: +- Fix for texture pool not being updated when it should + buffer texture fixes. + - Fixes black vertex explosions on Dragon Quest XI S and possibly other UE4 games. + - Fixes vertex explosions in Minecraft: Bedrock Edition. + - Fixes black/flickering textures in SnowRunner, Balan Wonderworld Demo, SpongeBob SquarePants: Battle for Bikini Bottom, Ender Lilies and Yoshi's Crafted World (costume menu). + - Improves rendering slightly in GTA San Andreas (Trilogy). + +## 1.0.7128 - 2021-12-19 +### Fixed: +- Add support for releasing a semaphore to DmaClass. + - Fixes freezes in games that use OpenGL on the Switch (primarily GameMaker ones), such as Undertale, Idol Days, Yokai Watch 1, and Record of Lodoss War: Deedlit in Wonder Labyrinth. + +## 1.0.7127 - 2021-12-19 +### Added: +- Implement CSDB instruction. + - Allows Monster Rancher 1 & 2 DX to go in-game. + +## 1.0.7126 - 2021-12-19 +### Changed: +- Use more intense lossless compression. + - Compresses project images as much as possible while retaining the original quality. + +## 1.0.7125 - 2021-12-15 +### Changed: +- Remove debug configuration and schema. + +## 1.0.7124 - 2021-12-14 +### Changed: +- Remove unused empty Ryujinx.Audio.Backends project. + +## 1.0.7123 - 2021-12-12 +### Changed: +- misc: Sync Config.json default debug config. + +## 1.0.7122 - 2021-12-08 +### Fixed: +- Fix SUATOM and other texture shader instructions with RZ dest. + - No known changes in games. + +## 1.0.7121 - 2021-12-08 +### Changed: +- Remove usage of Mono.Posix.NETStandard accross all projects. + - Saves ~1.5MB on releases and removes an external C library. + +## 1.0.7120 - 2021-12-08 +### Fixed: +- Move texture anisotropy check to SetInfo. + - Improves performance in certain games (mainly UE4) when anisotropic filtering is not set to Auto, such as Shin Megami Tensei V. + +## 1.0.7119 - 2021-12-08 +### Added: +- Implement remaining shader double-precision instructions. + - Implements remaining double instructions: DMNMX, DSET and DSETP. + - Implements remaining double-precision operations on MUFU instruction: RCP64H and RSQ64H. + - Fix immediate operands on all double-precision instruction. + - World War Z uses the DSET/DSETP instruction, however it still crashes upon entering gameplay. No other known changes in games. + +## 1.0.7118 - 2021-12-08 +### Fixed: +- misc: Fix alsoft.ini being present on Linux releases. + - Removes alsoft.ini from future Linux releases, as it's only required in Windows (see changelog for 1.0.6783). + +## 1.0.7117 - 2021-12-08 +### Added: +- Implement UHADD8 instruction. + - Allows No More Heroes and No More Heroes 2: Desperate Struggle to boot. + +## 1.0.7116 - 2021-12-05 +### Fixed: +- Fix FLO.SH shader instruction with a input of 0. + - No known changes in games. + +## 1.0.7115 - 2021-12-04 +### Fixed: +- kernel: Improve GetInfo readability and update to 13.0.0. + +## 1.0.7114 - 2021-12-04 +### Changed: +- misc: Migrate usage of RuntimeInformation to OperatingSystem. + +## 1.0.7113 - 2021-11-30 +### Fixed: +- Fix Amiibo hanging since .NET 6 changes. + - Fixes a regression introduced in 1.0.7111 where scanning an Amiibo would cause the emulator to lock up. + +## 1.0.7112 - 2021-11-29 +### Fixed: +- Don't blow up everything if a DLC file is moved or renamed. + - Fixes DLC manager crashing the emulator when DLC files have been moved or renamed, removing the need to delete a DLC.json file when this happens. + +## 1.0.7111 - 2021-11-28 +### Added: +- infra: Migrate to .NET 6. + - Migrates projects and CI to .NET 6. + - May slightly improve performance in some games. + +## 1.0.7110 - 2021-11-28 +### Fixed: +- kernel: Fix sleep timing accuracy. + - Fixes softlocks and slow timer in Hyrule Warriors: Definitive Edition. + - Greatly improves loading in Breath of the Wild 1.0.0. + - Slightly improves performance in some games. + +## 1.0.7109 - 2021-11-28 +### Added: +- kernel: Add support for CFI. + - No known changes in games. + +## 1.0.7108 - 2021-11-24 +### Added: +- account/ns: Implement 13.0.0+ service calls. + - Animal Crossing: New Horizons 2.0.0 (and newer) no longer crashes on boot. + - Dying Light no longer crashes on boot. + +## 1.0.7107 - 2021-11-21 +### Fixed: +- Better depth range detection. + - Improves rendering in Bastion. + +## 1.0.7106 - 2021-11-15 +### Fixed: +- Nickname! - Init Amiibos with Profile's name! + - Amiibo now use the name of the current user profile when the name of the owner is requested, instead of "No Name". + +## 1.0.7105 - 2021-11-14 +### Fixed: +- Fix shader integer from/to double conversion. + - Fixes the Invalid reinterpret cast from "F32" to "F64" exception that would happen on any shader using I2F or F2I instructions to convert between double and integer types. + - Allows World War Z to boot into menus (the game is still not playable). + +## 1.0.7104 - 2021-11-13 +### Fixed: +- Limit Custom Anisotropic Filtering to only fully mipmapped textures. + - Fixes graphical bugs caused by non-Auto Anisotropic Filtering, affecting games such as Astral Chain or Shin Megami Tensei V. + - Allows changing Anisotropic Filtering while a game is running. + +## 1.0.7103 - 2021-11-10 +### Added: +- Implement DrawTexture functionality. + - Steel Assault now renders. + - Final Fantasy VII now goes in-game. + - Charge Kid rendering improved slightly. + +## 1.0.7102 - 2021-11-10 +### Fixed: +- Fix direct mouse access checkbox label. + - Corrects the tooltip for direct mouse access. + +## 1.0.7101 - 2021-11-08 +### Added: +- Support shader gl_Color, gl_SecondaryColor and gl_TexCoord built-ins. + - Fixes black screens on games using OpenGL on the Switch, such as rRootage Reloaded and Dragon Quest III. + +## 1.0.7100 - 2021-11-08 +### Fixed: +- Fix bindless/global memory elimination with inverted predicates. + - Fixes lighting issues on Disaster Report 4, and possibly other games. + +## 1.0.7099 - 2021-11-08 +### Fixed: +- Fix InvocationInfo on geometry shader and bindless default integer const. + - Fixes a regression introduced in 1.0.7078. Worm Jazz is no longer missing graphics. + - Fixes some shader compilation errors. + - On AMD and Intel GPUs, fixes some UE4 games that showed a black screen due to a regression that broke geometry shaders. + +## 1.0.7098 - 2021-11-04 +### Fixed: +- Ensure syncpoints are released and event handles closed on channel close. + - Fixes "Cannot allocate a new syncpoint!" error. + - Fixes games that crashed with an "Out of handles!" exception, such as Legend of Mana. + +## 1.0.7097 - 2021-11-03 +### Fixed: +- Clamp number of mipmap levels to avoid API errors due to invalid textures. + - Fixes character mods rendering black textures (such as the one for Mario Party Superstars). No known changes on commercial games. + +## 1.0.7096 - 2021-11-01 +### Fixed: +- hle: Make Ryujinx.HLE project entirely safe. + - Followup of the changes in 1.0.7089. + +## 1.0.7095 - 2021-11-01 +### Fixed: +- When waiting on CPU, do not return a time out error from EventWait. + - Fixes timeouts introduced in 1.0.7082. + - Fixes crashes on Tokyo Mirage Sessions #FE Encore. + +## 1.0.7094 - 2021-10-29 +### Changed: +- ci: Disable macOS x64 build on Appveyor. + - Reduces Appveyor build time significantly. + - The platform will still be built on Github Actions. + +## 1.0.7093 - 2021-10-28 +### Added: +- Add support for fragment shader interlock. + - Fixes flickering lights in Super Mario Party and Mario Party Superstars. + +## 1.0.7092 - 2021-10-28 +### Added: +- Add support for the brazilian portuguese language code. + - Brazilian Portuguese can now be selected in the "System Language" dropdown. + +## 1.0.7091 - 2021-10-24 +### Fixed: +- Kernel: Fix inverted condition on permission check of SetMemoryPermission syscall. + +## 1.0.7090 - 2021-10-24 +### Fixed: +- Preserve image types for shader bindless surface instructions (.D variants). + - Make format unknown for surface atomic if bindless and not sized. + +## 1.0.7089 - 2021-10-24 +### Fixed: +- HLE: Improve safety. + - Makes timezone implementation safe. Improves various parts of the code that were previously unsafe. + - Add an util function that handles reading an ASCII string in a safe way. + +## 1.0.7088 - 2021-10-24 +### Fixed: +- Kernel: Clear pages allocated with SetHeapSize. Previously, all new pages allocated by SetHeapSize were not cleared by the kernel, which could cause weird memory corruption. + - Add support for custom fill heap and ipc value. + +## 1.0.7087 - 2021-10-24 +### Fixed: +- Fixup channel submit IOCTL syncpoint parameters. + - Fixes the parameters that are passed to the "submit" function. + - No changes expected on games. + +## 1.0.7086 - 2021-10-24 +### Fixed: +- misc: Fix IVirtualMemoryManager.Fill ignoring value. This is required for future kernel fixes. + - No changes to emulator functionality. + +## 1.0.7085 - 2021-10-23 +### Added: +- Kernel: Add resource limit related syscalls. + - Fix register mapping being wrong for SetResourceLimitLimitValue. + - Used only by homebrew and system apps. + +## 1.0.7084 - 2021-10-23 +### Added: +- Kernel: Implement SetMemoryPermission syscall. + - Fix KMemoryPermission not being an unsigned 32 bits type and +add the "DontCare" bit (used by shared memory, currently unused in +Ryujinx). + - Used only by homebrew and system apps. + +## 1.0.7083 - 2021-10-23 +### Added: +- Kernel: Add missing address space check in SetMemoryAttribute syscall. + +## 1.0.7082 - 2021-10-19 +### Fixed: +- Fix race when EventWait is called and a wait is done on the CPU. + - Fixes the "Invalid Event at index X" error being printed in some games. + - Fixes a crash in Marvel Ultimate Alliance 3, New Pokémon Snap (on boot), Persona 5 Scramble when loading the first level, and some games that crashed while playing videos. + +## 1.0.7081 - 2021-10-18 +### Fixed: +- Fix shader 8-bit and 16-bit STS/STG. + - Fixes broken interior lighting in The Witcher 3. + +## 1.0.7080 - 2021-10-18 +### Added: +- Add workaround for Nvidia driver 496.13 shader bug. + - Fixes flipped upside-down games and a large variety of rendering errors caused by the new drivers. + +## 1.0.7079 - 2021-10-18 +### Added: +- Add an early 'TailMerge' pass. + - No changes expected on games. + +## 1.0.7078 - 2021-10-18 +### Fixed: +- Add initial tessellation shader support. + - Fixes sand not rendering in Luigi's Mansion 3. + +## 1.0.7077 - 2021-10-17 +### Fixed: +- Add missing U8/S8 types from shader I2I instruction. + - Fixes a regression introduced in 1.0.7069 where in some cases an exception would be thrown when emitting code for a shader. + +## 1.0.7076 - 2021-10-17 +### Fixed: +- Extend bindless elimination to work with masked and shifted handles. + - Combined with the change in 1.0.7073, makes Hades render almost correctly. + - Improves rendering in The Witcher 3. + +## 1.0.7075 - 2021-10-17 +### Added: +- Implement SHF (funnel shift) shader instruction. + - Improves rendering on Cotton/Guardian Saturn Tribute games, and potentially other games. + +## 1.0.7074 - 2021-10-13 +### Fixed: +- Fixes a regression introduced on version 1.0.7067 that caused some games using the foreground software keyboard applet and the Mii editor to crash. + +## 1.0.7073 - 2021-10-12 +### Fixed: +- Fixes an issue of Vulkan (from the guest) draw methods by forcing the state to be dirty when the indexed draw registers are written to. + - Only affects games using the Vulkan API as other APIs do not use those registers. + +## 1.0.7072 - 2021-10-12 +### Fixed: +- Enqueue frame before signalling the frame is ready. + - Fixes performance lowering after some loading transitions in Link's Awakening and Xenoblade DE. + +## 1.0.7071 - 2021-10-12 +### Changed: +- Don't force scaling on 2D copy sources since it only needs to scale if the texture already exists and was scaled by rendering or something else. + - This will also avoid the destination being scaled if the source wasn't. The copy can handle mismatching scales just fine. + - This prevents scaling artifacts in GMS games, and maybe others (not Super Mario Maker 2, that has another issue). + +## 1.0.7070 - 2021-10-12 +### Added: +- Added Vp8 codec support. + - Fixes videos in Diablo II, TY The Tasmanian Tiger and probably more games. + +## 1.0.7069 - 2021-10-12 +### Changed: +- Rewrite shader decoding stage. + - Changes the way how shader instructions are decoded by using a separate struct per instruction variant. This may be a bit wasteful, but we beleive it's the best way to avoid some errors, and also to avoid special handling on the instruction implementation. + - Now all the shader instructions are on the table (not all of them are actually implemented, of course), this should facilitate future work when we need to actually implement those instructions. + - Fixes inexistent fields in one of the double instructions. + - Fixes SAT using the FTZ bit in one of the half instruction. + - Fixes wrong bit in TLD.B AOFFI. + - Fixes some rendering in Jump Force and probably other games. + +## 1.0.7068 - 2021-10-12 +### Added: +- Implemented GetConfig of spl service. + - Fixes startup crash in some homebrews. + +## 1.0.7067 - 2021-10-12 +### Changed: +- Implemented the inline software keyboard without input pop up dialog in the GUI since a way to display the text is already provided by the games. + - Supports non-ASCII text, selection, copy and paste, overwrite mode, toggling input (on and off so keyboard players can input text correctly), the new Calc format used by newer games. + - Fixes some software keyboard issues in Monster Hunter games and more. + +## 1.0.7066 - 2021-10-08 +### Changed: +- Optimize the JIT linear scan register allocator. + - The speed of PPTC compilation is greatly improved, in some cases taking half of the time compared to the previous version. + - First run or runs with PPTC disabled have also been improved, now taking less time to reach the peak performance. + +## 1.0.7065 - 2021-10-07 +### Fixed: +- Implement the VIC X8B8G8R8 output pixel format. + - Fixes missing videos (black screen) on Metroid Dread title screen, menus, new ability guides, area change loading screens and more. + +## 1.0.7064 - 2021-10-07 +### Fixed: +- Reregister flush actions when taking a buffer's modified range list. + - Fixes a regression introduced in 1.0.7061, where buffer flush would not happen for data written before buffers were joined. + +## 1.0.7063 - 2021-10-05 +### Changed: +- Enable branch tightening when PPTC is enabled. + - Slightly better JIT code generation with PPTC enabled. + - PPTC cache size was reduced by a few KB as a result. + +## 1.0.7062 - 2021-10-05 +### Fixed: +- Fixes wrong name size on DisplayInfo structure. + - Fixes a regression introduced on version 1.0.7041 that caused Dragon Ball Xenoverse 2, and maybe other games to crash on boot. + +## 1.0.7061 - 2021-10-04 +### Changed: +- Reduces cost for range list creation and inheritance. + - Fixes potential performance regression introduced on version 1.0.7044. + +## 1.0.7060 - 2021-10-04 +### Fixed: +- Allow textures to be used without having a sampler pool set. + - Improves rendering on Cotton Guardian Force Saturn Tribute. + +## 1.0.7059 - 2021-10-04 +### Fixed: +- Fixes a bug introduced on version 1.0.7052 that could cause a memory leak and eventually a crash playing H264 videos. + +## 1.0.7058 - 2021-09-28 +### Added: +- Added the ability to signal a write as "precise" on the tracking, which signals a special handler (if present) which can be used to avoid unnecessary flush actions, or maybe even more. For buffers, precise writes specifically do not flush, and instead punch a hole in the modified range list to indicate that the data on GPU has been replaced. + - Fixed regressions from a previous change (in Mario + Rabbids Kingdom Battle, Rune Factory 4 and more). + +## 1.0.7057 - 2021-09-28 +### Fixed: +- Force copy when auto-deleting a texture with dependencies. + - Fixes broken lighting caused by pausing in SMO's Metro Kingdom. May fix some other infrequent issues. + +## 1.0.7056 - 2021-09-28 +### Fixed: +- Only make render target 2D textures layered if needed. + - Fixed The Legend of Heroes: Zero no Kiseki which is now playable. + +## 1.0.7055 - 2021-09-28 +### Added: +- Added a set of optimizations to the HybridAllocator which increases the throughput of LCQ and usually shaves a couple of seconds from boot time. + +## 1.0.7054 - 2021-09-28 +### Fixed: +- Use normal memory store path for DC ZVA as an optimized way to clear memory in homebrew applications. + +## 1.0.7053 - 2021-09-28 +### Added: +- Implemented/Stubbed some clkrst service calls which are needed by some homebrew. + +## 1.0.7052 - 2021-09-28 +### Fixed: +- Use separate contexts per channel and decode frames in DTS order. + - Decoding multiple videos at once no longer causes image corruption. + - As a result of the hack removal, H264 video playback should be smoother now, without duplicate frames (please note that the game may still decide to duplicate frames or not present anything if the decoding is too slow, YMMV). + - Some minor issues like a few games flashing a green frame when the video starts have also been fixed. + - Add missing field_pic_order_in_frame_present_flag flag to the stream PPS. Fixes decoding errors on Layton's Mystery Journey, but the video is still not rendered properly due to VIC Issues. + - Add new Trim method on NVDEC's SurfaceCache to allow cached frames to be freed. It is called every time a context is destroyed. Cache access now uses a lock to make it thread safe, as Trim may be called from outside the NVDEC thread. + - Fixed some videos in Hatsune Miku: Project DIVA Mega Mix and No More Heroes 3. + +## 1.0.7051 - 2021-09-28 +### Fixed: +- Fixed PTC count table relocation patching introduced in a previous change where by 2 different count table entry addresses were used for LCQ functions. + +## 1.0.7050 - 2021-09-28 +### Added: +- Stubbed some irs service calls which are needed to get some games playable or bootable. + - Night Vision and Spy Alarm are now bootable (but still unplayable due to the lack of the IR data). + +## 1.0.7049 - 2021-09-28 +### Fixed: +- Fixed an issue where scales might not be properly updated on games that uses compute. + - Fixed resolution scale issues on Ni no Kuni 2. + +## 1.0.7048 - 2021-09-28 +### Fixed: +- Updated the game compatibility infos in README file. + +## 1.0.7047 - 2021-09-19 +### Added: +- Adds a method to PhysicalMemory that attempts to write all cached resources directly, so that memory tracking can be avoided. The goal of this is both to avoid flushing buffer data, and to avoid raising the sequence number when data is written, which causes buffer and texture handles to be re-checked. + - Improves performance on Xenoblade 2 and DE, which were flushing buffer data on the GPU thread when trying to write compute data. + - May improve performance in other games that write SSBOs from compute, and update data in the same/nearby pages often. + +## 1.0.7046 - 2021-09-19 +### Added: +- Implements an augmented interval tree based off of the existing TreeDictionary and uses it for the MultiRangeList. This greatly speeds up texture overlap checks, as they can't use the non-overlapping fast path that buffers and tracking handles can use. Like the tree dictionary, it is based on a red-black tree and is self balancing. + - Speed up texture/view creation and notifying textures that they have been unmapped, which might reduce stuttering in unreal engine games. + +## 1.0.7045 - 2021-09-19 +### Added: +- Uses new subgroup extension (that AFAIK were introduced for SPIR-V) if the old ARB_shader_ballot extension is not supported. This is required for Vulkan. Additionally, this benefits Intel on OpenGL as they don't support the ARB_shader_ballot extension on the proprietary driver for some reason, but does support the new extensions. + - Astral Chain and probably some other games works on Intel OpenGL now. + +## 1.0.7044 - 2021-09-19 +### Added: +- Changes the RangeList to cache the Address and EndAddress within the list itself rather than accessing them from the object's properties. + - Greatly improves performance in Super Mario Odyssey (~1.25x), Xenoblade (required some WIP code for now) and most other GPU limited games. + - Improvement will generally depend on how many buffers the game binds and how many draws it does. + +## 1.0.7043 - 2021-09-19 +### Fixed: +- Set texture/image bindings in place rather than allocating and passing an array. + +## 1.0.7042 - 2021-09-19 +### Fixed: +- Amadeus: Fixes regression from 1.7040 on ListAudioDeviceName. + +## 1.0.7041 - 2021-09-19 +### Fixed: +- Unified values and accurated implementation of resolutions in vi service. + - am calls GetDefaultDisplayResolution / GetDefaultDisplayResolutionChangeEvent have more informations on what the service does. + - vi:u/vi:m/vi:s GetDisplayService are now accurate. + - IApplicationDisplay GetRelayService, GetSystemDisplayService, GetManagerDisplayService, GetIndirectDisplayTransactionService, ListDisplays, OpenDisplay, OpenDefaultDisplay, CloseDisplay, GetDisplayResolution are now properly implemented. + - Some other calls are cleaned or have extra checks accordingly to RE. +- Additionnaly, IFriendService have some wrong aligned things, and `pm:info` service placeholder was missing. + +## 1.0.7040 - 2021-09-19 +### Added: +- Amadeus: Implements all the changes made with REV10 (audio service) on 13.0.0. + +## 1.0.7039 - 2021-09-18 +### Fixed: +- Pause/Resume entry in Action menu now is properly disabled after switching to fullscreen mode. +- An issue with the Pause changes was fixed that caused Ryujinx to not be properly close. + +## 1.0.7038 - 2021-09-15 +### Fixed: +- Fixes a regression introduced in 1.0.7034, when you try to extract data from games dump. + +## 1.0.7037 - 2021-09-14 +### Fixed: +- FPS monitor now shows instantaneous FPS rather than any form of weighted average. +- Frametime has been added as a metric with a 2 decimal place precision factor. +- All performance metrics now update every 750ms rather than 1000ms. + +## 1.0.7036 - 2021-09-14 +### Fixed: +- Add Linux Unicorn (for Tests) patch and description. + +## 1.0.7035 - 2021-09-14 +### Fixed: +- HOS project cleanup. + +## 1.0.7034 - 2021-09-14 +### Fixed: +- Replace FileChooserDialog with FileChooserNative. + - Fixes a crash when you add a drive as folder. + +## 1.0.7033 - 2021-09-13 +### Fixed: +- Refactor PtcInfo. + - Reduces the coupling of PtcInfo and the backend by moving relocation tracking to the backend. RelocEntrys remains as RelocEntrys through out the pipeline until it actually needs to be written to the PTC streams. Keeping this representation makes inspecting and manipulating relocations after compilations less painful. + +## 1.0.7032 - 2021-09-11 +### Fixed: +- Account for negative strides on DMA copy. + - Math.Abs is used on the stride to calculate the size, to ensure it is positive. + - If stride is negative, the base offset is adjusted to the real start offset of the copy. +- Changed the flush call on InlineToMemory to use the GPU memory manager rather than the physical one, to account for non-contiguous memory. + - Idol Days no longer crashes when trying to open the log or load/save the game, although it does have other issues there that don't seem to be caused by this change. + +## 1.0.7031 - 2021-09-11 +### Added: +- Implements GetVaRegions in nv service. + - Fixes a crash on Quake which can progress further, now it crashes due to Sockets issues. + +## 1.0.7030 - 2021-09-11 +### Fixed: +- Fixes ICommonStateGetter GetDefaultDisplayResolution returned resolution while using Docked Mode. + - Fixes Tsukihime -A piece of blue glass moon- rendering and probably some other games. + +## 1.0.7029 - 2021-09-11 +### Added: +- Added "Pause Emulation" option which could be found at menu "Actions > Pause Emulation" or using F5 hotkey. + +## 1.0.7028 - 2021-09-11 +### Fixed: +- Lift textures in the AutoDeleteCache for all modifications. + - Fixes lighting breaking when switching levels in Tony Hawk Pro Skater 1+2 and potentially some more UE4 games. + +## 1.0.7027 - 2021-09-11 +### Fixed: +- Fixes single quote key incorrectly mapped in our GTK3 code. + +## 1.0.7026 - 2021-09-11 +### Fixed: +- Fixes time played staying at 0 second when "Stop Emulation" is pressed. + +## 1.0.7025 - 2021-09-11 +### Fixed: +- Remove error dialog when files encountered weren't of a valid type. + +## 1.0.7024 - 2021-09-02 +### Fixed: +- Fixes shaders using the TXQ instruction failing to compile if more than 2 dimensions are being read. + - Fixes some (but not all) lighting issues on Tony Hawk's Pro Skater 1 + 2, and other UE4 games. + +## 1.0.7023 - 2021-08-31 +### Added: +- Implements support for the shader image atomic instructions. + - Fixes object interaction not animating on Yoshi Crafted World in some levels. + - Fixes missing lighting on several UE4 games, such as Bravely Default 2, Tony Hawk's Pro Skater 1 + 2, No More Heroes 3, Densha de Go!! and more. + - Fixes missing facial animations on several UE4 games, such as Bravely Default 2 and Trials of Mana. + +## 1.0.7022 - 2021-08-30 +### Fixed: +- Fixes shader shuffle up instruction, when the source thread ID is out of range. + - Fixes vertex explosions on Marvel Ultimate Alliance 3. + +## 1.0.7021 - 2021-08-29 +### Fixed: +- Improves handling of multi-draw with indirect count on HLE macros, for cases where the start draw is non-zero. + - No visible changes expected, as no game is known to hit this case so far. + +## 1.0.7020 - 2021-08-29 +### Fixed: +- Fixes a bug that would cause textures that do not overlap, but is assumed to overlap because gaps on the memory region where the data is located is not taken into account, to be removed from the cache, causing data loss. + - Fixes "white screen" issue on several Unreal Engine 4 games, including Yoshi Crafted World, Disaster Report 4, No More Heroes 3, JUMP FORCE Deluxe Edition and more. + - Some instances of glowing objects were also fixed. + - Note that this does not fix all texture issues with those games, but they are greatly improved now. + +## 1.0.7019 - 2021-08-29 +### Fixed: +- Fixes a case where threads would not wait until the GPU written data is flushed if more than one thread was trying to access it at the same time. + - Fixes a regression introduced on version 1.0.7016 that caused Catherine Full Body to crash randomly with guest memory corruption. + +## 1.0.7018 - 2021-08-27 +### Changed: +- Avoid redundant texture scale updates. + - Minor performance improvements on some games, most notably Xenoblade Chronicles: Definitive Edition. + +## 1.0.7017 - 2021-08-26 +### Added: +- Added support for attribute indexing, required by Donkey Kong Country Tropical Freeze, and a few other games. + - This improves the rendering on some Donkey Kong Country Tropical Freeze levels. + +## 1.0.7016 - 2021-08-26 +### Added: +- The Graphic Abstraction Layer is now multithreaded. + - Allows more finer controls over vendor drivers. + - Allows to disable NVIDIA threaded optimization and remove stuttering related to it. + - Allows multithreaded shader compilation at runtime and reduce stuttering when multiple shaders can be build at the same time. + - This can be enabled or disabled via an option in the settings called "Backend Threading". The default option is "Auto", which always means on right now, but could change for some vendors or backends. + - Consult the [pull request](https://github.com/ryujinx-mirror/ryujinx/pull/2501) for more details. + +## 1.0.7015 - 2021-08-26 +### Added: +- Implement MSR instruction for A32. + - Pocket Rumble is now playable. + +## 1.0.7014 - 2021-08-26 +### Added: +- Added support for HLE macros allowing to improve macro efficiency. + - For now, the only HLE macro function implemented is MultiDrawElementsIndirectCount, used by Monster Hunter Rise. + +## 1.0.7013 - 2021-08-26 +### Fixed: +- Remove missing unicorn files included in the Tests project. + - Fixes build warning. + +## 1.0.7012 - 2021-08-26 +### Fixed: +- Updates to the 0.13.3 bugfix release of LibHac and removes the workaround introduced in PR #2576. + - Fixes regression: SD card saves will now be placed in /Nintendo/save instead of /save/Nintendo. + +## 1.0.7011 - 2021-08-26 +### Changed: +- Added fallbacks for all Audio backends. + - SDL2 is now the default audio backend, then OpenAL, then SoundIO. + +## 1.0.7010 - 2021-08-26 +### Fixed: +- Swap BGR565 components by changing the format. + - Fixes regression on some homebrew using a BGR565 framebuffer that stopped rendering. + +## 1.0.7009 - 2021-08-26 +### Fixed: +- Update to Ryujinx.SDL2-CS 2.0.17 (Fix runtime issues on Gentoo) + +## 1.0.7008 - 2021-08-20 +### Fixed: +- Adds a workaround for a Libhac issue where an exception is thrown when trying to delete an inexistent folder recursively. + +## 1.0.7007 - 2021-08-20 +### Fixed: +- Fixes spelling on some UI dialogs. + +## 1.0.7006 - 2021-08-20 +### Fixed: +- Allows swapping R and B components on BGR565 and BGRA5551 texture formats. + - Fixes swapped red/blue issue on Pokkén Tournament DX. + - Fixes swapped red/blue issue on Super Smash Bros Ultimate, on the stages with large monitor screens, such as Pokémon Stadium and the Boxing Ring. + +## 1.0.7005 - 2021-08-20 +### Fixed: +- Changes disabled vertex attribute value to (0, 0, 0, 1). + - Fixes a regression in Super Mario Odyssey that caused some plants in the Wooded Kingdom to render black. + +## 1.0.7004 - 2021-08-20 +### Changed: +- Removes overlapping textures from the texture cache, if the overlapping texture is not view compatible with the existing one, and its data has been modified. + - Greatly reduces memory usage in Xenoblade Chronicles: Definitive Edition and Xenoblade Chronicles 2, in areas with high usage (like Gormott). + - Fixes crashes and performance issues caused by the system running out of memory. + +## 1.0.7003 - 2021-08-20 +### Fixed: +- Fixes errors from reading the SD card when encryption keys have changed. + - This caused an error when launching Super Smash Bros. Ultimate with an old SD card save directory. + +## 1.0.7002 - 2021-08-20 +### Fixed: +- Fixes wrong base level calculation when copying data to slices of 3D textures. + - Fixes 3D texture data not being properly updated in some rare cases. + - The bug was observed on Super Mario Odyssey. Other games using 3D textures might be affected too. + +## 1.0.7001 - 2021-08-20 +### Fixed: +- Fixes an assert that was happening on debug builds since version 1.0.7000, due to an optimization creating a constant operand with the wrong type. + - Should not have any visible effect on games as the bug did not cause wrong code generation. + +## 1.0.7000 - 2021-08-17 +### Changed: +- Optimizes JIT memory allocations by using an arena allocator, along with other optimizations. + - Greatly improves PPTC compilation speeds, reducing the total duration by around 20%-60% depending on the game. + - Lowers memory usage when rebuilding PPTC. + - Reduces stutters and time taken to reach peak performance with PPTC disabled and on the first run (before PPTC is built). + - Fixes a bug that could cause incorrect code to be generated in some rare cases, where a shift value was overwritten with an incorrect value. + +## 1.0.6999 - 2021-08-17 +### Fixed: +- Fixes a crash that could happen when mounting save data if the keys or SD seed changed. + +## 1.0.6998 - 2021-08-17 +### Fixed: +- Allows transform feedback data to be flushed when accessed from CPU. + - Fixes some vertex explosions on SNK Heroines: Tag Team Frenzy. + +## 1.0.6997 - 2021-08-12 +### Changed: +- Updates the LibHac dependency to version 0.13.1. This improves the accuracy of the emulator file system implementation, and solve some file system and save related issues on games. See below for a more detailed list of changes. + - Refactor `FsSrv` to match the official refactoring done in FS. + - Change how the `Horizon` and `HorizonClient` classes are handled. Each client created represents a different process with its own process ID and client state. + - Add FS access control to handle permissions for FS service method calls. + - Add FS program registry to keep track of the program ID, location and permissions of each process. + - Add FS program index map info manager to track the program IDs and indexes of multi-application programs. + - Add all FS IPC interfaces. + - Rewrite `Fs.Fsa` code to be more accurate. + - Rewrite a lot of `FsSrv` code to be more accurate. + - Extend directory save data to store `SaveDataExtraData` + - Extend directory save data to lock the save directory to allow only one accessor at a time. + - Improve waiting and retrying when encountering access issues in `LocalFileSystem` and `DirectorySaveDataFileSystem`. + - More `IFileSystemProxy` methods should work now. + - Probably a bunch more stuff. + +## 1.0.6996 - 2021-08-12 +### Changed +- Improves error message when the prod.keys file is present, but the keys are outdated. + - Now the "Ryujinx was unable to parse the provided firmware. This is usually caused by outdated keys." message is presented if the keys are outdated when installing a new firmware. + +## 1.0.6995 - 2021-08-12 +### Fixed +- Fixes a regression that could cause the same compute shader to be compiled over and over again when shader cache was enabled, causing a large performance drop in some games. + - Fixes performance regression in Hyrule Warriors: Ages of Calamity, and probably other games that uses compute shaders. + +## 1.0.6994 - 2021-08-11 +### Fixed +- Reverts changes from version 1.0.6987. + - Fixes regression on The Legend of Zelda: Breath of the Wild (flickering trees) and Monster Hunter Stories 2: Wings of Ruin (invisible huts), probably more. + +## 1.0.6993 - 2021-08-11 +### Fixed +- Initialize render scales to 1 on the OpenGL backend. + - Fixes a regression introduced on 1.0.6989 where some games would have a solid colour instead of the correct texture due to the scale value being 0. + +## 1.0.6992 - 2021-08-11 +### Fixed +- Unify GpuAccessorBase and TextureDescriptorCapableGpuAccessor. + - Fixes regression introduced in 1.0.6990 that was causing shader TDR. + +## 1.0.6991 - 2021-08-11 +### Fixed +- Workaround for cubemap view data upload bug on Intel. + - Fixes eyes rendering of Hatsune Miku. + +## 1.0.6990 - 2021-08-11 +### Fixed +- Fixes another bug on Intel where gl_FrontFacing returns incorrect values (it seems to be flipped?), the solution here is casting the bool to float and then bitcasting to integer and checking if its non-zero. + - Fixes rendering of mario mustache on Super Mario Odyssey on Intel (affects both Vulkan and OpenGL). +- Added 2 new functions to the IGpuAccessor interface, used to check if the host has the vector indexing bug (present on AMD) and the front facing bug (present on Intel). +- LDC now uses vector indexing of the form data[offset >> 2][offset & 3] on NVIDIA and Intel, which produces better codegen (and makes shaders easier to read). +- Functions that just returns a host capability on GpuAcessor and CachedGpuAccessor were moved to a common base class to avoid duplication and bugs. In fact, one of them (the one to check the texture shadow LOD capability) was missing from the CachedGpuAccessor, which likely means those shaders were broken on shader cache rebuild on the vendors/drivers that does not support the extension (as the default interface implementation returns true). Now this is fixed. + +## 1.0.6989 - 2021-08-11 +### Changed +- Use "Undesired" scale mode for certain textures rather than blacklisting. + - Games that reuse depth stencil between a lot of unrelated draws to textures of different sizes will no longer blacklist from scaling forever. (Bayonetta 2) + - Textures that are detected as being atlas-like or dof-like will not be locked out of scaling forever - if a depth stencil target is bound when drawing, they can gain res scale. This might result in more 3D UI elements seeing resolution scale. (Xenoblade DE menus, though they're still heavily antialiased) + - Some other games that randomly blacklist to 1x, or don't scale at all may now work. + - The approach for blur/dof texture detection has been updated to take into account width alignment, as it can greatly alter the aspect ratio. This fixes small textures failing to detect, which would have cascaded across mipmap texture views and forced textures to scale. + - Render target scale is now only sent to the backend when its value has changed, rather than each time the scales are evaluated. + - Scissor and Viewport are only recalculated when the value changes too. + +## 1.0.6988 - 2021-08-11 +### Fixed +- Make sure attributes used on subsequent shader stages are initialized. + - Fixes Shadows not working on Zelda Link's awakening (Intel and AMD). + - Fixes Hatsune Miku eyes being black (Intel and AMD). + - Fixes Shader failing to compile on Yo-kai Watch 4 (all vendors, no visible effect though?). + - Probably more... + +## 1.0.6987 - 2021-08-11 +### Changed +- Improving the speed of vertex buffer updates in some specific cases, where the vertex buffer size is very large. This calculates the vertex buffer size from the max index on the index buffer when the game provided size is too large (above a given threshold), and when the index buffer is small enough. + - This improves the speed of Super Mario Galaxy, however it appears that this game had a performance regression after range tracking, so the speed seems mostly back to what it was before that. The menu transition however is faster than what it was even before range tracking. + +## 1.0.6986 - 2021-08-11 +### Fixed +- Do not dirty memory tracking region handles if they are partially unmapped. + - Fixes crash when loading a save on Dragon Quest XI S. + +## 1.0.6985 - 2021-08-11 +### Changed +- Replace BGRA and scale uniforms with a uniform block (required for Vulkan). + +## 1.0.6984 - 2021-08-11 +### Changed +- Improves ServiceNotImplementedException by removing the need to pass in whether the command is a Tipc command or a Hipc command to the exception constructor. + +## 1.0.6983 - 2021-08-11 +### Added +- Use a new approach for shader BRX targets: + - Fixes several graphical glitches on Hatsune Miku Project DIVA MEGA 39's. + - Fixes Bowwow being a white glowing ball on Zelda's Link Awakening. + - Fixes reflection bug on Cadence of Hyrule. + - And more... + +## 1.0.6982 - 2021-08-04 +### Added +- Implement (non-HD) vibrations support: + - Implement vibration calls of hid service accurately to reverse engineering. + - You can enable/disable rumble in the controller settings window. + - HD rumble values are converted to non-HD vibration values, you can choose the multipliers for rumble in the controller settings window. +- Tested working controller are DualSense (PS5), Xbox One, Xbox 360, ProController but working on probably more controllers. Users reports rumble doesn't work on real JoyCons, this will be fixed later if confirmed. + +## 1.0.6981 - 2021-08-04 +### Fixed: +- Fixes a regression introduced in #2411: + - Alt key no longer focuses the menu bar. That functionality wasn't really relevant to the original intent of #2411, and the main purpose of the PR remains usable. Focus on Alt is something will might fix later. + - This reworks the entire flow of how the "Show UI" hotkey works. Note that it is specifically a "Show UI" hotkey, and hiding the UI still has to be done via the Actions menu, as we don't want users to trigger it by accident: + - The key is now configurable. + - The key now defaults to F4. Several annoyances was found with Alt, as it's part of the language-switching combination and also getting in the way of taking a (regular, non-Ryujinx) screenshot. Something that's not commonly used made more sense. Of course, due to the previous point above, users are welcome to switch it back to Alt if they are so inclined. + - Fixing a problem with the implementation of the KeyboardHotkeyState enum which would cause it to break were we to add any more hotkeys. + +## 1.0.6980 - 2021-08-04 +### Fixes: +- XInput devices provides axis data with square ranges (ie +-32767). Moving the sticks to diagonal ends means that it will have the max range values for both axes. This causes fast motion of player characters in games that do not clamp their input. + - This fixes it by clamping the input to a circle. Fixes The Legend of Zelda: Skyward Sword HD when Link sprinting without using up stamina when the controller sticks are at diagonals. + +## 1.0.6979 - 2021-08-04 +### Fixes: +- Makes more copies respect non-contiguous GPU virtual memory regions, instead of assuming it is contiguous. After this, the main thing missing will be support for non-contiguous buffers, which will be more complicated, and will be done on a separate PR. +- This also fixes a bug that noticed on I2M, where the copy would be incorrect for block linear textures, if destination X was not a multiple of 16. This was fixed by aligning the start of the vector copy, which should start and end of a multiple of 16. We are not aware of any games that uses it with a X value that is not a multiple of 16 though (it is usually 0), so maybe nothing was affected by this bug. + +## 1.0.6978 - 2021-08-04 +### Added: +- Improving reporting for cheats and updating the cheat instructions to match Atmosphere's implementation. Those are: + - A warning is now issued when the cheat tries to write to code region instead of requiring log analysis in debug mode. + - The cheat names are now printed in the log for better error detection and support. + - Implemented new addressing modes Alias and Aslr. + - Implemented else instruction for conditionals. +- Also, with "PPTC with ExeFS Patching" merged, it is now safe to enable cheats to write to code regions (with the aforementioned warning). This is a preparation for the upcoming full support, but does not mean that all cheats will work (some of them may start working). + +## 1.0.6977 - 2021-08-04 +### Fixed: +- Fixes some audio related issues that caused the emulator to hang or crash at exit, by making audio backend disposal thread safe. + - Fixes deadlock (causing the emulator to not respond) at exit with the OpenAL backend. + - Fixes crash at exit with the SDL2 backend due to a double free. + - Fixes a crash at exit (only when the emulator window was closed) caused by a NRE on window disposal. + +## 1.0.6976 - 2021-07-24 +### Added: +- Implement an option to hide status and menu bar + - The option can be found in the Actions menu. You can press alt to make them appears again. + +## 1.0.6975 - 2021-07-24 +### Fixed +- Fixes a bug where the right JoyCon is not retrieved from Cemuhook and that the right JoyCon motion shared memory is cleared after update. + - This should allow right JoyCon to work in The Legend of Zelda: Skyward Sword HD. + +## 1.0.6974 - 2021-07-19 +### Changed: +- Further optimizes texture and buffer flush, by reducing the amount of data copies required. + - Texture layout conversion methods can now write to guest memory directly, in some cases. + - Methods to get data from GPU now returns the span of the range if a persistent buffer is being used, instead of allocating and doing a copy. + - Improves the performance on The Legend of Zelda: Skyward Sword, Pokémon Sword/Shield, and likely other games that does texture flushes every frame. + +## 1.0.6973 - 2021-07-18 +### Changed: +- Fixes a performance regression introduced on version 1.0.6970, by switching to the old flush method on affected drivers. + - Only Linux AMD drivers and the Intel Windows and Linux drivers are affected, NVIDIA is not affected at all. + - For the affected drivers, The Legend of Zelda: Skyward Sword HD and the other affected games are as fast as they were before. + +## 1.0.6972 - 2021-07-18 +### Changed: +- Improves drastically the code generation of the audren's DSP. + - This may reduce CPU usage on the audio processing side and result in a better CPU time allocation. + +## 1.0.6971 - 2021-07-18 +### Changed: +- Improves shader tools command line by adding support for target language and API. + - No direct user changes. + +## 1.0.6970 - 2021-07-16 +### Changed: +- Improves performance of buffer and texture flushes by using a different approach. + - Greatly improves performance of The Legend of Zelda: Skyward Sword HD. + - Pokémon Sword/Shield is also improved, however it is still slower than the LDN 2.3 build. + - Xenoblade Chronicles 2 is sligthly improved. + - Any other game that does a lot of flushes per frame should be faster aswell. + +## 1.0.6969 - 2021-07-14 +### Fixed: +- Fixes a bug where data on textures copied using the DMA engine could be lost. + - Fixes texture corruption (usually visible as black portraits or garbled sprites) on Legend of Mana. Other games might be affected too. + +## 1.0.6968 - 2021-07-14 +### Fixed: +- Allows draws and compute dispatch without a texture pool and sampler pool being set. + - Fixes regression on Tales of Vesperia, where the game would crash at boot. + - An error will be logged if the game attempts to draw with texture or image access without having the pools set. + +## 1.0.6967 - 2021-07-14 +### Fixed: +- Fixes a bug where the transfer memory handle was not being closed on nvservices, resulting in a handle leak and failure to create a transfer memory at the same region on the guest. + +## 1.0.6966 - 2021-07-13 +### Changed: +- Revert LibHac update + - There have been multiple reports of save being destroyed. The issue is being investigated and the update will be rolled again once fixed. + +## 1.0.6965 - 2021-07-13 +### Fixed: +- Fixes build error of the headless project caused by changes on version 1.0.6964. + +## 1.0.6964 - 2021-07-13 +### Changed: +- Updates the LibHac dependency to version 0.13.1. This improves the accuracy of the emulator file system implementation, and solve some file system and save related issues on games. See below for a more detailed list of changes. + - Refactor `FsSrv` to match the official refactoring done in FS. + - Change how the `Horizon` and `HorizonClient` classes are handled. Each client created represents a different process with its own process ID and client state. + - Add FS access control to handle permissions for FS service method calls. + - Add FS program registry to keep track of the program ID, location and permissions of each process. + - Add FS program index map info manager to track the program IDs and indexes of multi-application programs. + - Add all FS IPC interfaces. + - Rewrite `Fs.Fsa` code to be more accurate. + - Rewrite a lot of `FsSrv` code to be more accurate. + - Extend directory save data to store `SaveDataExtraData` + - Extend directory save data to lock the save directory to allow only one accessor at a time. + - Improve waiting and retrying when encountering access issues in `LocalFileSystem` and `DirectorySaveDataFileSystem`. + - More `IFileSystemProxy` methods should work now. + - Probably a bunch more stuff. + +## 1.0.6963 - 2021-07-12 +### Changed: +- Optimizes the GPU Inline-to-Memory engine transfer operations. + - Might reduce stutters and improve performance a little on games using the OpenGL API on the Switch. + +## 1.0.6962 - 2021-07-12 +### Fixed: +- Fixes a regression introduced on version 1.0.6957 that caused shaders using rectangle textures to fail to build in some cases. + - The Touryst now renders properly once again. + +## 1.0.6961 - 2021-07-11 +### Changed: +- Refactor GPU 3D engine to more closely match the hardware, in addition to fixing bugs. + - Now all the 3D engine state is per-channel, rather than shared. This completes the work started with the initial GPU channel support. + - New state modification tracking and host state update method, cleaner and more efficient than the old one. + - Optimized `DeviceState` register read and write functions. + - Proper channel state initialization using the same values as the official OS, instead of guessed values. + - Fixes a bug where the host state was not being updated on changes to the `YNegate` register. + - Fixes upside down rendering on Cat Girl Without Salad: Amuse Bouche, Dragon Quest Builders, 20XX, Asterix & Obelix XXL2, BLADE ARCUS Rebellion from Shining, and many more. + - Fixes black screen on Game Tengoku CruisinMix Special (happens when you start a new game). The title can now be considered playable with minor transparency issues. + - Implement missing `PrimitiveTypeOverrideEnable` register (thanks to ByLaws for testing). + - Fixes Turok 2 menus rendering. + +## 1.0.6960 - 2021-07-11 +### Fixed: +- Fixes a bug on the kernel virtual memory allocation function, where an address outside of the requested range could be returned. + - Fixes crashes on Disaster Report 4, Garfield Kart Furious Racing, and likely more games that crashes/aborts early in the boot process. + +## 1.0.6959 - 2021-07-10 +### Added: +- Implements CreateApplicationAndRequestToStart of am service. + - Allow games to restart by themselves if needed. You can now change the Super Smash Bros. Ultimate language in game (Note: Restart doesn't work with OpenAL audio backend due to another issue). + +## 1.0.6958 - 2021-07-10 +### Fixed: +- Fixes some misc bugs in writable region write-back. + - No changes expected on games. + +## 1.0.6957 - 2021-07-08 +### Fixed: +- Fixes resolution scaling when `textureSize` is used with a scaled texture on a compute or pixel shader. + - Fixes glitches caused by resolution scaling on Monster Hunter Stories 2: Wings of Ruin (visible in battles and a few other places), Monster Hunter Rise (character selection screen on the demo, and a few other places on the full game), and likely more games. + - Note: Monster Hunter Rise is still not properly scaled in-game, using a resolution mod is still recommended for the best results. + +## 1.0.6956 - 2021-07-07 +### Fixed: +- Fixes a regression introduced on version 1.0.6894 (POWER update) that caused some games to crash with a invalid memory region exception. + - Wonder Boy: The Dragon's Trap, FINAL FANTASY X/X-2 HD Remaster and more are once again playable. + +## 1.0.6955 - 2021-07-07 +### Changed: +- Refactored GPU 2D, DMA, I2M and Compute engines emulation code to more closely match real hardware, with state structures now being auto-generated from official headers. + - No changes expected on games. + +## 1.0.6954 - 2021-07-06 +### Added: +- A new front-end has been added to Ryujinx: Ryujinx.Headless.SDL2. + - This is a minimalist variant of the emulator without a GUI that can be started and configured via command line. + - **This is available on a separated release zip.** (see **ryujinx-headless-sdl2-{version}** variants on Appveyor) + - **This doesn't have any updater.** + - For more information on the options available run it with ``--help``. + +## 1.0.6953 - 2021-07-06 +### Added: +- Allows the target language and API to be passed to the translator. Will be used by the Vulkan and SPIR-V backend in the future. + +## 1.0.6952 - 2021-07-06 +### Added: +- Adds a portable screenshot folder to save images when portable mode is enabled. Also adds a few error checks. + +## 1.0.6951 - 2021-07-06 +### Fixed: +- Fixes an issue in GetShrinkedGamepadName which crash the controller window if the controller name is equal to the limited length. + +## 1.0.6950 - 2021-07-06 +### Fixed: +- Fixes nifm service where IsDynamicDnsEnabled isn't supported on Linux. + +## 1.0.6949 - 2021-07-06 +### Fixed: +- Fixes some inconsistencies introduced in aoc service (1.0.6942). + - Fixes booting issues of Fire Emblem Three House, Super Robot Wars, Diablo 3 and more games. + +## 1.0.6948 - 2021-07-06 +### Fixed: +- Start a game with -f argument doesn't tick "Start Games in Fullscreen Mode" anymore. + +## 1.0.6947 - 2021-07-06 +### Added: +- Implement 12.0.0 hwopus service calls InitializeEx and GetWorkBufferSizeEx. + - Games built with 12.0.0+ SDK and using hwopus service are now bootable/playable. + +## 1.0.6946 - 2021-07-03 +### Fixed: +- Honour copy dependencies when switching render target. + - Fixes UI not being rendered on the Mii Editor (only AMD and Intel Windows drivers are affected). + - Fixes dialog boxes and menus not rendering on New Pokémon Snap (only AMD and Intel Windows drivers are affected). + +## 1.0.6945 - 2021-06-29 +### Fixed: +- Fixes a wrong check introduced in 1.0.6942. + - Pokémon Sword / Shield (and probably other games) can now use DLCs again. + +## 1.0.6944 - 2021-06-29 +### Fixed: +- Fixes IPC sessions not being disposed at emulation end. + - This fix possible leaks (memory, opened files, ect) at emulation end. + +## 1.0.6943 - 2021-06-29 +### Added: +- Initial support for separate GPU address spaces was added. + - Super Smash Bros Ultimate story mode is now playable. + +## 1.0.6942 - 2021-06-29 +### Changed: +- Cleanup AOC service and implement some stub calls in AM service. + - Tony Hawk’s Pro Skater 1+2 is now bootable. + +## 1.0.6941 - 2021-06-28 +### Added: +- Support for taking screenshot was added. + - You can take screenshot by pressing F8. + - Screenshots are saved in your pictures folder in the "Ryujinx" subdirectory. + - This support resolution scaling. (example: if you configured a 8K resolution your screenshot will be 8K) + +## 1.0.6940 - 2021-06-28 +### Added: +- Support for running the Mii Editor applet was added. + - Requires installed firmware 4.0.0+. + - Mii Editor applet must be launched outside of a game. + +## 1.0.6939 - 2021-06-25 +### Changed: +- Implements custom (greater than 1) line width support, along with line smoothing support. + - Fixes incorrect line thickness on the grid that shows on Mario Golf: Super Rush. + +## 1.0.6938 - 2021-06-25 +### Fixed: +- Fixes unwritten shader output values, which was previously using a value of 0 instead of 1. + - Fixes missing/invisible geometry on Monster Hunter Stories 2: Wings of Ruin (Trial Version). + +## 1.0.6937 - 2021-06-24 +### Fixed: +- Fixes some shader compilation failures on shaders using texture depth compare with a LOD parameter and 2D or Cube array textures. Those shaders requires an extension, which is now enabled. On GPUs where the extension is not supported, the LOD parameter is removed. + - Fixes lighting issues on Mario Golf Super Rush. + +## 1.0.6936 - 2021-06-24 +### Fixed: +- Stubs GetAlbumFileList0AafeAruidDeprecated and GetAlbumFileList3AaeAruid in caps service. + - World of Light in Super Smash Bros. Ultimate is now playable. + +## 1.0.6935 - 2021-06-23 +### Changed: +- Improves game searching when you start typing something while browsing the game list. You can now searching by TitleID and keyword (For example, allows to type "odyssey" and find Super Mario Odyssey). + +## 1.0.6934 - 2021-06-23 +### Changed: +- Implements direct mouse support, similar to the direct keyboard support. This enables games and homebrew that support USB mouse to have that option enabled. + - Touchscreen is disabled when direct mouse is enabled. Also, the real cursor is hidden while inside the client area (GTK seems to reset the mouse cursor state often, so you will see the mouse pop in once in a short while). + +## 1.0.6933 - 2021-06-23 +### Changed: +- Implementing supports for multiple GPU channels, enabling games to have separate GPU state. This is usually used when videos are played, as some games creates a separate channel for that. Before this change, a single channel was used for everything, which resulted in crashes as the state ended being corrupted. + - Fixes rendering of Doukoku Shoshite..., Skullgirls 2nd Encore, COTTOn Reboot!, Dragonball Xenoverse 2 and more. + +## 1.0.6932 - 2021-06-23 +### Changed: +- This greatly speeds up games that constantly resize buffers, and removes stuttering on games that resize large buffers occasionally. + - Large improvement on Super Mario 3D All-Stars. Slowdown now is just due to the creation of the OGL buffer resources. (#1663 needed for best performance) + - Improvement to Hyrule Warriors: AoC, and UE4 games. These games still stutter in general due to texture creation/loading. + - Small improvement to other games, potential 1-frame stutters avoided. + - ForceSynchronizeMemory, which was added with POWER, is no longer needed. Some tests have been added for the MultiRegionHandle. + +## 1.0.6931 - 2021-06-23 +### Changed: +- Implements GetDeviceNickName and SetDeviceNickName in settings service. + - Animal Crossing Island Transfer Tool is now bootable. + +## 1.0.6930 - 2021-06-23 +### Changed: +- Implements CreateUserInterface/CreateSystemInterface and stubs Initialize/IsNfcEnabled in nfc service. +- Implements CreateDebugInterface, CreateSystemInterface and GetRegisterInfo2 in nfp service. + - Fixes a wrong size in RegisterInfo struct. + +## 1.0.6929 - 2021-06-23 +### Changed: +- Enables the single file publish feature at the project level to embed the managed dependencies on the executable, and remove some unused dependencies/files. + +## 1.0.6928 - 2021-06-23 +### Fixed: +- Fixes wrong TouchPoint Attribute in the hid shared memory and wrong main window focus value. + - Fixes Fullscreen hotkey which needed minimize the window one time before. + - Fixes Touch input in Mini Metro, Umineko no Naku Koro ni Saku and probably more games. + +## 1.0.6927 - 2021-06-23 +### Fixed: +- The component order of the instruction is the inverse of the vector returned by textureQueryLod. + - Fixes blurry graphics on Mario + Rabbids Kingdom Battle, caused by the shader sampling from the wrong texture level (due to the incorrect LOD value). + +## 1.0.6926 - 2021-06-23 +### Changed: +- Implement VORN (register) Arm32 instruction. + - MushihimeSama is now bootable. + +## 1.0.6925 - 2021-06-23 +### Fixed: +- Fixes an issue preventing some outputs from being passed to the pixel shader when geometry shader passthrough is enabled. + - Fixes missing graphics on Game Builder Garage, Nintendo Labo Toy-Con 04: VR Kit and possibly other games. (Note: Does not fix missing apple bug on Game Builder Garage.) + +## 1.0.6924 - 2021-06-23 +### Changed: +- Implement GetPlayerLedPattern, SetNpadJoyHoldType, GetNpadJoyHoldType, IsVibrationDeviceMounted (Needed by Super Mario Odyssey) in hid service. +- Implement GetLastActiveNpad, GetNpadSystemExtStyle, GetAppletFooterUiType and stub ApplyNpadSystemCommonPolicy in hid:sys service. + +## 1.0.6923 - 2021-06-23 +### Changed: +- Unbind input keys in the controller window by middle-clicking while an input is selected. + +## 1.0.6922 - 2021-06-22 +### Fixed +- Implement SaveSystemReport and SaveSystemReportWithUser in prepo services. + +## 1.0.6921 - 2021-06-22 +### Fixed +- Implement GetSharedFontInOrderOfPriorityForSystem in pl service. + +## 1.0.6920 - 2021-06-22 +### Fixed +- Fixes multiple inconsistencies in mii services. + +## 1.0.6919 - 2021-06-23 +### Changed: +- Kernel: Implement SVC MapTransferMemory and UnmapTransferMemory. + +## 1.0.6918 - 2021-06-22 +### Fixed +- Remove size checks for IPC buffer type 0x21/0x22. + - Fixes a bsd service issue with homebrews and some games included Knockout City. + +## 1.0.6917 - 2021-06-21 +### Fixed +- Fix a bug that caused one of the account service functions to return an invalid user id if more than one user profile was configured on the emulator. +- Fixes a softlock on Shantae Half-Genie Hero title screen if more than one user profile was present. Might fix similar user profile related issues on other games. + +## 1.0.6916 - 2021-06-21 +### Changed +- Implement all known AppletMessage values. The new values are not used right now, but might be in the future. +- No expected changes. + +## 1.0.6915 - 2021-06-20 +### Fixed +- When the (separate) sampler bindless handle comes from the offset 0 of the constant buffer, it was being ignored which caused the wrong sampler to be used. This correct the bug by adding 1 to the offset on the shader translator, and then subtracting 1 on the GPU emulator to ensure that it is never 0 if a separate bindless sampler is used. + - Fixes rendering issues in Final Fantasy XII The Zodiac Age. + +## 1.0.6914 - 2021-06-19 +### Changed +- Stub hid service call: IsFirmwareUpdateAvailableForSixAxisSensor needed by Game Builder Garage (Ignore missing services isn't required anymore). +- Stub irs service call: CheckFirmwareVersion needed by Nintendo Labo Toy-Con 03: Vehicle Kit. + +## 1.0.6913 - 2021-06-16 +### Changed +- Loading the default controller profile once again sets the controller type to Pro Controller. When Miria released, the function was changed to load Joycon Pair; this update reverts that change. + +## 1.0.6912 - 2021-06-14 +### Changed +- Shader decoding is now ended when reaching a block that starts with an infinite loop. + - Fixes Dark Devotion hanging on boot at a plain white screen. The game now renders graphics, though they are unfortunately upside down. + +## 1.0.6911 - 2021-06-14 +### Changed +- Moved touchscreen updates to the input project. Code refactoring only; no changes in emulator behavior. + +## 1.0.6910 - 2021-06-10 +### Changed +- Increased the height of the settings window in the main GUI. Now all options are able to be viewed & modified without any scrolling. + +## 1.0.6909 - 2021-06-09 +### Fixed +- Fixed a sampler leak on exit by making TextureBindingsManager disposable and calling the dispose method in the TextureManager. + +## 1.0.6908 - 2021-06-09 +### Fixed +- The GPU subchannel state is no longer cleared on BindChannel. + - Fixes a long-standing regression introduced by the addition of GPU syncpoints (PR 980) that was causing a crash on New Super Lucky's Tale. + +## 1.0.6907 - 2021-06-09 +### Changed +- Added support for bindless textures with separate constant buffers for texture and sampler. + - Fixes Final Fantasy XII black screen on boot. The game is now playable though not 100% perfect. + +## 1.0.6906 - 2021-06-02 +### Changed +- Updated README.MD with latest motion/audio/SDL2 information as well as current game compatibility statistics. + +## 1.0.6905 - 2021-06-02 +### Fixed +- Fixed a shader bug with mixed PBK and SSY addresses on the stack. + - Fixes pink sky on Dead or Alive Xtreme 3. + +## 1.0.6904 - 2021-06-02 +### Fixed +- Resolved a bug involving texture blit off-by-one errors that caused the destination textures to have a black border. + - Fixes overly bright lighting on Fast RMX. + - Fixes incorrect Mii character face rendering on Mario Kart 8 Deluxe. + - Fixes a blue or transparent bar appearing at the top of the screen in Kirby Star Allies with resolution scaling enabled. + +## 1.0.6903 - 2021-06-02 +### Changed +Oops! Looks like quite a few of you are still using Dinput controllers. +- Reverted the specific change that fixed the rare emulator hang on launch issue for now while we look into alternative fixes. + - Fixes Dinput controllers not being recognized by the emulator. + +## 1.0.6902 - 2021-06-02 +### Changed +- Updated SDL2-CS. + - Fixes motion controls not working in Linux. + - Fixes a rare situation where the emulator could hang on launch for an undetermined period of time. + +## 1.0.6901 - 2021-06-02 +### Changed +- Now uses quads on OpenGL hosts when supported. + - Improves OpenGL performance in Xenoblade Chronicles DE/2, Fast RMX, and potentially other games. + +## 1.0.6900 - 2021-06-01 +### Changed +- Changed the clear alpha channel to be applied on the bound framebuffer instead of clearing the alpha channel by its handle. + - Fixes the infamous "black screen" bug occurring on AMD GPUs since driver 21.4.1. + +## 1.0.6899 - 2021-05-31 +### Fixed +- Fixed a bug in the shader translator where it would try to normalize image load/store colors. + - Resolves a crash while loading a race in MotoGP 21. This title now reaches full gameplay but still suffers from graphical corruption. + +## 1.0.6898 - 2021-05-30 +### Fixed +- Fixed a logging regression where an incorrect function name would be included in the trace if the function had its name stripped. + +## 1.0.6897 - 2021-05-30 +### Fixed +- Fixed an inverted low/high mask value on GetThreadCoreMask32 syscall. + - Allows Game Tengoku CruisinMix Special to boot further. + +## 1.0.6896 - 2021-05-29 +### Changed +- Implemented a multi-level function table. + - Greatly improves performance in ACA NEOGEO, SEGA AGES, Arcade Archives, and some NES/SNES Online games. FPS increases of up to 65% were observed during testing. Note that this will really only impact those whose systems were unable to reach the game's intended FPS before, as disabling vsync in these games will unfavorably alter the game speed if FPS rises past what was intended by the game developer. + - Improves overall JIT performance to a small degree, with minor reductions in boot time and increases in game frame rates (~5% on average where improvements are observed). + - May improve performance in games that previously had inexplicably low frame rates. + +## 1.0.6895 - 2021-05-25 +### Changed +- Implemented all changes made in audren REV9 on 12.0.0. + +## 1.0.6894 - 2021-05-24 +### Changed +- POWER Update: implemented a new host mapped memory manager for major performance improvements across the board. Fastest option is now set by default. + - Increases FPS by significant margins in most games/scenarios (except where emulated GPU-limited). + - Reduces PPTC compilation times by roughly half. + - Reduces boot time of most games by 30-50%. + - Reduces size of JIT cache. + - Resolves "JIT Cache Exhausted" crashes. + - Resolves "AcquireSemaphore" crashes on all Ryzen CPUs known to exhibit the issue. + - Resolves slow character movement speed in the monastery in Fire Emblem: Three Houses. + - Noticeably improves/shortens "spool-up" period when first playing a game (note: does not negate the need to compile shaders). + +## 1.0.6893 - 2021-05-24 +### Changed +- Improved accuracy of reciprocal step ARM CPU instructions. + - Fixes a bug where character clothing would be incorrectly warped in Rune Factory 5. + +## 1.0.6892 - 2021-05-24 +### Fixed +- Fixed incorrect default value for constant vertex attributes. + - Improves rendering in some SD GUNDAM G GENERATION CROSS RAYS games. +- Fixed dumping of shaders containing bindless texture references. + - Fixes a regression introduced in 1.0.6802 (PR 2145). This is a developer feature, no expected changes to emulator behavior. + +## 1.0.6891 - 2021-05-24 +### Changed +- Improved texture selection by comparing the aligned size of the largest mip level when considering sampler resize. + - Fixes graphical errors and crashes in various Unity games that use render-to-texture. + - Fixes an internal CLR error in Rune Factory 5. + - Potentially improves infrequent graphical errors and crashes in Mario Kart 8 Deluxe. + +## 1.0.6890 - 2021-05-21 +### Changed +- Changed to a new approach for out of bounds blit. + - Fixes invalid memory region crashes on Rune Factory 5 and Shantae. + +## 1.0.6889 - 2021-05-21 +### Added +- Implemented another Depth32F texture variant. + - Along with the previous merge and the one following, greatly improves rendering on Yo-kai Watch 1. + +## 1.0.6888 - 2021-05-21 +### Fixed +- Fixed non-independent blend state entries being missing from the state table. + - Fixes broken blend on some OpenGL games such as Code of Princess EX. + +## 1.0.6887 - 2021-05-20 +### Changed +- Extended information printed when the guest crashes or breaks execution. This may be useful for troubleshooting purposes. + +## 1.0.6886 - 2021-05-20 +### Added +- Implemented a new keyboard backend to the Ryujinx.Input.SDL2 project. This is currently unused. + +## 1.0.6885 - 2021-05-20 +### Fixed +- Fixed a regression that had broken resolution scaling in the Hyrule Warriors/Fire Emblem Warriors series of games. + +## 1.0.6884 - 2021-05-20 +### Fixed +- Fixed a regression introduced in 1.0.6878 (PR 2290) where buffer and texture information from one vertex shader was not propagated to the other after they were merged. + +## 1.0.6883 - 2021-05-20 +### Fixed +- Fixed a regression introduced in 1.0.6878 (PR 2290) where the constant buffer array size would be incorrect on games that use non-constant constant buffer slots. + +## 1.0.6882 - 2021-05-20 +### Added +- Adds a dynamic query in Linux to locate the installation of the ffmpeg root path. + - Fixes nvdec-related crashes on Linux distros that do not use /libs as the ffmpeg root path. + - Advises the user to install ffmpeg if it is not found. + +## 1.0.6881 - 2021-05-20 +### Changed +- Assigned _backgroundContext before starting its working thread. + - Fixes a random chance for an embedded game to crash on launch. + +## 1.0.6880 - 2021-05-20 +### Changed +- Minor optimization to CPU emulation code. + +## 1.0.6879 - 2021-05-20 +### Added +- Added VIC/ORR Vd.T, #imm fast paths. + +## 1.0.6878 - 2021-05-19 +### Changed +- Refactored shader resource description creation and moved it out of the GLSL backend to the translator. No expected changes to emulator behavior. + +## 1.0.6877 - 2021-05-19 +### Changed +- Shader recompilation/rebuilding triggered at boot-time (such as in the case of a driver upgrade of shader code change) is now multi-threaded. + - Reduces boot-time shader recompilation time by up to 75%. + +## 1.0.6876 - 2021-05-19 +### Fixed +- Fixed an issue with bindless textures when CbufSlot is not equal to the current TextureBufferIndex. + - Fixes random chance of screen color flickering in Super Mario Party. + +## 1.0.6875 - 2021-05-16 +### Changed +- LocalVariable is now allowed to be assigned more than once. + - Allows flow controls such as loops and if-elses with LocalVariables participating in phi nodes. + +## 1.0.6874 - 2021-05-16 +### Changed +- Moved the Windows Intel/AMD view format workaround out of the backend and replaced it with copy dependencies. + - Significantly improves FPS on Intel iGPUs and AMD GPUs in Windows. Please test share your results! + +## 1.0.6873 - 2021-05-16 +### Changed +- Decoupled the Ryujinx configuration instance from all Ryujinx subprojects and moved directly to the Ryujinx project. No expected changes in emulator behavior. + +## 1.0.6872 - 2021-05-14 +No changes. + +## 1.0.6871 - 2021-05-13 +### Changed +- Miscellaneous x86 code generation optimizations. + - Has potential to increase performance, but there are no known examples of improved games currently. + +## 1.0.6870 - 2021-05-13 +### Changed +- Implemented support for PPTC to stay enabled during runtime even if exeFS mods are activated. + +## 1.0.6869 - 2021-05-11 +### Fixed +- Fixed a race condition in SM initialization that could occur in rare situations when booting a game, causing it to crash. + +## 1.0.6868 - 2021-05-11 +### Fixed +- Fixed a specific core migration bug on the scheduler that could occur during context switching. + - There are no currently known triggers for this bug; as such, there are no expected changes to emulator behavior. + +## 1.0.6867 - 2021-05-08 +### Fixed +- Fixed a minor bug in GTK3 keyboard mapping. + +## 1.0.6866 - 2021-05-07 +### Fixed +- Fixed a regression introduced in 1.0.6860 (PR 2260) that caused embedded games (in game collections such as Psikyo Shooting Stars Bravo) to display a single color in the entire window instead of the intended graphics. + +## 1.0.6865 - 2021-05-07 +### Fixed +- Fixed the default value for GraphicsConfig.MaxAnisotropy. No expected changes in emulator operation. + +## 1.0.6864 - 2021-05-05 +### Changed +- Corrected a couple of issues regarding SM instances and TIPC. + - SM was previously instanced once and reused on all sessions. This could cause inconsistency on the service initialization. + - TIPC replies now match what is generated on original hardware. + +## 1.0.6863 - 2021-05-05 +### Added +- Implemented SDL2 audio backend. + - Resolves most audout-related audio quality issues that occur with either OpenAL or SoundIO. + - Considered safe to be used as the primary audio backend, but is not yet set as default; setting SDL2 as the default audio backend will happen in the future. +Please test this new audio backend and report your results! Options > Settings > System tab > Audio Backend dropdown. + +## 1.0.6862 - 2021-05-05 +### Changed +- Redirected ffmpeg-related log output to mitigate unnecessary console/log activity. + +## 1.0.6861 - 2021-05-05 +### Changed +- Cleaned up the nsd service and implemented/stubbed some associated service calls. + - GetSettingName is removed because of a bad previous implementation (doesn't seem to be used by any games). + - SetChangeEnvironmentIdentifierDisabled, WriteSaveDataToFsForTest, DeleteSaveDataOfFsForTest, and IsChangeEnvironmentIdentifierDisabled are stubbed. + - GetApplicationServerEnvironmentType is implemented. + +## 1.0.6860 - 2021-05-03 +### Added +- Implemented a base for a possible future Vulkan integration with the current GTK3 UI. + +## 1.0.6859 - 2021-05-03 +### Fixed +- Fixed an issue that caused Linux to be unable to use FFmpeg since 1.0.6857. + +## 1.0.6858 - 2021-05-02 +### Changed +- Cleaned Discord Precense + - Removed hardcoded title list and special icons for them. + - Added a buttton to https://ryujinx.org/ + - Updated to latest version. + +## 1.0.6857 - 2021-05-02 +### Changed +- Updated to FFmpeg 4.4.0 + +## 1.0.6856 - 2021-05-02 +### Changed +- Rewrited HID shared memory management + - This have no impacts on inputs. + +## 1.0.6855 - 2021-05-01 +### Fixed +- Fixed a bug that caused buffer memory modified shaders to not be flushed in certain cases. + - Fixes a bug in New Pokémon Snap causing photos to not be identified. + - Fixes a regression in Monster Hunter Rise where insects were invisible. + +## 1.0.6854 - 2021-04-30 +### Changed +- Changed logger to include certain values that were previously only written in the console. + +## 1.0.6853 - 2021-04-30 +### Changed +- Increased the Amiibo internal scan delay from 50ms to 125ms. + - Fixes Amiibo scanning in Hyrule Warriors: Age of Calamity and Fire Emblem: Three Houses. + +## 1.0.6852 - 2021-04-26 +### Fixed +- Fixed a bug in GetClockSnapshot that was causing the steady clock timepoint to fail to be written. + - Resolves a soft-lock occurring in early splash screens on Shantae. The game is now playable. + +## 1.0.6851 - 2021-04-26 +### Fixed +- Fixed unsolicited input (buttons pressing themselves/analog directions without user input) in all games known to exhibit the issue, including Mega Man 11, Crash Bandicoot 4, Black Legend, Balan Wonderworld, ADVERSE, Effie, and many other UE4 games. + +## 1.0.6850 - 2021-04-24 +### Fixed +- Fixed a typo in NpadIdType (changed uint to int). + - Resolved a regression causing a crash on launch in Bayonetta 2 and possibly other games with similar HID calls. + +## 1.0.6849 - 2021-04-24 +### Fixed +- Fixed IsRegionInUse check on NV memory allocator. This was a non-fatal error calling the AllocSpace ioctl on a few games. + +## 1.0.6848 - 2021-04-24 +### Fixed +- Cleaned up various incorrect types in code from 2018 across the Ryujinx.HLE project. + +## 1.0.6847 - 2021-04-23 +### Added +- Implemented custom user profile emulation. + - Simply click on Options > Manage User Profiles. + - Profiles cannot be edited/managed while a game is running. + - The "RyuPlayer" profile is the default user which cannot be deleted, as it contains all of the original save files for your games. However, the name and picture can be changed. + - WARNING: Save data is specific to each user profile so if you delete a profile, the save data under that profile is also deleted!! + +(For a more in-depth explanation of how the feature works, see the original PR description here: https://github.com/ryujinx-mirror/ryujinx/pull/2227) + +## 1.0.6846 - 2021-04-22 +### Changed +- Cleaned up the mm:u services, replacing previously unknown values with those that are now known. + +## 1.0.6845 - 2021-04-20 +### Changed +- Keyboard input is no longer queried if a controller is not set/selected. + - Fixes a possible crash if raw keyboard input a.k.a. Direct Keyboard Access is enabled. + +## 1.0.6844 - 2021-04-20 +### Changed +- Changed clip distances to only be enabled if they are actually written to on the vertex shader. + - Fixes flashing triangles, seemingly occurring only on Intel iGPUs, on games that use custom clip distances (most first party games). +See before & after screenshots below of Animal Crossing: New Horizons on an Intel iGPU: +Before: https://i.imgur.com/KegGaAw.png +After: https://i.imgur.com/mwZP4w5.png +Try out your favorite first party games on Intel iGPUs and please report to us the new results! + +## 1.0.6843 - 2021-04-18 +### Changed +- Miscellaneous CPU emulation optimization. + +## 1.0.6842 - 2021-04-18 +### Fixed +- Added a missing parentheses around low pass z computation, affecting low pass base gain on delay effect in mono. + - Fixes incorrect audio volume changes when going indoors in FEZ. + +## 1.0.6841 - 2021-04-18 +### Changed +- Improved shader global memory to storage optimization pass. + - Reduced code size. + - May improve compile times as a result. + - Improved code execution speed (probably only matters for integrated/mobile GPUs). + - Reduced the number of bindings used (mitigates out of bindings compilation error on drivers with a low limit, like Intel iGPUs that only support 16 max). + - Better buffer management (no need to sync/write track unused buffers). + +## 1.0.6840 - 2021-04-17 +### Changed +- Divdided up Intel HwCapabilities identification into IntelWindows and IntelUnix as the respective drivers present significant differences, and certain specific processing or workarounds should only be applied to one but not the other. + +## 1.0.6839 - 2021-04-17 +### Changed +- Modified audren to handle out of bounds read on empty delay lines. + - Fixes a crash on launch occurring on FEZ. The game now boots properly. + +## 1.0.6838 - 2021-04-17 +### Fixed +- Fixed a bug in the Intel view copy workaround to take the texture target from the storage rather than the view, when using the storage handle for the copy. + +## 1.0.6837 - 2021-04-17 +### Fixed +- Fixed a controller applet related softlock occurring in Mario Kart 8 Deluxe while navigating multiplayer menus. + +## 1.0.6836 - 2021-04-15 +### Changed +- Subtracted haptic and sensor initialization from the SDL2 implementation as they are not needed. + - Fixes an issue that could occur in certain Windows 10 environments with group policy set in a way that prevented the emulator from launching. + +## 1.0.6835 - 2021-04-14 +### Added +- Stubbed IApplicationFunctions ExtendSaveData + - Fixes a missing service crash in Minecraft (cartridge/retail version). + +## 1.0.6834 - 2021-04-14 +### Changed +- Fixed a regression introduced on 1.0.6826 (PR 2186) regarding the IManage Resolve/ResolveEx calls. + - Fixes crashes in The Savior's Gang, 1971 Project Helios, Chess Ultra, and NBA 2K Playgrounds 2. +- Stubbed ISslContext GetConnectionCount. + - Resolves missing service crashes in Monopoly, Legendary Fishing, and Quiplash 2. + +## 1.0.6833 - 2021-04-14 +### Changed +- Miria has arrived! As a preparation for the upcoming new UI and for Vulkan, this update removes OpenTK 3 dependency entirely. +- Switched to OpenTK 4 for OpenAL implementation and mark OpenAL implementation as obsolete. +- Switched to OpenTK 4 for the Ryujinx.Graphics.OpenGL project. +- The emulator now uses SPB for context creation and manipulations instead of OpenTK 3. + - Currently only WGL and GLX backend are supported. (no regressions compared to old implementation) +- Switched to SDL2 for controller input. + - Controllers can now be hot-plugged without any constraints. No need to click any "refresh" buttons. + - Motion controls now work on supported controllers without the need of external tools. (Legacy Cemuhook integration is still present if desired.) + - DS4, DS5, Pro Controller and Single Joycons are natively supported. (Joycon pairs are not yet natively supported and outside the scope of this PR; Cemuhook integration can be used for joycon pairs in the meantime.) + - Rumble API is exposed **while still not in use for now** (outside the scope of this PR). +- Switched to GTK3 for keyboard input. +- Individual keyboard support was removed (meaning there is no list of keyboards to choose from anymore; only "All Keyboards" is shown as an option). + +## 1.0.6832 - 2021-04-13 +### Changed +- Applied lossless image compression to various image resources within the GUI, saving a whopping 69KB. + +## 1.0.6831 - 2021-04-13 +### Added +- Added initial support for 12.x IPC system. + - Also adds support for the new SM commands ids available on TIPC. + +## 1.0.6830 - 2021-04-13 +### Changed +- Added several new items to logging, for troubleshooting and log analysis purposes. +- Now logs hotkey and UI menu item changes while a game is running. + +## 1.0.6829 - 2021-04-12 +### Changed +- Miscellaneous PPTC optimizations to handle games with large exeFS. + - PPTC can now handle any size of JitCache; + - Allows to avoid memory peaks due to the resizing of the internal MemoryStream array (and its possible waste), its allocation in the LOH region of the heap; and allows to reduce the size of the .cache file if many translation invalidations are involved (LowCq -> HighCq over several runs). + - Added an outer header structure and added the hashes for both this new structure and the existing "inner" header structure; + - Hashes are now handled on a per-section basis and no longer for the entire uncompressed stream. + - In games with a large exeFS, this "resolves System.IO.IOException: Stream was too long." and "Insufficient memory to continue the execution of the program." error messages. Does *not* resolve "JIT Cache exhausted" error. This will be resolved in a future PR. + +## 1.0.6828 - 2021-04-12 +### Added +- Added an AccountManager class (based on AccountUtils class). + - Adds a "default profile values" which were the old hardcoded ones. + - The image profile is moved to the Account service folder. + - The hardcoded UserId for the savedata is now using the AccountManager last opened one. + - The DeviceId in Mii service is changed to the right value (checked by REd sys:set call). + - Miscellaneous cleanup. + - Lays some groundwork to be able to move forward with implementing Custom User Profiles. + +## 1.0.6827 - 2021-04-12 +### Fixed +- Fixed sub-image copies on Intel iGPUs in OpenGL. + - Resolves some glaring graphical bugs in games, on recent Intel iGPUs (those that support Open GL4.5 or higher), including Mario Kart 8 Deluxe and Captain Toad: Treasure Tracker. + - These changes only apply to Intel iGPUs. + +## 1.0.6826 - 2021-04-12 +### Added +- Implemented GetCurrentNetworkProfile and stubbed several ssl services. + - nifm IGeneralService GetCurrentNetworkProfile is implemented (fixes #643) and now blocked games boot further. + - nifm GetLocalInterface() helper and DnsSetting struct have been fixed to return the right values. + - ssl ISslService have been cleaned up. + - ssl ISslContext have been cleaned up, CreateConnection and ImportClientPki have been stubbed (fixes #1289). + - ssl ISslConnection is partially stubbed, which make some games playable, see the attached screenshots. + - nsd IManager Resolve and ResolveEx have been fixed using the right buffer type. + - Fixes missing service crashes for over 20 tested games. These can now proceed further in the boot process, and many are now playable. + +## 1.0.6825 - 2021-04-12 +### Fixed +- Fixed a bug in SurfaceFlinger when closing a layer, and refactored selection of the current layer being rendered. + - Star Wars: Republic Command and Shadow Gangs now proceed further in the boot process. + +## 1.0.6824 - 2021-04-08 +### Changed +- Auto-updating has been once again enabled in portable mode configurations. + - NOTE: if you are currently using portable mode, please download this update manually from the link above or from https://ryujinx.org/download + +## 1.0.6823 - 2021-04-07 +### Fixed +- Fixed PermissionLevel names within the FriendService. + +## 1.0.6822 - 2021-04-07 +### Fixed +- Fixed a bug with the CRC32 intrinsic where the JIT was not forcing a copy when a constant value is used as an input. + - Resolves an issue where the emulator could crash while rebuilding PPTC during a boot of Monster Hunter Rise. + +## 1.0.6821 - 2021-04-07 +### Added +- Added an option to manually trigger Github actions. + +## 1.0.6820 - 2021-04-07 +### Changed +- Added a temporary fix for Windows nuget issues/fix git hashes for PRs. + +## 1.0.6819 - 2021-04-04 +### Added +- Exposes an option on the UI to increase the amount of the emulated Switch memory from 4GB to 6GB. + - Since there are no known retail Switch consoles with 6GB of RAM, this option has been placed under the Hacks section next to the "Ignore Missing Services" option. + +## 1.0.6818 - 2021-04-03 +### Changed +- Debug builds posted by github-actions on pull requests are now hidden. + +## 1.0.6817 - 2021-04-02 +### Changed +- No longer force flush commands on sync creation for NVIDIA GPUs as they don't seem to need it. + - Fixes a minor performance regression in Monster Hunter Rise and possibly other games. + +## 1.0.6816 - 2021-04-02 +### Changed +- Miscellaneous code optimizations to improve StoreToContext emission. + - Reduces register pressure, code size and compile time a little bit. + +## 1.0.6815 - 2021-04-02 +### Changed +- Updated README.MD to reflect new OpenGL requirements, game compatibility statistics, and mods/cheats support. + +## 1.0.6814 - 2021-04-02 +### Changed +- Miscellaneous code optimizations to reduce allocation during SSA construction. + +## 1.0.6813 - 2021-04-02 +### Changed +- Changed the Pro Controller image used in the controller setup UI for improved button clarity. + +## 1.0.6812 - 2021-04-02 +### Changed +- Changed behavior of render targets in use to prevent them from falling out of the auto delete cache. This bug was discovered while developing Vulkan (would cause a crash if a freed texture was used). +- Cleaned up some ordering of related code for better readability. + +## 1.0.6811 - 2021-04-02 +### Fixed +- Updated the Tamper Machine module with the following fixes: + - Fixed a crash that could occur while applying runtime mods/cheats to an unpacked game. + - Fixed an inconsistency in sleep timings and adjusted the duration to more closely match Atmosphere's. + +## 1.0.6810 - 2021-04-02 +### Added +- Implemented shader HelperThreadNV/gl_HelperInvocation. + - Fixes flickering textures on Monster Hunter Rise. + - OpenGL requirements for the emulator have been raised to OpenGL 4.5 minimum (previously 4.4). + +## 1.0.6809 - 2021-03-29 +### Changed +- Command flushes are now forced after creating a syncpoint. + - Alleviates "sync object timeout" errors on AMD and Intel GPUs. + +## 1.0.6808 - 2021-03-29 +### Changed +- Modified the DNS blacklist to be case-insensitive. + +## 1.0.6807 - 2021-03-29 +### Changed +- Optimized PrintRoSectionInfo code. + - Reduces game load time by a small amount. May not be noticeable in many cases. + +## 1.0.6806 - 2021-03-27 +### Added +- Stub ILibraryAppletAccessor RequestExit in AM service. + - Fix a softlock in Monster Hunter Rise when you press "Private Policy" at the beginning. + - Fix a softlock in Monster Hunter Generations Ultimate after a multiplayer session. + +## 1.0.6805 - 2021-03-27 +### Fixed +- Fix ZN flags set for shader instructions using RZ.CC destination. +- Fixed a bug on pixel shaders with calls where it would set the output pixel values before every return. + +## 1.0.6804 - 2021-03-27 +### Changed +- Added credit to AmiiboAPI in the emulator's About window as well as in the README.MD file. +- Fixed an incorrect warning code in an am service. + +## 1.0.6803 - 2021-03-27 +### Added +- Implemented the TamperMachine module, which fully supports runtime mods & all Atmosphere style cheats (except game pause/resume). + - The standalone Cheat Engine software is no longer needed. + - Cheats use the same folder as mods. + - See https://github.com/ryujinx-mirror/ryujinx/pull/1928 for usage details and links to cheat repos. + +## 1.0.6802 - 2021-03-26 +### Changed +- Moved the bindless check stopgap from translation to decode phase, and disables cache-related processing early. + - Fixes Monster Hunter Rise 1.1.1's issue with Ryujinx's shader cache. You may now enable it while using this version of the game. + +## 1.0.6801 - 2021-03-25 +### Added +- Implemented SaveScreenShot calls: + - caps:u IAlbumApplicationService (32) SetShimLibraryVersion + - caps:c IAlbumControlService (33) SetShimLibraryVersion + - caps:su IScreenShotApplicationService (32) SetShimLibraryVersion + - caps:su IScreenShotApplicationService (203/205/210) SaveScreenShotEx0/SaveScreenShotEx1/SaveScreenShotEx2 +- Enabled in-game screenshot functionality in Animal Crossing: New Horizons, and Monster Hunter Rise, using ImageSharp to save the raw screenshot data to a JPG file. + - There is currently a bug in Monster Hunter Rise that requires spamming the 'A' button in order for the screenshot function to work the first time. This is being worked on and will hopefully be fixed soon! +- To retrieve screenshots: + 1. Click on File > Open Ryujinx Folder. + 2. Drill down to the sdcard -> Nintendo -> Album folder. + 3. Screenshots will be saved in dated subfolders e.g. %AppData%\Ryujinx\sdcard\Nintendo\Album\2021\03\26\2021032601020300-0123456789ABCDEF0123456789ABCDEF.jpg + +## 1.0.6800 - 2021-03-25 +### Added +- Implemented CPU instructions: Sqdmulh_Ve & Sqrdmulh_Ve Inst.s with tests. + - Fixes missing opcode crash on Monster Hunter Rise. + +## 1.0.6799 - 2021-03-25 +### Added +- Implemented SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled and added a placeholder for the ectx services. + - Fixes a missing service crash on CARRION, The Witch and The 66 Mushrooms, Pixel Game Maker Series Werewolf Princess Kaguya, Monster Hunter Rise v1.1.1, and any other/future game created with Nintendo SDK 11.x. + +## 1.0.6798 - 2021-03-24 +### Changed +- Cleaned up sfdnsres service implementation and added several related services: + - Implemented GetAddrInfoRequest. Partially implemented GetHostByNameRequestWithOptions, GetHostByAddrRequestWithOptions and GetAddrInfoRequestWithOptions. + - Fixes missing service crashes on over 100 tested games. Many games that could not boot before are now playable; some cannot go in-game if designed to rely on a connection to the internet (which is blocked). + - Added a DNS blacklist to prevent games from reaching Nintendo online services. +- Reduces code differences between master and the LDN build. + +## 1.0.6797 - 2021-03-22 +### Changed +- Optimized the operation of & code for the GUI progress reporting (PPTC & Shader Cache loading bars). + - Fixes an issue that could cause a string of GTK-related code warnings to pop-up in the console upon opening the emulator. + +## 1.0.6795/1.0.6796 - 2021-03-20 +### Changed +- Adjusted some CI build configurations. + +## 1.0.6794 - 2021-03-19 +### Changed +- The shader cache now detects and avoids caching shaders that use bindless textures. + - Prevents corruption of the shader cache that could cause a crash on launch in games that have bindless textures (mostly Unreal Engine 4 games). + - This is a temporary stopgap solution to resolve shader cache issues until proper bindless support is implemented. + +## 1.0.6793 - 2021-03-18 +### Fixed +- Improved linear texture compatibility rules. + - Resolves an issue where small or width-aligned (rather than byte aligned) textures would fail to create a view of existing data. Creates a copy dependency, as size change may be risky. View layout compatibility is now determined by the stride shifted by the level, rather than a stride caculated from the level's width. Linear textures are considered copy compatible when they have matching stride. + - Fixes missing lens flare in Mario Kart 8 Deluxe and Splatoon 2. + - Fixes an issue causing Cross Code to boot to a black screen. + +## 1.0.6792 - 2021-03-18 +### Changed +- Removed the IIpcService.cs interface references as it is no longer needed or used. + +## 1.0.6791 - 2021-03-18 +### Added +- Added more items to standard logs for troubleshooting purposes. + - Now logs Docked/Handheld state/toggling, selected audio backend, and Vsync status/toggling. + +## 1.0.6790 - 2021-03-18 +### Added +- Implemented ApplicationErrorArg to the Error Applet. + - This was already implemented in the LDN build and as such has already undergone sufficient testing. + - Reduces code differences between the LDN build and master. + +## 1.0.6789 - 2021-03-18 +### Changed +- Reworded some pop-up dialog boxes for better clarity of the messages to the end user. No emulator functionality changes. + +## 1.0.6788 - 2021-03-18 +### Added +- Added Amiibo scan emulation of all Amiibos. + - Uses a self-hosted fork of the AmiiboAPI RESTful API. No need to scan any bin files! + - Amiibo can be trained in Super Smash Bros. +To scan an Amiibo: +1. Go to the Amiibo-specific scanning location or in-game menu option in a supported game. +2. Click on the Ryujinx Actions menu header > Scan an Amiibo. That's it! + +## 1.0.6787 - 2021-03-16 +### Changed +- Improved the grammar in a code comment. No emulator functionality changes. + +## 1.0.6786 - 2021-03-15 +### Changed +- Improved portable mode operation: + - Implemented an auto-enabling of portable mode if the user places a subfolder named "portable" beneath the Ryujinx program folder. If detected, Ryujinx will automatically use it as the default location for all system files (keys/PPTC/shaders etc.). + - Using this method, the Ryujinx program folder is now fully able to be moved around at will without needing to use any special shortcuts or command line parameters, and will still retain portable functionality. Thanks to a previous enhancement to the auto-update function, the "portable" subfolder will be preserved during auto-update processes. + +## 1.0.6785 - 2021-03-14 +### Fixed +- Fixed a typo in a debug assert message within the OpenAL implementation details. + +## 1.0.6784 - 2021-03-14 +### Changed +- The active audio device is now reported as a TV, rather than internal speakers. + - Fixes noticeably poor audio quality in Pokémon Sword and Shield, and potentially other games. + - May also enable 5.1 audio output on games where it was not functioning properly before. + +## 1.0.6783 - 2021-03-13 +### Changed +- Implemented an override to the openal-soft audio output mode to fix a potential loss in audio quality while using the OpenAL backend if Windows audio output was in headphone mode. + +## 1.0.6782 - 2021-03-13 +### Fixed +- Fixed a Github actions warning. No emulator code changes. + +## 1.0.6781 - 2021-03-10 +### Fixed +- ILibraryAppletAccessor handles are now closed on disposal. + - Fixes an issue where if a game was calling the controller applet multiple times it could result in an "out of handles" crash. + +## 1.0.6780 - 2021-03-09 +### Fixed +- Fixed lineSize for LinearStrided to Linear conversion. + - Fixes a possible crash when width is greater than stride, which can happen due to alignment when copying textures with the copy buffer method. The only currently known game where this had occurred is Bravely Default II. + +## 1.0.6779 - 2021-03-09 +### Changed +- Emulator now allows bindless handles to be found for image/texture instructions with predicates, when the assignment of the texture handle is within the same predicate. + - Fixes character shadows and black, soulless eyes on Bravely Default II. + - Fixes broken rendering in the Billiards and Shooting Gallery mini-games in 51 Worldwide Games. + - Probably fixes other broken rendering in games with bindless textures. + - Resolves conflicts between bindless textures and shader cache that previously required shader cache to be purged or disabled prior to each boot of certain affected games. + - For affected games (such as Super Mario Party, 51 Worldwide Games, and many newer UE4 games) you may purge the shader cache once. Note: not all UE4 games are yet shader cache compatible. + +## 1.0.6778 - 2021-03-08 +### Fixed +- Reworked Buffer Textures to create their buffers in the TextureManager, then bind them with the BufferManager later. + - Fixes an issue where a buffer texture's buffer could be invalidated after it is bound, but before use. +- Fixed width unpacking for large buffer textures. The width is now 32-bit rather than 16. +- Forced buffer textures to be rebound whenever any buffer is created, as using the handle id wasn't reliable, and the cost of binding isn't too high. +- The sum of these fixes vertex explosions and flickering animations in UE4 games. May affect games that use ImageStore, as now those textures are flushed on read/write. + - Resolves all known lighting issues in Fire Emblem: Three Houses. + +## 1.0.6777 - 2021-03-07 +### Changed +- Modified the component mask to be flipped if the target is BGRA. + - On its own, should not result in any visible changes. Requires better bindless texture handling in order for visual improvements to be realized (such as fixing the shadows in Braveley Default II battles). + +## 1.0.6776 - 2021-03-06 +### Changed +- Removed unused physical region memory tracking. + - Accelerates memory unmap/remap of virtual addresses that were once used for GPU resources, as well as reduce the cost of creating new tracking handles. + - Reduces load times and non-shader related stutter in games that perform many unmap/remap operations such as Unreal Engine 4 games, among others. + - Tracking regions/handles are now notified about an unmap operation before they are actually unmapped. +Example of non-shader related stutter being improved by this update: +Before +https://cdn.discordapp.com/attachments/728011297857339422/817785701834817566/bd2_master.mp4 + +After +https://cdn.discordapp.com/attachments/728011297857339422/817785806307590144/bd2_pr.mp4 + + +## 1.0.6775 - 2021-03-06 +### Changed +- Improved handling for unmapped GPU resources. + - Fixed a memory tracking bug that would set protection on empty PTEs (caused some buffer tracking crashes). + - When a texture's memory is (partially) unmapped, all pool references are forcibly removed and the texture must be rediscovered to draw with it. This will also force the texture discovery to always compare the texture's range for a match. + - RegionHandles now know if they are unmapped, and automatically unset their dirty flag when unmapped. + - Partial texture sync now loads only the region of textures that has been modified. Unmapped memory tracking handles cause dirty flags for a texture group handle to be ignored. + - Significantly improves emulator stability in newer UE4 games such as Bravely Default II. + - Fixes texture swaps in Bravely Default II. Note: this game still suffers from some graphical issues such as random vertex explosions, missing facial animations, and missing shadows. + - Improves emulator stability in Super Smash Bros. Ultimate. + - Fixes a regression causing a crash on launch in Contra: Rogue Corps. The game is once again playable. + +## 1.0.6774 - 2021-03-04 +### Fixed +- Fixed SetStandardSteadyClockInternalOffset permission check. + +## 1.0.6773 - 2021-03-02 +### Changed +- Added loading bars at the bottom of the main window for pre-boot host shader cache building and PPTC translation operations to give users a visual indicator of boot progress. + - Removed associated console entries for both of these activities. Rebuilding shaders after an invalidating event will show both in the console and in the loading bar. + +## 1.0.6772 - 2021-03-02 +### Added +- Added fast paths in the audio renderer for AArch64 in all current fast paths. + +## 1.0.6771 - 2021-03-02 +### Changed +- Improved efficiency of "Hide Cursor on Idle" operation to minimize overhead. + +## 1.0.6770 - 2021-03-02 +### Changed +GPU: +- Fixed various issues with view compatibility, synchronization and creation. +- Greatly improved texture view creation, keeping it within a strict storage-view hierarchy. (no view-views) + - Fixes a memory leak in Hyrule Warriors: Age of Calamity. Its VRAM usage is now rather low. :) +- Reworked texture memory tracking to use a structure called a "Texture Group". + - There is one texture group for each storage texture, and views of that storage cover a subset of its "Texture Group Handles". + - A handle can represent one or more sub-image, which can be a mip level, array layer, cubemap face or 3d texture slice. + - This allows memory tracking to be shared between views, which is good as they also share internal data. + - This fixes issues where cpu texture invalidation would be missed or repeat sync when using multiple views of the same texture. + - Affected games: + - Fixed swapping textures in Xenoblade Chronicles: Definitive Edition, Xenoblade 2, MH:GU, potentially other games. +- Introduces "Copy Dependencies" between handles of a texture group - indicating that their contents must be copied to another texture after modification. + - Allows copies between two textures that are view compatible, but have different storages. + - Replaces two old copy-on-create methods that were used for rendering to 3D and compressed textures. + - Also removes the workaround for keeping the copied data in these textures, which was to disable memory tracking for them entirely. + - This fixes colour ramps in a large number of first party games such as Super Mario Odyssey, where they would use the first rendered version of the 3D texture and look incorrect on future levels/rooms. + - Affected games: + - Fixes nearly all issues with cubemaps/lighting in Mario Kart 8 Deluxe. + - Fixes issues in Splatoon 2 where lighting would be unusually dark on the first load of the plaza, or on random stages. + - Fixes issues in Splatoon 2 where the time remaining or menu button text would be missing or incorrect. + - Fixes a lot of issues with textures in A Hat In Time (Unreal Engine 3) + - Fix issues with textures in Yoshi's Crafted World, and generally other Unreal Engine 4 games + - Bravely Default 2 requires its own set of gpu memory management fixes, coming some point soon. + - Fixes issues with DOF in Animal Crossing: New Horizons (as well as Copy Dependencies) + - Pikmin 3's intro video is now visible. Any possible issues with the Koppad have been thwarted. + - Probably a lot more. + - Should greatly decrease chance of GPU memory becoming corrupted by a texture flush. +- Reworked size calculation for mipmapped 3D textures. + - Fixes fog, waves, water caustics, mario dirt overlay and much more in Super Mario Odyssey (also needs copy dependencies) + +For a screenshot collection, see https://github.com/ryujinx-mirror/ryujinx/pull/2001#issuecomment-782771370 + +## 1.0.6769 - 2021-03-01 +### Fixed +- Fixed a regression in SignalMemoryTracking, introduced in 1.0.6763 (PR 2044), that could cause a black screen on the Monster Hunter Rise Demo. + +## 1.0.6768 - 2021-02-28 +### Changed +- Revised SystemInfo: + - Extract CPU name from CPUID when supported. + - Linux: Robust parsing of procfs files + - Windows: Prefer native calls to WMI + - Remove unnecessary virtual specifiers +- Reduces application startup time by roughly 1 second. + +## 1.0.6767 - 2021-02-28 +### Fixed +- Modified the SoundIO session implementation to be lock-free. + - Fixes a rarely occurring random crash related to SoundIO introduced in 1.0.6732 (PR 2007). + - Mildly improves performance while using SoundIO. + +## 1.0.6764 - 2021-02-28 +### Changed +- Switched ci to use Github artifacts for PRs. No emulator code changes. + +## 1.0.6763 - 2021-02-28 +### Fixed +- Fixed virtual address overflow near ulong limit. + - Creates an overflow-safe way of counting pages for affected functions and replaces the address-based loop in IsRangeMapped with a page-based loop. + +## 1.0.6762 - 2021-02-28 +### Changed +- Updated wording in the auto-updater. + +## 1.0.6761 - 2021-02-28 +### Changed +- Improved heuristic for showing the software keyboard. + - Fixes an inline keyboard soft-lock that occurred in God Eater 3 when changing the codename of your character. + +## 1.0.6732 - 2021-02-25 +### Changed +- Haydn: Part 1 (based on reverse engineering of audio 11.0.0) + - Complete reimplementation of audout and audin. + - Audin only has a dummy backend at this time. + - Dramatically reduces overall CPU usage in both audio backends (50% CPU usage reduction on average with SoundIO backend - your mileage may vary). May improve FPS in situations where the CPU was previously maxed out. + - Audio Renderer now initializes its backend on demand instead of keeping two up all the time. + - All audio backend implementations are now in their own project. + - Ryujinx.Audio.Renderer was renamed to Ryujinx.Audio and as such appropriately refactored. + - Resolves a missing audin service crash in FUZE4. + - Resolves an audout-related crash on launch in OniNaki. + +## 1.0.6714 - 2021-02-24 +### Fixed +- Modified the auto-updater to preserve user execute permissions in Unix/Linux environments. + +## 1.0.6690 - 2021-02-23 +### Changed +- Modified the auto-updater behavior to only purge Ryujinx files when installing a new update. + - Allows "portable mode" relative paths beneath the Ryujinx executable or other subfolders to be safely used as data directories. Make sure to wait until after this update is installed before changing your portable mode paths! + +## 1.0.6687 - 2021-02-23 +### Fixed +- Fixed the unwanted propagation of a relocatable constant in a specific case. + - Resolves a particular PPTC-related crash presenting a "failed to encode constant" error. + +## 1.0.6682 - 2021-02-22 +### Changed +- Updated README.MD to include the latest game compatibility list counts. + +## 1.0.6680 - 2021-02-22 +### Added +- The auto-updater now uses multiple download threads, noticeably reducing download time in most cases. + +## 1.0.6674 - 2021-02-22 +### Added +- Implemented VCNT instruction. + - Fixes a missing opcode crash on Valkyria Chronicles, which now goes in-game. + +## 1.0.6670 - 2021-02-21 +### Changed +- PPTC & Pool Enhancements: + - Fixed memory instability / excessive memory spikes in some "heavy" games after loading/saving .cache files (fixes issue reported by users); + - Fixed limitation of loading/saving large .cache files (fixes issue reported by users); + - Reduced memory usage when loading/saving .cache files; + - Ptc.Load & Ptc.Save now use XXHash128, which is 10 times faster than MD5; + - Fixed redundant saving / log spamming of .info files (fixes issue reported by users); + - Added a simple PtcFormatter library for deserialization/serialization, which does not require reflection, in use at PtcJumpTable and PtcProfiler; improves maintainability and simplicity / readability of affected code. + - Improved handling of Pools (Slim) for PPTC, allowing to halve the number of pools in use and thus reducing memory usage and slightly increasing the translation speed (you save ~1 second every 1k translations (for a CPU with 4+4 cores); so for 30k translations you save ~30 seconds (for the same CPU)); + - BitMap pools are now limited during use and disposed after use; + - Pools Limiter is now configurable. + +## 1.0.6667 - 2021-02-21 +### Changed +- Converted Copy operations into Fill operations instead of adding one in HybridAllocator. + - Reduces code size and register pressure. + +## 1.0.6662 - 2021-02-21 +### Added +- Implemented SetLcdBacklighOffEnabled service call. + - Fixes a missing service crash that could occur in Super Smash Bros. Ultimate vault menus. + +## 1.0.6659 - 2021-02-20 +### Changed +- Miscellaneous input handling refactoring. + - Resolves myriad input mapping issues including phantom button presses while mapping DirectInput devices. + +## 1.0.6635 - 2021-02-19 +### Changed +- Windows now recognizes Ryujinx as a DPI-aware application. Also fixes DPI scaling in other operating systems. + - Fixes menus and controller configuration screens being too cramped or cutting off parts of the window. + +## 1.0.6634 - 2021-02-19 +### Changed +- Ryujinx now allows modding of AddOnContent (DLC) RomFS. + +## 1.0.6631 - 2021-02-19 +### Changed +- Modified the "Ignore Missing Services" option to take effect immediately, even during emulation. + +## 1.0.6630 - 2021-02-19 +### Fixed +- Fixed another issue introduced in the IPC refactoring changes involving returned buffer sizes. These are now provided explicitly in GetClientId calls. + - Resolves a crash in Horizon Chase Turbo, Doom, and potentially other games with similar calls. + +## 1.0.6604 - 2021-02-17 +### Fixed +- Fixed an issue introduced in the IPC refactoring changes involving returned buffer sizes. These are now provided explicitly in GetFirmwareVersion calls. + - Resolves some crashes occurring in homebrew. + +## 1.0.6587 - 2021-02-16 +### Fixed +- Fixed a performance regression introduced in 1.0.6582 (PR 1987) involving memory tracking. The read/write flags had been inadvertently inverted. + +## 1.0.6582 - 2021-02-16 +### Changed +- Addresses are now properly validated when the PTE is loaded from the page table. + - Any invalid CPU memory addresses will now print an InvalidMemoryRegionException instead of just showing AccessViolationException on the console. +- Address validation has been moved inside the EmitPtPointerLoad function, rather than doing the check before calling it. + +## 1.0.6575 - 2021-02-15 +### Added +- Added an option to hide the mouse cursor on inactivity. No more pesky mouse cursor while you're playing! + - This option can be enabled in Options > Settings > General tab > "Hide Cursor On Idle". + +## 1.0.6551 - 2021-02-11 +### Added +- Implemented GetSystemSessionId and added associated prepo permission levels. + - Fixes a missing service crash on launch on Super Mario 3D World + Bowser's Fury. + +## 1.0.6548 - 2021-02-11 +### Changed +- Corrected joy-con image aspect ratio. + +## 1.0.6546 - 2021-02-10 +### Changed +- Enabled multithreaded decoding of VP9 NVDEC videos. + - IImproves performance on several first party intro videos, providing noticeably smoother video & audio, included in the following titles: Super Smash Bros. Ultimate, Pokémon Let's Go Eevee/Pikachu, The Legend of Zelda: Link's Awakening, Fire Emblem: Three Houses, Tokyo Mirage Session #FE Encore, Animal Crossing: New Horizons, and Mr. Driller DrillLand. + +## 1.0.6545 - 2021-02-10 +### Changed +- Updated joy-con images in GUI for better visibility. + +## 1.0.6544 - 2021-02-10 +### Changed +- Improved inline keyboard compatibility. + - Implements a new keyboard request used by Monster Hunter Rise Demo. + - Fixes a softlock or crash on Monster Hunter Generations Ultimate in certain situations when using the keyboard. + - Fixes a crash in Dark Souls Remastered if entering a player name for a second time that is shorter than the first. + +## 1.0.6540 - 2021-02-10 +### Changed +- Edited the global.json file to allow the use of dotnet sdk 5.0.xxx rather than locking it to 5.0.100. + +## 1.0.6532 - 2021-02-09 +### Changed +- The emulator now automatically loads a default configuration if an invalid configuration is detected. + +## 1.0.6529 - 2021-02-09 +### Added +- Implemented ISystemSettingsServer.IsUserSystemClockAutomaticCorrectionEnabled service call. + - Enables functionality in some homebrew applications. + +## 1.0.6521 - 2021-02-07 +### Fixed +- Fixed non-contiguous IPC memory copies. + - Fixes a specific crash on Bravely Default II Demo, Balan Wonderworld Demo, and possibly other games introduced in 1.0.5899 (PR #1458) + +## 1.0.6520 - 2021-02-07 +### Changed +- Optimised JIT code generation to reduce register utilisation. + - This change may provide a minor improvement in code compilation time and quality. + +## 1.0.6519 - 2021-02-07 +### Changed +- Simplified code generation when using multiple vertex shader programs. + - This is a code style change, and should not have any impact on emulator performance. + +## 1.0.6518 - 2021-02-07 +### Changed +- Fixed the updater application icon on Linux. + +## 1.0.6517 - 2021-02-07 +### Changed +- Disabled partial JIT invalidation on un-map. + - Fixes a significant performance regression in some games introduced by 1.0.6096 (PR #1518). + +## 1.0.6516 - 2021-02-07 +### Added +- Added support for the ETC2 (RGB) texture format. + - Fixes corrupt textures in Vegas Party. + +## 1.0.6471 - 2021-02-01 +### Changed +- Disabled flushing of multisample textures. + - Fixes a specific crash on Super Bomberman R, fault - milestone one, Leisure Suit Larry, and possibly other untested games. + +## 1.0.6469 - 2021-01-31 +### Changed +- Miscellaneous refactoring of shader call code. No expected changes in emulator behavior. + +## 1.0.6455 - 2021-01-29 +### Added +- Added support for geometry shader passthrough. + - Improves rendering Marvel Ultimate Alliance 3. Note: the game is still not playable due to other issues. + +## 1.0.6453 - 2021-01-29 +### Changed +- Updated the text label for the PPTC toggle in the emulator settings window to improve user experience. + +## 1.0.6452 - 2021-01-29 +### Added +- Added a texture/sampler descriptor cache for faster pool invalidation. + - Potentially improves performance in games that have stutter caused by texture pool invalidation. + - Fixed a regression in Mario Kart 8 Deluxe introduced in 1.0.6337 (PR 1905) that would evict a course's cube-map array and shadow map from the pool while playing. + +## 1.0.6441 - 2021-01-27 +### Added +- Added support for multiple destination operands on the IR rather than just one. + - As shader changes occurred, shader caches have been gracefully invalidated; the next time a game is launched the cache will automatically rebuild at boot time. + +## 1.0.6440 - 2021-01-27 +### Fixed +- Lowered precision of estimate instruction results to match ARM behavior. + - Fixes a logic bug in Catherine: Full Body preventing progression of gameplay. + - Fixes a logic bug freezing most controller input in Slayaway Camp: Butcher's Cut, Friday the 13th: Killer Puzzle, and Out Of The Box. + +## 1.0.6432 - 2021-01-26 +### Added +- Support shader F32 to bool re-interpretation + +## 1.0.6429 - 2021-01-26 +### Fixed +- Fixed a regression introduced in 1.0.6420 (PR 1948) that would generate invalid code for atomic SSBO operations. + - Fixes regression on Persona 5 Scramble where it could slow to a crawl and/or crash before or at the title screen. + - Fixes regression on Monster Hunter Rise Demo where some objects were rendered completely black. + +## 1.0.6426 - 2021-01-26 +### Changed +- Made some simple changes on the OpenGL backend to significantly reduce the number of redundant calls. + - Has potential to offer a minor improvement to performance depending on the game. + +## 1.0.6425 - 2021-01-26 +### Fixed +- Changed the implementation of conditional rendering to actually compare the values on memory even if they don't come from queries (instead of just returning false). + - Improves rendering Marvel Ultimate Alliance 3. Note: the game is still not playable due to other issues. + +## 1.0.6424 - 2021-01-26 +### Changed +- Ryujinx will now re-check for keys before verifying a firmware install. The user will no longer have to close & reopen the application in order for keys to be recognized on initial setup/clean install. + +## 1.0.6423 - 2021-01-26 +### Fixed +- Fixed a regression that broke compute shader code dumping. + - This is a developer-only function and does not affect emulator operation during gameplay. + +## 1.0.6421 - 2021-01-26 +### Added +- Add support for shader atomic min/max operations. + - Fixes missing graphics on Disgaea 6 Demo. + +## 1.0.6419 - 2021-01-26 +### Added +- Implemented a prfm instruction variant. + - Fixes a missing opcode crash in Edna & Harvey: Harvey's New Eyes and Deponia. + +## 1.0.6418 - 2021-01-26 +### Changed +- Increase the controller input window size to prevent the controller input window from scrolling. + +## 1.0.6407 - 2021-01-24 +### Changed +- Prevent the display from sleeping whilst a game is running on Windows. + +## 1.0.6406 - 2021-01-24 +### Added +- Added vector fast paths for VCLZ ARM instructions. + +## 1.0.6405 - 2021-01-24 +### Changed +- Modified storage buffer to allow out of bounds access by binding the entire buffer rather than just the range that the game says its using. + - Fixes overly bright lighting in Yo-kai Watch 4/++ and other Yo-kai games. + +## 1.0.6404 - 2021-01-24 +### Changed +- Updated the controller images in the input mapping UI for better visibility across multiple themes. + +## 1.0.6403 - 2021-01-24 +### Changed +- Implemented a workaround for Github Actions windows-latest restore failures. No emulator code changes. + +## 1.0.6392 - 2021-01-23 +### Changed +- Changed the behavior of exact texture matches to now compare the physical regions if the virtual address is not the same, and allows a match if the virtual addresses are different yet mapped to the same physical region. + - Fixes a regression on Rune Factory 4 Special and New Super Mario Brothers U Deluxe introduced in 1.0.6337 (PR 1905). + +## 1.0.6391 - 2021-01-23 +### Fixed +- Fixed TZName parsing in TZIF footer. + - Fixes incorrect timezone offset seen in games such as Animal Crossing: New Horizons. + +## 1.0.6389 - 2021-01-22 +### Fixed +- Fixed an inverted read only flag in transfer memory creation. + - Fixes an issue with the inline swkbd implementation. + +## 1.0.6373 - 2021-01-20 +### Fixed +- Fixed an issue preventing the SL + SR buttons from being mapped properly. + +## 1.0.6369 - 2021-01-19 +### Fixed +- Fixed a regression introduced in 1.0.6351 (PR 1929) that caused swkbd prompts to softlock or crash the respective game when called. + +## 1.0.6367 - 2021-01-19 +### Added +- Implemented Fmaxnmp & Fminnmp Scalar instructions. + - Fixes a missing opcode crash in Mortal Kombat 11. The game is still not playable due to rendering issues. + +## 1.0.6355 - 2021-01-18 +### Changed +- Enabled parallel ASTC decoding by default. + - Mitigates some ASTC texture load related stutter on games with ASTC textures. + +## 1.0.6354 - 2021-01-18 +### Fixed +- Fixed a regression introduced in 1.0.6327 (PR 1911) that caused Kirby Star Allies to crash on boot, as the game was trying to use an invalid min LOD value, leading to an out of range exception. + +## 1.0.6353 - 2021-01-18 +### Fixed +- Fixed a crash on exit of the emulator and a crash on stopping emulation, both occurring on Linux. + - Resolves an issue preventing embedded games from launching on Linux (as launching embedded games first stops emulation, which was crashing the emulator). + +## 1.0.6352 - 2021-01-18 +### Changed +- Reduced temporary copy/fill buffer size from 1GB to 16MB. + - Fixes a possible out of memory exception if the user is already low on RAM during game load/startup. Does not have any significant impact other than that. + +## 1.0.6351 - 2021-01-18 +### Added +- Implemented ILibraryAppletCreator::CreateHandleStorage call, and + - Fixes the am IStorage Write ReadOnly check. + - Fixes a regression introduced in 1.0.6291 (PR 1868) that caused Monster Hunter Generations Ultimate to crash on launch in certain scenarios. + +## 1.0.6348 - 2021-01-18 +### Changed +- Changed joystick inputs to be treated as in a circular zone instead of a square zone. + - Fixes diagonal analog joystick input not working when mapped to keyboard controls. + +## 1.0.6346 - 2021-01-18 +### Fixed +- Fixed the missing Ryujinx icon in Linux that has been missing since the GUI refactor. + +## 1.0.6341 - 2021-01-17 +### Changed +- Implemented lazy flush-on-read for Buffers (SSBO/Copy). This allows SSBO data to be written back to guest memory when it's needed. + - Fixes flickering in Link's Awakening. + - This also allows data written into an SSBO to be used as part of a draw command, or by other operations within the GPU. This is required for MH: Rise Demo. +- As part of lazy flushing, when a page is dirtied by CPU, it is assumed that the most recently written SSBOs are not the target of the CPU write, and are not updated. + - Fixes particle effects that were broken or constantly restarted their animation in many first party games. See the PR for visual examples. +- Greatly speed up buffer copies via two new paths (direct cpu copy, or lazy buffer flush) chosen depending on whether the buffer has been written to before. + - Mostly affects performance in Unity games and Pokémon (which has other issues). + - A combination of all changes has fixed vertex explosions in Unity games. + - Hyrule Warriors vertex explosions are somewhat reduced (but can still happen) +- Fixed a bug with Memory Tracking where write tracking (dirty flags) could be lost after read tracking (flush) was triggered. + - This fixes a potential crash in Mario Kart 8, where texture data could be flushed at an inappropriate time. + +## 1.0.6337 - 2021-01-17 +### Added +- Added support for GPU textures mapped at non-contiguous CPU regions as some games require them, such as the Monster Hunter Rise Demo and some UE4 games. + - Improves rendering on Monster Hunter Rise Demo and many Unreal Engine 4 games. + +## 1.0.6327 - 2021-01-15 +### Fixed +- Fixed mipmap base level being ignored for sampled textures and images. This change allows the correct mipmap level to be accessed from the shader. + - Improves shadow rendering on Monster Hunter Rise Demo. + - Fixes the black faces/other corruption in Catherine: Full Body. The game now renders correctly. + +## 1.0.6324 - 2021-01-14 +### Added +- Added a menu option to toggle the prompt displayed when closing the emulator while a game is playing. This can be found in Options > Settings and is called 'Show "Confirm Exit" Dialog'. This option is enabled by default. + +## 1.0.6318 - 2021-01-13 +### Fixed +- Fixed a bug in the LOP3 shader causing a condition to be read from the wrong bits. + - As shader changes occurred, shader caches have been gracefully invalidated; the next time a game is launched the cache will automatically rebuild at boot time. + +## 1.0.6311 - 2021-01-13 +### Changed +- Changed the SurfaceFlinger android-fence callback to be called immediately when the fence is invalid. + - Fixes an exception when launching homebrew. + +## 1.0.6308 - 2021-01-12 +### Added +- Implement shader CC mode for ISCADD, X mode for ISETP and fix STL/STS/STG with RZ + - This adds support for a number of additional shader instruction encodings. + - This resolves a number of issues with Monster Hunter: Rise Demo, and potentially other games. + +## 1.0.6307 - 2021-01-12 +### Added +- Implement clear buffer + - Fixes an issue where certain GPU buffers were not being cleared when using specific NVN features. + - This resolves a number of issues with Monster Hunter: Rise Demo, and potentially other games. + +## 1.0.6301 - 2021-01-12 +### Added +- Added a simple pools limiter. + - Reduces emulator memory usage. The amount of memory usage savings are dependent on the game but test results showed an average of 50% reduction. + - Avoids memory peaks on launch; spikes nearing or equaling the amount of your RAM should no longer occur. + - Further reduces game load times, with the amount of time saved varying game to game. Average time reduction of 10-15%. + +## 1.0.6291 - 2021-01-11 +### Added +- Added support for inline software keyboard. + - Enables Monster Hunter Generations Ultimate and Gnosia to go in-game without a save file, fixes a crash in menus on Dark Souls Remastered, and allows Fate EXTELLA/LINK to enter a custom player name. + +## 1.0.6288 - 2021-01-11 +### Changed +- Disabled the "Simulate Wake-up" function from being able to be executed while a game is not running. + - Resolves an error message & potential crash in the emulator if this function is used while not running a game. + +## 1.0.6286 - 2021-01-10 +### Changed +- Only attempt to parse/load "Common" ticket type. + - Fixes an issue loading NSPs dumped using nxdumptool with a specific option enabled. + +## 1.0.6283 - 2021-01-10 +### Added +- Stubbed IsFreeCommunicationAvailable service call. + - Fixes a missing service crash in Monster Hunter Rise Demo. The game now boots without having to enable 'Ignore Missing Services'. + +## 1.0.6281 - 2021-01-10 +### Fixed +- Fixed an issue with compute reserved constant buffers not being updated when, in fact, they should have been. + - Fixes a bug on Monster Hunter Rise Demo where the screen would randomly turn black with white elements due to compute reading values from the wrong SSBO. + - Fixes vertex explosions on Super Smash Brothers Ultimate. + +## 1.0.6276 - 2021-01-10 +### Fixed +- Fixed a recent code typo that broke the auto-updater.\ +- DOWNLOAD THIS UPDATE MANUALLY! + +## 1.0.6269 - 2021-01-09 +### Fixed +- Fixed remap ioctl when the handle value is 0. + - Fixes an invalid address crash on Monster Hunter Rise Demo. + +## 1.0.6260 - 2021-01-08 +### Added +- Stubbed PresetLibraryAppletGpuTimeSliceZero service call. + - Resolves missing service crash on boot on Monster Hunter Rise Demo. Note that the game is still not playable at this time. + +## 1.0.6259 - 2021-01-08 +### Changed +- Added support for conditional on BRK and SYNC shader instructions. + - Improves rendering on Monster Hunter Rise Demo, but there are still other bugs preventing most objects from being drawn. + - As shader changes occurred, shader caches have been gracefully invalidated; the next time a game is launched the cache will automatically rebuild at boot time. + +## 1.0.6250 - 2021-01-08 +### Changed +- Refactored GUI code. This is part 1 of a multi-part GUI code cleanup. + - Subscribers to the $10 or $20 monthly Patreon tiers are now listed in the emulator's Help > About section. Thank you for your support! + +## 1.0.6248 - 2021-01-07 +### Changed +- Updated README.MD to reflect recent emulator changes. + +## 1.0.6245 - 2021-01-07 +### Fixed +- Updated the missing sample timestamp in DebugPad. + - Fixes a regression introduced in the HID Sharedmem Rework (PR 1003) that caused several games not to boot. These games now boot again. + +## 1.0.6235 - 2021-01-04 +### Added +GPU: +- Implemented some missing texture formats. + - Improves rendering in Psikyo Shooting Stars Alpha and Bravo, Sky Gamblers - Afterburner, and possibly other games that use these texture formats. + +## 1.0.6229 - 2021-01-04 +### Added +- Implemented Pmull_V instructions with Clmul fast path for the "1/2D -> 1Q" variant & Sse fast path and slow path for both the "8/16B -> 8H" and "1/2D -> 1Q" variants; with Test. + +## 1.0.6215 - 2021-01-03 +### Fixed +- Fixed a regression introduced by 1.0.6176 (PR 1766) affecting unpacked games. + +## 1.0.6213 - 2021-01-02 +### Changed +- Refactored & cleaned up account services implementation. + +## 1.0.6212 - 2021-01-02 +### Fixed +- Fixes a regression introduced in 1.0.6122 (PR 1741) that caused issues with homebrew apps/games not always using fences. + +## 1.0.6209 - 2021-01-02 +### Added +- Implemented apm:p service call. This seems to be used only by homebrew at this time. + +## 1.0.6200 - 2021-01-01 +### Changed +- Cleaned up/removed long <-> ulong casts from Nvservices code. + - Code cleanup only. No emulator functionality change. + +## 1.0.6196 - 2021-01-01 +### Changed +- Updated KAddressArbiter implementation to 11.x kernel. + - Update Wait/SignalProcessWideKey implementation to match changes made on official 11.0 kernel. + - They now store a bool at the key address indicating if the number of threads waiting the condition variable is > 0. Games targeting firmware 11.0 or newer needs this to work properly (no games are know to target it so far). + - Update SignalAndModifyIfEqual implementation to match changes made on official 7.0 kernel. + - The way how the value is modified changed. Games targeting firmware 7.0 or newer might need this to work properly. + - Fix a bug where SignalToAddress would use the old priority even if the thread priority was updated after it started waiting (I'm not sure if this was a bug that was present on 6.x kernel or just an oversight). + - Simplified the code by sharing the function used to wake matching threads and remove them from the list. The `InsertSortedByPriority` function was also removed since it sorts by priority when looking for threads now. + - Based on mesosphere implementation. + +## 1.0.6194 - 2021-01-01 +### Changed +- Profiled Persistent Translation Cache (PPTC) is now enabled by default. + +## 1.0.6190 - 2021-01-01 +### Changed +- Update copyright headers for 2021. + - Happy new Year! + +## 1.0.6182 - 2020-12-30 +### Changed +- Redistribute updated OpenAL binary. + - WWe now include a copy of OpenAL out-of-the box with Ryujinx. This removes the need to manually download and install OpenAL. We've also moved from using the fork provided by openal.org to the fork provided by openal-soft.org which is still maintained, and has had 1000's of improvements over the old version. This should improve OpenAL audio issues slightly in some games that suffered previously. + +## 1.0.6176 - 2020-12-29 +### Added +- Implemented the ability to add new executables when running a game. This allows more possibilities for game modding. + +## 1.0.6144 - 2020-12-26 +### Changed +- Auto-updater restart after update function now only requires a single click on the "Yes" button. + +## 1.0.6141 - 2020-12-24 +### Fixed +- Miscellaneous error message verbiage fix. No change in emulator functionality. + +## 1.0.6134 / 1.0.6136 - 2020-12-24 +### Changed +- Free up memory allocated by Pools (via GC) during any translations at boot time (due to PPTC) and when closing a title. + +## 1.0.6127 - 2020-12-17 +### Changed +- Fixed Vnmls_S instruction. +- Improved Vfma_S, Vfms_S & Vfnma_S, Vfnms_S instructions performance. +- Added Vfms_V instruction. + +## 1.0.6125 - 2020-12-17 +### Changed +- Miscellaneous PPTC optimizations to increase resilience and reduce overhead. Note for users: existing .info (profiling) files will be invalidated. + - Reduction of the size of both the .info and the .cache files. + - Faster deserialization/serialization (implies reduced loading/saving times). + - Saving of JitCache memory. + - Improved Logs. + +## 1.0.6122 - 2020-12-17 +### Changed +- Interrupt GPU command processing when a frame becomes ready, presenting it immediately. + - Greatly improves frame pacing in games that do not wait for a present before starting to draw the next frame (and run below full speed) + - Examples: Xenoblade Chronicles: Definitive Edition, Xenoblade 2 +- Vsync event and surface flinger consumption now happens at exact timings (eg. 16.6667ms) rather than rounding to the nearest millisecond (16/17ms) + - Greatly improves games that rely on the vsync event for timing, such as Link's Awakening, or unity games that aren't tied to frame count. + - Should result in less framerate fluctuation. + - Improves frame consistency in windowed mode, though it can still get out of sync and double frames. Exclusive fullscreen mode should be perfect. +- Overhauled Vsync off mode. Rather than simulating a vsync every 1ms, it will now simulate a vsync every time a frame is produced. This results in higher max framerates. + - Alongside, the artificial 60fps limit has been removed. If you disable your vsync using driver config, or have a high refresh rate screen, you can now go over 60fps. + - With a 60hz display and driver vsync enabled, you can disable guest vsync to pass through the host vsync signal. This may result in smoother windowed mode gameplay. +- FIFO% now takes a running total of processing time and total time, then calculates the % immediately before reporting it. This is more accurate. + - Before, it would take % values for each "frame", then average all of them. This was inaccurate when our "frame" boundary failed, or frames had uneven cost. + +## 1.0.6119 - 2020-12-16 +### Added +- Implemented IsLargeResourceAvailable service call. + - Fixes missing service crashes in Immortals Fenyx Rising (still crashes due to other issues) and Death Tales (now playable). + +## 1.0.6107 - 2020-12-16 +### Changed +- Changed the order of termination processes to terminate the application first instead of the services first. + - Fixes needless service crashes & hangs occurring on emulator shutdown. + +## 1.0.6105 - 2020-12-16 +### Added +- Implemented VRINTX.F32/VRINTX.F64 instructions. + - Resolves missing opcode crashes on Spirit Hunter: NG, Fairy Fencer F: Advent Dark Force, Cabela's: The Hunt - Championship Edition, STURMWIND EX, Megadimension Neptunia VII, Baldur's Gate and Baldur's Gate II: Enhanced Editions, Planescape: Torment and Icewind Dale: Enhanced Editions, Little Inferno, Prinny Can I really Be the Hero, Prinny 2 Dawn of Operation Panties Dood, Human Resource Machine, 7 Billion Humans, and TY the Tasmanian Tiger. Most of these titles now go in-game. + +## 1.0.6096 - 2020-12-16 +### Changed +- Modified JIT cache to be cleared on exit. +- Miscellaneous CPU JIT cache operational cleanup & bugfixes. + +## 1.0.6086 - 2020-12-15 +### Added +- Implemented aspect ratio options that can be selected either through the Options > Settings > Graphics menu or by clicking through the different options on the bottom status bar. Note: non-16:9 will give games a stretched or squeezed appearance unless also using mods that change the expected resolution of the game. + +## 1.0.6082 - 2020-12-15 +### Added +- Implemented a wake-up (resume) message/event. This can be triggered while in-game by navigating to Options > Simulate Wake-up Message. + - Allows the game The World Ends with You -Final Remix- to proceed past a point in the game where it prompts the end user to put the Switch to sleep and then wake it back up. + +## 1.0.6069 - 2020-12-14 +### Added +- Implemented VFMA (Vector) instructions. + - Fixes missing opcode crashes on TY the Tasmanian Tiger, Sky Gamblers: Storm Raiders, No more Heroes, No More Heroes 2 Desperate Struggle, Sphinx and the Cursed Mummy, and Valkyria Chronicles. + +## 1.0.6062 - 2020-12-14 +### Fixed +- Fixed pre-allocator shift instruction copies. No known impact in games. + +## 1.0.6052 - 2020-12-13 +### Fixed +- Fixed a regression introduced in 1.0.5090 (PR 1413) regarding the STREX instruction implementation that caused Sonic Forces to fail to boot. + +## 1.0.6051 - 2020-12-13 +### Changed +- Improved shader cache resilience by supporting read-only mode if the cache.zip archive is already opened (i.e. if the game is launched in a second instance of the emulator). + +## 1.0.6050 - 2020-12-13 +### Fixed +- Corrected the type of NSO executable sizes. + - Fixes the following games which used to hang forever on boot: Hatsune Miku: Project DIVA Megamix (non-JP version), Super Chariot, Death Mark, Darkest Dungeon, Dairoku: Ayakashimori, CHAOS CODE -NEW SIGN OF CATASTROPHE-, Doukoku Soshite..., Air Missions: HIND, and possibly other (untested) similarly coded games in the switch library. These games now boot and most go in-game. + +## 1.0.6047 - 2020-12-12 +### Fixed +- Corrected the GetNintendoAccountUserResourceCacheForApplication stub. + - Fixes a regression introduced in 1.0.6045 (PR 1808). + +## 1.0.6045 - 2020-12-11 +### Fixed +- Updated fixed-size output buffer functions to write the correct sizes on the pointer buffer descriptors. + - Fixes a regression introduced in 1.0.5899 (PR 1458). + +## 1.0.6043 - 2020-12-11 +### Fixed +- Fixed an issue where GL queries could end up failing to return a value after a previous 0-draw query. + - Resolves a potential multi-second hang/freeze in Luigi's Mansion 3 and possibly other similarly coded games. + +## 1.0.6027 - 2020-12-10 +### Changed +- Cleaned up the GPU memory allocator code. + +## 1.0.6020 - 2020-12-10 +### Changed +- Modified allocator code to check if the aligned address and its requirements exceed the maximum allowed address, with a solution if the results are true. + - Fixed a regression introduced in 1.0.6004 (PR 1722) that caused Asterix & Obelix XXL: Romastered to crash on boot. + +## 1.0.6006 - 2020-12-09 +### Changed +- Fixed the ngct services placeholder which was incorrect. +- Stubbed IService Match and Filter calls, as well as IServiceWithManagementApi Match and Filter calls. + - Resolves missing service crashes in Horace, which is now playable. + +## 1.0.6005 - 2020-12-09 +### Changed +- Modified ThreadPool process handling to keep it active so that there is never a reason to terminate the GateThread. + - Raises FPS from 57-58 to 60 in games where the game should have been pegged at 60FPS already. + +## 1.0.6004 - 2020-12-09 +### Changed +- Modified GPU memory allocation by marking memory as available in an implementation of a Red-Black-Tree affectionately christened a TreeDictionary. + - Improves memory allocation and reduces time for certain GPU memory related operations. + +## 1.0.6003 - 2020-12-09 +### Changed +- Rewrote scheduler context switch code. + - Now uses a lock to prevent the thread from being scheduled in two cores at once, like the official OS does. + - Fixed thread CurrentCore value being updated ahead of time. Now it is only updated after the thread is switched to the new core. + - Fixed bugs on some yield functions that could cause the scheduler to select the wrong thread. + - Fixed bugs that would cause KThread and KSession reference counts to be decremented below 0. For KThread, it could cause a exception since the thread was removed from the KProcess thread list twice (only observed in single core mode before the changes). + - Two asserts were added to ensure the reference count is not decremented below 0, or incremented after the object has been "destroyed". + - Fixed race on unmap client buffer function (IPC related, not scheduler related, but its a small, simple change as was affecting the tests here as well, so I decided to just fix it). + +Other improvements: +- Core idle time is now properly reported to the guest instead of just returning 0 (I am not sure if games can actually read that). +- GetCurrentThread and GetCurrentProcess functions were simplified, now it uses a thread local variable instead of looping through all core contexts and try finding the current thread. +- Context switch speed was improved. This is in part thanks to the use of ManualResetEventSlim, that greatly improves the speed on context switches in quick succession, and in part to the simplification of the function. +- The dummy thread and process were removed. Now GetCurrentThread and GetCurrentProcess just returns null if called from a non-guest or non-service thread. + - Prevents bugs caused by external threads messing with the scheduler. + - A new function was added that allows creating a guest process/thread from a external thread, this is used to start service faux processes. +- Allow service threads to run in parallel again. + - They can be still be blocked by kernel in some cases, like when waiting for IPC messages for example, however they are no longer scheduled to cores, which means that they are free to run in parallel. + - The YieldUntilCompletion function was removed as it is no longer needed. + - This matches the behavior before ipc-part2, and fixes issues caused by this specific ipc-part2 change, like the audio crackling on SMO etc. + +Other changes: +- Single core mode was removed. Now there is only multi core mode that is on by default. + - The GUI checkbox was removed. + - It is worth noting that the single core mode was not working anyway due to the bug mentioned before. + +## 1.0.5995 - 2020-12-08 +### Added +- Implemented IApplicationFunctions GetHealthWarningDisappearedSystemEvent call. + - Fixes a missing service issue in Mario Kart 8 Deluxe Chinese version. + +## 1.0.5979 - 2020-12-07 +### Changed +- Fixed a regression introduced in IPC2 (PR 1458) where data written by a service would not mark regions as dirty, and reads from the service would not trigger flushes from textures. + - Fixes vertex explosions after one race in Mario Kart 8 Deluxe. + +## 1.0.5975 - 2020-12-07 +### Added +- Implemented VFNMA CPU instruction. + - Fixes missing opcode crash on launch in Valkyria Chronicles. Note: this game still does not boot due to other issues. + +## 1.0.5960 - 2020-12-07 +### Added +- Added support for guest Fz (Fpcr) mode through host Ftz and Daz (Mxcsr) modes (fast paths). + - Fixes a bug in Luigi's Mansion 3 where a player would get stuck trying to go to floor B2 (or load a save game that places you on floor B2). + +## 1.0.5959 - 2020-12-07 +### Added +- Added the Ryujinx build version to the log file names generated during runtime. + +## 1.0.5942 - 2020-12-03 +### Changed +- Texture target is now extracted from Info for quick access + - Reduces costs when committing texture bindings. + +## 1.0.5941 - 2020-12-03 +### Added +- Implemented VFNMS.F32/64 instructions. + - Resolves missing opcode crash on Goat Simulator. Note: this game still crashes due to other issues. + +## 1.0.5940 - 2020-12-03 +### Changed +- Added a draw count to mitigate unnecessary use of glFlush operations. If no draws have occurred between when a query begins and ends, a glFlush will no longer be added to the queue. + - Performance improvements can be observed in Super Mario Odyssey's Metro Kingdom or when resolution scaling is active, and other games that had similar bottlenecks previously. + +## 1.0.5939 - 2020-12-03 +### Changed +- Changed uses of QueryModified to now pass a cached delegate. +- Changed buffer tracking to use simple tracking rather than smart, as in practice smart tracking does not seem to be faster. + - Combined, these changes nearly halve buffer tracking time in Super Mario Odyssey Metro Kingdom's initial view. Future PRs will help unlock more tangible performance boosts. + +## 1.0.5937 - 2020-12-03 +### Changed +- This PR is a follow-up to 1.0.5915 and ensures the proper closing of copy handles that are passed by the guest and should be closed. + +## 1.0.5915 - 2020-12-02 +### Fixed +- Modified the audio WorkBuffer transfer memory handle to close properly. + - Fixes a regression introduced in 1.0.5899 (PR 1458) that caused a crash or hang on Rune Factory 4 Special and potentially other similarly coded games. + +## 1.0.5913 - 2020-12-02 +### Changed +- Created a single guest process per IPC message processor, to alleviate issues introduced in 1.0.5899 (PR 1458). + - Fixes out of memory crashes on Pokémon Sword/Shield and other games encountering this same error. + - Fixes bad audio on some games after 1.0.5899. + +## 1.0.5900 - 2020-12-01 +### Fixed +- Fixed a typo in TapFrame logic. + - Resolves a crash on boot in Pang Adventures. + +## 1.0.5899 - 2020-12-01 +### Changed +- This is part 2 of an intended 4 part IPC (Inter-Process Communication) refactor. Part 2: HLE services now use the ReplyAndReceive syscall to receive IPC requests, rather than having special handling on the kernel that would call the service function directly after a call to SendSyncRequest by the game. + - This represents a more accurate approach to these processes, as it attempts to more closely mimic how the Switch OS behaves. + +## 1.0.5897 - 2020-12-01 +### Changed +- Added a forced early Z test register. + - Resolves broken interior volumes on Xenoblade Chronicles: Definitive Edition and Xenoblade Chronicles 2. + +## 1.0.5895 - 2020-12-01 +### Added +- Added a button option to "Remove All" in the DLC and Title Update management windows. + +## 1.0.5888 - 2020-12-01 +### Added +- Added the ability for a user to launch games in fullscreen mode. + - This can be enabled in the options menu or by using a commandline option of "--fullscreen". + +## 1.0.5885 - 2020-12-01 +### Fixed +- Added missing guest GPU accessor to the hashes computation for shader cache. + - Existing shader caches will be preserved and migrated to a new version with this update. + +## 1.0.5883 - 2020-12-01 +### Fixed +- Fixed a warning of the SystemInfo class constructor for macOS. Cleaned up the info / Info at the end of specific OS class names. + +## 1.0.5880 - 2020-12-01 +### Fixed +- Corrected a parsing issue of the MaxAnistropy field that could cause a crash on different system locales. + +## 1.0.5835 - 2020-11-27 +### Added +- Added a preference system to selection of matching textures, where it will pick the "most perfect" match available in the texture cache. + - Fixes white screen issue that appears immediately after loading in The Legend of Zelda: Breath of the Wild. + +## 1.0.5834 - 2020-11-27 +### Changed +- Disabled resolution scaling on textures smaller than 8px on either width or height. It's very unlikely that textures this small (or thin) contain data that the end user really wants to scale. + - Fixes overexposed in-game HDR in several Nintendo first-party titles when resolution scaling is enabled. + +## 1.0.5833 - 2020-11-27 +### Changed +- Added a check when loading the game list that ensures the datetime is valid in current culture. + - Resolves a rare crash that could occur when sorting the game list by last played datetime if the host PC datetime had been modified. + +## 1.0.5831 - 2020-11-27 +### Changed +- Cleaned up unnecessary warnings and motion client code. + +## 1.0.5816 - 2020-11-24 +### Added +- Implemented IsRestrictionEnabled call of the pctl service. + - Fixed an issue where the game Momotaro Dentetsu: Showa, Heisei, Reiwa mo Teiban! would not boot after a save had been created. + +## 1.0.5815 - 2020-11-24 +### Fixed +- Fixed IApplicationFunctions::GetSaveDataSize call of the am service. + - Resolves a crash on boot on The Language of Love (which now goes in-game) and potentially other games that had been suffering from a similar issue. + +## 1.0.5796 - 2020-11-21 +### Changed +- Cleaned up IApplicationFunctions. +- Stubbed TryPopFromFriendInvitationStorageChannel. + - Resolves missing service crashes in Mini Motor Racing X and Fight Crab, which are now playable. + +## 1.0.5795 - 2020-11-21 +### Fixed +- Fixed reverb 3d mono having the wrong delay line offset (was using -1 instead of 1). Added this value to be used by all channel variants. + - Resolves a crash on boot in Resident Evil 6. This title now goes in-game. + +## 1.0.5794 - 2020-11-21 +### Changed +- Removed an incorrect debug assert within the shader cache code. + +## 1.0.5793 - 2020-11-21 +### Fixed +- Fixed an underflow in the setup of delay time within the delay effect. + - Fixes a regression introduced in Amadeus causing a crash on boot on Shovel Knight: Treasure Trove. The game is once again playable. + +## 1.0.5792 - 2020-11-21 +### Fixed +- Fixed an incorrect id for call ListAudioInsAuto in IAudioInManager. + +## 1.0.5783 - 2020-11-20 +### Changed +- Implemented the following audout service calls: GetAudioOutBufferCount, GetAudioOutPlayedSampleCount, FlushAudioOutBuffers. + - Resolves crashes therein, and enables the following titles to go in-game: Devil May Cry 2, Devil May Cry 3 Special Edition, Atelier Shallie: Alchemists of the Dusk Sea DX, and others that need these calls. +- Fixed SetAudioOutVolume and GetAudioOutVolume. + +## 1.0.5782 - 2020-11-20 +### Changed +- Allowed copy destinations to have a different scale from the source. This has the following effects on resolution scaling: + - Now works in The Legend of Zelda: Link's Awakening (with some shadow artifacts). + - No longer blacklists/stops working in some cutscenes in Super Mario Odyssey. + +## 1.0.5778 - 2020-11-20 +### Changed +- Compressed <-> uncompressed copies are now performed using pixel buffer objects. + - Fixes most button text and large UI text in Splatoon 2. Remaining text issues in this game will be resolved in a future PR. + - Fixes cubemap mip levels below 4x4 not being copied in Mario Kart 8 Deluxe. No visual impact at this time. + - May improve Unreal Engine 3/4 games that contain black small mipmap levels. Does not fix them entirely. + +## 1.0.5775 - 2020-11-19 +### Added +- Added PTC decompression error check and treats it as a loading failure, allowing a fallback to the backup file instead of crashing. + +## 1.0.5773 - 2020-11-19 +### Added +- Added olsc:u service and stubbed some associated calls. + - Fixes boot-time crash for Animal Crossing: New Horizons update version 1.6.0. + +## 1.0.5763 - 2020-11-18 +### Added +- Added click-to-toggle functionality for Vsync on/off and Docked/Handheld modes in the status bar (bottom of the Ryujinx window). Simply click once on the respective item in the status bar to toggle. + +## 1.0.5761 - 2020-11-18 +### Added +- Added the ability to use a keybinding to toggle between Docked and Handheld modes at any time. To toggle between Docked and Handheld, press the F9 key. + +## 1.0.5756 - 2020-11-18 +### Changed +- Modified buffer textures to restrict layout conversions from being performed. + - Fixes possible memory corruption in games that use buffer textures e.g. Unreal Engine 4. + +## 1.0.5755 - 2020-11-18 +### Changed +- Added FP16/FP32 fast paths for Fcvt_S, Fcvtl_V & Fcvtn_V instructions. +- Modified HardwareCapabilities to use CpuId. + +## 1.0.5754 - 2020-11-18 +### Changed +- Updated & cleaned up code to take advantage of .NET 5 functions/bugfixes. No expected changes in any games. + +## 1.0.5753 - 2020-11-18 +### Fixed +- Fixed possible parsing errors of information on NSOs at load time. + +## 1.0.5742 - 2020-11-17 +### Changed +- Removed some redundant code related to OpenGL depth testing. Should not affect any games. + +## 1.0.5740 - 2020-11-17 +### Fixed +- Fixed a regression introduced in 1.0.5624 (PR 1670) that affected homebrew using nouveau, and possibly OpenGL games, where the full texture data was not copied. + +## 1.0.5739 - 2020-11-17 +### Changed +- Updated README.MD for clarity and a working .NET 5 build command. + +## 1.0.5738 - 2020-11-17 +### Fixed +- Fixed a regression introduced in 1.0.5674 (PR 1701 - Shader Cache implementation) that caused the Linux client to crash on startup. + +## 1.0.5737 - 2020-11-17 +### Fixed +- Fixed a possible crash at startup when cleaning up missing shaders. + +## 1.0.5736 - 2020-11-17 +### Fixed +- Resolved an issue causing the virtual address of texture descriptors not be cleaned up when caching, instead cleaning texture format and swizzle. + - Should fix high duplication and possible texture corruption for certain games introduced with the advent of disk shader cache. +**NOTE: This will invalidate all cache layers as this is a critical bugfix on the cache saving system.** + +## 1.0.5727 - 2020-11-16 +### Fixed +- Fixed a regression introduced in 1.0.5617 (PR 1647) that negatively affected performance in The Legend of Zelda: Link's Awakening. + +## 1.0.5726 - 2020-11-15 +### Fixed +- Fixed a regression introduced in 1.0.5718 (PR 1688) that enabled VR by default. This caused graphical issues in games such as Super Smash Bros. Ultimate when VR mode is not used. + +## 1.0.5718 - 2020-11-15 +### Added +- Implemented VR rendering in games supported by the Toy-Con VR Goggles. + +## 1.0.5709 - 2020-11-15 +### Added +- Added a missing error message for ApplicationNotFound. + +## 1.0.5708 - 2020-11-15 +### Changed +- Changed a menu option to be camel case where it had not been previously. + +## 1.0.5707 - 2020-11-15 +### Changed +- Stopped the GUI from prompting the user to disable debug features in debug builds. + +## 1.0.5705 - 2020-11-15 +### Changed +- Migrated project and CI to .NET 5. This update brings across the board improvements to JIT performance. + - Minor FPS improvements in some games. + - Significant performance increase in some NVDEC videos, especially on client CPUs that do not have hyperthreading. Up to 130% increase in performance was observed in Super Smash Bros. Ultimate intro video during testing. + +## 1.0.5683 - 2020-11-12 +### Fixed +- Fixed patch sets toggling for mods. + +## 1.0.5682 - 2020-11-12 +### Added +- Added an 'Apply' button in the Options menu. This allows setting & saving options without having to close the menu. + +## 1.0.5678 - 2020-11-12 +### Changed +- Modified size hints for render targets to use "Screen Scissor" instead of viewport 0's width. + - Fixes a regression in Hyrule Warriors: Age of Calamity Demo cubemaps. + +## 1.0.5674 - 2020-11-12 +### Added +- Implemented a disk shader cache. + - Progressively reduces stutter & FPS drops on subsequent play of a game. + - Optimized shader compile process to be more efficient. + +## 1.0.5667 - 2020-11-11 +### Fixed +- Fixed a bug that caused Super Mario Odyssey to behave as if it was in handheld mode, even when Docked mode was enabled. + +## 1.0.5659 - 2020-11-10 +### Fixed +- Do not report unmapped pages as modified to the GPU. + - Fixes a regression caused by range tracking (PR #1272) that could cause a few games (like Higurashi no Naku Koro ni Hou) to crash. + +## 1.0.5655 - 2020-11-09 +### Fixed +- Fix a bug that could cause data loss when copying on rendering to a texture. + - Fixes color bleeding on Luigi's Mansion 3 caused by dynamic resolution change, improves reflections on Mario Kart 8 Deluxe. + +## 1.0.5653 - 2020-11-09 +### Changed +- Implement ATOM shader instruction and fix offset decoding on the ATOMS shader instruction. + - Might improve rendering on games using this instruction, although no improvement was observed on games know to use them. + +## 1.0.5650 - 2020-11-09 +### Changed +- Simplify bindless textures handling. + - Might cause minor changes to games using bindless textures, such as Super Mario Party. + +## 1.0.5644 - 2020-11-08 +### Changed +- Un-stubbed & implemented the following IPC calls: + - nn::apm::IManager (fully implemented) + - nn::apm::ISession (fully implemented) + - nn::apm::ISystemManager (partially implemented) +- Fixed some incorrect calls in nn::appletAE::ICommonStateGetter + +## 1.0.5643 - 2020-11-08 +### Changed +- Modified shader code to use explicit binding points rather than calling the OpenGL 'glGet*Location' functions. + - Should mildly increase binding performance. + +## 1.0.5639 - 2020-11-07 +### Fixed +- Update rasterizer discard before texture clears. + - Fixes shadow trail bug on Xenoblade Chronicles 2. + +## 1.0.5636 - 2020-11-06 +### Added +- Added a check to ensure GPU commands are in the queue before continuing. + - Fixes FIFO % being stuck at 50% on some games. + +## 1.0.5634 - 2020-11-06 +### Changed +- Updated README.md + +## 1.0.5629 - 2020-11-06 +### Changed +- Enabled expanded logging of NSO files: Module name, Libraries and SDK Version are now logged when they are available. Also cleaned up NsoExecutable class a bit. + +## 1.0.5628 - 2020-11-06 +### Fixed +- Fixed a regression introduced in 1.0.5584 (PR 1643) that caused the next boot of a just auto-updated emulator to try to launch itself as a game. + +## 1.0.5626 - 2020-11-06 +### Added +- Added support for single precision constants for double precision operations. No expected changes in any games. + +## 1.0.5625 - 2020-11-06 +### Changed +- Modified buffer textures to have their data inherited by using the same buffer storage (instead of matching aligned sizes). + - Fixes a random crash in Hyrule Warriors: Age of Calamity Demo and may improve other games that use buffer textures. + +## 1.0.5624 - 2020-11-06 +### Fixed +- Corrected the bytes per pixel value being passed. This fixes memory corruption that occurs by too much data being copied in some UE4 games. + - BRAVELY DEFAULT II Demo and Remothered: Broken Porcelain get further in the boot process, both able to reach the title screen now, before crashing. Other UE4 games may also benefit. + +## 1.0.5617 - 2020-11-05 +### Fixed +- Increased depth-stencil accuracy by modifying zeta formats to only be valid for depth-stencil render targets. No expected changes in any games. + +## 1.0.5611 - 2020-11-05 +### Fixed +- Miscellaneous CPU emulation code fix. + +## 1.0.5604 - 2020-11-02 +### Added +- Added seamless cubemap flag in sampler parameters. + - Removes hard edges from cubemaps, and specifically improves low resolution cubemaps (used for glossy surfaces). Improvements are visible in Mario Kart 8 Deluxe. + +## 1.0.5603 - 2020-11-02 +### Changed +- Support resolution scaling on images. Correctly blacklist for SUST. Move logic out of the backend. + - Fixes normal-map decals in Xenoblade Chronicles: Definitive Edition. + - Should cause Paper Mario and Dead or Alive to force to 1x/native resolution instead of just breaking. + - May fix other strange issues related to resolution scaling. + +## 1.0.5597 - 2020-11-01 +### Fixed +- Fixed compressed to non-compressed texture copy size. No expected changes in any games. + +## 1.0.5596 - 2020-11-01 +### Changed +- Removed unused texture and sampler pool invalidation code. No expected changes in any games. + +## 1.0.5584 - 2020-10-29 +### Changed +- Command line arguments are now preserved when the auto-updater restarts Ryujinx. This prevents unexpected/unwanted behavior that could delete files in a custom specified user folder. + +## 1.0.5583 - 2020-10-29 +### Changed +- Miscellaneous resolution scaling change: now scales the texture size before sending it to the OpenGL backend. + - Resolution scaling now works on games that present BGRA textures such as Dragon Marked for Death among others. + +## 1.0.5580 - 2020-10-28 +### Added +- Added scaling for Texture2DArray when using TexelFetch. + - Fixes resolution scaling in Hyrule Warriors: Age of Calamity Demo. + +## 1.0.5579 - 2020-10-28 +### Changed +- Implemented a stop-gap solution to avoid sampler conflicts on bindless samplers with the same name. This should suffice until proper bindless texture support is implemented. + - Improves rendering in Super Mario Party. + +## 1.0.5577 - 2020-10-28 +### Changed +- Improved motion controls. + - Reduces input lag. + - Alt slots now work for paired joycons. + - Fixes issue with input settings not saving unless default profile is loaded. + +## 1.0.5573 - 2020-10-25 +### Fixed +- Updated vertex buffer handle null checks to prevent draws with invalid states. + +## 1.0.5569 - 2020-10-25 +### Fixed +- Miscellaneous transform feedback fixes. + - Fixes T-pose in SNK Heroines: Tag Team and black grass in Xenoblade Chronicles: Definitive Edition. + +## 1.0.5568 - 2020-10-25 +### Changed +- Modified ASTC texture data update handling to skip updates if the data did not change. + - Improves performance on SNK Heroines and potentially other games that use ASTC textures similarly. + +## 1.0.5567 - 2020-10-25 +### Added +- Implemented CAL and RET shader instructions. + - Fixes a regression introduced in 1.0.5514 (PR 1609) that could cause a crash during battle in Fire Emblem: Three Houses. + +## 1.0.5553 - 2020-10-21 +### Changed +- Removed Reflection.Emit's dependency on CPU and Shader projects. + - These projects are now more readily compatible with any potential future AOT implementations. + +## 1.0.5552 - 2020-10-21 +### Changed +- Added a missing null check on image binding. + - Resolves a regression introduced in 1.0.5549 (PR 1625) that could result in a crash. + +## 1.0.5549 - 2020-10-20 +### Fixed +- Fixed image binding format. + - Resolves broken fire & ice effects in Kirby Star Allies as well as incorrect dark/black ground in Xenoblade Chronicles Definitive Edition. + +## 1.0.5548 - 2020-10-20 +### Fixed +- Changed buffer textures to ensure storage is set when binding an image. + - Fixes Pascal (NVIDIA GTX 10-series) GPUs suffering a driver crash when booting Unreal Engine 4 games. Note: there are remaining issues with UE4 games to be addressed in the future. + +## 1.0.5545 - 2020-10-17 +### Fixed +- Miscellaneous geometry shader fix. No known changes in games. + +## 1.0.5543 - 2020-10-16 +### Changed +- Improved texture/buffer modification detection and flushing methods. + - Fixes missing thumbnail pictures in many games as well as the passport photo on Animal Crossing: New Horizons. + - Fixes broken logic in Snipperclips/Plus, Pooplers, Shanky: The Vegan's Nightmare and potentially other games that use similar logic. + +## 1.0.5525 - 2020-10-13 +### Fixed +- Fixed LOP3 (cbuf) shader instruction encoding. + - Resolves rendering issues on DOOM 64. The game is now playable. + +## 1.0.5523 - 2020-10-13 +### Changed +- Replaced "Host FPS" counter with GPU Command Queue Load reading "FIFO %". + +## 1.0.5522 - 2020-10-13 +### Added +- Implemented several 32-bit CPU instructions. + - Super Mario Galaxy is now bootable inside Super Mario 3D All-Stars. + - Fixes missing opcode crashes on Dies irae Amantes amentes and Sky Gamblers: Storm Raiders. Note: neither of these games are able to go in-game still, but Sky Gamblers: Storm Raiders now boots, playing music briefly at a black screen. + +## 1.0.5517 - 2020-10-13 +### Fixed +- Fixed incorrect OpenGL BlendFunc enumeration values + - The value of some OpenGL BlendFunc values were incorrect. + - Fixes broken shadows in Super Mario Galaxy, and potentially other games with similar behaviour. + +## 1.0.5516 - 2020-10-13 +### Fixed +- Fixed output component register ordering on pixel shaders + - In some instances, the incorrect register was being copied to an output component. + - Improves rendering in Super Mario Galaxy, and potentially other games with similar behaviour. + +## 1.0.5515 - 2020-10-12 +### Fixed +- Fixed a error when dual source blend was used. + - Fixes rendering inside the observatory on Super Mario Galaxy. + +## 1.0.5514 - 2020-10-12 +### Fixed +- Implemented LEA.HI shader instruction. + - Fixes corrupted colors on some characters on Super Mario Galaxy (example: Rosalina), and other graphical issues. Might also fix graphical issues on other games. + +## 1.0.5513 - 2020-10-12 +### Fixed +- Implemented support for constant buffer slot indexing, with the LDC shader instruction. + - Fixes some 3D models not rendering on Super Mario 3D All-Stars. + +## 1.0.5499 - 2020-10-11 +### Fixed +- Fixed NVDEC FFMPEG related crash that could occur when frame sizes change. + - Resolves random crashes in Super Mario 3D All-Stars main menu/launcher. May also fix similar crashes in other games. + +## 1.0.5496 - 2020-10-10 +### Changed +- Disabled the async buffer in SurfaceFlinger. + - Fixes a memory corruption on Super Mario All-Stars 3D, which now has improved compatibility but still does not go in-game without modifications. May also fix crashes on other games. + +## 1.0.5493 - 2020-10-09 +### Added +- Added a confirmation dialog prompt to the user when attempting to close the emulator while a game is being emulated. + +## 1.0.5492 - 2020-10-09 +### Fixed +- Fixed an issue where attempting to stop emulation while playing an embedded game within a multi-game collection would instead cause emulation to restart. + +## 1.0.5485 - 2020-10-02 +### Changed +- Improved BRX target detection heuristics. + - Koi no Hanasaku Hyakkaen now renders properly. This may also potentially affect other games. + +## 1.0.5480 - 2020-10-01 +### Fixed +- Support 2D array ASTC texture decoding. + - Fixes black objects on Donkey Kong Country: Tropical Freeze. + +## 1.0.5476 - 2020-09-30 +### Fixed +- Fixed a bug in GetStream. This function is not currently used but may be used in the future. + +## 1.0.5468 - 2020-09-30 +### Changed +- Miscellaneous legacy CPU code cleanup. + +## 1.0.5459 - 2020-09-29 +### Added +- Implemented motion controls. + - See https://github.com/ryujinx-mirror/ryujinx/wiki/Ryujinx-Setup-&-Configuration-Guide#motion-controls for a usage guide. + +## 1.0.5457 - 2020-09-29 +### Changed +- Modified the auto-updater to not notify for an update if the Appveyor package is still building on the website. + +## 1.0.5456 - 2020-09-29 +### Changed +- Modified one-dimensional texture handling to be instead treated as two-dimensional textures with a height of 1. + - Fixes fog/mist effects in Monster Hunter Generations Ultimate and potentially other one-dimensional texture situations. + +## 1.0.5455 - 2020-09-29 +### Added +- Implemented auto-updater functionality. + - Ryujinx will now check on startup for the latest official master build and prompt the user to download & install it if a new version is found. It can also be performed by clicking Help > Check for Updates. + - You may disable the 'Check for updates on launch' function in Options> Settings > General tab. + +## 1.0.5442 - 2020-09-27 +### Added +- Implemented a basic error applet. + - Fixes crashes in REKT and Ghost Blade HD, both of which are now considered playable. + - Adds certain necessary functionality for LDN. + +## 1.0.5439 - 2020-09-26 +### Changed +- Changed texture copy handling to avoid issues with overlapping textures. + - Fixes a regression introduced in 1.0.5326 (PR 1408), resolving graphical issues in Professor Layton, Snack World, and potentially other games that use OpenGL on the guest. + +## 1.0.5428 - 2020-09-25 +### Changed +- Isolated more active services to their own threads: SurfaceFlinger processes, HID, and Time services. + +## 1.0.5418 - 2020-09-23 +### Changed +- Implemented small indexed draws and primitive topology override. This affects graphics emulation for games that use the Vulkan API on the Switch. + - Enables graphics to be rendered on Turok 2, Doom 64, and other games that use the Vulkan API. +- Miscellaneous minor gpu fixes. + +## 1.0.5417 - 2020-09-23 +### Changed +- Return "NotAvailable" when no UserChannel data is present. + - Fixes a crashing regression in Splatoon 2 and Super Kirby Clash (among possible others) introduced in 1.0.5396 (PR 1560). + +## 1.0.5414 - 2020-09-23 +### Changed +- Audio renderer services are now processed in a separate thread. + - Fixes audio stutter in certain conditions introduced in 1.0.5402 (PR 1447). + +## 1.0.5402 - 2020-09-21 +### Changed +- This is part 1 of an intended 4 part IPC refactor. Part 1: Explicit IPC Servers to match Horizon IPC implementation and miscellaneous fixes. + - Fixes Ryujinx application hang on certain games when emulation is stopped or when the application is commanded to exit. + +## 1.0.5398 - 2020-09-21 +### Fixed +- Fixed a texture bug revealed by 1.0.5326 (PR 1408). + - Resolves graphical regressions in Hatsune Miku: Project DIVA Mega mix and a few other games. + +## 1.0.5396 - 2020-09-20 +### Added +- Implemented basic multi-program support. + - Adds basic support for loading multiple NCA's. Improves support for Super Mario 3D All-Stars. + +## 1.0.5395 - 2020-09-20 +### Changed +- Align register index between output targets on fragment shaders + - Fixes behaviour in certain games where components would be incorrectly copied to fragment shader outputs. Improves Turok 2, and potentially other Vulkan-based games. + +## 1.0.5391 - 2020-09-19 +### Added +- Stubbed/implemented ListQualifiedUsers and SetTouchScreenConfiguration calls. + - Fixes missing service crashes in Clubhouse Games: 51 Worldwide Classics, Dr. Kawashima's Brain Training, Cyber Protocol, Bulletstorm: Duke of Switch Edition, Catherine Full Body, Truck & Logistics Simulator, CONTRA: ROGUE CORPS, Warhammer 40,000: Space Wolf, Borderlands 2: Game of the Year Edition, Our Two Bedroom Story, Grandia HD Collection, XCOM 2 Collection, Kissed by the Highest Bidder, Love Letter from Thief X, Baldur's Gate and Baldur's Gate II: Enhanced Editions, Planescape: Torment and Icewind Dale: Enhanced Editions, Psikyo Shooting Stars Alpha, Psikyo Shooting Stars Bravo, LA-MULANA 1&2, and possibly other games that are not yet tested in the Ryujinx game compatibility list. + +## 1.0.5390 - 2020-09-19 +### Changed +- Moved the "Open Logs Folder" function/button out from the application's Settings window and instead placed it under the main window File > menu. + +## 1.0.5389 - 2020-09-19 +### Added +- Stubbed/implemented GetCompletionEvent and AddPlayHistory calls. + - Fixes missing service crash in Worms W.M.D. + +## 1.0.5388 - 2020-09-19 +### Added +- Stubbed several Begin/EndBlockingHomeButton calls. + - Fixes network related crashes in ARMS. + +## 1.0.5387 - 2020-09-19 +### Added +- Stubbed SetShimLibraryVersion service call. + - Fixes missing service crash in Puzzle Book. + +## 1.0.5386 - 2020-09-19 +### Fixed +- Fixes stack overflow crash in a few games, including Blaster Master Zero 2 and Terraria. + +## 1.0.5383 - 2020-09-19 +### Changed +- JIT optimization: Reorder blocks placing cold blocks at the end of the function. + - Might improve speed of some games slightly. + +## 1.0.5381 - 2020-09-19 +### Fixed +- Better viewport flipping method. + - Fixes upside down screen on some games on AMD, Intel and old NVIDIA GPUs. Example: Fire Emblem Three Houses on AMD. +- Better depth mode detection method. + - Fixes lighting issues in a few games, including Zelda Link's Awakening and Burnout Paradise Remastered. + +## 1.0.5374 - 2020-09-19 +### Fixed +- Fixes threshold for control stick buttons reported to games. + +## 1.0.5346 - 2020-09-12 +### Fixed +- Fixes debug Config.json using resolution scaling 2x by default. + +## 1.0.5341 - 2020-09-11 +### Changed +- Miscellaneous CPU emulation code optimization. + +## 1.0.5327 - 2020-09-10 +### Fixed +- Allow swizzles to match with "undefined" components + - Fixes motion blur and depth of field in Burnout Paradise. + +## 1.0.5326 - 2020-09-10 +### Fixed +- Write-back texture data from memory when it falls out of the cache, and perform untracked buffer write-back. + - Fixes random texture corruption in Super Mario Odyssey (example: Black squares on Sand Kingdom). + - Fixes black screen on Mario Kart 8 Deluxe in some courses. + - Reduces or completely fix vertex explosions in some Unity games. + - Improves performance of games that performs buffer copies (such as aforementioned Unity games, may also give a small boost to Pokémon games). + +## 1.0.5306 - 2020-09-06 +### Changed +- Miscellaneous CPU emulation code optimization. + +## 1.0.5305 - 2020-09-06 +### Fixed +- Fixed issue with music playing on only the left channel in several games using REV8 including Fairy Tail, SEGA AGES Sonic the Hedgehog 2, Family Mysteries: Poisonous Promises, and Harukanaru Toki no Naka de 7. + +## 1.0.5292 - 2020-09-05 +### Changed +- Removed redundant sentence in README.MD. No emulator code changes. + +## 1.0.5271 - 2020-09-01 +### Changed +- Updated LibHac to version 0.12.0. General improvements to system stability and backend file system fixes & enhancements. + - Support reading NCA0 files and decrypted NCAs. + - Improves the performance of some save data operations when large numbers of save data exist. + +## 1.0.5270 - 2020-09-01 +### Fixed +- Miscellaneous CPU code fixes. + - Resolves a PPTC related crash during PPTC compilation. + +## 1.0.5269 - 2020-09-01 +### Fixed +- Miscellaneous shader instruction fixes. + - Resolves incorrect dithering pattern in Super Mario Odyssey. + +## 1.0.5266 - 2020-09-01 +### Changed +- Reworked in-application user error prompts regarding keys & firmware to be more meaningful to the end user. + - Replaces KEYS.MD pop-up with a more appropriate message including a link to the setup guide. + +## 1.0.5264 - 2020-09-01 +### Fixed +- Fixed a regression with texture compatibility checks introduced in build 1.0.5258 (PR 1482) + +## 1.0.5258 - 2020-08-31 +### Changed +- Miscellaneous GPU code refactoring/improvement. + +## 1.0.5256 - 2020-08-31 +### Changed +- Miscellaneous CPU code optimization. + +## 1.0.5255 - 2020-08-31 +### Added +- Implemented fixed point variants Scvtf_S_Fixed & Ucvtf_S_Fixed with Tests. + - Resolves missing opcode errors in a particular Switch homebrew application. + +## 1.0.5251 - 2020-08-30 +### Changed +- Removed the unused Ryujinx.Debugger project. + +## 1.0.5250 - 2020-08-30 +### Added +- Ryujinx now allows launching with custom data directories i.e. "portable mode" + +## 1.0.5249 - 2020-08-30 +### Changed +- Cleaned up the FUNDING.yml file + +## 1.0.5248 - 2020-08-30 +### Changed +- Cleaned up and updated the readme file. + - No emulator code changes. + +## 1.0.5246 - 2020-08-29 +### Fixed +- Fixed a page count calculation regression introduced in 1.0.4453 (PR 856). + - Resolves a bug found in deko3d homebrew. There are no known games affected by the bug or this fix. + +## 1.0.5239 - 2020-08-27 +### Fixed +- Fixed inverted downmixing of center and LFE channels. + - Resolves missing background music in Mario Tennis Aces, missing voices in Fire Emblem: Three Houses and Resident Evil: Revelations, and other + missing audio in similarly affected games. + +## 1.0.5221 - 2020-08-23 +### Changed +- HID now allows reconfiguration of controllers during runtime! No need to restart emulation. +- Controller Applet now supports multiple controllers + - Mario Tennis Aces console multiplayer now works properly. Other games that had similar issues with the controller applet should also be working now. +- Controller Applet now displays a Message dialog indicating config issues if any, and waits for user to correct them. +- HID now ignores Handheld config when Docked mode is enabled +- Auto-reassignment is dialed back (wasn't assigning valid configs most of the time anyway) to rely more on Controller Applet. +- Fun change: Adds official LED patterns to Player IDs +- Misc change: Hotkey toggles (such as Vsync) now only work when Emu window is focused. +- Controller Setup Window now only shows valid options for respective types e.g. prevents setting up Pro Controller to Handheld + +## 1.0.5200 - 2020-08-19 +### Fixed +- Fixed some build warnings and debug asserts caused by uninitialized fields on the VP9 decoder. + - Does not affect gameplay or performance in any way. + +## 1.0.5191 - 2020-08-18 +### Added +- Implemented IManagerForApplication calls and IAsyncContext. + - Fixes missing service crashes in many games, but nearly all of those games need further services implemented before they become bootable/playable. + +## 1.0.5190 - 2020-08-18 +### Changed +- Implemented software surround downmixing. + - Fixes a crash when no audio renderer was created when stopping emulation. +- Disables support of 5.1 surround on OpenAL backend as Ryujinx cannot currently detect whether the hardware directly supports it. + +## 1.0.5182 - 2020-08-17 +### Changed +- Implemented all Switch audio renderer functions (code name Amadeus). + - Resolves myriad audio issues, including: garbled audio in nearly every game that uses audren, softlock in Splatoon 2, slowness in NVDEC videos on Unity titles, loud effects that should be soft, super slow sounding audio during full speed gameplay, etc. + +Known issues: +- Fire Emblem: Three Houses is missing voices in videos. +- Games that utilize two simultaneous audio renderers will likely have issues until the audio out interface is rewritten; Crash Team Racing is the only known game to suffer from this. + +## 1.0.5177 - 2020-08-14 +### Added +- Added missing depth-color conversions in CopyTexture. + - Resolves an openGL error message being spammed, and fixes the broken blur and performance regressions in Zelda: Link's Awakening after BGRA support was added. Note: there are still additional graphical glitches in this game. + +## 1.0.5175 - 2020-08-13 +### Fixed +- The Purge PPTC cache option now purges all versioned PPTC caches for a particular game; previously it was only purging the PPTC cache for the currently selected game version e.g. 1.0.3. + +## 1.0.5173 - 2020-08-13 +### Fixed +- Fixed MacroJIT SubtractWithBorrow Alu Reg Operation. + - Resolves black screen & memory leak issues with Duke Nukem 3D: 20th Anniversary World Tour (and possibly other games), and a crash on launch in Waifu Uncovered. + +## 1.0.5171 - 2020-08-12 +### Added +- Added VFMA/VFMS instructions. + - Fixes missing opcode crashes on Duke Nukem 3D: 20th Anniversary World Tour, STURMWIND EX, Cabela's: The Hunt - Championship Edition, and Goat Simulator. +### Changed +- Fixed VCVT_FI & VCVT_RM. Added tests for VCVT_FI. Updated VRINT_RM & VRINT_Z. + - Fixes missing graphics in several 32-bit titles including (but not limited to) SamuraiAces, and Duke Nukem 3D: 20th Anniversary World Tour. + +## 1.0.5167 - 2020-08-12 +### Fixed +- Fixed the InitializeBluetoothLe call which previously did not return any event handle. + +## 1.0.5155 - 2020-08-09 +### Changed +- Changed default audio backend to be OpenAL by default. If OpenAL is not found, it will default to SoundIO. + - Resolves audio renderer crashes due to Dummy being selected by default. + +## 1.0.5152 - 2020-08-09 +### Fixed +- Incremented PPTC version, which was missed in 1.0.5144 (PR 1433). + +## 1.0.5144 - 2020-08-08 +### Fixed +- Miscellaneous CPU emulation fixes. + +## 1.0.5143 - 2020-08-08 +### Added +- Forwarded OpenSaveDataInfoReaderOnlyCacheStorage call to OpenSaveDataInfoReaderWithFilter. + - Fixes a missing service crash in Mortal Kombat 11. The game now boots to the title screen. + +## 1.0.5142 - 2020-08-07 +### Added +- Added issue templates on the Ryujinx GitHub site. No emulator code was changed. + +## 1.0.5140 - 2020-08-07 +### Changed +- Renamed openGL debug logging option "performance" to "slowdowns" to reduce the likelihood of an end user, believing there to be some sort of associated performance gain in the emulator, errantly enabling the option. + +## 1.0.5138 - 2020-08-06 +### Changed +- Silenced several build warnings (for those who build their own version of Ryujinx) and performed minor code cleanup. + +## 1.0.5131 - 2020-08-04 +### Changed +- Miscellaneous CPU emulation code optimization. There should not be any noticeable changes in emulator performance. + +## 1.0.5126 - 2020-08-03 +### Changed +- Rewrote the logger to optimize operation and reduce unnecessary overhead. Also removed SendVibrationXXX logs from standard output; they are now only present if debug logging is enabled. + +## 1.0.5123 - 2020-08-02 +### Added +- Implemented a Macro JIT. + - Improves the speed of GPU Macro execution by recompiling code on-demand; as a result, minor speed improvements may be seen in games that use instanced draws. + +## 1.0.5122 - 2020-08-02 +### Added +- Implemented software keyboard GTK frontend. + - Enables the user to enter a custom player name when prompted instead of having the default "Ryujinx" name hardcoded in, as well as input custom text any time the user is prompted throughout the game play experience. + +## 1.0.5119 - 2020-08-02 +### Added +- Facilitated OpenGL debug logging that can be configured via the GUI. This is for development use only. + +## 1.0.5115 - 2020-08-01 +### Added +- Implemented IServiceCreator::GetPlayHistoryRegistrationKey call. + - Fixes missing service crashes on Diablo III: Eternal Collection, BLAZBLUE CENTRALFICTION, The Escapists 2, and other games that utilize this call. + +## 1.0.5105 - 2020-07-31 +### Added +- Added stub for ReadSaveDataFileSystemExtraDataWithMaskBySaveDataAttribute call. + - Fixes missing service crash in Animal Crossing: New Horizons 1.4.0; "ignore Missing Services" no longer needs to be enabled. + +## 1.0.5094 - 2020-07-30 +### Fixed +- Fixed WMI exception errors on startup in edge cases e.g. where the WMI service is not running, etc. + +## 1.0.5088 - 2020-07-30 +### Changed +- Changed logging to print the guest stack trace on several crash conditions, which will provide necessary troubleshooting information. + +## 1.0.5087 - 2020-07-29 +### Changed +- Refactored shader translator ShaderConfig and reduced number of out args. + - Improves code without changing any functionality. + +## 1.0.5086 - 2020-07-29 +### Changed +- Miscellaneous CPU emulation code optimization. + +## 1.0.5072 - 2020-07-28 +### Fixed +- Fixed a shader regression on Intel iGPUs (and possibly AMD GPUs) by reverting varying layout changes introduced in 1.0.4937 (PR 1370). NOTE: transform feedback is not going to work on Intel iGPUs in Windows. + +## 1.0.5071 - 2020-07-28 +### Added +- Implemented alpha test using legacy functions using an OpenGL compatibility profile. This will bridge the gap until alpha test is re-implemented via pixel shaders later on once a disk shader cache exists in Ryujinx. + - Fixes alpha test issues on games including Mega Man 11 (black eyes, etc.). + +## 1.0.5070 - 2020-07-28 +### Added +- Implemented VIC BGRA output surface format. + - Fixes swapped/incorrect colors during video decoding on games requiring it, including The Caligula Effect. + +## 1.0.5049 - 2020-07-26 +### Added +- Stubbed several eShop related calls. + - Fixes related missing service crashes on Pokémon Café Mix, Dragon Quest XI, Dead by Daylight, Ninjala, Super Kirby Clash, and a few others. + +## 1.0.5048 - 2020-07-26 +### Added +- Implemented the following calls of IAudioInManager: ListAudioIns, ListAudioInsAUuto, ListAudioInsAutoFiltered. + - Fixes related missing service crashes on 15+ games including Crysis Remastered, Torchlight 2, multiple Borderlands games, Baldur's Gate and Baldur's Gate II, Ion Fury, and Bioshock 2 Remastered. + +## 1.0.5047 - 2020-07-26 +### Changed +- Polygon offset clamp value is now set by the game if the host supports it. Should not affect any games. + +## 1.0.5044 - 2020-07-25 +### Added +- Implemented BGRA texture support. + - Fixes incorrect texture colors (often manifesting as blue skin/blue tint issues) on affected games including (but not limited to) Valkyria Chronicles 4, Resident Evil 4, Onimusha Warlords, and Memories Off ~ Innocent Fille ~. + +## 1.0.5034 - 2020-07-25 +### Fixed +- Incremented PPTC version, which was missed in 1.0.5021 (PR 1410). + +## 1.0.5030 - 2020-07-25 +### Changed +- GPU memory access related code cleanup. + +## 1.0.5021 - 2020-07-24 +### Changed +- Minor CPU emulation fixes and code cleanup. + +## 1.0.5011 - 2020-07-23 +### Added +- Updated LibHac to version 0.11.3. + - Removes the timeout when deleting files from the local file system. + +## 1.0.5010 - 2020-07-23 +### Changed +- Implemented GPFifo and made other changes and improvements to GPFifoClass and GPFifo semaphore implementation, respectively. +- Added a fast path for guest constant buffer updates. + - Brings significant performance boosts to games such as Diablo III: Eternal Collection that make heavy use of the functionality. + +## 1.0.5004 - 2020-07-23 +### Fixed +- Fixed full-screen toggle issues. + +## 1.0.5003 - 2020-07-23 +### Added +- Implemented GetIndirectLayerImageRequiredMemoryInfo call from vi service. + - Fixes missing service crashes in Dark Souls Remastered and God Eater 3. + +## 1.0.5000 - 2020-07-21 +### Added +- Implemented/stubbed some calls to the am service. + - Fixes crashes in Daemon X Machina, Jump Rope Challenge, Fate/EXTELLA LINK, FIFA 19/20, Super Kirby Clash, and several other games. + +## 1.0.4987 - 2020-07-20 +### Changed +- Improved the display and sort order of time zones in Options > Settings > System tab. + +## 1.0.4985 - 2020-07-20 +### Changed +- Reconfigured audio backend GUI to select OpenAL by default (if installed), and Dummy as the fallback. + - Fixes the inability to save any emulator settings until the audio backend had been selected. + +## 1.0.4981 - 2020-07-20 +### Changed +- Fixed GL errors related to Point size, and implemented more Point parameters. + - Fixes some graphics effects in Super Mario Odyssey. + +## 1.0.4980 - 2020-07-20 +### Fixed +- Fixed an issue with IDeliveryCacheProgressService GetEvent introduced in 1.0.4948 (PR 1362). + - Fixes a regression in Super Smash Bros. Ultimate. + +## 1.0.4969 - 2020-07-19 +### Fixed +- Implemented a small part missing from 1.0.4964 (PR 1397), now ensuring that all HLE ipc sessions will be disposed when needed. + +## 1.0.4964 - 2020-07-19 +### Changed +- Improved implementation of CreateTransferMemory and CloseHandle syscalls. +- Fixed session services not being disposed. + +## 1.0.4963 - 2020-07-19 +### Added +- Added VBIC, VTST, and VSRA 32-bit instructions. + - Fixes missing opcode crashes in several 32-bit games. + +## 1.0.4957 - 2020-07-17 +### Changed +- No longer prints guest stack trace for svcBreak debug calls. + - Fixes issues on some games that call svcBreak with the debug flag set. + +## 1.0.4952 - 2020-07-17 +### Fixed +- Miscellaneous ARM32 instruction fixes. + - Fixes black screen issue on some 32-bit games. + +## 1.0.4948 - 2020-07-16 +### Changed +- Updates the WaitSynchronization syscall implementation to match what the kernel does. Should not affect any games. + +## 1.0.4947 - 2020-07-16 +### Added +- Added Vadd and Vsub Wide CPU instructions. + - Fixes missing opcode crashes in Duke Nukem 3D: 20th Anniversary World Tour and other games. + +## 1.0.4946 - 2020-07-16 +### Changed +- Improve kernel IPC related syscalls. Should not affect any games. + +## 1.0.4945 - 2020-07-16 +### Fixed +- Fixed resource limit reserve taking too long. + - Fixes games that suffered from the following error on boot: HLE.HostThread.0 KernelSvc PrintResult: SetHeapSize64 returned error ResLimitExceeded. + +## 1.0.4941 - 2020-07-15 +### Fixed +- Force transform feedback rebind after buffer modifications + - Fixes grass on XC2 and possibly resolves TFB issues in other games. + +## 1.0.4938 - 2020-07-15 +### Fixed +- Corrected a decode exception condition introduced in 1.0.4725 (PR 1298). + +## 1.0.4937 - 2020-07-14 +### Added +- Implemented partial transform feedback support. + - Fixes grass in Xenoblade Chronicles: Definitive Edition and resolves some TFB-related issues in other games. + +## 1.0.4936 - 2020-07-14 +### Fixed +- Fixes a crash involving the loading of mods when launching unpacked games. + +## 1.0.4921 - 2020-07-13 +### Changed +- Modified depth stencil format copy compatibility check to check for equivalent color formats. + - Fixes broken fog on Pokémon Sword/Shield and Super Mario Odyssey. + +## 1.0.4920 - 2020-07-13 +### Changed +- Miscellaneous CPU instruction additions and fixes. + - Fixes issues in FATE/Extella and improves behavior in Snipperclips/Snipperclips Plus. + +## 1.0.4918 - 2020-07-13 +### Fixed +- Miscellaneous CPU instruction optimizations. + - Fixes issues in Monster Hunter (all versions) and Ni No Kuni (needs other instructions) + +## 1.0.4916 - 2020-07-13 +### Fixed +- Resolved a JIT issue where operand assignments were not getting cleaned up. + +## 1.0.4914 - 2020-07-13 +### Fixed +- Corrected a bug introduced in 1.0.4891 (PR 1359). + +## 1.0.4909 - 2020-07-12 +### Changed +- Updated README.md. + +## 1.0.4906 - 2020-07-11 +### Added +- Implemented initial support for FMV/in-game videos (NVDEC). + +## 1.0.4902 - 2020-07-10 +### Fixed +- Corrected bug introduced in 1.0.4893 (PR 1358). + +## 1.0.4893 - 2020-07-10 +### Changed +- Miscellaneous CPU optimization. + +## 1.0.4891 - 2020-07-10 +### Changed +- Miscellaneous CPU optimization. + +## 1.0.4889 - 2020-07-10 +### Added +- Implemented logical operation registers & functionality. + - Fixes interior lighting volumes in Xenoblade Chronicles 2 and Xenoblade Chronicles: Definitive Edition. + +## 1.0.4880 - 2020-07-09 +### Added +- Implemented modding support based on Atmosphere's implementation. + +## 1.0.4876 - 2020-07-08 +### Fixed +- Resolved issue where games were crashing on launch in Windows 7 after enabling PPTC. + +## 1.0.4864 - 2020-07-06 +### Added +- Added resolution scaling with GUI-configurable ratio. + +## 1.0.4847 - 2020-07-04 +### Changed +- Added support for command 10104 & 10105 and updated naming of the old variants to match Switchbrew. + - Fixes crash in Animal Crossing: New Horizons 1.3.0 + +## 1.0.4829 - 2020-07-03 +### Changed +- Reintroduced SoundIO as a fallback backend of OpenAL if OpenAL is not found. + +## 1.0.4827 - 2020-07-03 +### Changed +- Fixed compilation warnings. +- Utilize new LibHac APIs for executable loading. + +## 1.0.4826 - 2020-07-03 +### Added +- Partially implemented LEA shader instruction. +- Extended bindless texture elimination optimization. + +## 1.0.4825 - 2020-07-03 +### Fixed +- Fixed copy from a buffer to a 3D texture when used for linear to block linear conversion. + - Improves rendering in Persona 5 Scramble and similar games. + +## 1.0.4824 - 2020-07-03 +### Changed +- Game list reloads now only occur if a configuration change to game directories has been made. + +## 1.0.4823 - 2020-07-03 +### Added +- GUI update: it is now possible to choose the audio backend. + - The audio backend is set to OpenAL by default. + +## 1.0.4822 - 2020-07-03 +### Added +- Implemented new GUI options for managing PPTC cache files on a per-game basis. + +## 1.0.4821 - 2020-07-03 +### Added +- GUI update: it is now possible to add multiple game directories at once. + +## 1.0.4820 - 2020-07-03 +### Added +- Stubbed nifm IRequest GetAppletInfo to be consistent with current GetResult implementation. + - Fixes crash associated with unimplemented nifm IRequest on at least 31 games. + +## 1.0.4819 - 2020-07-03 +### Added +- Inline index buffer data is now supported. + - Fixes black screen issues on NinNin Days and other OpenGL games. + +## 1.0.4818 - 2020-07-03 +### Fixed +- Fixed compute restore of previous shader state. + - Improves lighting issues on a specific subset of games including Zelda: Link's Awakening. + +## 1.0.4817 - 2020-07-03 +### Fixed +- Fixed an issue with syncpoint implementation that could cause a deadlock in a specific scenario. + +## 1.0.4816 - 2020-07-03 +### Fixed +- Fixed an issue where bsd:u read was not writing in the IPC output buffer. + +## 1.0.4796 - 2020-07-01 +### Changed +- Removed dummy LLE project from Github + +## 1.0.4767 - 2020-06-26 +### Changed +- Games list GUI changes: + - Sort-by method is now persistent across application restarts. + - Removed unused SaveDataPath to speed up game list loading. + - Vertical scrollbar position now resets to the top when titles finish loading. + +## 1.0.4761 - 2020-06-23 +### Added +- Added VPMIN, VPMAX, VMVN (register). +### Fixed +- VMVN (immediate) has been renamed from VMVN_I to VMVN_II to make way for the integer variant; it has also been fixed to use BitwiseNot rather than xor the input with itself. + + + +## 1.0.4759 - 2020-06-23 +### Changed +- Import DLC title key from ticket when loading into content manager. + - Fixes crash due to DLC failing to decrypt. +- Removed profiled build task from Appveyor. + + +## 1.0.4753 - 2020-06-22 +### Added +- Implemented DLC management window. + - DLC is now fully supported and able to be managed through the GUI. + +## 1.0.4752 - 2020-06-22 +### Fixed +- Copy the value of InputConfig to a new array before iterating. + - Fixes a rare exception crash. + +## 1.0.4751 - 2020-06-22 +### Fixed +- Fixed regression caused by wrong SB descriptor offset. + - Fixes crashes introduced in PR 924 on Tokyo Mirage Sessions. + +## 1.0.4750 - 2020-06-22 +### Changed +- Update NRR related structures to match latest public research. + +## 1.0.4740 - 2020-06-20 +### Added +- Implemented aoc:u + - Supports loading AddOnContent - GUI to be implemented separately. + +## 1.0.4739 - 2020-06-20 +### Changed +- Updated README.md file on Github. + - No Ryujinx code changes. + +## 1.0.4728 - 2020-06-18 +### Fixed +- Incremented PTC version + - Hotfix for previous build: fixed PTC cache not being rebuilt (this is required, as part of the JIT was changed). + +## 1.0.4725 - 2020-06-17 +### Changed +- Branch cleanup: added exit blocks to reduce redundant tail continues; + - May slightly improve performance for some games. + +## 1.0.4709 - 2020-06-16 +### Added +- New Feature Addition: Profiled Persistent Translation Cache + - Reduces game load times by up to 70% after cache has been generated: two consecutive launches to title screen or beyond, then improvements are realized permanently on third launch and any future launches. + - This option must be enabled in Options > Settings > System > Enable Profiled Persistent Translation Cache. + +## 1.0.4697 - 2020-06-14 +### Fixed +- Fixed an issue where part of the VABS instruction would be parsed as an input register. + - Resolved a particular DEADLY PREMONITION Origins missing opcode error; the instruction was not missing but was instead parsed incorrectly. + +## 1.0.4696 - 2020-06-14 +### Changed +- LayoutConverter has separate optimizations for LinearStrided and BlockLinear. MethodCopyBuffer now determines the range that will be affected, and uses a faster per pixel copy and offset calculation. + - This should increase performance on Nintendo Switch Online: NES and Super NES games, as well as mitigate dropped frames during large black screen (nvdec) videos. + +## 1.0.4687 - 2020-06-09 +### Changed +- Interacting with the console window no longer affects the emulation. + - This can reduce cases where the game deadlocks or crashes because the console is in Select mode or is manually scrolled. + +## 1.0.4683 - 2020-06-06 +### Changed +- Stubbed ssl ISslContext: 4 (ImportServerPki) service. + - Fixed missing service crashes on Minecraft Dungeons and Rocket League. + +## 1.0.4682 - 2020-06-05 +### Added +- Added Pclmulqdq intrinsic + - Implemented crc32 in terms of pclmulqdq, which improves performance in some games when performing data integrity verification. \ No newline at end of file diff --git a/docs/src/changelog.md b/docs/src/changelog.md new file mode 100644 index 00000000..ef3c9085 --- /dev/null +++ b/docs/src/changelog.md @@ -0,0 +1,7356 @@ +# Ryujinx Changelog +All updates to the Ryujinx official master build will be documented in this file. + +For 1.0.x releases, see [here](https://github.com/ryujinx-mirror/ryujinx/wiki/Older-Changelog). + +## 1.1.1403 - 2024-10-01 +### Fixed: +- Update audio renderer to REV13: Add support for compressor statistics and volume reset. + - Allows Trouble Magia to go in-game. + +## 1.1.1402 - 2024-09-30 +### Fixed: +- Do not try to create a texture pool if shader does not use textures. + - Fixes CrossCode and Tales of Vesperia: Definitive Edition crashing on boot when loading a shader cache. + +## 1.1.1401 - 2024-09-28 +### Fixed: +- SDL: set app name. + - Fixes application name showing as "SDL Application" instead of "Ryujinx" on some platforms in volume control menus. + +## 1.1.1400 - 2024-09-26 +### Fixed: +- Convert MaxTextureCacheCapacity to Dynamic MaxTextureCacheCapacity for High Resolution Mod support. + - Allows usage of mods that make games run at higher resolutions than 4k, such as the 8k option in the Ultracam mod for The Legend of Zelda: Tears of the Kingdom (these mods require "Expand DRAM to 8GB" to be enabled). + - Fixes crashes and low performance in certain games when using high resolution mods. + +## 1.1.1399 - 2024-09-26 +### Fixed: +- GPU: Ensure all clip distances are initialized when used. + - Fixes half-screen rendering on AMD GPUs in The Legend of Zelda: Echoes of Wisdom. + +## 1.1.1398 - 2024-09-22 +### Fixed: +- Fix quads draws after DrawTexture on Vulkan. + - Fixes rendering in FUZE4 when using Vulkan. + +## 1.1.1397 - 2024-09-20 +### Fixed: +- Shader: Assume the only remaining source is the right one when all others are undefined. + - Fixes character model rendering in Romancing SaGa 2: Revenge of the Seven Demo. + +## 1.1.1396 - 2024-09-19 +### Fixed: +- Add support for sampler sRGB disable. + - Fixes the image being too dark in Cassette Beasts intro logos, Charge Kid, OlliOlli: Switch Stance, Sphinx and the Cursed Mummy, and The Bard's Tale ARPG. + +## 1.1.1395 - 2024-09-18 +### Fixed: +- Replace passing by IMemoryOwner with passing by concrete MemoryOwner. + - Code cleanup. No expected user-facing changes. + +## 1.1.1394 - 2024-09-18 +### Fixed: +- Implement support for shader ATOM.EXCH instruction. + - Fixes missing reflections in Lollipop Chainsaw RePOP. + +## 1.1.1393 - 2024-09-17 +### Changed: +- Revert "Ava: Wait for CheckLaunchState() to complete to handle exceptions properly". + - Reverts the change in 1.1.1391 as it broke the UI. + +## 1.1.1392 - 2024-09-17 +### Fixed: +- Change image format view handling to allow view incompatible formats. + - Fixes Lollipop Chainsaw RePOP crashing with a device loss error. + +## 1.1.1391 - 2024-09-17 +### Fixed: +- Ava: Wait for CheckLaunchState() to complete to handle exceptions properly. + - Fixes an issue where the UI would freeze instead of handling an exception when launching a game directly from command line or from a shortcut. + + +## 1.1.1390 - 2024-09-17 +### Fixed: +- Add area sampling scaler to allow for super-sampled anti-aliasing. + - Under graphics settings > scaling filter, adds a new option for area scaling, which will function as SSAA when the rendering resolution is 2x (or more) higher than the screen resolution. + +## 1.1.1389 - 2024-09-17 +### Changed: +- Change 6GB DRAM expansion to 8GB. + - Changes the DRAM expansion hack to use 8GB instead of the 6GB it previously used, and renames the setting back to what it was. + - Pokémon Legends Arceus and Pokémon Scarlet/Violet will no longer crash with the DRAM expansion enabled, allowing mods for these games that required this option to be used again. + +## 1.1.1388 - 2024-09-15 +### Fixed: +- Implement fast DMA texture to texture copy. + - Massively improves performance (around 2x as much) in Castlevania Dominus Collection. + +## 1.1.1387 - 2024-09-15 +### Fixed: +- Make GetFunctionPointerForDelegate as explicit as possible. + - Required for AOT support in the future. No expected user-facing changes. + +## 1.1.1386 - 2024-09-12 +### Fixed: +- Implement Arm32 VSHLL and QADD16 instructions. + - Allows "The Legend of Sword and Fairy" to go in-game. + +## 1.1.1385 - 2024-09-01 +### Fixed: +- Vulkan: Feedback loop detection and barriers. + - On RDNA3 (RX 7000 series) AMD graphics cards, fixes purple lines seen across geometry in The Legend of Zelda: Breath of the Wild, Tears of the Kingdom, and likely other games that had graphics issues specific to these GPUs. + - On Nvidia RTX 2000/3000/4000 GPUs, fixes blocky water artifacts in Mario Golf: Super Rush, Splatoon 3, and alleviates (but does not fix) the issue in Team Sonic Racing (v1.0.0). + - On Nvidia RTX 3000 GPUs, fixes flickering and missing body parts in Kirby's Dream Buffet, and fixes flickering in Mario + Rabbids: Sparks of Hope. + +## 1.1.1384 - 2024-09-01 +### Fixed: +- Fix incorrect depth texture 3D flag. + - Fixes a crash in Neverwinter Nights: Enhanced Edition. + +## 1.1.1383 - 2024-09-01 +### Fixed: +- Vulkan: Update Silk.NET to 2.21. + - Updates Silk.NET dependencies and Vulkan extensions. No expected user-facing changes. + +## 1.1.1382 - 2024-08-31 +### Fixed: +- Make HLE project AOT friendly. + - No expected user-facing changes. + +## 1.1.1381 - 2024-08-31 +### Fixed: +- Replace ImageSharp with SkiaSharp everywhere. + - Fixes text inputs in games not allowing more than one character to be typed. + +## 1.1.1380 - 2024-08-27 +### Fixed: +- Fix deadlock in background translation thread shutdown. + - Fixes an issue where Ryujinx would sometimes freeze and stop responding when trying to stop the emulation. + +## 1.1.1379 - 2024-08-21 +### Fixed: +- nuget: bump DynamicData from 9.0.1 to 9.0.4. + - Updates the DynamicData dependency. No expected user-facing changes. + +## 1.1.1378 - 2024-08-20 +### Fixed: +- Fix NRE when using image array from constant buffer. + - Fixes a crash in World of Goo 2, though the game still does not work due to another issue. + +## 1.1.1377 - 2024-08-20 +### Fixed: +- nuget: bump ImageSharp from 2.1.8 to 2.1.9. + - Updates the SixLabors.ImageSharp dependency. No expected user-facing changes. + +## 1.1.1376 - 2024-08-17 +### Fixed: +- nim:eca : Stub CreateServerInterface2. + - Allows THE NEW DENPA MEN to go in-game without "Ignore Missing Services". + +## 1.1.1375 - 2024-08-13 +### Fixed: +- Fix arbitrary game ordering when sorting by Favorites. + - Favorite games will now be sorted alphabetically on the games list. + +## 1.1.1374 - 2024-08-12 +### Fixed: +- Clamp amount of mipmap levels to max allowed for all backends. + - On AMD graphics cards using Vulkan, fixes crashes when running certain mods, such as character swaps in Mario Kart 8 Deluxe. + +## 1.1.1373 - 2024-08-08 +### Added: +- Implement UQADD16, UQADD8, UQSUB16, UQSUB8, VQRDMULH, VSLI and VSWP Arm32 instructions. + - Fixes DarkStar One crashing on non-ARM systems and shaky screen on ARM systems. + - May allow 12 Labours of Hercules II: The Cretan Bull to go in-game. + +## 1.1.1372 - 2024-08-05 +### Fixed: +- Replace and remove obsolete ByteMemoryPool type. + - Code cleanup. No expected user-facing changes. + +## 1.1.1371 - 2024-08-05 +### Fixed: +- Fix same textures with unmapped start being considered different. + - Fixes The Legend of Heroes: Kuro no Kiseki II crashing shortly after gameplay starts. + +## 1.1.1370 - 2024-08-04 +### Fixed: +- Fix LocaleExtension SetRawSource usages + language perf improvement. + - Fixes a small UI freeze when changing the UI language. + +## 1.1.1369 - 2024-08-04 +### Fixed: +- Infra: Update Microsoft.IdentityModel.JsonWebTokens. + - Updates the Microsoft.IdentityModel.JsonWebTokens dependency. No expected user-facing changes. + +## 1.1.1368 - 2024-08-03 +### Fixed: +- Avoid race conditions while launching games directly from the command line. + - Fixes games not booting when using shortcuts or launch arguments. + +## 1.1.1367 - 2024-08-03 +### Fixed: +- nuget: bump DynamicData from 8.4.1 to 9.0.1. + - Updates the DynamicData dependency. No expected user-facing changes. + +## 1.1.1366 - 2024-08-03 +### Fixed: +- replace ByteMemoryPool usage in Ryujinx.Graphics. + - Code cleanup. No expected user-facing changes. + +## 1.1.1365 - 2024-08-03 +### Fixed: +- Fix FileNotFoundException in TryGetApplicationsFromFile() and improve loading applications. + - Fixes crashes when trying to load files from bad symlinks, non-existent files or hidden subdirectories. + +## 1.1.1364 - 2024-07-31 +### Fixed: +- Fix off-by-one on audio renderer PerformanceManager.GetNextEntry. + - Fixes Kuro no Kiseki II crashing on startup. + +## 1.1.1363 - 2024-07-30 +### Fixed: +- Fix shader RegisterUsage pass only taking first operation dest into account. + - Fixes red tint on THE NEW DENPA MEN. (Note that the game still won't run without "Ignore Missing Services".) + +## 1.1.1362 - 2024-07-30 +### Fixed: +- Vulkan: Force topology to PatchList for Tessellation. + - On AMD graphics cards, fixes a crash on floor 15 of Luigi's Mansion 3. + +## 1.1.1361 - 2024-07-25 +### Fixed: +- Ava UI: Handle updates containing non numeric characters. + - Fixes an issue where the title update manager would fail to display updates if they contained letters (for example, v1.0.5A). + +## 1.1.1360 - 2024-07-25 +### Fixed: +- Vulkan: Add missing barriers for texture to buffer copy. + - Fixes a regression from 1.1.1352 exclusively affecting AMD graphics cards, which caused the water in The Legend of Zelda: Breath of the Wild to turn white. + +## 1.1.1359 - 2024-07-22 +### Fixed: +- Update kernel GetInfo SVC for firmware 18.0.0. + - Allows Nintendo 64 NSO, or anything using the JIT service, to work with firmware 18.0.0+. + +## 1.1.1358 - 2024-07-21 +### Fixed: +- Fix checking for the wrong metadata files for applications launched with a different program index. + - Fixes a regression from 1.1.1350 that caused updates to not apply for games that get launched with different program indices, such as Super Mario 3D All-Stars. + - Fixes an issue where the emulator wouldn't apply DLC to these same games. + +## 1.1.1357 - 2024-07-20 +### Fixed: +- Make sure TryGetApplicationsFromFile() doesn't throw exceptions anymore. + - Fixes remaining instances of crashing on loading invalid game files onto the games list since 1.1.1350. + +## 1.1.1356 - 2024-07-20 +### Fixed: +- Fix Skia saving screenshot with transparent background and incorrect origin. + - Fixes a regression from 1.1.1346 causing emulator screenshots to save as blank image files. + +## 1.1.1355 - 2024-07-20 +### Fixed: +- Unlink server sessions from multi-wait when service stops processing requests. + - Fixes an assert on debug builds when emulation is stopped. No expected user-facing changes. + +## 1.1.1354 - 2024-07-19 +### Fixed: +- Ava UI: Auto select newly added updates & DLC. + - Updates and DLC will now be automatically enabled on the update and DLC managers when the files are first added to these menus. + +## 1.1.1353 - 2024-07-18 +### Fixed: +- Add missing Buffer attribute on NGC Check method. + - Fixes a crash in Teenage Mutant Ninja Turtles: Splintered Fate, and other games that do profanity filter checks and target firmware 16.0.0+. + +## 1.1.1352 - 2024-07-17 +### Fixed: +- Vulkan: Defer guest barriers, and improve image barrier timings. + - On Nvidia Ampere (and probably newer GPUs), fixes flickering artifacts in Cotton Guardian Force Saturn Tribute collection. + - On Snapdragon X Elite Adreno GPU, fixes rendering issues in several games, including Super Mario Odyssey. + +## 1.1.1351 - 2024-07-17 +### Fixed: +- Catch exceptions when loading applications from invalid NSPs. + - Fixes a regression from 1.1.1350 that caused the emulator to crash if an invalid game was loaded onto the game list. + +## 1.1.1350 - 2024-07-16 +### Added: +- Add support for multi game XCIs (second try). + - Implements loader support for XCI packages that contain multiple title entries. + - Fixes recognition of XCI files that contain title updates alongside the base game. + +## 1.1.1349 - 2024-07-16 +### Changed: +- Remove CommandBufferScoped Dependencies. + - Code cleanup. No expected user-facing changes. + +## 1.1.1348 - 2024-07-15 +### Fixed: +- misc: Re-order and manually update DriverID to name. + - NVK will now be properly displayed as the GPU driver on the status bar. + +## 1.1.1347 - 2024-07-15 +### Fixed: +- replace ByteMemoryPool usage in Ryujinx.HLE. + - Code cleanup. No expected user-facing changes. + +## 1.1.1346 - 2024-07-14 +### Fixed: +- Use SkiaSharp for Avalonia in place of ImageSharp. + - Updates the Avalonia UI project to use SkiaSharp for image processing, replacing the previously used SixLabors ImageSharp library. No expected user-facing changes. + +## 1.1.1345 - 2024-07-10 +### Fixed: +- Use draw clear on Adreno, instead of vkCmdClearAttachments. + - Works around an Adreno driver bug causing a race condition when calling vkCmdClearAttachments. + - Fixes incorrect Cascade Kingdom waterfall rendering and shadow flickering in Super Mario Odyssey. + - Fixes Astral Chain freezing on boot. + +## 1.1.1344 - 2024-07-10 +### Fixed: +- Force dynamic state update after rasterizer discard disable on Adreno. + - On Adreno drivers, significantly improves rendering in Xenoblade Chronicles 2. + +## 1.1.1343 - 2024-07-07 +### Fixed: +- Disallow concurrent fence waits on Adreno. + - Works around an Adreno driver bug when waiting on a fence from multiple threads. + - Fixes crashes in a variety of titles including The Legend of Zelda: Tears of the Kingdom at boot. + +## 1.1.1342 - 2024-07-07 +### Fixed: +- Disable descriptor set template updates for buffer textures on Adreno. + - Works around an Adreno driver bug causing crashes in UE4 games (& others) such as Mario + Rabbids: Sparks of Hope. + +## 1.1.1341 - 2024-07-07 +### Fixed: +- Force Vulkan swapchain re-creation when window size changes. + - Fixes an issue on Adreno GPUs where the renderer would not match the size of the window after a re-size. + - No other vendors should be impacted. + +## 1.1.1340 - 2024-06-26 +### Fixed: +- Resolve some Vulkan validation errors. + - No known changes in games. + +## 1.1.1339 - 2024-06-26 +### Fixed: +- discord: Fix TruncateToByteLength() not taking the string length into account before trimming. + - Fixes a regression from 1.1.1303 that caused Yu-Gi-Oh! RUSH DUEL: Saikyo Battle Royale to crash on boot. + +## 1.1.1338 - 2024-06-26 +### Fixed: +- nuget: bump Microsoft.IdentityModel.JsonWebTokens from 7.6.0 to 7.6.2. + - Updates the Microsoft.IdentityModel.JsonWebTokens dependency. No expected user-facing changes. + +## 1.1.1337 - 2024-06-25 +### Fixed: +- SetProcessMemoryPermission address and size are always 64-bit. + - No expected user-facing changes. + +## 1.1.1336 - 2024-06-19 +### Fixed: +- JIT: Coalesce copies on LSRA with simple register preferencing. + - Slightly reduces the size of code generated by the emulator, though performance change will likely not be noticeable. + +## 1.1.1335 - 2024-06-19 +### Fixed: +- JIT: Ensure entry block has no predecessors on RegisterUsage pass. + - Code cleanup. May be required for future features. No expected user-facing changes. + +## 1.1.1334 - 2024-06-16 +### Fixed: +- Clear pooled memory on return when used to hold object references. + - Code cleanup. No expected user-facing changes. + +## 1.1.1333 - 2024-06-16 +### Fixed: +- Extend bindless elimination to catch a few more specific cases. + - Fixes smoke effects in Hogwarts Legacy and It Takes Two. May possibly fix particle effects in Tales of Kenzera: ZAU and other UE games. + - Fixes vertex explosions on ice effects in Mortal Kombat 1. + - Fixes log warnings in Shin Megami Tensei V: Vengeance. + +## 1.1.1332 - 2024-06-16 +### Fixed: +- Replace ByteMemoryPool in Audio projects. + - Code cleanup. No expected user-facing changes. + +## 1.1.1331 - 2024-06-16 +### Fixed: +- nuget: bump Microsoft.IO.RecyclableMemoryStream from 3.0.0 to 3.0.1. + - Updates the Microsoft.IO.RecyclableMemoryStream dependency. No expected changes in games. + +## 1.1.1330 - 2024-06-02 +### Fixed: +- Vulkan separate descriptor set fixes. + - Fixes invisible characters on Intel GPUs in Paper Mario: The Thousand Year Door. + +## 1.1.1329 - 2024-06-02 +### Fixed: +- GPU: Remove unused dynamic state and pipeline settings. + - Code cleanup. No expected user-facing changes. + +## 1.1.1328 - 2024-06-02 +### Fixed: +- New pooled memory types. + - Reduces memory allocations done by the emulator. Likely no noticeable changes during normal gameplay. + +## 1.1.1327 - 2024-06-02 +### Fixed: +- Avoid inexact read with 'Stream.Read'. + - Code cleanup. No expected user-facing changes. + +## 1.1.1326 - 2024-06-02 +### Fixed: +- nuget: bump Microsoft.IdentityModel.JsonWebTokens from 7.5.2 to 7.6.0. + - Updates the Microsoft.IdentityModel.JsonWebTokens dependency. No expected user-facing changes. + +## 1.1.1325 - 2024-05-26 +### Fixed: +- Vulkan: Extend full bindless to cover cases with phi nodes. + - Resolves black or missing textures and animations in Paper Mario: The Thousand Year Door such as save boxes, coins and boat transitions. + - Fixes the missing floor textures in No Man's Sky. + +*Note that there will be some "new" bugs on some affected surfaces on AMD GPUs that were not visible prior to this change. + +## 1.1.1324 - 2024-05-26 +### Changed: +- Change disk shader cache compression algorithm to Brotli (RFC 7932) + - Improves the speed of the "Packaging shaders" stage of a disk cache rebuild by up to 40%. + +## 1.1.1323 - 2024-05-26 +### Fixed: +- Allow texture arrays to use separate descriptor sets on Vulkan. + - Fixes a performance regression (mostly on macOS) caused by 1.1.1291 in games that use bindless textures from storage buffers. + - Example titles are Mario Party Superstars and Penny's Big Breakaway. + +## 1.1.1322 - 2024-05-24 +### Fixed: +- nuget: bump Microsoft.IdentityModel.JsonWebTokens from 7.5.1 to 7.5.2. + - Updates the Microsoft.IdentityModel.JsonWebTokens dependency. No expected user-facing changes. + +## 1.1.1321 - 2024-05-23 +### Fixed: +- Workaround bug on logic op with float framebuffer. + - On Intel Vulkan, fixes the black screen in specific areas in Paper Mario: The Thousand-Year Door. Note that the game will still crash on Windows on Intel GPUs, so this improvement is only visible on Linux. + +## 1.1.1320 - 2024-05-23 +### Fixed: +- Workaround AMD bug on logic op with float framebuffer. + - On AMD Vulkan, fixes the black screen in specific areas in Paper Mario: The Thousand-Year Door. + +## 1.1.1319 - 2024-05-22 +### Changed: +- Kernel: Wake cores from idle directly rather than through a host thread. + - Slightly improves performance in titles with inefficient threading implementations. + - Improves performance in Pokémon Legends Arceus on low core count devices like the Steam Deck by up to 20%, or reduces power consumption by up to 40% at equal performance. + +## 1.1.1318 - 2024-05-20 +### Fixed: +- Updating Concentus dependency to speed up Opus decoding. + - May slightly reduce CPU usage in games that use Opus, such as Pokémon Legends Arceus. + +## 1.1.1317 - 2024-05-19 +### Fixed: +- GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings. + - Improves performance on systems with dedicated GPUs in Catherine Full Body, Hyrule Warriors: Age of Calamity v1.0.0, Pokémon Scarlet/Violet, The Legend of Zelda: Breath of the Wild and Tears of the Kingdom. + - Fixes character shadows being too dark on the equip screen in Splatoon 3. + +## 1.1.1316 - 2024-05-17 +### Fixed: +- HID: Fix another NullReferenceException when unblocking input updates. + - Fixes another instance of crashing after using the software keyboard, caused by 1.1.1315. + +## 1.1.1315 - 2024-05-17 +### Fixed: +- Disable keyboard controller input while swkbd is open (foreground) (second attempt). + - Redo of 1.1.1307. Should also fix the crashing caused by the original change. + +## 1.1.1314 - 2024-05-17 +### Fixed: +- Update audio renderer to REV12: Add support for splitter biquad filter. + - Allows Animal Well to run. + - Fixes Charon's voice in Spiritfarer. + +## 1.1.1313 - 2024-05-16 +### Fixed: +- misc: Change Deflate compression level to Fastest. + - Speeds up shader packaging process by up to 14x. Shader packaging occurs after GPU driver updates, switching between Vulkan and OpenGL, or significant changes to Ryujinx's GPU code. Note that shader caches will have slightly larger file sizes after this change. + +## 1.1.1312 - 2024-05-16 +### Fixed: +- Improves some log messages and fixes a typo. + - Makes the logging messages for missing game directories and files clearer. + +## 1.1.1311 - 2024-05-15 +### Fixed: +- Revert "Disable keyboard controller input while swkbd is open (foreground)". + - Reverts the change in 1.1.1307 due to it causing crashes in some games which use the software keyboard. + +## 1.1.1310 - 2024-05-14 +### Fixed: +- New Crowdin updates. + - Updates Avalonia GUI localizations with the latest changes from Crowdin. + +## 1.1.1309 - 2024-05-14 +### Fixed: +- Bump Avalonia.Svg. + - Updates the Avalonia.Svg dependency. No expected user-facing changes. + +## 1.1.1308 - 2024-05-14 +### Fixed: +- Add missing lock on texture cache UpdateMapping method. + - Fixes a crash in Harmony: The Fall of Reverie upon entering the Naiads. + +## 1.1.1307 - 2024-05-14 +### Fixed: +- Disable keyboard controller input while swkbd is open (foreground). + - Fixes an issue where playing Stardew Valley with a keyboard would cause the software keyboard prompt not to close. + +## 1.1.1306 - 2024-05-14 +### Fixed: +- Make TextureGroup.ClearModified thread safe. + - Fixes crashes in Europa (Demo). + +## 1.1.1305 - 2024-05-14 +### Added: +- Add the "Auto" theme option in setting. + - Adds an option for Avalonia to follow OS theme (light or dark). + +## 1.1.1304 - 2024-05-14 +### Fixed: +- Add support for bindless textures from storage buffer on Vulkan. + - Fixes rendering in Castle Crashers Remastered. + - Fixes missing shadows in certain minigames in Mario Party Superstars. + +## 1.1.1303 - 2024-05-14 +### Fixed: +- discordRPC: Truncate game title and details if they exceed Discord byte limit. + - Fixes an issue where Discord RPC caused Ryujinx to crash if a game's title was longer than 128 characters. + +## 1.1.1302 - 2024-05-14 +### Fixed: +- HID: Stub IHidServer: 134 (SetNpadAnalogStickUseCenterClamp). + - Allows eBaseball Powerful Pro Yakyuu 2020, Pawapoke R, WBSC eBASEBALL: Power Pros, and possibly other "Power Pro" games to boot without "Ignore Missing Services". + +## 1.1.1301 - 2024-05-14 +### Fixed: +- Update outdated Windows version warning. + - Updates the warning message displayed when an unsupported Windows version is detected. + +## 1.1.1300 - 2024-05-14 +### Fixed: +- Add Linux-specific files to local builds. + - Ensures Linux-specific files are copied to the output directory when building locally. Useful for testing certain changes. + +## 1.1.1299 - 2024-05-14 +### Fixed: +- infra: Update ReSharper's DotSettings. + - Code cleanup. No expected user-facing changes. + +## 1.1.1298 - 2024-05-08 +### Fixed: +- Replace "List.ForEach" for "foreach". + - Code cleanup. No expected user-facing changes. + +## 1.1.1297 - 2024-05-02 +### Fixed: +- Fix system dateTime loading in Avalonia LoadCurrentConfiguration. + - Fixes an issue where trying to change the time to an older date in the Avalonia UI caused the emulator to crash. + +## 1.1.1296 - 2024-05-01 +### Fixed: +- UI: Fix some MainWindow bugs and implement menubar items to change window size. + - You can now set the emulator window size to 720p or 1080p from View > Window Size. + - Window dimensions will no longer be saved when exiting from a maximized state, which caused the size to be reset every time. + - Fixes an issue where the window startup location would reset to the middle of the screen. + +## 1.1.1295 - 2024-04-29 +### Fixed: +- Fix Alt key appearing as Control in settings menus. + - Fixes an issue where the "Alt" key would display on the UI as "Control" when bound. + +## 1.1.1294 - 2024-04-28 +### Fixed: +- Fix cursor states on Windows. + - Prevents the cursor from disappearing during the emulator's game loading screen. + - Fixes an issue wherein the emulator window could not be resized due to the cursor flickering. + - Fixes an issue which caused the cursor to disappear over submenus while cursor was set to always hide. + - Fixes an issue where the check for whether the cursor was within the active window did not take into account the windows position, leading to situations where it would hide where it shouldn't. + +## 1.1.1293 - 2024-04-28 +### Fixed: +- Fix direct keyboard not working when using a controller. + - Allows the Ultracam benchmark tool for The Legend of Zelda: Tears of the Kingdom to be used without setting a keyboard as the controller. + - Allows Deltarune, Undertale, SpongeBob SquarePants: The Cosmic Shake, and likely other games to be played with direct keyboard controls. + +## 1.1.1292 - 2024-04-28 +### Fixed: +- HID: Correct direct mouse deltas. + - Fixes mouse aiming in Quake, SpongeBob SquarePants: The Cosmic Shake, and likely the few other games that support mouse controls on the Switch. + +## 1.1.1291 - 2024-04-22 +### Fixed: +- Add support for bindless textures from shader input (vertex buffer) on Vulkan. + - On Vulkan, fixes the following: + - Fixes rendering in mofumofusensen. + - Fixes missing graphics in PAC-MAN 99, TETRIS 99 and Super Mario Bros. 35. + - Fixes missing backgrounds in even if TEMPEST, Enchanted in the Moonlight, My Last First Kiss, Irresistible Mistakes, Diabolik Lovers games and likely other visual novels from Voltage. + - Fixes missing coins in WarioWare: Get It Together. + - Fixes missing player indicators and radars in FIFA games. + +## 1.1.1290 - 2024-04-21 +### Fixed: +- Implement MemoryManagerHostTracked.GetReadOnlySequence(). + - Fixes a regression from 1.1.1289 that caused games on macOS to crash on boot. + +## 1.1.1289 - 2024-04-21 +### Changed: +- Use pooled memory and avoid memory copies. + - Code cleanup. No expected user-facing changes. + +## 1.1.1288 - 2024-04-21 +### Fixed: +- End render target lifetime on syncpoint increment. + - Fixes Balatro crashing on boot. + - Fixes a regression in Pizza Tower causing a random crash on boot. + +## 1.1.1287 - 2024-04-19 +### Fixed: +- chore: remove repetitive words. + - Code cleanup. No expected user-facing changes. + +## 1.1.1286 - 2024-04-19 +### Fixed: +- Do not compare Span to 'null' or 'default'. + - Code cleanup. No expected user-facing changes. + +## 1.1.1285 - 2024-04-19 +### Fixed: +- Update to new standard for volatility operations. + - Code cleanup. No expected user-facing changes. + +## 1.1.1284 - 2024-04-18 +### Fixed: +- Fix unmapped address check when reading texture handles. + - Fixes a regression likely from 1.1.1098 that caused Sniper Elite 3 to crash on launch. + +## 1.1.1283 - 2024-04-18 +### Fixed: +- Update "SixLabors.ImageSharp" to fix vulnerabilities. + - Updates the SixLabors.ImageSharp dependency. No expected user-facing changes. + +## 1.1.1282 - 2024-04-17 +### Fixed: +- Ava UI: Input Menu Refactor. + - Refactors the input menu code. + - Platform-specific keys (for instance, the Windows key) will now display properly when a button is bound to them. + - Allows keys to be localized. + +## 1.1.1281 - 2024-04-15 +### Fixed: +- Fix crash when changing controller config. + - Fixes a crash that occurred when switching from an input device without motion (i.e. a keyboard) to a controller with motion support while a game is running. + +## 1.1.1280 - 2024-04-14 +### Fixed: +- Texture loading: reduce memory allocations. + - Code cleanup. No expected user-facing changes. + +## 1.1.1279 - 2024-04-11 +### Fixed: +- Account for swapchain image count change after re-creation. + - Fixes a crash on AMD proprietary drivers on Linux when VSync is toggled. + +## 1.1.1278 - 2024-04-11 +### Fixed: +- Allow BSD sockets Poll to exit when emulation ends. + - Fixes a freeze when trying to stop emulation and/or close the emulator on Penny's Big Breakaway, and possibly on other games that use sockets with Poll. + +## 1.1.1277 - 2024-04-10 +### Fixed: +- Revert "Update StoreConstantToMemory to match StoreConstantToAddress on value read". + - Reverts the previous change. The specified cheats were invalid and should not be loaded at all. + +## 1.1.1276 - 2024-04-10 +### Fixed: +- Update StoreConstantToMemory to match StoreConstantToAddress on value read. + - Fixes some cheats with instructions starting with 6XXXXXXX failing to load, specifically when the cheat has bit width equal to 1, 2 or 4, and only one 32-bit value. + +## 1.1.1275 - 2024-04-10 +### Fixed: +- Ava UI: Prevent Status Bar Backend Update. + - Fixes an issue where the GPU displayed on the status bar would change if the graphics backend setting was changed while a game was running. + +## 1.1.1274 - 2024-04-10 +### Fixed: +- nuget: bump Microsoft.IdentityModel.JsonWebTokens from 7.4.0 to 7.5.1. + - Updates the Microsoft.IdentityModel.JsonWebTokens dependency. No expected user-facing changes. + +## 1.1.1273 - 2024-04-10 +### Fixed: +- Fix input consumed by audio renderer SplitterState.Update. + - Fixes a regression from 1.1.1265 that caused crashing in Resident Evil after cinematics. Possibly affected other games. + +## 1.1.1272 - 2024-04-09 +### Fixed: +- CPU: Produce non-inf results for RSQRTE instruction with subnormal inputs. + - Fixes terrain randomly disappearing in Penny's Big Breakaway. + +## 1.1.1271 - 2024-04-09 +### Fixed: +- Use ResScaleUnsupported flag for texture arrays. + - Fixes rendering glitches in Penny's Big Breakaway when using resolution scale, however the game will no longer scale. + +## 1.1.1270 - 2024-04-09 +### Fixed: +- Fast D32S8 2D depth texture copy. + - Improves performance in Penny's Big Breakaway by up to 1500%. + +## 1.1.1269 - 2024-04-08 +### Fixed: +- Pin audio renderer update output buffers. + - Fixes a regression from 1.1.1265 that caused crashes in several games. + +## 1.1.1268 - 2024-04-08 +### Fixed: +- gui: Disable CLI setting persistence for HW-accelerated GUI. + - CLI argument to enable UI software rendering no longer persists in config state. + +## 1.1.1267 - 2024-04-07 +### Added: +- Add support for large sampler arrays on Vulkan. + - Fixes black textures present in most of Hogwarts Legacy. + - Fixes most graphical rendering in Penny's Big Breakaway. + - Fixes grass and other particle effects appearing blocky in The Legend of Zelda: Skyward Sword HD. + +## 1.1.1266 - 2024-04-07 +### Fixed: +- Fix PC alignment for ADR thumb instruction. + - Ni no Kuni Wrath of the White Witch will no longer render a black background when the 1.0.2 update applied. + +## 1.1.1265 - 2024-04-07 +### Changed: +- Audio rendering: reduce memory allocations. + - Code cleanup. No expected user-facing changes. + +## 1.1.1264 - 2024-04-07 +### Changed: +- Enhance Error Handling with Try-Pattern Refactoring. + - Code cleanup. No expected user-facing changes. + +## 1.1.1263 - 2024-04-07 +### Changed: +- Replacing the try-catch block with null-conditional and null-coalescing operators. + - Code cleanup. No expected user-facing changes. + +## 1.1.1262 - 2024-04-06 +### Added: +- misc: Add ANGLE configuration option to JSON and CLI. + - Adds command line arguments to change how the UI will be rendered +--software-gui = Avalonia will use software rendering. +--hardware-gui = Avalonia will use ANGLE/GLX rendering. + - Should help with using Renderdoc to debug graphics issues. No user-facing changes. + +## 1.1.1261 - 2024-04-06 +### Fixed: +- Delete old 16KB page workarounds. + - Deletes unused code. No user-facing changes. + +## 1.1.1260 - 2024-04-06 +### Fixed: +- Vulkan: Fix swapchain image view leak. + - Fixes two regressions from 1.1.1154, though it's unknown what games might have been visibly affected. + +## 1.1.1259 - 2024-04-06 +### Fixed: +- Vulkan: Skip draws for patches topology without a tessellation shader. + - On AMD graphics cards, fixes a crash in Luigi's Mansion 3 on the sand level. + +## 1.1.1258 - 2024-04-06 +### Fixed: +- nuget: bump DynamicData from 8.3.27 to 8.4.1. + - Updates the DynamicData dependency. No expected user-facing changes. + +## 1.1.1257 - 2024-04-06 +### Added: +- Add mod enablement status in the log message. + - Displays what mods are enabled in the logs and logging console. Intended to help with troubleshooting. + +## 1.1.1256 - 2024-04-06 +### Changed: +- Remove Unnecessary Category from Docs ReadME. + +## 1.1.1255 - 2024-04-06 +### Fixed: +- "Task.Wait()" synchronously blocks, use "await" instead. + - Code cleanup. No expected user-facing changes. + +## 1.1.1254 - 2024-04-05 +### Fixed: +- ts: Migrate service to Horizon project. + - Allows nx-hbmenu to boot. + +## 1.1.1253 - 2024-04-05 +### Fixed: +- Ignore diacritics on game search. + - When searching on the games list, allows "pokemon" to display Pokémon games, for instance. + +## 1.1.1252 - 2024-04-05 +### Fixed: +- Add missing ModWindowTitle locale key. + - Fixes the title for the mod manager window. + +## 1.1.1251 - 2024-04-05 +### Added: +- Add support to IVirtualMemoryManager for zero-copy reads. + - Code cleanup. No expected user-facing changes. + +## 1.1.1250 - 2024-04-03 +### Fixed: +- Stop clearing Modified flag on DiscardData. + - Fixes a regression from 1.1.1024 which sank character models into the ground in Easy Come Easy Golf. + +## 1.1.1249 - 2024-04-02 +### Fixed: +- New Crowdin updates. + - Updates Avalonia GUI localizations with the latest changes from Crowdin. + +## 1.1.1248 - 2024-03-27 +### Changed: +- UI: Friendly driver name reporting. + - Makes graphics driver names on the bottom status bar easier to read. + +## 1.1.1247 - 2024-03-26 +### Added: +- Implement host tracked memory manager mode. + - Changes host memory manager modes on ARM to a better tailored version for ARM systems with 16KB page sizes. + - On macOS, fixes: + - Vertex explosions in Shin Megami Tensei V. + - MKTV thumbnails in Mario Kart 8 Deluxe. + - Album photos not displaying correctly in The Legend of Zelda: Breath of the Wild. + - Random crashes in Pokémon Legends Arceus with hypervisor disabled. + - Crashes on boot with hypervisor disabled in Master Detective Archives: Rain Code, Super Mario Bros. Wonder and The Legend of Zelda: Tears of the Kingdom. + - Improves performance in games when hypervisor is disabled, most notably in Mario Kart 8 Deluxe (32-bit game, can't use hypervisor) and Super Mario Odyssey. This also means that games which would softlock, freeze or crash (such as Pokémon games) will be a lot more playable with hypervisor disabled. + +## 1.1.1246 - 2024-03-26 +### Fixed: +- Vulkan: Recreate swapchain correctly when toggling VSync. + - Fixes an issue where, under certain conditions, toggling VSync via hotkey while in-game would not uncap the framerate beyond the monitor's refresh rate. + +## 1.1.1245 - 2024-03-26 +### Fixed: +- Disable push descriptors for Intel ARC GPUs on Windows. + - Fixes Intel Arc graphics cards crashing on several games since 1.1.1198. + +## 1.1.1244 - 2024-03-23 +### Fixed: +- New gamecard icons. + - Changes gamecard icons displayed on the games list for applications without icons. + +## 1.1.1243 - 2024-03-23 +### Fixed: +- Add a few missing locale strings on Avalonia. + - Makes more UI elements localizable. + +## 1.1.1242 - 2024-03-21 +### Fixed: +- Updates the default value for BufferedQuery. + - Fixes RDNA3 graphics cards (RX 7000 series) freezing on some UE4 games, such as Shin Megami Tensei V. + +## 1.1.1241 - 2024-03-21 +### Fixed: +- [UI] Fix Display Name Translations & Update some Chinese Translations. + +## 1.1.1240 - 2024-03-20 +### Fixed: +- New Crowdin updates. + - Updates the Avalonia UI translations and adds Arabic and Thai languages. + +## 1.1.1239 - 2024-03-16 +### Fixed: +- nuget: bump Microsoft.CodeAnalysis.CSharp from 4.8.0 to 4.9.2. + - Updates the Microsoft.CodeAnalysis.CSharp. dependency. No expected user-facing changes. + +## 1.1.1238 - 2024-03-16 +### Fixed: +- Ava UI: Fix locale crash. + - Fixes a UI crash when an invalid locale value is taken from system, or present in config. + +## 1.1.1237 - 2024-03-16 +### Fixed: +- Ava UI: Content Dialog Fixes. + - Fixes a macOS-specific error: "Can't have a toolbar in a window with as its borderView", though this did not affect emulator functionality. + +## 1.1.1236 - 2024-03-16 +### Fixed: +- nuget: bump Microsoft.IdentityModel.JsonWebTokens from 7.3.0 to 7.4.0. + - Updates the Microsoft.IdentityModel.JsonWebTokens dependency. No expected user-facing changes. + +## 1.1.1235 - 2024-03-16 +### Fixed: +- nuget: bump the avalonia group with 2 updates. + - Updates Avalonia dependencies. No expected user-facing changes. + +## 1.1.1234 - 2024-03-16 +### Fixed: +- chore: remove repetitive words. + - Fixes a few typos in the code. + +## 1.1.1233 - 2024-03-16 +### Fixed: +- Ava UI: Fix Title Update Manager not refreshing app list. + - Fixes an issue where game updates would not show as applied on the UI immediately after being applied. + +## 1.1.1232 - 2024-03-16 +### Fixed: +- Update ApplicationID for Discord Rich Presence. + - Fixes an issue where the Discord icon for Ryujinx activity did not display proper transparency. + +## 1.1.1231 - 2024-03-14 +### Fixed: +- GPU: Rebind RTs if scale changes when binding textures. + - Fixes an issue where some games would show a couple frames of garbled graphics after camera switches, only when running at resolutions higher than native. Affected games include Super Mario Odyssey and The Legend of Zelda: Tears of the Kingdom. + +## 1.1.1230 - 2024-03-14 +### Fixed: +- Consider Polygon as unsupported if triangle fans are unsupported on Vulkan. + - On macOS, should fix the stats chart in Pokémon Legends Arceus and Pokémon Scarlet/Violet. + +## 1.1.1229 - 2024-03-14 +### Fixed: +- Separate guest/host tracking + unaligned protection. + - Required for the upcoming host tracked memory manager mode. No expected user-facing changes. + +## 1.1.1228 - 2024-03-13 +### Fixed: +- Ava UI: Update Ava. + - Updates the Avalonia package to v11.0.10. + +## 1.1.1227 - 2024-03-13 +### Fixed: +- infra: Fix updater for old Ava users. + - Fixes an issue where mainline Avalonia builds before 1.1.1216 would get stuck in a loop when trying to update to newer versions. + +## 1.1.1226 - 2024-03-13 +### Fixed: +- Increase texture cache total size limit to 1024 MB. + - Fixes a regression from 1.1.606 that caused 1440p/2160p resolution mods to significantly drop performance or crash. + +## 1.1.1225 - 2024-03-13 +### Fixed: +- Fix geometry shader passthrough issue. + - Fixes a regression from 1.1.993 that broke character rendering in Game Builder Garage. + +## 1.1.1224 - 2024-03-11 +### Fixed: +- Passthrough mouse for win32. + - Should fix touchscreen controls on games not working on the Avalonia UI on Windows systems. + +## 1.1.1223 - 2024-03-10 +### Fixed: +- Fix lost copy and swap problem on shader SSA deconstruction. + - Fixes fog in Princess Peach: Showtime! Demo. + - Fixes z-fighting in The Legend of Zelda: Tears of the Kingdom. + - Fixes puddles of water and carpets in No More Heroes 3. + - Fixes fences and the floor in special stages in Kirby and the Forgotten Land. + +## 1.1.1222 - 2024-03-09 +### Fixed: +- Refactor memory managers to a common base class, consolidate Read() method logic. + - Code cleanup. No expected user-facing changes. + +## 1.1.1221 - 2024-03-08 +### Fixed: +- Update dependencies from SixLabors to the latest version before the license change. + - Fixes a missing fonts crash on games such as Monster Hunter Generations Ultimate (hopefully for good now). + - Fixes a security vulnerability present in previous versions of ImageSharp. + +## 1.1.1220 - 2024-03-07 +### Fixed: +- LightningJit: Disable some cache ops and CTR_EL0 access on Windows Arm. + - Allows LightningJit to work on Windows ARM systems. + +## 1.1.1219 - 2024-03-07 +### Changed: +- UI: Reduce minimum window size to 800x500. + - Allows the emulator window to be resized down to a minimum of 800x500. + +## 1.1.1218 - 2024-03-07 +### Added: +- Add title of game to screenshot text. + - Ryujinx screenshot filenames will now contain the application title. + +## 1.1.1216-1.1.1217 - 2024-03-02 +### Changed: +- infra: Make Avalonia the default UI. +- Replaces the old GTK user interface with the Avalonia-based UI as the default on Windows and Linux (macOS already had it). Avalonia has feature parity with GTK, plus the following differences: + - Volume level can now be adjusted from the bottom status bar. + - Default controller profile will now be automatically loaded upon selecting a new controller. + - Improved the controller applet considerably, with a menu button to go directly into input settings. + - Added a customizable grid view for the games list. + - Added a game loading screen which displays PPTC and shader cache progress. + - Added configurable hotkeys for vsync toggle (framerate limiter), screenshots, mute/unmute audio, increase/decrease volume and increase/decrease resolution. + - Added a save manager under Options > Manage User Profiles. Allows for easy file deletion and quick save folder opening. Also adds an option to restore deleted user profiles using existing saves. (Backup/restore functionality is still being worked on.) + - Added Brazilian Portuguese, Castilian Spanish, French, German, Greek, Hebrew, Italian, Japanese, Korean, Polish, Russian, Simplified Chinese, Traditional Chinese, Turkish and Ukrainian localizations for UI text. + - Fixes issues with emulator files not being properly extracted sometimes. + - Fixes an issue where PCs with 2 graphics cards (especially laptops) wouldn't properly detect the GPU, crashing on boot. + - Fixes the occasional "GTK Critical" crash when double-clicking to run games. + - Fixes a crash where some games, such as the Monster Hunter series, would error out when bringing up the software keyboard due to missing fonts in the system. + - Fixes an extremely rare issue where attempting to install firmware would freeze Ryujinx. + - Many, many more smaller changes. + +## 1.1.1215 - 2024-03-02 +### Fixed: +- Avalonia: only enable gamescope workaround under it. + - Fixes a regression from 1.1.1203 that caused Avalonia's drop-down menus to not show until after several clicks on some Linux installations. + +## 1.1.1214 - 2024-02-24 +### Fixed: +- Change packed aliasing formats to UInt. + - On AMD GPUs, fixes graphical glitches in CEIBA, Wet Steps and Yokai Watch 1. + +## 1.1.1213 - 2024-02-23 +### Fixed: +- nuget: bump System.Drawing.Common from 8.0.1 to 8.0.2. + - Dependency update. No expected user-facing changes. + +## 1.1.1212 - 2024-02-23 +### Fixed: +- IPC code gen improvements. + - Code cleanup. No expected changes in games. + +## 1.1.1211 - 2024-02-22 +### Fixed: +- Migrate Audio service to new IPC. + - Fixes missing sound in Unicorn Overlord Demo. + - Fixes an issue where emulator volume would get reset to 100% in certain games that set custom volumes (tested with River City Girls Zero). + +## 1.1.1210 - 2024-02-22 +### Fixed: +- OpenGL: Mask out all color outputs with no fragment shader. + - Fixes shadows in Penny's Big Breakaway on OpenGL. + +## 1.1.1209 - 2024-02-22 +### Fixed: +- Ensure service init runs after Horizon constructor. + - Fixes an uncommon crash when launching games after stopping emulation multiple times. + +## 1.1.1208 - 2024-02-22 +### Fixed: +- Implement virtual buffer dependencies. + - Fixes model flickering in Apollo Justice: Ace Attorney Trilogy on macOS and OpenGL. + - Allows Monster Hunter Rise: Sunbreak to go in-game on macOS. + +## 1.1.1207 - 2024-02-22 +### Fixed: +- Vulkan: Properly reset barrier batch when splitting due to mismatching flags. + - Fixes a regression from 1.1.1205 that caused several games to crash. + +## 1.1.1206 - 2024-02-21 +### Fixed: +- Vulkan: Disable push descriptors on older NVIDIA GPUs. + - Fixes a regression from 1.1.1198 that caused rendering issues on Nvidia GPU series 1000 and older. + +## 1.1.1205 - 2024-02-21 +### Fixed: +- Vulkan: Fix barrier batching past limit. + - Fixes a regression from 1.1.1199 that caused some games to freeze. + +## 1.1.1204 - 2024-02-19 +### Fixed: +- Avalonia UI: Update English tooltips. + - Updates a few settings tooltips on the Avalonia UI to better explain what the settings do. + +## 1.1.1203 - 2024-02-19 +### Fixed: +- Avalonia: Fix gamescope once and for all. + - Fixes Avalonia context menus not showing on the Steam Deck's gaming mode. + +## 1.1.1202 - 2024-02-17 +### Fixed: +- LightningJit: Add a limit on the number of instructions per function for Arm64. + - Fixes a crash in Bluey: The Videogame with LightningJit. + +## 1.1.1200-1.1.1201 - 2024-02-17 +### Fixed: +- hid: Stub SetTouchScreenResolution. + - Allows Tomb Raider I-III Remastered to go in-game without enabling "Ignore Missing Services". + +## 1.1.1199 - 2024-02-16 +### Fixed: +- Vulkan: Improve texture barrier usage, timing and batching. + - Fixes graphical issues on the Turnip Mesa driver in Mario Kart 8 Deluxe, Super Mario Odyssey and other games. + - Fixes Bayonetta Origins: Cereza and the Lost Demon water surfaces on Vulkan on desktop GPUs. + +## 1.1.1198 - 2024-02-16 +### Fixed: +- Vulkan: Use push descriptors for uniform bindings when possible. + - Improves Vulkan performance significantly on AMD Mesa drivers and to a lesser degree on AMD Windows drivers. + - May improve stability on more underpowered systems. + + + \ No newline at end of file diff --git a/docs/coding-guidelines/coding-style.md b/docs/src/dev-guide/coding-guidelines/coding-style.md similarity index 100% rename from docs/coding-guidelines/coding-style.md rename to docs/src/dev-guide/coding-guidelines/coding-style.md diff --git a/docs/src/dev-guide/guides/assets/metal-frame-capture.png b/docs/src/dev-guide/guides/assets/metal-frame-capture.png new file mode 100644 index 00000000..78fe3cab Binary files /dev/null and b/docs/src/dev-guide/guides/assets/metal-frame-capture.png differ diff --git a/docs/src/dev-guide/guides/index.md b/docs/src/dev-guide/guides/index.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/src/dev-guide/guides/metal-frame-capture.md b/docs/src/dev-guide/guides/metal-frame-capture.md new file mode 100644 index 00000000..e11ceef9 --- /dev/null +++ b/docs/src/dev-guide/guides/metal-frame-capture.md @@ -0,0 +1,35 @@ +*Written by: [@jcm93](https://github.com/jcm93)* + +Below is the method that I have found to produce reliable Metal GPU frame captures of Switch titles in Ryujinx, using Xcode and the lldb debugger. The first draft of this guide will be "quick and dirty;" hopefully, it will be updated continuously so it eventually conforms to best practices, insofar as such a thing can be said to exist in this situation. + +![metal-frame-capture](./assets/metal-frame-capture.png) + +## External Build System Project in Xcode + +Xcode seems to be more willing to harness an application properly if it's nominally in charge of the entire build process, even if the application isn't using a familiar C-family build toolchain. So we will add Ryujinx as an "External Build System" project, with `dotnet`, our favorite external build system. + +1. Clone the Ryujinx github repository as normal: ```git clone https://github.com/ryujinx-mirror/ryujinx``` +2. In Xcode, create a New Project. For the template, navigate to "Other", then search for or select "External Build System". For the "Build Tool", provide the location of your `dotnet` installation. For me, this is `/usr/local/share/dotnet/dotnet`. Create the project in any directory you wish; for convenience, you may want to create a folder in your cloned Ryujinx repository named `macos-xcode` or similar. +3. With your project created, for the build Arguments, substitute `build -c debug src/Ryujinx`. For the directory, browse and pick the base directory for your cloned Ryujinx repository that contains the `Ryujinx.sln` file. Uncheck "Pass build settings in environment." + * *If you have better knowledge of Ryujinx dotnet build arguments, please put whatever here for your preferred Ryujinx build settings. This is just the most minimal way I found to get it building without poring over Ryujinx build scripts.* +4. Optionally, add all project files to the project with "File->Add Files to...", creating folder references and selecting the build target. +5. Build the project. +6. Tell Xcode the binary you want it to debug by navigating to Product->Scheme->Edit Scheme. Under Info, then Executable, select Other.... Then, at the prompt, navigate to your repository folder, then the binary location. In the example from step 3, this would be `/src/Ryujinx/bin/Debug/net8.0/Ryujinx`. +7. Also in the Scheme editor, under Options, then "GPU Frame Capture", select "Metal" instead of "Automatically." +8. At this point, Ryujinx should be building properly, and launching and harnessing properly within the Xcode debugger. However, we're not done yet! + +## Build Debug MoltenVK + +We need a version of MoltenVK compiled with debug symbols. Luckily, building MoltenVK per its documentation is straightforward. Follow its build steps [here](https://github.com/KhronosGroup/MoltenVK/?tab=readme-ov-file#fetching-moltenvk-source-code), making sure you end up building in Debug mode. + +> [!NOTE] +> Ryujinx uses an old version of MoltenVK, 1.2.0. Checking out its code at 1.2.0 and building on a current SDK *should* be straightforward. However, I typically opt to build current/main MoltenVK with a one line patch to fix an issue with occlusion queries. That patch is reproduced here: [MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm](https://github.com/jcm93/MoltenVK/commit/9639a5b6be9fac19dadeaa07049aaece58ee1cf7#) + +With debug MoltenVK in hand, replace the `libMoltenVK.dylib` binary in the `src/Ryujinx/bin/Debug/net8.0/` directory of your Ryujinx repository with the debug .dylib you just built. + +## Miscellany + +You should now be able to produce frame captures stably within Xcode of Ryujinx titles. To save a capture as a shareable file, use the Export button in the Summary tab. A couple of other notes: +* You will need to tell lldb to ignore `SIGUSR1`; for whatever reason, this pops up everywhere once guest code is loaded. To do so within your current lldb debugger session, just enter ```pro hand -p true -s false SIGUSR1```. +* We did not enter any of the usual "secret sauce" for enabling capture, like adding `Metal Capture Enabled = YES` to the Info.plist file or `MTL_CAPTURE_ENABLE=1` to our environment variables. In my testing, none of these variables actually exposed the option for frame capture in Xcode. Rather, the important determinant in the option being enabled was what we did in Step 7. If you better integrate Ryujinx's build scripts, these other options might come into play more. +* The usual caveats for Ryujinx debugging apply. Mainly, if we aren't using the Hypervisor, we need to use the Software memory mode, or else hit segfaults nearly instantly in guest code. diff --git a/docs/README.md b/docs/src/dev-guide/index.md similarity index 94% rename from docs/README.md rename to docs/src/dev-guide/index.md index a22da3c7..05f7deb1 100644 --- a/docs/README.md +++ b/docs/src/dev-guide/index.md @@ -21,7 +21,7 @@ Contributing (Building, testing, benchmarking, profiling, etc.) If you want to contribute a code change to this repo, start here. -- [Contributor Guide](../CONTRIBUTING.md) +- [Contributor Guide](https://github.com/ryujinx-mirror/Ryujinx/CONTRIBUTING.md) Coding Guidelines ================= diff --git a/docs/workflow/pr-guide.md b/docs/src/dev-guide/workflow/pr-guide.md similarity index 97% rename from docs/workflow/pr-guide.md rename to docs/src/dev-guide/workflow/pr-guide.md index f4186420..1e794c3f 100644 --- a/docs/workflow/pr-guide.md +++ b/docs/src/dev-guide/workflow/pr-guide.md @@ -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-mirror/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 `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-mirror/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-mirror/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/ryujinx-mirror/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/docs/src/faq/assets/232946932-25878047-c64c-4cd6-83bd-44fd9ecccc83.png b/docs/src/faq/assets/232946932-25878047-c64c-4cd6-83bd-44fd9ecccc83.png new file mode 100644 index 00000000..66d93bc7 Binary files /dev/null and b/docs/src/faq/assets/232946932-25878047-c64c-4cd6-83bd-44fd9ecccc83.png differ diff --git a/docs/src/faq/assets/232947929-2532b894-5c3f-4924-a4c8-0114bc2dfd6d.png b/docs/src/faq/assets/232947929-2532b894-5c3f-4924-a4c8-0114bc2dfd6d.png new file mode 100644 index 00000000..7c8023be Binary files /dev/null and b/docs/src/faq/assets/232947929-2532b894-5c3f-4924-a4c8-0114bc2dfd6d.png differ diff --git a/docs/src/faq/assets/232948327-0bf8e054-b9c2-4b4f-9c96-27177d7e0b2a.png b/docs/src/faq/assets/232948327-0bf8e054-b9c2-4b4f-9c96-27177d7e0b2a.png new file mode 100644 index 00000000..29573e88 Binary files /dev/null and b/docs/src/faq/assets/232948327-0bf8e054-b9c2-4b4f-9c96-27177d7e0b2a.png differ diff --git a/docs/src/faq/assets/232948458-2f290f24-b27d-4b12-8170-039a32743030.png b/docs/src/faq/assets/232948458-2f290f24-b27d-4b12-8170-039a32743030.png new file mode 100644 index 00000000..f5e2ab83 Binary files /dev/null and b/docs/src/faq/assets/232948458-2f290f24-b27d-4b12-8170-039a32743030.png differ diff --git a/docs/src/faq/assets/232948514-1df76fe2-9340-40ad-9cae-c84bffb60181.png b/docs/src/faq/assets/232948514-1df76fe2-9340-40ad-9cae-c84bffb60181.png new file mode 100644 index 00000000..3eb3162b Binary files /dev/null and b/docs/src/faq/assets/232948514-1df76fe2-9340-40ad-9cae-c84bffb60181.png differ diff --git a/docs/src/faq/faq.md b/docs/src/faq/faq.md new file mode 100644 index 00000000..bec49861 --- /dev/null +++ b/docs/src/faq/faq.md @@ -0,0 +1,776 @@ + +This is an assortment of the most common questions and issues Ryujinx users are having as of this document's latest revision date. + +Press `CTRL+F` or `F3` and search for any keywords or errors you may be interested in. If your question, error or issue is not addressed here, please [join Discord](https://discord.gg/ryujinx) and we’ll answer it there, and perhaps add it to this page. + +## Table of Contents + +[Frequently Asked Questions](#frequently-asked-questions) + +[Common Errors and Troubleshooting](#common-errors-and-troubleshooting) + +[Game-Specific Errors and Troubleshooting](#game-specific-errors-and-troubleshooting) + + + +## Frequently Asked Questions + +### **• Where's the prod.keys file?/Where can I download [game]?** +**We do not support piracy.** It is forbidden to request copyrighted content (Firmware/Games/Keys/Shaders) on our repositories or on the Ryujinx Discord. + +### **• Do I need a Switch to use this emulator?** +Ryujinx emulator is capable of running many homebrew applications, and can be a crucial tool in the development and debugging of homebrew applications and games. To play commercial games, you will need access to a Switch compatible with custom firmware (CFW), which will enable you to dump your system firmware, keys and legally purchased games. + +### **__• What does "dumping" mean?__** +In this context, to dump files is to transfer them from your hacked Nintendo Switch to your PC, using either a microSD card or a USB-C cable. + +### **__• How can I dump my firmware/games/keys?__** +First, you need to hack your Nintendo Switch, which you can learn how to do here: [https://nh-server.github.io/switch-guide/](https://nh-server.github.io/switch-guide/). + +Once you have hacked your Switch, [backed up your keys](keys.md) +and [dumped your firmware](https://github.com/ryujinx-mirror/ryujinx/wiki/Firmware-Dumping-Guide-(TegraExplorer-or-hbmenu-&-Goldleaf)), +you may use the [nxdumptool homebrew](https://github.com/DarkMatterCore/nxdumptool/releases) on your Switch to dump your games, updates and DLC files. + +### **__• Why use an emulator if I already have a Switch?__** +1. To play in 4K/higher resolutions than the Switch. +2. Allows multiple different controllers to be used. +3. Smoother/higher FPS with good enough hardware. +4. Play over the internet with LDN on games that support local wireless. +5. Modding games is faster and easier than on Switch. +6. Don't need a capture card to stream or record. +7. Easily use older updates of games you've dumped before if something you want gets patched. +8. Convenience: you avoid having several consoles plugged in and switching between them to play what you want. +9. Years down the line, online shops and services will close, and hardware will start breaking down, but emulation and digital dumps won’t; in the future, the console and its games will be preserved digitally thanks to Ryujinx and your game backups that you created in the present, even after the system is long dead and your console has become a paperweight. + +### **__• How well does [game] run on Ryujinx?__** +You can find compatibility reports here: [https://github.com/ryujinx-mirror/ryujinx-Games-List/issues](https://github.com/ryujinx-mirror/ryujinx-Games-List/issues) + +If you wish to contribute, you can open a new issue if the game has never been added, or you can add your test results as a comment on a game's issue for it to be merged into the top post, as long as it contains all the necessary information. + +### **__• What are the optimal best settings?__** +Default settings and Vulkan if your GPU supports it. Ryujinx works out of the box and is already on the best settings by default. + +You can of course tinker with the graphics settings (resolution, antialiasing, scaling filter, anisotropic filtering) so you can achieve the proper image quality for your setup, but **you shouldn’t change anything else** unless specified in compatibility entries or instructed by a staff member. You’re very likely to make performance worse (and in a few cases, crash) if you do. + +### **__• I have no idea what I'm doing. How do I Ryujinx?__** +Follow the Ryujinx Setup & Configuration Guide:[ https://github.com/ryujinx-mirror/ryujinx/wiki/Ryujinx-Setup-&-Configuration-Guide](https://github.com/ryujinx-mirror/ryujinx/wiki/Ryujinx-Setup-&-Configuration-Guide) or see the Readme:[ https://github.com/ryujinx-mirror/ryujinx/blob/master/README.md](https://github.com/ryujinx-mirror/ryujinx/blob/master/README.md) . + +If you are still having trouble, please visit a support channel on our [Discord Server](https://discord.gg/VkQYXAZ) and we will be happy to assist. + +### **__• How do I add games to Ryujinx?__** +Add a games directory in `Settings` > `User Interface` > `Game Directories` > `Add`. + +![games directory](https://github.com/ryujinx-mirror/ryujinx/assets/79612681/cd3091c3-1423-4f68-9389-cc4b8e9114ad) + +The games don’t have to show up on the window where you are selecting the folder, as it’s looking for folders, not game files. + +If after selecting the correct game directory your games still do not show up on the main Ryujinx window, either your games aren’t in the correct format or you’ve chosen the wrong directory. + +### **__• How can I use a single joycon/DS4/DS5/PS4/PS5/Pro Controller/Xbox controller on Ryujinx?__** +All of these controllers are supported natively. Simply head to `Options` > `Settings` > `Input` > `Player 1` > `Configure`, select your gamepad from the `Input Device` dropdown, click `Load` top right, then click `Save`. + +### **__• How can I use dual joycons on Ryujinx?__** +You need [DS4Windows](https://github.com/Ryochan7/DS4Windows/releases/) for the joycon pair to show up on Ryujinx (they will be an "Xbox" controller under input devices). On DS4Windows, select joycon support and enable the UDP server for motion controls. + +### **__• How can I use a GameCube controller on Ryujinx?__** +You will need [Delfinovin](https://github.com/Struggleton/Delfinovin). + +If your joysticks don’t work, spin them for a bit until they do. + +### **__• How can I play with mouse and keyboard controls?__** +Mouse controls are not currently supported. You can make do with something like mouse2joy or reWASD, but the vast majority of our users have preferred controller gyro over this workaround. + +### **__• How can I unbind a button/key?__** +Left click on the binding then press middle click on your mouse. + +### **__• Help! Why is the emulator crashing?__** +Refer to the [troubleshooting](#common-errors-and-troubleshooting) and [game-specific](#game-specific-errors-and-troubleshooting) sections below. + +If you can’t find your issue in this page: join our [Discord server](https://discord.gg/ryujinx), provide an explanation of the issue and upload a .log file to the appropriate support channel. Our staff will take a look and give you some pointers on what's going wrong. + +### **__• How can I lower the resolution?__** +Disable docked mode or set a custom resolution multiplier of 0.xx (for example: `0.75`) or 0,xx (`0,75`), depending on what your language uses. + +Though if you’re trying to improve performance by doing this, keep in mind it will only work in the unlikely scenario that your GPU is the bottleneck. The vast majority of the time, emulation is CPU-bottlenecked, as it mostly runs on CPU. + +### **__• Game runs really slow for me. What can I do to increase the FPS?__** +Make sure your graphics card drivers and Ryujinx are up to date. + +If you have an AMD or Intel graphics card, you should always use the Vulkan backend instead of OpenGL. You may also dual boot Linux if you're still experiencing issues, as Mesa drivers are usually less buggy than AMD/Intel Windows drivers. + +You may also be experiencing shader compilation stuttering (see the below answer), in which case, the more you play, the less of a problem it’ll be, as the shader cache will build up and the stutters will slowly go away. + +If your game is still slow, you might need to get a better PC or wait for emulator optimizations. + +### **__• What are shaders and why do I need them?__** +Shaders are small programs used in videogame rendering. In modern emulation (and even some PC games), every time a new model or effect shows up on screen, its shader needs to be compiled (read: translated) for your GPU. While the shader is being compiled, the game needs to pause, which you will know as shader compilation stuttering. Once the shader has been compiled, it gets stored in a shader cache, which will ensure you don’t stutter the next time that shader comes up. + +Unfortunately, shader compilation is not easy to circumvent. Vulkan is significantly faster at shader compilation than OpenGL thanks to SPIR-V, Vulkan's shader backend. On first runs we recommend letting games play out opening cutscenes and then restarting, or running anything that makes them play themselves, such as automatic racing in MK8 or bot matches in SSBU. This will compile some shaders and, with a fast enough CPU and Vulkan, the hiccups will be greatly reduced. + +### **__• How do I enable asynchronous shader compilation/async shaders?__** +Asynchronous shader compilation introduces graphical glitches, which sometimes don’t go away until a restart, and does not actually eliminate stuttering completely; as such, the Ryujinx developers have no plans to implement this feature. However, outside contributors are welcome to write and open a pull request for it, and it will be reviewed, approved and added to the main builds if it's up to Ryujinx standards. + +### **__• Why is my game 30fps?__** +Because the game you're playing is a 30fps game. + +### **__• How do I uncap the framerate?__** +`F1` uncaps fps, or `Tab` if you have an older install. You can also click `Vsync` at the bottom left of the status bar in windowed mode. + +### **__• But now my game is going too fast! How do I make it normal speed?__** +The vast majority of Nintendo Switch games have their physics and speed tied to the framerate, and as such, increasing the framerate increases the game speed. In these cases, you need to find a 60fps mod (or whatever target you want; some 120fps mods exist) for your specific game. + +You also have to keep in mind that these mods may be static, which means going under the target may cause the game to run in slow motion. If your hardware can’t run a game at that target, you will be better off not using framerate mods. + +### **__• How do I install mods for a game?__** +Right click the game > `Open Mods Directory`. Extract your mods here. Folder structure should be `Ryujinx` > `mods` > `contents` > [game ID] > [mod name] > `exefs` or `romfs` > mod files. + +![image3](assets/232947929-2532b894-5c3f-4924-a4c8-0114bc2dfd6d.png) + +Afterwards, right click the game and click on `Manage Mods` to ensure that the mods are enabled before playing. + +![mod manager](https://github.com/ryujinx-mirror/ryujinx/assets/79612681/eb004241-a52e-4127-9acd-e9e1aa1539b0) + +If the mods don't work in-game, they are most likely not for your version of the game. + +### **__• How do I install cheats for a game?__** +Right click the game > `Open Mods Directory`. Create a folder named `Cheats`, and inside it, create a .txt file with the first 16 characters of the game version’s build ID as the file name. The BID is usually mentioned somewhere in the same page as the cheats themselves, but if you can't find it, it can be obtained from the cheat manager. + +![image](https://github.com/ryujinx-mirror/ryujinx/assets/79612681/181d9ab3-7a20-49fa-b6b8-1f8dc8d62e17) + +![image](https://github.com/ryujinx-mirror/ryujinx/assets/79612681/1f46d557-b962-4168-abaa-9b58ac66c350) + +Open the .txt file and add your cheats into it. Afterwards, right click the game > `Manage Cheats` and enable the ones you want to use. You can also manage them during gameplay by going into `Actions` > `Manage Cheats`. + +If the cheats don't work in-game, they are most likely not for your version of the game. + +### **__• What are the hotkeys/"keyboard shortcuts" in Ryujinx?__** +- `ESC` exits the emulation. +- `F1` toggles Vsync (read: framerate cap). +- `F2` toggles mute/unmute. +- `F4` unhides the UI. It doesn’t hide it so as to avoid accidents. +- `F5` pauses and unpauses emulation. +- `F8` takes a screenshot at the internal resolution the game is rendering at (and not at the screen resolution). The screenshots are saved in your system’s pictures folder (ex. `C:\Users\yourname\Pictures\Ryujinx`) or in `portable\screenshots` if you’re using a portable install. +- `F9` toggles docked/handheld mode. +- `F11`/`Alt+Enter` toggles fullscreen. + +There are also hotkeys for increasing and decreasing resolution scaling, and increasing and decreasing sound volume, but they are unbound by default. Most of these are exposed and configurable in the Avalonia UI, and there's an [open pull request](https://github.com/ryujinx-mirror/ryujinx/pull/4503) to add the remaining ones. + +### **__• What is Avalonia?__** +Avalonia is a user interface framework. We have been developing a new Avalonia-based UI for quite some time now, and we plan to completely remove the old GTK UI soon. + +### **__• Where can I try this Avalonia thing?__** +As of 1.1.1217, Avalonia has become the default UI. + +### **__• Does Avalonia autoupdate?__** +Yes. + +### **__• How do I update the emulator?__** +Click on `Help` then `Check for Updates`. + +### **__• How do I report a bug?__** +If you've found a bug, please first make sure it's not been reported on the [main issue tracker](https://github.com/ryujinx-mirror/ryujinx/issues) or on the [game compatibility list](https://github.com/ryujinx-mirror/ryujinx-Games-List/issues). Then post a comment in the game's compatibility entry with a screenshot, a log and a save file, along with an explanation on how to reproduce the issue. This allows our developers to quickly look into bugs, without having to worry about how to reproduce them. + +### **__• How well does Ryujinx run on macOS?__** +Apple Silicon macOS devices, such as the M1 or M2, can run Ryujinx with good playability across many titles. + +Intel Macs have a lot more issues due to old, deprecated drivers or unsupported hardware. A lot of integrated Intel GPUs (5th gen or older) don’t support the necessary Vulkan featureset to work. + +On Intel Macs with AMD GPUs or newer Intel iGPUs, you likely want to either dual boot Linux or use Boot Camp to run Windows, as macOS drivers for these graphics cards leave much to be desired. + +Keep in mind Ryujinx needs bare metal access, so it won't run on a VM without some kind of GPU passthrough. + +### **__• Can I run Ryujinx on iPhone/iPad/iOS?__** +No. iOS heavily restricts JIT, does not completely support .NET runtime and does not give apps sufficient RAM to run something such as Ryujinx, plus sideloading has plenty of issues, among other things. The iOS space needs to change significantly before Ryujinx on iOS is even a consideration. + +### **__• Can I run Ryujinx on Android?__** +No. While we would love to see Ryujinx on Android devices, our priorities currently lie in improving the core experience for Windows, Linux and macOS users. + +### **__• Can I run Ryujinx on Xbox Series X?__** +No. It requires a DirectX renderer, which Ryujinx does not have at the moment. There are also RAM limitations and some graphics features that Ryujinx needs aren’t supported on DirectX, among other things. + +### **__• When is [feature] coming?__** +We don’t like giving ETAs, as all of our developers work on Ryujinx in their free time, and you can never know when something will be entirely ready in open source projects in general. + +If you would like to help speed up the process, we currently have a [Patreon](https://www.patreon.com/ryujinx/membership) goal that, when reached, will help gdkchan, the main developer and project lead, to become a full-time developer. + +### **__• Has [feature] been implemented/[bug] been fixed yet?__** +You can search for it by pressing `CTRL+F` or `F3` on our changelog page: https://github.com/ryujinx-mirror/ryujinx/wiki/Changelog + +### **__• How can I create a Mii?__** +`File` > `Load/Open Applet` > `Mii Editor`. You can’t create them from in-game as Ryujinx doesn’t support loading applets during gameplay yet. + +### **__• How can I use an Amiibo?__** +Go in-game to where it asks you to scan one, then click on `Actions` > `Scan an Amiibo`. + +### **__• Where can I find a game's save files?__** +Once you have [added a games directory](https://github.com/ryujinx-mirror/ryujinx/wiki/FAQ-and-Troubleshooting#-how-do-i-add-games-to-ryujinx), right click a game and select `Open User Save Directory` or `Open Device Save Directory`. Most games utilise a user save, but some games use a system save; for example Animal Crossing. + +![saves](https://github.com/ryujinx-mirror/ryujinx/assets/79612681/3aad07fb-98e4-49b7-a6fa-bd9e6acdcd48) + +Save files are all compatible across Switch devices and all Switch emulators, so you may copy and paste them anywhere and they will still work. + +### **__• Where can I find ALL game save files?__** +`C:\Users\yourname\AppData\Roaming\Ryujinx\bis\user\save\` or `\portable\bis\user\save` if you're on a portable install. + +### **__• Why are the save folders all sorted by some weird numerical order instead of having their game IDs?__** +This is how the Switch itself does it. We are merely trying to emulate the Nintendo Switch filesystem properly. + +### **__• Can I extract data from a game using Ryujinx?__** +Once you have [added a games directory](https://github.com/ryujinx-mirror/ryujinx/wiki/FAQ-and-Troubleshooting#-how-do-i-add-games-to-ryujinx), right click on a game > `Extract Data`, choose the section you want to extract, then select the folder you want to extract it to. + +DLC data is NOT extracted currently. + +### **__• Why is the option to extract data greyed out?__** +It's disabled on the LDN builds. Use the main Ryujinx build. + +### **__• What is FIFO% and how do I lower it?__** +FIFO (First In First Out) is the emulated GPU's command queue. Higher percentage means the commands are taking longer to be processed by your CPU/Ryujinx, lower percentage means the command queue is not the limiting factor. The acronym describes the order in which the commands are processed. + +To reiterate, this is **not** GPU usage, it's the emulated Nintendo Switch's GPU commands, which are processed by your CPU (as is most of the stuff in an emulator) and then fed to your GPU in order to present an image. + +### **__• How does CPU usage work in Ryujinx?__** +Ryujinx has 1:1 guest to host threads (but a scheduler keeps only one active per 4 cores at a time), there is one GPU command processing thread, there is optionally one GPU backend thread, there are up to 8 shader background compile threads, there is a dynamic number of JIT highcq background threads, and there are an unbounded number of ASTC decompression threads. + +### **__• How do I build a PR?__** +To build a pull request, first of all [download and install the .NET SDK](https://dotnet.microsoft.com/en-us/download/dotnet/7.0). Go to the top of the PR > click the link after "from" (ex. `gdkchan:true-gmem`), click the green `<> Code` button > `Download ZIP`, extract it, open the extracted folder, `shift+right click` on an empty area of the folder, then click `Open PowerShell window here`, type `dotnet publish -c Release` and click `Enter`. After it’s done, the window will say where it put the files. If you still can’t find them, search for `Ryujinx.exe`, or `Ryujinx.Ava.exe` for the Avalonia build. + +### **__• How do I play online multiplayer?__** +With our LDN build, which allows playing games that feature local wireless or local play, simulating 2 consoles being within close proximity to each other, with other Ryujinx LDN players over the Internet. + +See the Multiplayer Guide here:[ https://github.com/ryujinx-mirror/ryujinx/wiki/Multiplayer-(LDN-Local-Wireless)-Guide](https://github.com/ryujinx-mirror/ryujinx/wiki/Multiplayer-(LDN-Local-Wireless)-Guide) + +### **__• When I click on connect to the internet, Ryujinx doesn’t connect?__** +See the multiplayer guide above. You’re not supposed to click on anything that mentions “online” or “the internet” in-game as that leads to Nintendo servers; you’re supposed to find the local play/local wireless/play locally option, which is then used to connect over the internet with other Ryujinx users. + +### **__• What multiplayer modes does Ryujinx support and what are the differences between them?__** +**LDN**/local wireless/local play is an ad-hoc WiFi connection between 2 or more consoles in close proximity. [A ton of games](https://github.com/ryujinx-mirror/ryujinx/wiki/Multiplayer-(LDN-Local-Wireless)-Guide#how-to-play-ldn) have this on the Switch. We use this to connect Ryujinx instances over the internet. + +**ldn_mitm** makes LDN/local wireless/local play behave as if it were LAN, allowing for same-network (local) connections. This can be used to connect Ryujinx with hacked consoles that have [ldn_mitm](https://github.com/spacemeowx2/ldn_mitm/releases) installed on them. If you use [XLink Kai](https://www.teamxlink.co.uk/wiki/Ryujinx_XLink_Kai_Setup), you can connect via ldn_mitm with other Ryujinx and hacked Switch consoles through the internet, not just locally. + +**LAN** is 2 or more systems connecting through an access point locally. About [15 games](https://github.com/ryujinx-mirror/ryujinx/wiki/Multiplayer-(LDN-Local-Wireless)-Guide#lan-mode-games) have this on the Switch. Games with a LAN mode can connect with **any consoles or Ryujinx instances** on the same network. If you use [XLink Kai](https://www.teamxlink.co.uk/wiki/Ryujinx_XLink_Kai_Setup) or a VPN like [Zerotier](https://www.zerotier.com/download/), you can connect LAN games across any Ryujinx instances, Switch consoles and other emulators through the internet, not just locally. + +Nintendo Switch Online is not supported. Custom servers that replicate Nintendo Switch Online are not supported. + +### **__• How can I connect Ryujinx to a Switch?__** +Read the above answer, specifically the LAN and ldn_mitm parts. + +Hacked consoles can use both LAN and ldn_mitm. To connect with unhacked consoles, the game needs to include a LAN mode. At the time of writing, only [a handful of games](https://github.com/ryujinx-mirror/ryujinx/wiki/Multiplayer-(LDN-Local-Wireless)-Guide#lan-mode-games) support LAN mode on Switch; if the game you’re playing is not one of them, **you can’t connect them to an unhacked Switch** yet. It may become possible in the future. + +### **__• Can I play online with my friend who’s using a Nintendo Switch?__** +See the previous two answers. To play with a Nintendo Switch over the internet, you’re gonna need XLink Kai or a VPN like Zerotier, and also, if the game doesn’t have a LAN mode, the Nintendo Switch will need to be hacked as you will need to use ldn_mitm. There is currently no way to hook up a Nintendo Switch console to Ryujinx’s LDN servers. However, in the future it may be possible to connect a PC to an unmodded Switch via LDN locally, without the need for ldn_mitm. + +### **__• Can I trade Pokémon between Ryujinx and my Switch?__** +If the Switch isn't hacked, you can only do it on Pokémon Sword and Shield. However, an update to the game (not to Ryujinx) broke LAN mode, and it only works for a select lucky few. + +### **__• Why do we keep disconnecting?__** +Some games are extremely finicky and will disconnect the moment anyone’s framerate drops, like Mario Kart 8 Deluxe. This includes shader compilation stuttering, so every player will have to play through every track in single player mode first, in order to cache shaders, and also ensure that they can maintain 60fps on every stage. Remember to keep Vsync enabled as well, since it acts as a framelimiter. + +### **__• I’m playing with a friend and why is it so laggy?__** +Real world distance still applies, so if you’re in different continents or just really far away from each other on the Earth, then you will have the corresponding latency. + +It can also be that a P2P connection was not formed and you’re connecting via the master server, which will of course increase latency as well. If this is happening, you can try connecting using ldn_mitm in conjunction with either XLink Kai or a VPN like Zerotier, which would allow you to connect to each other directly. + +If you’re playing Super Smash Bros. Ultimate, the game has latency baked into it and pretty bad netcode. Most Smash players use Parsec instead of LDN to play together, so you could try that instead. + +### **__• What does LDN stand for?__** +Nobody actually knows, but our best guess is “Local Direct Network” or "Local Distance Network". Nintendo internally refer to local wireless functionality as “LDN”, but the full name is never used. + +### **__• Can I make Ryujinx into a portable install?__** +Yes! See the [portable mode quick reference guide](https://github.com/ryujinx-mirror/ryujinx/wiki/Ryujinx-Setup-&-Configuration-Guide#portable-mode). + +### **__• What’s a portable install?__** +By default, Ryujinx uses your `C:\Users\yourname\AppData\Roaming\Ryujinx` directory for storing firmware, keys, save files, configs, caches etc. If you make a folder named `portable` in the same directory as the Ryujinx executable, the emulator will use that folder instead of the AppData one to store all those files. This is useful if you would like to keep everything in one place, or to avoid settings resetting or shaders constantly rebuilding if you’re testing multiple different Ryujinx versions. + +### **__• How can I support Ryujinx?__** +There are many ways to support or contribute to Ryujinx. You can support us through Patreon (https://www.patreon.com/ryujinx) or you can boost the server with Discord Nitro. If you know how to help somebody in support, you can help us by answering questions there. You can help with testing future changes to the emulator in Discord’s #pr-testing channel or in a PR’s discussion page as well. + +If you are a developer, there are [Good First Issues](https://github.com/ryujinx-mirror/ryujinx/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) listed on our issue tracker. We do encourage you to talk to some devs in our Discord’s development channel before setting off, so we can confirm your work isn't conflicting with another user's, and so we can help you get used to the codebase and what needs to be done with various issues. + + + +## **Common Errors and Troubleshooting** + +Most of the errors below will be displayed on the console or log files. To view your log files, go to `File` > `Open Logs Folder`. You’ll likely want to open the biggest and latest one of the 3 files. + +![image-3](https://github.com/ryujinx-mirror/ryujinx/assets/79612681/62f441b2-c8d3-4f99-b5f4-36d445c72542) + +![image](https://github.com/ryujinx-mirror/ryujinx/assets/79612681/30c8e179-16a8-47db-ac19-8829001cb928) + +### • Can’t open Ryujinx: `|E| Application : Unhandled exception caught: System.TypeInitializationException: The type initializer for 'Gtk.Application' threw an exception. ---> System.DllNotFoundException: Gtk: libgtk-3-0.dll, libgtk-3.so.0, libgtk-3.0.dylib, gtk-3.dll` +This error is specific to the old GTK UI. As of 1.1.1217, Avalonia has become the default, so please redownload Ryujinx if possible. If you're on an old, unsupported version: + +Some emulator files are missing. Redownload Ryujinx, make sure it’s extracted properly and don’t put it on the desktop or the root of a drive, as those are protected folders. Third party antivirus software can also randomly delete these files, so if you have one, make exceptions for Ryujinx or uninstall the antivirus. + +### • Can’t open Ryujinx: `|E| Application : Unhandled exception caught: GLib.GException: Unrecognized image file format at Gdk.PixbufLoader.Write(Byte[] buf, UInt64 count)` +Similar to the above, Ryujinx is most likely in a protected folder. Move it somewhere else. + +### • Can’t open Ryujinx, console closes without any errors and without opening the main window: +Ensure Ryujinx is not on the desktop or a protected folder and that you don't have any third party antivirus software. This issue has also been reported to have been caused by "defender omega" controllers, so disconnect it if you have one. + +### • Crashing after selecting Vulkan, trying to open settings or booting a game using Vulkan with `|E| GUI.RenderLoop Application : Unhandled exception caught: Ryujinx.Graphics.Vulkan.VulkanException: Initialization failed, none of the available GPUs meets the minimum requirements. at Ryujinx.Graphics.Vulkan.VulkanInitialization.FindSuitablePhysicalDevice(Vk api, Instance instance, SurfaceKHR surface, String preferredGpuId) in D:\a\Ryujinx\Ryujinx\Ryujinx.Graphics.Vulkan\VulkanInitialization.cs:line 217` +If you have a system consisting of an AMD Ryzen CPU with an AMD Radeon iGPU (4600H, 4800H, 5600H etc) and an Nvidia dGPU, you need to update **BOTH** graphics card drivers from their respective websites. Not just the dedicated Nvidia one, and not just from Windows update. + +https://www.amd.com/en/support + +https://www.nvidia.com/download/index.aspx + +If your hardware doesn’t match the above, it’s possible your GPU drivers are simply out of date. In the case that they aren’t, your GPU might not meet the minimum requirements to run Ryujinx, for example any Intel iGPUs 5th gen or older. + +### • Crashing after selecting Vulkan, trying to open settings or booting a game using Vulkan with `|E| GUI.RenderLoop Application : Unhandled exception caught: System.NullReferenceException: Object reference not set to an instance of an object. at Ryujinx.Graphics.Vulkan.CommandBufferPool.AddWaitable(Int32 cbIndex, MultiFenceHolder waitable) in D:\a\Ryujinx\Ryujinx\src\Ryujinx.Graphics.Vulkan\CommandBufferPool.cs:line 147` +Same as above. + +### • `|E| GUI.RenderThread Application : Unhandled exception caught: Ryujinx.Graphics.Vulkan.VulkanException: Unexpected API error "ErrorFeatureNotPresent".` +Similar to the issue above, the emulator cannot detect a graphics card with Vulkan support. Check that your GPU drivers are on the latest possible version, and if they are, then unfortunately your GPU doesn’t meet minimum requirements. + +### • `|E| GUI.RenderLoop Application : Unhandled exception caught: System.IO.FileNotFoundException: Could not find or load the native library: vulkan-1.dll Attempted: "vulkan-1.dll", "C:\Users\pc\Desktop\publish\vulkan-1.dll" at Silk.NET.Core.Loader.LibraryLoader.ThrowLibNotFound(String name, PathResolver resolver)` +Similar to the issue above, the emulator cannot detect a graphics card with Vulkan support. Check that your GPU drivers are on the latest possible version, and if they are, then unfortunately your GPU doesn’t meet minimum requirements. + +### • `|E| GUI.RenderLoop Application : Unhandled exception caught: System.NotSupportedException: No supported Vulkan surface found! at SPB.Graphics.Vulkan.VulkanHelper.EnsureInit()` +Similar to the issue above, the emulator cannot detect a graphics card with Vulkan support. Check that your GPU drivers are on the latest possible version, and if they are, then unfortunately your GPU doesn’t meet minimum requirements. + +### • Crashing after double-clicking any game with `(Ryujinx:18152): Gtk-CRITICAL **: 00:44:23.202: gtk_list_store_get_value: assertion 'iter_is_valid (iter, list_store)' failed 00:00:00.058 |I| Gpu : Backend Threading (Auto): True Marshaling row-activated signal 00:00:00.265 |E| Application : Unhandled exception caught: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object. at Ryujinx.Ui.MainWindow.LoadApplication(String path, Boolean startFullscreen) in D:\a\Ryujinx\Ryujinx\Ryujinx\Ui\MainWindow.cs:line 718` +This error is specific to the old GTK UI. As of 1.1.1217, Avalonia has become the default, so please redownload or update Ryujinx if possible. If you're on an old, unsupported version: +If the error looks like this, click the game once then press `Enter` or use the Avalonia UI. + +![image5](assets/232948327-0bf8e054-b9c2-4b4f-9c96-27177d7e0b2a.png) + +### • Crashing after booting a game or crashing after applying an update with `|E| HLE.OsThread.8 Application : Unhandled exception caught: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> LibHac.Common.HorizonResultException: ResultFsNonRealDataVerificationFailed (2002-4604): Hash error!` +Your game file, update file or both are corrupted/invalid, you need to [dump](https://github.com/ryujinx-mirror/ryujinx/wiki/FAQ-and-Troubleshooting#-what-does-dumping-mean) them again and [ensure nothing goes wrong in the process](https://github.com/ryujinx-mirror/ryujinx/wiki/FAQ-and-Troubleshooting#-game-hangs-on-boot-log-says-e-loader-loadnca-no-exefs-found-in-nca). +- If removing the update works, it's the update file that is corrupted. +- If the error still occurs, it's the game file that is corrupted. + +### • `|E| Application : Unhandled exception caught: LibHac.Common.HorizonResultException: ResultFsPartitionSignatureVerificationFailed (2002-4644): Invalid Partition FS type "????" at LibHac.Common.ThrowHelper.ThrowResult(Result result, String message)` +Similar to the above error, the file you’re trying to load is not a supported file type or may be corrupt. + +### • Crashing after booting a game with `|E| Application : Unhandled exception caught: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> LibHac.Common.HorizonResultException: ResultFsPathNotFound (2002-0001)` +You might be running an update file instead of a game file. See [here](https://github.com/ryujinx-mirror/ryujinx/wiki/Ryujinx-Setup-&-Configuration-Guide#managing-game-updates) for how to properly update a game. +Another possible cause is Ryujinx might be forbidden from accessing the save folder for this game. This can be either due to a permission issue, for instance, from being placed on the desktop, the root of a drive or any kind of protected folder; or due to an antivirus not allowing the files to be accessed by the emulator. + +### • Crashing with `|E| HLE.OsThread.8 Application : Unhandled exception caught: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: System archive with titleid 0100000000000823 was not found on Storage BuiltInSystem. Found in None.` +Your firmware is too old to run the game you’re trying to run, and it tried to use files that don’t exist in such an old version. Update your keys and firmware. + +### • “Ryujinx has encountered an error: System update title was not found in the firmware package.” +The file you're trying to install as a firmware does not contain actual firmware. See the [firmware dumping guide](https://github.com/ryujinx-mirror/ryujinx/wiki/Firmware-Dumping-Guide) for how to dump yours. + +### • “RYU-0003: Firmware parsing error Ryujinx was unable to parse the provided firmware. **_This is usually caused by outdated keys_**.” +The error itself tells you. Firmware and keys go hand in hand; if you update your firmware, you need to update your keys too. + +### • Crashing on boot with `|E| HLE.OsThread.8 Application : Unhandled exception caught: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> LibHac.Common.Keys.MissingKeyException: Missing NCA title key.` +Similar to the above; redump and update your keys. + +### • Crashing on boot with `|E| HLE.OsThread.8 Application : Unhandled exception caught: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> LibHac.Common.Keys.MissingKeyException: Unable to decrypt title key.` +Similar to the above; redump and update your keys. + +### `|E| HLE.OsThread.8 Application : Unhandled exception caught: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Collections.Generic.KeyNotFoundException: The given key 'None' was not present in the dictionary.` +Similar to the above; redump and update your keys. + +### • `|N| Application : Unhandled exception caught: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> LibHac.Common.Keys.MissingKeyException: Unable to decrypt NCA section.` +Similar to the above; redump and update your keys. + +### • Can’t open settings/crashing with `|E| Application : Unhandled exception caught: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: An item with the same key has already been added.` +Go to `C:\Users\yourname\AppData\Roaming\Ryujinx\bis\system\Contents\registered` (or `portable\bis\system\Contents\registered` if on a portable install) and delete the contents of the “registered” folder, then reinstall your firmware. If that doesn't work, redump/update your keys. + +If you get this error but the below strings mention `PTC`, it means your PPTC is corrupted, in which case right click the game on the games list > `Cache Management` > `Queue PPTC Rebuild`. + +### • Game hangs on boot, log says `|E| Loader LoadNca: No ExeFS found in NCA` +When dumping your game, enable “Remove console specific data”, “Generate ticket-less dump” and “Change NPDM RSA key/sig in Program NCA” in nxdumptool. + +### • NSP file won't show on the main menu, loading it from file will hang the emulator and log the following warning: `|W| Loader GetNpdm: NPDM file not found, using default values!` followed by these errors: `|E| Loader LoadNsos: Process initialization returned error "InvalidMemoryRegion".` `|E| Loader TryLoad: Unable to load: Could not find Main NCA` +You're trying to load an update file instead of a game file. See [the setup guide](https://github.com/ryujinx-mirror/ryujinx/wiki/Ryujinx-Setup-&-Configuration-Guide#managing-game-updates) for how to properly update your games. + +### • Ryujinx showing a black screen: +First, make sure that the game you are trying to run is actually supported and that your graphics card is capable of running it. + +If you have an Nvidia GPU, go to the Nvidia control panel and click `Restore` to set it to default settings. + +If you have an AMD or Intel GPU, update your GPU drivers and use the Vulkan graphics backend. + +If you only have an Intel iGPU, make sure it's on a 6th-gen CPU or newer. Older Intel iGPUs do not support the necessary features to run Ryujinx. + +If the problem persists, make sure that any external application that could affect rendering is disabled. This includes software which puts an overlay on top of the emulator display window, like the MSI Afterburner overlay or Twitch Studio. + +### • Black screen with sound on Nvidia: +Restore your Nvidia control panel global settings to defaults. + +![image8](assets/232948458-2f290f24-b27d-4b12-8170-039a32743030.png) + +### • Ryujinx window is transparent/see-through: +Disable sharpening under global graphics in the Radeon control panel. + +![image](assets/232948514-1df76fe2-9340-40ad-9cae-c84bffb60181.png) + +### • Emulator window hanging/not responding after exiting a game: +Close the console window, it will also close the other one. If you’ve hidden the console, you’ll need to use the task manager to terminate the Ryujinx process. As of **1.1.848**, this should happen much less frequently. + +### • Game crashes with `|E| GUI.RenderThread Application : Unhandled exception caught: Ryujinx.Graphics.Vulkan.VulkanException: Unexpected API error "ErrorOutOfDeviceMemory".` +This means your VRAM was exhausted. Check that your resolution scaling isn’t too high; 4x is overkill for virtually every setup. + +If you’re playing Astral Chain, Bayonetta 3, Fire Emblem Engage, Metroid Prime Remastered, Super Mario Bros. Wonder or The Legend of Zelda: Tears of the Kingdom, you might need to enable texture recompression in graphics settings. This is because these games use ASTC textures, which are supported natively without needing to be decompressed on the Switch, but when decompressed on PC can become massive and take up a lot of VRAM. + +If you’re playing other games and your resolution is on native, it might be an issue with emulating that particular game. Check the [game compatibility list](https://github.com/ryujinx-mirror/ryujinx-Games-List/issues) to see if it’s been reported, and if not, post a test result. + +### • Game crashes with `|E| GUI.RenderLoop Application : Unhandled exception caught: Ryujinx.Graphics.Vulkan.VulkanException: Unexpected API error "ErrorDeviceLost".` +This is a generic Vulkan crash. There’s hardly any information that can be gleaned from it, and the solutions vary wildly from case to case, but most of the time it’s not something users can fix or workaround. + +On Nvidia, some device loss crashes were introduced in driver version **527.37** (not just in emulated games; native PC games too) and, at time of writing, it seems drivers newer than this still have some problems. If you are on newer Nvidia drivers and can’t find any mention of these crashes in the compatibility list for your game, it might be worth downgrading the driver version. + +On AMD and Intel GPUs, a bigger amount of games have this issue. If updating to the latest drivers doesn’t fix it, your best bet will be Linux and Mesa drivers. + +### • Game crashing with `|E| HLE.GuestThread.19 Application : Unhandled exception caught: Ryujinx.HLE.Exceptions.GuestBrokeExecutionException: The guest program broke execution! at Ryujinx.HLE.HOS.Kernel.SupervisorCall.Syscall.Break(UInt64 reason) in D:\a\Ryujinx\Ryujinx\Ryujinx.HLE\HOS\Kernel\SupervisorCall\Syscall.cs:line 1873` +This means the game itself crashed, and not the emulator. The cause could be a million different things; however the key for troubleshooting this is not in the error itself, but rather what comes before it. + +![image4](assets/232946932-25878047-c64c-4cd6-83bd-44fd9ecccc83.png) + +As shown in this example, right before the “guest stack trace”, there will be a short error with a code at the end. There can be many of these as well, but we’ll cover the most common. + +- `ResultFsPermissionDenied (2002-6400)` here usually means Ryujinx has been denied access to the save folder for this game. Most of the time it’s solved if you delete the save folder: Right click the game > `Open User Save Directory`. Backup the contents if you care about the save. Go up 2 levels and delete the selected folder. Run the game again. + - If this doesn’t fix it, check that Ryujinx isn’t on a protected folder (such as the desktop or the root of a drive) and that a third party antivirus (if you have one) isn’t blocking Ryujinx from using the save folder. If all else fails, make a portable install and bring over your caches and saves from the previous install. + +- `ResultFsTargetNotFound (2002-1002)` might have the same causes and solutions as those described above. + +- `ResultKvdbInvalidKeyValue (2020-0005)`, also similar to the 2 above errors, means the savedata index for the game isn’t found, so the savedata is corrupted. Try backing up and then deleting the game's savedata folders. If this doesn't solve it, backup your whole Ryujinx data folder (`C:\Users\yourname\AppData\Roaming\Ryujinx`, or the portable folder if you've made a [portable install](https://github.com/ryujinx-mirror/ryujinx/wiki/FAQ-and-Troubleshooting#-whats-a-portable-install)) and then delete it. Then restore the subfolders (caches, save files) you'd like to keep. + +- `ResultFsOutOfRange (2002-3005)` usually indicates a bad dump (corrupt game files). If FS integrity checks is disabled and you are getting this error, enable it, run the game again and check if you now get a hash error as described [here](https://github.com/ryujinx-mirror/ryujinx/wiki/FAQ-and-Troubleshooting#-crashing-after-booting-a-game-or-crashing-after-applying-an-update-with-e-hleosthread8-application--unhandled-exception-caught-systemreflectiontargetinvocationexception-exception-has-been-thrown-by-the-target-of-an-invocation-----libhaccommonhorizonresultexception-resultfsnonrealdataverificationfailed-2002-4604-hash-error). + +- `ResultErrApplicationAborted (2162-0001)` is as generic as it gets. Check your game’s compatibility list entry or the game-specific troubleshooting entry in this page if you get this. + +### • Crashing with `Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.` +This is another generic error. It also doesn’t normally show on logs, only on the console when crashing. A possible cause is Ryujinx being in a protected folder or blocked by a third party antivirus. If this is not the case, check the compatibility page for your game. + +If you're getting this error when running a game on Vulkan and the below strings mention SDL2, you need to uninstall Gshade or stop it from trying to hook onto Ryujinx. Similarly, if Ryujinx won't open and the below strings also mention SDL2, close Medal. + +If you're getting this error on a Rog Ally, go to `Add or remove programs` on Windows and uninstall the "OpenCL, OpenGL, and Vulkan Compatibility Pack". + +![image-3](https://github.com/ryujinx-mirror/ryujinx/assets/79612681/37650ca4-be94-4b86-9a6e-f5caf5793ece) + +### • `|E| HLE.GuestThread.20 Cpu InvalidAccessHandler: Invalid memory access at virtual address 0x0000000000000000. |E| HLE.GuestThread.20 Application : Unhandled exception caught: Ryujinx.Memory.InvalidMemoryRegionException: Attempted to access an invalid memory region.` +Invalid memory access errors, especially ones with the `0x0000000000000000` address, are usually caused by mod or cheat conflicts. Check that any given 2 (or more) mods or cheats you’re using don’t modify the same game files, and remove them if they do. This error can also be caused by poorly-made mods that don’t work on Nintendo Switch hardware. + +Be aware that disabled cheats are still loaded into memory, so that they can be enabled while the game is running; if you are getting this crash and only have cheats but no mods, the issue is likely a conflict among the cheats, **even if they’re disabled**. + +### • Inconsistent frame pacing/frame times: +Disable Ryujinx vsync and cap the framerate externally via your GPU driver settings or RivaTuner Statistics Server. Note that this won’t work for all games; Super Smash Bros. Ultimate, for instance, speeds up even if you cap the framerate externally, as it relies on the vsync signal to determine game speed. + +As of **1.1.739**, frametimes are considerably smoother. + +### • Fullscreen framerate is not as smooth as on windowed mode/G-Sync not working: +On the Nvidia control panel, head to `Vulkan/OpenGL present method` and select `Prefer layered on DXGI Swapchain` to enable GSync on a GSync-compatible monitor. + +![image](https://github.com/ryujinx-mirror/ryujinx/assets/79612681/f697a9f5-2798-4391-910c-8b5dd3b4414b) + +### • RTSS/MSI Afterburner won’t hook to Ryujinx: +Open Ryujinx settings before running a game. + +### • Controller buttons exit emulation/joystick moves cursor/mouse moves on its own/controller presses keyboard keys: +Shutdown Steam or disable the gamepad configurations you may have active on Steam. + +### • Any kind of issue using DualShock 4, DualShock 5 gamepads: +Do not use Betterjoy or DS4Windows, they work with Ryujinx natively and external software may cause issues. + +### • Instant communication error trying to play LDN: +Make sure Ryujinx is allowed on your firewall. If it still occurs, disable P2P in multiplayer settings. + +### • ldn_mitm won't connect/Ryujinx and Switch won’t see each other: +Both Ryujinx and the CFW Switch must be on the same network, timezone setting and game version. Check that Ryujinx is not being blocked by the firewall or a third party antivirus, that you're using a custom user profile on Ryujinx, that you’ve actually selected ldn_mitm in Ryujinx’s multiplayer settings, that you've enabled ldn_mitm on your Switch console and that no passphrase is being used. Try several times as well, since it doesn’t always work on the first attempt. + +### • Game says save file is corrupted: +If the save is from a newer game version, trying to use it on an older update may cause the game to read it as corrupted. In this case simply exit the emulation and update the game. + +If your PC shuts down unexpectedly (blue screen, power outage) while the game is running, the save file might also get corrupted. This is due to Windows keeping the file open at all times, and not just when the game is being saved. As a general rule of thumb, we recommend making frequent backups of your save files, in case something like this happens. + +### • `|W| HLE.OsThread.10 ServiceNv Wait: GPU processing thread is too slow, waiting on CPU.` +The wording is a bit unclear. The error refers to the CPU thread that processes the emulated GPU being too slow, and **not** your GPU being too slow. This error mostly pops up during shader compilation, which is normal and you shouldn't worry about. + +However, if you're getting it even with shaders cached, that may mean your CPU is a tad slower than what is recommended to run Ryujinx properly. + +### • `|W| GPU.MainThread Gpu Log: Shader translator: Shader instruction Votevtg is not implemented` ///`|E| GPU.MainThread Gpu GetInfo: Invalid texture format 0x7FFFF (sRGB: False).` +These are both errors that don’t actually affect how any game runs and are safe to ignore. + +### • Crashing with `|E| HLE.OsThread.6 Application : Unhandled exception caught: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: No valid channel configuration found!` +Change your audio backend to SDL2 or OpenAL. SoundIO can cause this crash in certain situations. + +### • Updated Ryujinx and it didn’t restart when clicking “Yes”: +If you are on Windows 11, Windows Command Line needs to be set to `Windows Console Host` instead of `Windows Terminal` for it to work. + +### • Ryujinx executable disappeared/deleted itself after updating: +Redownload the emulator and do not update while a game is running or settings are open. Do not extract it to a protected folder such as the desktop. Make exceptions for or uninstall any third party antivirus you might be using. + +### • Updated Ryujinx and now the executable/all my files are gone/named “.ryuold”: +Simply head to the website, download the latest version and delete the Ryujinx folder that failed to update, with care not to delete your `portable` folder if you have one. +This may happen if you update while a game is running or while emulator settings are open, if you have a third party antivirus falsely flagging Ryujinx upon updating or if you have Ryujinx on a protected folder, such as the desktop or the root of a drive. + +### • Can’t connect to the internet/Error Code: 2306-0520 Unable to connect to the Internet. The DNS settings or proxy server may have been entered incorrectly: +Read [here](https://github.com/ryujinx-mirror/ryujinx/wiki/FAQ-and-Troubleshooting#-what-multiplayer-modes-does-ryujinx-support-and-what-are-the-differences-between-them). Ryujinx does not support connecting to Nintendo Switch Online (NSO). Any options in a game that prompt you to connect to the internet will almost assuredly try to connect to Nintendo servers, which will not work. + +If you are trying to play multiplayer with other Ryujinx users, you will want [local wireless/local play/play locally](https://github.com/ryujinx-mirror/ryujinx/wiki/Multiplayer-(LDN-Local-Wireless)-Guide), which despite the name will work over the internet. If you are trying to play with Nintendo Switch users, you want LAN mode in games that support it, or ldn_mitm which will allow playing with consoles via LDN, though only if they’re hacked. + +### • Experiencing audio delay after playing for over an hour: +Pause and unpause emulation (`F5` by default). You may also try changing your audio backend to OpenAL if you're on SDL2. + +### • Antivirus flagged Ryujinx as `FileRepMalware`: +Uninstall Avast. Ryujinx is safe as long as you downloaded it from our GitHub or official downloads. + +### • Games not loading/freezing after loading caches/PPTC: +Uninstall AVG. Ryujinx is safe as long as you downloaded it from our GitHub or official downloads. + +### • Updated Ryujinx and now every game is crashing with `|E| Application : Unhandled exception caught: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidOperationException: Could not map view of backing memory. va=0x0000000008000000 size=0x0000000000010000, error code 998)` +You are using ESET antivirus, so you will need to create a HIPS exception for Ryujinx, in: +ESET > Advanced Settings > HIPS > DEEP BEHAVIOR INSPECTION > Exclusions > Edit > Add the Ryujinx folder (the one with the executable) there. + +### • `|E| HLE.GuestThread.22 Application : Unhandled exception caught: Ryujinx.HLE.Exceptions.UndefinedInstructionException: The instruction at 0x000000000bfaeff0 (opcode 0x00000000) is undefined!` +Usually, this error means that a CPU instruction is not implemented, in which case all you can do is wait for it to be implemented. However, `opcode 0x00000000` indicates something is wrong, as that’s not a real instruction. If you have this opcode, right click the game > `Cache Management` > `Open PPTC Directory` and delete its contents. + +### • Low performance on Linux/Steam Deck: +Ensure you are running Ryujinx through `Ryujinx.sh` and NOT the executable itself. + +![image](https://github.com/ryujinx-mirror/ryujinx/assets/79612681/dd1f817d-393b-40e2-8212-e55f9abfe358) + +### • Any kind of audio issues/softlocking/crashing on macOS: +Ensure you set SDL2 as the audio backend and that your Mac meets the minimum requirements. + +### • Crashing on Mac with `|E| HLE.GuestThread.16 Application : Unhandled exception caught: System.Exception: Unhandled exception from guest kernel with ESR 0x82000086 (InstructionAbortLowerEl). at Ryujinx.Cpu.AppleHv.HvExecutionContext.Execute(HvMemoryManager memoryManager, UInt64 address) in /runner/_work/Ryujinx_Eve/Ryujinx_Eve/Ryujinx.Cpu/AppleHv/HvExecutionContext.cs:line 143` +Update your macOS version. + +### • Touch screen not working properly: +Disable docked mode and `Direct Mouse Access`. Touch functionality will not work properly on docked mode for obvious reasons, and `Direct Mouse Access` doesn't allow it to work. + + +## • LDN Error Codes +| Error code | Description | +| --------------- | ---------------- | +| 2203-0016 | WiFi not available.| +| 2203-0022 | WiFi disabled/LDN unavailable: **download the LDN build, make sure LDN is enabled**. | +| 2203-0032 | Invalid state. | +| 2203-0048 | Invalid client (node) data. | +| 2203-0064 | Connection failed. | +| 2203-0065 | Network wasn't found. | +| 2203-0066 | Connection timeout. | +| 2203-0067 | Not allowed to connect (rejected). | +| 2203-0096 | Invalid argument. | +| 2203-0097 | Invalid object. | +| 2203-0113 | Local game version too low, **you need to update your game**. | +| 2203-0114 | Local game version too high, **the other players need to update their games**. | +| 2203-0144 | Lobby is full. | +| 2318-0006 | Network connection lost: ensure Ryujinx is allowed on your firewall, try restarting your router. | +| 2318-0311 | Local game version is too low, **you need to update your game**. | +| 2318-0312 | Local game version is too high, **the other players need to update their games**. | +| 2618-0006 | Network connection lost: ensure Ryujinx is allowed on your firewall, try restarting your router. | +| 2618-0008 | Invalid state. | +| 2618-0014 | Timeout. | +| 2618-0302 | Invalid client data. | +| 2618-0308 | Generic error occurred. | +| 2618-0309 | Network wasn't found. | +| 2618-0310 | Network is full. | +| 2618-0311 | Local game version is too low, **you need to update your game**. | +| 2618-0312 | Local game version is too high, **the other players need to update their games**. | +| 2618-0313 | WiFi is disabled, enable guest internet access. | +| 2618-0314 | Console fell asleep. | + + + +## **Game-Specific Errors and Troubleshooting** + +### Animal Crossing New Horizons +- In-game time is wrong: set your timezone in system settings. + +- Crashing on ARM macOS: disable the hypervisor. + +### Astral Chain +- Crashing with `ErrorOutOfDeviceMemory`: [see above](https://github.com/ryujinx-mirror/ryujinx/wiki/FAQ-and-Troubleshooting#-game-crashes-with-e-guirenderthread-application--unhandled-exception-caught-ryujinxgraphicsvulkanvulkanexception-unexpected-api-error-erroroutofdevicememory). + +- Game is not the right speed: right click on the games list > `Cache Management` > `Queue PPTC Rebuild`. + +### Bayonetta 3 +- Stuck in training mode/loading screen in chapter 1: dump your game from your Switch console again, your file is corrupted. + +- Crashing with `ErrorOutOfDeviceMemory`: [see above](https://github.com/ryujinx-mirror/ryujinx/wiki/FAQ-and-Troubleshooting#-game-crashes-with-e-guirenderthread-application--unhandled-exception-caught-ryujinxgraphicsvulkanvulkanexception-unexpected-api-error-erroroutofdevicememory). + +- Audio desync during cutscenes: this is unavoidable as the game was not made with stutters in mind, rolling the whole cutscene audio and assuming the video will always play at the same speed. As a result of shader compilation and ASTC texture decoding, there will always be stutters during cutscenes, and the video will always fall behind the audio. In the future, when ASTC texture decoding and shader compilation are improved, it may be possible to minimize the stutters to a point where they’re not noticeable on a fast enough CPU. Currently, the only solution is to watch the cutscenes elsewhere or try to resync the video via speeding it up by toggling Vsync. + +### Bayonetta Origins: Cereza and the Lost Demon +- Flickering square artifacts: it’s a driver issue on Nvidia RTX 3000/4000 graphics cards and on drivers newer than 522.25. Surprisingly, the higher the emulator scaling, the less apparent it is; at 2x it’s much less noticeable, and at 3x it goes away almost completely. + +### FIFA 202anything +- Player indicators are invisible. No solution as of yet. + +### Fire Emblem Engage +- Crashing with `ErrorOutOfDeviceMemory`: [see above](https://github.com/ryujinx-mirror/ryujinx/wiki/FAQ-and-Troubleshooting#-game-crashes-with-e-guirenderthread-application--unhandled-exception-caught-ryujinxgraphicsvulkanvulkanexception-unexpected-api-error-erroroutofdevicememory). + +- **There are reports of users corrupting their save files and being unable to progress through chapter 13 due to using certain mods**. Last reported batch of mods used on a broken save file were "arena 100 exp mod, playable emblems mod through cobalt, and battle outfits mod through cobalt". Beware of using these mods on your first playthrough. + +### Hyrule Warriors: Age of Calamity +- This game is hard to emulate at an acceptable speed. If you’re having bad performance on both backends, all you can do is upgrade your hardware or wait for improvements to Ryujinx. + +### Kirby and the Forgotten Land +- Do not use the “No DoF” mod available for this game, as it causes it to hang. + +### Luigi’s Mansion 3 +- Requires a [mod for disabling dynamic resolution](https://github.com/ryujinx-mirror/ryujinx/files/14937306/Disable-Dynamic-Resolution.zip) and running on game version 1.0.0 in order to attain the best possible performance. + +### Mario Kart 8 Deluxe +- Crashing every other boot: select a default Mii. Having a custom Mii selected will crash every second time the game is launched. + +- Communication error during races: every player needs to have cached shaders beforehand and hardware capable of holding 60fps at all times, otherwise after a couple frame drops the game will desync and disconnect. + +### Mario Party Superstars +- “Multiple players are using the same save data. Please choose different user profiles”: run the game on version 1.0.0, as the update doesn’t currently work on LDN. + +- Communication error during matches: every player needs to have cached shaders beforehand and hardware capable of holding 60fps at all times, otherwise after several frame drops the game will desync and disconnect. Luckily this game isn’t as prone to desyncs as Mario Kart 8. + +- Crashing when trying to use local play: right click the game > `Cache Management` > `Open PPTC Directory`, delete the contents of the folder. + +### Mario Strikers: Battle League +- Crashing on boot: use [this mod](https://github.com/piplup55/switch-mods-cheats/raw/master/Mario%20Strikers%20Battle%20League/cutscene%20fix.7z) to bypass the intro video. + +### Metroid Dread +- Requires a [mod for disabling FXAA (1.0.0)](https://cdn.discordapp.com/attachments/495758692495523854/896240412107345960/Disable_FXAA.7z) to better increase the resolution in docked mode. This mod is not needed if running on handheld mode. + +### Metroid Prime Remastered +- Crashing with `ErrorOutOfDeviceMemory`: [see above](https://github.com/ryujinx-mirror/ryujinx/wiki/FAQ-and-Troubleshooting#-game-crashes-with-e-guirenderthread-application--unhandled-exception-caught-ryujinxgraphicsvulkanvulkanexception-unexpected-api-error-erroroutofdevicememory). + +### Monster Hunter Rise +- Crashing on the loading splash screen on the multiplayer build: you need LDN 3.0.0, as it's currently the only LDN build where Sunbreak (anything newer than 3.9.1) will run. (The game is playable on the main builds.) + + - LDN 3.0.0 for Windows: https://cdn.discordapp.com/attachments/801087226649509889/1044298521978876016/ryujinx-1.1.0-ldn3.0-win_x64.zip + + - LDN 3.0.0 for Linux: https://cdn.discordapp.com/attachments/801087226649509889/1044298522658353152/ryujinx-1.1.0-ldn3.0-linux_x64.tar.gz + + - **Do not use LDN 3.0.0 for other games**, only for this one. + +### Nintendo Switch Sports +- Crashing anywhere: you need this PR build https://github.com/ryujinx-mirror/ryujinx/pull/4047 + - If the artifacts are expired, you'll need to [build it yourself](https://github.com/ryujinx-mirror/ryujinx/wiki/FAQ-and-Troubleshooting#-how-do-i-build-a-pr). + +### Octopath Traveler II +- Crashing on boot: disable ignore missing services, queue a PPTC rebuild, delete both caches if that doesn't work. + +### Pokémon Legends Arceus +- Game crashes on launch: make sure `Use alternative memory layout (Developers)` is disabled in system settings. + +- Controller going crazy/moving to the left/pressing buttons on its own: disable the handheld controller in input settings. Alternatively, disable the player 1 controller if playing on handheld mode. If it still occurs after doing this: Go to `File` > `Open Ryujinx Folder`, delete `config.json` (or `LDNconfig.json` if using LDN version), restart the emulator, open the player 1 settings, select your controller from the `Input Device` dropdown top left, click `Load` top right, click `Save` bottom right, re-add your games directory, click `Save` and run the game. + +- If you have invisible models and are on the latest Ryujinx version, then your GPU is probably too old and doesn’t support the necessary features to render models in this game. Check if you can update your graphics drivers and ensure you're on the latest Ryujinx build. + +### Pokémon Let's Go Pikachu/Eevee +- This game can only be played with single joycons in docked mode. To play with a normal controller, you need to disable docked mode and configure the handheld controller in input settings. + +### Pokémon Scarlet/Pokémon Violet +- Game crashes on launch: make sure `Use alternative memory layout (Developers)` is disabled in system settings. + +- Controller going crazy/pressing buttons on its own: disable the handheld controller in input settings. Alternatively, disable the player 1 controller if playing on handheld mode. If it still occurs after doing this: Go to `File` > `Open Ryujinx Folder`, delete `config.json` (or `LDNconfig.json` if using LDN version), restart the emulator, open the player 1 settings, select your controller from the `Input Device` dropdown top left, click `Load` top right, click `Save` bottom right, re-add your games directory, click `Save` and run the game. + +- Can’t click on director Clavell on the electric gym challenge: increase your stick deadzone to `0.15`-`0.20` in input settings. + +- To play the special event raids for Pikachu, Charizard, Greninja, Iron Leaves, Walking Wake, Scrumbling Jumblo, Poffin McGuffin etc: you can inject them into your save file using pkhex. They will also not be tied to a timeframe if you do this, which means you can do any of them at any moment. + +### Pokémon Sword/Pokémon Shield +- LAN mode doesn’t work: it's been reported that players must update their Wild Area news files via pkhex for LAN mode to work properly. + +### Sonic Frontiers +- Flashing textures: only happens on AMD GPUs on Windows, it’s not an issue on Linux with Mesa drivers. + +### Sonic Origins +- Crashing/freezing: there’s no fix yet. + +### Splatoon 2 +- Can’t level up or get weapons: NSO is not supported and therefore it’s impossible to level up on Ryujinx. You need to download a save file with gear already unlocked or transfer your own from your Switch. + +### Splatoon 3 +- Softlock on the yellow/purple loading screen: disable guest internet access. If you want to use LAN mode, you have to enable guest internet access when you’re in the Shoal, not before booting the game. + +- Can’t level up or get weapons: NSO is not supported and therefore it’s impossible to level up on Ryujinx. You need to download a save file with gear already unlocked or transfer your own from your Switch. + +### Super Mario Bros. Wonder +- Crashing with `ErrorOutOfDeviceMemory`: [see above](https://github.com/ryujinx-mirror/ryujinx/wiki/FAQ-and-Troubleshooting#-game-crashes-with-e-guirenderthread-application--unhandled-exception-caught-ryujinxgraphicsvulkanvulkanexception-unexpected-api-error-erroroutofdevicememory). + +- Crashing on the LDN build: this game does **not** have LDN. If you would like to play multiplayer over the internet, use Parsec. + +### Super Mario Maker 2 +- Can’t connect to course world and download levels: you need a save file with the levels already loaded into it, as NSO is not supported. + +### Super Mario Odyssey +- Do not use “Disable Dynamic Resolution” mods with this game. They are not needed and might cause issues. + +- In case of abnormally low performance, purge your shader cache. + +- Can’t scan an Amiibo: this game needs you to hold the `D-pad right` button first, as it asks on screen. + +### Super Smash Bros. Ultimate +- This game has some performance issues due to the fact that NROs aren’t cached by the emulator. Unfortunately there’s nothing that users can do about it at the moment. + - This issue does not exist on ARM macOS devices running with the hypervisor enabled. + +- Input lag/laggy connection: this game has really bad netcode, which also manifests during LDN games. Most Smash players use [Parsec](https://parsec.app/) instead, as that doesn’t interact with the game’s own network code. + +- Stuck on infinite loading when creating local play match: Skyline blocks LDN connectivity, which means you can’t play LDN with mods unless every player attaches a [Skyline logger](https://github.com/Coolsonickirby/skyline-logger-files/releases +), which disables this blocker. Alternatively, as mentioned above, use [Parsec](https://parsec.app/). + +- Black screen/softlock on boot when using mods: disable guest internet access. + +### Taiko no Tatsujin +- Crashing after accepting User Agreement: you need to accept the first User License agreement and **not** accept the second Data Analysis Policy to launch the game. + +### The Great Ace Attorney Chronicles +- Black screen: set resolution scaling to native. + +### The Legend of Zelda: Breath of the Wild +- While this game runs perfectly fine on Ryujinx, we always recommend playing the Wii U version on [Cemu](http://cemu.info/) if possible, as it’s the superior experience. If you’ve already made progress on your Switch save, you can convert it to a Wii U save with the [BotW save manager](https://github.com/DeltaJordan/BotW-Save-Manager/releases). + +- 20fps lock: if the game can’t hold 30fps, it will lock to 20. This is how the game works on both Wii U and Switch. You can use a [30fps mod (for 1.6.0)](https://cdn.discordapp.com/attachments/835681932703563826/850475511805509662/BOTW_30_FPS.zip) to stop this from happening. + +- Crashing on ARM macOS: disable the hypervisor. + +### The Legend of Zelda: Link’s Awakening +- Requires a [“60fps” mod](https://cdn.discordapp.com/attachments/356187763139280896/724250990928461834/Stable-60fps-v2.zip) to stabilise performance. + +### The Legend of Zelda: Skyward Sword HD +- Audio issues seem to appear on slower CPUs. + +### The Legend of Zelda: Tears of the Kingdom +- 20fps lock: if the game can’t hold 30fps, it will lock to 20. This is how the game works on Switch. You can use the dynamic fps mod included with [Ultracam](https://gamebanana.com/mods/480138) to stop this from happening. As of **1.1.802**, this should happen much less frequently. + +- Blurry graphics: the game uses both FSR and FXAA, which don't work that well with resolution scaling. You can use the mods included with [Ultracam](https://gamebanana.com/mods/480138) to workaround the issue. + +- Crashing with `ErrorOutOfDeviceMemory`: [see above](https://github.com/ryujinx-mirror/ryujinx/wiki/FAQ-and-Troubleshooting#-game-crashes-with-e-guirenderthread-application--unhandled-exception-caught-ryujinxgraphicsvulkanvulkanexception-unexpected-api-error-erroroutofdevicememory). + +- Crashing with `ErrorDeviceLost`: this can happen on older Nvidia drivers, in which case update them to version **516.94** or newer, or use OpenGL. + +- Crashing with `|E| GPU.MainThread Application : Unhandled exception caught: System.NullReferenceException: Object reference not set to an instance of an object.', '`: you are using a certain broken mod called "Visualfixes", remove it. + + - Still crashing after removing faulty mods: right click the game > `Cache Management` > `Open PPTC Directory` and delete its contents. + +- Infinite saving/loading: close any programs that could be accessing your save and restart explorer.exe in Windows task manager. + +- Fast cutscenes/no audio/softlocking/black screen on power selector: don't use outdated 60fps mods, use the dynamic fps mod from [Ultracam](https://gamebanana.com/mods/480138) as specified above. + +- Rainbow corruption all over the landscape: you have a Polaris (AMD RX 500/400) GPU. Use Linux or buy a functional card. + +- Sky islands have a weird outline: this is an upscaling issue. There exist mods that work around this. [Ultracam](https://gamebanana.com/mods/480138) also includes resolution mods which will increase the native resolution of the game; those can be used instead of the Ryujinx upscaler. + +### The World Ends With You -Final Remix- +- Can’t defeat Pig Samba enemy that is asleep: `Actions` > `Simulate Wake-up Message` + +### Xenoblade Chronicles: Definitive Edition +- Game looks blurry even with upscaling: this game has an antialiasing implementation that does not scale properly. You can either run Vulkan and use the `lib_nx.ini` graphics settings mod to disable the antialiasing and use emulator resolution scaling, or run OpenGL and use the `lib_nx.ini` graphics settings to increase the internal resolution of the game. + +### Xenoblade Chronicles 2 +- Game looks blurry even with upscaling: this game has an antialiasing implementation that does not scale properly. You can either use the `lib_nx.ini` graphics settings mod to disable the antialiasing and use emulator resolution scaling, or use the `lib_nx.ini` graphics settings mod to increase the internal resolution of the game. + +- Mods not working: if you have the Torna DLC in digital format, you need to create a folder with the game ID that ends in 9001 add the mods in the folder. It should be right below the one that opens when clicking on `Open Mods Directory`. + +- Softlocking on save menu: save very frequently, use the Blade awakening menu instead of the save menu (opening core crystals saves the game). This issue also exists on console, but it’s made more frequent by emulation. + +### Xenoblade Chronicles 3 +Play this game on Vulkan, otherwise you will not watch the cutscenes. + +- Crashing when opening the menu or scrolling through character menus: bind a ZL shortcut for the save menu and save from there instead of opening the menu normally and quicksaving, and always save before trying to open the menu normally or before trying to do character customization. + + - There are 2 different crashes going on here. However, the crash when scrolling through character menus seems to be fixed as of version 1.3.0 of the game. + +- Game looks blurry even with upscaling: this game has an antialiasing implementation that does not scale properly. You can use graphics settings mods to enable emulator scaling or to increase the internal resolution of the game. For the latter, keep emulator scaling on native. + + + + + + + diff --git a/docs/src/index.md b/docs/src/index.md new file mode 100644 index 00000000..273886b4 --- /dev/null +++ b/docs/src/index.md @@ -0,0 +1 @@ +# Ryujinx \ No newline at end of file diff --git a/docs/src/setup/assets/100805553-173b6900-33ec-11eb-9702-71626f67f6e3.png b/docs/src/setup/assets/100805553-173b6900-33ec-11eb-9702-71626f67f6e3.png new file mode 100644 index 00000000..02f615cf Binary files /dev/null and b/docs/src/setup/assets/100805553-173b6900-33ec-11eb-9702-71626f67f6e3.png differ diff --git a/docs/src/setup/assets/100806049-03dccd80-33ed-11eb-88a4-d5a56ada8bb0.png b/docs/src/setup/assets/100806049-03dccd80-33ed-11eb-88a4-d5a56ada8bb0.png new file mode 100644 index 00000000..48768ea6 Binary files /dev/null and b/docs/src/setup/assets/100806049-03dccd80-33ed-11eb-88a4-d5a56ada8bb0.png differ diff --git a/docs/src/setup/assets/102350497-3f85a480-3f62-11eb-95b2-c9ef3d468315.png b/docs/src/setup/assets/102350497-3f85a480-3f62-11eb-95b2-c9ef3d468315.png new file mode 100644 index 00000000..de7815a2 Binary files /dev/null and b/docs/src/setup/assets/102350497-3f85a480-3f62-11eb-95b2-c9ef3d468315.png differ diff --git a/docs/src/setup/assets/102351140-3517da80-3f63-11eb-8d14-a2c1fc9bfd5d.png b/docs/src/setup/assets/102351140-3517da80-3f63-11eb-8d14-a2c1fc9bfd5d.png new file mode 100644 index 00000000..e8873389 Binary files /dev/null and b/docs/src/setup/assets/102351140-3517da80-3f63-11eb-8d14-a2c1fc9bfd5d.png differ diff --git a/docs/src/setup/assets/111011795-d82d9400-839a-11eb-8798-c426fe5bc973.png b/docs/src/setup/assets/111011795-d82d9400-839a-11eb-8798-c426fe5bc973.png new file mode 100644 index 00000000..3cc9b414 Binary files /dev/null and b/docs/src/setup/assets/111011795-d82d9400-839a-11eb-8798-c426fe5bc973.png differ diff --git a/docs/src/setup/assets/111011810-e8de0a00-839a-11eb-8a5c-d03b0e094ec4.png b/docs/src/setup/assets/111011810-e8de0a00-839a-11eb-8a5c-d03b0e094ec4.png new file mode 100644 index 00000000..be837430 Binary files /dev/null and b/docs/src/setup/assets/111011810-e8de0a00-839a-11eb-8a5c-d03b0e094ec4.png differ diff --git a/docs/src/setup/assets/111225959-14811000-85a6-11eb-9ffa-a8d2f5d899cd.png b/docs/src/setup/assets/111225959-14811000-85a6-11eb-9ffa-a8d2f5d899cd.png new file mode 100644 index 00000000..7c69816f Binary files /dev/null and b/docs/src/setup/assets/111225959-14811000-85a6-11eb-9ffa-a8d2f5d899cd.png differ diff --git a/docs/src/setup/assets/115936775-62b1ea80-a453-11eb-9df8-5d39cf414057.png b/docs/src/setup/assets/115936775-62b1ea80-a453-11eb-9df8-5d39cf414057.png new file mode 100644 index 00000000..906a7d00 Binary files /dev/null and b/docs/src/setup/assets/115936775-62b1ea80-a453-11eb-9df8-5d39cf414057.png differ diff --git a/docs/src/setup/assets/115936853-98ef6a00-a453-11eb-9bdb-2b2076ff529d.png b/docs/src/setup/assets/115936853-98ef6a00-a453-11eb-9bdb-2b2076ff529d.png new file mode 100644 index 00000000..b74f6b1c Binary files /dev/null and b/docs/src/setup/assets/115936853-98ef6a00-a453-11eb-9bdb-2b2076ff529d.png differ diff --git a/docs/src/setup/assets/115936950-e1a72300-a453-11eb-9d5d-027826457759.png b/docs/src/setup/assets/115936950-e1a72300-a453-11eb-9d5d-027826457759.png new file mode 100644 index 00000000..d8423942 Binary files /dev/null and b/docs/src/setup/assets/115936950-e1a72300-a453-11eb-9d5d-027826457759.png differ diff --git a/docs/src/setup/assets/115937027-10bd9480-a454-11eb-977a-2afdec837dab.png b/docs/src/setup/assets/115937027-10bd9480-a454-11eb-977a-2afdec837dab.png new file mode 100644 index 00000000..266d848b Binary files /dev/null and b/docs/src/setup/assets/115937027-10bd9480-a454-11eb-977a-2afdec837dab.png differ diff --git a/docs/src/setup/assets/115937083-2df26300-a454-11eb-95de-7db4a12aaa45.png b/docs/src/setup/assets/115937083-2df26300-a454-11eb-95de-7db4a12aaa45.png new file mode 100644 index 00000000..bf74c734 Binary files /dev/null and b/docs/src/setup/assets/115937083-2df26300-a454-11eb-95de-7db4a12aaa45.png differ diff --git a/docs/src/setup/assets/115937295-df919400-a454-11eb-90ac-f31263ec543e.png b/docs/src/setup/assets/115937295-df919400-a454-11eb-90ac-f31263ec543e.png new file mode 100644 index 00000000..834fbe74 Binary files /dev/null and b/docs/src/setup/assets/115937295-df919400-a454-11eb-90ac-f31263ec543e.png differ diff --git a/docs/src/setup/assets/115937710-b7566500-a455-11eb-905c-c748e8baeae8.png b/docs/src/setup/assets/115937710-b7566500-a455-11eb-905c-c748e8baeae8.png new file mode 100644 index 00000000..bc194214 Binary files /dev/null and b/docs/src/setup/assets/115937710-b7566500-a455-11eb-905c-c748e8baeae8.png differ diff --git a/docs/src/setup/assets/115938010-8a568200-a456-11eb-8a1b-a610fd8f5c7e.png b/docs/src/setup/assets/115938010-8a568200-a456-11eb-8a1b-a610fd8f5c7e.png new file mode 100644 index 00000000..f81eb0b4 Binary files /dev/null and b/docs/src/setup/assets/115938010-8a568200-a456-11eb-8a1b-a610fd8f5c7e.png differ diff --git a/docs/src/setup/assets/115938038-9e9a7f00-a456-11eb-8464-3855cde7241d.png b/docs/src/setup/assets/115938038-9e9a7f00-a456-11eb-8464-3855cde7241d.png new file mode 100644 index 00000000..90a7cfda Binary files /dev/null and b/docs/src/setup/assets/115938038-9e9a7f00-a456-11eb-8464-3855cde7241d.png differ diff --git a/docs/src/setup/assets/115938416-c9390780-a457-11eb-9761-eff2e0dd5efa.png b/docs/src/setup/assets/115938416-c9390780-a457-11eb-9761-eff2e0dd5efa.png new file mode 100644 index 00000000..bdc7a092 Binary files /dev/null and b/docs/src/setup/assets/115938416-c9390780-a457-11eb-9761-eff2e0dd5efa.png differ diff --git a/docs/src/setup/assets/155c02c5-dd0d-4888-a94b-23eabff84821.png b/docs/src/setup/assets/155c02c5-dd0d-4888-a94b-23eabff84821.png new file mode 100644 index 00000000..6c544818 Binary files /dev/null and b/docs/src/setup/assets/155c02c5-dd0d-4888-a94b-23eabff84821.png differ diff --git a/docs/src/setup/assets/156943543-ea49ec82-57b7-46eb-a12e-5daf64b1cad5.png b/docs/src/setup/assets/156943543-ea49ec82-57b7-46eb-a12e-5daf64b1cad5.png new file mode 100644 index 00000000..65ae5929 Binary files /dev/null and b/docs/src/setup/assets/156943543-ea49ec82-57b7-46eb-a12e-5daf64b1cad5.png differ diff --git a/docs/src/setup/assets/156943587-5242ccda-d74d-4d2f-8446-a1941beb4c2c.png b/docs/src/setup/assets/156943587-5242ccda-d74d-4d2f-8446-a1941beb4c2c.png new file mode 100644 index 00000000..04ce2e3b Binary files /dev/null and b/docs/src/setup/assets/156943587-5242ccda-d74d-4d2f-8446-a1941beb4c2c.png differ diff --git a/docs/src/setup/assets/405afd16-9e0a-4911-a82f-575dc8939e36.png b/docs/src/setup/assets/405afd16-9e0a-4911-a82f-575dc8939e36.png new file mode 100644 index 00000000..0074871b Binary files /dev/null and b/docs/src/setup/assets/405afd16-9e0a-4911-a82f-575dc8939e36.png differ diff --git a/docs/src/setup/assets/804c398c-3b2b-446f-aabd-8e7129bec19e.png b/docs/src/setup/assets/804c398c-3b2b-446f-aabd-8e7129bec19e.png new file mode 100644 index 00000000..2c5a3027 Binary files /dev/null and b/docs/src/setup/assets/804c398c-3b2b-446f-aabd-8e7129bec19e.png differ diff --git a/docs/src/setup/assets/8581e188-2ac7-479f-ab49-f72034d4071e.png b/docs/src/setup/assets/8581e188-2ac7-479f-ab49-f72034d4071e.png new file mode 100644 index 00000000..1691ff8d Binary files /dev/null and b/docs/src/setup/assets/8581e188-2ac7-479f-ab49-f72034d4071e.png differ diff --git a/docs/src/setup/assets/86277827-9d7d2600-bb94-11ea-9900-b5351364fd14.png b/docs/src/setup/assets/86277827-9d7d2600-bb94-11ea-9900-b5351364fd14.png new file mode 100644 index 00000000..9a7b51a4 Binary files /dev/null and b/docs/src/setup/assets/86277827-9d7d2600-bb94-11ea-9900-b5351364fd14.png differ diff --git a/docs/src/setup/assets/86278217-4035a480-bb95-11ea-9803-fabc39dbec5b.png b/docs/src/setup/assets/86278217-4035a480-bb95-11ea-9803-fabc39dbec5b.png new file mode 100644 index 00000000..732a93d6 Binary files /dev/null and b/docs/src/setup/assets/86278217-4035a480-bb95-11ea-9803-fabc39dbec5b.png differ diff --git a/docs/src/setup/assets/86278362-7c690500-bb95-11ea-9667-cb61e7d45b8e.png b/docs/src/setup/assets/86278362-7c690500-bb95-11ea-9667-cb61e7d45b8e.png new file mode 100644 index 00000000..06d5696a Binary files /dev/null and b/docs/src/setup/assets/86278362-7c690500-bb95-11ea-9667-cb61e7d45b8e.png differ diff --git a/docs/src/setup/assets/86278453-a6bac280-bb95-11ea-8bb0-005e89dbb295.png b/docs/src/setup/assets/86278453-a6bac280-bb95-11ea-8bb0-005e89dbb295.png new file mode 100644 index 00000000..6a0d8ce0 Binary files /dev/null and b/docs/src/setup/assets/86278453-a6bac280-bb95-11ea-8bb0-005e89dbb295.png differ diff --git a/docs/src/setup/assets/86278489-b76b3880-bb95-11ea-929c-da8b53052406.png b/docs/src/setup/assets/86278489-b76b3880-bb95-11ea-929c-da8b53052406.png new file mode 100644 index 00000000..7c56026b Binary files /dev/null and b/docs/src/setup/assets/86278489-b76b3880-bb95-11ea-929c-da8b53052406.png differ diff --git a/docs/src/setup/assets/86278572-d5d13400-bb95-11ea-98e6-91a58667a538.png b/docs/src/setup/assets/86278572-d5d13400-bb95-11ea-98e6-91a58667a538.png new file mode 100644 index 00000000..6f35cdb4 Binary files /dev/null and b/docs/src/setup/assets/86278572-d5d13400-bb95-11ea-98e6-91a58667a538.png differ diff --git a/docs/src/setup/assets/86278608-e7b2d700-bb95-11ea-8b2c-f12b1b7f0fcc.png b/docs/src/setup/assets/86278608-e7b2d700-bb95-11ea-8b2c-f12b1b7f0fcc.png new file mode 100644 index 00000000..2c7dfba2 Binary files /dev/null and b/docs/src/setup/assets/86278608-e7b2d700-bb95-11ea-8b2c-f12b1b7f0fcc.png differ diff --git a/docs/src/setup/assets/86278648-fef1c480-bb95-11ea-8a28-6099f5e0c8bf.png b/docs/src/setup/assets/86278648-fef1c480-bb95-11ea-8a28-6099f5e0c8bf.png new file mode 100644 index 00000000..9fafdba2 Binary files /dev/null and b/docs/src/setup/assets/86278648-fef1c480-bb95-11ea-8a28-6099f5e0c8bf.png differ diff --git a/docs/src/setup/assets/86278688-0d3fe080-bb96-11ea-8aae-f353f2dc952d.png b/docs/src/setup/assets/86278688-0d3fe080-bb96-11ea-8aae-f353f2dc952d.png new file mode 100644 index 00000000..b9875553 Binary files /dev/null and b/docs/src/setup/assets/86278688-0d3fe080-bb96-11ea-8aae-f353f2dc952d.png differ diff --git a/docs/src/setup/assets/86278723-16c94880-bb96-11ea-972f-bb1c8683ed6d.png b/docs/src/setup/assets/86278723-16c94880-bb96-11ea-972f-bb1c8683ed6d.png new file mode 100644 index 00000000..205bf73a Binary files /dev/null and b/docs/src/setup/assets/86278723-16c94880-bb96-11ea-972f-bb1c8683ed6d.png differ diff --git a/docs/src/setup/assets/86278755-22b50a80-bb96-11ea-9c1c-c4fc13a0e4cb.png b/docs/src/setup/assets/86278755-22b50a80-bb96-11ea-9c1c-c4fc13a0e4cb.png new file mode 100644 index 00000000..e65dce2c Binary files /dev/null and b/docs/src/setup/assets/86278755-22b50a80-bb96-11ea-9c1c-c4fc13a0e4cb.png differ diff --git a/docs/src/setup/assets/86278789-2e083600-bb96-11ea-9b55-816a81b53601.png b/docs/src/setup/assets/86278789-2e083600-bb96-11ea-9b55-816a81b53601.png new file mode 100644 index 00000000..16b1e3c7 Binary files /dev/null and b/docs/src/setup/assets/86278789-2e083600-bb96-11ea-9b55-816a81b53601.png differ diff --git a/docs/src/setup/assets/86278819-37919e00-bb96-11ea-93cb-0a266c0c1b24.png b/docs/src/setup/assets/86278819-37919e00-bb96-11ea-93cb-0a266c0c1b24.png new file mode 100644 index 00000000..b7936252 Binary files /dev/null and b/docs/src/setup/assets/86278819-37919e00-bb96-11ea-93cb-0a266c0c1b24.png differ diff --git a/docs/src/setup/assets/86278847-40826f80-bb96-11ea-99bf-05c22af2c680.png b/docs/src/setup/assets/86278847-40826f80-bb96-11ea-99bf-05c22af2c680.png new file mode 100644 index 00000000..4f7eb85f Binary files /dev/null and b/docs/src/setup/assets/86278847-40826f80-bb96-11ea-99bf-05c22af2c680.png differ diff --git a/docs/src/setup/assets/86278879-5001b880-bb96-11ea-9fb3-859efbd631f9.png b/docs/src/setup/assets/86278879-5001b880-bb96-11ea-9fb3-859efbd631f9.png new file mode 100644 index 00000000..2ec79c37 Binary files /dev/null and b/docs/src/setup/assets/86278879-5001b880-bb96-11ea-9fb3-859efbd631f9.png differ diff --git a/docs/src/setup/assets/86278975-7aec0c80-bb96-11ea-897f-9a4ed393f3b0.png b/docs/src/setup/assets/86278975-7aec0c80-bb96-11ea-897f-9a4ed393f3b0.png new file mode 100644 index 00000000..abd7b407 Binary files /dev/null and b/docs/src/setup/assets/86278975-7aec0c80-bb96-11ea-897f-9a4ed393f3b0.png differ diff --git a/docs/src/setup/assets/86278991-82abb100-bb96-11ea-9a00-adacae14b34c.png b/docs/src/setup/assets/86278991-82abb100-bb96-11ea-9a00-adacae14b34c.png new file mode 100644 index 00000000..bcce5094 Binary files /dev/null and b/docs/src/setup/assets/86278991-82abb100-bb96-11ea-9a00-adacae14b34c.png differ diff --git a/docs/src/setup/assets/86279008-8d664600-bb96-11ea-9ed3-32034ad9f53a.png b/docs/src/setup/assets/86279008-8d664600-bb96-11ea-9ed3-32034ad9f53a.png new file mode 100644 index 00000000..da5c8663 Binary files /dev/null and b/docs/src/setup/assets/86279008-8d664600-bb96-11ea-9ed3-32034ad9f53a.png differ diff --git a/docs/src/setup/assets/86279068-a969e780-bb96-11ea-913c-6da064e6d7a6.png b/docs/src/setup/assets/86279068-a969e780-bb96-11ea-913c-6da064e6d7a6.png new file mode 100644 index 00000000..661eb15c Binary files /dev/null and b/docs/src/setup/assets/86279068-a969e780-bb96-11ea-913c-6da064e6d7a6.png differ diff --git a/docs/src/setup/assets/86279165-d1f1e180-bb96-11ea-9d77-b9c029ce5b3a.png b/docs/src/setup/assets/86279165-d1f1e180-bb96-11ea-9d77-b9c029ce5b3a.png new file mode 100644 index 00000000..72b72392 Binary files /dev/null and b/docs/src/setup/assets/86279165-d1f1e180-bb96-11ea-9d77-b9c029ce5b3a.png differ diff --git a/docs/src/setup/assets/86279303-082f6100-bb97-11ea-92bc-68f24612d7e2.png b/docs/src/setup/assets/86279303-082f6100-bb97-11ea-92bc-68f24612d7e2.png new file mode 100644 index 00000000..e5d54293 Binary files /dev/null and b/docs/src/setup/assets/86279303-082f6100-bb97-11ea-92bc-68f24612d7e2.png differ diff --git a/docs/src/setup/assets/86279433-3b71f000-bb97-11ea-8bd2-0435ba8ece33.png b/docs/src/setup/assets/86279433-3b71f000-bb97-11ea-8bd2-0435ba8ece33.png new file mode 100644 index 00000000..ec6e1d1e Binary files /dev/null and b/docs/src/setup/assets/86279433-3b71f000-bb97-11ea-8bd2-0435ba8ece33.png differ diff --git a/docs/src/setup/assets/86279490-547aa100-bb97-11ea-97ad-549534e9d635.png b/docs/src/setup/assets/86279490-547aa100-bb97-11ea-97ad-549534e9d635.png new file mode 100644 index 00000000..abd7b407 Binary files /dev/null and b/docs/src/setup/assets/86279490-547aa100-bb97-11ea-97ad-549534e9d635.png differ diff --git a/docs/src/setup/assets/86279552-6ceabb80-bb97-11ea-8b88-1e19983ed890.png b/docs/src/setup/assets/86279552-6ceabb80-bb97-11ea-8b88-1e19983ed890.png new file mode 100644 index 00000000..81a66424 Binary files /dev/null and b/docs/src/setup/assets/86279552-6ceabb80-bb97-11ea-8b88-1e19983ed890.png differ diff --git a/docs/src/setup/assets/86286616-08822900-bba4-11ea-838e-eaf95c98d6dc.png b/docs/src/setup/assets/86286616-08822900-bba4-11ea-838e-eaf95c98d6dc.png new file mode 100644 index 00000000..20827b80 Binary files /dev/null and b/docs/src/setup/assets/86286616-08822900-bba4-11ea-838e-eaf95c98d6dc.png differ diff --git a/docs/src/setup/assets/86624278-486c5600-bf80-11ea-9de5-47340af14a0c.png b/docs/src/setup/assets/86624278-486c5600-bf80-11ea-9de5-47340af14a0c.png new file mode 100644 index 00000000..f9cc2493 Binary files /dev/null and b/docs/src/setup/assets/86624278-486c5600-bf80-11ea-9de5-47340af14a0c.png differ diff --git a/docs/src/setup/assets/86625047-ac434e80-bf81-11ea-9dd7-7f3465f8c0d2.png b/docs/src/setup/assets/86625047-ac434e80-bf81-11ea-9dd7-7f3465f8c0d2.png new file mode 100644 index 00000000..a034bc72 Binary files /dev/null and b/docs/src/setup/assets/86625047-ac434e80-bf81-11ea-9dd7-7f3465f8c0d2.png differ diff --git a/docs/src/setup/assets/86672580-078e3480-bfb4-11ea-8c01-86b05066a4dc.png b/docs/src/setup/assets/86672580-078e3480-bfb4-11ea-8c01-86b05066a4dc.png new file mode 100644 index 00000000..7cd7e8fc Binary files /dev/null and b/docs/src/setup/assets/86672580-078e3480-bfb4-11ea-8c01-86b05066a4dc.png differ diff --git a/docs/src/setup/assets/86673437-e7ab4080-bfb4-11ea-86de-876d7563f6a2.png b/docs/src/setup/assets/86673437-e7ab4080-bfb4-11ea-86de-876d7563f6a2.png new file mode 100644 index 00000000..c0bdf5cf Binary files /dev/null and b/docs/src/setup/assets/86673437-e7ab4080-bfb4-11ea-86de-876d7563f6a2.png differ diff --git a/docs/src/setup/assets/87058158-f9fbc900-c1c4-11ea-8dcd-7bea51fc71e6.png b/docs/src/setup/assets/87058158-f9fbc900-c1c4-11ea-8dcd-7bea51fc71e6.png new file mode 100644 index 00000000..d7fbbfe4 Binary files /dev/null and b/docs/src/setup/assets/87058158-f9fbc900-c1c4-11ea-8dcd-7bea51fc71e6.png differ diff --git a/docs/src/setup/assets/87060018-3d573700-c1c7-11ea-82f8-3a54c788490c.png b/docs/src/setup/assets/87060018-3d573700-c1c7-11ea-82f8-3a54c788490c.png new file mode 100644 index 00000000..e0750fe8 Binary files /dev/null and b/docs/src/setup/assets/87060018-3d573700-c1c7-11ea-82f8-3a54c788490c.png differ diff --git a/docs/src/setup/assets/87071634-b3fc3080-c1d7-11ea-8a28-a1aa86009f5c.png b/docs/src/setup/assets/87071634-b3fc3080-c1d7-11ea-8a28-a1aa86009f5c.png new file mode 100644 index 00000000..953f9c82 Binary files /dev/null and b/docs/src/setup/assets/87071634-b3fc3080-c1d7-11ea-8a28-a1aa86009f5c.png differ diff --git a/docs/src/setup/assets/91670371-0ec84f00-eada-11ea-9e0a-034ff6eee440.png b/docs/src/setup/assets/91670371-0ec84f00-eada-11ea-9e0a-034ff6eee440.png new file mode 100644 index 00000000..339b8131 Binary files /dev/null and b/docs/src/setup/assets/91670371-0ec84f00-eada-11ea-9e0a-034ff6eee440.png differ diff --git a/docs/src/setup/assets/91670437-bf365300-eada-11ea-8bde-ce0b1cb7aa73.png b/docs/src/setup/assets/91670437-bf365300-eada-11ea-8bde-ce0b1cb7aa73.png new file mode 100644 index 00000000..6335307d Binary files /dev/null and b/docs/src/setup/assets/91670437-bf365300-eada-11ea-8bde-ce0b1cb7aa73.png differ diff --git a/docs/src/setup/assets/91670516-8fd41600-eadb-11ea-8eb3-acfb97d64c65.png b/docs/src/setup/assets/91670516-8fd41600-eadb-11ea-8eb3-acfb97d64c65.png new file mode 100644 index 00000000..49b82a00 Binary files /dev/null and b/docs/src/setup/assets/91670516-8fd41600-eadb-11ea-8eb3-acfb97d64c65.png differ diff --git a/docs/src/setup/assets/91670585-315b6780-eadc-11ea-8534-244a46eb1536.png b/docs/src/setup/assets/91670585-315b6780-eadc-11ea-8534-244a46eb1536.png new file mode 100644 index 00000000..7664b276 Binary files /dev/null and b/docs/src/setup/assets/91670585-315b6780-eadc-11ea-8534-244a46eb1536.png differ diff --git a/docs/src/setup/assets/92328779-5c841080-f020-11ea-80a1-af54341c4deb.png b/docs/src/setup/assets/92328779-5c841080-f020-11ea-80a1-af54341c4deb.png new file mode 100644 index 00000000..da5c8663 Binary files /dev/null and b/docs/src/setup/assets/92328779-5c841080-f020-11ea-80a1-af54341c4deb.png differ diff --git a/docs/src/setup/assets/92328812-9ead5200-f020-11ea-88f4-706c8f2bd5b6.png b/docs/src/setup/assets/92328812-9ead5200-f020-11ea-88f4-706c8f2bd5b6.png new file mode 100644 index 00000000..27285577 Binary files /dev/null and b/docs/src/setup/assets/92328812-9ead5200-f020-11ea-88f4-706c8f2bd5b6.png differ diff --git a/docs/src/setup/assets/92328941-740fc900-f021-11ea-9663-ee1eeee47cee.png b/docs/src/setup/assets/92328941-740fc900-f021-11ea-9663-ee1eeee47cee.png new file mode 100644 index 00000000..3cd06ec3 Binary files /dev/null and b/docs/src/setup/assets/92328941-740fc900-f021-11ea-9663-ee1eeee47cee.png differ diff --git a/docs/src/setup/assets/92329071-542cd500-f022-11ea-9aff-9b1e22f29b61.png b/docs/src/setup/assets/92329071-542cd500-f022-11ea-9aff-9b1e22f29b61.png new file mode 100644 index 00000000..ca914a05 Binary files /dev/null and b/docs/src/setup/assets/92329071-542cd500-f022-11ea-9aff-9b1e22f29b61.png differ diff --git a/docs/src/setup/assets/92338812-00e17380-f070-11ea-9090-e94abe4d1134.png b/docs/src/setup/assets/92338812-00e17380-f070-11ea-9090-e94abe4d1134.png new file mode 100644 index 00000000..8f03030a Binary files /dev/null and b/docs/src/setup/assets/92338812-00e17380-f070-11ea-9090-e94abe4d1134.png differ diff --git a/docs/src/setup/assets/955c55d0-4084-4239-ad23-d8b1fc5414f8.png b/docs/src/setup/assets/955c55d0-4084-4239-ad23-d8b1fc5414f8.png new file mode 100644 index 00000000..77bed4cc Binary files /dev/null and b/docs/src/setup/assets/955c55d0-4084-4239-ad23-d8b1fc5414f8.png differ diff --git a/docs/src/setup/assets/98551756-e76ccb80-225a-11eb-83b8-ce99b712e7d6.png b/docs/src/setup/assets/98551756-e76ccb80-225a-11eb-83b8-ce99b712e7d6.png new file mode 100644 index 00000000..7a14029c Binary files /dev/null and b/docs/src/setup/assets/98551756-e76ccb80-225a-11eb-83b8-ce99b712e7d6.png differ diff --git a/docs/src/setup/assets/98551866-0ec39880-225b-11eb-8380-967c97bfd97f.png b/docs/src/setup/assets/98551866-0ec39880-225b-11eb-8380-967c97bfd97f.png new file mode 100644 index 00000000..1e5e7a10 Binary files /dev/null and b/docs/src/setup/assets/98551866-0ec39880-225b-11eb-8380-967c97bfd97f.png differ diff --git a/docs/src/setup/assets/fc03f9eb-1210-41be-ab7b-b9ee4f1fce98.png b/docs/src/setup/assets/fc03f9eb-1210-41be-ab7b-b9ee4f1fce98.png new file mode 100644 index 00000000..0391fc28 Binary files /dev/null and b/docs/src/setup/assets/fc03f9eb-1210-41be-ab7b-b9ee4f1fce98.png differ diff --git a/docs/src/setup/firmware-dumping/assets/205474096-25049c51-9659-4122-a4f1-c2fc2eb00a4d.png b/docs/src/setup/firmware-dumping/assets/205474096-25049c51-9659-4122-a4f1-c2fc2eb00a4d.png new file mode 100644 index 00000000..0978e09f Binary files /dev/null and b/docs/src/setup/firmware-dumping/assets/205474096-25049c51-9659-4122-a4f1-c2fc2eb00a4d.png differ diff --git a/docs/src/setup/firmware-dumping/assets/205474104-0aba8839-aee8-4ad9-bdbe-ac07e390d73a.png b/docs/src/setup/firmware-dumping/assets/205474104-0aba8839-aee8-4ad9-bdbe-ac07e390d73a.png new file mode 100644 index 00000000..d326ccb3 Binary files /dev/null and b/docs/src/setup/firmware-dumping/assets/205474104-0aba8839-aee8-4ad9-bdbe-ac07e390d73a.png differ diff --git a/docs/src/setup/firmware-dumping/assets/205474107-a103b5e8-6b31-42f2-ba34-a798172931cb.png b/docs/src/setup/firmware-dumping/assets/205474107-a103b5e8-6b31-42f2-ba34-a798172931cb.png new file mode 100644 index 00000000..0df4899d Binary files /dev/null and b/docs/src/setup/firmware-dumping/assets/205474107-a103b5e8-6b31-42f2-ba34-a798172931cb.png differ diff --git a/docs/src/setup/firmware-dumping/assets/205474109-8c5fb59c-99c8-42a3-afbb-4da61865335b.png b/docs/src/setup/firmware-dumping/assets/205474109-8c5fb59c-99c8-42a3-afbb-4da61865335b.png new file mode 100644 index 00000000..88127158 Binary files /dev/null and b/docs/src/setup/firmware-dumping/assets/205474109-8c5fb59c-99c8-42a3-afbb-4da61865335b.png differ diff --git a/docs/src/setup/firmware-dumping/assets/205474110-14016849-477b-486b-989f-6b713ec9cc74.png b/docs/src/setup/firmware-dumping/assets/205474110-14016849-477b-486b-989f-6b713ec9cc74.png new file mode 100644 index 00000000..5837d0bf Binary files /dev/null and b/docs/src/setup/firmware-dumping/assets/205474110-14016849-477b-486b-989f-6b713ec9cc74.png differ diff --git a/docs/src/setup/firmware-dumping/assets/205474112-5e6bcb81-a46e-40ff-85df-4edea0f0a66a.png b/docs/src/setup/firmware-dumping/assets/205474112-5e6bcb81-a46e-40ff-85df-4edea0f0a66a.png new file mode 100644 index 00000000..9f1da3c8 Binary files /dev/null and b/docs/src/setup/firmware-dumping/assets/205474112-5e6bcb81-a46e-40ff-85df-4edea0f0a66a.png differ diff --git a/docs/src/setup/firmware-dumping/index.md b/docs/src/setup/firmware-dumping/index.md new file mode 100644 index 00000000..e15f64a0 --- /dev/null +++ b/docs/src/setup/firmware-dumping/index.md @@ -0,0 +1,38 @@ +Thanks to Candy for providing the guide details & images. Loosely based off of [NH Switch Guide](https://nh-server.github.io/switch-guide/extras/updating/#updating-emummc-by-dumping-an-updated-firmware-from-your-sysmmc). + +What you will need: +- The latest release of [TegraExplorer](https://github.com/suchmememanyskill/TegraExplorer/releases) (the `.bin` file) +--- + +1. Make sure your sysMMC is up to date. If your sysMMC is not up to date, update it through System Settings. + +2. Boot your Switch into RCM. + +3. Using a Payload Injector, such as TegraRcmGUI or fusee-interfacee-tk, inject the TegraExplorer.bin Payload (like you would with Hekate). + +![Screenshot 2022-12-03 at 10 45 13 PM](assets/205474096-25049c51-9659-4122-a4f1-c2fc2eb00a4d.png) + +4. Using the joystick and the A buttons, select `FirmwareDump.te`. + +![Screenshot_0a75c7c9](assets/205474107-a103b5e8-6b31-42f2-ba34-a798172931cb.png) + +5. Select `Dump sysmmc`. + +![Screenshot_0ad4061c](assets/205474109-8c5fb59c-99c8-42a3-afbb-4da61865335b.png) + +6. Wait about 1-2 minutes for the tool to dump your firmware. + +![Screenshot_0d9ca2b9](assets/205474110-14016849-477b-486b-989f-6b713ec9cc74.png) + +7. When the tool finishes, press any button. + +8. Select `Power off`. + +![Screenshot_2dec46de](assets/205474112-5e6bcb81-a46e-40ff-85df-4edea0f0a66a.png) + +9. Remove the SD card from your Switch, and insert it into your PC. + +10. A folder containing your firmware should now exist at `/tegraexplorer/Firmware/` + +![Screenshot 2022-12-03 at 11 09 38 PM](assets/205474104-0aba8839-aee8-4ad9-bdbe-ac07e390d73a.png) + diff --git a/docs/src/setup/index.md b/docs/src/setup/index.md new file mode 100644 index 00000000..0d476a2e --- /dev/null +++ b/docs/src/setup/index.md @@ -0,0 +1,667 @@ +This article assumes you have already **[hacked your Nintendo Switch](https://nh-server.github.io/switch-guide/)** and **[dumped your Nintendo Switch keys](../keys)** (prod.keys) and firmware file(s). + +This guide also illustrates how to use an untrimmed game cartridge dump (XCI file) to install firmware directly to Ryujinx. If you would prefer to dump the firmware standalone, you may follow this **[firmware dumping guide](firmware-dumping)**. + +If you haven't already downloaded Ryujinx, get the latest version from the releases page. + + +## Preface +Ryujinx comes pre-optimized by default. If a particular menu option is not mentioned in this guide, it should be ignored and not changed unless directly instructed by Ryujinx staff. + +***When requesting support on the Ryujinx official Discord server, you will usually be asked for your log file. With this in mind, Logging should be left at default settings (enabled) for everything except debug logs. Do not enable debug logs unless specifically instructed by Ryujinx staff.*** + +## System Requirements +In order to use *Ryujinx* your computer will need: + +- At least 8GB RAM +- A GPU supporting OpenGL 4.5/Vulkan 1.2 or higher +- Your **prod.keys** and either your **[dumped firmware](firmware-dumping)** or game cartridge untrimmed XCI +- Your dumped Nintendo Switch games or homebrew +- OS: Windows 10.0.17134 or higher / macOS 12 / Any modern linux distribution (see dependencies) + +Recommended **Baseline** (Native Resolution and Framerate): + +- CPU: Ryzen 5 3600 +- RAM: 16GB DDR4 +- GPU: NVIDIA GTX 1060 6GB + +## Dependencies +### Windows +- **Windows 10 RS4 (Redstone 4, version 1803) or newer** is required. +- Graphics drivers must be up to date. + +### Linux +Run these commands in your terminal: + +- Archlinux-based distros: + ```bash + sudo pacman -S sdl2 openal + ``` +- Ubuntu-based distros: + ```bash + sudo apt-get install libsdl2-2.0 libsdl2-dev libalut-dev + ``` +- Fedora: + ```bash + sudo dnf install SDL2-devel openal-soft + ``` + +### macOS +- macOS 12 Monterey or later is recommended. + +## Initial Setup + +### Placement of prod.keys + +By default Ryujinx will use `%appdata%/Ryujinx` (or the equivalent application data folder on Linux/macOS) to store all of it's permanent files. This includes firmware, save files, shader caches and other configuration. If you wish Ryujinx to be fully self-contained you may use [portable mode!](#portable-mode) + + +1. Now that you've downloaded the *Ryujinx* archive, open it and + extract the contents of the publish folder onto your drive in + the location of your choice. We recommend against using your desktop + or the root of any drive as these can sometimes be protected. + +2. Navigate to where you extracted the *Ryujinx* files, and + double-click on `Ryujinx.exe`. This will launch the emulator and you + will be met with the following message (don't worry; this is + normal!) + ![image](assets/8581e188-2ac7-479f-ab49-f72034d4071e.png) + +3. Click *OK* on the warning box. + Now that *Ryujinx* has been launched, the proper folders have been + created for you in your `%appdata%` folder. + +4. Click *File* at the top left of the *Ryujinx* window, and then click + *Open Ryujinx* *Folder*. + ![image](assets/955c55d0-4084-4239-ad23-d8b1fc5414f8.png) + +5. Navigate down into the system subfolder and paste your prod.keys file + here. The file/folder structure should look like this (JohnDoe + substituted for your username): + ![image](assets/86277827-9d7d2600-bb94-11ea-9900-b5351364fd14.png) + +6. Close and reopen *Ryujinx* so that the prod.keys file is validated. You're done installing keys! + +### Installation of Firmware + +Now that your keys are installed, it's time to install a firmware. Make +sure you have an untrimmed XCI file of a recent game cartridge you +dumped, or have compiled your [dumped firmware](firmware-dumping) into a ZIP file. + +1. Open *Ryujinx*. There should be no warning about KEYS.md anymore; if + you still get the warning, go back through the prod.keys steps and + ensure you have placed the file correctly. + +2. Now that *Ryujinx* is open, click *Tools > Firmware > Install from XCI/ZIP*. + ![image](assets/405afd16-9e0a-4911-a82f-575dc8939e36.png) + This brings up the "Choose the firmware file to open" window. + ![image](assets/fc03f9eb-1210-41be-ab7b-b9ee4f1fce98.png) + + +3. Using the *Ryujinx* window, navigate to the location of your dumped + XCI file and click *Open*. You will be asked to confirm whether you + want to install the firmware. Make sure your prod.keys are at least + as new as the firmware you are installing! + *(Your firmware version number may vary)* + ![image](assets/804c398c-3b2b-446f-aabd-8e7129bec19e.png) + + +4. Click *Yes*. You will see a message that the firmware is + installing and was successfully installed. + ![image](assets/155c02c5-dd0d-4888-a94b-23eabff84821.png) + + +5. Click *OK*. If all went well, you will now see your firmware version + listed as the "System Version" in the bottom right hand corner of + the main *Ryujinx* window. + ![image](assets/86278217-4035a480-bb95-11ea-9803-fabc39dbec5b.png) + +## Adding Your Games to Ryujinx + +You have keys and firmware ready to go. Time to add your games! + +With *Ryujinx* open, click on *Options > Settings*. This takes you +straight to the *General* tab. +![image](assets/86278362-7c690500-bb95-11ea-9667-cb61e7d45b8e.png) + +There are two different methods in which you can add a Game Directory in this window. + +### 1st Method +Type the absolute path of the folder containing your games into the path +field and click *Add*. +![image](assets/86278453-a6bac280-bb95-11ea-8bb0-005e89dbb295.png) + +### 2nd Method +Without typing anything into the path field, click *Add*. +![image](assets/86278489-b76b3880-bb95-11ea-929c-da8b53052406.png) + +This brings up the navigation window. Navigate to the folder containing your games (e.g. `D:\Switch Games`) and click *Add*. +![image](assets/86278572-d5d13400-bb95-11ea-98e6-91a58667a538.png) + +1. Whichever method you chose, **click *Save*** to save the game directory setting. + +2. Your games will now show up in the main *Ryujinx* window. + ![image](assets/86278608-e7b2d700-bb95-11ea-8b2c-f12b1b7f0fcc.png) + +## Managing Game Updates + +Manage game update versions from within Ryujinx + +Now that your games are added, you may wish to update your game for +various reasons e.g. bugfixes, new content, etc. *Ryujinx* has built-in +functionality to manage which version of the game you want to play. + +1. In the main *Ryujinx* game list right-click the game you want to + apply an update to. Then click *Manage Title Updates*. + + ![image](assets/86278648-fef1c480-bb95-11ea-8a28-6099f5e0c8bf.png) + + After clicking *Manage Title Updates*, you will see the *Ryujinx -- + Title Update Manager* menu. + +2. In the *Ryujinx -- Title Update Manager* menu, click *Add*. + ![image](assets/86278688-0d3fe080-bb96-11ea-8aae-f353f2dc952d.png) + +3. Clicking *Add* will bring up the navigation menu. Navigate to the location + of your game's update files and select update you want to add to *Ryujinx*, + and click *Add*. + ![image](assets/86278723-16c94880-bb96-11ea-972f-bb1c8683ed6d.png) + + This will bring you back to the *Ryujinx -- Title Update Manager* + window. You may repeat this for any other game version update files + you wish to add to *Ryujinx*. + +1. In the *Ryujinx -- Title Update Manager* window, select the version + of the update you wish to be applied to the game and click *Save*. + ![image](assets/86278755-22b50a80-bb96-11ea-9c1c-c4fc13a0e4cb.png) + +2. Verify that the proper version number is shown in the main *Ryujinx* + games list window. + ![image](assets/86278789-2e083600-bb96-11ea-9b55-816a81b53601.png) + + Your game update has now been applied, and you may repeat the + process for any other games you wish to apply updates to. + +## Managing DLC + +Manage Downloadable Content for your games + +Some games have downloadable content available that you may wish to add +to your game. *Ryujinx* has built-in functionality to add & manage your +DLC. + +1. With *Ryujinx* open, right-click on the game you want to add or + manage DLC for and click *Manage DLC* to bring up the *Ryujinx - DLC + Manager* window. + ![image](assets/86278819-37919e00-bb96-11ea-93cb-0a266c0c1b24.png) + +2. Within the *Ryujinx -- DLC Manager* window, click *Add* to open the + DLC navigation screen. + ![image](assets/86278847-40826f80-bb96-11ea-99bf-05c22af2c680.png) + +3. Navigate to the location of the DLC file(s) you wish to apply, then + double-click the file to automatically add it. Or you may select the + file or files, and click *Add*. + **Note: you may add more than one DLC file at a time!** + ![image](assets/86278879-5001b880-bb96-11ea-9fb3-859efbd631f9.png) + +4. You will now see your DLC in the *Ryujinx - DLC Manager* window. + **Click *Save*** to save your configuration. + ![image](assets/86286616-08822900-bba4-11ea-838e-eaf95c98d6dc.png) + + **Note: always drill down to see the proper status of the DLC .nca file you are managing. Checking and unchecking the .nca file is the way to enable and disable the DLC. The parent container (.nsp file) shows unchecked by default, even if the DLC is enabled.** + +Repeat this process, if you wish, for any other games you would like to manage DLC for. + +## Managing Mods +Quick Start Guide for managing mods + +Various game mods are available from enthusiasts & content creators online. *Ryujinx* supports the following types of mods: + +1. ExeFS Partition Replacement +2. ExeFS File Replacement +3. ExeFS Patching +4. RomFS Partition Replacement +5. RomFS File Replacement + +**For an in-depth explanation of the mods implementation & advanced usage options in *Ryujinx*, check the description in the original PR [here](https://github.com/ryujinx-mirror/ryujinx/pull/1249)**. + +To enable mods: + +1. With *Ryujinx* open, right-click on the game you wish to manage mods for and click *Open Mods Directory*. + ![image](assets/87058158-f9fbc900-c1c4-11ea-8dcd-7bea51fc71e6.png) + +This will open the `AppData\Roaming\Ryujinx\mods\contents\\` folder. + +2. Create a subfolder under the game id folder with an appropriate name conveying the mod you will be using. For instance, you might name the folder "Lana" if you were using a mod to add a Lana skin to Mario Kart 8 Deluxe. + ![image](assets/87060018-3d573700-c1c7-11ea-82f8-3a54c788490c.png) + +3. Copy your mod's romfs folder or exefs folder into the new folder you created. + ![image](assets/87071634-b3fc3080-c1d7-11ea-8a28-a1aa86009f5c.png) + +Mods can also be placed in the `AppData\Roaming\Ryujinx\sdcard` folder if the mod has been packaged for real hardware (usually indicated with an "atmosphere" folder as the top directory). With *Ryujinx* open, right-clicking on the game you wish to manage SD mods for and clicking *Open Atmosphere Mods Directory* will open the `AppData\Roaming\Ryujinx\sdcard\atmosphere\contents\` folder where the romfs/exefs folders are located. + +![image](assets/156943587-5242ccda-d74d-4d2f-8446-a1941beb4c2c.png) +![image](assets/156943543-ea49ec82-57b7-46eb-a12e-5daf64b1cad5.png) + +## Managing Cheats + +Ryujinx now has native cheats/runtime mods support! +It implements full support Atmosphere style cheats (except game pausing/resume): +[Atmosphere Cheats](https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/features/cheats.md) + +## Installation of Atmosphere Cheats + +A good place to acquire Atmosphere cheats is: + +- [WerWolv's EdiZon Cheats](https://github.com/WerWolv/EdiZon_CheatsConfigsAndScripts/tree/master/Cheats) (general switch cheats) + +Inside the cheat `zip`, `rar`, or other archive format, there is usually a file structure like this: + +``` +Cheat_Name\cheats\0123456789ABCDEF.txt +``` + +Where `0123456789ABCDEF` will vary according to the game and the cheat (this is the build id of the executable the cheat attaches itself to). A cheat can also contain several `txt` files. + +**Cheats are game-specific and version-specific, they will not work if transferred from one game to another or to an incompatible update of the game.** + +To install the cheat: + +- Open Ryujinx, right-click the game you wish to install the cheat and select to open its `Mod directory`; +- A directory like this will open: `Ryujinx\mods\contents\XXXXXXXXXXXXXXXX\`, `XXXXXXXXXXXXXXXX` will be the id of the chosen game; +- Extract the cheat archive to the mod directory, keeping the cheat name: `Ryujinx\mods\contents\XXXXXXXXXXXXXXXX\Cheat_Name\cheats\`. + +## Activating/Deactivating cheats + +Currently, all cheats are automatically enabled and cannot be disabled, so mixing, for instance, 60, 90 and 120 fps cheats may cause a conflict. + +One alternative is to create a directory `disabled_cheats` in the mod directory and move all unused cheats there. Another one is to prepend something to the file name, for instance `off_0123456789ABCDEF.txt` as a valid cheat must not have anything but `0123456789ABCDEF.txt` in its name. + +The .txt files can also contain several cheats that may conflict. To switch off individual cheats inside a .txt file first **backup the .txt file** to something like `bak_0123456789ABCDEF.txt` (this will also prevent the backup to be loaded as a cheat). Next, in the .txt file, there will be sections, each with a name within `[ ]` brackets and filled with sequences of letters and numbers (the code of the cheat), for instance: + +``` +[New Super Mario Bros. U Deluxe] + +[Start with 99 Lives] +58000000 00CC9860 +78000000 0002A1C0 +61000000 00000000 00000063 + +[Time = 999] +58000000 00C88A70 +78001000 00000090 +64000000 00000000 003E6F00 + +[Start as Penguin] +58000000 00CC9860 +78000000 0002A1C4 +61000000 00000000 00000005 +``` + +To disable the time cheat, just remove its section and the code: + +``` +[New Super Mario Bros. U Deluxe] + +[Start with 99 Lives] +58000000 00CC9860 +78000000 0002A1C0 +61000000 00000000 00000063 + +[Start as Penguin] +58000000 00CC9860 +78000000 0002A1C4 +61000000 00000000 00000005 +``` + +## Managing User Profiles + +Ryujinx offers the ability to use multiple, customizable user profiles. **WARNING:** Save data is specific to each user profile so if you delete a profile, the save data under that profile is also deleted. + +### Edit a user profile +1. With Ryujinx open, but no game running, click on *Options > Manage User Profiles* +![image](assets/115936775-62b1ea80-a453-11eb-9df8-5d39cf414057.png) + +Now in the Manage User Profiles window, you will see the default RyuPlayer profile. This is the default profile that comes with Ryujinx and **cannot be deleted** as it contains all of the original save data for your games. You may, however, rename it and change the picture to something else, if you like. +![image](assets/115936853-98ef6a00-a453-11eb-9bdb-2b2076ff529d.png) + +2. To rename a profile, simply select it and type in the new text. +![image](assets/115936950-e1a72300-a453-11eb-9d5d-027826457759.png) + +3. To change the profile image, select the profile in the list and click **Change Profile Image**. +![image](assets/115937027-10bd9480-a454-11eb-977a-2afdec837dab.png) + +You will then be prompted to select from either a custom image, or from one of the many avatars provided in the firmware. +![image](assets/115937083-2df26300-a454-11eb-95de-7db4a12aaa45.png) + +If you choose to import an image: supported formats are `png`, `bmp`, and `jpg`. You can use the image you want, but it will be resized to 256x256 pixels, so using a square image is recommended. + +If you choose to use a built-in firmware avatar, click on **Select Firmware Avatar** + +In the Manage Accounts - Avatar window, select the avatar you want, and choose a background color. When finished, click **Choose** to make it the profile's image. +![image](assets/115937295-df919400-a454-11eb-90ac-f31263ec543e.png) + +![image](assets/115937710-b7566500-a455-11eb-905c-c748e8baeae8.png) + +### Add a new profile + +1. With Ryujinx open, but no game running, click on *Options > Manage User Profiles* + ![image](assets/115936775-62b1ea80-a453-11eb-9df8-5d39cf414057.png) + +2. Click on the **Add New Profile** button at the bottom left corner of the window. + ![image](assets/115938010-8a568200-a456-11eb-8a1b-a610fd8f5c7e.png) + +3. A window will pop up asking you to name the new Profile. Enter the desired name of the new profile, and click OK. + ![image](assets/115938038-9e9a7f00-a456-11eb-8464-3855cde7241d.png) + +4. You will now be prompted to choose the profile image. Follow step 3 from the user profile editing instructions above. + ![image](assets/115938416-c9390780-a457-11eb-9761-eff2e0dd5efa.png) + +That's it! + +## Input Configuration + +Setting up your controls: this part requires close attention, so read +carefully! + +1. Plug in the controller(s) that you will be using. + +2. Open *Ryujinx* and navigate to *Options \> Settings* + ![image](assets/86278975-7aec0c80-bb96-11ea-897f-9a4ed393f3b0.png) + +3. You will now see the *Ryujinx - Settings* window. Click on the + *Input* tab. + ![image](assets/86278991-82abb100-bb96-11ea-9a00-adacae14b34c.png) + + Before proceeding to configure anything, the options on the Input page + need some explanation: + + *Direct Keyboard Access*: + Checking this box emulates a real, physical + keyboard being directly connected to a Nintendo Switch via USB. ***Do + not check this box unless you have a specific reason*** + + *Enable Docked Mode*: + Checking this box emulates the Nintendo Switch + being docked. Docked Mode enables higher resolution, higher FPS, and + better graphical fidelity on games that support these features. + **If you check this box, you will need to click configure under Player 1 (top left menu item).** + **If you leave this box unchecked, you will need to click configure under Handheld (bottom right menu item)** + + +1. Click *Configure* under *Player 1* if you have enabled *Docked + Mode*, or click configure *Handheld* if you have not enabled *Docked + Mode*. + ![image](assets/86279008-8d664600-bb96-11ea-9ed3-32034ad9f53a.png) + +2. You should now be in the *Ryujinx -- Controller Settings* screen. + Click on the *Input Device* dropdown and choose the *Xinput + controller*. If you have connected multiple controllers, choose the + one you want to be configured to be P1 in game. + **If you do not see any Xinput controllers in the list, you will need to use an Xinput wrapper/translator such as [x360ce](https://www.x360ce.com/).** + ![image](assets/86279068-a969e780-bb96-11ea-913c-6da064e6d7a6.png) + + +1. After selecting your Xinput controller you should now see a full + mapping UI. If you want to map the buttons in a standard + Xinput-compatible fashion, there is no need to individually map the + buttons. Simply click on the empty *Profile* dropdown, select + *Default*, and click *Load*. This populates the buttons with preset + mappings for your Xinput-compatible (or Xinput wrapped/translated) + controller. Otherwise, click on "*Unbound*" for each button you want + to map, then press the actual button on your controller that you + want for the Nintendo Switch controller button you've + chosen. + ![image](assets/86279165-d1f1e180-bb96-11ea-9d77-b9c029ce5b3a.png) + + You may continue tweaking the settings to your liking, or binding + each button from scratch if you want a fully custom button layout. + **NOTE: while the default *Deadzones* are 0.10, we recommend + increasing your *Deadzones* to at least 0.20 in order to avoid + unwanted joystick drift.** + +If you are in *Docked Mode* and have additional controllers to +configure, configure them now under Player 2, Player 3, and so on. + +7. ***Click Save to save your configuration.*** + +Alternately, you may skip the input UI and edit your config.json file +found in `%appdata%\ryujinx\` + +## Motion Controls +### Motion Controls + +Ryujinx offers the ability to use motion controls with motion-enabled controllers such as a Switch Pro Controller, Joycons, Playstation DS4, smartphones with motion support, Steam controller, and others. + +To use motion controls in Ryujinx: + +1. Launch & configure your favorite cemuhook server application (Betterjoy, DS4Windows, Steam Gyro, etc.) with your bluetooth or wired motion-enabled controller. Leave the application running. + +2. In Ryujinx, navigate to *Options > Settings > Input* tab and select which controller you are configuring. Remember: if you are in docked mode, configure Player 1. If you are in Handheld mode, configure the Handheld controller. + ![image](assets/92328779-5c841080-f020-11ea-80a1-af54341c4deb.png) + +3. Select your motion controller from the dropdown. It will be listed as "Xinput controller". + ![image](assets/92328812-9ead5200-f020-11ea-88f4-706c8f2bd5b6.png) + +4. Configuration options: + + - If you have already configured your controller's input buttons to your liking and only need to configure motion controls, check the "Enable Motion Controls" box and fill in the following information: + + **Controller Slot:** the controller slot # your motion controller is configured as in your cemuhook server application. Default is "0" + **Gyro Sensitivity:** 100% (you may adjust this to suit) + **Server Host:** the IP address of the computer being used to host the cemuhook server. 127.0.0.1 is localhost/the same computer running Ryujinx. + **Server Port:** 26760 + + ![image](assets/92329071-542cd500-f022-11ea-9aff-9b1e22f29b61.png) + + - Alternately, you can simply click on the empty Profile dropdown, select Default, and click Load. This populates the buttons with preset mappings and also fills in the motion control settings with recommended defaults. You may continue tweaking the settings to your liking, or binding each button from scratch if you want a fully custom button layout. + + **NOTE: while the default Deadzones are 0.10, we recommend increasing your Deadzones to at least 0.20 in order to avoid unwanted joystick drift.** + Make sure to check the "Enable Motion Controls" box! + + ![image](assets/92328941-740fc900-f021-11ea-9663-ee1eeee47cee.png) + + - Paired Joycons extra options: + + If you set your controller type to Joycon Pair, an option called "Mirror Input" becomes available. This is useful for games in which both Joycons are connected to a Joycon grip and are moving together. If you enable this checkbox, the first Joycon's motion will be used for both Joycons. + + ![image](assets/92338812-00e17380-f070-11ea-9090-e94abe4d1134.png) + + +5. Click Save to save your configuration. + +Repeat steps 2 through 5 for any other motion controllers you wish to configure. If you have more than one, make sure to choose the respective slot # for each controller! + +## Amiibo Emulation + +All Amiibo are able to be virtually scanned within the emulator, as long as you are actively connected to the internet. No files or dumps are required! + +**To scan an Amiibo:** + +1. While playing a game that supports Amiibo, either navigate to the area where Amiibo scanning is expected, or press/hold the correct button to enable the Amiibo scan prompt. This site has a basic list of supported games and what benefits are provided by each: [https://amiibo.life/games]() + +2. Click the "Actions" menu header, then click "Scan an Amiibo" + ![unknown1](assets/111011795-d82d9400-839a-11eb-8798-c426fe5bc973.png) + +3. Choose the Amiibo you want from the Amiibo Series and Character dropdowns. Note: only the Amiibo that have content for the game you are currently playing are shown in this window. All the same, if you'd like to see all Amiibo you may check the box that says "Show All Amiibo". + ![unknown2](assets/111011810-e8de0a00-839a-11eb-8a5c-d03b0e094ec4.png) + +**Addendum:** In The Legend of Zelda: Breath of the Wild, you may continually scan Amiibo as many times as you wish by checking the box labeled "Hack: Use Random Tag Uuid" box. + +## Profiled Persistent Translation Cache + +Speed up game loading times with PPTC + +In a nutshell, this feature caches translated functions so that they do +not need to be translated every time the game loads. This results in a +significant reduction of load times \--the amount of time between +launching a game and arriving at the title screen\-- for nearly every +game. + +**NOTE: You must launch the game at least twice and let it load** +**to the title screen or beyond before performance improvements are** +**unlocked on the third launch! These improvements are permanent and do** +**not require any extra launches going forward.** + +PPTC (Profiled Persistent Translation Cache) is now enabled by default. To disable it: + +1. With *Ryujinx* open, click on *Options \> Settings* + ![image](assets/86279303-082f6100-bb97-11ea-92bc-68f24612d7e2.png) + + +2. Then navigate to the *System* tab and **uncheck the box** marked + *Enable Profiled Persistent Translation Cache* + ![image](assets/86279433-3b71f000-bb97-11ea-8bd2-0435ba8ece33.png) + +From time to time you may wish to examine or purge your PPTC cache files if you are experiencing PPTC-related issues. + +To open the PPTC cache file location: + +1. With Ryujinx open, right-click the game in the game list whose PPTC cache files you wish to view. This will bring up a pop-up menu. + +2. Navigate to *Cache Management > Open the PPTC directory* + ![image](assets/86624278-486c5600-bf80-11ea-9de5-47340af14a0c.png) + +To purge the PPTC cache files: + +1. With Ryujinx open, right-click the game in the game list whose PPTC cache files you wish to purge. This will bring up a pop-up menu. + +2. Navigate to *Cache Management > Purge the PPTC cache* + ![image](assets/86625047-ac434e80-bf81-11ea-9dd7-7f3465f8c0d2.png) + +## Graphics Enhancements + +*Ryujinx* offers a few graphics enhancement options. + +1. *Resolution Scaling*, which offers a much sharper image with little to no impact to performance. Resolution scaling can increase image quality much more noticeably than Anisotropic Filtering. Ryujinx's resolution scaling implementation allows native, 2x, 3x, 4x, or even custom ratios for upscaling. + +2. *Anisotropic Filtering*, which can visibly improve graphic quality. [Wikipedia says](https://en.wikipedia.org/wiki/Anisotropic_filtering): +*In layman's terms, anisotropic filtering retains the "sharpness" of* +*a texture normally lost by MIP map texture's attempts to avoid* +*aliasing. Anisotropic filtering can therefore be said to maintain crisp* +*texture detail at all viewing orientations while providing fast* +*anti-aliased texture filtering.* + +3. *Shader Cache*, which stores onto disk the shaders that have already been compiled, negating the need to compile them again. This feature is highly sought after as it significantly reduces stuttering and FPS drops on subsequent plays of a particular game making for a smoother, more enjoyable gameplay experience. **Note: Shader Cache is enabled by default.** + +4. *Aspect Ratio Options*, which allow you to adjust the width-to-height ratio to your liking. **Note: these options may give your game a stretched or squeezed appearance unless you are using mods that change the expected aspect ratio of the game.** + +### Enable Resolution Scaling + +**Note: Enabling this feature may cause graphical glitches on some games.** +**These settings may be changed in-game on the fly!** +**On a standard 1080p display, 2x resolution scaling is recommended.** + +1. With *Ryujinx* open, click *Options \> Settings* + ![image](assets/86672580-078e3480-bfb4-11ea-8c01-86b05066a4dc.png) +2. Navigate to the *Graphics* tab and click the dropdown next to Resolution Scale. Select your desired level of resolution scaling. + ![image](assets/86673437-e7ab4080-bfb4-11ea-86de-876d7563f6a2.png) + + **Click *Save*** to save the enhancement setting. + +### Enable Anisotropic Filtering + +**Note: enabling this feature may cause graphical glitches on some** +**games.** + +1. With *Ryujinx* open, click on *Options \> Settings* + ![image](assets/86279490-547aa100-bb97-11ea-97ad-549534e9d635.png) + + +2. Navigate to the *Graphics* tab and click the dropdown next to + *Anisotropic Filtering*. Set it to your desired level. + ![image](assets/86279552-6ceabb80-bb97-11ea-8b88-1e19983ed890.png) + + **Click *Save*** to save the enhancement setting. + +### Manage shader Cache + +**Shader Cache is enabled by default**. There are no good reasons to disable it other than for testing purposes. + +Disabling this setting is strongly discouraged. However, if you absolutely must disable it: + +1. With Ryujinx open, navigate to *Options > Settings*. + +2. Navigate to the Graphics tab and disable shader cache by unchecking the box marked "Enable Shader Cache" + + In some rare cases, a shader cache might become corrupted and crash when compiling shaders on boot. To solve this you'll have to purge the shader cache for that particular game. Right click on a game in the game list and navigate to Cache Management > Purge Shader Cache. + ![image](assets/98551756-e76ccb80-225a-11eb-83b8-ce99b712e7d6.png) + + +To view the shader cache directory for a particular game: + +1. Right click on a game in the game list and navigate to Cache Management > Open Shader Cache Directory. + ![image](assets/98551866-0ec39880-225b-11eb-8380-967c97bfd97f.png) + +### Adjust aspect ratio + +#### Method 1 +With Ryujinx open, navigate to *Options > Settings* and click on the Graphics tab. Click on the Aspect Ratio dropdown and adjust the ratio to your liking. +![image](assets/102350497-3f85a480-3f62-11eb-95b2-c9ef3d468315.png) + +#### Method 2 +With your game running, click on the aspect ratio button in the status toolbar at the bottom of the Ryujinx window. +![image](assets/102351140-3517da80-3f63-11eb-8d14-a2c1fc9bfd5d.png) + +#### Method 3 + +1. Use Option 1 and select "Stretch to Fit Window" or Option 2 and select "Stretched". +2. Simply click and drag your window borders to the size you want! + +## Portable Mode + +If you wish, you may use a custom folder location for all Ryujinx data (as opposed to keeping it in its default location: `%appdata%`). This is done via the command-line or, more conveniently, a custom shortcut. In the future, the ability to configure custom data folders may be added to the GUI. + +**NOTE: You must manually create the custom folder first before using portable mode! After enabling portable mode, you will need to copy your prod.keys file and any desired game data/save data from its original location to the new data folder.** + +### Enable *Portable Mode* + +### Method 1: Create a "portable" subfolder + +**Recommended method** + +Create a subfolder in the Ryujinx program base directory called `portable`. This automatically enables portable mode and utilizes this `portable` folder for system folder contents (keys, firmware, PPTC/shader caches, etc.). +![image](assets/111225959-14811000-85a6-11eb-9ffa-a8d2f5d899cd.png) + +### Method 2: Command-line + +Open a command prompt, navigate to the location of the Ryujinx executable and type the following command: `ryujinx.exe -r D:\[folderpath]`. For example, if your custom folder was `D:\ryujinxdata`, your command would be the following: +``` +ryujinx.exe -r D:\ryujinxdata +``` + +![image](assets/91670371-0ec84f00-eada-11ea-9e0a-034ff6eee440.png) + +The command prompt window will become the console window when Ryujinx launches. + +### Method 3: Custom Shortcut + +1. Right-click on your Ryujinx executable and click Send To -> Desktop Shortcut + + ![image](assets/91670437-bf365300-eada-11ea-8bde-ce0b1cb7aa73.png) + +2. Locate the new shortcut on your desktop and right-click on it, then click Properties + + ![image](assets/91670516-8fd41600-eadb-11ea-8eb3-acfb97d64c65.png) + +3. In the Properties window, click into the Target field and add a space onto the end of the existing command. Then add `-r [folderpath]` where `[folderpath]` is your own custom data folder full path, and click OK. + For example, if your custom data folder was `D:\ryujinxdata`, the addition you would paste into the target field would be `-r D:\ryujinxdata`. + + ![image](assets/91670585-315b6780-eadc-11ea-8534-244a46eb1536.png) + + On MacOS, the command would be `/Applications/Ryujinx.app/Contents/MacOS/Ryujinx -r /path/to/custom/ryujinx/folder`. + + You can now use this shortcut any time you want to launch Ryujinx in portable mode! + +## Launch in Fullscreen + +Ryujinx can automatically launch games in fullscreen mode. You can enable this functionality in one of two ways: + +### Method 1 +In Ryujinx, click on Options, then check the box marked "Start Games in Fullscreen Mode". +![image](assets/100805553-173b6900-33ec-11eb-9702-71626f67f6e3.png) + +### Method 2 +If you launch Ryujinx from the commandline, add a --fullscreen option. Like so: +![image](assets/100806049-03dccd80-33ed-11eb-88a4-d5a56ada8bb0.png) \ No newline at end of file diff --git a/docs/src/setup/keys.md b/docs/src/setup/keys.md new file mode 100644 index 00000000..9806b853 --- /dev/null +++ b/docs/src/setup/keys.md @@ -0,0 +1,39 @@ +Keys are required for decrypting most of the file formats used by the Nintendo Switch. + + Keysets are stored as text files. These 2 filenames are automatically read: +* `prod.keys` - Contains common keys used by all Nintendo Switch devices. +* `title.keys` - Contains game-specific keys. + +Ryujinx will first look for keys in `C:\Users\yourname\AppData\Roaming\Ryujinx\system`, `\portable\system` on a portable install or `~/.var/app/org.ryujinx.Ryujinx/config/Ryujinx/system/`on the flatpak version. To access this directory, go to `File` > `Open Ryujinx folder`, then click on `system`. If Ryujinx doesn't find any keys in those folders, it will look in `$HOME\.switch`. + +To dump your `prod.keys` and `title.keys` please follow these steps. +1. First off [learn how to boot into RCM mode and inject payloads](https://nh-server.github.io/switch-guide/) if you haven't already. +2. Make sure you have an SD card with the latest release of [Atmosphere](https://github.com/Atmosphere-NX/Atmosphere/releases) inserted into your Nintendo Switch. +3. Download the latest release of Picklock_RCM/Lockpick_RCM. +4. Boot into RCM mode. +5. Inject the `Picklock_RCM`/`Lockpick_RCM.bin` that you have downloaded at `Step 3.` using your preferred payload injector. We recommend [TegraRCMGUI](https://github.com/eliboa/TegraRcmGUI/releases) as it is easy to use and has a decent feature set. +6. Using the `Vol+/-` buttons to navigate and the `Power` button to select, select `Dump from SysNAND | Key generation: X` ("X" depends on your Nintendo Switch's firmware version). +7. The dumping process may take a while depending on how many titles you have installed. +8. After its completion, press any button to return to the main menu of Picklock_RCM/Lockpick_RCM. +9. Navigate to and select `Power off` if you have an SD card reader. Or you could Navigate and select `Reboot (RCM)` if you want to mount your SD card using `TegraRCMGUI > Tools > Memloader V3 > MMC - SD Card`. +10. You can find your keys in `sd:/switch/prod.keys` and `sd:/switch/title.keys` respectively. +11. Copy these files and paste them in your Ryujinx `system` folder. +And you're done! + +## Title keys + +These are only used for games that are not dumped from cartridges but from games downloaded from the Nintendo eShop. These are also only used if the eShop dump does *not* have a `ticket`. If the game does have a ticket, Ryujinx will read the key directly from that ticket. + +Title keys are stored in the format `rights_id = key`. + +For example: + +``` +01000000000100000000000000000003 = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +01000000000108000000000000000003 = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +01000000000108000000000000000004 = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +``` + +## Prod keys + +These are typically used to decrypt system files and encrypted game files. These keys get changed in about every major system update, so make sure to keep your keys up-to-date if you want to play newer games! \ No newline at end of file diff --git a/docs/src/setup/multiplayer-ldn/assets/106518403-1203a480-6497-11eb-8f9d-99063198d6ed.png b/docs/src/setup/multiplayer-ldn/assets/106518403-1203a480-6497-11eb-8f9d-99063198d6ed.png new file mode 100644 index 00000000..37d9e44c Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/106518403-1203a480-6497-11eb-8f9d-99063198d6ed.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/106519052-f3ea7400-6497-11eb-84e1-fd2f086c8e33.png b/docs/src/setup/multiplayer-ldn/assets/106519052-f3ea7400-6497-11eb-84e1-fd2f086c8e33.png new file mode 100644 index 00000000..16c95ec7 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/106519052-f3ea7400-6497-11eb-84e1-fd2f086c8e33.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/106519536-ac181c80-6498-11eb-87bc-260d9da6be75.png b/docs/src/setup/multiplayer-ldn/assets/106519536-ac181c80-6498-11eb-87bc-260d9da6be75.png new file mode 100644 index 00000000..f54e858e Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/106519536-ac181c80-6498-11eb-87bc-260d9da6be75.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/106519747-01ecc480-6499-11eb-83b4-5b7487e00baf.png b/docs/src/setup/multiplayer-ldn/assets/106519747-01ecc480-6499-11eb-83b4-5b7487e00baf.png new file mode 100644 index 00000000..f6bfb7b5 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/106519747-01ecc480-6499-11eb-83b4-5b7487e00baf.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/106520124-84758400-6499-11eb-8790-7001fc63eee5.png b/docs/src/setup/multiplayer-ldn/assets/106520124-84758400-6499-11eb-8790-7001fc63eee5.png new file mode 100644 index 00000000..616aee34 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/106520124-84758400-6499-11eb-8790-7001fc63eee5.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/106521445-7c1e4880-649b-11eb-91b5-4cb25b343fa6.png b/docs/src/setup/multiplayer-ldn/assets/106521445-7c1e4880-649b-11eb-91b5-4cb25b343fa6.png new file mode 100644 index 00000000..6c95f9ac Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/106521445-7c1e4880-649b-11eb-91b5-4cb25b343fa6.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/106521866-1e3e3080-649c-11eb-9f79-6cbb3e9b4245.png b/docs/src/setup/multiplayer-ldn/assets/106521866-1e3e3080-649c-11eb-9f79-6cbb3e9b4245.png new file mode 100644 index 00000000..769063fb Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/106521866-1e3e3080-649c-11eb-9f79-6cbb3e9b4245.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/106522652-44180500-649d-11eb-994c-081e851b08ff.png b/docs/src/setup/multiplayer-ldn/assets/106522652-44180500-649d-11eb-994c-081e851b08ff.png new file mode 100644 index 00000000..fad6b018 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/106522652-44180500-649d-11eb-994c-081e851b08ff.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/106525027-9870b400-64a0-11eb-9625-d65a5383b3ae.png b/docs/src/setup/multiplayer-ldn/assets/106525027-9870b400-64a0-11eb-9625-d65a5383b3ae.png new file mode 100644 index 00000000..0a4e6854 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/106525027-9870b400-64a0-11eb-9625-d65a5383b3ae.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185624289-ab7c877a-f1ef-4c16-84c9-14b847e02b7a.png b/docs/src/setup/multiplayer-ldn/assets/185624289-ab7c877a-f1ef-4c16-84c9-14b847e02b7a.png new file mode 100644 index 00000000..554292b7 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185624289-ab7c877a-f1ef-4c16-84c9-14b847e02b7a.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185634138-0e83b1db-0210-4f5a-a4e6-12fd75bdbcd3.png b/docs/src/setup/multiplayer-ldn/assets/185634138-0e83b1db-0210-4f5a-a4e6-12fd75bdbcd3.png new file mode 100644 index 00000000..ae0532c1 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185634138-0e83b1db-0210-4f5a-a4e6-12fd75bdbcd3.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185634201-0ba2be55-3c67-4f94-b57a-b021ce873e63.png b/docs/src/setup/multiplayer-ldn/assets/185634201-0ba2be55-3c67-4f94-b57a-b021ce873e63.png new file mode 100644 index 00000000..91cfbbc6 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185634201-0ba2be55-3c67-4f94-b57a-b021ce873e63.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185639984-f29ab392-839a-4ed1-ad23-144b8304d9bb.png b/docs/src/setup/multiplayer-ldn/assets/185639984-f29ab392-839a-4ed1-ad23-144b8304d9bb.png new file mode 100644 index 00000000..ea434cc5 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185639984-f29ab392-839a-4ed1-ad23-144b8304d9bb.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185641338-225c109d-96a1-42fd-a3a3-4e678bb04525.png b/docs/src/setup/multiplayer-ldn/assets/185641338-225c109d-96a1-42fd-a3a3-4e678bb04525.png new file mode 100644 index 00000000..4d987a20 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185641338-225c109d-96a1-42fd-a3a3-4e678bb04525.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185641629-db09227e-eb93-4a42-9f42-88e9d2a084fc.png b/docs/src/setup/multiplayer-ldn/assets/185641629-db09227e-eb93-4a42-9f42-88e9d2a084fc.png new file mode 100644 index 00000000..061f70d6 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185641629-db09227e-eb93-4a42-9f42-88e9d2a084fc.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185644561-76326b69-af4a-4b1b-a65d-bb6c94dab504.png b/docs/src/setup/multiplayer-ldn/assets/185644561-76326b69-af4a-4b1b-a65d-bb6c94dab504.png new file mode 100644 index 00000000..43b95168 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185644561-76326b69-af4a-4b1b-a65d-bb6c94dab504.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185644623-7ebbc375-333b-4ea8-8198-5ee6416f9ec7.png b/docs/src/setup/multiplayer-ldn/assets/185644623-7ebbc375-333b-4ea8-8198-5ee6416f9ec7.png new file mode 100644 index 00000000..8396b8ff Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185644623-7ebbc375-333b-4ea8-8198-5ee6416f9ec7.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185646569-3af4e17c-309e-4ba2-aa14-23367712307b.png b/docs/src/setup/multiplayer-ldn/assets/185646569-3af4e17c-309e-4ba2-aa14-23367712307b.png new file mode 100644 index 00000000..270e6e68 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185646569-3af4e17c-309e-4ba2-aa14-23367712307b.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185648696-dce23485-2168-4e61-8ad0-ed32e0933ff9.png b/docs/src/setup/multiplayer-ldn/assets/185648696-dce23485-2168-4e61-8ad0-ed32e0933ff9.png new file mode 100644 index 00000000..fdf75509 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185648696-dce23485-2168-4e61-8ad0-ed32e0933ff9.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185651167-62bbcd51-d34b-4a31-b391-4a531a790e8b.png b/docs/src/setup/multiplayer-ldn/assets/185651167-62bbcd51-d34b-4a31-b391-4a531a790e8b.png new file mode 100644 index 00000000..9cfab9dd Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185651167-62bbcd51-d34b-4a31-b391-4a531a790e8b.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185651879-55f45130-040c-4c37-8630-a549ae93812f.png b/docs/src/setup/multiplayer-ldn/assets/185651879-55f45130-040c-4c37-8630-a549ae93812f.png new file mode 100644 index 00000000..583b53c5 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185651879-55f45130-040c-4c37-8630-a549ae93812f.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185651986-d9776dcd-ca51-4b67-b9de-c57bb91b717f.png b/docs/src/setup/multiplayer-ldn/assets/185651986-d9776dcd-ca51-4b67-b9de-c57bb91b717f.png new file mode 100644 index 00000000..379e07eb Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185651986-d9776dcd-ca51-4b67-b9de-c57bb91b717f.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185653219-32739384-e82f-4e0d-8f1e-981fa2b9b8f7.png b/docs/src/setup/multiplayer-ldn/assets/185653219-32739384-e82f-4e0d-8f1e-981fa2b9b8f7.png new file mode 100644 index 00000000..48e66693 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185653219-32739384-e82f-4e0d-8f1e-981fa2b9b8f7.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185654446-373d3035-a454-49e2-813e-55bb859ac5a9.png b/docs/src/setup/multiplayer-ldn/assets/185654446-373d3035-a454-49e2-813e-55bb859ac5a9.png new file mode 100644 index 00000000..0059a615 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185654446-373d3035-a454-49e2-813e-55bb859ac5a9.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185659376-dd965ffe-38a9-49f4-a68f-7daed0e40ce3.png b/docs/src/setup/multiplayer-ldn/assets/185659376-dd965ffe-38a9-49f4-a68f-7daed0e40ce3.png new file mode 100644 index 00000000..3caf8935 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185659376-dd965ffe-38a9-49f4-a68f-7daed0e40ce3.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185661668-36aa1bd7-1304-436f-9ebd-bf05ae05eaf1.png b/docs/src/setup/multiplayer-ldn/assets/185661668-36aa1bd7-1304-436f-9ebd-bf05ae05eaf1.png new file mode 100644 index 00000000..5eb6a6ee Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185661668-36aa1bd7-1304-436f-9ebd-bf05ae05eaf1.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185664722-02acf437-bdac-4f4e-ac14-38bdf30902eb.png b/docs/src/setup/multiplayer-ldn/assets/185664722-02acf437-bdac-4f4e-ac14-38bdf30902eb.png new file mode 100644 index 00000000..9085aa83 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185664722-02acf437-bdac-4f4e-ac14-38bdf30902eb.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185694966-ae17eabc-6f5e-4731-804e-d9433d97cfb9.png b/docs/src/setup/multiplayer-ldn/assets/185694966-ae17eabc-6f5e-4731-804e-d9433d97cfb9.png new file mode 100644 index 00000000..2cacd299 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185694966-ae17eabc-6f5e-4731-804e-d9433d97cfb9.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185712303-0ec50a9d-7673-453a-870c-a92c94838db2.png b/docs/src/setup/multiplayer-ldn/assets/185712303-0ec50a9d-7673-453a-870c-a92c94838db2.png new file mode 100644 index 00000000..20c81a66 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185712303-0ec50a9d-7673-453a-870c-a92c94838db2.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185713561-da196c78-de81-41ff-842a-a6f3de053d10.png b/docs/src/setup/multiplayer-ldn/assets/185713561-da196c78-de81-41ff-842a-a6f3de053d10.png new file mode 100644 index 00000000..75afaff9 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185713561-da196c78-de81-41ff-842a-a6f3de053d10.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/185718836-15a7f140-10a9-42ad-8c5f-01af9a0168f8.png b/docs/src/setup/multiplayer-ldn/assets/185718836-15a7f140-10a9-42ad-8c5f-01af9a0168f8.png new file mode 100644 index 00000000..113ba8b2 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/185718836-15a7f140-10a9-42ad-8c5f-01af9a0168f8.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/189258596-e3968ff9-78d4-4753-857f-5207a60bb049.png b/docs/src/setup/multiplayer-ldn/assets/189258596-e3968ff9-78d4-4753-857f-5207a60bb049.png new file mode 100644 index 00000000..99a1b5e9 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/189258596-e3968ff9-78d4-4753-857f-5207a60bb049.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/189258828-d30e4a5d-d9dc-4d88-83ec-febcd83c0c2e.png b/docs/src/setup/multiplayer-ldn/assets/189258828-d30e4a5d-d9dc-4d88-83ec-febcd83c0c2e.png new file mode 100644 index 00000000..f35c1c2c Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/189258828-d30e4a5d-d9dc-4d88-83ec-febcd83c0c2e.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/189263164-951f31d9-5416-4fd1-9037-6cac9dc10e7b.png b/docs/src/setup/multiplayer-ldn/assets/189263164-951f31d9-5416-4fd1-9037-6cac9dc10e7b.png new file mode 100644 index 00000000..12f25cb8 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/189263164-951f31d9-5416-4fd1-9037-6cac9dc10e7b.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/203631868-3a7edde9-c089-4118-846a-7d2da179fde7.png b/docs/src/setup/multiplayer-ldn/assets/203631868-3a7edde9-c089-4118-846a-7d2da179fde7.png new file mode 100644 index 00000000..d52d063d Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/203631868-3a7edde9-c089-4118-846a-7d2da179fde7.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/203632109-0dc6544e-dadb-46ce-8a54-36c8f10f674a.png b/docs/src/setup/multiplayer-ldn/assets/203632109-0dc6544e-dadb-46ce-8a54-36c8f10f674a.png new file mode 100644 index 00000000..c891241b Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/203632109-0dc6544e-dadb-46ce-8a54-36c8f10f674a.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/206545125-0e6d3264-77f8-4b00-84ae-9def333519c8.png b/docs/src/setup/multiplayer-ldn/assets/206545125-0e6d3264-77f8-4b00-84ae-9def333519c8.png new file mode 100644 index 00000000..a3da175f Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/206545125-0e6d3264-77f8-4b00-84ae-9def333519c8.png differ diff --git a/docs/src/setup/multiplayer-ldn/assets/206545452-920d90ac-fa52-440f-838d-dc8846becd5b.png b/docs/src/setup/multiplayer-ldn/assets/206545452-920d90ac-fa52-440f-838d-dc8846becd5b.png new file mode 100644 index 00000000..50332807 Binary files /dev/null and b/docs/src/setup/multiplayer-ldn/assets/206545452-920d90ac-fa52-440f-838d-dc8846becd5b.png differ diff --git a/docs/src/setup/multiplayer-ldn/index.md b/docs/src/setup/multiplayer-ldn/index.md new file mode 100644 index 00000000..5599cb07 --- /dev/null +++ b/docs/src/setup/multiplayer-ldn/index.md @@ -0,0 +1,283 @@ +## Ryujinx offers multiplayer support over the internet via LDN/Local Wireless emulation in a special preview build. Furthermore, all versions of Ryujinx now also support LDN connectivity with CFW Nintendo Switch consoles via ldn_mitm, and LAN Mode connectivity with Switch consoles on games with LAN functionality! +## Download LDN 3.1.3 here! +### Windows: https://www.patreon.com/file?h=74910544&i=13368552 +### Windows (Avalonia UI): https://www.patreon.com/file?h=74910544&i=13368547 +### Linux: https://www.patreon.com/file?h=74910544&i=13368529 +### Linux (Avalonia UI): https://www.patreon.com/file?h=74910544&i=13368553 +### macOS (3.0.1, Avalonia UI): https://github.com/Ryujinx/release-channel-macos/releases/download/1.1.0-macos1/Ryujinx-1.1.0-macos1-macos_universal.app.tar.gz + +## Table of Contents + +[LDN/Local Wireless](#ldn) + +[LDN Games & How to Play](#how-to-play-ldn) + +[LAN Mode](#lan-mode) + +[LAN Mode Game List & Cheat Sheet](#lan-mode-games) + +LDN +=== + +This feature emulates the "Local Play" or "Local Wireless" multiplayer mode in a particular game, but connects you with other Ryujinx players anywhere in the world with internet access. + +Note: this feature does _**not**_ work with "Online Mode", which uses the Nintendo Switch Online service. + +### Requirements: +- An active high-speed internet connection. +- The Ryujinx application must be enabled for inbound traffic in your firewall if you are the game host. Windows Firewall, if enabled, will pop-up prompting you to allow access. Make sure to allow it! +- UPNP enabled in your router/firewall for P2P mode (most routers already have this enabled). Otherwise the game can still work (albeit with higher latency) using the proxy host. +- The same game version as those you are playing with e.g. Animal Crossing: New Horizons 2.0.5; mixing game versions will _**not**_ work! + +### Configuration Options: + +Multiplayer support via P2P network hosting is already enabled by default in this preview build. In most setups, it will simply work without any configuration. + +**Specific Options:** + +We recommend creating a user profile and choosing your username in **Options > Manage User Profiles** before going online, as the default profile is known to cause connection issues in some games. + +![image](assets/185624289-ab7c877a-f1ef-4c16-84c9-14b847e02b7a.png) + +You will have to transfer your saves if you had any on the default profile. To access them, switch to the old profile then right click your game and click on `Open User Save Directory`. + +_**Mode:**_ +Set to _Ryujinx Ldn_ by default. There are 3 modes: +- Disabled - Multiplayer functionality is disabled. If you're planning on using this, that's a sign you should just use our [latest regular build](https://ryujinx.org/download) instead. +- Ryujinx LDN - This enables standard connectivity with Ryujinx users over the internet ONLY. +- ldn_mitm - Enables connectivity with a CFW (hacked) Nintendo Switch AND other Ryujinx users on the same network. + +_**Disable P2P Network Hosting:**_ +Unchecked by default. If you are experiencing connectivity issues and cannot get P2P to work, you may check the box labeled "Disable P2P Network Hosting (may increase latency)" to instead use the Ryujinx proxy host server. + +_**Network Passphrase:**_ +Empty by default. When empty, you will be able to connect to anyone else playing the same game version as yourself. To play with friends, either create a passphrase yourself or click the "Generate Random" button and share it with them, then have them enter the same passphrase. This will prevent unwanted parties from joining your game, as well as limit the number of potential rooms to join for popular games like Mario Kart 8. We want to make sure you get to the right Grand Prix! + +![multiplayer settings](assets/185694966-ae17eabc-6f5e-4731-804e-d9433d97cfb9.png) + +How to play LDN +====== +While LDN is available on a vast amount of games, here are some of the most popular ones and how to access Ryujinx LDN on them. + +Before playing LDN multiplayer, go to Options > Settings > System and ensure "Enable Guest Internet Access" is OFF and "Enable Vsync" is ON, then head to Multiplayer settings and ensure the mode is set to "Ryujinx Ldn" if you want to play online, or "ldn_mitm" if you want to play with others in the same local network. Once the emulator enters local wireless, a Windows firewall warning will appear. Make sure to allow it to connect. + +If you're looking for people to play with, we have dedicated LDN channels in our [Discord server](https://discord.gg/ryujinx). + +Animal Crossing: New Horizons +========== +Head to Dodo Airlines, talk to Orville, choose either "I wanna fly!" or "I want visitors.", and then select "Via local play." + +![image](assets/185639984-f29ab392-839a-4ed1-ad23-144b8304d9bb.png) + +Fast RMX +========== +On the main menu, select "Multiplayer" and then "Local communication". + +![image](assets/185659376-dd965ffe-38a9-49f4-a68f-7daed0e40ce3.png) + +Mario Kart 8 Deluxe +========== +**This game requires a built shader cache to play LDN.** The game will disconnect if any given player cannot maintain 60fps, and shader compilation stuttering will cause connection errors. If you are experiencing issues, run through every course in single-player first. On fast CPUs, shader compilation may not be a problem when running Vulkan. + +On the main menu, select "Wireless Play" and then "1p". "2p" is only for playing LDN with splitscreen, for when you have someone else with you, either in person or on Parsec. + +![image](assets/185641338-225c109d-96a1-42fd-a3a3-4e678bb04525.png) + +Mario Party Superstars +========== +**This game requires version 1.0.0 of the game to work on LDN.** It's also prone to disconnecting if no shader cache has been built, though less so than Mario Kart 8. + +On the main menu, select "Local Play". + +![image](assets/185641629-db09227e-eb93-4a42-9f42-88e9d2a084fc.png) + +Mario Strikers: Battle League +========== +**This game requires [a mod to bypass the intro crash](https://github.com/ryujinx-mirror/ryujinx/files/12786472/cutscene.skip.-.piplup.zip).** +Right click the game > Open mods directory, and extract on the folder. + +On the main menu, select "Quick battle", then select "Local wireless". + +![image](assets/185654446-373d3035-a454-49e2-813e-55bb859ac5a9.png) + +Monster Hunter Generations Ultimate +========== +Press `Y`, make sure "Hunter Search" is on. + +![image](assets/185648696-dce23485-2168-4e61-8ad0-ed32e0933ff9.png) + +Monster Hunter Rise +========== +Speak to Senri the Mailman and select "Play Locally". + +![image](assets/185634138-0e83b1db-0210-4f5a-a4e6-12fd75bdbcd3.png) +![image](assets/185634201-0ba2be55-3c67-4f94-b57a-b021ce873e63.png) + +Pokkén Tournament DX +========== +**Use Vulkan for this game.** + +On the main menu, select "Wireless Battle". + +![image](assets/185653219-32739384-e82f-4e0d-8f1e-981fa2b9b8f7.png) + +Pokémon Brilliant Diamond and Shining Pearl +========== +In a Pokémon Center, head upstairs and talk to the lady in the middle if you want to trade, or talk to the lady in the right if you want to battle. For the latter, select "Local communication". + +![image](assets/185644561-76326b69-af4a-4b1b-a65d-bb6c94dab504.png) +![image](assets/185644623-7ebbc375-333b-4ea8-8198-5ee6416f9ec7.png) + +Pokémon Scarlet and Violet +========== +Press `X` to bring up the menu, select "Poké Portal" (available after the first Pokémon Center) and choose the preferred option. + +![image](assets/203631868-3a7edde9-c089-4118-846a-7d2da179fde7.png) +![image](assets/203632109-0dc6544e-dadb-46ce-8a54-36c8f10f674a.png) +"Surprise Trade", "Battle Stadium" and "Mystery Gift" **will not work** due to requiring Nintendo Switch Online connections. This also applies to Poké Portal News. + +Pokémon Sword and Shield +========== +Press `Y` to bring up the comms menu and pick an option. + +![image](assets/185661668-36aa1bd7-1304-436f-9ebd-bf05ae05eaf1.png) + +Pokémon Legends: Arceus +========== +In the village, next to the Galaxy building, talk to Simona, select "I want to trade Pokémon", and then "Someone nearby". + +![image](assets/185646569-3af4e17c-309e-4ba2-aa14-23367712307b.png) + +Splatoon 2 +========== +On the main plaza, go into the building on the right. + +![image](assets/185651879-55f45130-040c-4c37-8630-a549ae93812f.png) +![image](assets/185651986-d9776dcd-ca51-4b67-b9de-c57bb91b717f.png) + +Splatoon 3 +========== +Press `X` to bring up the menu, go to The Shoal and talk to the receptionist. + +![image](assets/189258596-e3968ff9-78d4-4753-857f-5207a60bb049.png) +![image](assets/189258828-d30e4a5d-d9dc-4d88-83ec-febcd83c0c2e.png) + +Super Mario 3D World +========== +Press `R` on the overworld map and select "Local Wireless Play". + +![image](assets/206545452-920d90ac-fa52-440f-838d-dc8846becd5b.png) +![image](assets/206545125-0e6d3264-77f8-4b00-84ae-9def333519c8.png) + + +Super Smash Bros. Ultimate +========== +On the main menu, press `ZR` (or press `right` twice) and select "Local Wireless". + +![image](assets/185651167-62bbcd51-d34b-4a31-b391-4a531a790e8b.png) + + +LAN Mode +======== + +`Enable Guest Internet Access` allows you to connect with a Switch console on the same network as your PC running Ryujinx, as long as the game supports LAN as well. This feature is available on mainline Ryujinx too. See below for a list of games with a LAN mode. + +![LAN mode](assets/185664722-02acf437-bdac-4f4e-ac14-38bdf30902eb.png) + + +LAN Mode Games +======================================= +[ARMS](#arms-lan-mode) +[Bayonetta 2](#bayonetta-2-lan-mode) +[Duke Nukem 3D: 20th Anniversary World Tour](duke-nukem-3d-20th-anniversary-world-tour-lan-mode) +[Mario & Sonic at the Olympic Games Tokyo 2020](#mario-and-sonic-at-the-olympic-games-tokyo-2020-lan-mode) +[Mario Kart 8 Deluxe](#mario-kart-8-deluxe-lan-mode) +[Mario Tennis Aces](#mario-tennis-aces-lan-mode) +[Pokkén Tournament DX](#pokkén-tournament-dx-lan-mode) +[Pokémon Sword and Pokémon Shield](#pokémon-sword-and-pokémon-shield-lan-mode) +[Saints Row: the Third - The Full Package](#saints-row-the-third-the-full-package-lan-mode) +[Saints Row IV](#saints-row-iv-lan-mode) +[Splatoon 2](#splatoon-2-lan-mode) +[Splatoon 3](#splatoon-3-lan-mode) +[Titan Quest](#titan-quest-lan-mode) + +ARMS LAN Mode +==== +Hold `Left Analog stick button` and press `L` + `R` on the main menu screen. The "Local" option will change to "LAN Play". + +![2021-02-01 14_14_47-Ryujinx 1 0 0-ldn2 1 - ARMS v5 4 0 (01009B500007C000) (64-bit)](assets/106519052-f3ea7400-6497-11eb-84e1-fd2f086c8e33.png) + +Bayonetta 2 LAN Mode +=========== +Enter tag climax and highlight local play. Hold `Left Analog stick button` and press `L` + `R`. + +![image](assets/106519536-ac181c80-6498-11eb-87bc-260d9da6be75.png) + +Duke Nukem 3D: 20th Anniversary World Tour LAN Mode +=========== +On the main menu, choose "Multiplayer" then select "LAN Play". + +![image](assets/185713561-da196c78-de81-41ff-842a-a6f3de053d10.png) + +Mario and Sonic at the Olympic Games Tokyo 2020 LAN Mode +=========================================== +Press `L` + `R` + `Left Analog Stick Button` on the main menu screen. The "Local Play" option will change to "LAN Play". + +![image](assets/106519747-01ecc480-6499-11eb-83b4-5b7487e00baf.png) + +Mario Kart 8 Deluxe LAN Mode +=================== +Press `L` + `R` + `Left Analog Stick Button` on the main menu screen. The "Wireless Play" option will change to "LAN Play". + +![image](assets/106518403-1203a480-6497-11eb-8f9d-99063198d6ed.png) + +Mario Tennis Aces LAN Mode +================= +Select Free Play from the Main Menu. Hold `Left Analog stick button` and press `L` + `R`. The "Local Play" option will change to "LAN Play". + +![image](assets/106520124-84758400-6499-11eb-8790-7001fc63eee5.png) + +Pokkén Tournament DX LAN Mode +==================== +You must use game version **1.3.3**. From the main screen select a game. Press `B` + `X` + `Dpad-Down` and press `L` + `R`. A new screen asking if you want to enter Event Mode will appear. + +![image](assets/106525027-9870b400-64a0-11eb-9625-d65a5383b3ae.png) + +Pokémon Sword and Pokémon Shield LAN Mode +==================== +Note: **LAN Mode in these games became inconsistent** due to a game update. If you're unable to connect, there is probably no solution other than resorting to ldn_mitm. + +Press `L` + `R` + `Left Analog stick button` in the options menu. The following screen/prompt will pop up. You must have gotten far enough in the game to unlock multiplayer in order to use LAN Mode! + +![image](assets/106521445-7c1e4880-649b-11eb-91b5-4cb25b343fa6.png) + +SAINTS ROW THE THIRD THE FULL PACKAGE LAN Mode +===================================== +At the main menu, select "CO-OP CAMPAIGN" and then Select "LAN GAME". + +![image](assets/106521866-1e3e3080-649c-11eb-9f79-6cbb3e9b4245.png) + +Saints Row IV LAN Mode +========== +On the main menu, select "Co-op Campaign" then "LAN Play". + +![image](assets/185718836-15a7f140-10a9-42ad-8c5f-01af9a0168f8.png) + +Splatoon 2 LAN Mode +========== +Hold `L` + `R` + `Left Analog Stick Button` at the local play option for 4-5 seconds until LAN mode is activated. You will see the following prompt: + +![image](assets/106522652-44180500-649d-11eb-994c-081e851b08ff.png) + +Splatoon 3 LAN Mode +========== +Press `X` to bring up the menu, go to The Shoal, enable Guest Internet Access (enabling it before booting the game will cause it to get stuck trying to connect to online). Hold `ZL` + `ZR` + `Left Stick Button` for 5 seconds at The Shoal and you'll see the prompt in the image below. LAN mode will be enabled afterwards. + +![image](assets/189263164-951f31d9-5416-4fd1-9037-6cac9dc10e7b.png) + +Titan Quest LAN Mode +=========== +Select "Multiplayer - Local" in the main menu. + +![image](assets/185712303-0ec50a9d-7673-453a-870c-a92c94838db2.png) + diff --git a/docs/src/stylesheets/extra.css b/docs/src/stylesheets/extra.css new file mode 100644 index 00000000..1275eabe --- /dev/null +++ b/docs/src/stylesheets/extra.css @@ -0,0 +1,52 @@ +:root { + --md-primary-fg-color:#ff5f55; +} + +/* Header text color */ +.md-header__title { + color: #ffffff; +} + +/* Header repo link color */ +.md-source__repository { + color: #ffffff; +} + +/* Change color of the icons in the dark/light mode toggle */ +.md-header .md-icon svg { + fill: #ffffff; +} + +/* Override the banner color */ +.md-header { + background-color: #001e23; + border-bottom: 1px solid #970b0b; +} + +/* Override the banner color in drawer (mobile) */ +.md-nav--primary .md-nav__title[for="__drawer"] { + background-color: #001e23; +} + +/* Override the tab colors */ +.md-tabs { + background-color: #001e23; +} + +/* Tab links styling */ +.md-tabs__list { + color: #ffffff; +} + +/* Hover effect for all links */ +a:hover, +a:focus { + color: #01c4e5 !important; +} + +/* Add margin to images so they aren't too close to the text */ +.md-content__inner img +{ + margin-top: 1em; + margin-bottom: 1em; +} \ No newline at end of file