Elektrine lite

← Feed

@drakulix@social.dreampi.es

2026-04-08 22:22 UTC

First some background. If you have been paying attention, playing games on arm64 isn’t exactly news. Emulators like Box86 and Box64 (and its subcomponent Box32) have existed for quite some time and have been able to run x86/x64 wine just fine, while requiring an accompanying x86/x64 root FS. The same applies to FEX, which got a lot of love from Valve in recent years. 

And this is essentially how most Android apps offering “PC Emulation” worked so far and is how I am running Steam on my arm-based Handheld. Asahi Linux also has a VM involved here because of some page size shenanigans, but then also just uses FEX. Some steam-client files and resources in the FEX source code suggest, that the upcoming steam-client for arm64 will also be able to make use of FEX this way. If simply for running linux-native x86 Games or also for some Proton-based games is unclear so far.

 But turns out, there is a better way. Wine can actually be compiled for arm64, which makes sense, when you consider that native Windows-on-ARM apps exist. But turns out Wine built this way can also use emulation to run x86 and x64 windows apps. For x64 this even uses the same weird arm64ec instruction set windows-on-arm uses. How similar this works exactly I don’t know, but obviously wine doesn’t use which ever proprietary emulation layer windows uses, but instead allows specially built emulators to be plugged in, e.g. FEX or Box64.

 And that is also not new, hangover is a project that has done exactly this for years. But turns out the reworked wine-wow64 (amazing naming schema, thanks in part to microsoft) support only got somewhat stable with Wine 11 this year!

 The neat thing about what I will call arm64ec-wine, is that you don’t need any x86/x64 linux binaries/libraries. We are not really removing a layer in this insanity that is modern computing (DirectX->Vulkan, Win32->Linux, x86->arm64), but at least more or less going from x86/x64 windows syscalls directly to arm64 linux. We are also saving on a lot of memory (which becomes relevant in this day and age).

 If you want to learn more about this, I can highly recommend this 39C3 talk from @neobrain@mastodon.social : https://media.ccc.de/v/39c3-breaking-architecture-barriers-running-x86-games-and-apps-on-arm 
🧵 2/7

Replies (1)

  • @drakulix@social.dreampi.es 2026-04-08 22:23

    So armed with this knowledge, what exactly are we trying to accomplish here? Well, we are unfortunately stuck with running Steam through FEX until Valve either publishes an official arm64 client or at least recovery images to the unreleased SteamFrame.

 But wouldn’t it be neat, if we could build a custom Arm64EC proton runtime to simply select and reap the performance benefits on arm64 hosts?

 So first of all I spent hours cloning and building Proton and one `make redist` later we actually have a proton runtime with arm64 binaries? That was easy, let’s drop it into `.local/share/Steam/compatibilitytools.d` and see what happens.

 🧵 3/7

    Open ##5128178