Commit graph

740 commits

Author SHA1 Message Date
t895 ac73c85c7b android: Always use custom settings when launched from intent 2023-12-12 17:25:37 -05:00
t895 32f5aa3ae8 android: Adjust variable name format for native config 2023-12-12 17:25:37 -05:00
t895 0a7b3db9a0 android: Add game dir entries to FilesystemProvider
Allows us to correctly parse update metadata
2023-12-12 17:25:37 -05:00
t895 e3ed46e72b android: Fix games list loading thread safety
Previously we relied on a stateflow for reloading state. Now we use an atomic boolean.
2023-12-12 17:25:37 -05:00
t895 1c0730959b android: Collect latest information for games list 2023-12-12 17:25:37 -05:00
t895 88f4217c8f android: Remove global save import/exporter UI
The original implementation exposed here was fundamentally broken where it would not export or import all of your saves depending on your user profile configuration
2023-12-12 17:25:37 -05:00
t895 349b06bcc6 android: Compare all properties between games in DiffCallback 2023-12-12 17:25:37 -05:00
t895 1a2f96badb android: Expose MemoryUtil size formatting function 2023-12-12 17:25:37 -05:00
t895 b652ea328b android: Add JNI initialization information for Game class
Unused in this PR, but will be useful later
2023-12-12 17:25:37 -05:00
t895 6cf701ae25 android: Add per-game drivers 2023-12-12 17:25:37 -05:00
t895 44271a7cc5 android: Add per-game settings 2023-12-12 17:25:36 -05:00
t895 363eaa185c android: Add Game properties
This commit has the UI for viewing a game's properties on long-press and some links to useful tools like
- Game info
- Shortcut to settings (global in this commit)
- Addon manager with installer
- Save data manager
- Option to clear all save data
- Option to clear shader cache
2023-12-12 17:25:36 -05:00
t895 10eee4c0c3 android: Refactor settings to expose more options
In AbstractSetting, this removes the category, androidDefault, and valueAsString properties as they are no longer needed and have replacements. isSwitchable, global, and getValueAsString are all exposed and give better options for working with global/per-game settings.
2023-12-12 17:25:36 -05:00
Liam ecb3d74dcd nce: implement instruction emulation for misaligned memory accesses 2023-12-10 18:23:42 -05:00
german77 c2b2d7a903 core: Use single instance of profile manager 2023-12-10 11:29:43 -06:00
t895 a939ceb7cb android: Listen for directory selection in viewmodel
Fixes broken game directory selection setup flow
2023-12-08 22:02:04 -05:00
t895 cb32614e4e android: Don't reload filesystem on update install 2023-12-01 20:19:28 -05:00
liamwhite da8676dda1 Merge pull request #12074 from GPUCode/yuwu-on-the-metal
Implement Native Code Execution (NCE)
2023-11-30 09:20:55 -05:00
liamwhite 308b8211ef Merge pull request #12204 from t895/config-migration
android: Multi directory UI
2023-11-29 12:34:09 -05:00
t895 125b12e808 android: Save global settings in onStop 2023-11-27 23:46:30 -05:00
t895 f22099942f android: Multi directory UI 2023-11-27 23:46:29 -05:00
german77 007ca4f80e android: input: Flip abxy on backbone labs controllers 2023-11-25 18:22:03 -06:00
german77 a8211485f5 android: input: Flip abxy on redmagic controllers 2023-11-25 10:53:59 -06:00
GPUCode 1e5a1d1702 Address more review comments 2023-11-25 00:47:43 -05:00
Liam 8ad895c164 android: show current backend in fps overlay 2023-11-25 00:47:36 -05:00
GPUCode 3764cc4be2 android: Add cpu bakend gui toggle 2023-11-25 00:47:28 -05:00
t895 a830d9af3e android: Rework config lifecycle
Exposes options for initializing, unloading, reloading, and saving settings that let us update the config much more granularly based on what's happening in the UI.
2023-11-21 01:58:13 -05:00
t895 4b8d9604ab android: Remove ini4j 2023-11-21 01:58:13 -05:00
t895 227c5ecbb1 general: Remove inih 2023-11-21 01:58:13 -05:00
t895 230bd06245 config: Unify config handling under frontend_common
Replaces every way of handling config for each frontend with SimpleIni. frontend_common's Config class is at the center where it saves and loads all of the cross-platform settings and provides a set of pure virtual functions for platform specific settings.

