Lifetime licences are back!

Yes, you read that correctly, lifetime licences are back! To find out why, the full details are below, but at a glance, here are the new licensing options::

  • Yearly subscriptions for 1 or 2 years remain as they are (USD$12.99 and USD$22.99)
  • A lifetime licence which never requires renewal (USD$72.99)
  • Upgrade to a lifetime licence at a lower price if you have an existing active subscription

Note that currently lifetime licences and upgrades are only available via Credit Card payments, those wishing to use other payment methods (Transbank, Crypto etc) can contact me at support@retrox.tv to handle those upgrades manually.

Now you can go to the store to get your lifetime licence or upgrade, or you can continue reading the details of this change

How will upgrades work?

If you have an active subscription, you can upgrade at any time, but instead of paying for the full price to get a lifetime licence, your remaining subscription time will be reduced from the total amount. This is how it works: All RetroX subscriptions are around USD$1 per month (yes, that low!), if you purchased a 2 year subscription a few days ago, then you still have 24 months to use it, so you will get a discount of USD$24, that simple. Another example, you have a 2 year subscription but you are in your 4th month, so you still have 20 months remaining, you will get a discount of USD$20.

In the XTV Apps Store, when you choose to upgrade you will be asked for your RetroX account with an active subscription, this will get the details about the expiration date, months remaining, discount and final amount to pay. Note that months are counted as a whole, so less or equal to 31 days is one month. For example, if you still have 5 days before expiration, that’s one month, if you have 35 days remaining, that’s two months and so on.

The reasons behind the change

RetroX got its first commercial release in 2015, this was 7 years ago, and apart from new emulators and new features, it has survived several Android updates that have broken many applications, including the emulators and RetroX itself. Today RetroX is quite different from what we had in 2015 and the licensing conditions have been changed accordingly. Until 2019 RetroX had lifetime licences, but I started to see a worrying scenario with similar applications, where many of them started to die because the income generated wasn’t enough to fund the constant updates and support required to keep the applications working. A popular belief is that you can create an application one day and keep it selling for many years, but for applications like RetroX this cannot be further from the truth, you need to spend a lot of time and effort to keep it working as the environment – Android, emulators, users – keeps constantly changing. Add to that that RetroX provides some unique features that require monthly funding, like cloud saves, automatic updates, automatic artwork and more.

For all these reasons, I saw that I couldn’t risk the future of RetroX, so in 2019 I switched to yearly subscriptions to make sure that RetroX could still be economically viable in the future. I also decided to not add a lifetime licence option because I wasn’t able to know in advance if the changes in Android would allow RetroX to be viable on that platform in the future. My window was only 2 years in the future, if a change in Android killed RetroX, they typically take 2 years to rollout the update to everyone. So, for me it wasn’t fair to sell a lifetime licence if I wasn’t able to make sure that RetroX would exist two years into the future, that’s why the maximum subscription time was 2 years.

Android 11 “Storage Apocalypse” changed everything

The story of the change in Android 11 is quite long, but in summary it was a change that came to break all applications that need shared storage access, that includes RetroX and all emulation frontends, even emulators. At some point even LaunchBox decided to stop developing a front end for Android because of this change and other “Android reasons”. For some apps, this was the end, you wouldn’t be able to load a game on the emulator. For RetroX it wasn’t the end, but it came with a lot of problems because the change was just buggy. The new permissions system broke everywhere, even in Android TV you were not able to implement the official solution posted by Google. It was a mess.

This change made me start to plan a departure from Android, so I started to port RetroX for computer systems (Linux first), and this change alone would allow me to stop depending on future changes in Android, but then something unexpected happened: I was able to see how Google and NVidia handled this breaking change, and they did it surprisingly well.

What I didn’t expect is that they cared. They helped emulator developers to fix their code to work with Android 11, and Nvidia even released quite quick fixes specially targeted to these applications. Note that this wasn’t a quick update, for example the PPSSPP team worked 2 years to have a proper solution, with official support from Google. Fortunately RetroX was “easier” to fix, and the treatment I saw with PPSSPP meant for RetroX a great change on the vision of the future of Android, it gave some assurance that it will be a viable platform for more years to come.

