summaryrefslogtreecommitdiff
path: root/src/android
AgeCommit message (Collapse)Author
2025-12-24Migrate to Coil3HEADmainMike Lothian
2025-12-24Upgrade dependenciesMike Lothian
2025-10-03Use NDK 29.0.14033849Mike Lothian
2025-09-02Use NDK 29.0.13846066Mike Lothian
2025-05-12Add Samsung Game Hub support, GAME category, optional NFC, and minor cleanupWasted
2025-05-12chore: Make firmware optional rather than requiredZephyron
This commit makes firmware non-mandatory for the emulator to function. Changes include: - Converting firmware errors to warnings in loader - Removing firmware requirement checks in Android - Removing firmware and title.keys setup screens - Adding --allow-unsupported flag for Android vcpkg - Updating vcpkg baseline - Enforce software keyboard in Android Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-05-12android: Update build configuration and package identifiersZephyron
Updates the Android build configuration with several important changes: - Change application ID from com.antutu.ABenchMark to org.citron.citron_emu - Upgrade CMake version from 3.31.6 to 4.0.1 - Update Android Gradle plugin from 8.9.0 to 8.9.2 - Add CMAKE_POLICY_VERSION_MINIMUM=3.5 to CMake arguments - Keep Kotlin version at 1.9.20 These changes align the Android package identifier with the Citron project and update build tool versions to ensure compatibility with modern Android development requirements. Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-05-12android: Update build system and optimize ARM NCE implementationZephyron
- Update Kotlin from 1.9.20 to 2.1.20-RC2 - Upgrade Java version from 17 to 21 - Update Android Gradle plugin from 8.1.2 to 8.9.0 - Update Gradle wrapper from 8.10.2 to 8.11.1 - Update NDK version to 29.0.13113456 rc1 - Update all Android dependencies to latest versions - Simplify ARM NCE implementation by removing custom TLB handling - Improve alignment and access fault handling - Update hardware BASE_CLOCK_RATE from 1.02GHz to 1.785GHz - Add citron Emulator Project copyright notices Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-05-12Fix a few stringsvampiric_x
2025-05-12android: Initial multiplayer supportvampiric_x
And give room owners mod access on both Android and QT
2025-05-12android: Update build dependencies and configurationsZephyron
Updates various build dependencies and configurations for the Android build: * Upgrade Android Gradle Plugin to 8.8.1 * Update Kotlin to 2.1.20-RC * Upgrade NDK to 28.0.13004108 * Update target/compile SDK to Android 35 * Upgrade Java/Kotlin target to JVM 21 * Enable additional release optimizations (shrinkResources, proguard-android-optimize) * Update CMake to 3.31.5 * Update various AndroidX and support library dependencies * Change CMake boolean flags from 0/1 to OFF/ON * Update ktlint to 0.51.1 and related plugins This commit modernizes the Android build system and enables additional optimizations for release builds.
2025-05-12build: upgrade fmt and SDL2Zephyron
Update fmt library to version 11.0.2 and make necessary adjustments: - Replace fmt/format.h includes with fmt/ranges.h - Add const qualifiers to formatter::format functions - Update CMake to require fmt version 11 Additional dependency updates: - Update SDL2 bundled version from 2.28.2 to 2.32.0 - Update catch2 to version 3.7.1 - Update vcpkg baseline to ca846b21276c9a3171074ac8d2b4f6516894a7d0
2025-05-11android: Disable RAM Overlay By DefaultZephyron
- TODO
2025-05-11network: Fix 0.0 FPS bug on Android (Part 2)Zephyron
- Add network interface enumeration support for Android - Implement fallback loopback interface when no interfaces are detected - Add ability to force offline mode on critical network errors - Improve socket initialization with better error handling - Add socket state tracking (domain, type, protocol) - Make translation functions static and mark as maybe_unused - Add detailed logging for network initialization failures Part 2 of the Android FPS bug fix focuses on network resilience, particularly handling cases where network initialization fails. Instead of hanging the emulator, it now gracefully falls back to offline mode and provides better diagnostic information.
2025-05-11feat: Add RAM usage overlay and improve thermal displayZephyron
- Add new RAM usage overlay showing current/max memory usage with color gradient - Simplify thermal overlay to show temperature in C/F with color indication - Add SHOW_RAM_OVERLAY boolean setting (disabled by default in UI) - Set default values for thermal overlay and black backgrounds to true - Update copyright headers to include Citron Emulator Project The RAM overlay displays native heap usage with color gradient from green (low usage) to red (high usage). The thermal display was simplified to show just temperatures while maintaining the color indication based on system thermal status.
2025-05-11Update build.gradle.ktsMike Lothian
2025-05-11android: Fix non-scrollable legal disclaimer on setupvampiric_x
2025-05-11android: Update Gradle and Java version requirementsZephyron
Updates Android build configuration to use newer versions: - Upgrade Java/JVM target from 17 to 21 - Update Android Gradle Plugin from 8.1.2 to 8.8.0 These changes modernize the Android build system to use the latest LTS version of Java and the most recent stable Android Gradle Plugin. This enables access to newer language features and build optimizations while maintaining compatibility with modern Android development tools.
2025-05-11android: Fix battery temperature reading in EmulationFragmentZephyron
Replaces the battery temperature reading implementation with a more compatible approach using ACTION_BATTERY_CHANGED broadcast intent. This change provides better backwards compatibility and adds proper error handling for the temperature reading functionality.
2025-05-11shader_recompiler: Add stubs for CSM/FCSM flow test conditionsZephyron
Add stub implementations for previously unhandled flow test conditions in the shader recompiler's IR emitter. These conditions were previously throwing "Not Implemented" exceptions when encountered. The following flow test cases are now stubbed: - FCSM_TR (Fragment Shader Coarse/Fine Mode Test and Reject) - CSM_TA (Coarse/Fine Mode Test Accept) - CSM_TR (Coarse/Fine Mode Test and Reject) - CSM_MX (Coarse/Fine Mode Maximum) - FCSM_TA (Fragment Shader Coarse/Fine Mode Test Accept) - FCSM_MX (Fragment Shader Coarse/Fine Mode Maximum) Currently these stubs: 1. Return false (ir.Imm1(false)) as a placeholder value 2. Log a warning message indicating the stub 3. Allow shaders using these conditions to compile rather than fail This is a step toward proper implementation of coarse/fine mode shader operations. The stubs prevent crashes while making it clear which code paths need full implementation. Technical notes: - Removed the previous FCSM_TR implementation that used flag operations - Added consistent warning messages for tracking stub usage - Kept within the existing GetFlowTest switch statement structure
2025-05-11android: Add USE_AUTO_STUB settingZephyron
Implements the USE_AUTO_STUB setting in the Android frontend: - Added USE_AUTO_STUB to BooleanSetting enum - Added UI switch setting with description in SettingsItem - Added setting to system settings section in SettingsFragmentPresenter - Added string resources for setting title and description The setting allows users to toggle automatic stubbing of missing services and functions, which may improve compatibility at the cost of stability.
2025-05-11feat: Improve thermal display and build systemZephyron
- Replace emoji thermal indicators with modern progress bar UI - Switch temperature source to battery sensor for better accuracy - Adjust temperature thresholds (30°C-45°C range) - Add automatic Vulkan Validation Layer download for Android The thermal display now shows a visual progress bar with percentage instead of emojis, making it easier to gauge system temperature at a glance. Temperature reading now comes from the battery sensor which is more reliable across devices. Build system improvements include automated VVL binary downloads and installation for Android builds when CITRON_DOWNLOAD_ANDROID_VVL is enabled.
2025-05-11Pass optimisations to CMake via build.gradle.ktsMike Lothian
This passes compiler flags from Gradle to CMake
2024-12-20Fix Android crash caused by incorrect type in progress dialog callbacks (#58)echosys
Bug discovered via an incomplete fix in Sudachi. Some Progress Dialog callbacks pass the wrong type (Double instead of Long) from C++ to Java code causing a crash at runtime. To fix this a new function is implemented to convert to a Java Long and that is used instead of the function that converts to a Double. Reviewed-on: http://vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion/torzu-emu/torzu/pulls/58 Co-authored-by: echosys <echosys@noreply.localhost> Co-committed-by: echosys <echosys@noreply.localhost>
2024-12-20Update Android app dependencies (#52)echosys
Update the dependencies of the Android app (used libraries and SDK). The Android SDK was not updated to the latest version, because then the build fails. The `gradle-wrapper.jar` (the only binary blob touched in this PR) can be verified by checking against the official checksums [here](gradle-wrapper.jar). Co-authored-by: spectranator <spectranator@vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion> Reviewed-on: http://vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion/torzu-emu/torzu/pulls/52 Co-authored-by: echosys <echosys@noreply.localhost> Co-committed-by: echosys <echosys@noreply.localhost>
2024-12-20Fix x86_64 build for Android (#49)echosys
Fixes x86_64 builds for Android by stubbing a function that calls into libadrenotools to query GPU driver information. libadrenotools is only available for arm64. The function should not be called anyways, as the menu that would display the information is disabled on unsupported devices. To enable x86_64 for building change the line `abiFilters += listOf("arm64-v8a")` in `src/android/app/build.gradle.kts` to `abiFilters += listOf("arm64-v8a", "x86_64")`. I did not do this by default as it significantly increases the build time (the native part needs to be build once for each architecture) and increases the app size (this is less of a concern as games are already significantly larger). It might allow usage on Chromebooks (the internet tells me those run on x86_64) and some few Android devices. The main advantage I see is for development of the app itself, as it allows running it in waydroid for local testing. Reviewed-on: http://vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion/torzu-emu/torzu/pulls/49 Co-authored-by: echosys <echosys@noreply.localhost> Co-committed-by: echosys <echosys@noreply.localhost>
2024-12-20Remove early access Android app variant (#27)echosys
Removes the early access Android app variant from the build config and removes the get early access button from the settings tab. I also tried to remove the code for the variant (different logo + colors) and the code for the button, but I am no Android developer so I might have missed some stuff. Additionally I did not touch the translation files. Essentially this gets rid of the now useless fancy button and improves build times as it only needs to build one apk now. Reviewed-on: http://vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion/torzu-emu/torzu/pulls/27 Spec's note: Whatever there's left can still be removed at a later point. Co-authored-by: echosys <echosys@noreply.localhost> Co-committed-by: echosys <echosys@noreply.localhost>
2024-12-20Add option to only optimize SPIRV during load (#13)echosys
Adds a new option "On Load" to the "Optimize SPIRV output" option that turns on optimizations during the loading of the shader cache from disk, but turns it off after that. The previous checkbox states have been named "Never" for unchecked and "Always" for checked. The idea is that once the shader cache has most of the shaders in a game cached they can be optimized during initial game startup (where a performance hit matters less) and the few shaders that get compiled during runtime are not optimized to reduce performance hits. Most of the commit is adding the setting to the Android app, the main logic is in the `gl_shader_cache.cpp` and `vk_pipeline_cache.cpp` files. Reviewed-on: http://vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion/torzu-emu/torzu/pulls/13 Co-authored-by: echosys <echosys@noreply.localhost> Co-committed-by: echosys <echosys@noreply.localhost>
2024-12-20Increase Limit ( FSR Sharp , AUDIO ) AndroidXForYouX
Increase Limit FSR Sharp ( 0 - 200 ) Increase Limit Audio ( 0-120 )
2024-12-20Add 32:9 AndroidXForYouX
Fix Issue Aspec Ratio For Android
2024-12-20Add 32:9 For AndroidXForYouX
Add 32:9 For Android Fix Issue Aspec Ratio
2024-12-20Add 32:9 For AndroidXForYouX
32:9 For Android Fix Issue Aspce Ratio
2024-12-20Android: Add ability to run QlaunchSharpy66
2024-03-01Revert arbaic translationPengfei Zhu
2024-03-01Remove trailing whitespacesPengfei Zhu
2024-03-01Update translations (2024-03-01)The yuzu Community
2024-02-23Merge pull request #13073 from FearlessTobi/fsp-srv-ipcliamwhite
fsp: Migrate remaining interfaces to cmif serialization
2024-02-21Merge pull request #13105 from t895/connection-fixliamwhite
android: Misc controller fixes
2024-02-21android: Connect controllers with supported stylest895
If you tried to connect a controller that was previously configured with an unsupported style for your game, when you try to connect that controller, it will immediately disconnect. This ensures that the controller that is being connected will be changed to the first supported style index before being connected.
2024-02-21android: Add additional check for hasMappingt895
Controls can have no mapping if they are either "[empty]" or and empty string. This was causing an issue if you reset mapping on all controllers and then tried to play a game. The check to determine whether auto mapping was required would fail and leave you will no mapped controllers. This feels a bit like user error but it smooths things out if you forget so I see it as necessary.
2024-02-21android: Enable all controller styles on emulation shutdownt895
2024-02-20android: Fix extra stick setting default valuest895
The default value was accidentally hardcoded for all extra stick settings
2024-02-20android: Expose device name settingt895
2024-02-20android: Add StringInputSetting settings itemt895
2024-02-19Merge pull request #13086 from t895/clear-button-fixliamwhite
android: Fix broken clear button check
2024-02-19android: Have input overlay follow player 1 style index (#13085)Charles Lombardo
2024-02-19android: Fix broken clear button checkt895
2024-02-19android: Fix overlay visibility reset (#13083)Charles Lombardo
2024-02-19android: Show done button when configuring input overlay (#13082)Charles Lombardo
2024-02-19Address review commentsFearlessTobi