4581 Commits

Author SHA1 Message Date
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
lannoene
0be78e9550
Improve DLP and multiplayer compatability (#1375)
* Added NWM spectator mode (DLP now partially working), fixed debug assert, added applet utility cmd fallback

* Reverted AppletUtility command change

* Fixed inconsistent mac address

* Enabled DLP Child authorization

* Added the DLP module to recommended online modules

* Clean up

* Changed the returned number of words on GetProgramInfoFromCia to 7 insteead of 8, futher reverted AppletUtility function to match its original form
2025-09-20 19:59:54 +02:00
PabloMK7
48db1c1de5
am: fix save data being deleted on CIA install failure (#1319) 2025-08-20 14:48:34 +02:00
PabloMK7
dc2ab096cb loader: Fix compressed 3dsx icon reading 2025-08-08 22:46:17 +01:00
David Griswold
aca8b45664
android: Implement secondary display support (#617)
* Enable the SecondScreenPresentation class

* Update everything to enable second screen on android under GL and Vulkan. Still some issues!

* Some attempts to enable surface changes

* OpenGL is working on surface change, vulkan still no

* release surfaces (also fixed vulkan?)

* added and enabled layout setting

* resolve merge conflict

* rearrange switch cases to satisfy linux compiler

* openGL is working!

* several vk changes to try to fix crashes

* maybe vulkan is working?

* removing unnecessary code attempts

* Simplified secondscreen for better performance

* vk_platform.cpp: Fixed build failure caused by bad rebase

* vk_present_window.h: Removed stray newline

* Applied clang-format

* bug fix for odin 2

* Applied clang-format

* Updated license headers

* Moved SecondScreen class to org.citra.citra_emu.display

* Various formatting and readability improvements

* Added brackets where previously absent for readability

* Additional readability improvement

* RendererVulkan::NotifySurfaceChanged: Simplified condition checking

* change all references to "secondary screen" to "secondary display" to limit confusion with top screen / bottom screen

* rename main_window to main_present_window and second_window to secondary_present_window

* Reverted accidentally downgraded compatibility list submodule

* Removed unnecessary log message

* Applied clang-format

* Added a description to the Secondary Display Screen Layout setting

* Added `_ptr` suffix to `secondary_present_window`

This distinguishes it as a pointer, as `main_present_window` isn't a pointer, so there could be confusion on whether to use `.` or `->`

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-08-08 21:41:52 +01:00
David Griswold
36a0b7824d
desktop: Fix horizontal centering single window mode (#1211)
* fix horizontal centering single window mode

* Formatting adjustment

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-07-31 17:27:35 +01:00
PabloMK7
25d7db7bbe
Z3DS: Mark compressed files in UI and other minor fixes (#1249) 2025-07-28 10:38:23 +02:00
PabloMK7
00c0f01e73 Z3DS: Add title info and smdh to metadata 2025-07-27 17:13:32 +02:00
PabloMK7
8dafecd528 loader: Add compressed ROM (Z3DS) support 2025-07-27 17:13:32 +02:00
Nikki
4447a5c9f2
[GSP] Set correct stop flag (#1199) 2025-06-29 13:09:03 +02:00
PabloMK7
0deb0f50b8
Add "SWP" frame time information (#1173) 2025-06-20 19:26:12 +02:00
PabloMK7
3c3dd2bd86
am: Improve cia encrypted content detection (#1152) 2025-06-17 14:17:01 +02:00
PabloMK7
a974fc4ac8 kernel: Improve SVC handling timings 2025-05-31 15:23:14 +00:00
PabloMK7
ec964c8610
Add more advanced frame time information (#1083) 2025-05-29 17:38:10 +02:00
OpenSauce
fd2551439e
android: Add rotate screen upright toggle to UI (#819)
* Add upright boolean for portrait mode

* Add the `upright_screen` boolean to the UI as a switch & in-game

* ScreenAdjustmentUtil.kt: Updated license header

---------

Co-authored-by: Kleidis <167202775+kleidis@users.noreply.github.com>
2025-05-28 18:50:57 +00:00
PabloMK7
5e2161d90b
video_core: Refactor state tracking (#1059) 2025-05-26 14:37:03 +02:00
PabloMK7
e83b81ec98
Add setting to toggle RPC server (disabled by default) (#1047) 2025-05-18 17:27:37 +02:00
Briar
580d46e3d6
android: Add aspect ratio setting for single screen layout mode (#913)
* android: Add aspect ratio setting for single screen layout mode

Co-Authored-By: Morph <39850852+Morph1984@users.noreply.github.com>

* Partial rewrite to address issues and improve readability

---------

Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com>
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-05-12 19:58:01 +01:00
PabloMK7
18447ac6ac Fix savestates with the OpenGL renderer 2025-05-07 21:05:34 +01:00
PabloMK7
01d7ff7a08
Fix installing DLCs with encrypted flags for missing contents (#979) 2025-04-24 21:53:09 +02:00
PabloMK7
939a6e0f7a
Allow shader cache to switch to different titles at runtime (#978) 2025-04-24 19:03:48 +02:00
PabloMK7
eba3c2c08f
Fix cheats and rpc server affecting the wrong processes (#956) 2025-04-23 17:09:37 +02:00
PabloMK7
391f91f735
Support downloading owned DLCs (#950) 2025-04-23 17:08:48 +02:00
lannoene
de1b520498
Fix File::Write() not conforming to debug header validation (#952) 2025-04-18 12:51:15 +02:00
David Griswold
967263fc80
Implement screen gap setting (#622)
* implement screen gap

* type conversion fix for windows

* int setting
2025-04-16 19:05:46 +01:00
PabloMK7
72eb16f933
Fix ncch loader building wrong update title ID (#930) 2025-04-15 16:27:32 +02:00
PabloMK7
52ccaabca8 Fix system files setup for region changed consoles 2025-04-13 19:16:12 +01:00
PabloMK7
8acc5e22a0
Use common open source font on CHN/KOR/TWN (#920) 2025-04-13 17:38:04 +02:00
David Griswold
8e477e35bb
android: Original Portrait Layout (#625)
* Original Portrait Layout

Original Portrait Layout

* type conversion fix for win

* Updated license headers

* Applied clang-format

* android: Reordered Portrait Screen Layout menu

Custom Layout is now at the bottom of the list

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-04-11 18:23:07 +01:00
OpenSauce
32e378a29b
framebuffer: Add hybrid layout mode to FrameLayoutFromResolutionScale (#807)
* framebuffer: Add hybrid layout mode to FrameLayoutFromResolutionScale

* framebuffer_layout.cpp: Moved seemingly misplaced `default` case to proper location

* framebuffer_layout.cpp: Fixed incorrect calculation of framebuffer dimensions for hybrid layout

* framebuffer_layout.cpp: Made implicit cast from float to int explicit

---------

Co-authored-by: Kleidis <167202775+kleidis@users.noreply.github.com>
2025-04-11 16:16:19 +01:00
PabloMK7
5c7622100b
Check that the country setting is valid for selected region (#847)
* Check that the country setting is valid for selected region

* `SystemSaveGame.checkCountryCompatibility` -> `SystemSaveGame.getCountryCompatibility`

* SettingsFragmentPresenter.kt: Moved `checkCountryCompatibility` definition out of `addSystemSettings`

* SettingsFragmentPresenter.kt: Renamed `compat` value to `compatFlags` for better readability

* configure_system.ui: Corrected indentation

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-03-29 21:50:00 +00:00
PabloMK7
eda2d6f9fa
Mark console as "linked" when using the azahar artic setup tool (#833)
* Mark console as "linked" when using the azahar artic setup tool

* Updated strings related to console linking

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-03-28 11:10:59 +00:00
PabloMK7
d8077fdea6 Fix fatal error caused by auto-detect region 2025-03-26 22:06:36 +00:00
OpenSauce
9203b23868
Stereoscopic 3D Enhancements (#602)
* Stereoscopic 3D Enhancements

- Increase maximum 3D depth to 255%
- Fix touch screen to only render 2D when separate window layout is used
- Cleanup some 3D option localizations

* qt: Added warning label below depth slider for values over 100%

* Fixed broken rendering for Interlaced, Reverse Interlaced and Anaglyph options when using 3D with seperate windows

* android: Added warning label below depth slider for values over 100%

* Fixed a bracket and break statement being incorrectly positioned

---------

Co-authored-by: oneup03 <oneup03@gmail.com>
2025-03-24 21:26:14 +00:00
SeppNel
8cdafaa828
Fix file read memory leak (#750)
* Fix file read memory leak

* Also fix synchronous path

* Use make_unique_for_overwrite

* License
2025-03-23 12:56:18 +00:00
PabloMK7
7e9b5743fb Fix temporary frame limit 2025-03-22 00:23:40 +01:00
PabloMK7
84e2f31415 Make AM:GetPersonalizedTicketInfoList only return personal tickets 2025-03-21 19:22:59 +01:00
PabloMK7
3783ac9f49 Fix incorrect syntax in construction of ARM_DynCom 2025-03-19 15:22:10 +01:00
PabloMK7
9d03856026 Fix uninitialized movable check on artic setup 2025-03-17 20:07:29 +00:00
PabloMK7
007b809ad7 Add support for uninitialized movable 2025-03-17 19:37:16 +00:00
PabloMK7
c13d2d7208 Fix incorrect crypto file handling if exefs override fails 2025-03-17 16:19:56 +00:00
PabloMK7
dac463d74a Fix system files setup on macos 2025-03-17 16:19:56 +00:00
PabloMK7
d72948ca22 am: Fix force new 3ds deviceID 2025-03-15 23:24:04 +00:00
PabloMK7
d5745cae8f Add LLE modules for online features option + AM Refactor w/ various improvements/fixes
- Added option to enable required LLE modules for online features.
- (Android) Fixed bug that would cause FS RenameFile to fail sometimes on Android.
- (Android) Moved New 3DS mode and LLE applets to system settings tab on Android.
- (Android) Fixed cfg save data related issues (mostly Console ID).
- Made AM title scanning asynchronous, which makes game boot way faster on Android on most cases.
- Made more AM functions asynchronous, to prevent stutter.
- Fixed bug in SOC that could cause the emulator to crash when disconnecting.
- Fixed keys not being initialized when processing console unique files.
2025-03-13 21:17:32 +00:00
PabloMK7
42d77cd720
Implement "Set Up System Files" on Android (#653)
* Implement "Set Up System Files" on Android

* Use correct strings + Remove chunks of unused code

* Updated license header

* SystemFilesFragment.kt: Use radio buttons for selecting O3DS/N3DS

* HomeSettingsFragment.kt: Moved `Install CIA` above `Set Up System Files`

* strings.xml: Updated system file setup button strings

* android: Remove System Files Warning

This warning is no longer relevant due to changes in how system files are installed

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-03-12 22:41:45 +01:00
PabloMK7
db168cfac4 Various savestate bugfixes 2025-03-12 20:50:51 +01:00
PabloMK7
e3a21c8ef1
Add 'Set Up System Files' option (#642)
* Add 'Set Up System Files' option

* Fix CIA installation and HLE module loading when no console unique data provided.
2025-03-10 10:48:11 +00:00
OpenSauce04
1ef1ab05fa Removed some remaining .3ds extension references 2025-03-02 17:45:54 +00:00
OpenSauce04
d6745a95e3 frd.h: Fixed assert message typos 2025-03-01 12:29:14 +00:00
OpenSauce04
e2aee1980f frd.h: Updated assert message 2025-03-01 12:27:47 +00:00