* Implement SwKbd GUI
* Relocate UI handler to Emu Context from Config
Also create a common interface for UI handlers in the context and specialize for Gtk
Add basic input length validation in InputDialog
* Add Transfer Memory support to AppletCreator
Read Initial Text for SwKbd using Transfer Memory
* Improve InputDialog widget
Improve length validation
Has extra label to show validition info
Handle potential errors and log them
* Misc improvements
* Improve string validation
* Improve error handling
* Remove tuple in struct
* Address formatting nits
* Add proper Cancel functionality
Also handle GUI errors in UI handler
* Address jD's comments
* Fix _uiHandler init
* Address AcK's comments
* Detect available audio backends in the gui on a separate thread and
hardcode dummy backend in the dropdown and select it by default
* Use a Task rather than a Thread
* Modify UI on UI thread
* Initial NVDEC and VIC implementation
* Update FFmpeg.AutoGen to 4.3.0
* Add nvdec dependencies for Windows
* Unify some VP9 structures
* Rename VP9 structure fields
* Improvements to Video API
* XML docs for Common.Memory
* Remove now unused or redundant overloads from MemoryAccessor
* NVDEC UV surface read/write scalar paths
* Add FIXME comments about hacky things/stuff that will need to be fixed in the future
* Cleaned up VP9 memory allocation
* Remove some debug logs
* Rename some VP9 structs
* Remove unused struct
* No need to compile Ryujinx.Graphics.Host1x with unsafe anymore
* Name AsyncWorkQueue threads to make debugging easier
* Make Vp9PictureInfo a ref struct
* LayoutConverter no longer needs the depth argument (broken by rebase)
* Pooling of VP9 buffers, plus fix a memory leak on VP9
* Really wish VS could rename projects properly...
* Address feedback
* Remove using
* Catch OperationCanceledException
* Add licensing informations
* Add THIRDPARTY.md to release too
Co-authored-by: Thog <me@thog.eu>
* Implement Modding Support
* Executables: Rewrite to use contiguous mem and Spans
* Reorder ExeFs, Npdm, ControlData and SaveData calls
After discussion with gdkchan, it was decided it's best to call
LoadExeFs after all other loads are done as it starts the guest process.
* Build RomFs manually instead of Layering FS
Layered FS approach has considerable latency when building the final
romfs. So, we manually replace files in a single romfs instance.
* Add RomFs modding via storage file
* Fix and cleanup MemPatch
* Add dynamically loaded NRO patching
* Support exefs file replacement
* Rewrite ModLoader to use mods-search architecture
* Disable PPTC when exefs patches are detected
Disable PPTC on exefs replacements too
* Rewrite ModLoader, again
* Increased maintainability and matches Atmosphere closely
* Creates base mods structure if it doesn't exist
* Add Exefs partition replacement
* IPSwitch: Fix nsobid parsing
* Move mod logs to new LogClass
* Allow custom suffixes to title dirs again
* Address nits
* Add a per-App "Open Mods Directory" context menu item
Creates the path if not present.
* Normalize tooltips verbiage
* Use LocalStorage and remove unused namespaces
* Initial implementation of Render Target Scaling
Works with most games I have. No GUI option right now, it is hardcoded.
Missing handling for texelFetch operation.
* Realtime Configuration, refactoring.
* texelFetch scaling on fragment shader (WIP)
* Improve Shader-Side changes.
* Fix potential crash when no color/depth bound
* Workaround random uses of textures in compute.
This was blacklisting textures in a few games despite causing no bugs. Will eventually add full support so this doesn't break anything.
* Fix scales oscillating when changing between non-native scales.
* Scaled textures on compute, cleanup, lazier uniform update.
* Cleanup.
* Fix stupidity
* Address Thog Feedback.
* Cover most of GDK's feedback (two comments remain)
* Fix bad rename
* Move IsDepthStencil to FormatExtensions, add docs.
* Fix default config, square texture detection.
* Three final fixes:
- Nearest copy when texture is integer format.
- Texture2D -> Texture3D copy correctly blacklists the texture before trying an unscaled copy (caused driver error)
- Discount small textures.
* Remove scale threshold.
Not needed right now - we'll see if we run into problems.
* All CPU modification blacklists scale.
* Fix comment.
* Implement audio backend configuration option
* Use OpenAL by default
* Increment version number in config.json
and add 30px to the height of the settings window
* nits
* capitalise audio backend names
* GameTableContextMenu: Implemented options for PPTC
Added an option for purging the cache and for opening the PPTC directory.
* Fixed formating and used a better naming scheme for some of the variables.
* Fixed some nits
* Fixed more nits
* Rearranged the context menu and fixed some nits
* Addressed LDj's review
* SettingsWindow: Add the ability to choose multiple game directories in one go
* Adressed emmauss's suggestion
* Simplified the check for duplicate game directories
As per Xpl0itr's and emmauss's suggestion, I simplified the loop that checks if the selected game directories are already added.
* Fixed a nit
* Separate hotkey settings from emulated input settings
* Remember gui column sort
* nit
* fix schema
* nit
* Remove unused SaveDataPath to speed up game list loading
* Reset the vertical scrollbar to the top when titles finish loading
* Delete DelegateTypes.cs
* Delete DelegateCache.cs
* Add files via upload
* Update Horizon.cs
* Update Program.cs
* Update MainWindow.cs
* Update Aot.cs
* Update RelocEntry.cs
* Update Translator.cs
* Update MemoryManager.cs
* Update InstEmitMemoryHelper.cs
* Update Delegates.cs
* Nit.
* Nit.
* Nit.
* 10 fewer MSIL bytes for us
* Add comment. Nits.
* Update Translator.cs
* Update Aot.cs
* Nits.
* Opt..
* Opt..
* Opt..
* Opt..
* Allow to change compression level.
* Update MemoryManager.cs
* Update Translator.cs
* Manage corner cases during the save phase. Nits.
* Update Aot.cs
* Translator response tweak for Aot disabled. Nit.
* Nit.
* Nits.
* Create DelegateHelpers.cs
* Update Delegates.cs
* Nit.
* Nit.
* Nits.
* Fix due to #784.
* Fixes due to #757 & #841.
* Fix due to #846.
* Fix due to #847.
* Use MethodInfo for managed method calls.
Use IR methods instead of managed methods about Max/Min (S/U).
Follow-ups & Nits.
* Add missing exception messages.
Reintroduce slow path for Fmov_Vi.
Implement slow path for Fmov_Si.
* Switch to the new folder structure.
Nits.
* Impl. index-based relocation information. Impl. cache file version field.
* Nit.
* Address gdkchan comments.
Mainly:
- fixed cache file corruption issue on exit; - exposed a way to disable AOT on the GUI.
* Address AcK77 comment.
* Address Thealexbarney, jduncanator & emmauss comments.
Header magic, CpuId (FI) & Aot -> Ptc.
* Adaptation to the new application reloading system.
Improvements to the call system of managed methods.
Follow-ups.
Nits.
* Get the same boot times as on master when PTC is disabled.
* Profiled Aot.
* A32 support (#897).
* #975 support (1 of 2).
* #975 support (2 of 2).
* Rebase fix & nits.
* Some fixes and nits (still one bug left).
* One fix & nits.
* Tests fix (by gdk) & nits.
* Support translations not only in high quality and rejit.
Nits.
* Added possibility to skip translations and continue execution, using `ESC` key.
* Update SettingsWindow.cs
* Update GLRenderer.cs
* Update Ptc.cs
* Disabled Profiled PTC by default as requested in the past by gdk.
* Fix rejit bug. Increased number of parallel translations. Add stack unwinding stuffs support (1 of 2).
Nits.
* Add stack unwinding stuffs support (2 of 2). Tuned number of parallel translations.
* Restored the ability to assemble jumps with 8-bit offset when Profiled PTC is disabled or during profiling.
Modifications due to rebase.
Nits.
* Limited profiling of the functions to be translated to the addresses belonging to the range of static objects only.
* Nits.
* Nits.
* Update Delegates.cs
* Nit.
* Update InstEmitSimdArithmetic.cs
* Address riperiperi comments.
* Fixed the issue of unjustifiably longer boot times at the second boot than at the first boot, measured at the same time or reference point and with the same number of translated functions.
* Implemented a simple redundant load/save mechanism.
Halved the value of Decoder.MaxInstsPerFunction more appropriate for the current performance of the Translator.
Replaced by Logger.PrintError to Logger.PrintDebug in TexturePool.cs about the supposed invalid texture format to avoid the spawn of the log.
Nits.
* Nit.
Improved Logger.PrintError in TexturePool.cs to avoid log spawn.
Added missing code for FZ handling (in output) for fp max/min instructions (slow paths).
* Add configuration migration for PTC
Co-authored-by: Thog <me@thog.eu>
We currently logs system informations before we load the configuration file.
Since the logger use the configuration file (to sets if it should store the logs in a file, etc...), if we print something before the configuration init, the log file doesn't contains any system informations.
Now it's fixed.
Some parts of our code needs C# 8 who isn't set as default in Visual Studio. To fix this we have to set the C# version correctly in the csproj files and then we are be able to build the project using Visual Studio.
This should fix OpenGL context creation on OSX (using Cocoa).
NOTE: As macOS doesn't support OpenGL 4.3, the emulator will probably not work but this fix the hardcrash when starting any games.
* Updated all NuGet packages to latest, and updated the framework from .NET Core 3.0 to 3.1.
* Updating appveyor settings for 3.1
Updating appveyor to use the netcoreapp3.1 path instead of 3.0.
* Removing unneeded NuGet package System.Runtime.CompilerServices.Unsafe.
* Removing unused NuGet package SharpFontCore.
* Removing unused NuGet package TimeZoneConverter.Posix
* Cleaning up by adding newline to a csproj.
* Simplfying a NuGet conditional include, and adding a warning disable for an annoying NuGet package.
* Adding .editorconfig so users have a consistent style setting regardless of their local settings.
* I'm not sure if .travis.yml is still used, but I'm updating its 'dotnet' version to the correct SDK.
* Making the runtime version into its own environment variable so it's a bit easier to change in the future.
* Removing OpenTK.NetStandard reference from Ryujinx.Common
* Fixing indentation in Common.csproj
* Updating the README to specify .NET Core 3.1.
* Reverting the update of the GTKSharp package so it doesn't block the PR.
This remove Utf8son and JsonPrettyPrinter dependencies.
NOTE: the standard JSON parser doesn't support configurable
indentation, as a result, all the pretty printed JSON are indented with 2
spaces.
As I was unable to disable the ctrl + f keybinding, this implement
something to make it works with the default GTK code logic.
Also remove unused _treeView static member.
* Log Ryujinx version and OS
* Log total RAM size and CPU name
* Requested changes
* requested change
* jd's requested changes
* jd's requested changes
* Updated all NuGet packages to latest, and updated the framework from .NET Core 3.0 to 3.1.
* Updating appveyor settings for 3.1
Updating appveyor to use the netcoreapp3.1 path instead of 3.0.
* Removing unneeded NuGet package System.Runtime.CompilerServices.Unsafe.
* Removing unused NuGet package SharpFontCore.
* Removing unused NuGet package TimeZoneConverter.Posix
* Cleaning up by adding newline to a csproj.
* Simplfying a NuGet conditional include, and adding a warning disable for an annoying NuGet package.
* I'm not sure if .travis.yml is still used, but I'm updating its 'dotnet' version to the correct SDK.
* Making the runtime version into its own environment variable so it's a bit easier to change in the future.
* Removing OpenTK.NetStandard reference from Ryujinx.Common
* Fixing indentation in Common.csproj
* Updating the README to specify .NET Core 3.1.
* Reverting the update of the GTKSharp package so it doesn't block the PR.
* Rewrite SurfaceFlinger
Reimplement accurately SurfaceFlinger (based on my 8.1.0 reversing of it)
TODO: support swap interval properly and reintroduce disabled "game vsync" support.
* Some fixes for SetBufferCount
* uncomment a test from last commit
* SurfaceFlinger: don't free the graphic buffer in SetBufferCount
* SurfaceFlinger: Implement swap interval correctly
* SurfaceFlinger: Reintegrate Game VSync toggle
* SurfaceFlinger: do not push a fence on buffer release on the consumer side
* Revert "SurfaceFlinger: do not push a fence on buffer release on the consumer side"
This reverts commit 586b52b0bfab2d11f361f4b59ab7b7141020bbad.
* Make the game vsync toggle work dynamically again
* Unregister producer's Binder object when closing layer
* Address ripinperi's comments
* Add a timeout on syncpoint wait operation
Syncpoint aren't supposed to be waited on for more than a second.
This effectively workaround issues caused by not having a channel
scheduling in place yet.
PS: Also introduce Android WaitForever warning about fence being not
signaled for 3s
* Fix a print of previous commit
* Address Ac_K's comments
* Address gdkchan's comments
* Address final comments
* libhac: use ApplicationControlProperty instead of Nacp
Nacp was marked as deprecated in 0.10.0, this PR remove all usage of it
from Ryujinx and use the new struct ApplicationControlProperty.
* Address Moose's comment
* Delete old HLE.Input
* Add new HLE Input.
git shows Hid.cs as modified because of the same name. It is new.
* Change HID Service
* Change Ryujinx UI to reflect new Input
* Add basic ControllerApplet
* Add DebugPad
Should fix Kirby Star Allies
* Address Ac_K's comments
* Moved all of HLE.Input to Services.Hid
* Separated all structs and enums each to a file
* Removed vars
* Made some naming changes to align with switchbrew
* Added official joycon colors
As an aside, fixed a mistake in touchscreen headers and added checks to
important SharedMem structs at init time.
* Further address Ac_K's comments
* Addressed gdkchan's and some more Ac_K's comments
* Address AcK's review comments
* Address AcK's second review comments
* Replace missed Marshal.SizeOf and address gdkchan's comments
* Add warning and option to disable when loading game with debug logs
* Add warning and option to disable when shader dumping is enabled
* Edit text and add title
* Add a dialog to make sure user wants to stop emulation when esc is pressed
* Remove unneccesary space
* Fix formatting
* Remove unnessecary spaces
* Fix formatting for member of GtkDialog
* Fix unhandled UnauthorizedAccessException causing crash while listing directories
* Actually handle not having privileges for a directory
* Fix log message when not having privileges for a directory
* Remove unneccesary empty lines
* Remove unneccecssary space
This implement `GetRegionCode` accordingly to RE. I've added a setting in the GUI and a field in the Configuration file with a way to update the Configuration file if needed.
* Move status information from the title bar to the new status bar
* jd's requested changes
* Ack's requested changes
* gdk's requested changes
* Remove frame time statistics
* config loading changes
- load config from either ryufs or ryujinx.exe parent folder with parent folder taking priority
- config file in repo is only copied to parent directory if built in debug mode
* AcK's requested changes
* add "Profile Debug" as a condition to copy the default config to output
This add the AppVeyor build version (added in #927) in the console window title and in the GUI title (when you are on the games list or when an emulated game is closed).
* Some fixes for the new GLRenderer
Changelog:
- Fix transparency of the window on some games on Windows.
- Fix escape key not being able to exit emulation.
- Fix inverted logic in fullscreen event handling.
- Fix a race condition when stoping emulation causing a hang.
- Fix a memory leak of the OpenGL context when stoping emulation (saving ~200MB of RAM when stoping emulation).
- Simplify and document behaviours when exiting the emulator while the
emulation is running.
* Make sure to clear alpha channel when presenting Texture
This fix once and for all the transparency issue on Windows.
* Enforce footer bar size to avoid gl widget to get resized to 1280x724
* Fix full screen inversion in MainWindow and make sure _listStatusBox don't come back when not needed
* Remove previous transparency clear attempt that is useless now
* Remove an extra line return
* add gl rendering widget
* embed renderer into main window
* add input
* fix mouse input
* fix mouse coords
* refresh game list after closing game, remove profiler method
* rebase, hide game list progress bar while game is running
* Some bug fixes
Changelog:
- Reapply some changes that got lost while rebasing from #904
- Make sure to guarantee exclusivity on the GL context (fixing multiple
possible race conditions on Windows)
- Avoid making GLRenderer disposed multiple time
* add fullscreen, enable input on focus, disable aplha
* addressed comments
* Disable transparency in the window
* fix fullscreen state, fix focus, addressed comments
* nit
* addressed nit
Co-authored-by: Thog <thog@protonmail.com>
* Implement NCA section extractors in the GUI
* AcK's requested changes
* Put extractor on a new thread and added dialogs
* bug fix
* make extraction cancelable
* nits
* changes
* gdkchan's requested change
* Fix a crash when closing the main Ui
Also make sure to dispose the OpenAL context to not leak memory when
unloading the emulation context.
* Improve keys and 'game already running' dialogs
* Make sure to dispose the page table and ThreadContext
Less memory leaks!
* Fix tests
* Address gdk's comments
* Fix application list
* Convert file extensions to lowercase before comparing
* AcK's requested changes
* fixed bug found by gdkchan's requested changes
* Account for mismatch between LibHac.TitleLanguage and ...System.Language
* Added Program Icon
Added an icon that displays in the Windows File Explorer and on the console window itself when launched.
* Renamed ryu.ico to Ryujinx.ico
* Keep the GUI alive when closing a game
Make HLE.Switch init when starting a game and dispose it when closing
the GlScreen.
This also make HLE in charge of disposing the audio and gpu backend.
* Address Ac_k's comments
* Make sure to dispose the Discord module and use GTK quit method
Also update Discord Precense when closing a game.
* Make sure to dispose MainWindow
* Address gdk's comments
* Update to LibHac 0.8.2
This brings support for temporary savedata, ignores case in key names when loading from a file, and prints the rights ID correctly when missing a title key.
* Auto-format IFileSystemProxy
* firmware installer
* Add directory installation option and fix 9.x support for directory
* Fix missing system font error while installing for the first time
* Address code style comments
* Create and use InvalidFirmwarePackageException
* Fix LDj3SNuD's comments
* addressed alex's comments
* add label to status bar to show current firmware version
Co-authored-by: Thog <thog@protonmail.com>
* 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>
* 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
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
* 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