Commit graph

3810 commits

Author SHA1 Message Date
BeZide
9b108816d2 Merge branch 'libryujinx_bionic_SaveManager' into 'libryujinx_bionic'
Added SaveManager

See merge request kenji-nx/ryujinx!12
2025-12-10 05:21:56 -06:00
LotP
e036837211 Fix kaddressarbiter crash
Fixes a crash when trying to access the thread count on a not (yet) existing list of threads.
2025-12-08 20:26:37 -06:00
LotP
c6deb3800f Memory Changes 3.2
Fixes a few crashes:
- fixes a crash related to waking threads (priorities were wrong).
- fixes a crash from reusing the SetRenderTargets texture array (left-over data causing issues).
- fixes a mistake and an oversight in the buffer system.
  - buffers were getting updated wrong causing bad data to be stored or some times cut.
  - modified ranges would extend past their old buffers, crashing on syncs. Old buffers are now skipped as the new buffers already sync instead.

Introduces pooling in a few more places to increase memory efficiency.

simplified RangeList item logic.
- removed RangeItem by making all the range objects use the I(NonOverlapping)Range interface.
- BufferCache class no longer locks its RangeList, as the list is only ever accessed synchronously.

Small change to how keyboard snapshots are stored.

Increase ThreadedRenderer SpanPool size to fit slightly more data (4MB -> 8MB).
2025-12-08 20:26:36 -06:00
LotP
75220096e7 Update BiquadFilterEffectParameter2.cs
Fixes audio issues in Metroid Prime 4 and other games
2025-12-08 20:26:34 -06:00
KeatonTheBot
7f805f59fd Fix heap size for kernel check and DRAM selections 2025-12-08 20:26:34 -06:00
Princess Piplup
ab571e81b3 Fix SaveCurrentScreenshot
This fixes SaveCurrentScreenshot so it correctly saves the screenshot into the screenshot folder, it's no longer a stub

I was going to add the capture button so all games worked but tbh I only care for spongebob

games tested
Pokemon Z-A: https://files.raychu.xyz/u/1FaUGV.png
Pokemon Violet: https://files.raychu.xyz/u/6swfVS.png
Pokemon Violet: https://files.raychu.xyz/u/JaBBX2.png
Spongebob The Cosmic Shake: https://files.raychu.xyz/u/8z5X2e.png
2025-12-08 20:26:33 -06:00
KeatonTheBot
f6adcd2f65 Revert "Sync thread name on Schedule"
This reverts commit c6230fc02e.
2025-11-23 14:13:39 -06:00
KeatonTheBot
85e05bc7b2 misc: chore: Remove unnecessary usings 2025-11-23 14:13:25 -06:00
KeatonTheBot
bb0658bba9 nuget: bump packages
* Humanizer to 3.0.1

* Microsoft.IdentityModel.JsonWebTokensto 8.15.0

* Microsoft.NET.Test.Sdk to 18.0.1
2025-11-23 13:48:26 -06:00
KeatonTheBot
50b00e3827 Null-conditional assignments, continued 2025-11-23 13:48:20 -06:00
GreemDev
99c2e672c3 Use the new C# 14 null propagation setter 2025-11-23 13:48:18 -06:00
GreemDev
9ea27c3318 Add .NET Runtime version in About window under Ryujinx version. 2025-11-23 13:48:14 -06:00
KeatonTheBot
203ac3a175 feature: .NET 10 2025-11-23 13:48:10 -06:00
Coxxs
bc0c483041 Stub IWriterForApplication: 0 (CreateContextRegistrar)
Fix games that uses ContextRegistrar (e.g. After the socket blocking issue is fixed, Splatoon 3 and other ModuleSystem games will call this when booting, to create a context for the error, after a connection attempt to the server failed.)
2025-11-23 13:47:58 -06:00
LotP
dbaf317f15 Memory changes 3.1
Fixes audio bug causing static noise to play in certain games.

Fixes inputs being dropped after a certain amount of playtime.
2025-11-23 13:47:48 -06:00
GreemDev
9357bb1524 UI: App Library: automatically remove nonexistent autoload/game dirs from the configuration upon load. 2025-11-23 13:47:44 -06:00
KeatonTheBot
734aecd711 Add 43:18 aspect ratio (for 3440x1440 [WQHD], 6880×2880 [UW6K+] users) 2025-11-23 13:44:45 -06:00
GreemDev
1af7ebafc8 Fix socket closing on shutdown
Previously, sockets were only ever closed when the game specifically requested it.

