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
2025-09-05 22:13:02 +01:00
2017-02-17 13:52:23 +02:00
2018-09-22 14:59:15 -06:00

Azahar Emulator

GitHub Release GitHub Downloads CI Build Status

Azahar is an open-source 3DS emulator project based on Citra.

It was created from the merging of PabloMK7's Citra fork and the Lime3DS project, both of which emerged shortly after Citra was taken down.

The goal of this project is to be the de-facto platform for future development.

Installation

Windows

Download the latest release from Releases.

If you are unsure of whether you want to use MSYS2 or MSVC, use MSYS2.


MacOS

To download a build that will work on all Macs, you can download the macos-universal build on the Releases page.

Alternatively, if you wish to download a build specifically for your Mac, you can choose either:

  • macos-arm64 for Apple Silicon Macs
  • macos-x86_64 for Intel Macs

Android

The recommended method of downloading Azahar on Android is via the Google Play store:

Get it on Google Play

Alternatively, you can install the app using Obtainium:

  1. Download and install Obtainium from here (use the file named app-release.apk)
  2. Open Obtainium and click 'Add App'
  3. Type https://github.com/azahar-emu/azahar into the 'App Source URL' section
  4. Click 'Add'
  5. Click 'Install'

If you wish, you can also simply install the latest APK from the Releases page.

Keep in mind that you will not recieve automatic updates when installing via the APK.


Linux

The recommended format for using Azahar on Linux is the Flatpak available on Flathub:

Download on Flathub

Azahar is also available as an AppImage on the Releases page.

Build instructions

Please refer this repository's wiki for build instructions

How can I contribute?

Pull requests

If you want to implement a change and have the technical capability to do so, we would be happy to accept your contributions.

If you are contributing a new feature, it is highly suggested that you first make a Feature Request issue to discuss the addition before writing any code. This is to ensure that your time isn't wasted working on a feature which isn't deemed appropriate for the project.

After creating a pull request, please don't repeatedly merge master into your branch. A maintainer will update the branch for you if/ when it is appropriate to do so.

Language translations

Additionally, we are accepting language translations on Transifex. If you know a non-english language listed on our Transifex page, please feel free to contribute.

Note

We are not currently accepting new languages for translation. Please do not request for new languages or language variants to be added.

Compatibility reports

Even if you don't wish to contribute code or translations, you can help the project by reporting game compatibility data to our compatibility list.

To do so, simply read https://github.com/azahar-emu/compatibility-list/blob/master/CONTRIBUTING.md and follow the instructions.

Contributing compatibility data helps more accurately reflect the current capabilities of the emulator, so it would be highly appreciated if you could go through the reporting process after completing a game.

Minimum requirements

Below are the minimum requirements to run Azahar:

Desktop

Operating System: Windows 10 (64-bit), MacOS 13.4 (Ventura), or modern 64-bit Linux
CPU: x86-64/ARM64 CPU (Windows for ARM not supported). Single core performance higher than 1,800 on Passmark
GPU: OpenGL 4.3 or Vulkan 1.1 support
Memory: 2GB of RAM. 4GB is recommended

Android

Operating System: Android 9.0+ (64-bit)
CPU: Snapdragon 835 SoC or better
GPU: OpenGL ES 3.2 or Vulkan 1.1 support
Memory: 2GB of RAM. 4GB is recommended

What's next?

We share public roadmaps for upcoming releases in the form of GitHub milestones.

You can find these at https://github.com/azahar-emu/azahar/milestones.

Join the conversation

We have a community Discord server where you can chat about the project, keep up to date with the latest announcements, or coordinate emulator development.

Description
An open-source 3DS emulator project based on Citra.
Readme 91 MiB
Languages
cpp 63.2%
C++ 31.8%
Kotlin 4%
CMake 0.6%
GLSL 0.2%