A new RetroArch mainline release would not really be a new mainline release without a big new platform port. Eventually we are going to run out of platforms to port to, but for now there is still enough work to be done.
And so I’m already preannouncing that with RetroArch 1.0.0, there will be a RetroArch version for Windows RT/Windows Phone devices.
There are obvious downsides and upsides to this:
- The Metro UI frontend which I will have to make will also be usable on PC - for the percentage of the market that actually likes to use that thing on a dekstop PC
- No garbage collector (when not trying to write C#/VB apps I guess) - so no runtime stalls like Android.
- Given that a port of SNES9x (SNES8x) can be found on the store - it should be no problem to be able to publish this on Windows Store. That is a pretty big plus in and of itself since we can’t even publish RetroArch on the Apple Store or Blackberry World (you honestly have to wonder how a company becoming as increasingly irrelevant as Blackberry is in any position to be making any stances on app content - but whatever).
- No dynarec/JIT support. Pretty big downside here - same as non-jailbroken iOS.
- MS doesn’t seem to really like you being able to do inline ASM in your code and prefers you use intrinsics instead.
- No shared library support (DLL) - so we’ll have to do the same thing we do for the console ports and prebake a separate copy of RetroArch in with a core (static library). Like on console, we will have to use certain libretro management thingies like Salamander to be able to switch in/out between cores (or just delegate that task to the Metro UI frontend).
Anyway, this will not be a trivial port. I’ll have to make a D3D11 driver and I’ll have to think up a strategy for libretro GL - either we just start targeting Direct3D as well or we go through ANGLE to provide a wrapper between Direct3D9/11 and OpenGL ES. What worries me about the latter though is that having GLES go through ANGLE and then be converted to D3D seems particularly slow with WebGL - so I’ll be taking a careful look at how much of a performance bottleneck this is.