• 1.3.3 e2143d43bc

    1.3.3 Stable

    ryuadmin released this 2025-10-11 07:11:39 +00:00 | 152 commits to master since this release

    :ryubing: Significant changes include:

    • Tears of the Kingdom 1.4.x & Breath of the Wild 1.8.x support (by @lotp)
      • (as well as other games using the new audio renderer revision, such as newer updates for the Nintendo Classics emulators)
    • LDN Game Viewer (by @greem)
    • Hollow Knight: Silksong is playable (by @lotp) :my_joy_reaction:
    • UI improvements in many areas (by @neo)

    You can find a list of all Merge Requests merged in this release here.

    UI:

    • LDN Game Viewer (by @greem)
      • Using much of the same UI code as the compatibility list, there is now an LDN Game Viewer you can use in-app.
      • You can apply filters to what games are shown, including only showing for games you own.
      • By default it does not show private/non-joinable (in-progress) games, however you can disable this in the filters section of the game viewer screen.
      • Consequently, since it does not show those games by default, they are now excluded from the count on the application list screen to line up with the amount of games shown by default LDN Game Viewer.
        • This was done since, for most people, a private game may as well not even exist. You need to know the passphrase to get in.
        • The same goes for non-joinable, these are likely people who are already fine with the amount of people in their game and decided to go ahead and start the game.
    • Amiibo Window Overhaul (by @VewDev) (ryujinx!121)
      • The main improvement is that Amiibos are now displayed in a list in a dock on the left side, with the image of the selected one on the right, instead of a drop-down.
      • Additionally, "Only Amiibos available for this game" has been made clearer, and it will display all available Amiibos if no series is selected.
    • General UI improvements (by @neo)
      • Recolored compatibility labels (image)
      • Properly aligned text in multiple areas
        • keyboard keys in the hotkey screen (image)
        • checkboxes in many areas (image)
      • Improved User Inferface tab in Settings (before (image), after (image))
    • Fix the scroll logic in the Avalonia mouse driver never being 0 (by @MaxLastBreath)
      • Also automatically resets to sending 0 if there's no scroll event in 100ms
    • Added a fun "Ryubing" ASCII art to the console on startup.
    • Added the following games to Discord RPC asset images:
      • Hollow Knight: Silksong
      • Super Mario Galaxy
      • Super Mario Galaxy 2
      • Squeakross: Home Squeak Home
    • Updated the compatibility list:
      • Added:
        • AKIBA'S TRIP: Hellbound & Debriefed: Playable
        • AKIBA'S TRIP: Undead & Undressed Director's Cut: Playable
        • Eternights: Playable
        • FRONT MISSION 2: Remake: Playable
        • FRONT MISSION 3: Remake: Playable
        • High on Life: Menus
        • IronFall: Invasion: Playable
        • Super Mario Galaxy: Runs Slow, AMD GPU Bug
        • Super Mario Galaxy 2: Runs Slow, AMD GPU Bug, can deadlock
        • Prodeus: Playable
        • Pokémon Friends: Menus, crashes due to an HLE service issue.
        • Risk of Rain Returns: Playable
        • Shadows of the Damned: Hella Remastered: Playable
        • The DioField Chronicles: Playable
        • The Falconeer: Warrior Edition: Playable
        • The Legend of Nayuta: Boundless Trails: Ingame
        • Turbo Overkill: Playable
        • Undead Horde: Playable
        • Undead Horde 2: Playable
      • Changed:
        • Starlink: Battle for Atlas™ Digital Edition: Playable, removed all labels
          • Previously: Nothing, Crashes; Needs an update applied; HLE service issue.
        • DOOM 3: Added label slow

    I18N:

    • Updates to Korean translation (by @Hackchan)
      • ryujinx!56, ryujinx!64, ryujinx!100, ryujinx!107, ryujinx!122, ryujinx!135, ryujinx!136, ryujinx!141
    • Update Simplified Chinese translation (by @shinyoyo)
      • ryujinx!58, ryujinx!104, ryujinx!124, ryujinx!133, ryujinx!139
    • Update Traditional Chinese translation (by @WilliamWsyHK)
      • ryujinx!85, ryujinx!130
    • Update Russian translation (by @neo)
      • ryujinx!103, ryujinx!134
    • Update Swedish translation (by @yeager)
      • ryujinx!66
    • Update French translation (by @neo)
      • ryujinx!67

    Emulation:

    CPU & Memory:

    • Internally the memory tree structure nodes are now linked like linked list nodes. (by @lotp)
      • It turns out a lot of systems needed access to neighbor nodes, and traversing the trees each time was slow.
    • Added Object Pooling to a few classes. (by @lotp)
      • A few systems were spawning and deleting a ton of objects causing the Garbage Collector to run more than necessary. Now those objects get pooled and reused instead, cutting down on allocations and de-allocations.
    • Refactored RangeList and NonOverlappingRangeList. (by @lotp)
      • Turns out that most systems that used RangeList should actually be using NonOverlappingRangeList, and switching them over allowed the code to use more efficient overlap look-ups.
      • The classes now inherit from the RangeListBase class that has a few common helper functions.
      • Updated the NonOverlappingRangeList FindOverlap/FindOverlaps functions to be more efficient.
        • In the old classes the finder functions would binary search for the first overlap that matched the search range and then traverse the internal list left and right to find the list of overlapping items. This worked fine when 1 or 2 items overlapped, but caused lag spikes when a lot of items overlapped.
        • The new system uses BinarySearch algorithms that search for the first match, the leftmost match, the rightmost match and both the leftmost and rightmost matches for the functions FindOverlapFast, FindOverlap and FindOverlaps (all 3 variants).
        • The FindOverlaps now also has 3 variations: AsSpan, AsArray and AsNodes. The old function always copied an array of the overlapping items, which was fine for small lists, but was slow for large lists. Now you can use AsSpan if you just need fast read access to the overlapping items, AsNodes for quick access to the overlapping items with write access (with limitations) and the old AsArray for full write access.
    • Changed a few flag checks to use binary logic instead of the built-in HasFlag function. (by @lotp)
      • Turns out that a small allocation of a few bytes adds up over time when you call a function a few million times a second.
    • Reading fixed-size arrays as Span. (by @lotp)
      • The emulator uses a lot of fixed-size arrays for emulating Switch data structures, but C# doesn't (or at least didn't used to) have fixed-size arrays. Therefore the emulator needed its own implementation, and it works great.
      • There is a caveat however. The indexer called AsSpan, and did not attempt to retrieve or store any cached information.
        • As such, any time you used normal array indexer access on a Ryujinx fixed array, it created a new Span.
        • Similar to the HasFlag checks, this is normally not that big of a deal. However when you access the elements of the arrays a lot, and the emulator does, this gets insanely inefficient.
      • The emulator now caches a single Span when an array needs to access multiple pieces of data in a single array, which slightly improves efficiency.
      • The biggest effect was seen in playing videos, so if you had stutter playing videos (cut scenes, intros, etc.) you might get a smoother experience now.
    • Smaller code changes/improvements. (by @lotp)
      • Some code was made more readable.
      • Slight code changes for efficiency.

    Audio:

    • Added support for rev15 audio rendering. (by @lotp)
      • Added support for float based Biquad Filters.
        • The updated audio renderer uses floats so we have to do so too.
        • Updated older systems to work with floats instead of shorts, older audio revision data will automatically be converted from short to float data.
    • Renamed classes and structs to match Nintendo's own names (Ongoing). (by @lotp)
      • Either Nintendo updated the names or we were just using similar names from the start.
      • The names have been changed to make future Reverse Engineering work easier, by not causing confusion when the names mismatch between data structures in the SDK and in Ryujinx.

    GPU:

    • Intel Arc on Linux also has the push descriptors bug present on Windows and NVIDIA Pre-Turing.
      • It has been added to the HasPushDescriptorsBug helper function in ShaderCollection.cs.
      • Additionally, the check for IsIntelArc has been changed to a case-insensitive check as the trademark abbreviation on Linux is in lowercase.

    HLE:

    • Basic event handle implementation for IApplicationFunctions CMIF ID 210. (by @lotp)
      • We don't know what the name of this function actually is yet, so it's called GetUnknownEvent in the code.
      • This is all that was needed for Hollow Knight: Silksong to boot in Ryubing.
    • Fixed an inaccuracy in the HID logic that caused some games to boot-loop due to the new SDK getting confused by bad input-state data. (by @lotp)

    Nerd Zone:

    • The Ryujinx GDB Stub is back, courtesy of @coxxs! (ryujinx!71, ryujinx!106)
      • We have a guide setup, which you can find here.
    • Changed the default URL used for LDN to ldn.ryujinx.app. This is the same server as before, just using a more official domain.

    CI/CD:

    • Support for downloading updates from GitHub has been removed entirely.
    • The updater logic has been migrated to use the first-class Client library component of the UpdateServer project.

    Full Diff: 1.3.2...1.3.3

    Downloads
  • 1.3.2 9d83dfd19c

    1.3.2 Stable

    ryuadmin released this 2025-06-09 22:59:40 +00:00 | 283 commits to master since this release

    :ryubing: Significant changes include:

    • A new co-maintainer! Welcome @lotp! :link_yay:
    • Updates are now hosted on GitLab and the Updater pulls from GitLab (by @greem)
    • A fix for the elusive "RomFS building timeout" :my_joy_reaction: (by @lotp)

    You can find a list of all Merge Requests merged in this release here.

    UI:

    • Fix long hangs & occasional crashes when booting larger games (such as TOTK) (ryubing/libhac!1) (ryubing/libhac!3) (by @lotp)
      • Also known as "romfs building timeout" or "Avalonia timeout."
    • Added a display for "Total Play Time" next to game count (when not in a game).
    • Use a proper light/dark GitLab logo in the about window.
    • Added the ability to use global input config in per-game configs (ryubing/ryujinx!8) (by @Goodfeat)
      • Click the checkbox "Global Input" in your game-specific settings screens.
    • Added the following games to Discord RPC asset images:
      • Borderlands 2: Game of the Year Edition
      • Borderlands: The Pre-Sequel Ultimate Edition
      • Minecraft Dungeons
    • In-app Compatibility list got a facelift (ryubing/ryujinx!29) (by @Goodfeat), including:
      • named columns;
      • a sum of each playability rating in an info dropdown;
      • sorting options.
    • Updated the compatibility list:
      • Added:
        • Breakout Beyond: Playable
        • Nikoderiko: The Magical World: Ingame, GPU issues
        • FANTASY LIFE i: The Girl Who Steals Time: Ingame, eventually crashes on Vulkan, flickering in OpenGL.

    I18N:

    • Update Korean translation (by @Hackchan)
    • Update Simplified Chinese translation (by @shinyoyo)

    Emulation:

    CPU:

    • change: Increased the maximum % of Turbo mode to 1000
    • fix: Prevent PPTC blacklist logic happening at runtime (ryubing/ryujinx!28) (by @lotp)
    • fix: Reset PPTC carriers on invalidation (ryubing/ryujinx!26) (by @lotp)
    • fix: Use accurate length for enumerating PPTC info stream (ryubing/ryujinx!49) (by @lotp)
      • All 3 of the above fix occasional crashing.

    GPU:

    • improvement: Optimize Integer Short Multiply Add Maxwell (XMAD) instruction sequence into a single 32-bit multiply when possible (ryubing/ryujinx!24) (by gdkchan, rebased & opened by @KeatonTheBot)
    • fix: Green screen video decoding issues on Linux (ryubing/ryujinx!40) (by @KeatonTheBot)
    • fix: Work around undefined behavior in bad dual-source blend states (ryubing/ryujinx!4) (by Isaac, rebased & opened by @KeatonTheBot)
      • According to the original PR, this should resolve occasional post-processing failures on RADV cards in Skyward Sword HD.

    Vulkan:

    • improvement: Use compute shader for non-indirect unsupported topology index buffer conversions (ryubing/ryujinx!5) (by Isaac, rebased & opened by @KeatonTheBot)
      • This should significantly speed up the execution of the draws that could not be done using a MTLBlitCommandEncoder on MoltenVK.
    • improvement: Restrict manual feedback loop detection to RDNA3 GPUs (ryubing/ryujinx!25) (by @KeatonTheBot)
      • Should alleviate significant performance degradation since September 2024, in Paper Mario: The Thousand Year Door and Xenoblade games (on GPUs that aren't RDNA3 architecture).

    HLE:

    • Fix JWT claims and emulated BSD socket flag handling (ryubing/ryujinx!38) (by @mrkev)
      • Improves server connection for Just Dance®, and probably other games.

    Nerd Zone:

    • Updated to LibHac 0.20.0
      • Much like Ryujinx, the original LibHac project is now gone. However, because it's relied on heavily in Ryujinx, we have gone ahead and put it on this GitLab; and intend to maintain it similarly to Ryubing.
      • Anyone can use this version! Simply add the NuGet feed of LibHac's Package Registry (https://git.ryujinx.app/api/v4/projects/17/packages/nuget/index.json) to your project.
      • This feed contains a full backup of the packages that were/are in the original maintainer's MyGet feed, as well as our new versions. The new versions are those with the package ID Ryujinx.LibHac.
    • Fix a bunch of static analysis issues (ryubing/ryujinx!44) (by @mrkev)

    CI/CD:

    • Use rcodesign for dylib signing where available, and remove all ._ files when building on APFS (Apple File System) (ryubing/ryujinx!14) (by @thetoid)
    • A full migration from hosting builds on GitHub to here on this GitLab instance has been completed.
      • Once you update to this version, you will be good to go. If you automatically update to this version, you're good to go.
      • Updates are requested from update.ryujinx.app; but this is just a fancy API around GitLab releases. (source code)
    • Additionally, a webhook is now sent in the Ryubing Discord server in the #builds channel, automatically.

    Full Diff: 1.3.1...1.3.2

    Downloads
  • 1.3.1 4c9e8f8e5c

    1.3.1 Stable

    ryuadmin released this 2025-04-24 03:10:03 +00:00 | 359 commits to master since this release

    Significant changes include:

    UI:

    • Replaced all in-app references & links to the GitLab instead of a deleted GitHub repo.
    • Added the ability to skip user-select dialog, defaulting to the user you have selected already in-app.
    • Added the following games to Discord RPC asset images:
      • Xenoblade Chronicles X Defintive Edition

    Emulation:

    • Turbo Mode
      • This adds a hotkey that enables "turbo mode" that multiplies elapsed CPU ticks, which speeds up any games that use delta time between frames for physics calculations.
        • FPS-locked games can benefit from this, too! Feel free to give it a try. The desired speed multiplier % can be found in CPU settings.
      • You can also select if you want turbo mode to only be active while the configured hotkey is pressed, instead of a toggle.
    • Xenoblade Chronicles X Definitive Edition can now boot without requiring Ignore Missing Services

    I18N:

    • The locales.json file has been moved to the root of the repository under the assets folder, instead of buried in the Ryujinx Avalonia project assets folder.
    • Update Ukrainian translation (by @rondo)
    • Update Korean translation (by @Hackchan)
    • Update Swedish translation (by @yeager)
    • Update Traditional Chinese translation (by @WilliamWsyHK)
    • Update Simplified Chinese translation (by @shinyoyo)

    Input:

    • Fix Xbox controller configuration loss (by @Tartifless)
    • Virtual Dual Joy-Con (!3) (by @madwind)
      • You can now use a Joy-Con pair with Ryujinx!
      • Please keep in mind you can only have one pair configured at any given time.

    CI/CD:

    • Fixed 2 macOS CI problems (!12)

    Nerd Zone:

    • Canary changelogs now link to the GitLab.
    • Amiibo information is now retrieved from the Ryubing/Nfc repo on GitHub.
    • The Updater release channel repo is no longer hard-coded into the Ryujinx binary.
      • Instead, when you try to update, it requests https://ryujinx.app/api/release-channels for the GitHub repo it should use for each release channel.
      • This was done to prevent everyone except those on the latest version from being cutoff from updates in the future, like what happened last month.

    Full Diff

    Downloads