Play! libretro core already working! Will be on buildbot soon!

Play! is a Work In Progress PlayStation2 emulator. Thanks to the great efforts of Zer0xFF, who took three days out of his busy schedule to port the emulator to the libretro API, we can start rolling out this emulator to our buildbot soon!

It must be stressed that Play! is a Work In Progress PS2 emulator, and we mean that literally. Don’t expect every game to run perfectly, far from it. However, it has a solid foundation and already has working dynamic recompilers for all the popular architectures, its value which cannot be understated. The libretro core also already has working savestate support.

This core will require OpenGL on the desktop and OpenGL ES3 on mobile devices.

Game compatibility is entirely dependent on the state of the upstream #Play! emulator. So as Play! improves, so too will the libretro core!

#Libretro is currently a Patreon backer of the Play! project, and we are very grateful to Zer0xFF from the Play! project for getting this port up and running in less than 3 days! Good open source PlayStation2 emulation deserves to get more funding, and we are happy to do our part. We hope you will as well!

Note too that the PCSX2 core bounty is still alive and well, and can still be picked up by any developer willing to port it to the libretro API.

RetroArch – In Development – World-first text to speech in emulators – Update!

Earlier this month we showed you RetroArch’s world first text to speech implementation for emulators. You can read that previous article here.

Since then, this feature has been immeasurably improved. Onscreen character recognition and live text to speech translation is now done at the press of a button. You bind the AI Service key to a button or key of your choice, and as soon as you press it, a scan of the image will be taken in real-time. Any characters that were recognized as text will then be translated from text to speech.

In this video, we are running a local instance of vgtranslate on the same computer. This cuts down a lot on the latency you could perceive in the previous video. The other big difference is that the core no longer has to be paused manually and then unpaused to do the OCR scan – you now press a hotkey and the game continues running without any interruption. This provides for a much more smooth and seamless experience.

Shown in this video is a test run of several cores and games: Quake 1 with the Tyrquake core, Mega Man 4 with a NES emulator core, Trials of Mana/Seiken Densetsu 3 with a SNES emulator core, and finally Castlevania 3 with a NES emulator core. The OCR/text to speech system works with ANY libretro core that does not use hardware acceleration right now. So any core that doesn’t rely on OpenGL/Vulkan/Direct3D in order to function should be good to go.

Play! (PlayStation2 emulator) getting a libretro core

The PlayStation2 emulator Play! will be seeing a libretro port in the near future. We’ve reached an amicable agreement with two devs to make this happen. We’ll also be supporting their Patreon monthly from now on, just like we’ve supported other Patreon emulator creators for little over a month now as of this writing.

Note that this is separate from the PCSX2 core bounty, which is still ongoing and is still its own thing. We still need to find a bounty hunter for that one, though.

RetroArch – In Development – Touchscreen Lightgun for mobile devices!

With the upcoming new RetroArch version, it will be possible to use your fingers as a lightgun on mobile devices!

The first core you can see here with working support is Beetle Saturn, running at fullspeed in this video on an iPhone XS Max!

We will let you know which cores will support this feature as we get closer to the release of the next RetroArch version. Stay tuned!

RetroArch 1.7.7 – UI Updates

RetroArch 1.7.7 includes many user interface tweaks and improvements. Here is a brief round-up of important changes:

Playlist Enhancements

Playlist display has been tidied up with some general housekeeping:

  • Content metadata can now be displayed via playlist ‘sublabels’. These have been added to all menu drivers apart from Ozone (which employs a side panel instead), and at the most basic level are used to show current core associations. This greatly improves the appearance of history and favourites playlists – for example:

Sublabels OFF

Sublabels OFF

Sublabels ON

Sublabels ON

Sublabels can be enabled/disabled via the Show playlist sublabels option under Settings > Playlists. (Note: Users who disable sublabels but still want a ‘clean’ history/favourites can hide core associations via the Show associated cores in playlists option)

  • Playlist sorting is now consistent, and controlled via a Sort playlists alphabetically toggle under Settings > Playlists. When enabled, all content playlists (excluding histories) are presented in alphabetical order. When disabled, entry display order may be set manually by editing playlist files with an external editor.
  • All menu drivers now show identical playlist information in all cases.
  • Playlist titles have been shortened/cleaned up.
  • Various bug fixes have been implemented, including proper sorting of playlists with blank labels, and the prevention of duplicate history entries.