So in summary, the main reasons for this change are:

  1. Google and Nvidia have shown that they can make Android viable for the future of RetroX
  2. Even it they fail, RetroX will be able to continue existing as a Linux application for many years

Many users have requested to have an option for lifetime licences and I always said no because I wasn’t able to know how many years in the future RetroX would exist, but now I can say with all confidence that RetroX will be developed for many years to come.

RetroX 3 has been released

RetroX 3 is out now!! Yes, this version is a milestone that deserves its own version number! Apart from having the new Collections feature, all the UI for Mobile and standard TV mode has been improved… a lot.

This version also includes three new themes, one is the built in RetroX theme that matches the mobile and standard TV mode, and the other two are new amazing themes ported by Nigel Rapley, who not only has been contributing with more themes, he also added the collections support for all existing themes. A big THANKS to Nigel!

There are some other “minor” changes like:

  • Support for multidisc 3DO games
  • Improved performance on slow devices when loading big collections (big, not huge 😉 )
  • Better mobile layout for small screens with 4:3 aspect ratio (Retroid Pocket 2)
  • Automatically silence video previews if background music is enabled
  • Faster / improved downloading of artwork from the RetroX server
  • Multiple fixes for multi disk games
  • Fixed a bug that sometimes prevented moving through covers in TV mode
  • … and more

And here is what comes in the next days because it is already in progress:

  • More collections
  • Updated data for trending/popular/recommended games
  • Some themes will be compatible with smalls screens (Retroid Pocket 2)
  • New default covers for games without artwork (partially done now)
  • A new option to show only games with artwork, no more manual cleaning needed

Just for stats: This version is 233 commits with 893 files changed. 14,679 additions and 3,987 deletions

Note: Some themes may require that you get the artwork from EmuMovies, you can do get it using a free EmuMovies account under Manage Games -> EmuMovies sync

No ROMs were harmed in the making of this version

Android development and the future of RetroX

I wanted to share some thoughts about the recent bad news of LaunchBox for Android being discontinued. I’ve read their forum post and wow, what they describe is exactly what I have been dealing with Android all these years while developing RetroX for it.

I decided to write this post before some questions arrive, reading the LaunchBox forum on this topic can make the future look bad, but I want to tell you why RetroX is not and should not be affected by those issues. I strongly recommend you to read their forum post before reading what comes below.

https://forums.launchbox-app.com/topic/54393-the-state-of-launchbox-on-android

Honestly I was expecting something like this to happen, only that I was surprised that it actually happened. Making an emulator launcher is something that one can do in a few hours if you have some experience in Android or a few days if you are new to the platform. Getting results for launching 8 and 16 bit console games is relatively quick. The problem starts when you want to go beyond that and you start dealing with Android limitations, fragmentation, corner cases, emulation of computer systems and the list goes on and on.

Making development economically sustainable

When I saw the LaunchBox releases it was like seeing the initial days of RetroX and I knew all the road and its difficulties that would come ahead. Their price point (5 dollars) for a lifetime license rang a bell on me, they should sell a lot of licenses or they should let their PC app fund the Android development, there was no other way to do it.

Sadly, the mobile market set a bad precedent when people started selling apps as cheap as 1 dollar, that made people get used to get great apps at a ridiculous price. People learned to associate Android (and iOS) with cheap apps. Of course some companies succeed at that, but they first needed to throw a lot of money on marketing force to get people’s attention. Not all developers can do that, including me.

On Jason’s words:

It doesn’t really make sense for us to be spending half of our development time on the project, while only making a 5% return

I became aware of this issue in 2018. As RetroX grew and Android started changing for bad I realized that having cheap lifetime licenses would not be enough to continue developing RetroX and to continue running the associated services (support, infrastructure, etc). RetroX would have died this year (2020) following that trend. I already have seen other front ends being abandoned because of this, and I didn’t want it to happen to RetroX, so I took the unpopular decision to use a subscription based model to make sure that RetroX will continue growing for many years to come. Some people got mad about this but now LaunchBox is a good example of what could have happened with RetroX.

