Commit graph

806 commits

Author SHA1 Message Date
gdk
74e3f3ee1c Invalidate shaders when they are modified 2024-02-22 19:14:36 -05:00
gdk
0d1fb50a53 Add partial support for the BRX shader instruction 2024-02-22 19:14:36 -05:00
gdk
dde40abaf1 Fix image units bindings and shader dump in the presence of NOPs 2024-02-22 19:14:36 -05:00
gdk
774b7038e3 Revert "Check for ASTC support on the list of supported compressed formats"
This reverts commit 38a993510f64346649529b8fd2af6683bef05aa6.
2024-02-22 19:14:36 -05:00
gdk
f1c48d4a1e Check for ASTC support on the list of supported compressed formats 2024-02-22 19:14:36 -05:00
gdk
98cd25c3cc Fix regression on load/store local (wrong type) 2024-02-22 19:14:36 -05:00
gdk
0811a6ca7c Do not throw for invalid ASTC compressed textures 2024-02-22 19:14:35 -05:00
gdk
360df1e42f Add ATOMS, LDS, POPC, RED, STS and VOTE shader instructions, start changing the way how global memory is handled 2024-02-22 19:14:35 -05:00
gdk
c7dccda2fc Use a more efficient range list on the buffer manager 2024-02-22 19:14:35 -05:00
gdk
fc8af96ad9 Remove some unused constants and other code 2024-02-22 19:14:35 -05:00
gdk
6ffc3baa91 Add partial support for array of samplers, and add pass to identify them from bindless texture accesses 2024-02-22 19:14:35 -05:00
gdk
55b1eaa6bd Support window resizing 2024-02-22 19:14:35 -05:00
gdk
a16a9d9aba Implement BFI, BRK, FLO, FSWZADD, PBK, SHFL and TXD shader instructions, misc. fixes 2024-02-22 19:14:35 -05:00
gdk
34f3d30991 Support copy of slices to 3D textures, remove old 3D render target layered render support, do not delete textures with existing views created from them 2024-02-22 19:14:35 -05:00
gdk
120a62fe64 Add shader support for the round mode on the F2F instruction, support mipmaps on ASTC compressed textures 2024-02-22 19:14:35 -05:00
gdk
6849e2f949 Fix shader FMUL32I instruction saturation 2024-02-22 19:14:35 -05:00
gdk
5df3dea349 Flush buffers on copies 2024-02-22 19:14:35 -05:00
gdk
d7f753bf52 Add per-source type memory change tracking, simplified state change tracking, other fixes 2024-02-22 19:14:35 -05:00
gdk
1a3eef1528 Initial support for image stores, support texture sample on compute 2024-02-22 19:14:34 -05:00
gdk
e02d201596 Fix incorrect saturation on HADD2 and HMUL2 shader instructions 2024-02-22 19:14:34 -05:00
gdk
d91e352f1f Fix BC6 Signed/Unsigned float texture formats 2024-02-22 19:14:34 -05:00
gdk
364b7a4ec2 Handle quad and quad strip primitive types using triangle fans 2024-02-22 19:14:34 -05:00
gdk
115687db97 Improved Min/Mip -> MinFilter enum conversion 2024-02-22 19:14:34 -05:00
gdk
8737d7d61f Calculate width from stride on texture copies 2024-02-22 19:14:34 -05:00
gdk
4705bdc8d5 Initial work 2024-02-22 19:14:33 -05:00
Thog
a46c1d9470 Fix timezone month being reported incorrectly to games (#861)
Nintendo actually uses range from 1 to 12 for months (when original timezone code manage 0-11)
2024-02-22 19:14:33 -05:00
Thog
ffabda4be3 Fix ReactiveObject initial event not being propagated with boolean types (#860)
* Fix ReactiveObject initial event not being propagated with boolean types.

This fix the logger configuration initial state being ignored.
2024-02-22 19:14:32 -05:00
Thog
69723e5b62 Make sure to reload keys after Migration
This fix keys not being loaded on the first run right after migration.
2024-02-22 19:14:32 -05:00
Alex Barney
e0d3b55635 Rename "RyuFs" directory to "Ryujinx" and use the same savedata system the Switch uses (#801)
* Use savedata FS commands from LibHac

* Add EnsureSaveData. Use ApplicationControlProperty struct

* Add a function to migrate to the new directory layout

* LibHac update

* Change backup structure

* Don't create UI files in the save path

* Update RyuFs paths

* Add GetProgramIndexForAccessLog

Ryujinx only runs one program at a time, so always return values reflecting that

* Load control NCA when loading from an NSP

* Skip over UI stats when exiting

* Set TitleName and TitleId in more cases. Fix TitleID naming style

* Completely comment out GUI play stats code

* rebase

* Update LibHac

* Update LibHac

* Revert UI changes

* Do migration automatically at startup

* Rename RyuFs directory to Ryujinx

* Update RyuFs text

* Store savedata paths in the GUI

* Make "Open Save Directory" work

* Use a dummy NACP in EnsureSaveData if one is not loaded

* Remove manual migration button

* Respond to feedback

* Don't read the installer config to get a version string

* Delete nuget.config

* Exclude 'sdcard' and 'bis' during migration

Co-authored-by: Thog <thog@protonmail.com>
2024-02-22 19:14:32 -05:00
Thog
8754499310 Fix EphemeralNetworkSystemClock wrong steady clock (#858)
oops
2024-02-22 19:14:32 -05:00
LDj3SNuD
e6b34dbf61 Implemented fast paths for: (#846)
* opt

* Nit.

* opt_p2

* Nit.
2024-02-22 19:14:32 -05:00
Thog
7fe4e93ee4 Fix GUI freeze wehn closing without any emulation running (#853) 2024-02-22 19:14:32 -05:00
Thog
fd535845ae Fix LibHac.IStorage not being disposed in FileSystem proxy (#851) 2024-02-22 19:14:32 -05:00
Thog
29958a23e8 Make HLE disposable safely (#850)
* Make HLE disposable safely

This fix the oldest issue with the HLE code: the kernel side
disposability.

Changelog:

- Implement KProcess::UnpauseAndTerminateAllThreadsExcept, KThread::Terminate, KThread::TerminateCurrentProcess, KThread::PrepareForTermiation and the svc post handler accurately.
- Implement svcTerminateProcess and svcExitProcess. (both untested)
- Fix KHandleTable::Destroy not decrementing refcount of all objects stored in the table.
- Spawn a custom KProcess with the maximum priority to terminate every guest KProcess. (terminating kernel emulation safely)
- General system stability improvements to enhance the user's experience.

* Fix a typo in a comment in KProcess.cs

* Address gdk's comments
2024-02-22 19:14:32 -05:00
gdkchan
a659d78a3b Fix remap ioctl map offset (#852)
* Fix remap ioctl map offset

* Correct offset type
2024-02-22 19:14:32 -05:00
Thog
349ce8a2a5 Also use Github Actions as a CI" (#847) 2024-02-22 19:14:32 -05:00
Thog
547ea8acc8 Fix an endge case in bsd IClient::Poll implementation (#848)
This add some code to handle usage of poll without any fds.

This is required by Dark Souls Remastered main loop logic as it's
calling it without any fds during initialization.

===
General system stability improvements to enhance the user's experience.
2024-02-22 19:14:32 -05:00
Xpl0itR
c8e902ccca GUI: Implement context menu for the game table (#840)
* Add context menu to the game table

* Minor bugfix and cleanup

* add ability to create directory if it doesn't exist

* nit

* dont show menu when right-clicking nothing
2024-02-22 19:14:32 -05:00
Thog
8f8d2de92a Rewrite the configuration system (#831)
The configuration system was quite fragile and too dependent on everything, this fix #812 .

The changes:

    The file configuration is now entirely independent from the internal configuration state.
    The file configuration is versioned (current version is 1).
    Every configuration elements are now reactive properties that the emulator can register on to handle initialization and configuration changes.
    The configuration system is now in Ryujinx.Common to be accessible on every projects.
    Discord integration is now independent from the UI and can be reloaded.
    The primary controller is now configurable at runtime (NOTE: the UI currently doesn't have any options to configure real controller).
    The logger is entirely reloadable.
    You can now hotplug your controller when the emulator is running.
    The logger now takes name for every LogTarget to make them removable at runtime.
    The logger now always add the default "console" target to avoid loosing early init logs.
    The configuration system now generates a default file configuration if it's missing or too new.
    General system stability improvements to enhance the user's experience
2024-02-22 19:14:32 -05:00
gdkchan
384b00a802 Add a limit for the number of instructions in a function (#843) 2024-02-22 19:14:31 -05:00
Thog
6c5f5093ca Fix ILogger type and size decoding (#842)
* Fix ILogger type and size decoding

The type and size are custom encoded integer not byte.

This fix issues on games that send messages longer than 127 characters.

* Address gdk's comments
2024-02-22 19:14:31 -05:00
LDj3SNuD
7646556e01 Implemented fast paths for: (#841)
* cpu-misc_opt

* B = ~b

* ;
2024-02-22 19:14:31 -05:00
jduncanator
91ded2bf95 Fully reverse swkbd configuration structure and follow-up to swkbd implementation (#839)
* am: Fully reverse swkbd configuration structure

* Add documentation

* Remove explicit access modifiers

* Fix formatting

* Fix further formatting issues
2024-02-22 19:14:31 -05:00
Ac_K
8591f99bcd prepo: Silent error while parsing report (#837)
Due to a guessed parsing implementation of the report, sometime it throw an error, since the data isn't really useful, it's better to silent possible exceptions with a message.
2024-02-22 19:14:31 -05:00
Xpl0itR
9e1dcaa606 Add features to GUI (#757)
* controller image changes depending on the selected controller type

the new controller image assets are temporary until i get new ones

* Game list scans subdirs for games

* Key file existence check

* Only shows Program NCAs in Application list

* Change shown GUI columns without restarting

* Sort by column if you click on the column header

Columns are sorted as text so there are inaccuracies on some columns

* Fix sort on Time Played, Last Played and File Size columns

* Add ability to designate favourite games #1

TODO:
- Make fav games persistent
- Fix invisible check marks due to theme

* Add ability to designate favourite games #2

Also removed default theme

* Added a Windows specific build condition and a Linux bug fix

* bugfix

* Load metadata from JSONs

* Temp bug fix for MacOS

* lil clean up

* requested changes

* Misc fixes

* edited schema and config

* Show the TitleID of games on the title bar

* gui column config option have names

* Async loading of game list

* bugfix and cleanup

* thog's requested changes

* requested changes and cleanup

still need to fix the gtk seizure

* Fix issue where an ExeFS as a NSP didn't show up in the application list

* Minor fixes

* catch glib unhandled exceptions

* Make sure to do UI manipulation in the main thread

* Print path of invalid files

* Ac_k's requested changes

* Return of the dark theme

* move AboutInfo struct to another file

* sort usings

* changes

- gdkchan's requested changes that have been marked resolved
- made some structs internal as they aren't used outside of the GUI
- renamed Ryujinx.UI to Ryujinx.Ui to fit naming convention and folder structure
- fixed bug where controller type dropdown box is stretched
2024-02-22 19:14:31 -05:00
Thog
cd61bb7a81 time: Fix wrong buffer usage in CalculateStandardUserSystemClockDifferenceByUser & CalculateSpanBetween (#836) 2024-02-22 19:14:31 -05:00
Thog
200c4bf133 Fix issues on ro implementation (#834)
* ro: Fixes some bugs

* Fix critical overflow in random computation
2024-02-22 19:14:31 -05:00
Ac_K
ff0a31cef4 prepo: Implement calls of IPrepoService (#830)
* prepo: Implement calls of IPrepoService

- Implement `SaveReportOld`, `SaveReportWithUserOld`, `SaveReport`, `SaveReportWithUser` not accurate by RE (except for result codes). It's  here to do something with the data since we will never use the `Play Report` sent by the game. So it's better than just a stub.
- Fix a typo in `ldn` result code.

Close #807

* Add a processing method

* Address some comments

* remove unneeded using

* Resolve requested changes

* Typo

* Update IPrepoService.cs
2024-02-22 19:14:31 -05:00
Thog
4c607450ad Remove one extraneous incrementation (#833)
This incrementation is entirely wrong.
2024-02-22 19:14:31 -05:00
Ac_K
b76210421d Fix appveyor link and badge to master branch 2024-02-22 19:14:31 -05:00