Content Runtime Logging

RetroArch can now keep track of your playtime. For most menu drivers, this information is presented via playlist sublabels:

Content Runtime: XMB

…whereas Ozone uses a side panel:

Content Runtime: Ozone

Content runtime logs are enabled/disabled via two new options under Settings > Saving:

  • Save runtime log (per core): Generates a separate log file for each core+content combination (standard behaviour)
  • Save runtime log (aggregate): Logs playtime for each item of content independently of the associated core (handy for users who like to run the same content with multiple cores)

A Playlist sublabel runtime option under Settings > Playlists allows either log type to be displayed in the menu.

Runtime files are saved in JSON format, and may be edited by hand should users wish to add existing playtime accumulated before this logging feature was added. By default they are written to the following locations:

  • Per core logs: [playlist_dir]/logs/[core_name]/[content_name].lrtl
  • Aggregate logs: [playlist_dir]/logs/[content_name].lrtl

…with the following example content:

{
  "version": "1.0",
  "runtime": "1:28:27",
  "last_played": "2019-05-08 14:59:56"
}

Thumbnail Additions

A small but significant improvement: thumbnails can now be displayed on ‘mixed content’ playlists – most notably history and favourites.

Content History Thumbnails

This works by correctly utilising the db_name field of playlist entries when searching for thumbnails. This information (when available) is now automatically added to history/favourites whenever new entries are created. (Note that history/favourites generated with the previous 1.7.6 release will need to be deleted/recreated for proper thumbnail support)

A caveat here is that content launched via the file browser (or command line) has no associated db_name – but we’ve added a workaround for this. Provided that the content directory and thumbnail directory have the same name, thumbnails will be identified and shown. This requires some external organisation (e.g. SNES ROMs must be placed in a Nintendo - Super Nintendo Entertainment System folder), but it means that – for the first time – users who rely exclusively on the file browser can still view thumbnails on their content history playlists.

Menu ‘Ticker Text’ Improvements

Another small yet important addition…

RetroArch veterans will be familiar with menu ‘ticker text’ – i.e. the slow ‘back and forth’ scrolling method used to display text strings that are too long to fit on screen:

Menu Ticker Text: Bounce Left/Right

Many users think this is too slow, and reading text backwards is awkward – so now both the scroll speed and method can be adjusted via two new options under Settings > User Interface > Appearance:

  • Ticker Text Animation: Can be set to either Bounce Left/Right (existing behaviour) or Scroll Left
  • Ticker Text Speed: 0.1x -> 9.9x

The Scroll Left animation is a standard scrolling marquee, and combining this with a higher speed provides a more comfortable viewing experience:

Menu Ticker Text: Scroll Left

(The new ticker is available for all menu drivers, and looks best with RGUI due its use of a fixed width font)

RGUI Remastered

The venerable RGUI is often considered the ugly duckling of the RetroArch family, but with this release it can stand head and shoulders with XMB and Ozone. Here’s a highlight reel of the most significant changes:

Menu Sublabel Support

Previously, RGUI had no way of displaying sublabels. These are commonly used in XMB/Ozone/GLUI to show informative ‘help’ text for each menu entry, but they also (for example) provide netplay room information and the content runtime metadata mentioned above. In other words, they are an important aspect of the user experience.

To remedy this shortcoming, we now have a Show menu sublabels option under Settings > User Interface > Views. When enabled, sublabels are printed in the space at the bottom of the screen where the core name would normally be shown:

RGUI: Menu Sublabels

Shadow Effects

A new Shadow Effects option can be found under Settings > User Interface > Appearance, which may be used to add drop shadows to all menu elements. This really makes RGUI ‘pop’, and greatly increases text legibility when using colour themes or wallpapers with lighter backgrounds:

RGUI: Shadow Effects

Widescreen Support

RGUI now has proper support for 16:9 and 16:10 displays:

RGUI Aspect Ratio Settings

