GuessCmdRenderProperties() seeds vp_height and paddr from the current register state and overwrites them only if the scanned list writes those registers itself. It already records whether each value actually came from the list, but ShouldAllowCmdQueueTrigger() ignored those flags, so a list that merely sets state was classified using the previous pass's viewport. That is how a colour buffer rebind could be mistaken for a repeat render of the top screen and dropped. Track whether the list contains a draw trigger and require it before suppressing anything. A list that issues no geometry produces no pixels, so blocking it can never save work; it can only discard state that later lists depend on. The condition is strictly narrower than before, so this cannot suppress a list that was previously allowed. Measured on Ocarina of Time 3D with 3D enabled, the disabler still blocks 4141 lists per run versus 4441 before, retaining its effect. On Luigi's Mansion 2, one of the titles the RIGHT_EYE_DISABLE hack already disallows, blocking drops from 4601 to zero, which suggests those entries exist because of exactly this misclassification. Also guard both places where a scanned list address is turned into a pointer. CommandList::Reset() only reinterpret_casts, so an unmapped address would be dereferenced on the next read. This matters more now that the scan no longer stops as soon as vp_height and paddr are known and can therefore follow more nested command buffer jumps.
Azahar is a free and open-source high level Nintendo 3DS emulator for PC and mobile devices. Our goal is to give 3DS owners a place to enjoy their library of titles with improvements to the original hardware, such as higher resolutions, modern controllers or save states. The emulator also serves as a debugging hub for homebrew developers and as a research and preservation platform for the 3DS ecosystem.
The project continues the legacy of Citra and is actively developed by a community of contributors.
Azahar is not affiliated with or endorsed by Nintendo.
Installation
Windows
Azahar is available as both an installer and a zip archive.
Download the latest release in your preferred format from the Releases page.
If you are unsure of whether you want to use MSVC or MXE, use MXE.
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-arm64for Apple Silicon Macsmacos-x86_64for Intel Macs
Android
There are two variants of Azahar available on Android, those being the Vanilla and Google Play builds.
The Vanilla build is technically superior, as it uses an alternative method of file management which is faster, but isn't permitted on the Google Play store.
For most users, we currently recommended downloading Azahar on Android via the Google Play Store for ease of accessibility:
Alternatively, you can install the app using Obtainium, allowing you to use the Vanilla variant:
- Download and install Obtainium from here (use the file named
app-release.apk) - Open Obtainium and click 'Add App'
- Type
https://github.com/azahar-emu/azaharinto the 'App Source URL' section - Click 'Add'
- Click 'Install', and select the preferred variant
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:
Azahar is also available as an AppImage on the Releases page.
There are two variants of the AppImage available, those being azahar.AppImage and azahar-wayland.AppImage.
If you are unsure of which variant to use, we recommend using the default azahar.AppImage. This is because of upstream issues in the Wayland ecosystem which may cause problems when running the emulator (e.g. #1162).
Unless you explicitly require native Wayland support (e.g. you are running a system with no Xwayland), the non-Wayland variant is recommended.
The Flatpak build of Azahar also has native Wayland support disabled by default. If you require native Wayland support, it can be enabled using Flatseal.
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.
SSE4.2 required on x86_64.
GPU: OpenGL 4.3 or Vulkan 1.1 support
Memory: 2GB of RAM. 4GB is recommended
Android
Operating System: Android 10.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.
Join at https://discord.gg/4ZjMpAp3M6
