– Bump actions/cache from 3 to 5
– Bump actions/setup-java from 3 to 5
– Bump microsoft/setup-msbuild from 1.1 to 1.3
– Bump DoozyX/clang-format-lint-action from 0.18.2 to 0.20
– Bump actions/checkout from 3 to 6
– Misc fixes
All
– Fixed a regression introduced in 2124 where, while using the Vulkan renderer, certain textures or graphical effects would have an incorrect appearance. | @jbm11208 #1634
Android
– Fixed a long-standing issue where, on certain Android flavours or devices, the Azahar app could instantly crash when opened. | @OpenSauce04 #1646
MacOS
– Fixed a regression introduced in 2124 where the Azahar application could immediately hang after launching on macOS 26 Tahoe. | @PabloMK7 #1649
– [GPU/D3D12] Convert gamma-as-linear red to gamma in transfers to stencil
– [GPU/D3D12] Add forgotten gamma conversion format check
– [GPU] 8-bit PWL gamma RT as linear 16-bit UNorm on the host
– With render target HLE, directly store linear values as R16G16B16A16_UNORM
without gamma conversion, as this format provides more than enough bits
(need at least 11 per component due to the maximum scale being 2^3 in the
piecewise linear gamma curve) to represent linear values without precision
loss.
– This makes blending work correctly in linear space, improving quality of
transparency, lighting passes, and fixing issues such as transparent parts
of impact and footstep decals in 4D5307E6 being bright instead.
– The new behavior is enabled by default, as it hugely improves the accuracy
of emulation of this format, that is pretty commonplace in Xbox 360 games,
with likely just a small GPU memory and bandwidth usage increase, compared
to the alternatives that were previously available on the HLE RB path.
– It’s currently implemented only on Direct3D 12, as most of the current GPU
emulation code is planned to be phased out and redone, and no methods other
than 8-bit with pre-conversion were implemented on Vulkan previously.
– To implement on Vulkan later, same conversion as in the Direct3D 12
implementation will need to be done in ownership transfer and resolve
shaders. Currently it’s somewhat inconvenient to decouple the conversion
functions in SpirvShaderTranslator from an instance of the translator due
to vector constant usage. Later, simpler SPIR-V generation functions may be
added (spv::Builder usage in general is overly verbose).
– The previously default method (8-bit storage with pre-conversion in shaders
and incorrect blending) can be re-enabled by setting the
« gamma_render_target_as_unorm16 » configuration option to false. This may
be useful if the game, for instance, switches between 8_8_8_8_GAMMA and
8_8_8_8 formats for the same data frequently, as switching will result in
EDRAM range ownership transfer data copying now. Also, the old path is
preserved for Vulkan devices not supporting R16G16B16A16_UNORM with
blending.
The other workaround that was available previously, replacing the PWL
encoding with host hardware sRGB with linear-space blending in render
target management and in texture fetching, was also inherently inaccurate
in many ways (especially when games have their own PWL encoding math, like
4541080F that displayed incorrect colors on the loading screen), and
required tracking of the encoding needed for ranges in the memory.
– The sRGB workaround therefore was deleted in this commit, greatly
simplifying the code in the parts of render target, texture and memory
management and shader generation that were involved in it.
– Misc fixes
– A complete redesign of the settings panel
– High-DPI support
– Fullscreen mode
– New keybinds and support for modifiers (Alt/Ctrl/Shift)
– Rumble
– Accuracy/Performance improvements
– Misc fixes
Pour faciliter son usage, une interface externe est disponible. Elle permet de lancer des jeux, configurer les options, et suivre les performances via une interface visuelle simple et intuitive.
– Package Updates: Several Microsoft-related NuGet packages (Data.Sqlite, Extensions, CodeAnalysis) were updated to their latest patch versions (e.g., from 10.0.1 to 10.0.2).
– Long Path Support: Enhanced file and directory existence checks in GameLauncher.cs and PathHelper.cs by explicitly handling the long-path prefix (\\?\). This ensures compatibility across different drive types (local, network, removable) and paths exceeding 260 characters.
– Shortcut Validation:
Refined .URL file launching to only validate protocol handlers (like steam://) if the target is a true URI. This prevents drive letters (e.g., C:\) from being incorrectly identified as protocols.
Improved error logging for shortcuts by preventing the app from attempting to read binary content from .LNK files during an exception.
– Thread Safety: Added lock mechanisms in DownloadManager.cs around the CancellationTokenSource. This ensures that starting, canceling, and disposing of downloads is thread-safe.
– Enhanced Logging
– Microsoft Store Filtering: Significantly expanded the exclusion list in ScanMicrosoftStoreGames.cs.
– Tool Updates: Updated several external tools bundled with the launcher, including BatchConvertToCHD, chdman, GameCoverScraper (arm64/x64), SimpleZipDrive, and BatchConvertIsoToXiso.