Skip to content

Aftnet/LibretroRT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LibretroRT & RetriX

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.

Supported systems

Libretro core used in parentheses

  • NES (FCEUMM)
  • SNES (Snex9x)
  • Game Boy (Ganbatte)
  • Game Boy Advance (Visual Boy Advance)
  • DS (Melon DS)
  • SG1000 (Genesis Plus GX)
  • Master System (Genesis Plus GX)
  • Game Gear (Genesis Plus GX)
  • Mega Drive (Genesis Plus GX)
  • PlayStation (Genesis Plus GX)
  • Neo Geo (Final Burn Alpha)
  • Neo Geo Pocket (BeetleNGP)
  • Wonderswan (BeetleWSwan)
  • PC Engine (BeetlePCEFast)
  • PC-FX (Beetle PCFX)
  • PlayStation (BeetlePSX)
  • Arcade (Final Burn Alpha)

Demo

Youtube link

Click image to play video

Original demo video here

How to use

Check the wiki

Want to support RetriX's development?

Consider donating via Patreon. Thank you in advance :)

Installing

  1. Check the releases section for the latest binary build
  2. Download and double click on the .appxbundle file, follow the instructions

Building from source

The project makes extensive use of Git submodules, to include Libretro cores code, which means some extra care needs to be taken when cloning.

  1. Do a recursive clone (add --recursive after git clone). Or just clone from Team Explorer in Visual Studio
  2. Select either x86, x64 or ARM as the architecture, Any CPU won't work, then your preferred build config (Debug/Release)
  3. Select Retrix.UWP as the startup project in Visual Studio to run from there with debugger attached
  4. 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

Design goals

  • 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

Project aim

  • 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

Current state

  • 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, Beetle PCEFast, Beetle PCFX, Final Burn Alpha, 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

Roadmap

  • 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