aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE
AgeCommit message (Collapse)Author
2024-09-18Replace passing by IMemoryOwner<byte> with passing by concrete ↵jhorv
MemoryOwner<byte> (#7171) * refactor(perf): pass MemoryOwner<byte> around as itself rather than IMemoryOwner<byte> * fix(perf): get span via MemoryOwner<byte>.Span property instead of through Memory property * fix: incorrect comment change
2024-09-17Change image format view handling to allow view incompatible formats (#7311)gdkchan
* Allow creating texture aliases on texture pool * Delete old image format override code * New format incompatible alias * Missing bounds check * GetForBinding now takes FormatInfo * Make FormatInfo struct more compact
2024-09-17Change 6GB DRAM expansion to 8GB (#7313)gdkchan
* Change 6GB DRAM expansion to 8GB * Update texts and tooltips
2024-08-31Make HLE project AOT friendly (#7085)Emmanuel Hansen
* add hle service generator remove usage of reflection in device state * remove rd.xml generation * make applet manager reflection free * fix typos * fix encoding * fix style report * remove rogue generator reference * remove double assignment
2024-08-31Replace ImageSharp with SkiaSharp everywhere (#7030)Emmanuel Hansen
* replace ImageSharp with SkiaSharp for inline keyboard applet rendering * fix avalonia inline keyboard input * remove image sharp from gtk3 project * add skiasharp linux assets * fix whitespace * fix format * fix ico image offset when saving shortcut to windows
2024-08-17nim:eca : Stub CreateServerInterface2 (#7128)Tsubasa0504
* Add files via upload * Add files via upload * Update src/Ryujinx.HLE/HOS/Services/Nim/IShopServiceAccessServerInterface.cs --------- Co-authored-by: Ac_K <Acoustik666@gmail.com>
2024-07-31Fix off-by-one on audio renderer PerformanceManager.GetNextEntry (#7139)gdkchan
2024-07-22Update kernel GetInfo SVC for firmware 18.0.0 (#7075)gdkchan
* Implement kernel GetInfo AliasRegionExtraSize * Implement IsSvcPermitted * Remove warning supressions that are no longer needed * Remove useless cast
2024-07-21Fix checking for the wrong metadata files for applications launched with a ↵TSRBerry
different program index (#7055) * Fix checking for the wrong update metadata file * Apply the same fix for dlc.json * Use the base application ids for updates and DLCs in the GUI too This shouldn't actually change anything, since the program index part of the application id should always be 0 for all applications currently seen by the GUI. This was just done for completeness.
2024-07-20Make sure TryGetApplicationsFromFile() doesn't throw exceptions anymore (#7046)TSRBerry
* Add docstrings for exceptions to methods near TryGetApplicationsFromFile() * Make sure TryGetApplicationsFromFile() doesn't throw exceptions anymore * Add missing filePath to ApplicationData when loading applications from ExeFS * Fix typo Co-authored-by: riperiperi <rhy3756547@hotmail.com> --------- Co-authored-by: riperiperi <rhy3756547@hotmail.com>
2024-07-16Add support for multi game XCIs (second try) (#6515)TSRBerry
* Add default values to ApplicationData directly * Refactor application loading It should now be possible to load multi game XCIs. Included updates won't be detected for now. Opening a game from the command line currently only opens the first one. * Only include program NCAs where at least one tuple item is not null * Get application data by title id and add programIndex check back * Refactor application loading again and remove duplicate code * Actually use patch ncas for updates * Fix number of applications found with multi game xcis * Don't load bundled updates from multi game xcis * Change ApplicationData.TitleId type to ulong & Add TitleIdString property * Use cnmt files and ContentCollection to load programs * Ava: Add updates and DLCs from gamecarts * Get the cnmt file from its NCA * Ava: Identify bundled updates in updater window * Fix the (hopefully) last few bugs * Add idOffset parameter to GetNcaByType * Handle missing file for dlc.json * Ava: Shorten error message for invalid files * Gtk: Add additional string for bundled updates in TitleUpdateWindow * Hopefully fix DLC issues * Apply formatting * Finally fix DLC issues * Adjust property names and fileSize field * Read the correct update file * Fix wrong casing for application id strings * Rename TitleId to ApplicationId * Address review comments * Apply suggestions from code review Co-authored-by: gdkchan <gab.dark.100@gmail.com> * Gracefully fail when loading pfs for update and dlc window * Fix applications with multiple programs * Fix DLCWindow crash on GTK * Fix some GUI issues * Remove IsXci again * Don't add duplicates to update/dlc windows * Avoid double lookup * Preserve DLC enabled state for bundled DLCs * Fix DLCWindow not opening using GTK * Fix missing information when loading applications from file * Address review feedback Rename ContentCollection to ContentMetaData Fix casing issues in log messages Use null as the default value for updatePath * Fix re-adding bundled DLCs every time * Fix bundled DLCs disappearing * Abstract common code to open application pfs * Remove unused imports * Fix file exists check when loading DLCs * Load bundled DLCs only using dlc.json * Load AoC items correctly * Add all DLCs from a PFS * Add argument to launch a specific application id * Use application-id argument for shortcuts if necessary * Return the application id from the control NCA if possible * GetApplicationInformation: Don't overwrite application ids Move SaveDataOwnerId check to the top, since it seems to be more reliable. * Get application ids from CNMT again This commit reverts some parts of 61615b8f0d6f90ae86778958ddc38eaf6dc280ab. Since the issue wasn't actually related to the application id in CMNTs, we can remove the wrong assumptions. * Revert erroneous axaml change from adca8900 * Rename title to application * Wrap nsp/pfs0 case with curly braces * Check if _applicationData.ControlHolder.ByteSpan is zeros only once * Catch exceptions while loading applications from nsps --------- Co-authored-by: gdkchan <gab.dark.100@gmail.com>
2024-07-15replace ByteMemoryPool usage in Ryujinx.HLE (#6953)jhorv
2024-06-25SetProcessMemoryPermission address and size are always 64-bit (#6977)Rafa
2024-06-16fix: for pooled memory used for reference types, clear it on return to the ↵jhorv
pool so that it doesn't prevent GC of the instances it contained (#6937)
2024-05-22Kernel: Wake cores from idle directly rather than through a host thread (#6837)riperiperi
* Kernel: Wake cores from idle directly rather than through a host thread Right now when a core enters an idle state, leaving that idle state requires us to first signal the core's idle thread, which then signals the correct thread that we want to run on the core. This means that in a lot of cases, we're paying double for a thread to be woken from an idle state. This PR moves this process to happen on the thread that is waking others out of idle, instead of an idle thread that needs to be woken first. For compatibility the process has been kept as similar as possible - the process for IdleThreadLoop has been migrated to TryLeaveIdle, and is gated by a condition variable that lets it run only once at a time for each core. A core is only considered for wake from idle if idle is both active and has been signalled - the signal is consumed and the active state is cleared when the core leaves idle. Dummy threads (just the idle thread at the moment) have been changed to have no host thread, as the work is now done by threads entering idle and signalling out of it. This could put a bit of extra work on threads that would have triggered `_idleInterruptEvent` before, but I'd expect less work than signalling all those reset events and the OS overhead that follows. Worst case is that other threads performing these signals at the same time will have to wait for each other, but it's still going to be a very short amount of time. Improvements are best seen in games with heavy (or very misguided) multithreading, such as Pokemon: Legends Arceus. Improvements are expected in Scarlet/Violet and TOTK, but are harder to measure. Testing on Linux/MacOS still to be done, definitely need to test more games as this affects all of them (obviously) and any issues might be rare to encounter. * Remove _idleThread entirely * Use spinwait so we don't completely blast the CPU with cmpxchg * Didn't I already do this * Cleanup
2024-05-14HID: Stub IHidServer: 134 (SetNpadAnalogStickUseCenterClamp) (#6664)Tsubasa0504
* Add files via upload * Update IHidServer.cs mistakes... * format how do i do it * Update src/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs Co-authored-by: Agatem <agaatem@outlook.com> * Update src/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs Co-authored-by: Agatem <agaatem@outlook.com> * bruh * Apply suggestions from code review Co-authored-by: gdkchan <gab.dark.100@gmail.com> * use readuint32 instead * second thought * i hope it works thanks someone higher up with the same thing * pid * Apply suggestions from code review Co-authored-by: Ac_K <Acoustik666@gmail.com> * styles i think * Apply suggestions from code review Co-authored-by: makigumo <makigumo@users.noreply.github.com> --------- Co-authored-by: Agatem <agaatem@outlook.com> Co-authored-by: gdkchan <gab.dark.100@gmail.com> Co-authored-by: Ac_K <Acoustik666@gmail.com> Co-authored-by: makigumo <makigumo@users.noreply.github.com>
2024-04-28HID: Correct direct mouse deltas (#6736)riperiperi
The delta position of the mouse should be the difference between the current and last position. Subtracting the last deltas doesn't really make sense. Won't implement pointer lock for first person games, but might stop some super weird behaviour with the mouse values appearing totally random.
2024-04-21Use pooled memory and avoid memory copies (#6691)jhorv
* perf: use ByteMemoryPool * feat: KPageTableBase/KPageTable new methods to read and write `ReadOnlySequence<byte>` * new: add IWritableBlock.Write(ulong, ReadOnlySequence<byte>) with default impl * perf: use GetReadOnlySequence() instead of GetSpan() * perf: make `Parcel` IDisposable, use `ByteMemoryPool` for internal allocation, and make Parcel consumers dispose of it * remove comment about copySize * remove unnecessary Clear()
2024-04-19Do not compare Span<T> to 'null' or 'default' (#6683)Marco Carvalho
2024-04-19Update to new standard for volatility operations (#6682)Marco Carvalho
2024-04-11Allow BSD sockets Poll to exit when emulation ends (#6650)gdkchan
2024-04-10Revert "Update StoreConstantToMemory to match StoreConstantToAddress on ↵gdkchan
value…" (#6649) This reverts commit 22e3ff06b51db0fa72e9f2dc2aee395a5d1aa2df.
2024-04-11Update StoreConstantToMemory to match StoreConstantToAddress on value read ↵WilliamWsyHK
(#6642)
2024-04-07Enhance Error Handling with Try-Pattern Refactoring (#6610)Marco Carvalho
* Enhance Error Handling with Try-Pattern Refactoring * refactoring * refactoring * Update src/Ryujinx.HLE/FileSystem/ContentPath.cs Co-authored-by: gdkchan <gab.dark.100@gmail.com> --------- Co-authored-by: gdkchan <gab.dark.100@gmail.com>
2024-04-07Replacing the try-catch block with null-conditional and null-coalescing ↵Marco Carvalho
operators (#6612) * Replacing the try-catch block with null-conditional and null-coalescing operators * repeating
2024-04-06Delete old 16KB page workarounds (#6584)gdkchan
* Delete old 16KB page workarounds * Rename Supports4KBPage to UsesPrivateAllocations * Format whitespace * This one should be false too * Update XML doc
2024-04-06Add mod enablement status in the log message (#6571)WilliamWsyHK
2024-04-05ts: Migrate service to Horizon project (#6514)Ac_K
* ts: Migrate service to Horizon project This PR migrate the `ts` service (stored in `ptm`) to the Horizon project: - It stubs all known IPCs. - IpcServer consts are checked by RE. Closes #6480 * Fix args
2024-03-26Implement host tracked memory manager mode (#6356)gdkchan
* Add host tracked memory manager mode * Skipping flush is no longer needed * Formatting + revert unrelated change * LightningJit: Ensure that dest register is saved for load ops that do partial updates * avoid allocations when doing address space lookup Add missing improvement * IsRmwMemory -> IsPartialRegisterUpdateMemory * Ensure we iterate all private allocations in range * PR feedback and potential fixes * Simplified bridges a lot * Skip calling SignalMappingChanged if Guest is true * Late map bridge too * Force address masking for prefetch instructions * Reprotection for bridges * Move partition list validation to separate debug method * Move host tracked related classes to HostTracked folder * New HostTracked namespace * Move host tracked modes to the end of enum to avoid PPTC invalidation --------- Co-authored-by: riperiperi <rhy3756547@hotmail.com>
2024-03-16chore: remove repetitive words (#6500)standstaff
Signed-off-by: standstaff <zhengxingru@yeah.net>
2024-03-08Update dependencies from SixLabors to the latest version before the license ↵TSRBerry
change (#6440) * nuget: bump SixLabors.ImageSharp from 1.0.4 to 2.1.3 (#3976) * nuget: bump SixLabors.ImageSharp from 1.0.4 to 2.1.3 Bumps [SixLabors.ImageSharp](https://github.com/SixLabors/ImageSharp) from 1.0.4 to 2.1.3. - [Release notes](https://github.com/SixLabors/ImageSharp/releases) - [Commits](https://github.com/SixLabors/ImageSharp/compare/v1.0.4...v2.1.3) --- updated-dependencies: - dependency-name: SixLabors.ImageSharp dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * Update for 2.x changes Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mary <mary@mary.zone> * Update SixLabors.ImageSharp to 2.1.7 This is the latest version we can update to without the license change. * Update SixLabors.ImageSharp.Drawing to v1.0.0 This is the latest version we can update to without the license change. --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mary <mary@mary.zone>
2024-02-22Migrate Audio service to new IPC (#6285)gdkchan
* Migrate audren to new IPC * Migrate audout * Migrate audin * Migrate hwopus * Bye bye old audio service * Switch volume control to IHardwareDeviceDriver * Somewhat unrelated changes * Remove Concentus reference from HLE * Implement OpenAudioRendererForManualExecution * Remove SetVolume/GetVolume methods that are not necessary * Remove SetVolume/GetVolume methods that are not necessary (2) * Fix incorrect volume update * PR feedback * PR feedback * Stub audrec * Init outParameter * Make FinalOutputRecorderParameter/Internal readonly * Make FinalOutputRecorder IDisposable * Fix HardwareOpusDecoderManager parameter buffers * Opus work buffer size and error handling improvements * Add AudioInProtocolName enum * Fix potential divisions by zero
2024-02-22Ensure service init runs after Horizon constructor (#6342)gdkchan
2024-02-17hid: Stub SetTouchScreenResolution (#6322)Exhigh
* hid: Implement SetTouchScreenResolution * Fix Tomb Raider I-III Remastered from crashing without enabling Ignore Missing Services * PR Feedback: Update Comments
2024-02-15Fix PermissionLocked check on UnmapProcessCodeMemory (#6314)gdkchan
2024-02-15Stub VSMS related ioctls (#6313)gdkchan
* Stub VSMS related ioctls * Clean up usings
2024-02-11Infra: Capitalisation Consistency (#6296)Isaac Marovitz
* Rename Ryujinx.UI.Common * Rename Ryujinx.UI.LocaleGenerator * Update in Files AboutWindow * Configuration State * Rename projects * Ryujinx/UI * Fix build * Main remaining inconsistencies * HLE.UI Namespace * HLE.UI Files * Namespace * Ryujinx.UI.Common.Configuration.UI * Ryujinx.UI.Common,Configuration.UI Files * More instances
2024-02-06AccountService: Cache token data (#6260)riperiperi
* AccountService: Cache token data This method appears to indicate that the token returned should be cached. I've made it so that it generates a token that lasts until its expiration time, and reuses it on subsequent calls. * Private naming convention
2024-02-03Limit remote closed session removal to SM service (#6248)gdkchan
2024-02-02Ensure SM service won't listen to closed sessions (#6246)gdkchan
* Ensure SM service won't listen to closed sessions * PR feedback
2024-01-29Migrate friends service to new IPC (#6174)gdkchan
* Migrate friends service to new IPC * Add a note that the pointer buffer size and domain counts are wrong * Wrong length * Format whitespace * PR feedback * Fill in structs from PR feedback * Missed that one * Somehow forgot to save that one * Fill in enums from PR review * Language enum, NotificationTime * Format whitespace * Fix the warning
2024-01-29Mod: Do LayeredFs loading Parallel to improve speed (#6180)Ac_K
* Mod: Do LayeredFs loading Parallel to improve speed This fixes and superseed #5672 due to inactivity, nothing more. (See original PR for description) Testing are welcome. Close #5661 * Addresses gdkchan's feedback * commit to test mako change * Revert "commit to test mako change" This reverts commit 8b0caa8a21db298db3dfcbe5b7e9029c4f066c46.
2024-01-29Fix NRE when calling GetSockName before Bind (#6206)gdkchan
2024-01-26Ava UI: Mod Manager Fixes (#6179)Isaac Marovitz
* Fix string format + Crash * Better Logging * Properly Delete Mods Rename * Catch when trying to access bad directory
2024-01-26Fs: Log when Commit fails due to PathAlreadyInUse (#6178)Ac_K
* Fs: Log when Commit fails due to PathAlreadyInUse This fixes and superseed #5418, nothing more. (See original PR for description) Co-Authored-By: James R T <jamestiotio@gmail.com> * Update IFileSystem.cs --------- Co-authored-by: James R T <jamestiotio@gmail.com>
2024-01-26Ava UI: Mod Manager (#4390)Isaac Marovitz
* Let’s start again * Read folders and such * Remove Open Mod Folder menu items * Fix folder opening, Selecting/deselecting * She works * Fix GTK * AddMod * Delete * Fix duplicate entries * Fix file check * Avalonia 11 * Style fixes * Final style fixes * Might be too general * Remove unnecessary using * Enable new mods by default * More cleanup * Fix saving metadata * Dont deseralise ModMetadata several times * Avalonia I hate you * Confirmation dialgoues * Allow selecting multiple folders * Add back secondary folder * Search both paths * Fix formatting * Apply suggestions from code review Co-authored-by: Ac_K <Acoustik666@gmail.com> * Rename Title to Application * Generic locale key * Apply suggestions from code review Co-authored-by: Ac_K <Acoustik666@gmail.com> * Locale Updates * GDK Feedback * Fix --------- Co-authored-by: Ac_K <Acoustik666@gmail.com>
2024-01-25Horizon: Implement arp:r and arp:w services (#5802)Ac_K
* Horizon: Implement arp:r and arp:w services * Fix formatting * Remove HLE arp services * Revert "Remove HLE arp services" This reverts commit c576fcccadb963db56b96bacabd1c1ac7abfb1ab. * Keep LibHac impl since it's used in bcat * Addresses gdkchan's feedback * ArpApi in PrepoIpcServer and remove LmApi * Fix 2 * Fixes ArpApi init * Fix encoding * Update PrepoService.cs * Fix prepo
2024-01-25ssl: Work around missing remote hostname for authentication (#5988)TSRBerry
* ssl: Retrieve remote hostnames if the provided hostname is empty This avoids crashing with an AuthenticationException. * ssl: Remove unused variable from RetrieveHostName
2024-01-24Use unix timestamps on GetFileTimeStampRaw (#6169)gdkchan
2024-01-22Add a separate device memory manager (#6153)gdkchan
* Add a separate device memory manager * Still need this * Device writes are always tracked * Device writes are always tracked (2) * Rename more instances of gmm to mm