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

Notes

  • 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.

Downloads

https://1drv.ms/u/s!AueX0eo4NQeRhOVzbkNwncqlsMUmrg?e=Unkkk0

Screenshots

2 Likes

Testing build: https://mega.nz/#!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.

2 Likes

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:

2 Likes

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.

3 Likes

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

testing build: https://1drv.ms/u/s!AueX0eo4NQeRhOVzbkNwncqlsMUmrg?e=Unkkk0

1 Like

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:

https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads

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.

I have been getting my feet wet with trying to compile some open source projects to Windows on ARM. I have had the first Surface Pro X for a while now and have just ordered the new Odin handheld which seems like a great fit for this since it can run windows under ARM as well.

Unfortunately I am ill equipped to make any needed changes. The documentation for porting applications is thin for this specific purpose. Many cores do not compile with MSVC and I am lost when trying to build a project in the latest Visual Studio from the makefiles that most cores use. The only thing I managed to get running was the retroarch client itself with the latest UI but it would not recognize any of the cores that have already been converted by @driver1998.

I see that the latest test build by @driver1998 seems to be down. Luckily I found I still had it on my machine so I will upload it here again for anyone who needs it.

Retroarch WoA: https://mega.nz/file/cVZkVLYZ#fQbdSN1XNiZPN0foKjDQdBsTy4gQ7Nsv6tyztlueACI

I would hope someone who is more experienced than I could give some tips for porting some of these cores to their latest version.

As an aside, I see Microsoft has added some tools for using opengl on Arm machines which may help with things. This reddit thread seems to help get around any issues: OpenCL and OpenGL Compatibility Pack for Windows 10 PCs : Amd (reddit.com)

Yeah, I never was able to get past the core compilation part either. But yes, since Microsoft has a OpenGL compatibility layer, you would think that an ARM port could work much better now than it did a couple years ago.

I was working on enhanced UWP version for our "W10M Community Group" and I compiled and fixed many cores for ARM (MSVC UWP).

below is the UWP enhanced release 1.9.10 if you want to extract the cores use 7z to extract the (appx) package. I hope it will help you.

Download link: https://mega.nz/file/WgxknIxD#P_a4tnzoKCCoRmLku6oCO4vRetJNOFYj9nsRpCssOlk

Thanks.

4 Likes

This whole thing is awesome! Currently I am still using x64 on my Samsung Galaxy Book S (running Windows 11), but I really consider switching.

May I ask, is there any chance to get a Dolphin Core soon? Dolphin for Windows on ARM already exists and works great. It uses something called “JIT Recompiler for ARM64”, and maybe it could be used for a RetroArch core, too?

I have here a link to the blog about the ARM version:

And another link, where I asked about the compiling of the standalone version (maybe it helps a bit better to explain the situation): https://forums.dolphin-emu.org/Thread-requesting-a-compiled-windows-on-arm-dolphin

Thanks for the links, I do believe it’s possible to compile Dolphin core for ARM I hope I will be able to work on this core soon.

meanwhile this is an update (1.10.1) on my link above with new cores (ARM MSVC - UWP)

https://github.com/basharast/RetroArch-ARM

I hope it will work fine for you.

1 Like