As a result of making config handling platform specific, several parts had to be moved to each platform's own config class or to other parts. Default keys were put in platform specific config classes and translatable strings for Qt were moved to shared_translation. Default hotkeys, default_theme, window geometry, and qt metatypes were moved to uisettings. Additionally, to reduce dependence on Qt, QStrings were converted to std::strings where applicable.
2023-11-21 01:58:13 -05:00
liamwhite 671df51874 Merge pull request #12093 from t895/zip-intent
android: Use file picker intent for save exporter
2023-11-20 09:38:44 -05:00
liamwhite 93ae67ce97 Merge pull request #12092 from t895/recent-games-default
android: Select recently played games by default in search tab
2023-11-20 09:38:36 -05:00
t895 e60440e42c android: Use file picker intent for save exporter 2023-11-19 17:52:53 -05:00
t895 2129d33eaa android: Use path instead of programId for recently added / played key 2023-11-19 16:00:41 -05:00
t895 edb8d4c406 android: Select recently played games by default in search tab 2023-11-19 15:57:05 -05:00
t895 0b747daa41 android: Allow up to 400% for the limit speed percent setting 2023-11-19 15:36:25 -05:00
t895 3a60a7c776 android: Disable PiP by default 2023-11-15 10:30:43 -05:00
liamwhite d61160d21d Merge pull request #12034 from t895/fps-outline
android: Add drop shadow to FPS counter
2023-11-14 18:20:24 -05:00
t895 a1e302cc69 android: Don't enter PiP during startup or shutdown 2023-11-14 18:11:38 -05:00
t895 38c8e7f6ee android: Add drop shadow to FPS counter
Also let the style control the text size
2023-11-14 17:53:40 -05:00
t895 dfe5b1545d android: Use suspend function for creating dynamic shortcuts
If the coil loader ever got stuck when creating a dynamic shortcut icon, the app would freeze. This would happen most notably when booting nca format games. This pushes that process to a separate coroutine that can be cancelled by the main activity's lifecycle.
2023-11-14 10:57:00 -05:00
liamwhite 88fc1c2a8c Merge pull request #12014 from t895/shrink-logo
android: Shrink branding images
2023-11-13 09:12:16 -05:00
liamwhite 8f761e622c Merge pull request #12015 from t895/remove-auto
android: Remove "auto" region option
2023-11-13 09:12:07 -05:00
t895 975bdf8302 android: Use the same transition animation between every fragment in settings
The animation that I used for entering search was prone to weird visual bugs and could appear visually jarring. This just makes things appear more consistent.
2023-11-12 21:36:51 -05:00
t895 35f88ad90a android: Use more padding on top of each settings header 2023-11-12 21:36:51 -05:00
t895 74bb8371a1 android: Remove dividers between each setting 2023-11-12 21:36:51 -05:00
t895 260ff2b43f android: Add icons and descriptions to the first-level advanced settings page
Additionally adjusts padding to place the icons in-line with the back button in the top app bar and makes the text for normal settings appear in-line with the expanded top app bar title.
2023-11-12 21:36:50 -05:00
t895 2ed0850b83 android: Remove general section from settings
Limit speed options were moved to system, cpu accuracy was moved to debug, and PiP was moved to graphics.
2023-11-12 19:08:57 -05:00
t895 91cd83b480 android: Remove "auto" region option
This doesn't exist and if you clicked it, your region would be set to Taiwan.
2023-11-12 15:45:42 -05:00
t895 df567abb9d android: Add a landscape-specific layout to the about page
Moves the logo to the side to fit more information on screen
2023-11-12 13:56:42 -05:00
t895 f49e9a2a30 android: Shrink logo in about page 2023-11-12 13:56:13 -05:00
t895 551bde2598 android: Shrink logo in settings tab
Adjusts padding between the cards and logo to fit appropriately
2023-11-12 13:55:20 -05:00
t895 d2eac17cda android: Fix top app bar tint being cut off in the about fragment
Adjust margin on the toolbar, not the app bar
2023-11-12 13:54:31 -05:00
t895 95684f9fd4 android: Hide loading animation on first frame 2023-11-09 22:27:40 -05:00
liamwhite 3b292177eb Merge pull request #11972 from t895/fps-counter-adjustments
android: FPS counter adjustments
2023-11-06 11:09:59 -05:00
Charles Lombardo faa2a17ad1 android: Simplify FPS counter padding 2023-11-05 18:34:27 -05:00
Charles Lombardo 751211e681 android: Color the FPS counter white 2023-11-05 18:29:00 -05:00
Charles Lombardo b7dad6a1b0 android: Always update FPS counter 2023-11-04 00:04:20 -04:00
Charles Lombardo 0d957d05d6 android: Don't reload log/system after loading firmware/backup 2023-11-03 22:49:31 -04:00
Charles Lombardo ff12abbd81 android: Log more system information during startup
Logs device manufacturer/model, SoC manufacturer/model where available, and the total system memory
2023-11-03 15:52:01 -04:00
Charles Lombardo 9edeefab44 android: Fix fetching system memory size from MemoryUtil
We weren't rounding up the value at a unit before (GB, MB, etc) we were rounding up the total bytes and that would do nothing. This fixes that, and the check for total system memory during first emulation start where we tried to check the required system memory against 1 gigabyte.
2023-11-03 15:51:17 -04:00
Charles Lombardo c6c8a10ba5 android: Update surface parameters on emulation start
This adds a quick update that notifies the render surface if there was a change between surface creation and emulation starting.
2023-11-03 13:31:06 -04:00
liamwhite d2e10f69ef Merge pull request #11942 from t895/log-version
android: Adjust log lifecycle
2023-11-01 15:45:53 -04:00
Charles Lombardo 5611471909 android: Adjust log lifecycle
Now logging will start when the frontend starts like qt does. This also adjusts the share log button to follow where we share the current log if we just returned from a game or return the old log if we haven't started a game yet.
2023-11-01 14:41:19 -04:00
Charles Lombardo 4c2a802547 android: Use yuzu logging system
Now anything that's logged in the frontend will be printed into the log file
2023-11-01 14:41:19 -04:00
Charles Lombardo 2befdba713 android: Default to player number 0 if we get an input from an unrecognized controller 2023-11-01 13:10:51 -04:00
Charles Lombardo dc34cf21dc android: Adjust driver manager source string 2023-11-01 00:18:20 -04:00
Charles Lombardo 2ec397608f android: Reorganize settings tab 2023-11-01 00:17:38 -04:00
Charles Lombardo 008548cfb3 android: Auto-generate locale config 2023-10-31 22:07:44 -04:00
Charles Lombardo a3e2c34486 android: Update translations from transifex 2023-10-31 22:07:43 -04:00
liamwhite e6597d3c87 Merge pull request #11931 from t895/applet-launcher
android: Applet launcher UI
2023-10-31 16:55:57 -04:00
Charles Lombardo 035b4317a1 android: Initialize filesystem components during application start 2023-10-31 14:41:40 -04:00
Charles Lombardo 7cccf0e7a3 android: Implement applet launcher 2023-10-31 14:41:40 -04:00
liamwhite 85b4af2ba0 Merge pull request #11925 from t895/controller-fix
android: Fix controllers stuck on player 2
2023-10-31 09:47:42 -04:00
Charles Lombardo 9cdb6b1180 android: Reorder controller indexes and only use controllers
Before we could ignore controller inputs by forwarding them to player two if a non-controller was connected before and recognized as an input device.
2023-10-30 21:38:51 -04:00
liamwhite bf9bd6b521 Merge pull request #11922 from t895/simplify-card-layout
android: Simplify game card layout
2023-10-30 15:32:45 -04:00
Charles Lombardo 8e9b3d97e8 android: Simplify game card layout
Using a material card view to shape the image was just a waste of a layout pass. A shapeable image view does what we want and does it faster.
2023-10-30 13:28:52 -04:00
Charles Lombardo 366f5b80d6 android: FileUtil: Add option to suppress log for native exists() calls
We often check for the existence of files that only exist in ExeFS so this can spam logcat with useless messages when scanning for games.
2023-10-30 11:38:10 -04:00
Charles Lombardo df17162f9c android: Fix resolving android URIs in native code 2023-10-30 11:38:10 -04:00
Charles Lombardo 8500e7bc8f android: Refactor game metadata collection to new file
This also removes irrelevant data and adds new information from/to the Game data class and RomMetadata struct
2023-10-30 11:38:09 -04:00
Charles Lombardo 225df3ff23 android: Use header for EmulationSession 2023-10-30 11:28:23 -04:00
liamwhite 1e223c499b Merge pull request #11916 from t895/focus-fix
android: Release touch on input overlay when opening in-game menu
2023-10-30 09:59:53 -04:00
liamwhite 2fd7fb828b Merge pull request #11915 from t895/startup-freeze
android: Move game deserialization to another thread
2023-10-30 09:59:45 -04:00
Charles Lombardo 94d24c3b42 android: InputHandler: Convert to object
This doesn't need to be an instance of a class because it doesn't hold any data. It's just all helper functions.
2023-10-30 01:20:27 -04:00
Charles Lombardo a70a3bbcd0 android: Removed unused ControllerMappingHelper 2023-10-30 01:20:27 -04:00
Charles Lombardo 87f3232ae9 android: Release touch on input overlay when opening in-game menu 2023-10-29 21:42:47 -04:00
Charles Lombardo 44e8e8c169 android: Move game deserialization to another thread
Deserializing games from the cache in shared preferences was done on the main thread and could cause a stutter on startup.
2023-10-29 21:29:32 -04:00
Charles Lombardo 80087ac9dc android: Break home settings into grid with large screens 2023-10-29 13:47:41 -04:00
Charles Lombardo f34c6df566 Merge pull request #11767 from t895/gradle-stuff
android: Update dependencies
2023-10-13 15:08:47 -04:00
Charles Lombardo a8aaa2674c android: Fix incorrect assumption for driver installation validation
The driver was assumed to be installed at this point before I made a refactor. Now we just check if the copy operation was successful and delete the file if it fails.
2023-10-13 13:50:38 -04:00
Charles Lombardo fca03a83ef android: Remove unnecessary flag to extract native libs in AndroidManifest.xml 2023-10-13 12:55:41 -04:00
Charles Lombardo 646a5d1bc1 android: Update dependencies
Updates to androidx navigation, lifecycle, preference, fragment, recyclerview, and core
2023-10-13 12:55:41 -04:00
Charles Lombardo bacfefe92c android: Update ndk to 26.1.10909125
The new ndk uses LLVM 17.0.2 so we can remove the LLVM download and libc++ options for the android builds
2023-10-13 12:55:41 -04:00
liamwhite 19834c6a2e Merge pull request #11649 from t895/driver-manager
android: Driver manager
2023-10-13 09:28:53 -04:00
Charles Lombardo 75d58610c0 android: Update AGP to 8.1.2 2023-10-12 18:59:57 -04:00
Charles Lombardo 1ed340f317 android: Add GPU driver management fragment
Implements a GPU driver manager that saves all drivers to the user data directory and asynchronously installs drivers when they're needed.
2023-10-12 17:17:21 -04:00
Liam 79e055318c vk_present_manager: recreate surface on any surface loss 2023-10-02 19:07:18 -04:00
Charles Lombardo 2a67cc8a66 android: Use application context for all FileUtil functions 2023-10-01 15:56:02 -04:00
liamwhite 7ecb4052bf Merge pull request #11604 from t895/only-install-nsp
Frontend: Remove ability to install xci files
2023-09-28 09:35:16 -04:00
Charles Lombardo fe07e39d1a Merge pull request #11613 from t895/fragment-exception-change
android: Various play store fixes
2023-09-27 18:08:54 -04:00
Charles Lombardo 3a1e8ce888 android: Prevent crash when trying to change pages in setup fragment
Sometimes when we want to change the current setup page, the current view isn't available and we try to alter the current view. This adds a guard to prevent that issue.
2023-09-27 13:40:09 -04:00
Charles Lombardo 95c131060b android: Prevent setup fragment crash in background
Sometimes during onSaveInstanceState, the SetupFragment would crash the app in the background if we tried to store the state of a view.
2023-09-27 13:40:09 -04:00
Charles Lombardo 8d16a74198 android: Don't update views if binding is null in onConfigurationChanged 2023-09-27 13:40:09 -04:00
Charles Lombardo 7bde8691f2 android: Don't wait for post to update input overlay visibility 2023-09-27 13:40:09 -04:00
Charles Lombardo 3d9fd80496 android: Close activity with toast if emulation has no game 2023-09-27 13:40:09 -04:00
Charles Lombardo 5ddc88448c Merge pull request #11616 from t895/save-error
android: Correctly reload settings file during reset
2023-09-27 10:51:05 -04:00
Charles Lombardo 13ec52bdf3 Merge pull request #11603 from t895/consolidate-installs
android: Consolidate installers to one fragment
2023-09-27 10:50:38 -04:00
Charles Lombardo 92a02ec0b5 android: Correctly reload settings file during reset
Previously the config file wasn't being recreated when resetting all settings. Now just call into native code to recreate the settings file and reload all defaults.
2023-09-27 01:15:57 -04:00
Charles Lombardo 982fe27279 android: Remove ability to install xci files 2023-09-26 18:56:19 -04:00
Charles Lombardo ed61a7a22a android: Adjust failure dialogs for user data and firmware installers 2023-09-26 13:59:46 -04:00
Charles Lombardo c44545c6d2 android: Fix cancel behavior on indeterminate progress dialog fragment
The dialog would previously dismiss immediately when it should stay alive until the task is cancelled completely.
2023-09-26 13:27:28 -04:00
Charles Lombardo 8c7d6c0675 android: Refactor zip code into FileUtil 2023-09-26 13:26:20 -04:00
Charles Lombardo 07d7c5b927 android: Use a different string for the content install dialog 2023-09-26 00:26:46 -04:00
Charles Lombardo 33b0150496 android: Fix case bug for installing game content
The C++ side never made the filename lowercase when checking the extension. This just passes the pre-prepared extension to have it checked.
2023-09-26 00:25:20 -04:00
Charles Lombardo 863cbaaeb0 android: Consolidate installers to one fragment
This also allows save imports to happen without starting a game at first.
2023-09-25 23:48:28 -04:00
Charles Lombardo 13f1e63659 Merge pull request #11594 from t895/rotation-fix
android: Prevent nav bar shade from laying out across screen
2023-09-25 20:57:33 -04:00
Charles Lombardo 1606e702c5 android: Prevent click ripple from appearing on loading card 2023-09-25 18:33:21 -04:00
Charles Lombardo b7f8339347 android: Remove bottom attribute from navigation view
Using the "bottom" attribute would break the navigation view and prevent things like rounded corners and lock modes from being applied properly.
2023-09-25 18:31:23 -04:00
Charles Lombardo df8de8b260 android: Prevent nav bar shade from laying out across screen 2023-09-25 18:10:58 -04:00
Charles Lombardo 6147477bbd android: Use measured size of view for input overlay bounds
Even after updating the androidx window library, this did not fix the issue for all devices. This ensures that the measured size of the overlay will be used instead of a potentially larger one seen by androidx.
2023-09-24 22:18:38 -04:00
Charles Lombardo 4e485766bd android: Use smaller read buffer size for exporting user data
The File.readBytes() extension attempts to load an entire file into a byte array. This would cause crashes when loading huge files into memory.
2023-09-22 16:51:48 -04:00
Charles Lombardo 6315cb8010 android: Adjust valid user data check 2023-09-22 12:05:44 -04:00
Charles Lombardo 156c12d97d Merge pull request #11564 from t895/overlay-inset-fix
android: Update androidx window library to 1.2.0-beta03
2023-09-21 19:15:36 -04:00
Charles Lombardo 68068a8113 android: Update androidx window library to 1.2.0-beta03
Fixes an issue with the input overlay on certain devices where the controls would appear offscreen.
2023-09-21 17:36:14 -04:00
Charles Lombardo e6c468f8a4 Revert "android: Allow save imports always" 2023-09-21 02:57:28 -04:00
Charles Lombardo 93ab5df3ee android: Remove unused strings related to the save manager 2023-09-20 15:01:03 -04:00
Charles Lombardo e68fb0a884 android: Allow importing saves even if no saves are found
Exporting still won't be allowed on an empty save directory.
2023-09-20 15:00:34 -04:00
Charles Lombardo a6a0aaa013 android: Add import/export buttons for user data 2023-09-19 15:54:47 -04:00
liamwhite 49b783c9a2 Merge pull request #11542 from t895/touch-offset-fix
android: Screen orientation and aspect ratio fixes
2023-09-19 09:25:09 -04:00
Charles Lombardo eac616b224 android: Ignore validation layers library in git 2023-09-19 00:31:43 -04:00
Charles Lombardo 88b8509c53 android: Don't pause emulation when entering PiP 2023-09-19 00:31:43 -04:00
Charles Lombardo ff4322ca01 android: Fix showing input overlay in PiP 2023-09-19 00:31:43 -04:00
Charles Lombardo 329403d279 android: Properly update emulation surface
Previously the emulation surface wasn't being updated during configuration changes and only during specific view events. This would break input and the screen dimensions after each orientation/aspect ratio change. Now a new surface is provided every time and the display dimensions are updated as needed.
2023-09-19 00:31:43 -04:00
Charles Lombardo 755928ffd1 android: Export PiP receiver on API 33 and later
Could cause crashes on API 33+ devices
2023-09-17 17:33:33 -04:00
Charles Lombardo 2940967210 android: Set up signing config for release builds 2023-09-17 01:22:16 -04:00
Charles Lombardo 6af676e2ce android: Collect task state once view is created
Before the viewLifecycleOwner wasn't ready and would cause a crash
2023-09-16 17:15:20 -04:00
liamwhite f56103605e Merge pull request #11492 from lat9nq/c-numeric-conversions
general: Remove uncaught usages of C++ string number conversions
2023-09-16 11:40:03 -04:00
Charles Lombardo f6b02d059e android: Remove settings interface specifically for audio mute 2023-09-14 23:46:19 -04:00
Charles Lombardo 1fd72951b8 Merge pull request #11507 from t895/emulation-stop-fix
android: Return the correct status code on emulation stop
2023-09-14 23:22:00 -04:00
Charles Lombardo 3ce204e7ba Merge pull request #11506 from t895/icon-fix
android: Use resource as shortcut intermediary
2023-09-14 23:21:45 -04:00
Charles Lombardo 52d7075ae0 android: Return the correct status code on emulation stop 2023-09-14 23:08:06 -04:00
Charles Lombardo a1b80ed37a Merge pull request #11505 from t895/config-patch
android: Don't reinitialize settings on emulation start
2023-09-14 22:20:45 -04:00
Charles Lombardo ebcde602e7 android: Use resource as shortcut intermediary
Fixes issue where the shortcut icon would appear cropped on certain devices
2023-09-14 22:19:08 -04:00
Charles Lombardo b1e7638eab Merge pull request #11504 from t895/emu-args
android: Fix emulation to settings navigation args
2023-09-14 21:25:58 -04:00
Charles Lombardo 136e1f395d android: Don't reinitialize settings on emulation start
Config is already initialized on application start
2023-09-14 21:25:17 -04:00
Charles Lombardo 003ee32d6d android: Fix emulation to settings navigation args 2023-09-14 20:24:43 -04:00
Charles Lombardo e6595bb31d android: Delay collecting UI state in games fragment 2023-09-14 20:02:48 -04:00
Charles Lombardo 89660a50bf android: Refactor menu tags to enum 2023-09-14 15:18:56 -04:00
Charles Lombardo 0c2cbd2469 android: Use StateFlow instead of LiveData 2023-09-14 15:18:56 -04:00
lat9nq a681050e24 android/config: Remove uncaught usage of stoul 2023-09-13 13:36:25 -04:00