Builds Cemu for windows-11-arm with clang-cl + Ninja and uploads the ARM64 exe as an artifact, so official ARM64 Windows builds can be produced.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Enables building and running Cemu natively on Windows on ARM (e.g.
Snapdragon devices) with clang-cl. The existing AArch64 recompiler
backend is used, so no x64 emulation is involved.
Build system (CMakeLists.txt, dependencies/ih264d, src/Cafe):
- Auto-select the arm64-windows-static vcpkg triplet and detect the
AArch64 architecture even when the emulated host shell misreports it.
- Disable IPO for clang-cl (LTO would force lld-link, which cannot read
vcpkg's MSVC /GL objects) and link clang_rt.builtins for the
compiler-rt calls (e.g. __udivti3) that lld-link does not add.
- Set the static CRT on the xbyak_aarch64 target.
- Locate pkgconf under the actual vcpkg host triplet instead of a
hardcoded x64-windows path.
- Build the bundled ih264d decoder as portable C on ARM64/Windows; its
NEON .s files use ELF-only :got: relocations that do not assemble for
COFF targets.
Source (precompiled.h, ExceptionHandler_win32, Debugger, LatteTextureCache):
- Guard x86-only intrinsics/paths behind ARCH_X86_64. clang-cl defines
_MSC_VER but not __GNUC__, so several `#if defined(_MSC_VER)` branches
wrongly selected x86 intrinsics on ARM64. Adds AArch64 register
dumping to the crash handler.
Manifest: use processorArchitecture="*" for Common-Controls so it
resolves on ARM64.
See BUILD.md for the build steps (Ninja + clang-cl + -DCMAKE_LINKER_TYPE=MSVC).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
MH3G/MH3U has fragile multi-threaded use of swkbd and gets stuck if some operations complete too fast, specifically if SwkbdCreate completes quickly. For now we solve this by adding a sleep delay.
Also modernized and API registration and SwkbdInitLearnDic will create a valid empty dictionary now since MH3G tries to parse it
System RPLs are actually never loaded from the game's code directory. Verified on console.
Also do a minimalist check if the necessary files are dumped for erreula and swkbd, otherwise they will just crash on load.
Fixes#1977
Requires both VK_EXT_attachment_feedback_loop and VK_EXT_attachment_feedback_loop_dynamic_state to be provided by the driver. Otherwise it will fall back to the old code. Main benefit is for improving performance as it makes barriers cheaper and doesn't force us to unnecessarily interrupt renderpasses
Skips the overhead of having to lookup each shader stage individually. Additionally, having whole sets as a lookup key gives us a more trustworthy heuristic than if we only have independent information for each shader stage. We can use this to skip shader hashing most of the time when they are part of a known set.
When coreinit exit() is hit, then Cemu will only close when the game was launched directly via command line parameters (-g or -t). Otherwise it returns to the game list. In the case where Cemu closes it will forward the coreinit exit status code as it's own exit status code. This is useful for cases where Cemu is used as a CLI tool for testing homebrew