Thanks @comex on GitHub for the patch submitted via the [Ryubing] issues page.

Co-Authored-By: comex <47517+comex@users.noreply.github.com>
2025-11-23 13:43:46 -06:00
KeatonTheBot
c8a6958ef3 nuget: bump packages
* Gommon to 2.8.0.1

* Microsoft.NET.Test.Sdk to 18.0.0

* Newtonsoft.Json to 13.0.4 (reduces trim warnings by 56)

* Ryujinx.LibHac to 0.21.0-alpha.126

* System group to 9.0.10

* UnicornEngine.Unicorn to 2.1.4-a40db6c
2025-11-23 13:43:41 -06:00
KeatonTheBot
377805579b misc: Tweak NullReferenceException fixes 2025-11-23 13:43:15 -06:00
LotP
35bced8527 Memory changes 3
General memory improvements to decrease GC pressure and frequency.

Pool big arrays and objects that are created and deleted often.

Skip data copies when they aren't needed.

Inline flag checks to skip unneeded allocations.

From my testing the performance is about the same, but the GC frequency is much lower and collection is faster causing less and smaller spikes.
2025-11-23 13:43:14 -06:00
KeatonTheBot
c1e24961f9 misc: Use nint/nuint instead of IntPtr/UIntPtr 2025-11-23 13:42:38 -06:00
GreemDev
2d720fea03 hle: Throw a ServiceNotImplementedException instead of ArgumentException if any number arguments provided to ILibraryAppletAccessor are nonzero 2025-11-23 13:40:16 -06:00
LotP
65c740ec4a ILibraryAppletAccessor:90 tweak
Minor update to logic to make our work easier in the future.
2025-11-23 13:40:11 -06:00
BeZide93
6447d3512c changed comments to english 2025-11-02 00:53:58 +01:00
BeZide93
fafbaedf98 Added Save Manager 2025-10-28 10:00:06 +01:00
BeZide93
dd542f75b9 Added Save Manager 2025-10-28 08:57:47 +01:00
sh0inx
0b8d1d5816 HLE: Stub ILibraryAppletAccessor Unknown90
This lets games such as The Legend of Zelda: Tears of the Kingdom (v1.4.2) and other SDK 20+ games successfully circumvent a crash when calling an applet.

Example: No controller connected on boot -> calls Controller Applet -> no stub = crash.
2025-10-27 13:19:55 -05:00
KeatonTheBot
78db4c365f Code cleanup: Audio effects fix and audio object pooling
Commit e1b6cb71
2025-10-27 09:18:01 -05:00
LotP
1bb1c7bba8 gpu allocation optimizations
ObjectPool now uses ConcurrentBag instead if ConcurrentStack, as it has a smaller memory footprint.

Fix compiler warnings related to Audio Command Pools.

Switch gpu command initialization to use pointers, that way skipping the allocation of the command which is unnecessary.

Skip byte array allocation in Ioctl2/3 if it isn't needed (if the source data is all continuous we don't need to copy it to make it continuous).
2025-10-27 09:16:23 -05:00
LotP
e1b6cb71f8 audio effects fix and audio object pooling
Revert and reimplement Float BiquadFilterEffect support, fixes infinite load issues in a few games like Splatoon 3.

Fix incorrect string check with the new thread naming system.

Implement object pooling for all Audio Commands and a few other audio related objects and use a growing error list for updating wave buffers instead of always allocating space for 8 errors.
2025-10-27 09:16:23 -05:00
Coxxs
f34ab9f043 Fix application list loads slowly when RyuLDN is enabled
Currently, application list will not show until ApplicationLibrary_LdnGameDataReceived calls ViewModel.RefreshView();, forcing a refresh. This makes application list load slowly when RyuLDN is enabled.
2025-10-27 09:16:23 -05:00
Coxxs
ebdc2a9e81 Skip directories (and do not RecurseSubdirectories) when finding the icon fallback
Newer applications have a folder for ounce in the Control nca. This fixes Ryujinx trying to open a folder as a file, causing another exception, when trying to find the icon fallback.
2025-10-27 09:16:23 -05:00
KeatonTheBot
ebeb6e146c Fix Ori 2 not launching (revert Possible NullReferenceException change) 2025-10-27 09:16:23 -05:00
GreemDev
28b4f45645 gpu: tweak: Do not log missing Votevtg implementation. 2025-10-27 09:16:23 -05:00
GreemDev
f3931a789a chore: fix in-code typos 2025-10-27 09:16:23 -05:00
Coxxs
42369a22a3 Implement IUserServiceCreator: 1 (CreateClientProcessMonitor)
This should fix nn::ldn::Initialize in games that use SDK 18 or higher.
2025-10-27 09:16:23 -05:00
Coxxs
7b801bb9d3 Update LoadIdTokenCache for 19.0.0+
This should stub nn::account::LoadNetworkServiceAccountIdTokenCache for games that use SDK 19 or higher.
2025-10-27 09:16:23 -05:00
KeatonTheBot
457b7e77de Update NUnit to 4.4.0
* NUnit3TestAdapter to 5.2.0

