When connecting multiple controllers of the same model, the first device's name ends with (0), the second with (1), the third with (1), the fourth with (1), and so on. To ensure these names are truly unique, GetUniqueGamepadName is now called recursively.
@MaxLastBreath found that The Legend of Zelda: Tears of the Kingdom experiences inconsistent crashing with a limited JIT cache size. Increasing the cache size seems to help with this, and increasing it shouldn't degrade performance for other titles.
@LotP plans to look this over later, but for now, this should suffice as a fix for affected users.
Fixed LoadGuestApplication hanging when cancelled.
Since startup procedure has technically changed, we should consider testing this with a variety of game formats to ensure regressions do not occur.
- Avalonia to 11.3.14
- FluentAvalonia to 2.5.1
- Gommon to 2.8.1.2
- Microsoft.NET.Test.Sdk to 1.8.5.0
- SDL3-CS to 2026.426.0
- System.IO.Hashing to 10.0.7
no way this was working before, and if it did, just pure luck, unsafe blind copy of bytes as is and zero checks.
i only tested tomodachi, but should fix all games that were crashing on saving screenshots
the crash was happening because the screenshot buffer was bigger than the bitmap buffer, so marshall.copy() was raising an unhandhled expection crashing the emu.
on top of this, because the data was just copied as is, the result image was garbled.
- Fix: Crash when connecting a JoyCon
- Fix: Make controller GUIDs match old SDL2 GUIDs
- Fix: Detect face button layout for gamepads
Co-authored-by: Maki <77-maki@users.noreply.git.ryujinx.app>
- Services now use their actual names when creating processes instead of the generic "Service".
- Services now use their names encapsulated in curly brackets for threads, e.g. {HID}, instead of the default "HLE.OsThread", making it easier to see what is actually happening behind the scenes. Client threads should use <> and host threads should use {}.
- Fixed a bug where initiating services would create extra unneeded servers.
This is part 1 of a series of service and Horizon changes i'm working on. More will follow at a later date.
* Svg.Controls.Avalonia group to 11.3.9.5
* DynamicData to 9.4.31
* Humanizer to 3.0.10
* NUnit to 4.5.1
* NUnit3TestAdapter to 6.2.0
* Ryujinx.LibHac to 0.21.0-alpha.133
* System.IO.Hashing to 10.0.5
If an npad device was checking for if the device was at rest, we called `GetSixAxisSensorLifo()` -- if the npad was of type `None`, it triggered the `NotImplementedException` in that method because `None` doesn't have a gyroscope, and therefore no data attached to it.
Implement nn::ssl::sf::ISslServiceForSystem -> CreateContextForSystem (100)
Ryujinx implements both ISslService and ISslServiceForSystem in one class so we can just return new ISslContext.
Also fixed the incorrect parameter reading order. (CreateContextForSystem basically has same params as CreateContext)
- Add RestartEmulation() method to MainWindowViewModel
- Add 'Restart Emulation' menu item with Ctrl+R keybinding
- Add locale translations for all supported languages
- No confirmation dialog (faster restart experience)
Fix crash caused by reading incorrect size of Splitter data.
In most games the crash doesnt happen if you have nn::audio::AudioRendererParameter VoiceCount aligned to 2, as that causes splitter data to be aligned by 0x10, but otherwise, the alignment by 0x10 done in SplitterContext->Update may exceed SplitterSize (which was previously labeled as Unknown24), causing a crash.
(Crash can be replicated by doing AudioRendererParameter.voiceCount++; in any SDK 20.X game that works, which doesn't cause crash on actual hardware)
(This patch is from a friend who makes mods.)