RetroX open source emulators and libs now on github

RetroX is not an emulator in itself, but a front end for existing emulators.  There are many front ends for emulators but what makes RetroX different is that the emulators have been modified to meet “the RetroX standard” like having support for custom controls, Android TV devices, RetroX save/load progress and more.

These modifications are possible because these emulators are released with open source compatible licenses, so they grant rights to modify the code and distribute the derivate products under certain conditions. One of these conditions is giving the source code back and we have been doing it since the commercial release en 2015.

But we could do it better.

Since today, the code will be available through their own repositories in github, and thanks to git subversion support the whole change history has been kept, so anyone interested will be able to see what changes we did to each emulator.

RetroX compatible emulator
RetroX compatible emulator

We didn’t make this step before due to our lack of git abilities, but since I started to use git and github everyday the move just seemed natural.  Sure we would like to do more about it, like helping integrate some fixes to the upstream projects but, we are going step by step on this as the time allows.

For such a job to be possible we should have tracked the source code as clones of the original repositories from the beginning, but as we didn’t use git until now that track is lost… Unless someone gives advice about how to create that link.  At least, the work on new emulators will have this track.

RetroX libraries are now open source

As per license requirements, all the code that is linked to the emulators has been made open source as well. So we are proud to announce that the RetroX libraries that help make an emulator to be RetroX compliant now has been released as LGPL 2.1. on github.

Want to help?

Now that this code is shared with the proper tools, we see that new opportunities arise:

  • People will be able to add their favorite emulators to RetroX (more details below)
  • People requesting fixes to existing emulators will be able to take a look and give some help directly from the source code
  • Bugs or missing features on the upstream emulators now can be extracted from our changes, with a bit of effort but doable.

Adding new emulators

We encouraged ourselves to do this step also to give other people the possibility of adding emulators that we don’t have planned to add in the near term. Some time ago we published our roadmap for 2017 and we found that it was very limiting that some people have to wait until next year to see their emulators being added to RetroX.

We will work on the emulators in that list but now other people will be able to work on emulators that are NOT in that list. Here we are thinking of emulators for machines like the BBC Micro, Amstrad CPC, FX98, X68000 and more.

Don’t worry that we haven’t gave up on those machines, only we are saying that if someone wants to do it now, they can.  If not, we will bring them in as soon as we can.

For those who want to work on that, we will give them all the required support. We already open sourced the RetroX libraries required to make a RetroX compliant emulator, but we are sure that more than that will be required.  We cannot promise nothing today but our ideal is to create a tutorial of how to modify an emulator to make it RetroX compliant. We will announce it as soon as it is available.

As a side note: From time to time people that have not used RetroX think that it is a simple wrapper for RetroArch, now you can check the changes that we have made to RetroArch to work as a RetroX compliant emulator. They are not huge but in no case they are small either.

Release 2.6.5 – Golden Eye – Better controls for N64

One of our targets has been make things as simple as possible, this included making the gamepad configurations less painful providing a centralized mechanism: Set up your controller once and for all. But sometimes underlying details makes it hard to apply one rule for all, and that’s the case of the N64 controller (read The law of leaky abstractions for background theory).

The RetroX fronted as well as emulators like RetroArch uses the SNES style controller as a basis for all systems, and a special derivate which is the PlayStation one, which simply add more buttons.  Most systems have just subsets of these two controllers, except for N64 where the controller is a completely different beast, a curious design to say the least.

To play N64 without issues you need an N64 controller, everything else will be a hit and miss.  Most emulators will request the users to map each button of their controllers but we wanted to stay away from that providing a standard configuration for SNES style controllers. As me (the developer) had almost zero experience with N64 beyond the intro of Super Mario 64, this simplification failed with other games, being Golden Eye 007 the icon if this problem.

Until now.

I changed the way that SNES style controllers are mapped adding the use of the right analog stick as “C dpad” buttons – the yellow ones in the N64 controller. Using this configuration, the directional nature of the C buttons is kept and they remain as natural as possible for the intentions of the game designer.

Given that the signals that right analog controls emit are not standard among all controllers, I added two new configuration points for the right analog control, just select them and follow the instructions so RetroX can learn about the codes used with your gamepad. You will see those new points in blue.

New analog right setup
New analog right setup

But this was not enough.

Testing Golden Eye and having some experience with modern day first person shooters, it felt more natural to invert the analog controllers, so you can strafe with the left analog and move with the right analog. Now there is a new option to invert the analog controllers from the in-game options, or make it the default for your game in the game details screen -> “configure this game” option.

GoldenEye original controls
GoldenEye original controls

And this was not enough again.

