* Improve indication of emulation being paused by the User
* Use localised for Paused
* Backup original title - PR comments fix
* Add common helper method to assemble App title
* feat: add nanosleep for linux and macos
* Add Windows 0.5ms sleep
- Imprecise waits for longer waits with clock alignment
- 1/4 the spin time on vsync timer
* Remove old experiment
* Fix event leak
* Tweaking for MacOS
* Linux tweaks, nanosleep vsync improvement
* Fix overbias
* Cleanup
* Fix realignment
* Add some docs and some cleanup
NanosleepPool needs more, Nanosleep has some benchmark code that needs removed.
* Rename "Microsleep" to "PreciseSleep"
Might have been confused with "microseconds", which no measurement is performed in.
* Remove nanosleep measurement
* Remove unused debug logging
* Nanosleep Pool Documentation
* More cleanup
* Whitespace
* Formatting
* Address Feedback
* Allow SleepUntilTimePoint to take EventWaitHandle
* Remove `_chrono` stopwatch in SurfaceFlinger
* Move spinwaiting logic to PreciseSleepHelper
Technically, these achieve different things, but having them here makes them easier to reuse or tune.
* Enable copy dependency between RGBA8 and RGBA32 formats
* Take packed flag into account for texture formats
* Account for widths not being a multiple of each other
* Don't try to alias depth textures as color, fix log condition
* PR feedback
This package seems to be required for triming now but isn't restored by default.
This changes the flatpak pusher to publish so we are sure that the package is in the cache.
Signed-off-by: Mary Guillemard <mary@mary.zone>
* Change TargetFramework to net8.0
* Disable info messages
* Fix warings
* Disable additional analyzer messages
* Fix typo
* Add whitespace
* Fix ref vs in warnings
* Use explicit [In] on array parameters
* No need to guard Remove with Contains
* Use 'ArgumentOutOfRangeException.ThrowIf...' instead of explicitly throwing a new exception instance
* Bump .NET SDK version
* Enable JsonSerializerIsReflectionEnabledByDefault
* Use 8.0.100 GA release
* Bump System package versions
---------
Co-authored-by: Zoltan Csizmadia <Zoltan.Csizmadia@vericast.com>
* 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
* Fix formatting issues
* 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
---------
Co-authored-by: gdkchan <gab.dark.100@gmail.com>
* remove duplicate basePath arg, add --fullscreen arg
* Changing FriendlyName to set "Ryujinx" text
* Fix GetArgsString using the base path
* Change desktop path to the Applications folder when creating shortcut on Mac
Co-authored-by: Nicko Anastassiu <134955950+nickoanastassiu@users.noreply.github.com>
* Move Create Shortcut button to top of context menu
---------
Co-authored-by: TSR Berry <20988865+TSRBerry@users.noreply.github.com>
Co-authored-by: Nicko Anastassiu <134955950+nickoanastassiu@users.noreply.github.com>
* Implement reprotect method on virtual memory manager (currently stubbed)
* Force all exclusive memory accesses to be ordered on AppleHv
* Format whitespace
* Fix test build
* Fix comment copy/paste
* Fix wrong bit for isLoad
* Update src/Ryujinx.Cpu/AppleHv/HvMemoryManager.cs
Co-authored-by: riperiperi <rhy3756547@hotmail.com>
---------
Co-authored-by: riperiperi <rhy3756547@hotmail.com>
* Fixed formatting/parsing issues with ApplicationData properties TimePlayed, LastPlayed, and FileSize
Replaced double-based TimePlayed property with TimeSpan?-based one in ApplicationData and ApplicationMetadata
Added a migration for TimePlayed, just like in #4861
Consolidated ApplicationData's FileSize* properties into one FileSize property
Added a formatting/parsing helper class ValueFormatUtils for TimeSpans, DateTimes, and file sizes
Added new value converters for TimeSpans and file sizes for the Avalonia UI
Added TimePlayedSortComparer
Fixed sort order in LastPlayedSortComparer
Fixed sort order for ApplicationData fields TimePlayed, LastPlayed, and FileSize
Fixed crashes caused by SortHelper
Replaced SystemInfo.ToMiBString with ToGiBString backed by ValueFormatUtils
Replaced SaveModel.GetSizeString() with ValueFormatUtils
* Additional ApplicationLibrary changes that got lost in the last commit
* Removed unneeded usings
* Removed converters as they are no longer needed
* Updated comment on FormatDateTime
* Removed base10 parameter from ValueFormatUtils
FormatFileSize now always returns base 2 values with base 10 units
Made ParseFileSize capable of parsing both base 2 and base 10 units
* Removed nullable attribute from TimePlayed property
Centralized TimePlayed update code into ApplicationMetadata
* Changed UpdateTimePlayed() to use TimeSpan logic
* Removed JsonIgnore attributes from ApplicationData
* Implemented requested format changes
* Fixed mistakes in method documentation comments
* Made it so the Last Played value "Never" is localized in the Avalonia UI
* Implemented suggestions
* Remove unused import
* Did a comment refinement pass in ValueFormatUtils.cs
* Reordered ValueFormatUtils methods and sorted them into #regions
* Integrated functionality from #5056
Also removed Logger print from last_played migration code
* Implemented suggestions
* Moved ValueFormatUtils and SystemInfo to namespace Ryujinx.Ui.Common
* common: Respect proper value format convention and use base10 by default
This could be discuss again in another issue/PR, for now revert to the previous behavior.
Signed-off-by: Mary Guillemard <mary@mary.zone>
---------
Signed-off-by: Mary Guillemard <mary@mary.zone>
Co-authored-by: TSR Berry <20988865+TSRBerry@users.noreply.github.com>
Co-authored-by: Mary Guillemard <mary@mary.zone>
Added a KEvent for each ServerBase which signals whenever a session is added to the _sessions list, which allows it to rerun the ReplyAndReceive with the new session handle.
This greatly reduces the presence of ServerBase on profiles, especially of games that aren't particularly busy. It should also increase responsiveness when adding session objects, as it doesn't take at most 1ms for them to start working.
It also reduces the load on KTimeManager, which could allow it to spin less often. I have noticed that a bunch of games still do 1ms waits (they actually request a bit less than 1ms), so they still end up spinning to the next millisecond. Maybe for waits like this, it could attempt to nudge the timepoints to snap to each other when they're close enough, and also snap to whole millisecond waits when close enough.
* Add relevant files from private repo
Hopefully I didn't miss anything.
JsonHelper.cs is a debug only change
I only added line 810-812 in IUserLocalCommunicationService.cs
for the new Spacemeowx2Ldn case.
* Add a small README.md
just for fun
* Add note about NetCoreServer update to 5.1.0
* Fix a few issues
Fix usage of wrong broadcast address
Log warning if empty userstring was received
and don't add them to outNetworkInfo
* Add warning about incompatibility with public LDN version
* Add missing changes from old_master
* Adjust ldn_mitm for Ryujinx/Ryujinx#3805
* ldn: Adapt to changes from #4582
* ldn_mitm: First cleanup iteration
* ldn_mitm: Second cleanup iteration
* Credit spacemeowx2 in README.md
* Address first review comments by AcK
Adhere to Ryujinx coding style
Remove leftover log calls
Change category of a few log calls
Remove leftover debug notes
* Replace return type with void for methods always returning true
* Address first review comments by riperiperi
Purely stylistic changes:
- Adhere to naming style for internal fields
- Improve code formatting
* Throw InvalidOperationException when calling wrong ldn proxy methods
* Add missing newlines in LanDiscovery.Scan()
* Fix Linux not receiving broadcast packets
* Remove ILdnUdpSocket
It's very unlikely that we will ever need a udp client.
Thus we should simplify LanDiscovery initialization
and remove the parameter of InitUdp().
* ldn_mitm: Improve formatting
* fixup! Fix Linux not receiving broadcast packets
By opening the udp server on 'LocalBroadcastAddr'
Linux refused to answer packets going to LocalAddr.
So in order to fix this problem, Linux now opens two LdnProxyUdpServers.
* ldn_mitm: Fix assigning incorrect NodeIds
This just made connecting a lot more reliable! Thanks @riperiperi
* Fix node ids when leaving/joining
* Change NodeId behaviour to work like RyuLdn
* Change timing for accept and network info being reported.
* Wait for connection before sending anything.
* Remove ConnectAsync() from ILdnTcpSocket
* Only broadcast scan responses if we're hosting a network.
* Fix some filters, scan network duplication.
* Fix silly mistake
* Don't die on duplicates, just replace.
* Lock around node updates
These can happen from multiple threads.
* ldn_mitm: Fix namespaces for Types
Improve formatting
Add warning if compression failed
* Add quicker scan, forgetting networks that disappear.
* Always force a network sync when updating AdvertiseData
* Fix TCP frame size being too large for compressed frames
* Allow ldn_mitm to pass -1 id for room localcommunicationids.
* ldn_mitm: Match server socket options
* ldn_mitm: Use correct socket options
* ldn_mitm: Remove TCP broadcast socket options
* config: Rename Spacemeowx2Ldn to LdnMitm
* ldn_mitm: Generate random fake SSID
* ldn_mitm: Adjust logging statements/levels
* ldn_mitm: Add missing Stop() call for udp2
* ldn_mitm: Adjust formatting
* ldn_mitm: Add stub comments and adjust existing ones
* ldn: Add LdnConst class & set tx/rx buffer sizes correctly
* Move LdnConst out of UserServiceCreator
Replace a few values with LdnConsts
* ldn: Adjust namespaces and client names
* ldn_mitm: Adjust formatting
* ldn: Rename RyuLdn to LdnRyu
* Replace LanProtocol.Read() refs with scoped refs
* Add MIT license for ldn_mitm
* Clarify that network interface is also used for LDN
Although it's currently only used by ldn_mitm,
it would probably be more confusing to exclude RyuLdn there.
* Fix giving a station node id 0
* Update Nuget packages
* Remove LdnHelper
* Add update functions for EnableInternetAccess setting
* ldn: Log MultiplayerMode and DisableP2P
* ldn: Adjust namespaces
* Apply formatting
* Conform to Ryujinx code style
* Remove ldn_mitm from THIRDPARTY.md
It shouldn't have been there in the first place.
* Improve formatting
---------
Co-authored-by: riperiperi <rhy3756547@hotmail.com>
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Update to LibHac v0.19.0
- PartitionFileSystem classes now fully match Nintendo's implementation. Current code creating a PartitionFileSystem now need to use the Initialize method.
- Implementing nn::gcsrv and nn::sdmmcsrv now means the FS server now uses that abstraction instead of the old one where we passed in an IDeviceOperator.
* Add GetFileSystemAttribute
* So much boilerplate
* Slow and steady
* Restructure + Ack suggestions
* Restructure + Ack suggestions
* Restructure
* Clean
* Propogate those fields i forgot about
* It builds
* Progress
* Almost there
* Fix stupid mistake
* Fix more stupid mistakes
* Actually fix fuck ups
* Start localising
* r/therestofthefuckingowl
* Localise ButtonKeyAssigner
* Are you feeling it now mr krabs
* We’re done at last
* Crimes against code
* Try me in the Hague
* Please be quiet
* Crimes are here to stay
* Dispose stuff
* Cleanup a couple things
* Visual fixes and improvements
One weird bug
* Fix rebase errors
* Fixes
* Ack Suggestions
Remaining ack suggestions
Update src/Ryujinx.Ava/UI/Models/Input/ControllerInputConfig.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
Update src/Ryujinx.Ava/UI/Models/Input/ControllerInputConfig.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Formatting and error
More Ava 11-ness
Whoops
* Code style fixes
* Style fixes
* Analyzer fix
* Remove all ReflectionBindings
* Remove ambigious object
* Remove redundant property
* Old man yells at formatter
* r e a d o n l y
* Fix profiles
* Use new Sliders
---------
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Added basic implementation for shortcut creation
Currently bitmaps (.bmp) are used as the source file, colours are good (unlike .ico rn) but are scaled poorly on desktop.
* Icons display properly in shortcut
* code cleanup
* Moved shortcut logic to specific file, added Ava UI for shortcuts
* Added linux .desktop shortcut creation
* fixes to .shortcut data
* code issue fixes
* Added basic implementation for shortcut creation
Currently bitmaps (.bmp) are used as the source file, colours are good (unlike .ico rn) but are scaled poorly on desktop.
* Icons display properly in shortcut
* code cleanup
* Moved shortcut logic to specific file, added Ava UI for shortcuts
* Added linux .desktop shortcut creation
* fixes to .shortcut data
* code issue fixes
* added back shortcut to new contextmenu file
* Replaced COM reference with ComImport for shortcut functionality
* remove specific platform values and regions
* Move ShortcutHelper to Ryujinx.Ui.Common.Helpers
* Adjust styling and structure
* code feedback changes
* Added MacOS support using .app folder
* Added basic implementation for shortcut creation
Currently bitmaps (.bmp) are used as the source file, colours are good (unlike .ico rn) but are scaled poorly on desktop.
* Icons display properly in shortcut
* code cleanup
* Moved shortcut logic to specific file, added Ava UI for shortcuts
* Added linux .desktop shortcut creation
* fixes to .shortcut data
* code issue fixes
* Added basic implementation for shortcut creation
Currently bitmaps (.bmp) are used as the source file, colours are good (unlike .ico rn) but are scaled poorly on desktop.
* Icons display properly in shortcut
* code cleanup
* Moved shortcut logic to specific file, added Ava UI for shortcuts
* Added linux .desktop shortcut creation
* fixes to .shortcut data
* code issue fixes
* Replaced COM reference with ComImport for shortcut functionality
* remove specific platform values and regions
* Move ShortcutHelper to Ryujinx.Ui.Common.Helpers
* Adjust styling and structure
* code feedback changes
* adjust tooltip message
* added shortcut-template.desktop file
* set shortcut icon location to .local/share/icons
* Linux code feedback changes
* change InteropServices to new securifybv.ShellLink Package
* added ShellLink to readme, updated shortcut comment
* Code feedback changes
* Added MacOS Support (As per Jose Estrada's PR)
* dotnet format
* Small restructuring
* Embed template files into Ryujinx.Ui.Common
* Disable "CreateShortcut" option for flatpak builds
---------
Co-authored-by: TSR Berry <20988865+TSRBerry@users.noreply.github.com>
Co-authored-by: Jose Estrada <joseestradacobo@gmail.com>
* Add scrollable custom control based on TickFrequency
* Use custom slider to update value when pointer wheel scrolled
* Remove extra xaml file
* Address formatting issues
* Only scroll one element at a time
* Add OnPointerWheelChanged event to VolumeStatus button
Co-authored-by: Ahmad Tantowi <ahmadtantowi@outlook.com>
---------
Co-authored-by: TSR Berry <20988865+TSRBerry@users.noreply.github.com>
* GPU: Add fallback when textureGatherOffsets is not supported.
This PR adds a fallback for GPUs or APIs that don't support an equivalent to the method `textureGatherOffsets`, where each of the 4 gathered texels has an individual offset. This is done by reusing the existing code to handle non-const offsets for texture instructions, though it has also been corrected as there were a few implementation issues.
MoltenVK reports support for this capability, and it didn't error when we initially released the MacOS build, but that has since changed. MVK still reports support, but spirv-cross has been fixed in a way that it _attempts_ to use this capability, but the metal compiler errors since it doesn't exist.
Some other fixes:
- textureGatherOffsets emulation has been changed significantly. It now uses 4 texture sample instructions (not gather), calculates a base texel (i=0 j=0) and adds the offsets onto it before converting into a tex coord. The final result is offset into a texel center, so it shouldn't be subject to interpolation, though this isn't perfect and could have some error with floating point formats with linear sampling. It is subject to texture wrap mode as it should be, which is why texelFetch was not used.
- Maybe gather should be used here with component `w` (i=0, j=0), though this multiplies number of texels fetched by 4... The way it was doing this before _was_ wrong_, but doing it right would avoid issues with texel center precision.
- textureGatherOffset (singular) now performs textureGather with the offset applied to the coords, rather than the slower fallback where each texel is fetched individually.
* Increment shader cache version, remove unused arg
* Use base texture size for gather coord offset.
Implicit LOD for gather is not supported.
* Use 4 texture gathers for offsets emulation
Avoids issues with interpolation at cost of performance
(not sure how bad this is)
* Address Feedback