Android development

Android is a hostile environment for software developers. Google has total control of this environment and they just don’t care about breaking apps. I also have to add that they have been really erratic in some areas like hardware acceleration, permissions and the worst of all, storage policies. And this will not change for the better. More on that later.

Play Store and software distribution

What Jason says about the Store is quite true:

The Google Play Store is really the only viable way to release apps on Android, and red tape is everywhere

Fortunately I didn’t need to be on the Store to get where I am today (thanks Stuart Law and John Logie for that), but that’s the reality of the Store and now I’m glad that Google rejected RetroX.

It’s not only about their arbitrary restrictions or the impossible-to-contact-a-human policy, but there is a worse problem: Random users are harsh with developers. If they don’t understand the app – which is more common that what one would think – they just throw shit at you, it’s just a matter of having a look at their uninformed comments on some apps.

I wouldn’t give names but once I started talking with a developer of another frontend and he had fallen into depression after receiving the feedback from the users in the Store. I’ve checked today and his app hasn’t been updated since 2018 and his public activity stopped in 2017. His app was quite good but random users… they are nasty.

Being out of the Store was not my decision but it was a fortunate consequence of the red tape on there. I rarely get random users, most of you tried RetroX because a trusted friend or family recommend it, and I know that every person that purchases a license do it because they liked the app and they will tell their friends about it with confidence. I think one to one recommendations is a lot better than getting random people finding your app in the Store among the sea of 1 dollar apps and throwing shit back to you.

Future restrictions on Android

I want to quote Jason fully in this topic:

There are major concerns regarding the future of emulation on Android at all. Google has begun severely restricting the ability to share files between applications for security reasons, and it’s already affecting users who are running Android 11. They’ve been pushing for these changes for quite a while now, but they’re a poor solution and they wreak havoc on emulation, because they disallow sending ROM files from a frontend to an emulator, amongst other things. This was the straw that broke the camel’s back for us.

First some background about this: All frontends on Android run an emulator that was installed manually by the user, and they are separate apps developed by different developers. Because of that, they can’t share their files. And yes, if Google does what Jason says these frontends will all stop working unless they find an obscure way to bypass those restrictions, but bypassing restrictions will risk them to be thrown out of the Store by Google at any moment.

For your peace, RetroX doesn’t work this way and it won’t be affected for such a change.

I’ve always said that RetroX is not a frontend, but it’s easier to use that name for people to understand the app. Why is not just a frontend? Because In RetroX I maintain the main app and the emulators, because for a tight integration I need to change the emulators to be “RetroX compatible”. That has a bad and a good side: The bad side is that adding more emulators or updating them require tons of work, the good side is that they are fully integrated and tested against RetroX. Being both the app and the emulators being distributed (signed) by me, they can share the files with no restrictions, so the changes announced by Google will not affect RetroX.

Emulator support

Now, you may say with funded reasons that “hey Franco, but look at N64, Dreamcast and PSP, they haven’t been updated, and where is C64?”. Yes, you are right, that’s exactly the bad side of having to modify the emulators to make them run great with RetroX. Their codebase is all different and worse, some of them are very old and the code is a mess to deal with, that is a showstopper to work on those emulators. For example C64 today runs with RetroX but the controls, keyboard support, cloud saves etc, is a big work that hasn’t been completed. Dreamcast.. they changed a lot of files and the integration needs to be done, and the story goes on and on.

Compare this to Saturn. It fought back, it wasn’t easy, but I finally did it. What’s the difference? The difference is that the Saturn emulators run inside RetroArch, so I integrated RetroArch first and I don’t need to do that again to add more emulators like the Saturn ones. And that’s the direction I want to take from now on. If possible all the emulators will be added through RetroArch were some cool additions has been made like live borders / backgrounds, and recently the activation of their rewind / forward feature. And there is still a lot of interesting stuff to be done there.

Currently I’m in a personal campaign to check what emulators can be integrated through RetroArch, now that I know their code better I’m able to add some required features like virtual keyboards and such.

Plans for the future

