Open
Milestone
started on Jun 9, 2025
1.3.3
This changelog is a work in progress and not final.
May include things from the previous version, as those are often used as a template, as well as entirely empty sections which may or may not exist in the final version.
- LDN Game Viewer (by @greem)
- Hollow Knight: Silksong is playable (by @lotp)
- 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 (merged))
- 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)
- 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 the following games to Discord RPC asset images:
- Hollow Knight: Silksong
- 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 -
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 labelslow
-
- Added:
I18N:
- Updates to Korean translation (by @Hackchan)
- Update Simplified Chinese translation (by @shinyoyo)
- Update Traditional Chinese translation (by @WilliamWsyHK)
- Update Russian translation (by @neo)
- Update Swedish translation (by @yeager)
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
andNonOverlappingRangeList
. (by @lotp)- Turns out that most systems that used
RangeList
should actually be usingNonOverlappingRangeList
, 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
andFindOverlaps
(all 3 variants). - The
FindOverlaps
now also has 3 variations:AsSpan
,AsArray
andAsNodes
. 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 useAsSpan
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 oldAsArray
for full write access.
- Turns out that most systems that used
- 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.
GPU:
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.
- We don't know what the name of this function actually is yet, so it's called
Nerd Zone:
- The Ryujinx GDB Stub is back, courtesy of @coxxs! (ryujinx!71 (merged), ryujinx!106 (merged))
- We have a guide setup, which you can find here.
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
Loading
Loading
Loading
Loading