⚠️Important Release Candidate Information⚠️
This is a release candidate. Please expand this drop-down to read more about what this means before installing.
As a release candidate, this build is not yet considered a stable release, but is instead a build which could be promoted to a stable release if it is sufficiently tested with no major issues being discovered. Ideally, the release candidate period will last for 7 days, however if major issues are discovered, this will be extended to allow for additional testing with a corrected release candidate.
Despite its status as a pre-release build, users are encouraged to test this version to help us catch any newly introduced issues before the build is promoted to a full release. If you do observe such issues, please report them to us on GitHub so we can evaluate them.
If you are unwilling to tolerate potential minor issues, you may be better off waiting until a release candidate is promoted to a full release.
Users are advised to back up their Azahar user data directory before using a pre-release build.
Summary
Azahar 2127.0 is arguably the single largest update we have ever published, and is a truly monumental release.
It includes countless improvements, fixes and new features, including long-awaited additions such as per-game setting support on Android, a fully rewritten interpreter for JIT-less environments which allows full-speed emulation on any modern iOS device, support for a new bundled ROM format which includes game content and updates in a single file, a fix for a long-standing death animation glitch in Shin Megami Tensei IV, and many, many other things.
We hope you'll take a quick read of the changelog to see what we've been working on.
Note
This release invalidates any existing generated shader cache.
Because of this, performance may temporarily be impared after updating from 2126.2 or earlier.
Performance will improve again after playing for a while.
Azahar 2127.0-rc1 Changelog
License
- Azahar's license has been changed from GPLv2+ to GPLv3+. All downstream projects exposed to Azahar's source code must ensure that they follow the license terms and correctly update any license metadata as necessary. | @OpenSauce04 #2626 #2635
Android
- Added per-application settings. | @DavidRGriswold, @Producdevity #1856, #2698
- Mimics the desktop behaviour of being able to configure emulated applications independently.
- Can be accessed by long pressing the application from the application list.
- Implemented the use of the ADPF API to hint the OS of CPU work bursts. | @PabloMK7 #2706
- Improves performance on most Android devices, with a 15% performance boost observed on a Mali device.
- Skip hidden dot files/folders when scanning for applications. | @wilu222 #2362
- Turbo speed is now disabled when a game is started, matching the behaviour on desktop platforms. | @ygordreyer #2657
- Closing a game which was opened from an Android home screen shortcut now closes Azahar. | @ygordreyer #2658
- Fixed an issue where, when relaunching a currently running game from an Android home screen shortcut, Azahar would display a black screen. | @ygordreyer #2656
- Fixed an issue which could cause Azahar to crash when connected to a secondary display under certain circumstances. | @DavidRGriswold #2751
- Relaxed custom graphics driver checks to allow usage of custom drivers on non-Adreno devices. | @PabloMK7 #2767
All
- Implemented a significantly faster new interpreter for JIT-less environments, named
FastInterp, which replaces the oldDynCominterpreter. | @warmenhoven #2376- This new interpreter allows greatly improved performance on iOS and tvOS devices, allowing devices as old as the iPhone XS to use the emulator, even with playback speeds of over 200%.
- Added support for a new ROM format: ROM Bundles (
.bcxi,.bcci,.bcia). | @PabloMK7 #2369, #2673- ROM Bundles can store a base game and any necessary additional files, such as the game's updates, DLC, or any necessary system files (e.g. Mii data) within a single file. This makes it easier to manage and organize your game library, while also allowing for easier of use of game updates, DLC, and system files in libretro frontends (e.g. RetroArch) via
.bcxi/.bccifiles. .bcxi/.bccibundles allow content which would previously have to be installed via a CIA file, such as game updates and DLC, to be used alongside the base game without installing anything to the emulated 3DS..bciafiles contain the content of multiple CIA files, allowing their collective content to be stored and installed via a single file.- ROM Bundles can be created using
Tools -> Create ROM Bundle...on desktop platforms. - Creating ROM Bundles on Android is currently not possible, but bundles created on a desktop device can be run on any platform as long as Azahar's version is at least 2127.0 or later.
- For more information, please read the PR description: #2369
- ROM Bundles can store a base game and any necessary additional files, such as the game's updates, DLC, or any necessary system files (e.g. Mii data) within a single file. This makes it easier to manage and organize your game library, while also allowing for easier of use of game updates, DLC, and system files in libretro frontends (e.g. RetroArch) via
- Added an experimental new MSAA anti-aliasing setting. | @Wunkolo #2053
- This setting is currently not exposed in the UI, and must be enabled manually by editing Azahar's ini config file.
- This functionality will become more easily accessible in a future update following additional stability improvements.
- Fixed inaccurate color blending behaviour in the Vulkan renderer, fixing an issue in Shin Megami Tensei IV where a black box would appear around enemies when killed. | @quickstraw #2427
- Corrected misuses of linear filtering in the video core where nearest neighbour should be used. | @OpenSauce04 #2554
- Fixes texture rendering issues in Minecraft: New Nintendo 3DS Edition, and likely other games as well.
- Reduced several audio, frame and input latency sources on all platforms. | @PabloMK7 #2700, #2706
- Improves audio, frame and input latency by 1-2 frames in some cases.
- Makes audio time stretching disabled by default.
- Adds a setting to disable audio effects for the cubeb backend (Windows only).
- The pull requests descriptions go into more detail on what exactly changed.
- Added free camera support. | @PabloMK7 #2723
- Uses the RPC server to submit free camera commands to the emulator from an external script.
- A python script is provided in the
distfolder that contains a global free camera implementation, controllable using a controller. - Due to the way the 3DS GPU works, per-application implementations are still the preferred way to do free camera.
- Added configurable battery state. | @Wunkolo #2513, @PabloMK7 #2743, @DavidRGriswold #2738
- Allows setting the emulated system battery to a fixed percentage and charging state, or use the host system battery state.
- Makes the emulated notification LED blink red when the battery is critical.
- Added a turbo (hold) hotkey. | @DavidRGriswold #1969
- Not to be confused with the existing turbo hotkey, which is a toggle.
- Fixed save states not working with LLE modules enabled. | @PabloMK7 #2730
- Added a visual warning that prompts users to reset the vulkan shader cache if the emulator crashes during cache loading. | @PabloMK7 #2709
- Improved "disable right eye" setting heuristics. | @Davey-Hughes #2467
- Fixes visual glitches in many applications with the setting enabled.
- Fixed files opened with append mode starting on the wrong position. | @PabloMK7 #2707
- Fixes OpenGL shader cache not working properly on Android vanilla and MacOS builds.
- Fixed
BOSS::GetNsDataHeaderInfobehaviour. | @PabloMK7 #2740- Fixes StreetPass Mii Plaza SpotPass puzzles being marked as invalid.
- Fixed ADD PC instruction handling in thumb mode. | @PabloMK7 #2710
- Fixes crashes when using the CPU interpreter with LLE modules enabled.
- Fixed CPU core1 scheduler time limit value check. | @PabloMK7 #2711
- Fixes 3DS Sound failing to start from the home menu.
- Fixed
APT::GetWirelessRebootInfobehaviour to match real hardware. | @PabloMK7 #2712- Fixes Star Fox 64 3D (Taiwan) failing to start.
- Hardened stride aliasing validation on surface validation. | @Angelico2102 #2451
- Fixes visual glitches in Inazuma Eleven GO Galaxy.
- Fix DSP sleep behaviour to better match real hardware timings. | @PabloMK7 #2731
- Fixes fatal errors on some applications (most notably New Super Mario Bros. 2) when launched from the home menu.
- Fixed async upload of custom textures. | @nal532 #2688
- Fixes custom texture related crashes and issues.
- Fixed incorrect use of host timings on fs operations with deterministic mode. | @PabloMK7 #2732
- Fixes a source of movie replay desync.
- Implemented a previously missing audio delay/echo effect in the HLE DSP implementation. | @PabloMK7 #2473
- Restores previously missing echo effects to many games, such as New Super Mario Bros. 2, when using HLE audio.
- Fixes a stuttering music issue in Shinobi 3D.
- Implemented improvements for Azahar's texture codec, resulting in greatly improved texture handling performance and general performance improvements in many games. | @PabloMK7 #2564
- Zero-area render passes are now skipped. | @Wunkolo #2510 #2544
- This addresses certain graphical issues in 3D Thunder Blade.
- Implemented null descriptors for null surfaces. | @Wunkolo #2545
- Minecraft: New Nintendo 3DS Edition now force-disables the "Disable Right Eye Rendering" setting while running due to causing rapidly flashing rendering issues. | @OpenSauce04 #2555
- Due to ongoing issues, the Anime4K texture filter has been limited to only be selectable when using the OpenGL renderer. | @OpenSauce04 #2654
- Implemented emulation for the CSND module, allowing applets (e.g. the 3DS keyboard), 3GX plugins, and certain early homebrew applications to play audio. | @PabloMK7 #2680
- Fixed an issue which could cause CIA content in a ROM Bundle to not be installed correctly if it was compressed into a
.zciafile before being bundled. | @DevYukine #2679 - When attempting to bind a button or hotkey to an already bound input, a dialog which asks whether you want to unbind the previously bound button or hotkey is displayed instead of just showing a failure message. | @DavidRGriswold #1838
- Fixed several minor inaccuracies in the HLE GSP module, potentially fixing unknown edge cases in certain games. | @PabloMK7 #2678
- Implemented additional optimizations for Azahar's JIT shader compiler. | @Wunkolo #2597
- Check table_dirty before skipping proctex LUT upload. | @Dandandans #2627
- Implemented signature checks for downloaded encrypted content (e.g. eShop downloads, system files). | @PabloMK7 #2753
- Fixed an issue in the video core which could cause performance slowdowns on weaker devices when running non-60fps games. | @PabloMK7 #2755
- Fixed an issue where, when any 3D display mode was enabled, touch inputs in the right half of the screen would not be recognized. | @DavidRGriswold #2766
- Fixed a packet data handling issue which could cause issues in some multiplayer games. | @PabloMK7 #2770
Windows
- In line with our previous deprecation, the MSYS2 build of Azahar has now been removed, with the MXE build replacing it. | @OpenSauce04 #2582
- Implemented a custom scrollbar style in Azahar's Qt frontend with improved visibility. | @OpenSauce04 #2642
Desktop
- Azahar now contains its own copy of FFmpeg, meaning that downloading and installing FFmpeg manually before using the Dump Video feature is no longer necessary. | @OpenSauce04 #2584
- Added optional on-screen software keyboard during emulation. | @rpnesseling #2185
- Improves text input on handheld devices that are controller/touchscreen focused.
- This option is disabled by default.
- Fixed an issue which could cause Azahar to hang indefinitely on startup if certain controllers were connected before opening. | @PabloMK7 #2769
- Fixed certain issues related to Azahar's video dumping functionality. | @PabloMK7 #2771
- Fixed an issue which prevented the context menu from appearing after right-clicking under certain monitor configurations. | @PabloMK7 #2768
- Improved motion emulation functionality when using a mouse. | @SpinCodeIt #2422
- Fixed hat inputs not correctly detecting release and press state. | @DavidRGriswold #2457
- Fixed path handling by converting paths to UTF-8 before using them with the raw C++
fsinterface. | @PabloMK7 #2713 - Fixes crashes with paths that contain non-ASCII characters.
- Improved keyboard navigation for game list. | @DavidRGriswold #1985
- Fixed an issue where Azahar's .ini files could contain non-human-readable values. | @Wunkolo #2534
- Added new hotkeys "Configure" and "Configure Current Application". | @crueter #2218
libretro
- Fixed an issue with touchscreen devices where, when pressing a blank area outside of the touchscreen area, the last selected location on the touchscreen would become activated. | @OpenSauce04 #2563
Technical
- Added additional logging when an attempted pixel format reinterpretation is unimplemented. | @Wunkolo #2508
- Added new CMake options to newly allow compiling with certain system libraries. | @kreinholz #1987
- Added new CMake option
ENABLE_CCACHE. | @crueter #2219 - Added a missing include which allows Azahar to be compiled for Android with NDK r30. | @rtiangha #2622
- Fixed an issue which prevented building Azahar with openal-soft version 1.25.2 and newer. | @rtiangha #2617
- Cleaned up various instances of deprecated code in the Android codebase. | @OpenSauce04 #2637
- Removed Doxyfile due to lack of use, maintenance and interest. | @OpenSauce04 #2636
- Fixed a build failure when using recent versions of zstd caused by a CMake target name conflict. | @rtiangha #2616
- Added save state and input injection methods to the RPC server. | @PabloMK7 #2730, #2731
- Added compressed ROM globs and fixed MIME icon name. | @999sian #2377
- Updated cubeb dependency to a newer commit. | @PabloMK7 #2714
- Added
USE_SYSTEM_TEAKRACMake flag. | @qr243vbi #2615 - Changed print to console behaviour when
stdoutis redirected. | @NimbusFox #2715 - Provided a
.pngfor AppImage building. | @PabloMK7 #2746 - Fixed an issue with no-op optimization in the Vulkan renderer caused by a typo. | @Lolothepro #2482