The new Menu Aspect Ratio option under Settings > User Interface > Appearance allows the selection of both ‘regular’ 16:9/16:10 ratios and ‘centred’ variants – the latter can be used in conjunction with wallpaper themes to enable fancy border effects:

RGUI Menu Preset: GB Pocket

RGUI Menu Preset: VT2 Amber

(These and a number of other custom menu presets are available via the online assets updater – they can be found in the rgui folder inside the assets directory)

Closely related to this is the new Lock Menu Aspect Ratio option. By default, RGUI will stretch to fit the aspect ratio of the currently running content, which means the ‘Quick Menu’ is frequently distorted – for example:

RGUI Lock Menu Aspect Ratio: OFF

By setting Lock Menu Aspect Ratio to either Fit Screen or Integer Scale, RGUI will always be displayed with the correct Menu Aspect Ratio value:

RGUI Lock Menu Aspect Ratio Settings

(Note that Integer Scale is recommended on most platforms, since it ensures that menu pixels are always perfectly square and free of scaling artefacts)

Thumbnail Support

RGUI now has full playlist thumbnail support:

RGUI Playlist Thumbnails

This is controlled via the following new options under Settings > User Interface > Appearance:

  • Show Playlist Thumbnails: When enabled, mini ‘scaled down’ thumbnails are displayed to the right of playlist entries. When disabled, it is still possible to toggle a fullscreen thumbnail by pressing RetroPad Y while a playlist entry is highlighted.
  • Top Thumbnail: Thumbnail type to be shown at the top of the screen. This is also the type of thumbnail that is presented fullscreen whenever RetroPad Y is pressed.
  • Bottom Thumbnail: Thumbnail type to be shown at the bottom of the screen.
  • Swap Thumbnails: Just swaps the draw positions of the top/bottom thumbnails (allows the ‘fullscreen’ thumbnail type to be shown at the bottom of the screen)
  • Thumbnail Downscaling Method: Selects which algorithm to use when ‘shrinking’ thumbnail images to fit on screen. This allow a choice between performance (Nearest Neighbour) and quality (Bilinear or Sinc/Lanczos3). Generally, the highest quality (Sinc/Lanczos3) option may used without issue.

Of course, loading thumbnail images incurs a performance penalty. This is utterly insignificant on most platforms, but on devices with very slow storage (e.g. old Nintendo consoles, such as the 3DS) the overheads of handling thumbnails can produce lag when scrolling rapidly through playlists.

But this is RGUI: the inclusive menu driver. All kinds of hardware are accounted for. To this end, an additional Thumbnail Delay (ms) option is provided, which prevents thumbnails from loading until the selection pointer has been idle for the specified amount of time. Setting this to ~256 ms (or higher) essentially removes all overheads during menu navigation, while still providing responsive thumbnail display. This enables lag free, thumbnail-enriched playlists on even the weakest of hardware.

On-Screen Keyboard

Prior to this release, the only way to enter usernames/passwords or perform searches in RGUI was to make use of a physical keyboard. Not any more. RGUI now has a proper gamepad-controllable on-screen keyboard, just like all the other menu drivers:

RGUI On-Screen Keyboard

Battery Notifications

RGUI has also gained an optional battery indicator, complete with ‘icons’ showing charging status/battery level:

RGUI Battery Indicator

Extended ASCII Support

Traditionally, RGUI has only supported English as a display language, since it was limited to the 128 characters of the standard ASCII set. With the 1.7.7 release, a new Extended ASCII Support option has been added under Settings > User Interface > Appearance, which (at the cost of a miniscule performance hit) allows another 128 ‘special’ characters to be shown. When this is enabled, RGUI gains full support for the following additional languages:

  • French
  • Spanish
  • German
  • Italian
  • Dutch
  • Portuguese

RGUI Extended ASCII Support

Performance Optimisations

Despite these enhancements and additions, the performance overheads of the RGUI ‘render’ function have been reduced by almost an order of magnitude. This means RGUI is lighter and leaner than ever before, and users of (virtually) all platforms can enjoy the extra ‘bling’ at no added cost.

(Even 3DS – one of the weakest devices we support – runs full speed with every RGUI feature enabled, including the particle effect animations described here)