This commit introduces the ability to launch games with custom configurations supplied via an Android intent. This allows external applications to provide specific settings for a game at launch time.
Key changes include:
* **`CustomSettingsHandler.kt`**: A new class responsible for:
* Processing incoming intents with custom settings.
* Finding the target game in the user's library by its title ID.
* Writing the custom settings to a per-game INI file (`config/custom/<title_id>.ini`).
* Handling potential conflicts if a custom configuration already exists, prompting the user to overwrite or cancel.
* Integrating with `DriverResolver` to check for and handle required GPU drivers specified in the custom settings.
* Initializing the native per-game configuration.
* **`DriverResolver.kt`**: A new utility class for managing GPU drivers specified in custom settings:
* Extracts the driver path from the custom settings INI content.
* Checks if the required driver exists locally.
* If not found locally, searches for the driver in predefined GitHub repositories (Mr. Purple Turnip, GameHub Adreno 8xx, KIMCHI Turnip, Weab-Chan Freedreno).
* Prompts the user to download and install the missing driver if found online.
* Handles automatic download and installation of drivers using `DriverViewModel`.
* Notifies the user if a required driver cannot be found or installed.
* **`AndroidManifest.xml`**:
* Added a new intent filter for the action `dev.eden.eden_emulator.LAUNCH_WITH_CUSTOM_CONFIG` to `EmulationActivity`. This allows the app to respond to custom settings intents.
* **`EmulationFragment.kt`**:
* Modified `onCreate` to detect and handle the new custom settings intent.
* If a custom settings intent is received:
* It uses `CustomSettingsHandler.applyCustomSettingsWithDriverCheck` to process the settings asynchronously. This allows for driver checks and user interaction (e.g., overwrite confirmation, driver installation).
* Displays appropriate error messages via `Toast` if custom settings processing fails (e.g., game not found, driver issues).
* The game is then launched with the applied custom settings.
* If a regular file intent or navigation arguments are used, the existing logic for loading game configurations (including custom per-game configs) is retained.
* Ensures that per-game configurations are correctly loaded or unloaded based on how the game is launched.
Previously, if the user selected a per-game driver and that driver was
deleted from the global menu, it would cause a crash, it was because of
a mismatch between FileNotFoundException and NoSuchFileException. To
avoid the inconsistency I just made the check for if a file exists or
not to be separate.
Signed-off-by: Aleksandr Popovich <popovich@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/58
Co-authored-by: Aleksandr Popovich <popovich@eden-emu.dev>
Co-committed-by: Aleksandr Popovich <popovich@eden-emu.dev>
Extracts some firmware version/verification functions into
`frontend_common` to reduce duplicate code, especially for the new QML
frontend.
Additionally adds a check for games that are known to require firmware
(e.g. MK8DX) and warns the user if they don't have firmware installed
and attempt to run the game.
Firmware installation is to be in a separate PR.
Signed-off-by: crueter <crueter@eden-emu.dev>
Co-authored-by: Aleksandr Popovich <popovich@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/38
- adds the option to show power draw in amperes
- shows if the battery is charging
Signed-off-by: Aleksandr Popovich <alekpopo@pm.me>
Co-authored-by: Aleksandr Popovich <alekpopo@pm.me>
Reviewed-on: https://git.bixed.xyz/Bix/eden/pulls/22
- Cherry picked the patches from xbzk PR.
Signed-off-by: Aleksandr Popovich <alekpopo@pm.me>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/254
Co-authored-by: Aleksandr Popovich <alekpopo@pm.me>
Co-committed-by: Aleksandr Popovich <alekpopo@pm.me>
Signed-off-by: Aleksandr Popovich <alekpopo@pm.me>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/252
Co-authored-by: Aleksandr Popovich <alekpopo@pm.me>
Co-committed-by: Aleksandr Popovich <alekpopo@pm.me>
The actual SPIRV Shader Optimization option doesn't seem to do anything as long as it isn't vinculed, so let's rework it to make it work
Co-authored-by: Gamer64 <76565986+Gamer64ytb@users.noreply.github.com>
Co-authored-by: echosys <echosys@noreply.localhost>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/238
quick fix for refresh features in portrait, casting them as SwipeRefreshLayout, since MidScreenSwipeRefreshLayout only exists in landscape.
Co-authored-by: Allison Cunha <allisonbzk@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/231
Co-authored-by: xbzk <xbzk@noreply.localhost>
Co-committed-by: xbzk <xbzk@noreply.localhost>
This seems to improve some games graphics and it may be helpful for MSAA, at the cost of reducing a bit the performance.
Co-authored-by: Gamer64 <76565986+Gamer64ytb@users.noreply.github.com>
Co-authored-by: crueter <swurl@swurl.xyz>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/235
Co-authored-by: Gamer64 <gamer64@noreply.localhost>
Co-committed-by: Gamer64 <gamer64@noreply.localhost>
Currently Android only, will need to be added to desktop.
Android incorrectly records firmware as 19.0.1 if on a higher version...
TODO:
- [x] desktop
- [x] fix android
Signed-off-by: crueter <swurl@swurl.xyz>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/222
Co-authored-by: crueter <swurl@swurl.xyz>
Co-committed-by: crueter <swurl@swurl.xyz>
Adds Airplane Mode function to settings, host states, etc.
Windows implemented only for now.
Closes#203
Co-authored-by: crueter <swurl@swurl.xyz>
Co-authored-by: Aleksandr Popovich <alekpopo@pm.me>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/204
Co-authored-by: Maufeat <sahyno1996@gmail.com>
Co-committed-by: Maufeat <sahyno1996@gmail.com>
Build with: ./gradlew assembleGenshinSpoofRelease
Using com.miHoYo.Yuanshen to enable device dependent features such as AI frame generation.
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/206
Co-authored-by: Bix <xq9zp7f2@proton.me>
Co-committed-by: Bix <xq9zp7f2@proton.me>
Uses native power state methods to display battery percentage and charging state correctly. Mainly for qlaunch.
Tested on Windows, Linux. Mac and Android
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/197
Co-authored-by: Maufeat <sahyno1996@gmail.com>
Co-committed-by: Maufeat <sahyno1996@gmail.com>
intended to fix top margin for screens with non zero cutout insets
Co-authored-by: Allison Cunha <allisonbzk@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/185
Co-authored-by: xbzk <xbzk@noreply.localhost>
Co-committed-by: xbzk <xbzk@noreply.localhost>
- Runtime validation rather than toasts
- Refactored some minor details
- Improved language clarity
- add TODOs
Signed-off-by: crueter <swurl@swurl.xyz>
Co-authored-by: Aleksandr Popovich <alekpopo@pm.me>
Co-authored-by: Pavel Barabanov <pavelbarabanov94@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/175
Co-authored-by: crueter <swurl@swurl.xyz>
Co-committed-by: crueter <swurl@swurl.xyz>