After moving more emulators to RetroArch I really like to put a foot outside Android. Don’t get me wrong, the main app will continue to be targeted to Android, only that I want RetroX to exist on desktop systems as well. Initially it will be Linux based but gradually I want to add support for OSX and Windows as well. This will open the door to a wide range of opportunities, I would love to have a bootable image of RetroX for Single Board Computers and such.

Even with the Android and its crazyness I see a bright future for RetroX for many years to come, so thanks for sharing the ride with me.

Automapped controllers and touchscreen overlays

From 2.9.0 you can just grab any controller and start playing. Another player is joining? Just grab another controller, press a button and start playing. ONLY if your gamepad has a weird configuration you may need to teach RetroX how your button works (map the buttons). The good thing is that you only need to do it once, and RetroX will pick that config up any time you use that kind of controller.

When RetroX started in 2012 there was no standard for controller buttons on Android, in fact, there was no controllers for Android, you had to use a PC gamepad connected via USB to your TV Box. In my case I used a PS2 to USB adapter to connect a wired PS2 gamepad to my TV Box. As buttons weren’t standard, all controllers sent different events when you pressed a button, and they also had different layout for A/B/X/Y… if they had something like that (PS2 don’t). Some PC controllers had an “A” button and sent a BUTTON_A event when pressed, but others sent a BUTTON_B even when pressing the button in that same location, this was because some controllers followed the SNES convention of ABXY while others followed the Xbox convention for those button, which is inverted (BAYX)!  Other controllers like the PS2 one sent events like BUTTON_3 or even BUTTON_9 if you pressed the SELECT button. On that reality you had to map the buttons and that’s why I added the Gamepad button mapping screen in the first place.

To make things worse, there was no reliable way to pass that info to the emulators so I finally had to assign each gamepad to each player for it to work. The bad thing was that if you assigned a controller to player 1 and picked another controller, you had to switch it in RetroX to use it as player 1. Not a good thing.

Fortunately as time passed Android defined an Xbox type of layout for their controllers and events like BUTTON_A, BUTTON_SELECT , BUTTON_START and others became standard. Most controllers use that standard today and RetroX assumes that’s your configuration. There are still some exceptions like the Ouya and Nvidia controllers where there is no SELECT button, but RetroX automap those controllers assuming that the Back button is the SELECT button. Also if you have an 8bitdo N64 controller and you use it with the N64 emulator, all buttons are automapped.

Touchscreen overlay

I also changed how touchscreen overlay works. Now there are three modes: Auto, On and Off. The Auto mode disables the touchscreen overlay only if you start a game using a controller. On and Off are self explanatory.

All devices use the touchscreen Auto mode except for well known TV devices like the Nvidia Shield and Amazon Fire devices where the default is set to Off.

RetroX now supports cheats

One of the features that people have requested since the beginning of RetroX is the support for cheats. RetroArch and many MAME emulators have this feature included so a lot of people take it for granted, now RetroX has joined the club.

As always, RetroX makes it really easy to enable cheats for your games, you have to do nothing: RetroX will automatically get and install the cheats for you.

There are two types of chats: Consoles and MAME. Consoles have their own mechanism through “codes”, these codes are well known and shared among the users for years and they were created using cheating devices like Action Replay or Game Genie. The guys from RetroArch have created a database with these codes, and RetroX will get the ones available for your game. If there are more than one set of codes, you will be able to select your favorite set.

Cheats for consoles

Cheats for MAME are more universal and they are distributed as files depending on the version of MAME that you want to use. RetroX will get the right file for your selected MAME version. Once in the game, open the internal MAME menu using R2+L2 or through the classic in game RetroX menu, then select “cheats”.

Cheats for MAME

Lately RetroArch has included it’s own cheat mechanism for consoles that didn’t have cheating devices. At this moment they say that the available cheats are not tested enough and they were created automatically, RetroX doesn’t support this method yet, but it may do it in the future.

MAME internal menu

As you may have noticed, now the internal menu from MAME is easily available in RetroX. Until now, only some MAME versions had access to that menu and many people enabled it by accident when pressing R2. We’ve changed the MAME code to bring that menu only when pressing L2 + R2, also we have disabled some settings that we thought are too advanced or confusing.

