Currently in `MenuMainBarView.axaml` we list all available languages and hardcode the language name with the language key.
It's a bit bad beause if we want to add a new language, we have to edit the `csproj` and the `axaml` with the translated language name and the language code.
I've put all translations in their respective locale files, add code into `MainMenuBarView` constructor to generate the menu automatically. Now we just have to edit the `csproj` if we want to add a new language.
* Implement JIT Arm64 backend
* PPTC version bump
* Address some feedback from Arm64 JIT PR
* Address even more PR feedback
* Remove unused IsPageAligned function
* Sync Qc flag before calls
* Fix comment and remove unused enum
* Address riperiperi PR feedback
* Delete Breakpoint IR instruction that was only implemented for Arm64
Because we are building everything on Windows for release at the moment,
git default line ending to CRLF causing issues when packing the
Ryujinx.sh script.
This addresses this by enforcing all files to use LF via .gitattributes.
* ava: Cleanup AppHost
This PR cleaned up the AppHost file a bit (adding the infamous extra spaces to improve readability), resorting private vars, remove useless vars, and improve the code here and there, like the AudioBackend check.
Co-Authored-By: gdkchan <5624669+gdkchan@users.noreply.github.com>
* Remove 'renderer"
* Revert currentTime
* revert if condition
Co-authored-by: gdkchan <5624669+gdkchan@users.noreply.github.com>
* headless: Fix typos in command line options
* Remove nullable from command line options
Add EnableMacroHLE option
Add HideCursorOnIdle option
* headless: Adjust enable-ptc help text
* headless: Use switch statement instead of if-else chain
* headless: Improve formatting for long constructors
* headless: Remove discards from SDL_ShowCursor()
* headless: Add window icon
* Fix hiding cursor on idle
At least on Wayland, SDL2 doesn't produce any mouse motion events.
* Add new command line args: BaseDataDir and UserProfile
* headless: Read icon from embedded resource
* headless: Skip SetWindowIcon() on Windows if dll isn't present
* headless: Fix division by zero
* headless: Fix command line options not working correctly
* headless: Fix crash when viewing command line options
* headless: Load window icon bmp from memory
* Add comment to the workaround for SDL_LoadBMP_RW
* headless: Enable logging to file by default
* headless: Add 3 options for --hide-cursor
Replaces --disable-hide-cursor-on-idle
* ava: Fix regressions from #4178
* Remove duplicated code
* real fix for right click menu
Co-Authored-By: Isaac Marovitz <42140194+IsaacMarovitz@users.noreply.github.com>
* Remove ContentDialogOverlay
Co-authored-by: Isaac Marovitz <42140194+IsaacMarovitz@users.noreply.github.com>
* Horizon: Impl Prepo, Fixes bugs, Clean things
* remove ToArray()
* resultCode > status
* Remove old services
* Addresses gdkchan's comments and more cleanup
* Addresses Gdkchan's feedback 2
* Reorganize services, make sure service are loaded before guest
Co-Authored-By: gdkchan <5624669+gdkchan@users.noreply.github.com>
* Create interfaces for lm and sm
Co-authored-by: gdkchan <5624669+gdkchan@users.noreply.github.com>
Avalonia seems to not like when the artifact doesns't match the root namespace...
Address that by moving the binary to "Ryujinx" like we do on macOS build.
* IPC refactor part 3 + 4: New server HIPC message processor with source generator based serialization
* Make types match on calls to AlignUp/AlignDown
* Formatting
* Address some PR feedback
* Move BitfieldExtensions to Ryujinx.Common.Utilities and consolidate implementations
* Rename Reader/Writer to SpanReader/SpanWriter and move to Ryujinx.Common.Memory
* Implement EventType
* Address more PR feedback
* Log request processing errors since they are not normal
* Rename waitable to multiwait and add missing lock
* PR feedback
* Ac_K PR feedback
* chore: Update tests dependencies
* Apply TSR Berry suggestion to add a GC.SuppressFinalize in MemoryBlock.cs
* Ensure we wait for the test thread to be dead on PartialUnmap
* Use platform attribute for os specific tests
* Make P/Invoke methods private
* Downgrade NUnit3TestAdapter to 4.1.0
* test: Disable warning about platform compat for ThreadLocalMap()
Co-authored-by: TSR Berry <20988865+TSRBerry@users.noreply.github.com>
* Filter “._” files from the game list
* Filter all hidden files from the game list
* Fix style
Co-authored-by: gdkchan <gab.dark.100@gmail.com>
* merge OR expression into a pattern
* migrate from GetFiles/Directories to Enumerate
* Remove GetFilesInDirectory()
* Update Ryujinx.Ui.Common/App/ApplicationLibrary.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* add error handeling
* code cleanup
Co-authored-by: gdkchan <gab.dark.100@gmail.com>
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Change AggregateType to include vector type counts
* Replace VariableType uses with AggregateType and delete VariableType
* Support new local vector types on SPIR-V and GLSL
* Start using vector outputs for texture operations
* Use vectors on more texture operations
* Use vector output for ImageLoad operations
* Replace all uses of single destination texture constructors with multi destination ones
* Update textureGatherOffsets replacement to split vector operations
* Shader cache version bump
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Vulkan: Don't flush commands when creating most sync
When the WaitForIdle method is called, we create sync as some internal GPU method may read back written buffer data. Some games randomly intersperse compute dispatch into their render passes, which result in this happening an unbounded number of times depending on how many times they run compute.
Creating sync in Vulkan is expensive, as we need to flush the current command buffer so that it can be waited on. We have a limited number of active command buffers due to how we track resource usage, so submitting too many command buffers will force us to wait for them to return to the pool.
This PR allows less "important" sync (things which are less likely to be waited on) to wait on a command buffer's result without submitting it, instead relying on AutoFlush or another, more important sync to flush it later on.
Because of the possibility of us waiting for a command buffer that hasn't submitted yet, any thread needs to be able to force the active command buffer to submit. The ability to do this has been added to the backend multithreading via an "Interrupt", though it is not supported without multithreading.
OpenGL drivers should already be doing something similar so they don't blow up when creating lots of sync, which is why this hasn't been a problem for these games over there.
Improves Vulkan performance on Xenoblade DE, Pokemon Scarlet/Violet, and Zelda BOTW (still another large issue here)
* Add strict argument
This is technically a separate concern from whether the sync is a host syncpoint.
* Remove _interrupted variable
* Actually wait for the invoke
This is required by AMD GPUs, and also may have caused some issues on other GPUs.
* Remove unused using.
* I don't know why it added these ones.
* Address Feedback
* Fix typo
* haydn: Add support for PCMFloat, PCM32 and PCM8 conversions
This adds support in the compatibility layer for other sample format
than PCM16.
This should help extends compatibility with soundio on devices that
doesn't expose PCM16.
I ommited PCM24 conversion for now as it's not simplest of all.
* Address TSRBerry's comment
* Address comments
* Fix conversion issue and clean up saturation usage
* Revert saturation changes
* Address gdkchan's comment
* Add conversion for 16 bit RGBA formats (not supported in Rosetta)
* Rebase fix
Rebase fix
* Forgot to remove this
* Fix RGBA16 format conversion
* Add RGBA4 -> RGBA8 conversion
* Handle host stride alignment
* Address Feedback Part 1
* Can't count
* Don't zero out rgb when alpha is 0
* Separate RGBA4 and 5-bit component formats
Not sure of a better way to name them...
* Add A1B5G5R5 conversion
* Put this in the right place.
* Make format naming consistent for capabilities
* Change method names