* Services/APT: Implemented PrepareToStartApplication and StartApplication.
This allows games to be launched from the Home Menu, however, there is still a bug with the GSP where the Home Menu doesn't release the GPU rights. It is unknown if the Home Menu should terminate itself after launching a new application.
To get the Home Menu to not hang when launching stuff, you need to have config block 0xF0006 (size 40 flags 8) in your config savegame, it doesn't matter if it's filled with zeros.
* Services/APT: Implement WakeupApplication.
With this, the Home Menu is now able to launch games when using an LLE NIM imlementation.
* Services/APT: Reset the app_start_parameters after launching the application with StartApplication.
* Services/APT: Simplify the StartApplication code by directly calling WakeupApplication.
---------
Co-authored-by: Subv <subv2112@gmail.com>
* Initial plugin loader support
* More plugin loader progress
* Organize code and more plugin features
* Fix clang-format
* Fix compilation and add android gui
* Fix clang-format
* Fix macos build
* Fix copy-paste bug and clang-format
* More merge fixes
* Make suggestions
* Move global variable to static member
* Fix typo
* Apply suggestions
* Proper initialization order
* Allocate plugin memory from SYSTEM instead of APPLICATION
* Do not mark free pages as RWX
* Fix plugins in old 3DS mode.
* Implement KernelSetState and notif 0x203
* Apply changes
* Remove unused variable
* Fix dynarmic commit
* Sublicense files with MIT License
* Remove non-ascii characters from license
* common: Move settings to common from core.
- Removes a dependency on core and input_common from common.
* code: Wrap settings values
* Port from yuzu to allow per game settings
* citra_qt: Initial per-game settings dialog
* citra_qt: Use new API for read/save of config values
* citra_qt: Per game audio settings
* citra_qt: Per game graphics settings
* citra_qt: Per game system settings
* citra_qt: Per game general settings
* citra_qt: Document and run clang format
* citra_qt: Make icon smaller and centered
* citra_qt: Remove version number
* Not sure how to extract that, can always add it back later
* citra_qt: Wrap UISettings
* citra_qt: Fix unthottled fps setting
* citra_qt: Remove margin in emulation tab
* citra_qt: Implement some suggestions
* Bring back speed switch hotkey
* Allow configuration when game is running
* Rename/adjust UI stuff
* citra_qt: Fix build with separate windows
* citra_qt: Address feedback
* citra_qt: Log per-game settings before launching games
* citra_qt: Add shader cache options
* Also fix android build
* citra_qt: Add DLC menu option
* citra_qt: Run clang-format
* citra_qt: Adjust for time offset
* citra_qt: Implement suggestions
* Run clang-format
Co-authored-by: bunnei <bunneidev@gmail.com>
* Add setting for system time offset
Add a setting to displace citra system time by days, hours, minutes
or seconds
Add UI for the setting which is only visible when clock is set to
system time
Change core/settings.h to include the setting
* Add system time offset to kernel
Actually makes use of the time offset.
* Fix time offset calculatioon in core/movie.cpp
* Replace C++20 chrono::days with seconds
Hopefully fixes the build.
* Fix socket poll and handling in windows
* Fix clang
* Add guest timing adjust
* Use platform independent time fetch
* Use proper type in time_point
* Fix ambiguous function call
* Do suggestions
* Take cpu_clock_scale into account in tick adjust
previous changes had forced every single user to use custom
directories for NAND and SDMC. Those paths were saved to the
config file and would interact badly with portable builds.
Games will sometimes use these when representing open right bounds
and so disallowing it caused regressions, with a notable example
being when MemoryFill is called to the end of vram, causing an
"invalid end address" error.
This had been noted on a comment in GetPhysicalRef prior to the
regression.
* Convert Input Count to Frame Count
While recording or playing a movie file, the left side of the status bar currently displays an input counter which shows how many times the emulator has polled for button inputs during the movie. This information is far less easily understandable and less useful for TASing compared to a frame count. The frame count has a linear relationship with input count that can be expressed with Frame Count = 0.255689103308912 * Input Count. Simply put, instead of having a counter that goes up by 3 or 4 every frame, this makes it a counter that goes up by exactly 1 every frame.
* Update movie.cpp
* Update movie.cpp
* Fixing clang-format errors
* Update movie.cpp
Did not realize that the frame rate was defined as a constant somewhere in the source code. This makes this conversion far less sketchy.
* Update movie.cpp
* In older `httplib`, SSL connections were not handled correctly and
will have issues with proxy servers. Also, keep alive directives were
not available back then, which is probably necessary to implement
HTTP_C service correctly.
* Another reason being `httplib` now requires OpenSSL 1.1+ API while
LibreSSL 2.x provided OpenSSL 1.0 compatible API.
* The bundled LibreSSL has been updated to 3.2.2 so it now provides
OpenSSL 1.1 compatible API now.
* Also the path hint has been added so that it will find the correct
path to the CA certs on *nix systems.
* An option is provided so that *nix system distributions/providers can
use their own SSL implementations when compiling Yuzu/Citra to
(hopefully) complies with their maintenance guidelines.
* LURLParse is also removed since `httplib` can handle
`scheme:host:port` string itself now.
When the vector is empty, using `&vec[0]` involves undefined behaviour. While that works fine most of the time, Flatpak builds aborted on a failed `__builtin_expect`.
I searched for such occurences across the codebase with the regex `(?<!&)&\w+\[0\]` and fixed those that would potentially cause issues.
Previously the movie was started *after* core starts running, causing potential indeterminism.
Some desyncs are still not fixed; they may be caused by core timing. More investigation is required.
Since we do not have an overlay yet, it can be confusing whether movie is being recorded or played. This makes it clear.
Status messages (e.g. system archive missing) will be overriden, but that shouldn't be too important when recording movies.
Doubled the status bar updating frequency to provide a better experience. It now updates every second.
This is completely rebuilt, in order to allow setting author, displaying movie metadata, and toggling read-only mode.
The UX is changed to more closely match other emulators' behaviour. Now you can only record/play from start/reset (In the future, we might want to introduce 'record from savestate')
Also fixed a critical bug where movie file can be corrupted when ending the recording while game is still running.
Instead of specifying it when starting playback. This is necessary as
you can end up playing the movie even if you started as Recording
(for example, loading a state in R/O mode will switch to Playing mode)