Option to open MAME menu

Broken updates or installs with recent Oreo updates

This is important:

We found a problem with recent Android Oreo updates: The system allowed RetroX to install one or two emulators then stopped installing anything else. The behaviour that you can see is that RetroX will prepare to install an emulator and then it does nothing, or sometimes the install window is seen on the screen then killed by Android.

The fix is already published as “Silent Oreo”, but because of this same problem, RetroX can’t install the update. If that happens to you, just download and install RetroX again. Don’t uninstall, just install over so it updates the current installation.

Please share this info as much as possible.

 

Themes for RetroX

A new feature has been added to RetroX to allow using different user interfaces for the same application, this is known as Themes.

The main focus of RetroX has always been to make playing retro games the as easy as possible, just select one game and RetroX will do the best it can to run that game. How the app looked was important but second in priority, we just wanted to provide a clean look inspired of what apps like Plex and Netflix were doing at that time (2015). As time passed other emulation frontends began to do a great job on their user interfaces and given that the ease to use was well established in RetroX it was time to give some love to the way RetroX looks.

Themes is nothing new, and in fact we think that Emulation Station (ES/RetroPie) has a great themeing system, so instead of creating something completely new with all the risks involved, we made a theme engine to easily port ES themes or just create new ones from scratch.

For now, themes is not enabled by default, it is designed for TV boxes only and marked as Experimental. We’ve been testing it for a long time with many beta users but there are always some surprises when new features are exposed to all the RetroX users.

To enable Themes go to Settings -> Display -> User Interface -> TV + Themes

Theme selector

Built in themes

RetroX comes with three built in themes, one inspired in the classical clean look (RetroX Classic) and two simple themes with a light and dark mood (Plain Light, Plain Dark), but this is just the beginning, we will be adding more themes in future releases.

While in development we ported the popular Comic Book to RetroX just to test the theme engine and it looks great, that is the theme that most people have seen in our video previews of themes, but the authors of Comic Book forbid commercial distribution so we cannot include it built in RetroX, yet users can add it to their RetroX setups manually (more on that below).

RetroX Classic Theme

Background music

Together with themes we added a feature to have background music. In the past, several videos used background music when showing RetroX, and that music gave some kind of life to RetroX, now it’s a built in feature.  Of course there are options to select songs or simply shut off the music, so users are always in control.

How to add themes and music

Adding themes and music is as easy as copying files to your device, you only need to know where your “retrox.data” folder is. This is commonly located under /sdcard/ but that varies from device to device.

  • Themes: They are distributed as .zip files and must be copied to the retrox.data/themes folder. You can try with ComicBook or NES Mini unofficial ports.
  • Music: They go to the retrox.data/music folder. Currently we only support modtracker formats like .mod, .s3m and .it. There are tons of songs to choose from in modarchive.org.

As it happened with ComicBook, we used several songs by Lizardking in our demos of RetroX, but we were unable to contact him to use his music built in RetroX. If you liked those demos you can find the songs Compulsion to Obey and Desert Down here.

The future

This is just the beginning. The plans for Themes is still a long way to go, this release was done because we didn’t want you to wait any longer.

We will release a themes tutorial so other people can create themes and we plan to put the best themes available for download from RetroX, yes: online themes.

We also want to add more theme styles that will allow different kinds of navigation or game display, video snaps, automatic collections (NeoGeo, Capcom, etc).

The future looks promising!!

Pure Light theme

Current status of Amiga emulation in Oreo

The Oreo release of Android broke several emulators and most of them have been fixed up to this date, but one particular exception is the Amiga emulator (UAE2All2) which will require more time to fix, or as an alternative, be replaced by a new emulator.

Some fixes in Oreo made some hidden bugs become evident in this emulator, making it crash when opening and closing the in-game menu. These bugs were found and fixed and initially it seemed that the problem was solved, but later I found that there is a random crash that happens sometimes when you open the in-game menu.

For a long time I kept this version in hold hoping to find a solution for the random crash, meanwhile the public version of the emulator just crashed at all times. So I finally decided that a random crash is better than a certain crash, even when deep inside I know that both alternatives are bad, although I don’t want people to wait any longer.