The controls still seemed awkward by design, because the strafe left/right is combined with the look up / down while modern FPS games combine strafe with move forward / backwards.  So finally I added a new option called “Optimized for Golden Eye” where not only the analog controllers work as intended, but also the trigger to shut the guns has been switched to the right (R2) and the aim is at the left (L2).

I played Golden Eye some minutes with this new configuration and it is a world of difference.

These new settings made the old Digital / Analog modes on N64 become obsolete, so now with the SELECT button you can easily switch between Original, Inverted and Golden Eye modes.

Users of 8bitdo N64 controllers

I also added an experimental setting for users of the 8bitdo N64 controllers. As they are physically N64 controllers, I added an option to automatically map that controller when used in N64 games. As I don’t have that controller (yet), this setting is disabled by default and users must enable it in the Gamepad Options.

I expect to receive good or bad feedback about this, considering it that it was done in the blind!

Also I would like to give big thanks to the members of the RetroManiaUK Facebook group for giving me these ideas to improve the way RetroX works with N64 controllers.

Also in this release…

There are also some fixes included in this release:

  • Not available games now are removed / cleaned as expected
  • Games based on CUE files now are downloaded correctly from networked storages (NAS / Cloud). These are used by CD based systems like Playstation, PC Engine CD and Sega CD.
  • Final Burn Alpha addon now is compatible with games requiring samples.  (Provided samples may be not right with some games as I found with Donkey Kong, so if you have a games with samples but no sound please send me a message)
  • Save states related options have been removed from MAME 2001, 2010 and 2014. Only 2003 supports saving states
  • Size measure of installed games coming from compressed files has been fixed.

That’s all for now and and always, just enjoy!

When will my favorite emulator be added to RetroX?

This is such a frequently received question, that we felt it deserved a dedicated response.

Regular launchers only need to send the ROM file to the emulator, nothing else. In this sense, adding emulators would be a simple enough process. However, RetroX is a truly unique “frontend”, that can do so much more.

Often front ends will just use RetroArch to support a range of platforms, but this doesn’t include those that use a keyboard, mouse or a joystick. These systems just do not work on RetroArch (Android). In fact many of the systems found within RetroX aren’t even supported by RetroArch (Amiga, MS-DOS, Atari computers, etc).

RetroX on the other hand can (and does) make desktop based games run as if they were on a console. There are still several improvements that can be made to RetroX to improve the experience for the user, but rest assured – we will. However the point I’m making is that we can!

2016-05-20 15.36.50
Save / Load states in the Cloud

Adding a new emulator to RetroX is not as easy as you may think. It’s not just a case of directing the ROM to the emulator. You also need to integrate each emulator (with all their own unique quirks) into the unique features of RetroX.

This requires us to take the original emulators source code and making the distinctive modifications required to be compatible. Be that Universal Controller Setups, Android TV compatibility or the most complicated of all, cloud based save states (and memory cards) which use the standard RetroX interface. This last point often requires additional code to be added for image processing to incorporate screenshots into our unique multi-slot save feature, all of which must be coded from scratch.

Adapting systems already within the RetroArch platform is a fairly simple process.  However, many of the emulators integrated within RetroX are standalones, all of which again require coding from scratch (including the most challenging of all – desktop based platforms).

But we love computer games!

RetroX compatible emulator
RetroX compatible emulator

As our developer resources are scarce (mostly me, Franco), we have to set priorities in the way new features and new emulators are added to RetroX. Sometimes there are small fixes or features that may only take a few hours, but others can require weeks or even months of work. Recent examples being the ability to add games from network based storages (cloud, NAS), or the code for cloud based save states which required changes to be applied and tested to each of the supported emulators.

To help improve the regularity of new features and improvements I made the decision several weeks ago, to adapt my working style to allow me to simultaneously work on both long term and short term features (who says men can’t multi-task). However, what has become apparent is that whatever approach we take, there will always be bottle necks.

So, in an effort to reduce your levels of anxiety, I can declare which emulators we want to include within RetroX in 2017, and in which order.

I hope that this will help to reduce the amount of questions that I receive (and answer) on this subject.

Here is the list:

  • Sega Dreamcast
  • 3DO
  • Commodore C64
  • Sega Saturn
  • ZX Spectrum
  • GameCube
  • Atari ST
  • Amiga CD32

In the meantime, we will continue adding new features to RetroX, with plans already in place to improve functionality in several of the existing emulators we support. Including:

And of course, non-emulator related features like offline support, or better ways to handle multiple versions of the same game etc.

As always, if you have any ideas for new features, then please contact us via our Facebook group or send us a message on Twitter.

We are always listening.