Making Windows a first-class libretro citizen

This will be a continously updated blog post detailing my progress on getting our Windows/Winbloze game up.

I’ve dusted off an old Core 2 Duo laptop, put Windows 7 and 8 on it, and intend on getting the Windows ports up to snuff as well as starting work on the Windows Phone/Surface ports (I can only do the Surface ports for now since I still don’t have Windows Phones to develop on, though).

A few things I will be looking at:

  • Windows Surface/Phone RetroArch port – ie. making RetroArch suitable as a Windows 8 app
  • Getting RetroArch on the Windows App Store
  • Native MSVC 2010 solutions for most libretro ports out there (should also work on MSVC 2012 and later)
  • A frontend GUI/menubar of some kind for the Windows versions.
  • Two RetroArch Win versions – one for Windows 8 Modern UI, the other Desktop one with a more conventional UI

Right now, most libretro ports depend on a Mingw build environment. I’ll try augmenting this with native MSVC solutions so that we are no longer dependent strictly on Mingw for development. Also, like the last bullet point already suggests, an effort will be made to start implementing a rational, conventional, thin ‘GUI/menubar’ around the Windows ports. While RetroArch/RGUI is still meant  to be controlled by a gamepad and this is fine, I don’t think it’s too much to ask that we are able to at least select ROMs with a native file dialog screen – and other niceties like that which a menubar would provide. The RetroArch OSX port also benefited from similar additions and I don’t think the ‘raw’ way the current Windows version is put out really does it justice.

For people who won’t like this menubar/GUI, it will be possible to disable it so that RetroArch Win32 will look and act the same as it does now.

Also, of course with the port to Surface/Windows Phone will come an additional Windows 8-centric Modern UI GUI as well. The way I see it, there will be several versions of RetroArch in the future – one that will be available on the Windows Store with a modern UI look (where we basically release several statically linked cores + RetroArch on the App Store), and there will be a RetroArch with a desktop UI look (probably looking mostly similar to SNES9x) which you will be able to download from our Libretro website.

The RetroArch for PC with the modern UI look would have severe disadvantages (dynarec code can’t work for Windows 8 Store apps, Win8 apps don’t allow dynamic libraries so we will have to release standalone emus, and lots of other shenanigans) but at least we will have a presence for enduser people that only look at the Windows Store for possible apps to download – that, and it will converge neatly with the Surface/Windows Phone port.

I hate Windows 8.x as much as the next guy and am rooting for it to fail. The only reason I am really doing this is because of the RetroArch project and my desire for it to be omnipresent. If it weren’t for this, I wouldn’t be bothering to do this right now.

I’ll update this post when more progress is made (or make a new post in case this one is taking too long).