box86
Box86 - Linux Userspace x86 Emulator with a twist, targeted at ARM Linux devices
Box86 lets you run x86 Linux programs, including games, on ARM devices like the Raspberry Pi by translating x86 instructions to ARM at runtime.
Box86 is a compatibility tool that lets you run x86 Linux programs on ARM-based Linux devices. ARM is the processor type found in boards like the Raspberry Pi, many single-board computers, and some Android devices. Most desktop Linux software is compiled for x86 processors, so without Box86 those programs simply will not run on ARM hardware.
The tool works by translating x86 instructions into ARM instructions at runtime. It includes a dynamic recompiler, called DynaRec, that converts code on the fly and provides a five-to-ten times speed improvement over pure line-by-line interpretation. This makes real applications, including games, run at usable speeds on devices like the Raspberry Pi.
Box86 takes a practical shortcut compared to full system emulators: instead of emulating all the system libraries too, it reuses the native versions already installed on your ARM device, such as libc, SDL, and OpenGL. This keeps compatibility high and reduces overhead. However, it means you need a 32-bit ARM environment, since Box86 only targets 32-bit x86 programs. On a 64-bit ARM system you need a 32-bit userspace layer installed separately.
Many games work without any tweaking: WorldOfGoo, FTL, UNDERTALE, and various Unity3D and GameMaker titles are listed as working examples. Games that need 3D graphics may also require a separate library called gl4es if your ARM board only exposes OpenGL ES rather than full OpenGL.
Building Box86 requires a 32-bit ARM toolchain, which means a standard 64-bit-only compiler will not work. The README covers build steps for Raspberry Pi and several other popular boards. There is also a companion project called Box64 for running 64-bit x86 programs on 64-bit ARM systems.
Where it fits
- Run x86 Linux games like FTL or UNDERTALE on a Raspberry Pi
- Use x86-compiled software on an ARM single-board computer without recompiling it
- Set up a retro gaming station on ARM hardware using x86 game binaries