RetroArch – In Development – World-first text to speech in emulators! OCR Bounty Progress!

The OCR bounty’s next milestone has been reached! Previously, it was finally possible to recognize patterns of text by the OCR/translation APIs. Now, text to speech has been achieved!

NOTE: This is a work in progress/development, and is not reflective yet of the actual finished product.

In this video, you see us running RetroArch with an old school SNES RPG, Soul Blazer. Right now, this is a very experimental implementation that is far from finished and not really ready for general gameplay, but this will be further developed from this point on.

Anyway, in this video you see us doing the following:

* Whenever we pause RetroArch, the OCR process starts. It will first attempt to recognize text onscreen.

* Once it has recognized text, you will see outlines onscreen surrounding the recognized text.

* Then it passes this off to the Translate Text To Speech engine. Once done, it generates a log message about it (you can see this in the video).

* From this point on, you can unpause RetroArch and you can actually hear the voice over.

NOTE: Just to emphasize, this is NOT how it will work like in the actual finished product. This is a purely ‘WIP developer’ video we’re showing.

RetroArch 1.6.4 – Released!

RetroArch 1.6.4 has just been released! Grab it here.

This latest version has also been uploaded to the Google Play Store. You might see it appear on the Amazon App Store soon too!

General changelog

ANDROID: Fire Stick & Fire TV remote overrides gamepad port 0 on button press and viceversa like SHIELD devices
ANDROID: Provide default save / system / state / screenshot locations
AUDIO: Audio mixer supports MOD/S3M/XM file types now!
INPUT: input swap override flag (for remotes) is cleared correctly
INPUT: allow specifying libretro device in remap files
INPUT: allow specifying analog dpad mode in remap files
INPUT: allow saving libretro device to remap files
INPUT: allow saving analog dpad mode to remap files
INPUT: allow removing core and game remap files from the menu
COMMON: Cores can now request to set a ‘shared context’. You no longer need to explicitly enable ‘Shared Hardware Context’ for Citra/OpenLara/Dolphin.
COMMON: Add ‘Delete Core’ option to Core Information menu.
COMMON: Allow Max Timing Skew to be set to 0.
COMMON: Change the “content dir” behavior so it works on either a flag or an empty directory setting, now platform drivers can provide defaults for save / system / state / screenshot dirs and still allow the content dir functionality, these settings are under settings / saving and flagged as advanced
GUI: You can turn on/off ‘Horizontal Animation’ now for the XMB menu. Turning animations off can result in a performance boost.
GUI: Fix sublabel word-wrapping in XMB where multi-byte languages were cut off too soon
LOCALIZATION: Update Dutch translation
LOCALIZATION: Update Traditional Chinese translation
LOCALIZATION: Update Italian translation
LOCALIZATION: Update Russian translation
WINDOWS: Provide default save / system / state / screenshot locations
LOBBIES: Show what country the host is in
MENU: Enable OSD text rendering for gdi and libcaca drivers
WINDOWS 98/ME/2K: Set default directory for MSVC 2005 RetroArch version.
WII: Better V-Sync handling, backported from SuperrSonic.
WIIU: Exception handler rewritten.

Bounty system gathering steam!

Several bounties have either been completed over the past few days or are nearing completion. Let’s cover a few of them.

In case you’re interested, here is a list of bounties we are currently funding which still have yet to be completed and where you could come in. Check out this list here.

Play MOD / S3M / XM files music files now in-game!


Remember that audio mixer we added a few releases back? This allows you to have external music files playing while any core/game is running. So far, you could only play Wave (WAV) and Ogg Vorbis files with this feature, but now you can playback Mod files too!

Developer Romain Tisserand did the leg work on this bounty, and the nice thing about it being added to libretro-common is that the improvements and additions made to the audio mixer can be used now by either the libretro cores and/or the frontend, RetroArch in this case!

How to use this feature – simply go to ‘Load Content’, and select any MOD/S3M/XM/WAV/OGG file on your file system. Select ‘Add To Audio Mixer’. If you are using the XMB menu driver, it will now be added to the horizontal menu’s ‘Music’ tab.