* Rename Assert class to ClassicAssert to align with NUnit 4.x changes
2025-10-27 09:16:23 -05:00
Xam
169712a9e8 Fix duplicate volume and mode change events in AppHost 2025-10-27 09:16:22 -05:00
Xam
a187ec09d7 Horizon: Audio: HwopusIpcServer: fix random crashes regression in Pokemon Quest 2025-10-27 09:16:22 -05:00
KeatonTheBot
6d9e7fea75 12 GiB heap crash workaround
Using resolution mods, heaps past 8 GiB work in some games (like LoZ: TotK) and not in others (like SMP Jamboree). Setting the heap to a hard limit of 8 GiB on the 10 & 12 GiB DRAM options seems to be the safe bet right now until a better solution is found.
2025-10-27 09:16:22 -05:00
GreemDev
ea89fc28da misc: Update Ryujinx.LibHac
Match the behavior with AMS: c8e39a54d2/libraries/libstratosphere/source/fssystem/fssystem_aes_ctr_counter_extended_storage.cpp (L93)

This should fix the error ResultFs.InvalidArgument (2002-6001) in some nca.

Co-authored-by: Coxxs <58-coxxs@users.noreply.git.ryujinx.app>
2025-10-27 09:16:22 -05:00
KeatonTheBot
7242cb2449 Restore original application pool sizes for DRAM selections 2025-10-27 09:16:22 -05:00
LotP
4f101170f0 12 GiB heap support
The heap was limited to 6 GiB no matter the memory setting, causing memory configurations above 8 GiB to not actually affect the heap size.

Now when the memory config is set to [10 or] 12 GiB the heap also allocates 12 GiB.

The SetHeapSize SysCall will now allow heap sizes up to 12 GiB (technically slightly less).

Co-authored-by: KeatonTheBot <keaton@ryujinx.app>
2025-10-27 09:16:22 -05:00
Coxxs
fc7932ad27 Flush the error log before exit
Currently, some logs can be missing when a fatal error occurs (especially GuestBrokeExecutionException).

This MR attempts to flush logs to console and file before process exit.
2025-10-27 09:16:22 -05:00
GreemDev
0c41346400 UI: Move IgnoreControllerApplet to the System config section object 2025-10-27 09:16:22 -05:00
LotP
c6230fc02e Sync thread name on Schedule
Set the name of the HostThread on Schedule() if the thread name isn't already set and if we fetch a valid thread name from the guest thread.
2025-10-27 09:16:21 -05:00
LotP
1ef09717d2 SDK20 and REV15 support
* Fixed an issue where games would boot loop because of an incorrect HID state.

  * Turns out the SamplingNumber of the atomic input storage doesn't match the SamplingNumber of the input state held by the atomic storage, instead it is exactly double the value in the input state.

* Added new Condition struct to the HID Shared memory and populate it with dummy data to fix the no-controller crash (already merged).

* The audio renderer has been mostly updated to rev15, allowing rev15 games to launch.

  * Biquad filters now use floats.

  * Several structures have been renamed to match the SDK names, making it easier to compare functionality. A few names are still missing and will be changed at a later date.

  * The new commands from rev15 have been added to the CommandType enum, but they are still missing from the code itself.

    * Due to changes in the SDK layout, the time estimation functions are either missing or very well hidden (or Ghidra search functionality is useless). We can't fully implement the new commands until the timing data has been located.

  * A few minor tweaks to the code have been made to more accurately match the SDK.
2025-10-27 08:50:57 -05:00
KeatonTheBot
41eb6f5dc4 Android: Update to 2.0.5 2025-10-07 15:17:50 -05:00