This random crash has been tracked down, but the error happens deep inside Android where I cannot see exactly what is causing it. If you are a developer, keep reading in case you may help me fix this problem.

Normal users will receive the update, but expect random crashes.

Bug details (for developers)

The Amiga emulator is SDL based, where they have a thread to update the GL surface. When the in-game menu is opened, this thread is “paused”, the screen neither the emulator is run and the GL thread keeps waiting in a loop.

Android performs all GUI operations in one thread, the “main” thread, so before the main menu is shown, this main thread pauses the GL thread, waits until the GL wait loop is being run and then opens the main menu. Sometimes, when Android is displaying the menu it enters a deadlock.

From the scarce thread dumps that I have seen, it seems to be a problem rendering the text. Apparently, there is no other thread doing something with the GUI so in theory this lock should never fail, but it fails.

The only stack trace available of this deadlock is native:

"ora.uae4all.sdl" sysTid=29880
#00 pc 00018dbc /system/lib/libc.so 
(syscall+28)
#01 pc 000b38cd /system/lib/libart.so 
(_ZN3art17ConditionVariable16WaitHoldingLocksEPNS_6ThreadE+88)
#02 pc 00192e73 /system/lib/libart.so 
(_ZN3art2gc4Heap26IncrementDisableThreadFlipEPNS_6ThreadE+278)
#03 pc 00291367 /system/lib/libart.so 
(_ZN3art3JNI17GetStringCriticalEP7_JNIEnvP8_jstringPh+454)
#04 pc 000d8469 /system/lib/libart.so 
(_ZN3art8CheckJNI22GetStringCharsInternalEPKcP7_JNIEnvP8_jstringPhbb+544)
#05 pc 000cec6f /system/lib/libart.so 
(_ZN3art8CheckJNI17GetStringCriticalEP7_JNIEnvP8_jstringPh+22)
#06 pc 000b8275 /system/lib/libandroid_runtime.so 
(_ZN7androidL37android_os_Parcel_writeInterfaceTokenEP7_JNIEnvP7_jc
lassxP8_jstring+40)
#07 pc 00800dab /system/framework/arm/boot-framework.oat (offset 0x5c7000) 
(android.app.admin.SecurityLog.readEventsO
nWrapping [DEDUPED]+130)
#08 pc 0001422f /dev/ashmem/dalvik-jit-code-cache (deleted)

The emulator is open source and the code is located in my github, if anybody wants to take a look, just send me a message for build instructions. Thanks in advance.

https://github.com/fcatrin/rxAmigaAddOn

Live background and new YouTube channel

Retro gaming in new TV sets always have the problem of not using the full screen. Personally I don’t like to stretch the image but at the same time I don’t like to have the empty spaces / black bars at the sides.  Some emulators put an image to cover the black area but that has the problem that for some games it just doesn’t match, then I watched some videos that added a live background with the images of the game itself, with a bit of blurring and I thought that it was awesome.

So I spent some time working on the idea and I made it for RetroArch.  RetroX uses a rather old version of RetroArch (1.2.2) and I don’t know if they have done it in new versions, but at least our version will have it.  Now I will play with it a little before releasing it to the public as an option, and hopefully I will add the same to the other emulators used in RetroX.

At the same time, I announce our new RetroX exclusive YouTube channel where you can follow the development of new features and anything RetroX related. Don’t forget to subscribe to receive the updates!

New RetroX Forums!

RetroX Forums
In the last weeks we have been making progressive steps to be more open to our users, like publishing our emulator porting libraries in github and allowing users to create their own themes, but we believed that we could do more. So, since today we have opened a forum to hear from you!! In our forums you can request features, ask for support, read our latest _unofficial_ news, and even share info and material about retro games and emulators.

Until now we have been using Facebook to be in touch with the users, but it’s hard to keep track of all the conversations, so we hope that these forums will allow us to build community with you, without restrictions.

With no further due, please go and start with our welcome message:

http://forums.retrox.tv/viewtopic.php?f=4&t=2

Cheers!