Start up any core/game now. At any point in time while playing, go back to the music, go to the main menu, go to the Music tab, select any of the music files and choose ‘Add to audio mixer’. Toggle the menu again to go back to the game and you can hear the music being mixed in with the game’s sound.

TIP: You can mix several music files at the same time! You can run up to 8 music files together at the same time. As ever, RetroArch allows you power features beyond what is commonly offered.

MAME CHD support for Beetle Saturn / PC Engine Fast!

This bounty came about when several users saw the value in more emulators being able to read MAME CHD images and chipped in the funds for a bounty.

Developers Romain Tisserand and inolen (Redream) have written a new C-based library called libchdr. This should interface with CHD images. After the library was written, Romain decided to put the work in to backport CHD support to the Mednafen-based cores, Beetle Saturn and PC Engine Fast.

This means that both the Mednafen Saturn and PC Engine Fast cores can now read MAME CHD images! MAME CHD is a compressed image file which can save a ton of storage for disc/CD-ROM based images. The implementation also supports FLAC support for redbook audio.

New bounties have been created for more cores to have this compatibility, such as Genesis Plus GX (and Eke seems interested in having this in his upstream repository as well). This is just one of the ways in which we think bounties can trickle down beneficially to downstream projects as well.

The upshot in all this is that pretty soon it could be possible to use the same MAME CHD image sets for both MAME and these various cores. More interoperability between cores is definitely a good thing to see.

MAME 2003 – DCS sound issues fixed! Proper sound now in Mortal Kombat/NBA Jam/WWF Wrestlemania!


For a long time, the MAME 2003 core has suffered from an issue where the sound could deteroriate after a couple of minutes for about 30 seconds before restoring itself. This would happen in Midway DCS-based games such as Mortal Kombat 1/2/3/Ultimate, NBA Jam, etc.

A bounty had been submitted by dankcushions some time ago and finally this bounty is on the verge of being completed! It should finally be possible to play these games at fullspeed on something as low-fi as a Raspberry Pi without being put out of the game by sound bugs and being reminded you are running an inaccurate emulated version of the game.

New big bounty for Beetle PSX upcoming in next few days – dynarec!

For quite some months now, a bounty has existed for Beetle PSX which has steadily increased in value. Up to $250 now, the pledgers are asking a developer to create a dynamic recompiler for the Wii U system in hopes of being able to run PlayStation games at fullspeed.

Unfortunately, we think that in order for this bounty to first get traction, some groundwork needs to be laid out first. Right now, Beetle PSX has no dynarec system in place at all, only a CPU interpreter. Therefore, it would be very hard for a developer to start right out of the gates with a PowerPC-based dynarec since no framework is in place yet that would allow him/her to slot in a dynarec backend like this.

So, what we are going to do is we want to sweeten the pot a bit and create a new bounty dedicated solely to building a dynarec. We believe that once the groundwork is laid out, this WiiU dynarec bounty has more chance of being successfully completed.

The conditions will be:
* A dynarec system for Beetle PSX, preferably written in C or else C++98.
* A working backend for x86 32bit and x64 (64-bit).
* Should be engineered in such a way that new backend implementations for other architectures (like ARM and PowerPC) can be easily implemented.
* Should be signifcantly faster than the interpreter CPU core, and should lower Mednafen/Beetle PSX’s CPU system requirements considerably.

We will start out this new bounty at $100. Other users can feel free to chip in on this endeavor. You will see this bounty being announced over the next few days.

Release highlights

Windows 98 SE/2000/Millennium Edition version – now with 29 cores!


So we announced a Visual Studio 2005 version of RetroArch this past week which runs on Windows 98 SE / Millennium / 2000. Upon release however, there were no cores.

We now have 29 cores available on our buildbot! You can get them by starting your copy of RetroArch 1.6.4 and going to Online Updater -> Update Cores. Note that because it’s Visual Studio 2005/MSVC2005 we are relying on as our compiler, certain cores might never become available for this. For instance, cores that rely on C11 (like SameBoy) or C++11/C++14 (like Dinothawr/Dolphin/Citra) will not make the cut. Fortunately, most of our cores can happily compile as either C89 and/or C++98, so backporting is not as big an issue for it as it would be for other projects which are not as careful when it comes to code maintenance.

