Systems

Nintendo Switch

AArch64 (ARM Cortex-A57)

Built on
SwARc Horizon platform module, on an AArch64 core
Progress
SwARc platforms/horizon on 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.

Recent commits

  1. Horizon: Nintendo Switch platform module on the AArch64 core

All commits