Nintendo Switch
AArch64 (ARM Cortex-A57)
- Groundwork
- No ports yet
platforms/horizon
- Built on
- SwARc Horizon platform module, on an AArch64 core
- Progress
- SwARc
platforms/horizonon main (commits) - Updated
- 2026-11-08
The Switch’s CPU is AArch64, so SwARc has a CPU core for it beside the
x86 one: an AArch64 lifter (recomp_lift_a64) and the CPU model its
lifted code runs on (integer, flags, the exclusive monitor). The core
knows no console: it reads plain ELF itself, and its tests run on a
test platform of their own. The Horizon platform module sits on
that core as Orbis sits on the x86-64 one, and shares the same base
(SDL3, ffmpeg, the graphics device, the mixer). A Switch game builds
without the x86 core or Win32 at all.
The module is on SwARc’s main branch, in
platforms/horizon, off by
default until it is done; its
commits are the progress
log.
Status: milestone 1. NRO loading and relocation, the guest address layout, process bring-up and the first supervisor calls are in. The core’s tests lift a fixture built from checked-in assembly and C, run it against Unicorn, replay every instruction form against Unicorn vectors (and the host CPU on arm64 hosts, also checked under qemu-aarch64), and catch planted mutations of the lifted semantics; Horizon runs the same fixture as a homebrew NRO.
Next: milestone 2, a game’s main lifted whole, reaching nnMain and
reading its first RomFS files through nn::fs; then milestone 3, the
first frame through NVN on Vulkan and Metal.
Games come from your own console: the extracted ExeFS and RomFS of a copy you own. No keys or firmware are in any repository.
Ports
No ports yet: the module comes first.