RetroArch for Windows RT and Windows 10 ARM (Desktop)

Supported Graphics Drivers

  • gl1 via GLDirect (D3D9 -> OpenGL 1.1 wrapper)
  • d3d11
  • d3d12
  • gdi

Supported Input Drivers

  • winraw
  • xinput

Tested (Provided) Cores

  • fbalpha
  • fceumm
  • snes9x2005
  • gambattle
  • vba_next
  • genesis_plus_gx
  • mednafen_psx


  • For Windows RT devices, you’ll need a proper jailbreak for your device, and (on 8.1) sign the RetroArch.exe and core DLLs with a test certificate.

  • Existing libretro cores with msvc2017 makefile should be able to compile to work in ARM32 Desktop without much effort, with platform=windows_msvc2017_desktop_arm

  • Most Windows RT devices only support DirectX 11 Feature Level 9_3 or lower, and will not be able to start the D3D11/D3D12 driver. You may encounter crashing and/or black screen.

  • Changes for RetroArch and provided cores are already pushed to upstream.

  • Support for OpenGL 1.x via GLDirect is not enabled in upstream by default, checkout #9535 for details.



Testing build:!nNtw3QQZ!hoirjH3a-jxVQxqlupFtuQy9bTOs9ng7cQhGStm6Gsg

I tried this on a Lumia 950XL running 1903 (18362.113). However, not much happens. After first loading a core (genesis_plus_dx) and content (gunstar heroes [u].gen), a window opens, then closes and goes back to the main retroarch window “no items” and displays error “failed to load libretro core.” Fullscreen has no effect, either.

gdi - rgui symptoms as above / xmb can’t load d3d9 - both rgui xmb can’t load d3d10 - both rgui & xmb can’t open a drawing surface (nothing displays after launching retroarch) d3d11 - both rgui & xmb can’t open a drawing surface (nothing displays after launching retroarch) d3d12 - both rgui & xmb retroarch loads, then progressively gets slower until it is unusable

Launching retroarch with admin privileges doesn’t help. I’ve been hoping for a more proper arm64 build of retroarch. I think it would make for an amazing Win10 IoT appx. One click and boom, there it is.

for the failed to load libretro core error: Get a copy of VC++2017 ARM32 runtime dlls and copy those to the directory of RetroArch.exe, or C:\Windows\SysARM32 if you want.

for the graphics issues, I have no idea, and I doubt an ARM64 build will change much.

Maybe you can try the UWP build of RetroArch and see what it does.

On my Raspberry Pi 3B (Win10 ARM64 b17134, WARP only, no GPU acceleration) GDI/D3D11/D3D12 all worked fine, but the D3D ones are dreadfully slow due to no GPU accel.

D3D9 will not work anytime soon due to no HLSL render support upstream.

1 Like

I thought about the UWP build, however they are only releasing it with AMD64 support and no ARM binaries. For Retroarch to work on WoA, the UWP app is required to be compiled with x86 (32-bit) or ARM64 targets.

So basically I’d love to find a Retroarch ARM64 compiled binary. WoA-compatible ARM64 cores are being built nightly, just no binaries. Seems like one wouldn’t go down that path of building those cores if the code wasn’t being developed. :grinning:

1 Like

I did an ARM64 build (WIN32) of RetroArch for d3d11/12. However i could not find any cores. So i compiled pcsx_rearmed for testing and it is working on my HP Envy X2.

If anyone is interested i can upload the binaries.

1 Like

I am getting OpenGL 1.1 working with GLDirect D3D9 to OpenGL wrapper.

testing build:!AueX0eo4NQeRhOVzbkNwncqlsMUmrg?e=Unkkk0

Hi there, can you indicate us any place where we could get the VC++ ARM32 runtime dlls? google hasn’t been very helpful so far, do I have to install VC++2017 just to get the dlls? :frowning:

I know this is an old question, but 2019 should work if you haven’t figured it out yet:

Thanks for this in the initial post. It’s working great on my Surface Pro X. I know it’s a dated build, but it does everything I need at full speed… though I have to admit it’d be nice with an updated build with a version of Ozone that scales better.

But with this niche hardware, beggars can’t be choosers. :smiley:

1 Like

I am currently downloading the libretro-super git repo and I’ll try to build more cores, I’d sure like to have Ozone with touch support as well, I’ll see what I can do but my top priority is to have pcsx-rearmed working…

Yeah, the cores have been too complicated for my limited programming knowledge.

I got so far myself as getting a 1.8.5 ARM64 desktop build compiled but no cores, similar to what someone previously said.

So I tried the ARM32 UWP build of 1.8.5, which has precompiled cores in the nightly build server… That one built fine and ran okay with the prebuilt cores included, but I was having major disk load problems with that one. The app which loads instantly in the desktop version was taking ~15 seconds to load the UWP version. And another 10-15 seconds in the UWP version to load even the simplest NES games… and constant disc loading errors on PSX games in Beetle PSX.

So I gave up and went back to the ARM32 desktop older version from the initial post here. Works perfectly for the games I’d be wanting to play anyway.

1 Like

I feel you man, failed miserably to compile PCSX-Rearmed on my end of things and now I just cba to try again with RetroArch 1.8.6… Ozone would be great on the surface and I’m pretty sure PCSX-Rearmed could work decently too but yeah, I don’t think I have the skills to build that for arm32…

I would assume the answer is no, since this is basically a dead thread, but any chance of an updated build based on 1.9.0? I’d love to be able to utilize the portable playlists feature to make sure my Surface Pro X is in sync with my other devices.