LibretroRT is a framework to enable porting of Libretro cores to WinRT components.
This should enable creating native UWP emulator front ends using high the high quality open source Libretro cores available.
Click image to play video
Original demo video here
I am accepting donations on gofundme to help with development costs. At minimum, I would need:
- An Xbox One to develop/test on
- Check the releases section for the latest binary build
- Download and double click on the .appxbundle file, follow the instructions
The project makes extensive use of Git submodules, to include Libretro cores code, which means some extra care needs to be taken when cloning.
- Do a recursive clone (add
--recursive
aftergit clone
). Or just clone from Team Explorer in Visual Studio - Select either x86, x64 or ARM as the architecture,
Any CPU
won't work, then your preferred build config (Debug/Release) - Select
Retrix.UWP
as the startup project in Visual Studio to run from there with debugger attached - Right click on the Retrix.UWP node in solution explorer, select Store->Create app packages and follow the wizard to create your own .appx binaries
- Full compliance with UWP sandboxing
- Having cores render to SwapChain panels, allowing XAML and DirectX interop and front ends to use native UWP controls for the UI
- Support Windows 10 on all platforms (Desktop, Mobile, Xbox, VR) and architectures (x86, x64, ARM)
- Allow packaging and distribution via NuGet for a great development experience
- Creating a UWP Libretro front end for a better experience (proper DPI scaling, native look and feel, fullscreen as borderless window, integration with Windows's modern audio pipeline)
- Increasing safety by having emulation code run sandboxed
- Create a meaningful use case for UWP sideloading on Windows, since Microsoft has decided to ban emulators from the store
- Created a framework to speed up porting of software rendering based Libretro cores to WinRT components
- Ported GenesisPlusGX, Snes9x, FCEUMM, Nestopia (doesn't work well, using FCEUMM instead), VBAM, Ganbatte, BeetlePSX and MelonDS
- Created audio player WinRT components to interop between Libretro's audio rendering interface and Windows 10's AudioGraph API
- Created input manager WinRT component to interop between Libretro's input polling interface and Windows 10's Gamepad APIs
- Created Win2D/Angle based video renderer. Supports software based Libretro cores.
- Created RetriX, a native XAML based Libretro front end, with an UI optimized for mouse, touch as well as gamepad interaction: it scales from phones to tablets, traditional PC form factors as well as the Xbox One.
- Implemented a way to virtualize file system access from within cores: allows opening zipped games and those made up of multiple files
- Added support for some CD based game systems: Mega CD and PlayStation
- Created signed appx packages with a valid Authenticode certificate to make installation as easy as traditional desktop apps
- Completed Xbox UI: RetriX can now be fully used with only a gamepad as input device
- Expand framework to allow porting of OpenGL based cores to WinRT using Angle while still allowing front ends to be written in languages other than C++
- Port more Libretro cores
- Split LibretroRT (Libretro core ports to UWP) from RetriX, distribute the former via Nuget package, the latter via direct appx downlad in addition to source availability