Here are some general hints and advice in case you want to run RetroArch on your retro battle station:
* Keep in mind that Windows 98 SE GPU drivers in most cases won’t support OpenGL 2.0. There is one exception apparently, which is the nVidia Geforce 6 series. This GPU series should support OpenGL 2.0 and there should still be drivers somewhere available for Windows 98. In case you have such a GPU, you could opt to use the OpenGL driver which should be more full-featured than our GDI and/or Direct3D9 drivers.
* In most cases, your GPU driver will probably support Direct3D 9. If you want to use Direct 3D 9, you should only use the menu driver RGUI with it. Neither MaterialUI and/or XMB will render properly as of yet with Direct3D.
* For lower-end GPU hardware where neither Direct3D 9 or OpenGL is desirable or possible (because you don’t have hardware accelerated 3D video drivers), a GDI video driver is also available. For this release, we added OSD font rendering to it. There are still issues remaining with this GDI driver though on certain OS configurations. Bparker might be able to use some help with getting some of those niggles sorted out. Reminder that if you want to use a menu driver with GDI, it’s best to use the RGUI menu driver.

Citra/OpenLara/Dolphin cores can now be easily used!

You no longer need to enable ‘Shared Hardware Context’ anymore in order to use these cores. RetroArch’s underlying API, the libretro API, has gained a new environment callback. The Citra/OpenLara/Dolphin cores make use of this to signify to the frontend that they need a shared hardware context.

A frontend can feel free to implement this or not, however, it goes without saying that cores which make use of this feature might simply not work correctly if left unimplemented.

Deleting cores

Installed a core, but you feel like you no longer need it? It’s now possible to delete it from within RetroArch.

How to do this –
1. Load the core.
2. Go to the main menu, and go to Information.
3. Select ‘Core Information’.
4. Select ‘Delete Core’ at the bottom of the list.

Configuration changes

Saving Stuff on Content Dir

The new behavior is to always provide a sane default directory for Saves, Savestates, System Files, and Screenshots. Windows and Android have been historically problematic in this regard since the content directory may not be writable at all times.
The old behavior relied on the setting strings being empty, now we provide a default value for these dirs on both Android and Windows which means the string will never be empty. Other platforms should follow this convention shortly.

So if you want to use content dir after 1.6.3 do the following:

  1. Navigate to Settings / User Interface
  2. Enable Show Advanced Settings
  3. Navigate to Settings / Saving
  4. Enabled the respective settings among the last four settings for the stuff you want to reside with your content

We apologize for any inconvenience this may cause to existing users but we need to make some changes to make progress.

Core Input Remapping Improvements

You can now delete core and game remaps from the Quick Menu.

Core Input Remapping has also been improved. The following will now be saved:
* The libretro device
* Analog Dpad mode

You can also save these in overrides but remaps is a far more convenient place for these.

Updates on cores

Read here what updates have been pushed to the cores since the last release –

As always, you can always install the latest version of every core from RetroArch’s builtin ‘Core Updater’ (accessible from the menu by going to ‘Online Updater’ -> ‘Update Cores’.

Retroarch on Amazon App Store coming soon!

We have often been begged by Amazon for years now to please publish RetroArch on the App Store. So far, we always felt the time was not right.

With this release, though, we have finally fixed a fundamental issue where using the Remote would make it no longer possible to use a gamepad as Player 1. This has now been rectified.

We will inform you when the Amazon App Store build has been published. For now, users can sideload it by just downloading the APK from our website.

What’s up next?

Priority number one absolutely right now is PPPSSPP and Supermodel. We are going to get that into your hands ASAP as promised.

After that,

* An AppImage version of RetroArch for Linux will be available soon.
* Lots of core work like we always do each week.
* More yet unannounced stuff? Stay tuned!

View this page if you’d like to explore donating to us. By popular demand, there is now the ability to send one-off donations through Bitcoin, and we have put up links so that you can directly send funds to the Bountysource bucket. You can also pledge to our Patreon.

NOTE: the OSX PowerPC version will be uploaded tomorrow. Thanks for your patience.