1.4.0
⚠️ ⚠️ ⚠️ WIP CHANGELOG - NOT FINAL ⚠️ ⚠️ ⚠️
EDITOR'S NOTE: If you're reading this before release: Hi! We're waiting on !141 and !82 to be merged before shipping 1.4.0. There are other PRs that will slip in before these are ready to ship, but our goalpost has been finalized, and we're working hard to get this out the door. We'll see you guys soon
Significant changes include:
- Updated to .NET 10 (by @greem)(L-214)
- Updated to Avalonia 12 (by @KeatonTheBot)(!82)
- Updated to SDL3 (by @maki)(L-207)
- This means Steam Controller, Switch 2 Pro, and many other controllers are now supported, as are their rumble and gyro features.
- Updated macOS shipping and improved performance on Apple Silicon.
- Added Liquid Glass compliant icon & functionality for macOS (support by @greem, .icns and Asset Catalog provided by Transistor)(L-217)

- Our internal MoltenVK package has been updated with Metal 1.4 support (by Ori and @KeatonTheBot) (implemented by @sh0inx)(!16)
- Fixed the macOS Hypervisor
BadArgumentlaunch crash, while also sneaking in some improvements to help potentially mitigate those lovely 0 FPS deadlock on macOS in certain games with Vulkan + Hypervisor enabled. (by @Neo, !89)
- Added Liquid Glass compliant icon & functionality for macOS (support by @greem, .icns and Asset Catalog provided by Transistor)(L-217)
- Updated minimum Vulkan version to 1.3.
- Added HD Rumble support for first-party Switch controllers. (by @Cookieso)(!40)(!104)(!109)
- Experimental; there are still issues to address, and the current implementation may be unsafe for the longevity of your linear resonant actuators. Proceed with caution.
- Improved garbage collection performance, and a toggle for low-latency garbage collection (by @sh0inx)(!88)
- Systems with high-profile CPUs will likely see an improvement in performance with this setting enabled. Low-latency garbage collection trades CPU cycles for more garbage collection clearing, which results in less stuttering if your CPU can afford the penalty. On medium-to-low profile CPUs, however, this will increase stuttering instead.
Improved Game Compatibility:
- Ring Fit Adventure now boots into menus.
- Pokemon Legends: Z-A LDN now works.
- Animal Crossing: New Horizons 3.0.0+ LDN now works.
- Tomodachi Life: Living the Dream is now playable, and looks better on AMD GPUs.
- The Legend of Zelda: Tears of the Kingdom and other titles affected by inexplicable crashing should now be resolved.
- Splatoon 3 no longer loads indefinitely.
- Just Dance* no longer has corrupted videos.
- Rhythm Heaven Groove is now playable.
This is our largest release yet; much of the wait time was figuring out how to tackle macOS issues and develop fixes for them with very few macOS testers. We plan to address more issues with macOS, so if you'd like to help us get fixes out the door, please consider joining our Discord server to sign up as a tester. If you have a macOS device and know C#, we're looking for more contributors in this department.
This release was made in the middle of a migration to a different Git server. As a result, there is unfortunately no concise list of MRs merged in this release. Since we squashed commits when merging MRs, we instead linked the associated commits here. You may see (L-#), this links to the commit associated with that MR, or (C), which denotes a commit made to master. Moving forward, MRs (Merge Requests) will be called PRs (Pull Requests); GitLab calls them the former, and Forgejo calls them the latter.
Apologies for the inconvenience.
Internals
- Launch guards have been added for various scenarios in which the emulator might run, including:
- Running the emulator as an admin (or via sudo). (by @greem and @sh0inx, (C), !4)
- This is horrible security practice (running anything as admin because "maybe this will make it work") and is usually only done to bypass the above issues with the Program Files folder or user permission issues, as no other folder that you'd reasonably put random software in would require such permission.
- Running the emulator from the Windows Program Files directory (with or without
(x86)). (by @greem, (C))- The program files folder is for applications which require administrator to run, and as such has additional restrictions placed on it for applications that run without admin privileges.
- The fix for this is NOT to run the program as administrator. The fix is to move it somewhere that requires less permission, such as literally just about anywhere else on your system.
- Running the emulator from your cloud folder (Onedrive, iCloud). (by @sh0inx, !4)
- The cloud folder does not always have the data immediately available for execution, and as such has unpredictable issues with crashing, save data disappearing, etc.
- Running the emulator from the macOS Downloads directory. (by @sh0inx, !4)
- Gatekeeper does not like this folder, and macOS applies extra scrutiny to files here, which can cause unpredictable issues with launching, saving, etc.
- Running the emulator as an admin (or via sudo). (by @greem and @sh0inx, (C), !4)
- Added an unofficial build warning for detected Flatpak installs. (by @sh0inx, !4)
- Added native dialog boxes that are called when a launch guard is hit. (by @greem and @sh0inx, (C), !4)
- Implemented a new debug log type called NetLog and added more verbose logging to the LDN service. (by @sh0inx, !5)
- Increased texture cache @ 4 GiB DRAM for higher VRAM cards. (by @KeatonTheBot, !8)
- Added missing solution configurations for
Ryujinx.Audio.Backends.Apple. (by @KeatonTheBot, !10) - Fixed parsing of arguments with spaces. (by @lotp, !34)
- Fix an error where the updater failed to fetch update data. (by @VewDev, !35)
- Updated from SDL2 to SDL3. (by @maki)(L-207)
- This means Steam Controller, Switch 2 Pro, and many other controllers are now supported, as are their rumble and gyro features.
- Updated SDL3-CS to compile with
SDL_HIDAPI_LIBUSBandSDL_HIDAPI_LIBUSB_SHAREDenabled. (by @KeatonTheBot, !37)- This is required for Switch 2 Pro controllers to register correctly.
- Added HD Rumble support for first-party Switch controllers. (by @Cookieso)(!40)(!104)(!109)
- Experimental; there are still issues to address, and the current implementation may be unsafe for the longevity of your linear resonant actuators. Proceed with caution.
- We expanded the HD rumble class for easy implementation of HD rumble for other controller types. If you want to see HD rumble for your controller implemented, please consider helping us implement and test support.
- Added skia native assets for Windows and macOS, and switched to no-depend for Linux. (by @sh0inx, !77)
- Improved garbage collection performance, and a toggle for low-latency garbage collection. (by @sh0inx)(!88)
- Systems with high-profile CPUs will likely see an improvement in performance with this setting enabled. Low-latency garbage collection trades CPU cycles for more garbage collection clearing, which results in less stuttering if your CPU can afford the penalty. On medium-to-low profile CPUs, however, this will increase stuttering instead.
- Added new titles and data to our PlayReports (Discord RPC) system: (by @sh0inx, !93)
- Echoes of Wisdom (Warps)
- Super Mario Odyssey (Kingdoms)
- Super Mario Bros. Wonder (World & Course)
- Pokémon Scarlet/Violet (DLC & Academy Rooms)
- Super Mario 3D All Stars (Game Selection)
- Tomodachi Life: Living the Dream (+ Welcome Edition) (Mii count, Fountain Level). (by @MabelAmber, !103)
- Miitopia (by @Awesomeanchovies, !129)
- New Super Mario Bros. U Deluxe (by @Awesomeanchovies, !130)
- Animal Crossing: New Horizons (Island name) (by @MabelAmber, !103)
- Updated Discord RPC display data. (by @AllieNeedsSleep, !139)
- Updated PlayReports formatting to pull data from
.jsonfiles to reduce clutter. (by @Awesomeanchovies, !147) - Updated Discord RPC to allow PlayReport data to span multiple lines. (by @Awesomeanchovies, !154)
- Replaced
shaderc.netpackage withSilk.NET.Shaderc. (by @KeatonTheBot, !124) - Fixed tests. (by @lotp, !140)
InitializeSignalHandler()was moved out of the translator (almost 2.5 years ago), but the test code was never updated to manually call the function as it now does in the real CPU context, so the tests just started failing. By manually initializing the handler, we no longer cause tests to fail.
- Removed
OpenTK.Windowing.GraphicsLibraryFrameworkpackage, as it was unused. (by @ranidspace, !126)
UI
- Fixed newer games disappearing with certain language settings. (by @coxxs) (L-188 L-189)
- Newer games and game updates have a secondary folder in the control NCA for Switch 2 icons.
- Previously, Ryujinx did not handle this case and treated any file system entry in the icon part of the NCA as a file.
- When it tried to open the Switch 2 icon folder as a file, it errored, which caused Ryujinx to assume the file was broken and ignore it.
- Fixed the "Show Changelog" button in the update dialog doing what "No" should do, and vice versa.
- Reverted the game list element rounding, as it caused the selected indicator to look very buggy.
- Fixed the application list loading slower when RyuLDN is enabled. (by @coxxs, ryujinx!191)
- Upon loading any configuration, it now checks to make sure directories in your games directories and auto-load directories setting actually exist.
- If they don't, they are promptly removed from the configuration and the fact this happened is logged to the console.
- Added the following games to Discord RPC asset images:
- Pokémon Legends: Z-A
- Miitopia
- Sparkle 2: Evo
- Frederic 2
- 36 Fragments of Midnight
- Super Mario 3D All Stars: Super Mario 64
- Super Mario 3D All Stars: Super Mario Sunshine
- Super Mario 3D All Stars: Super Mario Galaxy
- Tomodachi Life: Living the Dream (+ Welcome Edition)
- Pokémon FireRed Version
- Pokémon LeafGreen Version
- Spyro Reignited Trilogy
- REFUNCT
- Hexagravity
- Hello, Mario!
- Nintendo Classics for Nintendo Switch: Virtual Boy (NSO)
- Nintendo Classics for Nintendo Switch: N64 MATURE (NSO)
- Ascendance
- NO THING
- Mary Skelter Finale
- DELTARUNE
- Skylanders Imaginators
- Dragon Quest VII Reimagined Demo
- Rhythm Heaven Groove: Starter Demo
- MARVEL Cosmic Invasion Demo
If a game does not display its icon in Discord, send us the extracted logo from Ryujinx and its Title ID.
We accept requests over Discord and on our Compatibility repo.
- Updated the compatibility list:
- Added:
Pokémon Legends: Z-A: Ingame, GPU & crashing issues, LDN works
(by @sh0inx, !94)Emio – The Smiling Man: Famicom Detective Club (DEMO): Playable, demoGROOVE COASTER WAI WAI PARTY!!!!: Ingame, gpuMetroid Prime 4: Beyond: IngameMute Crimson DX: IngamePokémon Champions: Menus, required update, online-brokePokémon FireRed Version: Nothing, crashesPokémon LeafGreen Version: Nothing, crashesTomodachi Life: Living the Dream: Ingame, amd-vendor-bug, gpu, intel-vendor-bug, LDN brokenTomodachi Life: Living the Dream – Welcome Edition: Playable, amd-vendor-bug, demo
- Updated:
SUPER MARIO ODYSSEY: Playable, macOS, amd-vendor-bug, slowdowns
- Added:
If a game does not have compatibility data, or its compatibility data is out of date, please make an issue on our Compatibility repo.
-
Refactored keyboard handling to use physical keys. (by @Babib3l, !13, !118)
-
Started using helper methods for user profile images, mod manager, title manager, and DLC directory menus to address file select issues on Linux. (by @KeatonTheBot, !24)
-
Fixed connected controllers of the same model having identical names. (by @frosch, !27)
-
Fixed Windows terminating the currently focused window when "Show Console" was disabled. (by @Babib3l, !32)
-
Cleaned up Tools menu. (by @Neo, !42)
- Added file picker dialog titles for
Install FirmwareandInstall Keys. - Improved
Install FirmwareandInstall Keyssub-menus. - Moved
Manage File Typesmenu and sub-menu. - Improved
Mii Editorentry in the menu.
- Added file picker dialog titles for
-
Fix Windows full-screen gap when toggling from maximized. (by @Babib3l, !80, !113)
-
Fixed various issues with the Windows full-screen option. (by @Babib3l, !87)
- Fixed an issue where exiting full-screen could exit the Ryujinx window.
- Fixed an issue where toggling full-screen
ONwould move the window to the primary monitor. - Fixed an issue where exiting full-screen when the window was previously in a non-maximized state did not conserve the window coordinates and size properly.
- Opening the Ryujinx app no longer causes the app to grow slightly larger vertically on each launch.
-
Fixed a COM exception crash related to clipboard copy events from changes in Avalonia 11.3. (by @MabelAmber, !108)
-
Fixed an issue in the input settings window that caused the stick visualizer to run at extremely degraded performance when the selected profile had a rainbow LED configuration. (by @Babib3l, !119)
-
Added Dynamic Input Swap, Device Profile Linking and Player Device Assignment features to the input system. (by @Babib3l, !125, !149)
-
Cleaned up File menu. (by @Neo, !127)
- Added keyboard shortcuts to
Load ApplicationandLoad Unpacked Game. - Merged
Load Title Updatesand renamedLoad DLC→Load Updates/DLC. - Added/Updated file picker titles for content loading actions.
- Improved
Associate File TypesandRemove File Type Associations. - Updated menu icons.
- Improved
Load Updates/DLCdialog messages.
- Added keyboard shortcuts to
-
Introduced splash text messages that change per startup on the loading screen after selecting a game, and moved the "RYUBING" logo splash in logs to be inside its own class. (by @Awesomeanchovies, !128)
Cleaned up the Options menu. (by @Neo, !133)- Moved
Toggle Fullscreento the View menu. - Moved
Show Consolecheckbox to the View menu. - Moved
Start Games in FullscreenandStart Games Without UI(renamed to "Hide UI on Game Start" for better flow) from the Options menu to the Interface tab in Settings. - Renamed:
Change Language→Language. - Modified menu item order.
- Moved
-
Cleaned up XCI Trimmer tool and action menu. (by @Neo, !146)
- Renamed
Trim XCI Files menu→XCI Trimmer. - Greatly improved XCI Trimmer Window.
- Renamed
Check & Trim XCI File→Trim XCI. - Remove Trim XCI Tooltip.
- Added
IsVisibleparameter to Trim XCI. - Adjusted formatting of XCI Trimming Status on status bar.
- Updated menu grouping with separators.
- Renamed
Resume→Resume EmulationandPause→Pause Emulation. - Fixed Pause/Resume Emulation UI Bug.
- Previously, if a user paused emulation and then exited the game without closing the emulator, the next game launch would incorrectly show Resume Emulation, as though the new game were paused.
- Updated
Scan AmiiboandScan Skylandericons to a chess rook and dragon, making them clearer and more fun than the previous cubes (I miss the cubes, too, but this just looks better). - Added shortcut for
Simulate Wake-up Message. - Removed
Manage Cheatsfrom the menu.- Manage Cheats doesn't properly work in-game, and thus the decision was made to remove it from the action bar during emulation.
- Renamed
-
Added native Wayland support (by @sh0inx) (!169)
I18N
- Updated the Locale system to use Fractured Locales. (by @lotp, ryujinx!238)
- Locales will now be split over multiple files, instead of all being in a single 20k+ line file.
- This will take some time to be completed, as the translations file is as said above: massive.
- Relabeled "FSR" as "FSR 1.0" (to be more clear) (by @babib3l, ryujinx!248)
- Updated the following languages:
- Korean (by @Hackchan, ryujinx!168, ryujinx!174, ryujinx!201, ryujinx!251
- Simplified Chinese (by @shinyoyo, ryujinx!209, !95, !134)
- Traditional Chinese (by @WilliamWsyHK, ryujinx!200, !17)
- Swedish (by @yeager, ryujinx!156)
- French (by @babib3l, ryujinx!172, ryujinx!246, ryujinx!248, !14, !101, !150, !151)
- Spanish translation (by @babib3l, ryujinx!172, ryujinx!246, !14, !150)
- Brazilian Portuguese (by @godzilaa4, ryujinx!208)
- German (by @Djibril, !41)
Emulation
CPU & Memory
- Protect against stack overflows caused by deep recursion. (by @KeatonTheBot, ryujinx!111)
- 12GB emulated heap support. (by @lotp, ryujinx!166, ryujinx!190)
- Previously, the heap was limited to 6GiB no matter the memory setting; which resulted in memory settings above 8 to not increase the heap size.
- Switched certain enum flag checks to pure logic instead of using the
HasFlagfunction. (by @lotp, ryujinx!202)HasFlagallocates 4 bytes of memory every call. This is not much, but it adds up when it is used 1+ million times a second.
- Manually wrote out certain iterators instead of using LINQ or generic collection iterators. (by @lotp, ryujinx!202)
- Same reason as with
HasFlag, the LINQ and generic iterators have a slight memory overhead that just adds up.
- Same reason as with
- Cached certain delegates. (by @lotp, ryujinx!202)
- same reason as above.
- Implemented Object Pooling and caching for a large amount of objects and arrays that are often reallocated. (by @lotp, ryujinx!195, ryujinx!202, ryujinx!234)
- instead of constantly allocating and de-allocating objects, causing GC pressure, we instead reuse the objects or update existing objects when possible.
- Fixed some bugs introduced by earlier memory overhauls. (by @lotp, ryujinx!234)
- GPU buffers were incorrectly handled in certain cases causing data to be lost or kept when it shouldn't be.
- RangeList logic was simplified. (by @lotp, ryujinx!234)
- RangeListItem no longer exists.
- objects implementing
IRangenow implement whatRangeItempreviously handled themselves directly.
- objects implementing
- RangeListItem no longer exists.
KAddressArbiternow uses a dictionary to store threads based on their target address, instead of looping over every single thread and checking if the address matches (by @lotp, ryujinx!202, ryujinx!234)- Keyboard State is now updated in a static var instead of constantly allocating a new array. (by @lotp, ryujinx!234)
- Increased base JIT cache size from
256to1024MB and introduced cache invalidation syscalls for Linux and macOS. (by @sh0inx, !22) - instanced JIT cache. (by @lotp, !152)
- JIT caches are no longer static.
- JIT UnwindWindows now supports multiple jit caches.
- JIT caches should no longer cause crashes due to entry offset collisions.
- @MaxLastBreath pointed out to us that The Legend of Zelda: Tears of the Kingdom had unexplained crashes at seemingly random intervals. After some extensive testing, we concluded that these crashes were being caused by these entry offset collisions.
- CPU tests now run concurrently.
- Fixed the macOS Hypervisor
BadArgumentlaunch crash, while also sneaking in some improvements to help potentially mitigate those lovely 0 FPS deadlock on macOS in certain games with Vulkan + Hypervisor enabled. (by @Neo, !89)- This was quite an undertaking, and the detailed report that Neo provided is a wonderful introspective to the complexity of the Hypervisor system.
- Implemented a complete Shadow Register Cache (HvExecutionContextVcpu.cs).
- Added full in-memory shadow copies of every relevant register:
- General-purpose registers: private readonly ulong[] _x = new ulong[32];
- Vector/SIMD registers: private readonly V128[] _v = new V128[32];
- System/special registers: _pc, _elrEl1, _esrEl1, _tpidrEl0, _tpidrroEl0, _fpcr, _fpsr, and _pstateRaw (stored as ulong internally to avoid type conversion issues).
- Added full in-memory shadow copies of every relevant register:
- Changed index checks from
if (index < 0 || index > 30)toif ((uint)index > 30)inGetX,SetX,GetV, andSetV. - Separated cache initialization into a dedicated
InitializeCacheDefaults()method called by constructor andReset() - Rate-limited warnings with a cooldown timer (
WarningCooldownTicks= 1_000_000_000 ≈ 1 second). - Added clear, descriptive messages (e.g. "PAC failure on SP_EL0", "PAC failure on X15").
- Added public long
GetFallbackCount()for runtime monitoring. - Added adaptive
TryGpuSync()called periodically in the main Execute() loop (every 10\u201312 execution steps). - Added strategic
Thread.Yield()after SvcAarch64 handling and in sync points. - Tuned counters based on real game-play testing (%10 for light sync, %6 for stronger sync).
Audio
- Added an AudioToolbox audio backend. (by @stossy11, ryujinx!252)
- macOS exclusive
- Reverted and reimplemented BiquadFilterEffect. (by @lotp, ryujinx!192, ryujinx!233)
- Fixes a few audio related infinite loading issues and game crashes in games like Splatoon 3 and Tomodachi Life: Living the Dream.
- Added Object Pooling to audio commands, to decrease GC pressure. (by @lotp, ryujinx!192, ryujinx!212)
- VoiceInfo errors are now stored in a cached list instead of always allocating an array, even when no errors occured. (by @lotp, ryujinx!202)
GPU
- Avoid lookup of invalid textures of the texture pool didn't change. (ryujinx!113)
- GPU Commands now use pointers when initializing to save an unneeded allocation. (by @lotp, ryujinx!195)
- Cache render targets for
SetRenderTargetsCommand. (by @lotp, ryujinx!202, ryujinx!234) - The Threaded Renderer had its SpanPool size increased from 4MB to 8MB. (by @lotp, ryujinx!234)
- Added shader non-uniform indexing support. (by @AsperTheDog, !91, !99)
- This resolves a visual glitch primarily observed in Tomodachi Life: Living the Dream on AMD GPUs, where a sub-group is tasked with rendering a block of the screen, and in the boundaries some cores are indexing the wrong texture. This is called implicit non-uniform sampler array indexing. The idea is basically that some GPUs optimize texture look-ups from indexed texture arrays by assuming that you are never going to index different textures within a single work-group.
- Improved Vulkan validation. (by @AsperTheDog, !92, !105)
- Fixed incorrect usage of
VK_IMAGE_CREATE_EXTENDED_USAGE_BIT. - Added missing bits to sub-pass self-dependency for correct in-sub-pass memory barrier execution.
- Fixed image views incorrectly claiming storage bit.
- Flushed commands to avoid using images before initializing them.
- Fixed incorrect mip clipping on copy.
- Fixed incorrect texture size on blit.
- Fixed buffer destroy before submit.
- Fixed incorrect usage of
- Fixed VP9 playback corruption where stale segmentation/MV state could leak across frames and produce blocky/discolored output until a later refresh frame. The MMNV changes also make the service behavior closer to what games expect when requesting and clearing NVDEC clocks, removing the stub spam for
Request:SetAndWaitOld. (by @MrKev, !132)- This fixes many of the dance videos in the Just Dance series.
Device
- Fixed
LoadGuestApplicationhanging when cancelled. (by @sh0inx, !1)- This means that loading an invalid file no longer crashes the emulator. This also fixed several crashes related to closing guest applications (games) when returning to the main menu.
- Fixed an issue where there were missed references and an
OperationCancelledexception when exiting an application. (by @sh0inx, !86)- This was happening because we failed to check if the GPU was performing work before cancelling an operation.
HLE
- Implemented
IPrepoService:SaveReport(10106) andIPrepoService:SaveReportWithUser(10107). (by @coxxs, ryujinx!254)- In some games using a newer SDK, when
nn::prepo::PlayReport::SetOptInCheckEnabledisfalse,nn::prepo::PlayReport::SavecallsSaveReport(10106) andSaveReportWithUser(10107), instead of 10105/10106.
- In some games using a newer SDK, when
- Implemented
ISelfController:SaveCurrentScreenshot(120) to invoke the emulator's own screenshot logic (was previously stubbed). (by @piplup, ryujinx!230) - Stubbed
IUserLocalCommunicationService:SetProtocol(106). (by @sh0inx, ryujinx!253)- Fixes Animal Crossing: New Horizons crashing when attempting an LDN connection, and potentially other games with Switch 2 updates.
- Synced thread name any time the kernel scheduler is requested to schedule. (by @lotp, ryujinx!157)
- Closed any and all open sockets when the
bsdservice client exits. (by comex on GitHub)- Previously, the sockets were only closed when the game specifically requested it.
- Now, they are always closed on shutdown of the
bsdsocket client instance that created it.
- Added service commands for firmware 19.0.0
IManagerForApplication&IManagerForSystemService:LoadIdTokenCache`. (by @coxxs, ryujinx!182)- Renamed existing one to
LoadIdTokenCacheDeprecated.
- Renamed existing one to
- Stubbed
IUserServiceCreator:CreateClientProcessMonitorr(1), allowing games that use SDK 18 or newer to use LDN. (by @coxxs, L-181)- This is what fixes LDN for Pokémon Legends: Z-A.
- Stubbed
ILibraryAppletAccessor:90. (by @sh0inx, ryujinx!197)- Lets games using SDK 20+ bypass a crash when calling an applet.
- Before the change: No controller connected, launch a game; game tries to show controller applet via this (currently nonexistent) command, crash.
- Additionally, this command has a diagnostic added, which will throw with a
SerivceNotImplementedExceptionif any arguments passed to it are not zero.- If you get this crash, PLEASE report it to our issue tracker; we added this specific branch for real world research into how this service command is utilized by real games we don't have.
- Stubbed
IWriterForApplication:CreateContextRegistrar(0). (by @coxxs, ryujinx!183) - Optimized array allocation if memory is continuous in
GetIoctlArgument,Ioctl2andIoctl3commands inINvDrvServices. (by @lotp, ryujinx!195, ryujinx!234)- The original code allocated an array for the data it needed, then copied said data from memory into the array, and then created a span from the array. If the memory is continuous this is just a waste of time, since we can directly create a span from the memory itself.
- We now also cache the array so we don't need to recreate it every time it is actually needed, this is a lot faster when the array is very big.
- Renamed
INotificationServicesForSystemtoINotificationServicesand implemented a few commands and stubs (by @sh0inx, !6):INotificationServices:GetNotificationCount(1000) (implemented)INotificationServices:GetNotificationSendingNotifier(1040) (implemented)INotificationServicesForApplications:ListAlarmSettings(520) (stubbed)INotificationServicesForApplications:Intialize(1000) (stubbed)INotificationSystemEventAccessor:GetSystemEvent(0) (implemented)- These changes allow Ring Fit Adventure to successfully boot into the menu. Further work needs to be done to get in-game; if you have this game, consider helping us with testing!
- Fixed
CaptureManager:SaveScreenshotraising an exception when saving capture data. (by @Xam, !18)- The screenshot buffer was bigger than the bitmap buffer, so
Marshall.Copy()was raising an unhandled expection. On top of this, because the data was just copied as is, the resulting image was garbled.
- The screenshot buffer was bigger than the bitmap buffer, so
- SoftwareKeyboardApplet: Fixed cursor being at 0 position even when text is present. (by @Xam, !25)
- Implemented
ILibraryAppletSelfAccessor:PushOutData(1). (by @sh0inx, !79) - Stubbed
ILibrarySelfAccessor:ExitAndReturn(10). (by @sh0inx, !96) - Fixed ProcessLoader stale PID validation against kernel process table. (by @Babib3l, !102)
- Make process identity explicit for service metadata resolution. (by @Babib3l, !100)
- Check if HandleDesc can be null. (@lotp, !112)
- Stubbed
ISharedFontManager:GetSharedFontInOrderOfPrioritybecause the current implementation was incorrect. (by @bxym, !156)- This allows Rhythym Heave Groove to get in-game, but more work needs to be done to correctly implement this function.
Nerd Zone
- First-party RenderDoc API support. (by @greem, ryujinx!242)
- Information (and namely, screenshots) of the added functionality can be found here.
- The GDB stub code has been restructured; and many issues have been fixed.
- Restructuring by @greem.
- Added
monitor mini-dumpcommand. (by @coxxs, ryujinx!158) - Added
monitor get mappingcommand. (by @coxxs, ryujinx!215) - Fixed crash that occurred when GDB was connected early. (by @coxxs, ryujinx!159)
- Do not skip CheckInterrupt when GDB stub is enabled. (by @coxxs, ryujinx!169)
- Abort if unable to initialize GDB stub server. (by @coxxs, ryujinx!186)
CI/CD
- Completely overhauled the versioning system to use a meaningful major/minor numbering system, instead of an infinitely increasing third number.
- Stable releases will increment the second number, and reset the third for canary.
- i.e. (Canary 1.6.254 -> Stable 1.7 -> Canary 1.7.1, etc)
- The intention of this change is to make it more clear what version the canary is most directly related to.
- This has the added benefit of (theoretically) removing the possibility of skipping version numbers due to errors in CI, since the version number is no longer tied to the run number and is only incremented at the very end of the workflow script when everything is known to have been completed successfully.
- Stable releases will increment the second number, and reset the third for canary.
- All builds are now made on Linux (Ubuntu 24.02).
- Added retry support for artifact uploading, canaries should no longer fail to release randomly.
- Support for Intel Macs has been removed, with this version, Stable 1.4.0 and Canary [FILL IN BEFORE RELEASE] being the final versions to offer a universal app bundle.
- The reason for doing this is two-fold.
- As it is, we did not actively support this platform. Apple deprecated Intel-based applications long ago, and they plan to outright remove support for them (barring "gaming") with macOS 28 (Intel devices are 6+ years old at this point, which is ancient in Apple years).
- The update size for the macOS platform we do actively support is now cut in half. This drastically cuts down file sizes on our server, cuts down on potential bugs, etc. By focusing on Apple Silicon, we can target future developments and provide a better Ryujinx experience to macOS users.
- The reason for doing this is two-fold.
- Added support for
7zandtar.xzarchives with SharpCompress. (by @lotp, !26)- This was done to make download (and archive) sizes smaller, which saves bandwidth and time for both users and our server.
- Updated AppImage to better follow specs. (by @ranidspace, !110, !121)
- AppImages now follow the Linux FHS and a
.DirIconto follow the spec closer, along with changing the icon and desktop file names. - Metadata has been added.
- AppImages now follow the Linux FHS and a
- Re-enabled win-arm64 builds in CI now that they have been fixed with file trimming. (by @KeatonTheBot, !12)
- Note that Windows ARM support is still experimental, expect crashes and issues. Consider helping us test this platform if you want better compatibility.
TEMP
New Contributors
- @sh0inx: performance improvements, additional launch guards, Discord RPC, HLE stubs & implementations
- @Cookieso: HD rumble support
- @Djibril: DE translator
- @der_zelda_player: DE translator
- @ranidspace: Appimage compliance and package management
- @MabelAmber: Discord RPC (PlayReports) and clipboard crash fix on Windows
- @Awesomeanchovies: Splash update and Discord RPC (PlayReports)
- @maki: Migration to SDL3.
- @frosch: Identical controller names fix
- @AllieNeedsSleep: Discord RPC
- @bxym: fixed Rhythym Heaven Groove !156
- @EscoDev: Fix incorrect save button locale in user editor L-280
- @BowedCascade: L-265 L-268 L-276
- @deReeperJosh: NFC Mifare Manager L-270
- @Astell: fix super mario galaxy 0x25E00040 error L-155
- @dekthaiinchina: TH translation [L-108](update thai language additional)
- @Mcost45: Include SL/SR default bindings for single joycons L-149
- @Lorenzo: IT translations L-148
- ProIcons: Fix nn::ec::detail::PurchasedProductInfo to return No purchase information L-114
- Transistor: macOS assets
- Ori: MoltenVK on Metal 1.4
- comex: closed sockets on client exit fix
- yell0wsuit: better implementation for the screenshot fix !43 !44
If you want to help us make Ryubing the best that it can possibly be, hit us up on Discord!
Alternatively, you can consider donating to the project here.
