Commit Graph

385 Commits

Author SHA1 Message Date
OpenSauce04
a8ebd0f551 DocumentsTree: Put resolvePath under a strict directory whitelist 2026-03-08 18:46:09 +00:00
OpenSauce04
fac63ce6b1 DocumentsTree: Re-implement getFilename without resolvePath 2026-03-08 18:46:09 +00:00
PabloMK7
2207be30a9
core: Add "toggle unique data console type" option (#1826) 2026-03-06 01:23:35 +01:00
OpenSauce04
93e831decb android: Fixed invalid default config content, resulting in a crash 2026-03-03 18:34:53 +00:00
OpenSauce04
d6fadff3ee Updated translations via Transifex 2026-03-03 16:30:03 +00:00
OpenSauce
068d6598bc
Configuration backend improvements Pt. 1 (#1762)
* Convert all setting keys in settings.h into hana strings

* Derive libretro setting keys from common/settings.h hana strings

* settings.h: Reduce code repetition in key definitions via macro

* Implemented mechanism to pass our C++ setting keys to Android/Kotlin

None of the Android keys have been moved over as of this commit, this is just prep work

* jni_settings_keys.cpp.in: Removed redundant code

* Migrate (almost) all Android setting string keys over to SettingKeys

Also some slight cleanup

* Updated license headers

* Fixed top custom width erroneously being used in place of top custom height

* Migrate (probably) all setting string keys to Settings::QKeys

* Migrated several previously missed string keys to generated keys

* SettingKeys.kt: Visually seperate shared and Android-exclusive keys, similar to GenerateSettingKeys.cmake

* android: sdl2_config --> android_config

Not sure why these values are named this way. Hold-over from SDL2 frontend?

* android: Generate and validate default config.ini dynamically

* Settings: Assume C-style string keys by default

Relative to the previous commit, the following names have changed:
- Settings::Keys --> Settings::HKeys
- Settings::CKeys --> Settings::Keys

* default_ini.h: Fixed formatting warning

* Comment cleanup

* android: Fixed compilation failure due to incorrect namespace

* config.cpp: Use ASSERT_MSG instead of LOG_ERROR and ASSERT(false)
2026-03-02 23:26:43 +00:00
Richard
526d9d4cea
android: Add auto-map controller button with long-press to clear all bindings (#1769) 2026-02-27 19:57:41 +01:00
David Griswold
b477ba09c1
Ability to select which layouts to cycle with the cycle layout hotkey (#1430) 2026-02-27 13:21:53 +01:00
David Griswold
6b2ac400eb
Android: Hotkey Enable Button (#1464) 2026-02-26 18:40:42 +01:00
David Griswold
5ac0ef8fde
hide portrait layout menu on landscape and vice versa (#1473) 2026-02-26 14:27:18 +01:00
David Griswold
3255620934
Implement integer scaling (#1400) 2026-02-26 13:33:13 +01:00
OpenSauce04
ac0ec5edea Updated translations via Transifex 2026-02-21 17:17:12 +00:00
OpenSauce04
354f5d698f Updated translations via Transifex 2026-02-17 13:36:36 +00:00
PabloMK7
304db9173b
video_core: vulkan: Add disk shader cache (#1725)
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (appimage-wayland) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (googleplay) (push) Has been cancelled
citra-build / android (vanilla) (push) Has been cancelled
citra-build / docker (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
2026-02-16 15:59:22 +01:00
OpenSauce04
dd65ef4749 Updated translations via Transifex
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (appimage-wayland) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (googleplay) (push) Has been cancelled
citra-build / android (vanilla) (push) Has been cancelled
citra-build / docker (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
2026-01-29 12:17:35 +00:00
PabloMK7
fc137b0229
frontend: Revert removal of .3ds support (#1701)
* frontend: Revert removal of .3ds support

* Added 3ds extension to Info.plist

* Added .3ds extension to org.azahar_emu.Azahar.xml

* game_list.h: Removed leftover definitions

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2026-01-29 12:10:02 +00:00
OpenSauce04
0a705b7449 Updated translations via Transifex
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (appimage-wayland) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (googleplay) (push) Has been cancelled
citra-build / android (vanilla) (push) Has been cancelled
citra-build / docker (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
2026-01-25 00:58:03 +00:00
David Griswold
a6688abcf5 update language and use UP instead of DOWN on axis mapping 2026-01-24 23:31:01 +00:00
PabloMK7
b0fea112e8 core: Fix accurate multiplication loading (home menu and savestate)
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (appimage-wayland) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (googleplay) (push) Waiting to run
citra-build / android (vanilla) (push) Waiting to run
citra-build / docker (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
2026-01-22 15:11:38 +01:00
David Griswold
102f7d24fc
android: prioritize non-built-in displays (#1667) 2026-01-22 12:55:58 +01:00
OpenSauce04
0805711cba Updated translations via Transifex
Some checks failed
citra-transifex / transifex (push) Waiting to run
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (appimage-wayland) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (googleplay) (push) Has been cancelled
citra-build / android (vanilla) (push) Has been cancelled
citra-build / docker (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
2026-01-19 21:17:42 +00:00
OpenSauce
4deb7e63b5
DirectoryInitialization.kt: Switch to getFilesDir for internalUserPath (#1646)
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (appimage-wayland) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (googleplay) (push) Waiting to run
citra-build / android (vanilla) (push) Waiting to run
citra-build / docker (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
* DirectoryInitialization.kt: Switch to getFilesDir for internalUserPath

Was previously getExternalFilesDir

filesDir is used here, which is just recommended shorthand for getFilesDir

* DirectoryInitialization.kt: Updated license header
2026-01-18 18:41:54 +00:00
OpenSauce04
f5053868b4 Updated translations via Transifex
Some checks failed
citra-build / source (push) Has been cancelled
citra-build / linux (appimage) (push) Has been cancelled
citra-build / linux (appimage-wayland) (push) Has been cancelled
citra-build / linux (fresh) (push) Has been cancelled
citra-build / macos (arm64) (push) Has been cancelled
citra-build / macos (x86_64) (push) Has been cancelled
citra-build / windows (msvc) (push) Has been cancelled
citra-build / windows (msys2) (push) Has been cancelled
citra-build / android (googleplay) (push) Has been cancelled
citra-build / android (vanilla) (push) Has been cancelled
citra-build / docker (push) Has been cancelled
citra-format / clang-format (push) Has been cancelled
citra-transifex / transifex (push) Has been cancelled
citra-build / macos-universal (push) Has been cancelled
2026-01-15 11:42:46 +00:00
OpenSauce04
6be1934af2 Updated translations via Transifex 2026-01-11 21:01:03 +00:00
OpenSauce04
7d2735b118 Updated translations via Transifex 2026-01-10 23:36:17 +00:00
OpenSauce04
c2f4e06901 android: Clean up flavor checking implementation 2026-01-10 23:32:05 +00:00
OpenSauce04
0ed010166d android: "Fix" flickering toggle controls layout + misaligned clickboxes
This doesn't really address the root cause of the problem because I have absolutely no idea what it is, but this does get around the issue by just forcing the dialog into a pre-determined size rather than letting it automatically set its own size
2026-01-10 22:39:44 +00:00
OpenSauce04
ceb082e777 android: Clean up long press dialog layout 2026-01-10 21:33:06 +00:00
PabloMK7
624be242c4 core: Add ability to insert cartridges 2026-01-10 20:51:28 +00:00
OpenSauce04
19641fc29c android: Fixed crash on Google Play when selecting user dir on SD card 2026-01-08 23:48:45 +00:00
OpenSauce04
b2a48187f8 RemovableStorageHelper.kt: Add /storage/ as external storage mount path 2026-01-06 18:37:24 +00:00
David Griswold
4bdcf342b6
video_core: Stereo Settings Improvements: Full Width SBS, Swap Eyes, Select which display(s) to render on (#1212) 2026-01-03 21:40:59 +01:00
David Griswold
48cbeb0993
Android: Bug fix for incorrect screen size detection (#1495) 2026-01-03 14:09:45 +01:00
David Griswold
b1717b6fc2
Android: Keep track of the axis direction when mapping axes (also allows inversion for external pads) (#1483) 2026-01-03 12:15:49 +01:00
PabloMK7
4ac18f5e18
core: Fix memory mode handling and n3ds exclusive app detection (#1560) 2026-01-02 15:03:23 +01:00
Kleidis
f31bd1bcdd
android: Add support for compressing and decompressing files (#1458) 2025-12-31 15:38:22 +01:00
OpenSauce
e035bd3a21
android: Fix rename + move behaviour for Google Play build (#1545)
* android: Fix rename + move behaviour for Google Play build

* android_storage: Handle rename/move with same source and destination
2025-12-29 17:55:51 +00:00
OpenSauce04
6751c20f52 android: Implemented googlePlay build variants 2025-12-29 15:00:34 +00:00
PabloMK7
4085ce6bf8
core: Add SMDH region free patch setting (#1541) 2025-12-29 01:20:26 +01:00
David Griswold
41f1be91eb
poll all displays (#1455) 2025-12-27 22:27:03 +01:00
PabloMK7
8384eaa0c2
core: Fix memory mode handling during app launch (#1534) 2025-12-27 13:38:06 +01:00
OpenSauce
c0a04cef39
android: Begin migration to raw fs access, starting with Rename reimplementation (#1511)
* Add setup step to grant `MANAGE_EXTERNAL_STORAGE`

* WIP re-implementation of Android `Rename` using native filesystem manipulation

* Applied clang-format and updated license headers

* Support user directories on removable storage devices

* If `MANAGE_EXTERNAL_STORAGE` is lost, re-request it

* Fix missing permission dialog appearing during initial setup

* Added empty code branches to prep for old Android support

* Fixed permission setup completion not accounting for external storage permission

* Implement code for Android <11

* Fixed emulation error if a renamed file is then opened for R/W

* Detect if the current user directory cannot be located, and prompt re-selection

* If an invalid user directory is selected, reject and re-prompt
2025-12-24 12:18:13 +00:00
lenore
6b05944116
android: Force app to use max available refresh rate in menus (#1492)
* [android]: Force app to use the displays max set refresh rate

Since Android 15, google automatically forces "games" to be 60 hrz. This ensures the display's max refresh rate is actually used. Tested on a Google Pixel 7 Pro with Android 16

Emulation Activity was excluded for battery usage concerns

* force60Hrz option

* Code cleanup

* Expanded refresh rate explaination comment

* Moved `enforceRefreshRate` calls to earlier in `onCreate`

This probably doesn't actually do anything, it's a bit of a nitpick

* Moved `enforceRefreshRate` SDK version check to within the function

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-12-09 16:21:09 +00:00
OpenSauce04
aac54d648c android: Upgrade AGP to 8.13.1 2025-12-05 18:08:16 +00:00
David Griswold
356aa3d3ae make it so clearing to default ACTUALLY clears gamepad settings 2025-12-05 13:08:04 +00:00
OpenSauce04
f1a59b2186 android: Added relWithDebInfoLite build profile 2025-12-05 13:01:28 +00:00
OpenSauce04
4574b91561 Move VSync setting key from use_vsync_new to use_vsync
Some checks are pending
citra-build / source (push) Waiting to run
citra-build / linux (appimage) (push) Waiting to run
citra-build / linux (fresh) (push) Waiting to run
citra-build / macos (arm64) (push) Waiting to run
citra-build / macos (x86_64) (push) Waiting to run
citra-build / macos-universal (push) Blocked by required conditions
citra-build / windows (msvc) (push) Waiting to run
citra-build / windows (msys2) (push) Waiting to run
citra-build / android (push) Waiting to run
citra-format / clang-format (push) Waiting to run
citra-transifex / transifex (push) Waiting to run
This resets the VSync setting for all existing user configurations. Note in changelog.
2025-11-29 14:38:32 +00:00
David Griswold
04b6c69083 Default VSync to false on Android
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-11-29 14:37:30 +00:00
David Griswold
f309d4881a android: Add Display Listener methods for smoother secondary display updates 2025-10-03 17:04:57 +00:00
huesos_96
3716f6b9b6
Android: Dual screen fixes for Handhelds that have 2 screens like Ayaneo Pocket DS (#1341)
* Prevent SecondaryDisplay from stealing focus

The SecondaryDisplay Activity was stealing focus from the main
Activity when it was launched.

Set the `FLAG_NOT_FOCUSABLE` and `FLAG_NOT_TOUCH_MODAL` window flags
to prevent the SecondaryDisplay from gaining focus.

* Implement touch controls for secondary display

This commit introduces touch input handling for the secondary display.

The following changes were made:
- Added `onSecondaryTouchEvent` and `onSecondaryTouchMoved` to `NativeLibrary.kt` and `native.cpp` to process touch events on the secondary display.
- Implemented `onTouchListener` in `SecondaryDisplay.kt` to capture touch events and forward them to the native layer.
- Handles `ACTION_DOWN`, `ACTION_POINTER_DOWN`, `ACTION_MOVE`, `ACTION_UP`, `ACTION_POINTER_UP`, and `ACTION_CANCEL` motion events.
- Tracks the active pointer to ensure correct touch event handling.

* Refactor display logic for multi-display support

This commit introduces a `DisplayHelper` class to centralize display-related logic, particularly for handling scenarios where the application might be launched on an external display.

Key changes:
- Added `DisplayHelper.kt` to manage internal and external display identification based on launch conditions.
- `MainActivity` and `EmulationActivity` now use `DisplayHelper.checkLaunchDisplay()` to determine the initial display.
- `SecondaryDisplay` now uses `DisplayHelper.getExternalDisplay()` to correctly identify the target display for the secondary presentation.
- `InputOverlay` now queries `DisplayHelper.isBottomOnPrimary()` to determine if touch input should be processed for the primary display based on the current screen layout.
- `SecondaryDisplay` now queries `DisplayHelper.isBottomOnSecondary()` to conditionally pass touch events to the native layer based on which screen (primary or secondary) is currently displaying the 3DS bottom screen.

These changes ensure that the application behaves correctly when launched on either the internal or an external display, and that touch input is routed appropriately based on the user's chosen screen layout for the dual screens.

* Removed primary-screen checks so the input overlay always forwards touch events, ensuring all touches reach the native handler even when multiple displays are active

* Remove DisplayHelper class and adjust external display logic

* Formatting adjustments

---------

Co-authored-by: DavidRGriswold <novachild@gmail.com>
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-10-03 14:45:49 +01:00