Reicast Libretro Atomiswave support!

Thanks to flyinghead, Reicast Libretro has now gained Sammy Atomiswave support! Sammy Atomiswave was an arcade system board based on the Dreamcast/Sega NAOMI hardware. A lot of SNK Playmore’s flagship games transitioned from the ageing Neo-Geo hardware to the much more modern Naomi-based hardware, such as Samurai Shodown, King of Fighters, Metal Slug and so on.

Both MAME ROMs and Demul-compatible roms should work. Note that as of right now, only a limited selection of Atomiswave games work. More will be added later today/tomorrow.

Here is a sampling of some of the games that already work. Shown here are Guilty Gear Isuka, Guilty Gear X, and Metal Slug 6.


Reicast Libretro NAOMI and MAME ROM support!

Flyinghead is adding MAME ROM support to the arcade side of Reicast Libretro.

Here is what has currently been implemented:

  • NAOMI M1 cartridge support
  • NAOMI M2 cartridge support
  • NAOMI M4 cartridge support

Things you need to know

  • Right now, only non-merged romsets work. A merged rom is a ROM without parent, it contains all the files needed.
  • NAOMI M4 cartridges require a special BIOS file to be put inside your System directory. The M4 bios should be in a “naomi.zip” file in the BIOS folder (/dc ). The file in specific which hsould be inside that zip file is called ‘epr-21576h.ic27’.

Other important additions/changes

  • in the past, NAOMI games would only work with Reicast Libretro if you loaded .lst files. .lst files are no longer necessary now. You should be able to run an arcade game with Reicast Libretro using the plain .bin/.dat file instead now. So theoretically it should now be capable of just loading Demul-compatible ROMs instead.
  • Ring Out 4×4 now allows for up to 4 player support due to adding dual I/O board support for this game.

What are the list of MAME ROMs that are compatible?

You can check the entries inside this file here –

https://github.com/libretro/reicast-emulator/blob/master/core/hw/naomi/naomi_roms.h

Out of these games, nearly all should work except for Samba De Amigo right now.

What’s planned/next?

  • Sammy Atomiswave MAME ROM support
  • Sega NAOMI GD-ROM MAME ROM support

Introducing MAME 2003-Plus: a high-performance libretro arcade emulator

In Summer 2018, RetroArch added MAME 2003-Plus to the arcade section of its Core Updater. MAME 2003-Plus is a new arcade emulator core which prioritizes 1) usability and frontend integration, 2) performance, and 3) compatibility across the range of libretro-supported platforms including mobile devices, single board computers, and consoles. Unlike other libretro MAME cores which remain fixed at one MAME version, MAME 2003-Plus is actively backporting more recent game drivers and features.

MAME 2003-Plus implements libretro functionality like savestates and netplay when supported by the underlying MAME driver. The core currently has partial support for the RetroArch “Run Ahead” input latency reduction feature when Run Ahead is set to Second Instance — our goal is to support Run Ahead fully, as discussed later in this post.

dynagearddp3a

Newly-supported games include Dyna Gears and DoDonPachi Dai-Ou-Jou

MAME 2003-Plus is part of a lineage of codebase forks and ports: this core was forked from MAME 2003, which is itself derived from Xmame 0.78, the X11/Unix port of MAME 0.78. In addition to the games supported by MAME 2003, MAME 2003-Plus contributors have backported new drivers and substantial bugfixes for several hundred additional games.

New and fixed games

Bubble Bobble: Lost Cave

Screenshot of Bubble Bobble: Lost Cave, a hacked romset that arcadez backported to MAME 2003-Plus from MAME 0.202.

There is a long tradition in arcade emulation of producing platform-specific and performance-optimized MAME builds. This core was first established when arcadez began adding games that were not available in MAME 0.78 to a new fork of the existing MAME 2003 emulator. In addition to contributions from arcadez, the core has also benefited from the contributions of new and veteran MAME hackers. The most current list of new and fixed games can be found in the CHANGELOG.

Libretro integration and usability

One of the other things that makes MAME 2003-Plus distinct from the other libretro MAME cores is an emphasis on integration between MAME 2003-Plus and the libretro API. For example, there is full support for remapping player controls in the libretro frontend rather than requiring users use the legacy MAME input binding system from standalone MAME.

MAME 2003-Plus also strives to be as easy to start working with as possible. For example, this core incorporates a number of NVRAM “bootstraps” that pre-configure games with sensible default internal settings. That means in MAME 2003-Plus, Mortal Kombat 2 is configured with an appropriate volume when first launched rather than requiring use of the Service Menu. Another one of the games which benefit from an NVRAM bootstrap is Lunar Lander, which uses the bootstrap to avoid requiring the user to complete a Service Mode reset process before it is playable the first time.

Building correct romsets

While more than 95% of MAME 2003-Plus romsets are identical to MAME 2003 and MAME 0.78 romsets and can be used as-is, new and fixed games require romsets that are built for use with this core. Unless you are already sure that you have a romset collection that is correctly built for MAME 2003-Plus, you can consult the official docs for instructions on how to rebuild and verify your collection by using ClrMamePro.

As detailed in the building romset docs linked above, a ClrMamePro-compatible XML DAT file is maintained in the MAME 2003-Plus repository for users to download. One of the new features added to core also allows users to generate their own DAT via the MAME Menu. Generating a DAT ensures that it is an exact match for the version of the core that you are using.

screenshot 2018-10-28 13 30 23

Getting started with MAME 2003-Plus

  • RetroArch: MAME 2003-Plus can be installed from the RetroArch buildbot via the Core Updater.
  • RetroPie: MAME 2003-Plus can be installed in RetroPie in the Experimental section of the RetroPie Setup tool.

Documentation for this core can be found in the libretro docs.

Feature highlights

Content-aware core options

Because MAME 2003-Plus supports more than 4,000 games, there are a number of core options which only apply to a subset of its library. For example, there are several options to configure vector displays which have no effect for games with any other kind of display. MAME 2003-Plus only presents core options to the frontend that are relevant to the game that is currently loaded — those vector options only appear when a vector game is currently loaded.

Alternate CD Soundtrack Support

The NES Classic Mini and the SNES Classic Mini have an active hack and homebrew community which helped make MAME 2003-Plus and other libretro cores available on that hardware. Thanks to gpstar, KMFDManic, and others in that community, MAME 2003-Plus supports alternate soundtracks for several popular arcade titles that were also released in other formats with high quality audio soundtracks.

Out Run snapshot

These alternate soundtracks are enabled by first placing the appropriate audio sample pack within the mame2003-plus subdirectory of the libretro system path, and then activating the Use CD Soundtrack core option.

  • Double Dragon
  • Final Fight
  • Mortal Kombat
  • Michael Jackson’s Moonwalker
  • NBA Jam
  • Out Run

KMFDManic created videos demonstrating the alternate soundtracks:

Final Fight, Mortal Kombat, and NBA Jam

Out Run

Content-aware control names

In the same way that content-aware core options only appear when they are relevant to the current game, MAME 2003-Plus has added support for content-aware control names. In other words, when remapping Street Fighter 2 controls, the libretro frontend can display the control names that were printed on the real arcade control panel like Jump, Strong Punch and Forward Kick instead of a generic labels like Up, Button 1, Button 2, etc.

sf2-content-aware-controls

Street Fighter 2 displays the proper names for controls like Jump, Strong Punch, and Forward Kick.

Because our support for control names is relatively new and is derived from the third-party controls.dat project, control names need to be verified by a human being before they are activated. As of October 2018, dozens of games have these active control names, but hundreds more need to be double-checked before being enabled. Coders, and users who are willing to learn basic github commands, are invited to join in this effort as volunteers!

4-way joystick simulation

4-way joysticks are an essential aspect of the gameplay for many iconic arcade titles including games like Donkey Kong, Pac-Man, and Q-Bert. Because modern joysticks generally use 8-way designs, it is usually impossible to play these games well without special hardware. MAME 2003-Plus includes a core option to simulate 4-way joysticks. When enabled, this logic analyzes input from 8-way digital joysticks in order to render its position as if the joystick had a 4-way design. This simulation is not the same as using a real 4-way joystick, but it can make a significant improvement to playability.

qbert

Q-Bert is one of the many classic arcade games intended for a 4-way joystick.

Help needed!

MAME 2003-Plus is fortunate to have a small but active group of developers making contributions. However, there are several important opportunities to improve MAME 2003-Plus and its integration with the libretro API that remain to be addressed. Coders interested in working on these issues are very welcome to introduce themselves in the github issue tracker or in the #programming channel of the libretro Discord server.

For those who are not able to contribute code to these issues, crowd-sourced “bounties” are available that allow folks to donate to a pool of funds which is awarded to the coder who can complete the project. If you find yourself enjoying MAME 2003-Plus, please consider making a donation in any amount to one of the open bounties.

Analog controller support

Currently MAME 2003-Plus only supports analog controls in RetroArch by virtue of the fact that RetroArch passes on some analog input data to the core regardless of whether the core has implemented the analog interface. It is out-of-spec behavior and it also doesn’t encompass the full analog functionality of the libretro analog controls API. This bounty entails implementing that analog API. Contribute to the bounty or read the corresponding github issue.

Lightgun support

Because MAME 2003-Plus does not yet implement the relatively new libretro lightgun API, the core currently supports lightguns only if they are configured to emulate a mouse. This bounty entails implementing the libretro lightgun API. Contribute to the bounty or read the corresponding github issue.

Improvements to “Run Ahead” support

Every game has a certain built-in amount of input lag: some react on the next displayed frame and others can take 2, 3, or even more frames before an action on the controls gets rendered on screen. Run Ahead feature calculates the frames as fast as possible in the background to “rollback” the action as close as possible to the input command requested. MAME 2003-Plus has underlying support for Run Ahead but several bugs have been reported which prevent the feature from working as intended. Contribute to the bounty or read the corresponding github issue.

Other current bounties

Gambatte Progress Report

Written by J.D. G. Leaver

Gambatte Updates

Palette Additions

The Gambatte core has long been able to colourise greyscale Game Boy games using the default built-in palettes of the Game Boy Color:

Thanks to the assimilation of original work by [TRIFORCE89](https://github.com/TRIFORCE89/Gambatte-Core), we now also have access to the 32 default palettes of the Super Game Boy:

To complete the set, three additional palettes have been created to simulate the display characteristics of the various Game Boy hardware revisions: DMG, Pocket and Light. You want pea soup green? You got it!

All available palettes may be cycled via the usual ‘Internal Palette’ core option. Better still, the automatic Game Boy colorisation setting has been updated to automagically select the ‘best’ (most colourful/appropriate) palette for each game, using an internal database with the following order of preference:

1. Game-specific Super Game Boy palette, if defined and more colorful than game-specific Game Boy Color palette.

2. Game-specific Game Boy Color palette, if defined.

3. Game-specific Super Game Boy palette, if defined.

4. Palette specified by ‘Internal Palette’ core option.

(Of course, automatic selection may be overridden to force the use of either Game Boy Color or Super Game Boy palettes, or any specific palette that is desired)

Colour Correction Improvements

Game Boy Color games are designed to be viewed on a dim, low contrast LCD panel. Transfer these games to a modern high quality display and a proliferation of over-saturated colours will assault your eyeballs.

The Gambatte core has a long standing ‘Color correction’ option which tries to improve the generated image. This works after a fashion, but it tends to make everything too dark and has some unpleasant colour mangling side effects (e.g. it give Pikachu an orange perma-tan). Fortunately, the mighty Pokefan531 (https://forums.libretro.com/t/real-gba-and-ds-phat-colors/1540/159) provides a much better solution via an external gbc-color shader (https://github.com/libretro/glsl-shaders/blob/master/handheld/gbc-color.glslp). Now this same functionality has been added to the core itself.

Setting the new ‘Color correction mode’ core option to ‘accurate’ enables the Pokefan531 ‘gold standard’ colour correction method. The old Gambatte default can still be used by setting the mode to ‘fast’ (this slightly reduces CPU load and so may be useful on garbage-tier hardware – although the ‘accurate’ method is confirmed to run at full speed even on an o3DS). Here are some screenshots showing the difference in output image quality:

Care has also been taken to ensure that colour correction is only applied when appropriate. The new Super Game Boy and hardware-mimicking GB DMG/Pocket/Light palettes are intended for display on a standard television, *not* on a Game Boy Color LCD panel, and attempting to ‘correct’ them is a mistake. The ‘Color correction’ core option is therefore no longer a simple toggle: it may now be set to ‘GBC only’, which disables correction unless explicitly running a Game Boy Color game or using a Game Boy Color palette. (Of course, if you *want* broken Super Game Boy palettes, you can change the setting to ‘always’…)

These updates, along with the improvements to automatic colourisation, should make the core much easier to work with. Instead of generating core/shader overrides to deal with some games running in colour, and some not, you can now essentially set the following:

– GB Colorization: auto

– Internal Palette: GB – DMG/Pocket (or whatever)

– Color correction: GBC only

– Color correction mode: accurate

– Emulated hardware (restart): Auto

…and pretty much every game will look correct.

Dark Filter (a.k.a. Eye Saver Mode)

In addition to having over-saturated colours, it is not uncommon for games targeting early non-backlit handheld systems to make use of white backgrounds. While these look fine on original hardware, they are simply too bright when viewed on a modern backlit display. Staring at a strong blue-spectrum backlight is a recognised cause of asthenopic symptoms. These games are a health hazard!

On most platforms, this can be mitigated easily and effectively by the use of an appropriate LCD shader. Indeed, the simpletex_lcd shader (https://github.com/libretro/glsl-shaders/blob/master/handheld/simpletex_lcd.glslp) was written for this express purpose:

Unfortunately, shaders are not always an option: weak hardware may not be able to run them at full speed, and devices like the 3DS have no shader support whatsoever…

A more inclusive solution has therefore been added to the Gambatte core in the form of an adjustable ‘dark filter’. This is somewhat analogous to the filtering used in Nintendo Virtual Console titles, only less awful. Instead of a uniform brightness reduction, the ‘darkening’ is roughly proportional to pixel luminosity; this gets rid of harsh glare without (completely) butchering image quality.

The filter may be enabled by setting the new ‘Dark Filter Level’ core option from 5-50%. Here are some screenshots showing the effect at 30%:

Give it a try – your eyes will thank you!

Reicast Libretro and Reicast OIT Libretro merged into one! What you need to know…

Flyinghead has succeeded in merging both renderers into one. As a result, we no longer require a separate core for Reicast OIT, and there will be only one Reicast core from now on, simply called Reicast Libretro.

Recommendations

Moving forward, we recommend that you remove the Reicast OIT Libretro core from your cores directory, and leave only the regular Reicast Libretro core instead. This file should be called reicast_oit_libretro.{so/dll/dylib}. You can also remove the core info file that exists for it inside your Core Info directory. We have already proceeded to remove these files from our buildbot, but these files will be left lingering in existing installations unfortunately, necessitating this manual cleanup by the user.

So how do you switch between OIT and non-OIT now?


By default, Reicast Libretro will boot in non-OIT mode. You can tell if this is the case by going to Quick Menu -> Options and checking the ‘Alpha sorting’ option. If it’s set to ‘Per-triangle’ or ‘Per-strip’, the non-OIT GL2/GL3 renderer is used. You can use OIT mode by setting it to ‘per-pixel’ and then restarting the core.

Make sure that just like before, OIT mode (per-pixel accuracy) requires a video card that has OpenGL 4.3 support. Be aware that OIT mode is also much more GPU intensive than either per-strip or per-triangle alpha sorting. You might really need a good discrete GPU in order to be able to play this at decent speeds.

For which platforms is OIT mode (per-pixel alpha sorting) available?

It should be available for both Windows and Linux builds. macOS only supports OpenGL up to version 4.1, so per-pixel alpha sorting has to be excluded from this version unfortunately (since it requires GL 4.3).

Core Updates Summary and more Switch updates – October 2018

RetroArch Switch NSP


We now provide an NSP file for Switch straight from our Download page. The main reasons for using this are:

  • Being able to launch RetroArch straight from the main menu instead of having to boot Hbmenu first.
  • The Mupen64plus core requires more memory to be allocated than Hbmenu currently allows for. Mupen64plus will only work through the NSP file.

You can grab this from our Downloads page here.

Please be aware of the following disclaimer that should pop up before you use this:

WHEN USING THIS, YOU NEED TO BE PREPARED THAT A REAL RISK EXISTS THAT YOU MIGHT BE BANNED [FROM NINTENDO’S ONLINE SERVICES]. USE OF THIS FILE IS THEREFORE DONE AT YOUR SOLE RISK AND IS WITHOUT WARRANTIES OF ANY KIND BY US, EXPRESSED, IMPLIED OR OTHERWISE INCLUDING WARRANTIES OF TITLE, FITNESS FOR PURPOSE, MERCHANTABILITY OR NON-INFRINGEMENT. Under no circumstances are we liable for any damages arising from the usage of this file on your Nintendo Switch.

New Switch cores! 49 Cores now!

Just a few days after launch, we already have a few new cores for the Nintendo Switch available for Nintendo Switch! You can grab these new cores by going to ‘Online Updater’ -> ‘Update Cores’ from within RetroArch, and downloading them one by one.

Let’s quickly run through some of them:

Mupen64plus


This is an early port of Mupen64 Plus for the libnx Switch port! Please be aware of the following:

  1. You will need to install RetroArch NSP and boot it straight from the main menu in order to be able to use this core. Mupen64plus requires more memory to be allocated than Hbmenu allows for.
  2. The framerate right now is not great. This is as a result of there being no dynamic recompiler right now, it just uses a cached interpreter core instead.

NOTE: Everybody is completely aware of the lacking performance of the current Mupen64plus. This is simply a proof of concept for now. Remember, once this bounty (which has amassed so far an amazing $1K+ in little over a week) is finally completed, most games will be running at fullspeed effortlessly on Switch with this emulator!

What this core illustrates is that libretro GL works fine on RetroArch Switch. You can expect to see more libretro GL cores being ported over to Switch in the near future. We are excited for what the future holds over this!

Mr. Boom

This is a great homebrew Bomberman clone made by franck. Up to 8 players can play locally, and you can even setup AI bots that will play against you in either singleplayer mode or multiplayer mode. This should be a perfect fit for the Switch with one Joy Con doubling as two controllers.

GW – Game & Watch

This is a Game & Watch simulator. It runs simulators converted from source code for the games available at MADrigal. Each simulator is converted with pas2lua, which was written specifically for this purpose, and uses bstree, which was also specifically written to obfuscate the generated Lua source code as per MADrigal’s request.

For more info, read this article here.

This core is courtesy of leiradel, who personally ported this over to Libretro.

81

81 is a port of the EightyOne (a.k.a. THE Sinclair Emulator) to libretro.

EightyOne emulates a number of ZX80, ZX81, clones, and other computers based on the same hardware:

* Sinclair ZX80
* Sinclair ZX81
* Timex TS1000
* Timex TS1500
* Lambda 8300
* Ringo R470
* MicroDigital TK85
* Jupiter ACE

However, 81-libretro only emulates the Sinclair ZX81 with 16Kb RAM for now. Other machines will be added as time permits. Push requests are welcome.

The port correctly loads and runs some many games I have around in the p format. tzx format is also supported.

EightyOne also emulates some ZX Spectrum machines, but those were left out of this core on purpose. For a ZX Spectrum core for libretro, see the Fuse core.

This core is courtesy of leiradel, who personally ported this over to Libretro.

FUSE

This is a ZX Spectrum emulator.

For more info, read this article here.

This core is courtesy of leiradel, who personally ported this over to Libretro.

FB Alpha 2012 Neo Geo for Wii – Virtual Memory support!

Wiimpathy has now added Virtual Memory support for the Nintendo Wii! Finally, those bigger Neo Geo ROMs that were previously impossible to load on RetroArch Wii can finally be played with FBAlpha 2012 Neo Geo core!

Here are some notes left behind by Wiimpathy:

It uses the Wii NAND flash as virtual memory. The games also have to be converted/decrypted first to cache files with a PC program called romcnv.
This program is a modified version of romcnv used for MVS2PSP.
Romcnv binaries: http://www.mediafire.com/file/xb783jd9mxhgbos/romcnv_R2.zip
Romcnv Source: http://www.mediafire.com/file/14a55bohl5u1suo/romcnv_src.zip

Note that a few games(SNK Vs Capcom PCB for example) are still too large with this method.

Dosbox SVN – Dynarec on 32bit Windows/Linux and 32bit Android

radius has done extensive work on a new Dosbox libretro core. The dynarec has now been made to work on the following platforms:

  1. 32bit Windows/Linux versions
  2. 32bit Android versions

You can now play fairly modernish games like Duke Nukem 3D (from an MS-DOS perspective) on Dosbox at fullspeed!

But there is more! There is even MIDI playback implemented, and netplay works via IPX.

Reicast

Last time we reported on Reicast, we had full keyboard support implemented which was already hot on the heels of full multiplayer online support with zero network configuration. Since then, flyinghead has not been exactly sitting still. An overview of the progress that has been made since:

  1. Lightgun emulation support (House of the Dead 2 (US and EU), Confidential Mission (EU), and Death Crimson 2 (JP) all confirmed working)
  2. Various crucial graphics bugs have been fixed on both Android and ARM Linux. FMVs should no longer show a black screen and Soul Calibur’s characters should no longer be black (due to high quality textures not being rendered).
  3. Threaded rendering mode’s stability has been further increased.
  4. A bug existed that caused white lines on the top and right side of the screen. Various games exhibited this. This has now been fixed.
  5. Further improved CHD image support.

The next thing flyinghead is planning to do is merging both Reicast and Reicast OIT into one, so that we no longer need to have two separate renderers/cores!

RetroArch 1.7.5 – Released!

RetroArch 1.7.5 has just been released! Grab it here.

This latest version has also been uploaded to the Google Play Store. This is the 32bit version. We also have a brand new 64bit version for users with 64bit capable devices. You can grab that one here. More on that version later!

If you’d like to show your support, consider donating to us. Check here in order to learn more.

NOTE: Currently the following versions have not yet been released – Xbox OG. I am working on building those versions as we speak.

Highlights

Launch of Nintendo Switch version


Easily the main event of this release. Read our dedicated blog article here –

https://www.libretro.com/index.php/retroarch-1-7-5-introducing-libnx-switch-version/

Menu improvements – dropdown lists

We were fully cognizant of the fact that it was very inconvenient for many mobile users (such as Android users) to have to repeatedly click on a setting in order to adjust its value. So we have finally implemented dropdown lists now for the majority of the settings!

A dropdown list will appear when you either click on a certain setting or press the ‘OK’ button on your gamepad. Settings that have a dropdown lists are typically decimal/hexadecimal settings, or even string lists.

We have even made the core options feature dropdown lists, and they work uniformly across all currently existing menu drivers right now. So that means the dropdown lists work with RGUI, MaterialUI as well as XMB!

We hope this will smooth over some of the rough edges that have existed in the raster-based UI for quite some time!

Adaptive V-Sync implemented for OpenGL (Windows/Linux)

We have implemented the “swap_control_tear” extension for OpenGL when using WGL on Windows or GLX on Linux. In order to take advantage of this, your GPU needs to support either the “WGL_swap_control_tear” extension (for Windows) or “GLX_swap_control_tear” (for Linux).

Adaptive V-Sync is basically a conditional V-Sync mode. V-Sync is enabled until performance falls below the target refresh rate. If it falls below the target framerate, it will conditionally disable V-Sync. Basically the logic behind this is that tear lines is preferable vs. a sudden halving of the framerate (under a normal double buffered V-Sync configuration) from 60 fps to 30fps, and from 30 fps to 15fps, and so on. This can minimize stuttering when performance falls below real-time, and can be more energy efficient. It can also help with very intensive shaders that makes the framerate fall below fullspeed.

Adaptive V-Sync is commonly seen on current-generation game consoles such as Xbox One and PlayStation4.

Improved Vulkan performance (especially for Nvidia cards) – mailbox emulation

Thanks to Themaister’s latest patches implementing mailbox emulation for Vulkan, there should no longer be frame pacing / stuttering issues with Vulkan on Windows when using Nvidia graphics cards.

Please read his blog article for more details.

Easy recording/streaming options (for versions with ffmpeg support)

RetroArch video streaming feature was revamped with GUI support, automatic file naming and quality presets.

Live Streaming to YouTube and Twitch is now possible with a single click (after setting up your stream key of course). You can go to Settings -> User -> Accounts and configure your Youtube/Twitch stream key there.

UDP Streaming to another RetroArch instance

In addition to streaming to YouTube and Twitch (and to file) you can now stream to another RetroArch instance.

This is meant to be the backbone for Discord spectate mode. And streaming netplay (think parsec, gfe co-op)

An interesting fact about this is that you could stream at 1x without shaders and playback in another instance with shaders and at any scale you want.

Of course all these things still need more work, GPU assisted recording, custom FFMPEG, etc. But I’ll get there eventually.

To playback on another instance just do:
retroarch udp://127.0.0.1:56400

General changelog

– CAMERA: Fix Video4Linux2 driver that broke years ago.
– CONFIG: Add ‘Reset To Defaults’ setting in Configurations. This will reset your config file to defaults.
– CHEATS: Add support for Rumble when increase or decrease by the rumble value.
– CHEATS: Add cheat variables to allow for updating large portions of memory.
– CHEEVOS: Prevent loading states before achievements are fully loaded.
– CRT: New porches and interlaced bug fix.
– CRT: New functionality, ability to switch between 15KHz and 31KHz, etc.
– COMMON: Support for “OEM-102” key (usually ‘\’ on Euro keyboards).
– DISCORD: Add ‘Ask To Join’ Feature.
– EMSCRIPTEN: Add stb_font support.
– INPUT: Add new menu toggle combos ‘L3 + R’ and ‘L + R’ (useful for Switch).
– IOS: Use safe area to account for notch for iPhone X and adjust main view.
– LOCALIZATION: Update Portuguese / Brazilian translation.
– LOCALIZATION: Update Japanese translation.
– LOCALIZATION: Update Polish translation.
– LOCALIZATION: Update Spanish translation.
– MENU: Add dropdown lists for many settings.
– MENU: Fix crash that could happen when changing core’s options on Android.
– MENU/QT/WIMP: Add option to rename playlists.
– MENU/QT/WIMP: Add option to filter extensions inside archives when adding to a playlist.
– MENU/QT/WIMP: Rename playlist entries with 2 single clicks.
– MENU/QT/WIMP: Fix shader parameter checkboxes not working
– METAL: Add screenshot support.
– NETPLAY: Save lobby details received back from server after first announcement.
– OPENGL/GLX: Implement Adaptive VSync – GLX_EXT_swap_control_tear.
– OPENGL/WGL: Implement Adaptive VSync – WGL_EXT_swap_control_tear.
– RUNAHEAD: Fix performance degradation that could happen over time (after approx. 30 mins). Fixed input IDs outside of range 0-35 causing slow performance in runahead.
– SWITCH: Add stb_font support.
– SWITCH: Add Retro Achievements support.
– SWITCH: Add networking support.
– SWITCH: Add touchscreen support.
– SWITCH: Add OpenGL support.
– SWITCH: Merging of RetroNX Nintendo Switch port, based on libnx SDK.
– VULKAN: Fix race condition in threaded mailbox emulation.
– VULKAN: Maintenance fixes.
– WIIU: Fix menu lag when built with DevKitPro r32.

RetroArch 1.7.5 – Introducing libnx Switch version!

<
Thanks to the hard work of the RetroNX devs (natinusala and m4xw), we now have an official RetroArch release for Switch!

You can download RetroArch for Switch here.

Installation instructions

You will need a Nintendo Switch capable of running homebrew for this to work.

  1. Download the RetroArch 7z file for Switch (download link above).
  2. Extract its contents and just drag and drop retroarch and the switch folder onto the root of the SD card.
  3. Open Hbmenu, and start RetroArch.

IMPORTANT: Please start RetroArch Switch with a fresh install (in case you already had RetroNX installed before)
and migrate savegames from /retroarch/cores/save{files, states} to the same folder on the new installation.

Features

    • OpenGL support
      • Thanks to Mesa/Nouveau support, this Switch version comes with full-blown OpenGL support (thanks to fincsdev). This means that all of the advanced features available on the PC should be available on Switch as well! GLSL shaders should be supported, overlays are supported, and thanks to OpenGL support, we can use hardware-accelerated menus such as XMB/MaterialUI (with full thumbnail support, theming, etc). In addition to all this, it allows us to port libretro cores that require the use of OpenGL later in the future, such as Parallel N64, OpenLara, and potentially more like Reicast/PPSSPP/etc!
    • Touchscreen support (for MaterialUI/etc)
      • natinusala saw to it that this initial version received touchscreen support. Right now the DPI (Dots Per Inch) is kinda hardcoded for portable and not really meant for dock mode. This will be improved in the near future.
    • Full networking support.
      • Online multiplayer (with peer-to-peer and MITM matchmaking) should be available from Day One. Take note that performance of the core heavily matters in terms of the kind of quality you get out of your online experience, since the netplay implementation is rollback-based. Aside from multiplayer, you can also download cores, update assets, and all the features you would expect on the PC version.
    • RetroAchievements support
      • By registering an account at Retro Achievements and inputting your account details into RetroArch, you can obtain achievements for your games.
    • Game scanning
      • Scanning of your games should fully work, except for perhaps PS1 images right now.
    • Split Joy-Con support
      • If you go to Settings -> Input and enable Split Joy-Con (1 to 8), you can use a full Joy-Con as two separate controllers!
    • Core downloader
      • From Day One, it should be possible to download and update new cores as they arrive on a daily basis without even having to wait for the next RetroArch stable!
    • Runahead support
      • RetroArch Switch comes with runahead support from Day One! This is our game-changing feature that allows you to beat latency and even go beyond the fast response times of the original hardware. Performance of this feature is heavily dependent on the ‘performance’ level of the core and the Switch’s relative power. Try experimenting with cores, and don’t forget to turn it of for more demanding cores that balk under the pressure. Because RetroArch offers such a wide array of cores even for the same system, it’s entirely possible that one specific SNES or Genesis core is fast enough for the kind of runahead at x frames configuration that you are looking for.

44 Cores at Launch!


This might just be the single biggest platform release at launch for a new platform ever for RetroArch! Right from day one, we are starting out of the gates on the Switch with over 44 libretro cores!

So let us quickly go over them one by one –

      • 4DO – 3DO Libretro core. Try to enable the core option Threaded DSP (or a setting named something similar) for better performance.
      • 2048 – A homebrew recreation of the 2048 puzzle game.
      • Cannonball – An OutRun game engine recreation. Requires the original arcade ROMs in order to work.
      • CrocoDS – An Amstrad CPC 6128 emulator.
      • DOSBOX – MS-DOS/Windows 9x emulator. Performance may vary according to which game you are attempting to emulate.
      • Final Burn Alpha – Arcade game emulator. Can emulate (among other examples) Capcom CPS1/CPS2/CPS3 games, Neo Geo, as well as other popular 80s/90s arcade systems.
      • FCEUmm – Nintendo Famicom/NES emulator. Has some nice core options as well as good performance.
      • fMSX – MSX emulator.
      • FreeINTV – Intellivision emulator.
      • Gambatte – Nintendo Game Boy/Game Boy Color emulator. Should be the fastest Game Boy core of all right now, as well as pretty accurate.
      • Gearboy – Nintendo Game Boy/Game Boy Color emulator. Libretro core generously maintained and supported upstream by DrHelius, its original author.
      • Gearsystem – Sega Master System/Game Gear emulator. Libretro core generously maintained and supported upstream byDrHelius, its original author.
      • Genesis Plus GX – Sega Master System/Game Gear/Genesis/Mega Drive emulator. Should be more accurate than Picodrive and is many’s go-to Genesis/Mega Drive emulator. Libretro core maintained upstream by Eke-Eke.
      • Handy – Atari Lynx emulator.
      • MAME 2000 – Arcade emulator based on a 2000 snapshot version of MAME (version 0.36b). Is functionally similar/identical to iMAME4All.
      • MAME 2003 – Arcade emulator based on a 2003 snapshot version of MAME (version 0.78). Is functionally similar/identical to MAME 0.72, except a bit more up-to-date and with some game-specific fixes implemented (as well as a speedup core option for Midway DCS games, such as the Mortal Kombat series).
      • MAME 2003 Plus – Arcade emulator based on a 2003 snapshot version of MAME (version 0.78). Has everything MAME 2003 has, plus more backported game drivers and features.
      • Mednafen NGP – SNK Neo Geo Pocket (Color) emulator.
      • Mednafen PCE Fast – NEC PC Engine (CD) emulator.
      • Mednafen Super-Grafx – NEC Super-Grafx (CD) emulator. Short-lived successor to the PC Engine with backward compatibility.
      • Mednafen VB – Nintendo Virtual Boy emulator.
      • Mednafen WonderSwan – Bandai WonderSwan/WonderSwan Color emulator. This portable handheld had a screen that ran at 75Hz, therefore V-Sync is disabled for this core.
      • mGBA – Nintendo Game Boy Advance emulator. Actively maintained and improved by endrift.
      • NEStopia – Nintendo Famicom/NES emulator known for its accuracy focus. Has plenty of features. Use NstDatabase.xml for additional game compatibility support. Libretro core maintained upstream by NEStopia Undead authors.
      • NX Engine – Cave Story game engine recreation. use the original Cave Story/Doukutsu Monogatari in order for this to work. These files are needed here.
      • O2EM – Magnavox Odyssey 2 emulator.
      • PCSX ReARMed – Sony PlayStation 1 emulator. Comes with an updated Unai video renderer for better performance. Hints: you will want to turn on threaded video for this core for better performance. You can use the PSP PS1 BIOS for better performance.
      • Picodive – Sega Genesis/Mega Drive emulator with 32X peripheral support. There is no Aarch64 dynarec so the dynarec for 32X might still be too slow.
      • PocketCDG – Karaoke MP3 music player.
      • PokeMini – Pokemon Mini emulator.
      • PrBoom – Doom game engine source port. Can run at fixed framerates like 35/40/50/60fps.
      • ProSystem – Atari 7800 emulator.
      • QuickNES – Nintendo Famicom/NES emulator. Fastest NES emulator out of them all.
      • Reminiscence – Flashback game engine recreation.
      • SNES9x 2010 – Super Famicom/Nintendo emulator. Should be considerably faster than Snes9x mainline.
      • SNES9x – Super Famicom/Nintendo emulator. Slower than Snes9x 2010 but has MSU-1 support among other improvements only available in upstream version. Maintained upstream by the original Snes9x devs like bearoso and OV2.
      • Stella – Atari 2600 emulator.
      • TGB Dual – Nintendo Game Boy / Game Boy Color emulator. Has a splitscreen multiplayer mode where gamepad 1 and 2 can play against each other successfully.
      • Tyrquake – Quake 1 game engine. Runs in software renderer, no networking support (yet).
      • VBA Next – Game Boy Advance emulator. Should have an option to multithread rendering which could potentially improve performance a lot.
      • Vecx – Vectrex emulator. Early ’80s game console that rendered everything with wireframe polygons.
      • VICE (x64) – Commodore 64 emulator.
      • XRick – Game engine recreation/port of Rick Dangerous.
      • Yabause – Sega Saturn emulator. Might be too slow for now.

Hints

      • In case PCSX ReARMed is running too slowly, go to Settings -> Video and enable Threaded Video. Threaded Video can also help with certain demanding shaders. Please note that Threaded Video can tend to introduce some judder to frame pacing which isn’t there with non-threaded video, so for all other cores you might want to leave this off.
      • There is a fallback ‘switch’ video driver that you can switch to from OpenGL in case you experience some issue with a core using OpenGL. In case you do, please make sure to set the Menu Driver to ‘rgui’ then, since the ‘switch’ video driver doesn’t have working XMB/MaterialUI menu support. If you fail to do this, you would just get a black screen at startup and you would have to remove your retroarch.cfg config.

Future plans

m4xw already has a Parallel N64 core up and running on the Switch, however it’s currently quite slow and we really want to await the completion of this bounty (which amassed an impressive $1K in less than 6 days BTW!) before we include it.

Beyond that, there is a new menu driver being developed called ‘ozone’ which looks highly promising, and you might see this becoming the default UI for the Switch port in the near future!

Reicast Libretro now supports the keyboard as an input peripheral!

Keyboard support has now been implemented by flyinghead! In this video you see us testing the game Typing Of The Dead, which relies on a keyboard as its primary input device..

In order to play this game, make sure the keyboard is set to Port A of the Dreamcast. You can see us doing this in the video by going to the Quick Menu, selecting ‘Controls’, and setting the first port to ‘Keyboard’. Now restart the core and the game. You should now be able to play the game.

Game focus toggle

Quick tip: RetroArch by default binds a lot of keyboard keys to hotkeys. In order to be able to use the keyboard in full, try to bind ‘Game focus toggle’ to a key. You can do this by going to Settings – Input Hotkeys, and binding ‘Game focus toggle’ to any key you want.

How this will work is as follows: if you press the game focus toggle, you will be in ‘game focus’ mode. In this mode, none of the hotkeys will work, and you can use every key of the keyboard. When you want to go back to the RetroArch hotkey mode, you press the ‘game focus toggle’ key again in order to deactivate game focus mode.

Reicast Libretro now supports online multiplayer! Zero-configuration online Dreamcast gaming for the first time ever!

Reicast Libretro has now gained modem and PPP support. It leverages dreamcastlive.net which makes it possible to still play these games while their original servers are down.

Grab the latest core from the buildbot in order to use this! It should work on Windows, Linux, Android, and potentially even macOS seamlessly without having to input an IP address, thanks to true zero-configuration multiplayer! To our knowledge, this is the first time a Dreamcast emulator offers true zero-configuration multiplayer support like this. Demul requires a complicated TAP driver/OpenVPN configuration, and modem support was not implemented yet since the last time we checked.

How to configure online

In this video, I will boot up one of the games that allows you to set your ISP network information. You will need to do this before online multiplayer will work in Dreamcast games such as Phantasy Star Online.

One of the games that lets you do this is Quake III Arena. Other games that allow you to do this include (but are not limited to) Ooga-Booga and Toy Racer.

Input any username and password combo you want, and only input a local phone number. It can be completely bogus, it can be 666 or 888, whatever you want.

After that, you press Dial. These details will now be saved to your NVRAM, and from there, this same ISP info will be used for every subsequent multiplayer game onwards, such as Phantasy Star Online.

BTW – if you are on Windows, you might get a warning at some point from Windows Firewall if you want to allow a connection – select ‘Yes’.

Phantasy Star Online gameplay footage

In this session, you see me and flyinghead meeting up in a lobby in Phantasy Star Online and doing some hunts together! We are both using the same version of Reicast Libretro inside RetroArch.

As you can see, online works surprisingly well! All kudos to flyinghead for implementing the code necessary to be able to emulate this!

Hopefully in the near future we will have keyboard and mouse support to complement all this! It is already in flyinghead’s own branch of reicast right now.

Bliss-Box now selling cables and more (plus details on future plans with regards to Libretro integration work)

Written by Sean Green, the author of the Bliss-Box
In a continued effort to bring the best gaming experience to the scene, Bliss-Box and RetroArch have some exciting new developments.

Firstly, the cables are finally here! Jump over to the new secure webpage at bliss-box.net and grab them 

These cables come in the way of dongles and adapter boards. The boards were created to support low demand cable types and thus in the form of a mini adapter.

 

Also if you have not yet taken advantage of the exclusive offer from RetroArch, there is still time to get the deal. That’s 2 free cables with the purchase of a new 4-play kit. Plus, part of the profit goes to help RetroArch.

Single-player Blissbox adapter

There is also a bit more exciting news coming down the pike. Here is a sneak peek at one of the new products Bliss-Box and RetroArch are bring to the scene. This will be the first ever single player Bliss-Box adapter. It comes in the form of a D.I.Y  kit and planned to be packaged with a D.I.Y product from Retro Arch. Yes you heard it right, RetroArch product, more to come on this soon.

And a final word in case you missed it, Bliss-Box and RetroArch were just featured on Linus Tech Tips, check it out here.

Future Libretro integration and Bliss-box plans

Written by Daniel De Matteis, RetroArch/Libretro Lead Developer
The above paragraphs were written by ulao, Bliss-Box author. Allow me to expand on our collaboration with Bliss-Box for a moment here and why we feel the need to feature this product on a regular basis. Bliss-Box has bigger aspirations beyond just being a controller adapter system. While people using original controllers of old videogame systems is obviously a big step forward in terms of bringing that authentic feeling of playing the real game, there still remains missing elements that serve to break the cognitive dissonance that you are playing on the real hardware. Things that come to mind would be for instance the Rumble Pak on the N64 not working, or the Controller Pak not being able to be read, or the VMU unit inside a Dreamcast controller not showing anything onscreen. Obviously, to make all this happen, not only do modifications need to be made to the firmware of the Bliss-Box adapter, but RetroArch will have to drive audio/input/video data back to the Bliss-Box so that the Bliss-Box can then interpret this data and do something with it. According to the Author, the Bliss-Box can even tunnel the native controller data via USB. This makes it possible to talk directly to and from the game itself. To this end, we are highly interested in implementing the necessary extensions to the libretro API in the near future so that Bliss-Box will be able to do such things, such as being able to read a real physical memory card instead of a virtual one directly from the joypad device, or being able to display graphics on the VMU and be able to read/write to the VMU as well. We see this as a perfect marriage of two projects that both strive to bring the experience of playing on a real console as close to the original as possible.

Of course, this will require further development, where both Libretro authors and Bliss-Box authors will need to collaborate in order to get this fully implemented, and we cannot give you an exact ETA when such functionality will be available. Nevertheless, I wanted to take the opportunity to explain just what the nature of our collaboration with Bliss-Box is, and why we are backing the project so firmly.

Thank you for your time, and hopefully you will be able to understand better exactly what the future holds with regards to this new-found Bliss-Box/RetroArch marriage.

Reicast Libretro Progress Report

Display VMU screens ingame!

NOTE: This feature currently works properly in Reicast Libretro non-OIT. Reicast Libretro OIT will require some more work before this feature will start rendering properly.

Thanks to RetroSven, here is another major new feature!

It is now possible to display the VMU screen ingame! You can also specify the exact positioning of each VMU, whether it should be positioned at the top left, top right, bottom left, or bottom right corner of the screen. You can also specify the opacity of each screen and the exact size of the screen. You can display all 4 attached VMU screens at the same time onscreen!

For those that don’t know, the VMU was the Dreamcast’s memory card which also could be used as a standalone device. It was powered by a ring battery, had a D-pad and some face buttons, and it was even possible to play some minigames on the VMU.Games could download VMU minigames onto the system and you could then play these minigames when used as a standalone device.

Samurai Shodown VI (NAOMI) renders properly now with Extra Depth Scaling option!

Reicast Libretro now has a new feature – Extra Depth Scaling. By enabling this, the graphics in Samurai Shodown VI (Naomi arcade game) will render properly.

Note that even with this enabled, Reicast OIT Libretro will currently have some display bugs that the non-OIT core won’t have. Hopefully the two can become just as good later on.

RetroArch 1.7.4 – Metal 2 macOS version available now!

RetroArch with Metal 2 support for macOS High Sierra users!

Up until now, we had three versions of RetroArch for macOS/OSX users:

  • RetroArch for OSX PowerPC (10.5) – For users with an old PowerMac or iBook/Powerbook. You should have at least Mac OS X version 10.5 (Leopard) installed in order for this version to work. Cores are packaged with this version because our buildbot does not serve fresh 32bit PowerPC cores for OSX.
  • RetroArch for OSX 32bit Intel (10.6) – For users with an old MacBook that has a 32bit Intel processor (for instance, 1st generation MacBook). In order to use this, you should have at least MacOS X version 10.6 (Snow Leopard) installed. Cores are packaged with this version because our buildbot does not serve fresh 32bit Intel cores for OSX.
  • RetroArch for macOS/OSX 64bit Intel (10.6) – This is what you are likely wanting to use on a modern Mac computer. You should have at least MacOS X/macOS version 10.7 (Lion) installed. Cores are distributed separately on our buildbot.

We are now adding a fourth one:

  • RetroArch for macOS 64bit Intel with Metal 2 support (10.13) – This version has all of the features of ‘RetroArch for macOS/OSX 64bit Intel’ plus a Metal 2 video driver. This version requires at least macOS 10.13 (High Sierra), a fairly modern version of macOS. For this version, we default to the Metal video driver by default.

If you have relatively modern Mac and you want to enjoy the latest in cutting edge technology, you should definitely try out this latest version. Get it by going to our Downloads page, and click on the download link below macOS High Sierra (or later).

Some important things you should know about Metal 2 – not all of the devices that can run macOS 10.13 necessarily support this. Here is a compatibility list of all supported hardware:

  • MacBook (Early 2015 or newer)
  • MacBook Pro (Mid 2012 or newer)
  • MacBook Air (Mid 2012 or newer)
  • Mac mini (Late 2012 or newer)
  • iMac (Late 2012 or newer)
  • Mac Pro (Late 2013)

What is Metal, and why is it relevant?

Up until the ’10s, Mac OS X has relied on the crossplatform OpenGL API to provide hardware accelerated rendering to developers writing Mac applications. However, since 2014, there has been an industry-wide push towards lower-level APIs, and Apple in specific decided to go with its own proprietary graphics API. This API is called Metal, and was first premiered with iOS 7 and Apple A7 devices. It has since some years ago made the switch to macOS as well, and this year the API has been bumped to version 2.

Apple has announced OpenGL will be deprecated in the future, its graphics driver stuck with the dated OpenGL 4.1 spec for years now. While we regret this industry wide push away from a standardized, cross-platform graphics API, we have been forced to move with the times and instead cater to all the major graphics APIs. There is no longer the potential for one single graphics API to cater to all platforms.

With the release of RetroArch 1.7.4, we have achieved an important milestone: we now have fully functioning graphics drivers for the three major next-generation graphics APIs. This includes Khronos’ Vulkan API (added to RetroArch since 2016), Microsoft’s Direct3D 11/12 (added to RetroArch since earlier this year), and now Apple’s Metal 2 for macOS. Thanks to Hans-Kristian Arntzen’s SPIRV-Cross middleware, we can reuse the same shaders across Direct3D/Vulkan/Metal. We therefore are very close to having a universal shader specification that will work on all the major platforms.

We are now ready for a future when Apple will outright kill OpenGL support, while at the same time we have ensured that we have one common set of shaders that can be used across all these video drivers. The developer who has added Metal 2 support to RetroArch has already indicated he intends to bring this over to iOS and tvOS as well. And who knows, maybe even backwards compatibility with Metal 1 could arrive.

How complete is the Metal video driver right now?

Fairly complete. You get:

  • Fully functioning menu drivers. XMB, MaterialUI and RGUI should work fine.
  • XMB shader pipeline effect should work as expected.
  • You can take screenshots.
  • You can go into fullscreen mode.
  • You can use slang shaders with the Metal video driver, the same shaders that can be used with Vulkan/D3D10/D3D11/D3D12.

Things that have still yet to be added which the author is considering adding:

  • Recording support independent of ffmpeg.
  • Support for the libretro API’s RETRO_ENVIRONMENT_GET_CURRENT_SOFTWARE_FRAMEBUFFER.
  • Hardware renderer context support, so that libretro cores could make use of the Metal API.

General changelog

– COMMON: Support for “OEM-102” key (usually ‘\’ on Euro keyboards).
– MENU/QT/WIMP: Add option to filter extensions inside archives when adding to a playlist.
– METAL: Add screenshot support.

RetroArch 1.7.4 – Released!

RetroArch 1.7.4 has just been released! Grab it here.

This latest version has also been uploaded to the Google Play Store. This is the 32bit version. We also have a brand new 64bit version for users with 64bit capable devices. You can grab that one here. More on that version later!

If you’d like to show your support, consider donating to us. Check here in order to learn more.

Highlights

64bit version of RetroArch Android

We have just uploaded a 64bit version of RetroArch for Android on the Google Play Store. You should be able to get it either from Google Play, or you can get it from our Download page, available here.

This 64bit version is intended for users with 64bit capable Android devices. Shield ATV would be one of those examples but there are doubtless many others. You can install the 32bit version and 64bit version at the same time on your device. Let us run down the list of what you need to know:

  • Certain cores are going to be exclusive to 64bit. Dolphin is one of those examples, since it lacks a 32bit dynarec entirely and Team Dolphin has no intention of supporting these devices. So for certain cores, 64bit will be the only place to go.
  • Some cores are actually significantly faster with 64bit. Beetle PSX for instance is significantly faster with the 64bit version vs. the 32bit version.
  • Some cores that only have a 32bit dynarec and/or were specifically optimized might be significantly faster on 32bit instead. Dosbox SVN is one of those examples, as is PCSX ReARMed and Picodrive. To help avoid confusion, we are going to be documenting this on our Libretro Docs site. It’s not there yet but it will be in the upcoming days/weeks.

Discord integration

RetroArch 1.7.4 now has extended Discord RPC integration! Previously before 1.7.4, RetroArch would act as any other game in Discord: as a simple “Playing” status that said you had RetroArch open. It wasn’t very descriptive or helpful other than displaying the name “RetroArch”. With the 1.7.4 update, RetroArch will display more information beyond a simple “Playing” status!

Read the blog article below for a more detailed indepth article on this feature:

https://www.libretro.com/index.php/upcoming-retroarch-1-7-4-details-on-discord-integration/

Desktop UI massively improved

NOTE: The Desktop UI is currently only available for Linux and Windows. macOS support might arrive at a later date.

Where to even begin? Let’s just have the videos do the talking –

Grid view with Thumbnails

You can now choose between List and Grid View. Grid View will show thumbnails of all your games, provided you have them installed. You can always install thumbnail packs separately by going to Online Updater and selecting Thumbnail Updater.

Create new playlists easily by drag and drop!

RetroArch 1.7.4 will make creating new playlists from scratch easy as pie! No longer will you be forced to manually select a directory and scan for games; you can now create a new playlist, and then manually drag and drop the roms you want to have in that playlist over to them, and the WIMP UI will do the manual work for you!

(Windows only for now) In-app RetroArch update!

From version 1.7.4 on, it will now be possible to update RetroArch to the latest nightly versions!

Live shader editing with the desktop UI!

Starting as of RetroArch 1.7.4, it is now possible to use the desktop UI to setup your shaders! You are able to add a shader preset and stack additional passes to your shader stack! You are also able to remove any shader passes you please, change shader parameters on the fly, and even reset shader parameters to their default values by pressing the right mouse button on a shader parameter and selecting ‘Reset Parameter’.

Download all thumbnails for a playlist with Desktop UI!

Previously, it was only possible to download complete thumbnail packs per system/game category. The most obvious complaint about this for many people was that they only needed thumbnails for specific games they actually have in their collection.

Now with RetroArch 1.7.4, from inside the Desktop UI you can right click any content from any playlist, select ‘Download thumbnails’, and it will try to fetch the thumbnails for this content from the Github thumbnail repositories.

You can now rightclick on a playlist, select ‘Download All Thumbnails’ – This Playlist, and it will attempt fetching all the thumbnails for a given playlist! You can also cancel this operation at any time by either pressing the Cancel button on the dialog box, or pressing the ‘X’ icon.

Core options in desktop UI!

When you have a core loaded, you can now change the core options inside the Desktop UI!

NOTE: If you leave the core option dialog window open and you happen to unload a core then launch a new core with game, you will have to close the dialog and then reopen it again. It won’t reload itself automatically. This might get looked at in a later version.

Sync To Exact Content Frame Rate – Ideal for G-Sync/FreeSync users!


Blog post written by Tatsuya79

RetroArch 1.7.4 has a new feature that will be especially advantageous to users of variable sync display technologies, such as G-Sync/FreeSync. We call it “Sync to Exact Content Framerate”.

Read the blog article below for a more detailed indepth article on this feature:

https://www.libretro.com/index.php/upcoming-retroarch-1-7-4-sync-to-exact-content-frame-rate-ideal-for-g-syncfreesync-users/

Cheat code searching/creation interface with rumble features


Read the blog article below for a more detailed indepth article on this feature:

https://www.libretro.com/index.php/upcoming-retroarch-1-7-4-cheat-code-searchingcreation-interface-with-rumble-features/

General changelog

– ANDROID: Add sustained performance mode, can be turned on/off in Power Management settings menu.
– ANDROID: Powerstate/battery level support.
– CHEEVOS: Fix crash when scrolling Achievement List while Unofficial Achievements enabled (#6732).
– CHEEVOS: Added hitcounts support for PauseIf/ResetIf (#6817).
– COMMON: Automatically hide “Configuration Override options” in Quick Menu.
– COMMON: Small Bugfix to not trigger savestate code when pressing Reset.
– COMMON: Added libsixel video driver.
– EMSCRIPTEN: Fix Game Focus Toggle.
– HID/OSX: Fix to set hid device registration deterministic (#6497), to address issue #6640 re-adding dynamic device registration.
– LOCALIZATION: Update Italian translation.
– LOCALIZATION: Update Japanese translation.
– LOCALIZATION: Update Polish translation.
– LOCALIZATION: Update Portuguese / Brazilian translation.
– LOCALIZATION: Update Russian translation.
– LOCALIZATION: Update Spanish translation.
– MIDI: Add MIDI support to the libretro API. Dosbox is the first proof of concept core implementing libretro MIDI.
– MIDI: Add a Windows driver for MIDI, based on winmm.
– MENU/QT/WIMP: Qt QSlider styling for Dark Theme.
– MENU/QT/WIMP: Remove button ghostly inside highlighting.
– MENU/QT/WIMP: Initial grid view.
– MENU/QT/WIMP: Drag&drop to add new playlist items, add option to add/edit/delete playlists.
– MENU/QT/WIMP: Add menu option to update RetroArch (Windows only for now).
– MENU/QT/WIMP: Add menu option to manage shaders.
– MENU/QT/WIMP: Add menu option to manage core options.
– MENU/XMB: Add new icons for the settings
– MENU/XMB: Add an option to show the desktop ui
– METAL: Initial work-in-progress video driver for Metal. macOS-only right now, and currently requires macOS 10.13.
– METAL: Supports XMB/MaterialUI, has a menu display driver. Has a font rendering driver.
– METAL/SLANG: Slang shaders should be compatible with Metal video driver.
– NETWORK: Enable SSL/TLS support by default for desktop platforms.
– QNX: Fix Game Focus Toggle.
– PS3: Add audio mixer support for FLAC and MP3.
– PSP: Use proper button labels, fix inverted R-Stick Y axis.
– REMAPS: Fix the way offsets are calculated for keyboard remapping.
– RUNAHEAD: Fix full-screen mode change breaking Secondary Core’s environment variables.
– RUNAHEAD: Deterministic input for RunAhead, guaranteed to match the last polled.
– VITA: Use proper button labels, fix inverted R-Stick Y axis.
– VITA: Add imc0: mount.
– VITA: Use sceCtrlIsMultiControllerSupported to detect.
– VULKAN: Fix two validation errors.
– VULKAN: Try to avoid creating swapchains redundantly. Should fix black screen and having to alt tab out of window again to get display working on Nvidia GPUs (Windows).
– VULKAN/OSX: Initial MoltenVK support. Not enabled yet, several MoltenVK bugs should be fixed first before we can have it fully working.
– WINDOWS/DINPUT: Add rumble support.
– WINDOWS/DINPUT: Fix Game Focus Toggle.
– WINDOWS/RAWINPUT: Fix Game Focus Toggle.
– X11: Fix Game Focus Toggle.
– WII: Change deflicker setting to work in 480p or higher, and always enables vfilter so that the user can easily change brightness.
– WIIU: Fix out-of-bounds rendering bug
– WIIU: Implement UDP broadcast network logging on Wii U.
– WIIU: Audio should no longer clip.

RetroArch 1.7.4 – Cheat code searching/creation interface with rumble features


Post written by RetroSven
RetroArch 1.7.4 has built-in cheat code searching/creating. Additional cheat system updates:

  • “Load Cheats” has been broken into two separate options. One will replace the list of cheats with what is being loaded whereas the other will append to the list of cheats with what is being loaded.
  • Cheat list is now automatically saved and loaded for each game
  • When using left/right to change the values of numbers, there is now a feature that gradually increases the step-size the longer you hold the button
  • Full cheat list management – Edit, Delete, Copy, Add, (to top of list, to bottom of list, above entry, below entry)
  • There are now two different cheat types – Emulator (handled by the emulator, the original type) and the new type – RetroArch – that is handled by RetroArch itself
  • Option to reload cheat file (if you manually edit file while RA is running)
  • Option to auto-apply cheats when loading game
  • Option to auto-apply cheats when toggling them on/off
  • Robust cheat searching interface (see instructions below) which works for just about every RA core
  • Rumble activation based on memory changing. For example, after finding the memory location for the number of lives in a game (via the cheat searching interface) you can set it up such that every time the value decreases (lose a life) the controller rumbles. Rumble tested with X360 controller, input driver dinput, joypad driver xinput. Available rumble controls:
    Rumble when memory value changes
    Rumble when memory value does not change
    Rumble when memory value decreases
    Rumble when memory value increases
    Rumble when memory value = value
    Rumble when memory value != value
    Rumble when memory value < value Rumble when memory value > value

General Guideline for Finding New Cheats:

  • Start game.
  • Go to Quick Menu -> Cheats -> Start or Continue Cheat Search.
  • Use left/right on “Start or Restart Cheat Search” to select a bit-size appropriate to the console you are using and the value your are searching.
  • For example, if you are playing Castlevania:SOTN on the PS1 and you want to search for the health value, then that’s a value that can be greater than 255 (0xFF), but it’s unlikely that the game developers anticipated a value larger than 65535 (0xFFFF) so set the search to 16-bit.
  • An alternate example – if you are playing Space Invaders on Atari 2600 and you want to search for the number of lives, then that’s a value that could possibly be stored in just 2-bits of data (max number of lives = 3) and since the Atari 2600 only has a very small memory space, it’s entirely possible that the memory location for the number of lives is only partially stored in a single byte while the rest of that same byte may store other important data that should not be touched. Set the size to 2-bit.
  • Select “Start or Restart Cheat Search” once you have selected the bit size
  • Go back to the game and lose a life
  • Go back to the quick menu and select “Search Memory For Values … Less Than Before” because when you started the search you had one more life than you do now. You could also try “Search Memory For Values … Equals To Before-1”. The number of matches should go down.
  • If the number of matches is still too great to peruse, then perform actions 5 and 6 repeatedly until the number of matches is something you feel comfortable trying (e.g. 10). If you run out of lives, just reset the game or restore a save state. Then your lives will likely be greater than the last time you checked, so select “Search Memory For Values … Greater Than Before”
  • Once you have a manageable list, select “Add the ## Matches to Your List”
  • Go back one menu to see the codes that have been added. Try turning just one on at a time to see if it has the desired effect. If not, turn it off and try the next one. One of them should be the location in memory that stores your number of lives and enabling the cheat in its default state will result in that memory location being overwritten by the cheat value continuously and voila infinite lives.
  • Alternately, you can “Search Memory For Values … Equal to ###” if you know the exact number (e.g. the number of hit points you have in an RPG).

Over 1000 new cheat and rumble codes added to the database across the following systems:

  • Atari 5200
  • Atari 7800
  • Atari 400/800/1200XL
  • ColecoVision
  • MSX/MSX2
  • NES
  • SNES
  • Sega Master System
  • Sega Genesis
  • TurboGrafx-16/PC-Engine

Incidentally, as a result of all this work, RetroSven also implemented savestate/serialization support for the mainline MAME core, and Reicast!

Many thanks to madmab, Bombbloke, Gilou9999, Bigby, Megaman_? for providing cheat and rumble codes for several different systems!

RetroArch 1.7.4 – Sync To Exact Content Frame Rate – Ideal for G-Sync/FreeSync users!


Blog post written by Tatsuya79

RetroArch 1.7.4 has a new feature that will be especially advantageous to users of variable sync display technologies, such as G-Sync/FreeSync. We call it “Sync to Exact Content Framerate”.

This option is the equivalent of forcing x1 speed while still allowing fast forward.
There will be no deviation from the core requested refresh rate alongside sound Dynamic Rate Control (the default RetroArch behaviour outside of this setting).
It should adapt to any refresh supported by your screen and provide smooth scrolling.

Steps to take for it to be effective:

  • Have G-Sync/FreeSync active in your video driver control panel and monitor menu
  • In RetroArch, set “Video” -> “Vertical Refresh Rate” to your monitor frequency
    (you can use “set display reported refresh rate” as it should give you your desktop refresh rate)
  • Activate “Frame Throttle”-> “Sync to Exact Content Framerate (G-Sync, FreeSync)”

Keep V-Sync active in Settings -> “Video”, it won’t work with it disabled.

Core-specific hints

  • MAME needs “Enable Throttle” in its core options to give the exact game timing.
  • Genesis Plus GX needs “System Region” set to “PAL” in its core options to switch to 50Hz. It doesn’t seem to be able to do it automatically.
  • This setting is not a silver bullet though, and it relies on the core to have proper frame timing. As a result, currently this setting can’t fix the frame pacing issues some cores suffer from (mGBA and Reicast have some at the moment).

    RetroArch 1.7.4 – Details on Discord integration


    Blog post written by Winneon

    RetroArch 1.7.4 now has extended Discord RPC integration! Previously before 1.7.4, RetroArch would act as any other game in Discord: as a simple “Playing” status that said you had RetroArch open. It wasn’t very descriptive or helpful other than displaying the name “RetroArch”. With the 1.7.4 update, RetroArch will display more information beyond a simple “Playing” status! Below is the full list of new features this new extended integration brings.

    • A new “In-Menu” and “In-Game” status that displays whether you’re in the standard RetroArch menu, or playing a game in a libretro core.
    • Playing & paused indicators displaying whether or not the currently running core is paused or not.
    • Sleek icons based on the Monochrome XMB theme that display what platform your game is running as. This is dependent on the core, not the individual game/content, so there will be case scenarios where it may be wrong (i.e. showing a GameCube icon when you’re playing Super Mario Galaxy in Dolphin).
    • A text indicator that displays what platform & core you’re playing under when hovering over the platform icon.
    • A text indicator that display what game/content you’re playing. If you chose your game/content from a playlist, it will use the playlist entry’s name instead of the content filename.
    • A counter/stopwatch that shows your current session’s playtime when you’re playing a game/content in a libretro core. The counter will pause when the game/content also pauses along with the new playing/paused indicators.

    How to use it?

    The extended Discord RPC integration requires updated core information files for most cores currently available. You can update your core info files by following the instructions below:

    1. Start RetroArch.
    2. Go to Online Updater.
    3. Select “Update Core Info Files”.

    Afterwards, to enable the Discord integration, following the remaining instructions.

    1. Start RetroArch.
    2. Go to Settings -> Privacy.
    3. Change “Enable Discord” from “OFF” to “ON”.

    Other than that, make sure you are running Discord on the same PC as your RetroArch client, and you have “Display currently running game as a status message” enabled in your Discord settings. Sadly, the Discord RPC API does not support remote connections.


    Beetle PSX HW PSA for Windows/AMD GPU users – update your drivers!

    Written by rz5

    From at least February to mid August there was a bug on beetle-psx’s GL renderer that only affected users with AMD GPUs.

    This bug was exposed when user ‘orbea’ corrected a mistake in glsm (an OpenGL state manager, made by libretro, used in beetle-psx), where it would it would hint that beetle-psx wanted a version 3.1 core profile OpenGL rendering context but, by specification, the ‘core profile’ is only from version 3.2 onward.

    It is still unknown why, but after orbea’s patch, AMD GPUs would render black frames on every situation except for FMVs.
    Intel and Nvidia GPUs were unaffected.
    Trying to find out what was wrong was very frustrating. CodeXL and RenderDoc were briefly used in the expectation that they would point out obvious API mistakes or perform API call order analysis and give a warning e.g. “are you sure you want to change this complex colored frame for a single-colored frame and present it?”

    It is unfortunate that sometimes bugs like this pop up and due to the blackbox nature of closed-source proprietary drivers, using a debugger like gdb becomes unfruitful for hobby developers when you arive at the point where your opensource the code starts calling into driver code.
    Then one begins to wonder: was it one of my commits in the past? Is our code going against the OpenGL spec in some way that triggers this behavior on the typically strict spec-following AMD drivers? Is it our fault at all?

    And while this bug was active, users affected by it surely grew frustrated at the lack of progress and some even got dissuaded from using beetle-psx altogether.

    Eventually, in mid August, update 18.8.1 came out for AMD’s Radeon Software graphics software and that seemingly fixed the bug. Which seems to indicate towards the problem being on the AMD driver side, not in beetle-psx.

    Guest project – IRATA.ONLINE – A Community For Retro-Computing Enthusiasts!

    We here at Libretro/RetroArch encourage the promotion of innovative grass-roots retro gaming efforts, and we thought it would be remiss of us not to bring to your attention this particular project, IRATA.ONLINE, ran by Thom Cherryhomes (System Operator). He has made many contributions and submissions to Libretro cores and RetroArch in general, and now he has embarked on an innovative new project that should prove interesting to people interested in the early days of home computing.

    If you’d like to read the full article, check out the PDF article here. Also check out the Youtube video linked above. If you’d like to meet with the author on Twitter, you can reach him here.

    What is IRATA.ONLINE?
    IRATA.ONLINE is an on-line service aimed at all of the various retro-computing communities. It takes the recently released implementation of PLATO that the CYBER1.ORG community provided to the public, and attempts to build a complete community infrastructure around it so that vintage computer users can have something truly unique, and compelling, to connect to.

    It all began with PLATO.
    IRATA.ONLINE’s roots, are in the legendary PLATO system. PLATO, which stood for Programmed Logic And Teaching Operations, provided a time sharing system originally chartered to investigate the potential for computers within the context of education, but the system and the community which grew up around it, proved to be so innovative, and resourceful, that it not only encompassed the cutting edge of education, but grew to create many firsts in social networking and on-line gaming, as well as providing a blue-print for collaborative software development through its built-in development environment.
    PLATO started, at the University of Illinois in Urbana-Champaign, in 1962, initially hosting two terminals on the ILLIAC-I computer system, before scaling upward to more terminals, better display technologies, and ever faster computers from Control Data Corporation. It reached its peak in the late 1970s, with many thousands of custom made plasma flat-screen, touch screen terminals connected to Control Data CYBER super-computer hardware, providing graphically intensive multi-user full screen interactive content, very rare for the time, when most time-sharing systems were still operated by teleprinters, and video terminals (and dedicated video displays) were extremely rare.

    Necessity and the Mother of Invention.

    I mentioned the flat plasma panel display, in passing, but it is a fantastic example of the cutting edge ingenuity possessed by the PLATO team. One must understand, that to create a graphical bit-mapped display requires memory, and in the mid 1960s, memory averaged a cost of $4 a bit, not gigabyte, megabyte, kilobyte, or even byte, bit. This meant that the traditional mechanism for providing the needed memory for a graphical display would have made the video terminal itself prohibitively expensive. The solution was to create an entirely new display technology, which would not need to constantly be refreshed; once a gas plasma display has a pixel enabled, it stays enabled without further assistance, effectively merging the display and its memory into one cost effective package, and making full screen interactive graphics possible on a per -dot basis, and without the drawbacks of a vector display. While most displays today now use liquid crystals, the modern plasma television and monitor displays descend directly from this technology.
    Through PLATO’s history, you can trace the beginnings of many of the things we take for granted today all in full use by the mid 1970s:

    1. Discussion forums (in the form of Notes, in fact Lotus Notes descends directly from PLATO NOTES) (first on-line in 1973)
    2. Multi-user dungeons (games like Wizardry, and Ultima owe their direct existence to Avatar, Moria, and other such dungeons on PLATO, which pioneered a first person display, multi-player interaction, character storage and development, and more.
    3. The first multi-user chat system, in the form of Talk-O-Matic, providing the ability for multiple people to talk, over multiple rooms, simultaneously.
    4. The first 3D dog-fighting flight simulator, Airfight, allowing multiple players to fly jet aircraft, shooting each other down, with realistic flight physics, thanks to the floating point capabilities of the 60-bit supercomputer it ran upon.
    5. The first space conquest game, Empire, grand-daddy to such games as Elite, and Conquest, provided a Star-Trek™ (trademark of Paramount) themed Space conquest game where you are pitted against other players to conquer planets and resources.
    6. The system sported screen-sharing, allowing users to send their screen, to other users, while talking back and forth, providing an early form of instruction and collaboration for instructors, authors, and students alike. This works from anywhere in the system, regardless where you are, in a menu, playing a game, developing some code in the system, it is ubiquitous.
    7. PLATO not only provided a programming language to write new programs, TUTOR, but it also provided a complete programming environment, even with dedicated visual full screen editors for code, for drawing new graphics, character sets, and even proportional fonts (in the form of line-sets). This was bolstered with excellent on-system documentation, replete with tutorials and examples so that anyone who wanted or needed to could write new software for PLATO.
    8. PLATO terminals were very extensible devices, which could connect to all sorts of external devices, such as the Gooch Synthetic Woodwind (GSW), which provided a multi-channel “sound card” for musical output.
    9. And so much more.

      Many of these innovations, as well as the detailed history of PLATO and its community are detailed in an excellent book: The Friendly Orange Glow: The Untold Story of the PLATO System and the Dawn of Cyberculture by Brian Dear, who spent over a decade authoring the book; the result of which is an unbelievably engaging and inspiring historical tome. This book is the very reason that I became an active contributor to the PLATO community, and why I ultimately started IRATA.ONLINE, to bring this system to retro-computing users who otherwise would never have known about it.

      All of which I have previously mentioned is present on IRATA.ONLINE, it is not a re-implementation of PLATO, but an actual PLATO system that is running inside an emulation of a Control Data CYBER-170/865 60-bit supercomputer, emulated by the excellent DTCyber emulator written by Tom Hunter. Various members of the CYBER1.ORG community acquired the requisite permissions to be able to allow others to use the content for non-commercial purposes, and to this end, I am providing this service, for no charge or am otherwise asking for any form of donation or making profit from the hard work that CYBER1.ORG pulled off to make this available for anyone who wanted to run their own PLATO system.

      Where do I sign up?
      You can sign up by going directly to the IRATA.ONLINE website. The website contains not only an overview of the IRATA.ONLINE service, it also provides everything needed to be able to access the service, and even includes a media library of demonstration videos showing various aspects of the service, as well as a detailed technical section which provides not only a complete description of the protocol used by terminal programs to access the service, but multiple source code examples of working terminals to be able to get a new terminal written for a new system, very quickly.

      Who would be interested?

      IRATA is potentially interesting for a number of different groups of people:
      – Vintage computer users. Virtually every 8 and 16-bit vintage computer has some way to connect itself to the Internet, but you can’t put a Commodore 64 onto Facebook, nor can an Apple II log onto Instagram. IRATA.ONLINE provides a place where every vintage computer user with a Wi-Fi MODEM, or ethernet adapter and terminal software to connect and play together.
      – Computer Archaeologists. PLATO systems have over three decades of software code, not only in user facing lesson content, but in system level tools, much of which lacks even a description of what is available and its functional descriptions, much less implementation details. These artifacts need to be discovered and documented. Lots of treasures are hidden within.
      – Coders and Artists. IRATA.ONLINE, being a PLATO system, provides a complete development environment, to create new programs (such as new games) that can be utilized by all users on IRATA.ONLINE. The various editors allow not only coders to get in on the action, but also artists.
      – Retro Game Players. – IRATA.ONLINE brings iconic and historic games to a wider game playing audience to play.

      Part of a Bigger Community.

      IRATA.ONLINE stands alongside CYBER1.ORG as a long-term PLATO installation. I consider CYBER1.ORG and IRATA.ONLINE to be two different towns on the same map, with different, mostly non-overlapping communities. While CYBER1.ORG is mostly comprised of PLATO system expatriates, and they cater to an authentic PLATO author experience for all of its users, IRATA.ONLINE intends to bring PLATO to a new group of retro-computing users, who, while they may have heard of PLATO in a historical context, may never have actually seen or used it. Having both IRATA.ONLINE and CYBER1.ORG enriches the overall PLATO community, strengthening it, and since both systems have their own software bases, each with different lessons, there are compelling reasons to visit both systems. And since CYBER1.ORG released the CYBIS distribution and its required emulation to the public, it is possible that other systems can also appear, each with their own unique characteristics.

      Facilitating a Community
      Providing the software and doing the requisite engineering work to build the system is only one part of the whole equation. It is my own intention to also function as a community facilitator for everyone else on IRATA.ONLINE. Do you have an idea of something you want to make, with the system? I will help make it happen, and provide what you need to be able to take ownership of your idea, within the community.

      There is also a conscious effort to provide workshops, and community gatherings to use the system, and to show how to make new things with the system. For the former, I intend to offer various workshops on how to create games and other types of programs, with the system, utilizing Google Hangouts. For the latter, regular community gatherings will bring people together to play games of Avatar, Airfight, etc… where we all learn together. Both of these types of things are coordinated via the IRATA.ONLINE Facebook page, as well as providing postings on the primary website.
      What will come of this? Let’s find out.

    Libretro Status Updates

    So, what have we been up to?

    Dolphin and Ishiiruka cores

    The Dolphin libretro bounty has led to this rebasing of the Dolphin libretro core. It is now up-to-date with the latest sourcecode, and it now supports OpenGL, Direct3D11 and Vulkan! It is even available for RetroArch on Android right now, provided you use the AArch64 version (since Dolphin itself requires a 64bit CPU on Android anyway).

    In addition to this, I have also taken a look at porting Ishiiruka (a Dolphin fork) to Libretro. This one is not as far along yet as the mainline Dolphin core, but we are already making steady progress with the OpenGL renderer!

    RetroArch 1.7.4 – WIMP updates

    There will continue to be improvements to the WIMP UI in RetroArch 1.7.4. One of the big new features will be a fancy grid view. Previously, the WIMP UI only had a list view.

    Beetle PSX HW

    Some important bugs have been fixed. Finally, mask bit emulation has been (hackishly) implemented by flyinghead for the OpenGL renderer, so Silent Hill’s fog finally displays properly. iCatButler has made PGXP much more robust over the past few weeks, which has led to many rendering bugs being fixed when PGXP is enabled.

    Reicast

    You can read about all of our improvements to the Reicast core in this separate blog post here.

    Beam racing bounty – up to $1132!

    The beam racing bounty has fetched $1132 so far!

    RetroArch is already at the tip of the spear when it comes to latency mitigation strategies with features like runahead, configurable max swapchains, frame delay, custom video context drivers, etc. Beam racing is a new lagless VSYNC technique has been developed that is already implemented in some emulators like WinUAE. The aim of this bounty is to finally implement it in RetroArch as well, and the users/devs that want it have put their money where their mouth is for this particular feature!

    Reicast Libretro – Updates 26-7-2018

    Reicast Libretro and Reicast OIT Libretro have recently been updated.

    Here is a listing of all the changes/fixes/improvements:

    • (Dreamcast/Compatibility) Eldorado Gate – Broken opening FMV fixed (link)
    • (Dreamcast/Compatibility) Demolition Racer now works (link)
    • (Dreamcast/Compatibility) Redline Racer – Graphics bugs fixed (link)
    • (Dreamcast/Compatibility) Fixed rendering issues with Tokyo Xtreme Racer games (link)
    • (Dreamcast/Compatibility) Conflict Zone – Modern War Strategy now works
    • (NAOMI/Compatibility) Metal Slug 6 now works without graphics bugs

    Reicast OIT – Increased compatibility with AMD/Intel GPU drivers

    AMD GPU owners on Windows/Linux and Intel HD users on Linux/Mesa should probably be able to use the Reicast OIT core now, as several GLSL compliance bugs have been fixed by now.

    Note that Reicast OIT can still be very buggy for Intel HD users on Windows, and slow to boot. The renderer really lends itself better to discrete GPUs from AMD/NVidia.

    Render to texture upscaling!

    Previously, games which rendered to texture (such as Dead or Alive 2 or Crazy Taxi) would always output at 1 x native resolution. Now, you can set the upscaling factor. Games which render the screen to a texture should look much better as a result, provided your GPU is up to the task.

    An example – here is a comparison of the Crazy Taxi pause screen – left is 1x native resolution, right is 4x upscaled –

    xBRZ Texture upscaling

    This new setting allows you to upscale all the textures in a game up to 6 x their original resolution using the xBRZ texture filtering algorithm! See it in action with Shenmue in this video below –

    Reicast Libretro – Updates!

    Reicast Libretro and Reicast OIT Libretro have recently been updated.

    Here is a listing of all the changes/fixes/improvements:

    • (Reicast Libretro) – now requires OpenGL 3.0 core profile (and GLSL 1.30).
    • (Reicast Libretro OIT/OpenGL) – Increased compatibility with other GL 4.3 driver implementations.
    • (Reicast Libretro OIT) – Several performance improvements.
    • (Reicast Libretro OIT) – Fixed graphics issues in Resident Evil 3: Nemesis (link).
    • (Reicast Libretro OIT) – Fixed graphics issues in Dino Crisis (link).
    • (Dreamcast/PVR2) Bump mapping implemented (used in Rayman 2/Shenmue 2) (link).
    • (Dreamcast/PVR2) Trilinear filtering implemented (needed by NFL 2K2 in particular to display some ground textures correctly).
    • (Dreamcast) Bomberman Online – Fixed glitching title screen (link).
    • (Dreamcast/Compatibility) Shenmue 1 crashes fixed (thanks to x64 Dynarec CheckBlocks implementation)
    • (Dreamcast/Compatibility) Shenmue 2 crashes fixed (thanks to x64 Dynarec CheckBlocks implementation)
    • (Dreamcast/Compatibility) Alone In The Dark: New Nightmare – improvements to YUV / palette textures – no more downgraded colors in backgrounds (link).
    • (Dreamcast/Compatibility) Dead or Alive 2 LE (Japan) crashes fixed.
    • (Dreamcast/Compatibility) Draconus – Cult Of The Wyrm/Dragon’s Blood – fogging graphics glitch fixed (link).
    • (Dreamcast/Compatibility) Evolution: The World of Sacred Device (UK) now renders flat shaded polygons correctly (link).
    • (Dreamcast/Compatibility) Shadow Man works now. Set Cable Type to VGA or otherwise it will crash after the Dreamcast boot screen.
    • (Dreamcast/Compatibility) NBA 2K/2K1/2K2 now work.
    • (Dreamcast/Compatibility) Napple Tale crash no longer happens after leaving the circus.
    • (Dreamcast/Compatibility) Ooga Booga now goes ingame, some issues still remain though.
    • (Dreamcast/Compatibility) Soldier Of Fortune AI bugs fixed (link).
    • (Dreamcast/Compatibility) Test Drive Le Mans/Le Mans 24 Hours now works, still some audio glitches though.
    • (Dreamcast/Compatibility) Looney Tunes Space Race now works.
    • (Dreamcast/Compatibility) Wacky Races now works, still has some graphics glitches though.
    • (Dreamcast/Compatibility) San Francisco Rush 2049 – screen display issues fixed – Screen cropped at the top (link).
    • (Dreamcast/Compatibility) Fur Fighters now goes ingame, some issues still remain though.
    • (Dreamcast/Compatibility) Twinkle Star Sprites no longer unplayably slow due to excessive logging.
    • (Naomi) Analog input implemented for games like Monkey Ball/Virtua Tennis 2.
    • (Naomi) EEPROM saving/loading implemented.
    • (Naomi/Compatibility) Hokuto No Ken / Fist Of The North Star now works.
    • (Naomi/Compatibility) King of Fighters New Wave – no longer crashes during fights, there are still display glitches though.

    Also be sure to check our Youtube channel, where you can view a lot of videos on recent Reicast Libretro developments and more!

    RetroArch – Metal video driver for modern macOS!

    RetroArch has now gained a Metal renderer! Targeting modern macOS at first. XMB/MaterialUI works, menu shader pipelines work, Slang shaders work thanks to SPIRV-Cross, fonts work, etc!

    Previously, RetroArch for OSX/macOS only had an OpenGL video driver. Since Apple will be deprecating OpenGL support in the near future, this Metal video driver essentially future proofs RetroArch for mac!

    Reicast libretro updates – Shenmue 1/2 now runs! Plus Reicast Hackathon event July 6-8 (Switzerland)

    UPDATE (1/7/2017): Dynarec crashes/bugs should now be fixed on OSX/macOS and Linux as well!

    It has only been a day since we released our blog post detailing all of the improvements the Reicast core has received, but in less than a day a lot has happened that requires an updated blog post –

    64-bit dynarec – Self-modifying code

    Shenmue 1/2, Marvel vs. Capcom 2, and Heavy Metal Geomatrix are all problematic games that are known to be hard to emulate due to them being prone to relying on self modifying code. The 64-bit dynarec did not have any kind of block checking yet to compensate for this.

    skmp has finally added this functionality to the 64-bit dynarec, and as a result, Shenmue 1/2 should now be fully playable, as well as games like Heavy Metal Geomatrix and Marvel Vs. Capcom 2.

    Shenmue 1

    Shenmue 2

    Marvel Vs. Capcom 2

    Other improvements

  • Naomi/Atomiswave bootup screens no longer flicker.
  • Bomberman Online title screen FMV sequence renders correctly now. (thanks to flyinghead)
  • (Non-OIT) Fix some RTT (Render To Texture) regressions. (thanks to flyinghead)
  • Reicast summer Hackathon – July 6/7 2018 (06~08.07.2018)

    skmp, the lead developer of Reicast/nullDC, will be holding a summer Hackathon event for Reicast this summer! It will be held in Switzerland (Google maps info here).

    If you are interested in joining, please fill in the form and put “reicast” as the project, and “reicast users” as to who will be benefiting. You can of course apply with your own projects, or work on multiple things during the weekend.

    There’s free food at the hackathon and very pretty mountains.

    Some details below

    Hack4Glarus is back! This time it is the Hack4Glarus Summer Edition. Because you shouldn’t miss how pretty Glarnerland is in the summer.

    For whom is it?
    Anyone who is into hacking a weekend long. You do not necessariliy need deep technical knowledge, but you should be interested in technology.

    Where does Hack4Glarus take place?
    The same place as the last time. It will happen at Spinnerei Linthal, a very cool old factory hall at Linthal. It’s also where our Data Center Light is residing.

    What are the topics?
    Glarus, mountains
    IoT (we provide a LoRaWAN stack)
    Open Source
    Linux / Unix / BSD (especially: Devuan)
    IPv6 / Networking
    Virtualisation / Containers / Kubernetes
    Emulation

    What will be provided at Hack4Glarus?
    – food and drinks
    – place to sleep
    – very cool environment

    What do I need to bring to Hack4Glarus?
    – great ideas
    – a sleeping bag
    – your awesome self

    How can I apply?
    Visit the following link and fill out the simple form, and we’ll contact you. We have only limited seats available as always, so if you’re interested, we recommend you apply as soon as possible. 🙂

    You can checkout our first Hack4Glarus from last December here! https://www.youtube.com/watch?v=OXTaR-P5iA0

    Reicast libretro now supports NAOMI + other additions!

    Reicast libretro now supports Sega Naomi arcade games! Both Reicast and Reicast OIT have been updated.

    Limited to Sega Naomi 1 for now. Atomiswave to GD-ROM conversion games can also work, some of them might have some issues though.

    Sega Naomi

    Naomi was an arcade videogame system based on the Sega Dreamcast hardware. While being nearly identical in terms of architecture, it did have double the RAM and fillrate of the home console version.

    Naomi became one of the longest lasting arcade systems to be used second only to the Neo Geo AES. Various licensees (such as Capcom, Arc Sys, and even Nintendo) licensed the hardware during its lifespan to produce arcade games with.

    How to use it

    You will need a NAOMI BIOS file inside your system directory. The BIOS with the best compatibility so far is epr-21576g.ic27. This is a file that is contained inside the MAME NAOMI bios zip. Rename this file to naomi_boot.bin and move it to your ‘system directory/dc directory.

    What content to use

    You will need roms that worked on nullDC Naomi. These will typically be .dat/.lst or .bin/.lst pairs.

    The last value of the .lst file specifies the size of the .dat/.bin file in hexademical value.

    Here is an example of the .lst file used for Toy Fighter –

    Toy Fighter
    “Toy Fighter.dat”, 0x0000000, 0x05800000

    You can find the existing .lst files here.

    NOTE: MAME ROMS won’t work (yet). Proper Atomiswave roms won’t work, however, most Atomiswave to Naomi GD-ROM conversions should at least work or boot.

    Currently existing issues

    There are some issues that remain with Naomi support:

    • By default, two arcade sticks are hooked up.
    • There are some video and syncing glitches right now. One of the most immediately apparent is the flickering Naomi boot screen.
    • There is no analog and/or shoulder button support yet for Naomi games.

    Videos

    Toy Fighter

    Dolphin Blue

    King of Fighters XI

    Dead or Alive 2 Millennium

    Street Fighter Zero 3 Upper

    Other enhancements

    Fast GD-ROM Loading

    A new core option called ‘GD-ROM Fast Loading Mode’ has been added. It can severely cut down on loading times, sometimes even removing them almost entirely as can be seen in the game ‘Daytona USA 2001’ here.

    Various sound fadeout bugfixes

    Through some judiciously applied hacks, the following games no longer suffer from sound fadeout issues:

    • Border Down
    • Bomberman Online
    • Chaos Field
    • Death Crimson OX
    • Fatal Fury/Garou: Mark Of The Wolves
    • Jet Set Radio/Jet Grind Radio
    • Napple Tale
    • Phantasy Star Online
    • Phantasy Star Online Ver. 1
    • Radirgy
    • Segagaga
    • Sonic Shuffle
    • Trigger Heat Exelica
    • WWF Royal Rumble

    Graphics fixes

    Thanks to the awesome efforts of flyinghead, several graphics glitches have been fixed –

    Workaround for Virtua Tennis ball color problem.

    Fix – Psyvariar 2, Explosions don’t render correctly

    Other changes

    Reicast OIT

  • Added an accumulation Pixel Buffer Size core option. You can set this to 512MB, 1GB or 2GB, depending on how much VRAM your video card has. For higher resolutions to output correctly, you might need to increase this to the highest value possible.
  • House Of The Dead 2 failed a verify assert – should boot and be playable now.
  • Rebase ADPCM decoding.
  • Reicast (non-OIT)

  • Multipass rendering is now enabled by default. Plenty of games need this for accurate rendering and the performance tradeoff should be minimal.
  • House Of The Dead 2 failed a verify assert – should boot and be playable now.
  • Rebase ADPCM decoding.
  • What’s next?

    We intend to have the next version of RetroArch available soon. On top of that, despite numerous delays, Supermodel will finally be coming soon! We felt it was right to get Sega Naomi up and running first before we unveil that!

    Introducing Reicast OIT libretro core + updated Reicast regular core

    The Reicast libretro core has seen several big improvements as of late, and we thought it would be remiss of us if we did not take this opportunity to talk about it.

    There are two cores now

    There are now two Reicast cores:

    • Reicast regular
    • Reicast OIT

    Reicast regular: Contains an OpenGL renderer that requires OpenGL 2.x on the desktop and GLES 2.x on mobile.

    Reicast OIT: Contains an OpenGL renderer that requires OpenGL 4.3, and as a result is only available for Windows and Linux. Reicast OIT might have significantly increased system requirements, but in return you get much more accurate graphics which tend to fix nearly all the issues that plague Dreamcast graphics with the regular version.

    How to get it

    In RetroArch, go to Online Updater -> Update Cores. From there, Reicast and Reicast OIT should be available for the following platforms:

    • Linux
    • Windows
    • Mac (Reicast OIT is not available for Mac due to no GL 4.3 support)

    What is new/improved in both Reicast versions?

    Reicast regular

    Reicast regular’s OpenGL renderer has received many improvements that greatly increases the graphics accuracy and squashes many graphics bugs that plagued games in the past.

    Here are some of the Dreamcast’s GPU features that are now implemented:

    • Tile clipping support.
    • Fogging support.
    • Volume modifier shadow support.
    • Multipass rendering.
    • Render to texture buffer.
    • Log 2 depth buffer.

    Some additional enhancements include a log 2 depth buffer, fixing much of the polygon glitching that could happen in the distant background in many games.

    All of these additions to the existing GL2 renderer in Reicast regular come courtesy of flyinghead.

    Reicast OIT

    Reicast OIT uses an entirely new graphics renderer written by flyinghead targeting OpenGL 4.3. In addition to boasting all the features that Reicast regular also enjoys as of this date, it also has the additional advantage of incorporating Order Independent Transparency, so that we don’t have to do hacky and error prone alpha sorting hacks, which is our main resort in Reicast regular.

    • Tile clipping support.
    • Fogging support.
    • Volume modifier shadow support.
    • Multipass rendering.
    • Render to texture buffer.
    • Log 2 depth buffer.
    • Order independent transparency.
    • Two-volume mode support.

    NOTE: This requires a compatibility context for OpenGL 4.3. You might encounter issues with Intel/AMD GPUs right now on Linux using Mesa drivers since they require core context. Core context cannot currently be used becasue there are still graphic bugs to be solved when using this.

    Showcase of new emulated features

    Flyinghead has a terrific fork of Reicast that dramatically increased the rendering accuracy of Reicast’s OpenGL renderer. We backported these features with the gracious help of flyinghead. All kudos goes to him.

    Tile clipping support


    The Dreamcast’s PVR2 had a tile clipping GPU feature that was used to obscure portions of the screen. It was cheaper to keep rendering portions of the screen that were not meant to be seen by the user and just clip them away instead of deciding not to render them at all. This was previously unimplemented, which led to all sorts of graphics glitches. This has now been finally implemented in both cores.

    Fogging support


    The Dreamcast had a 128-bit fogging table that games could take advantage of. Plenty did, such as Cannon Spike, Blue Stinger, Resident Evil: Code Veronica, Virtua Fighter 3tb, and more games. This is now finally implemented for both cores.

    Volume modifier shadow support


    The Dreamcast made use of volume modifiers in order to simulate shadows in many games. This was previously either completely unimplemented or very buggily rendered. Volume modifiers are now correctly implemented in both cores (Reicast and Reicast OIT). Performance costs should be minimal and you definitely notice the shadows being cast now by characters and other objects.

    Multipass rendering


    The game V-Rally 2 relies on multipass rendering for rendering the UI elements on top of the game screen. This has finally been emulated on both cores (Reicast and Reicast OIT).

    Render to texture buffer


    Not only has render to texture being reimplemented (leading to much faster performance), but certain games such as Tony Hawk’s Pro Skater 1/2 would render to VRAM for rendering shadows. The upshot of this is that the shadow looks much more convincing vs. merely using volume modifiers in order to simulate shadows. This feature has been finally implemented in both cores.

    Log 2 depth buffer


    Thanks to the logarithmic depth buffer, many rendering bugs have been fixed. Some games have been completely fixed as a result, such as Cannon Spike, while others such as Soul Calibur no longer have the scenery in the background glitch out.

    Note that this relies on gl_FragDepth being available. This might become an issue when we bring the Reicast libretro core to mobile, since it’s not a part of the GLES2 spec and might require either extensions or GLES3 support.

    Order Independent Transparency

    NOTE: This feature is exclusive to Reicast OIT, and is not available in the regular Reicast core.


    Other improvements

    Date/time saving is finally fixed


    Finally you don’t have to keep inputting date/time again whenever starting a game with the Reicast cores.

    Be sure to set a correct date/time, as entering a wrong date might lead to it not being able to save.

    Analog triggers

    The core finally supports analog triggers. The Dreamcast had analog L/R triggers, previously we only had digital trigger simulation, where the L1/R1 would simulate 50% press of the trigger and L2/R2 would be a 100% press of the trigger. While this mode is still available if you enable the option ‘Digital Triggers’, you can also now just take advantage of the new digital trigger capabilities.

    In addition to this ,deadzone issues should be fixed now, so there should hopefully be no more analog input disparities between Xbox pads and PS4 pads.

    Videos

    RetroArch + Bliss-Box Partnership


    RetroArch is partnering with Bliss-Box to bring their unique, modular solution for using original gamepad hardware to RetroArch/libretro’s numerous retro-gaming cores. The partnership creates a single solution for retro-gaming with original controllers without the need for configuration workarounds or external launchers.

    This functionality has been quietly added to RetroArch for a few versions, but we think most of the kinks have been worked out, so in honor of that, we’re offering a special discount on Bliss-Box bundles for RetroArch users. By clicking on the referral link on this page, you’ll get two cables for free and a small portion of the proceeds will go toward continuing development of RetroArch and libretro:

    RetroArch 1.7.3 – Released!

    RetroArch 1.7.3 has just been released! Grab it here.

    This latest version has also been uploaded to the Google Play Store.

    If you’d like to show your support, consider donating to us. Check here in order to learn more.

    Highlights

    New WIMP GUI for PCs!

    RetroArch now has a WIMP GUI, powered by the powerful multimedia framework Qt! This feature is available currently for Windows and Linux. macOS users will have to wait a while longer for this feature to arrive to their platform.

    The WIMP GUI works as a companion to the main RetroArch window. You bring it into view by pressing the F5 key on your keyboard. From there, you can do many tasks:

    – Select a game from any playlist
    – Browse the file system or any attached media storage device and load a game.
    – Scan directories for content and generate system playlists.
    – Associate cores to an entire playlist or associate only one entry of a playlist to a specific core

    How to easily scan content

    Totally customizable appearance

    Switching between color themes

    Multiple language support (English/Japanese)

    Some things we’d like to note:
    * This has been the combined work of bparker and Tatsuya79 that have worked tirelessly on this for a month. We are aware of several features that we’d like to implement, such as playlist editing, grid view layouts, etc.
    * We are open to feedback on the GUI.
    * You will likely not see this WIMP GUI on Android or iOS (or any game console for that fact) anytime soon. WIMP interfaces don’t lend themselves well to devices that rely on touchscreen or gamepad-based controls.
    * (For Linux users) The Qt GUI should definitely work on X11. If you’d like to run it on Wayland, make sure you have the appropriate packages installed for Qt5 in your package manager. Be aware that Qt 5 cannot gracefully fail right now in case a platform module/plugin is missing from your system. This means that if you invoke the companion UI by pressing F5 on Wayland, and for whatever reason the platform module that Qt relies on in order to work on Wayland is not there, there is no way for RetroArch to gracefully fail there and just not show the companion UI. There will be a crash instead. Unfortunately we have talked to some Qt developers and they see no other way around this for now. The same situation applies for DRM/KMS right now. If we can find a better solution to this, we will certainly return to it.
    * (For mac Users) You will have to wait a bit longer for this to arrive to the Mac port unfortunately. Hopefully that wait is not too long.
    * We would like to still improve initial bootup times for the companion UI. Right now, on first initial startup, it can take anywhere from 5 to 10 seconds (depending on your harddrive and its performance), but on subsequent boots should only take 2 seconds or less for first startup. Hopefully by resorting to Link Time Code Generation and other avenues we can shave off some more seconds off this boot time.

    Starting up the UI on startup


    If you would like to start up the companion UI at first startup instead of having to manually press F5 first, you can do so. Make sure that Advanced Settings are enabled first (Settings -> User Interface -> Show Advanced Settings). After that, make sure the option ‘Show desktop menu on startup’ is enabled.

    Real-time audio mixer controls – menu music, mixing of audio channels, separate volume controls, etc

    In RetroArch 1.7.3 we have given RetroArch’s built-in audio mixer a huge overhaul.

    Improved file format support – Now supports MP3 and FLAC thanks to mudlord. The audio mixer now supports MP3, FLAC, Ogg Vorbis, and WAV files in total.

    Live manipulation/control of the audio mixer in the menu – you can now access the audio mixer inside the menu. You can set audio tracks to each of the 16 available streams, and you can issue commands to them such as Play (normal/Looping/Sequential), Stop or Remove.

    Individual volume setting per audio stream – You can now also individually set the volume for each separate audio stream inside the mixer. If you wish to override all audio stream’s volume with one global override, you can go to Audio Settings and set Audio Mixer Volume Level. Reset this back to 0 dB if you want individual volume per stream to work again.

    Increased the amount of max streams – Previously, the audio mixer was limited to 8 streams in total. This figure has been doubled to 16.

    New album mode-like features – If you have a couple of tracks queued up in the audio mixer and if you’d like to play them back like a regular audio music player (played sequentially, one song after the other) – select ‘Play (Sequential)’. When the song is finished playing, it will look at the other streams directly down below it. If one of these streams is in ‘stopped’ state and if there is audio loaded there, it will start playing it. It will also in turn set this audio stream’s play state to ‘Sequential’ and it will keep going down the list until the end of the audio stream mixer’s ‘list’ has been reached.

    Music can play inside the menu now – Previously, you could only listen to audio streams with the audio mixer once you were inside a game and a core had been loaded. Once you went back to the menu, the sound mixing would stop there. You can now set ‘Enable menu audio’ to ON in order to be able to have music inside the menu as well! You can seamlessly jump back and forth between menu and game and have the music continue running.

    Other additional niceties –
    * The music is mixed in with the rest of the core’s sound data, so the music also is affected by fastforwarding and is thus sped up when you fastforward it, just like regular game audio would.

    NOTE: Not all platforms have received MP3 and FLAC support yet. So far, we have enabled it already for Windows, macOS, Linux, Android and iOS. More platforms might follow.

    Runahead – improved performance with Genesis Plus GX

    Dwedit sent some patches to improve Genesis Plus GX’s performance with runahead. We put this briefly to the test on the Xbox OG. Previously with 1.7.2, Sonic 2 on version 1.7.2 did not reach fullspeed with runahead set to 1 frame. With version 1.7.3, we can finally play at fullspeed with runahead set to 1 frame. Setting it any higher than 1 proves too taxing for the old system.

    Game Core Description FPS – 1.7.2 FPS – 1.7.3 Format
    Sonic 2 Genesis Plus GX No runahead Fullspeed Fullspeed Xbox OG
    Sonic 2 Genesis Plus GX Runahead – 1 frame Not fullspeed Fullspeed Xbox OG

    CRT Switch Res on Linux – GroovyMAME-like features for 15KHz capable CRT monitors!

    Starting as of version 1.7.2, RetroArch now has the ability to query cores for their exact video timing data, which can be used to switch to native-resolution, 15 kHz modelines for use with standard-definition CRT TVs.

    This is a big step for retro purists, as RetroArch can now output “pixel-perfect” video with accurate timing to compatible displays, even quickly switching between interlaced and non-interlaced modes on the fly.

    This capability was previously Windows-only and requires modelines to be created in advance by CRT_EmuDriver or Custom Resolution Utility with a compatible GPU.

    Starting as of version 1.7.3, Linux support has been implemented too!

    In case you’d like to learn more, follow these links:

    Input remapping system fixes for overlays

    Radius fixed several bugs which would prevent the new input remapping system from working with onscreen overlays.

    General changelog

    AUDIO: Audio mixer supports FLAC/MP3 file types now!
    COMMON: Fixed bug ‘crashing in cores that don’t range check retro_set_controller_type’. Some people were having crashes when device is set to RETRO_DEVICE_NONE and the cores don’t check the number of ports, in VBAM’s case it was overflowing and crashing. QuickNES was crashing too.
    COMMON: Fixed buffer overflow in url encoding (affecting MSVC2010/2013).
    COMMON: (QuickMenu) Added Configuration Override submenu.
    HID: Merge new HID subsystem.
    HID: Fix WaveBird support for the Wii U GCA.
    HID/OSX: Fix regression with IODHIDManager – gamepads which are connected later would not be autoconfigured.
    LOCALIZATION: Update Italian translation.
    LOCALIZATION: Update Japanese translation.
    LOCALIZATION: Update Portuguese translation.
    MENU: New WIMP Qt GUI!
    MENU: Audio mixer now works in the menu without any cores loaded. You have to enable the setting ‘Enable menu audio’ for this to work.
    REMAPPING/OVERLAYS: Fix regression – overlays could no longer be remapped.
    SCANNER: Add Wii Backup File WBFS support.
    X11: CRT SwitchRes support for X11/Linux.

    What is coming next?

    We can already give you a sneak peek of some of the new features the new WIMP GUI will be having in the upcoming version. Right now, playlist entries are only displayed as a list. The new version will also allow you to display playlists in a grid view (both small and big). See the images below for an indication of how that will look like.

    RetroArch 1.7.2 – Released!

    RetroArch 1.7.2 has just been released! Grab it here.

    This latest version has also been uploaded to the Google Play Store.

    If you’d like to show your support, consider donating to us. Check here in order to learn more.

    Highlights

    Runahead latency reduction – better latency than the real hardware

    A visual representation by Durante of how the runahead system works in practice.
    A visual representation by Durante of how the runahead system works in practice.

    This might just be our biggest release yet, thanks in no small part to the new runahead latency reduction system. This feature has already been all the rage over the Internet. Well known people like Durante of DSfix fame praised it and the popular site Ars Technica has dedicated an entire article to this game-changing feature.

    We ran an article on this new feature before, and since then, several facts have changed on the ground which bears pointing out. First of all, several performance improvements have been made since. Secondly, the feature has now been enabled for the vast majority of the RetroArch platform ports.

    The versions that have this feature enabled and exposed now includes:

    • PlayStation3
    • Xbox OG
    • Wii
    • WiiU
    • Nintendo Switch
    • Android
    • PC (Windows)
    • PC (Linux)
    • macOS
    • iOS

    Here are some basic things you should know:

    • Every game has a certain built-in amount of lag frames. In order for the runahead system to perform as expected, you should set it to the same amount of frames to read ahead that the game you’re running is working by. So, for example, if a game like Super Mario World for the SNES has a guaranteed 2 frame input lag, for the best results, set Runahead frames to 2.
      You can count the amount of lag frames a game has by using the frame advance feature in RetroArch.
    • For playable performance, your system should be at least capable of running the core at twice its regular speed. These performance demands go up commensurate to the amount of frames you want to run ahead. The higher performance you get with a core, the more frames you can run ahead at fullspeed.
    • While the runahead system is core agnostic and therefore technically we don’t need to patch up cores in order to work with the runahead system, there are several things that can be done in order to improve performance considerably. To this end, Dwedit has submitted several patches to some of the cores in order to make them perform much better. Some of these cores include (but are not limited to) the Snes9x cores, QuickNES, FCEUmm, Nestopia, Gambatte, and even Mednafen/Beetle PSX.
    • There are currently some things you should know about Mednafen/Beetle PSX when it comes to runahead. First of all, in order for this core to work correctly with runahead, you should use the software renderer. The OpenGL and Vulkan renderers are currently buggy with runahead. Second, even after several savestate performance improvements, it is unlikely you will be able to set runahead to higher than 1 frame while still being able to run at fullspeed. This might likely change once our bounty for the Beetle PSX dynarec is finally fulfilled (and on that note, it has already reached $720, and a coder is working on a potential solution)
    • An often heard question that has been asked is – will this work on a Raspberry Pi? There is no straight answer to this since it heavily depends on the core’s performance. Based on our performance tests on the PS3 and Xbox OG, QuickNES and Gambatte should be at least two cores that should run at fullspeed with runahead set to 6 frames or less. Your mileage may vary on any of the other cores. The quick rule of thumb is that the faster the core, the higher chance there is to get it to run at fullspeed with more runahead frames.

    How to check the amount of lag frames a game has

    RetroArch has the ability to pause a core and advance it frame by frame. Perform the following steps to determine the amount of lag frames of a game:

    • Pause emulation (press ‘p’ button on keyboard).
    • Press and hold the jump button on the controller.
    • Advance emulation frame by frame (press ‘k’ button on keyboard) until the character jumps.

    The number of k presses before you get a reaction should be the number of lag frames you can safely remove with run ahead.

    Performance, scalability

    So, how well does all this scale? Of course, the more expensive hardware you throw at a latency reduction approach like this the better, but how low can we actually go in terms of specs and still obtain good results? To figure out a basic answer to this question, I decided to test the runahead system on two old game consoles that are not exactly powerhouses at this point. The first of the lot is the Xbox OG, powered by a fairly mundane Pentium 3/Celeron 733MHz CPU. The second is the PlayStation3. Its PPU is roughly equivalent to a Pentium 4 2.4GHz CPU in terms of real-world performance, and even that comparison is probably pushing it. So this is not exactly powerful hardware.

    Street Fighter Alpha 3 FBAlpha 2012 No runahead 104fps PS3
    Street Fighter Alpha 3 FBAlpha 2012 Runahead – 1 frame 57fps PS3
    Mega Man 2 QuickNES No runahead 124fps PS3
    Mega Man 2 QuickNES runahead – 1 to 6 frames 124fps PS3
    Mega Man 2 Nestopia No runahead 124fps PS3
    Mega Man 2 Nestopia Runahead – 1 frame 76fps PS3
    Mega Man 2 Nestopia Runahead – 2 frames 54fps PS3
    Super Mario World Snes9x 2010 No runahead 113fps PS3
    Super Mario World Snes9x 2010 Runahead – 1 frame 78fps PS3
    Super Mario World Snes9x 2010 Runahead – 2 frames 65fps PS3
    Super Mario World Snes9x 2010 Runahead – 3 frames 56fps PS3
    Sonic 1 Genesis Plus GX No runahead 116fps PS3
    Sonic 1 Genesis Plus GX Runahead – 1 frame 51fps PS3
    Bomberman 94 Mednafen PCE Fast No runahead 124fps PS3
    Bomberman 94 Mednafen PCE Fast Runahead – 1 frame 83fps PS3
    Bomberman 94 Mednafen PCE Fast Runahead – 2 frames 66fps PS3
    Sonic 1 SMS Gearsystem No runahead 120fps PS3
    Sonic 1 SMS Gearsystem Runahead – 1 frame 63fps PS3
    Sonic 1 SMS Genesis Plus GX Runahead – 1 to 6 frames 124fps PS3
    Mega Man 2 QuickNES Runahead – 1 to 6 frames Fullspeed Xbox OG
    Mega Man 2 FCEUMM Runahead – 1 frame Fullspeed Xbox OG
    Mega Man 2 FCEUMM Runahead – 2 frames Not fullspeed Xbox OG
    Sonic 2 Genesis Plus GX No runahead Fullspeed Xbox OG
    Sonic 2 Genesis Plus GX Runahead – 1 frame Not fullspeed Xbox OG

    We consider any PC from the year 2005/2006 (whether desktop or laptop) to be significantly more powerful than either of those consoles, so these test results bode quite well for the scalability and feasibility of the runahead method.

    Features like the runahead system will also naturally increase the demand for ever faster cores so that people on lower specced hardware can use runahead with more frames in advance.

    CRT Switch Res – GroovyMAME-like features for 15KHz capable CRT monitors!

    Thanks to forum-user Alphanu, RetroArch now has the ability to query cores for their exact video timing data, which can be used to switch to native-resolution, 15 kHz modelines for use with standard-definition CRT TVs.

    This is a big step for retro purists, as RetroArch can now output “pixel-perfect” video with accurate timing to compatible displays, even quickly switching between interlaced and non-interlaced modes on the fly.

    This capability is currently Windows-only and requires modelines to be created in advance by CRT_EmuDriver or Custom Resolution Utility with a compatible GPU. Linux support is coming soon.

    In case you’d like to learn more, follow these links:

    Direct3D improvements, additions, and a new Direct3D10 driver

    With RetroArch 1.7.1, we really stepped our game up to finally start treating Windows as a first-class citizen platform. You have seen this in the form of dedicated Direct 3D 11/12 video drivers that had the ability to run the same shaders as Vulkan, our new slang shader spec that is made possible by the impressive Khronos/ARM-backed project SPIRV-Cross.

    Increased backwards compatibility

    Previously, the Direct3D 11 driver required that your graphics card driver supported at least Shader Model 5.0. We have since downgraded this requirement to Shader Model 4.0. As a result, I am now able to use the Direct3D 11 video driver on an old 2010 laptop GPU that only supports Shader Model 4.0 (it’s an ATI Mobility Radeon HD 4300). We also try to support more D3D11 feature levels instead of just defaulting to 11.0.

    New Direct3D 10 video driver

    On some systems, though, you won’t be able to make use of the Direct3D 11 driver no matter what. One of those systems happened to be another old laptop I had lying around here. This one has a Geforce 9200M GS, and the specs state that it supports up to Direct X 10 and Shader Model 4.0. Direct3D 11 is a no go on this GPU even with the increased backwards compatibility.

    It’s for this purpose that me and aliaspider spent some time to finally make the Direct3D 10 driver feature-complete. Direct3D 10 should be available from Windows Vista and up, whereas Direct3D 11 is available from Windows 7 and up. The Direct 3D 10 driver should be feature complete and identical to the Direct3D 11 driver, with the sole exception of hardware rendering contexts not being available right now with Direct3D 10.

    Which brings us to the last Direct3D-related subject…

    Direct3D-powered libretro cores are now possible!

    This feature is easily worth its own article, but since we already covered this before and because 1.7.2 has so many huge features, we will relegate this to a side note. Nevertheless, it is none the less important.

    Up until now, if you wanted to use hardware-accelerated 3D rendering in a libretro core, your options were OpenGL and/or Vulkan. There is now a third option – Direct3D 11, and the first libretro core that supports this is the PPSSPP core!

    With all these features, we now have everything in place to really do an UWP version of RetroArch justice.

    Input remapping system improvements

    The input remapping system (available from Quick Menu -> Controls) had many obvious limitations previously. Some of these included:

    • It was not possible to map keyboard from more than one gamepad (for instance with Dosbox)
    • It was not possible to map more than one button to the same action
    • It was not possible to unmap buttons or analogs
    • It was not possible to map a button to trigger an analog response (for instance, in an N64 emulator, running in Super Mario 64 with the D-pad)
    • It was not possible to map an analog to another analog
    • It was not possible to map an analog to produce a button response

    Most of these restrictions have now been lifted at long last thanks to radius, and the visual representation is also much improved now.

    To read more about this, also visit the related forum thread here.

    Do note that all your existing remap files are now obsolete, and you should start from scratch. This was a necessary evil unfortunately in order to progress.

    Various Quality-Of-Life improvements

    We have tried to do various consequential Quality-of-Life improvements for this release:

    • XMB and MaterialUI menus should scale much better now depending on the output resolution. Previously, the XMB and MaterialUI menu elements were too small if you were running at a resolution of 1440p or 4K.
    • Boxart / thumbnails now react better to other elements on the screen and can resize or adjust themselves accordingly. There are also new ways of showing a thumbnail on the left and right side of the screen in XMB. It is also possible to determine what ‘type’ of thumbnails get shown on the left and right, respectively.
    • There are two layout modes now for XMB – you can choose between Desktop and Handheld. Desktop is the default look of the XMB as it was now, mirroring the PS3 layout, while Handheld goes for an XMB look that is more in line with how it looked like on PSP. Previously, the default layout was ‘automatic’, where it would default to the PSP layout if you were running at a resolution of 320×240.
    • Shaders should work again with the Vulkan video driver on the Android version.
    • When you select a shader preset now, it should only show you the supported shader presets based on the video driver that is currently selected. In other words, it will no longer show you GLSL shaders and/or presets when you have selected the Vulkan video driver, just as an example.
    • Certain video features were never implemented for some platforms. We now hide features like Black Frame Insertion, GPU Hard Sync and Swapchain images if the video driver in question doesn’t implement them. It is conceivable that for some of these drivers, these features might be implemented later, but overall we feel it declutters the menu considerably by simply not showing settings that have no effect at all when toggled due to them being unimplemented.
    • We now expose certain convenience features on the Quick Menu, such as Latency, Rewind and Overlay settings. You can also hide these settings respectively by going to User Interface -> Views -> Quick Menu and disabling these categories.
    • The shader next/previous hotkeys are more intelligent now and deliberately skip over shaders that are not supported by the current video driver.
    • (For Linux users) Wayland should now have proper scaling with XMB menu driver.
    • (For Linux users) Allow compositor disabling on X11 fullscreen through _NET_WM_BYPASS_COMPOSITOR.
    • On platforms where this is supported, ‘Set Display-Reported Refresh Rate’ is a convenient way of setting the exact refresh rate that the OS/video driver has reported to the application. This might be more accurate than measuring the refresh rate yourself by waiting for 2048 samples or more before hitting the Action button on ‘Estimated Screen Framerate’.
    • Display Framerate is now moved to ‘Onscreen Display – Notifications’. A handy feature showing all sorts of statistics is now exposed in this submenu as well.
    • RetroAchievements updates

      The future is now. Arcade achievements using the FB Alpha core are fully supported in this version. This brings support for Neo Geo and Capcom arcade boards (Metal Slug, Marvel Super Heroes).

      – Capture your greatest moments with the automatic screenshot feature! Look back fondly on the time you grinded your RPG character to level 99 for internet points.

      – RetroAchievements on a retro computer?! Windows XP builds of RetroArch now support achievements!

      General changelog

      ANDROID/OPENSL: Prevent crashes when setting audio latency too low (buffer count can never be lower than 2 now).
      CRT: Added CRT SwitchRes.
      COMMON: Hide the ‘Core delete’ option if the ‘Core updater’ is also hidden.
      COMMON: Add way to reset core association for playlist entry.
      COMMON: Fix invalid long command line options causing infinite loop on Windows
      COMMON: Add OSD statistics for video/audio/core.
      COMMON: Added runahead system; allows you to drive down latency even further.
      COMMON: Fix buggy behavior that could happen with ZIP file reading on some platforms as a result of not initializing struct.
      CHEEVOS: Support Atari 2600, Virtual Boy, and Arcade (only Neo Geo, CPS-1, CPS-2 and CPS-3 and only with fbalpha core).
      CHEEVOS: Add option to automatically take a screenshot when an achievement is triggered.
      CHEEVOS: Fixed incompatibilities with Neo Geo Pocket achievement sets.
      CHEEVOS: Store only login token, not password.
      D3D10: Added D3D10 driver to release build. Has working shaders (Slang), overlay, and menu display driver support. Should be on par capabilities wise with D3D11 driver except for there being no hardware rendering right now.
      D3D11: Experimental hardware renderer. Allows for libretro cores to use D3D11 for hardware rendering. First core to use this is PPSSPP.
      D3D11: Increase backwards compatibility, shaders compile with Shader Model 4.0 now, added support for more feature levels.
      D3D10/D3D11/D3D12: Fix crashes with completely black or white thumbnail textures in XMB.
      GUI: Support disabling window decorations on Windows and Linux.
      LIBRETRO: Addition – Functions to enable and disable audio and video, and an environment function to query status of audio and video enables.
      LOCALIZATION: Update Italian translation.
      LOCALIZATION: Update Polish translation.
      MENU: Add Rewind/Latency/Overlay settings to Quick Menu, add options to show/hide them (User Interface -> Views -> Quick Menu)
      MENU/RGUI: Only show Menu Linear Filter for RGUI and only show it for video drivers that implement it (D3D8/9/10/11/12/GL)
      MENU/RGUI: Add User Interface -> Appearance options.
      MENU/RGUI: D3D8/D3D9: Hookup Menu Linear Filter
      MENU/XMB: Disable XMB shadow icons by default for PowerPC and ARM for performance reasons.
      MENU/XMB: Left/right thumbnails are now automatically scaled according to layout.
      MENU/XMB: Add Left Thumbnails (additional to the right).
      MENU/XMB: Fixed left/right tab regression.
      MENU/XMB: Fix scaling of tall images that were cut on bottom previously.
      MENU/XMB: Menu scale factor setting now changes texts length, image scaling and margins.
      MENU/XMB: Mouse cursor scales correctly now.
      MENU/XMB: Add toggle to show/hide Playlist tabs.
      MENU/XMB: Add menu layout – can switch between Desktop, Handheld and Auto.
      MENU/XMB: Don’t load menu pipeline shaders unless XMB is selected (D3D10/D3D11/D3D12/GL/Vulkan)
      MENU/VIDEO: Only show black frame insertion for the video drivers/context drivers that support it (so far this includes – D3D8/D3D9, OpenGL, Vulkan)
      MENU/VIDEO: Only show max swapchain images if supported by video driver and/or context driver (so far this includes – DRM EGL context driver, VideoCore EGL context driver, Vulkan)
      MENU/MaterialUI: Automatic DPI Scaling should be much improved now, now scales as expected at 1440p and 4K resolutions.
      MENU/MaterialUI: Fix wrong calculation of an entry height causing long playlists to end up outside of screen range. This also could cause crashes on low DPI screens.
      IOS: Fixed crash when opening downloaded roms from Safari or using the “Open in..” functionality. Added the compiler flag to support keyboard remapping to controls.
      IOS: Fixed buffer overlap that caused a crash while trying to download GLSL shaders from the buildbot.
      PS3: fix URLS
      REMAPS: Mapping keyboard keys from more than one gamepad (works with dosbox)
      REMAPS: Mapping more than one button to the same action
      REMAPS: Unmapping buttons
      REMAPS: Unmapping analogs
      REMAPS: Mapping a button to trigger an analog response (tested with mupen, can run on SM64 with the d-pad now, triggers a full analog tilt)
      REMAPS: Mapping an analog to another analog (having more than one analog mapped to the same output causes issues)
      REMAPS: Mapping an analog to produce a button response
      SCANNER: Should be able to scan dual-layer Wii disc images now, filestream code now supports files larger than 4GB.
      SHADERS/SLANG: Slang shaders should work again on Android version and MSVC versions (basically all the Griffin-based versions).
      SHADERS: If GL context is GLES2/3/Core context, Cg shaders are unavailable. Applies to shader list too.
      SHADERS: Hide cg/glsl shaders from being able to be selected if D3D8/9/10/11/Vulkan video drivers are selected.
      SHADERS: Hide slang shaders from being able to be selected if D3D8/9/OpenGL video drivers are selected.
      SHADERS: Prevent crashes from occurring if we have the GL video driver in use and we try to skip to a slang shader through next/previous hotkeys
      SHADERS: Fix shader parameter increase / decrease functions
      SUBSYSTEM: handle savestates properly (cart1 + cart2.state0)
      VULKAN/X11: Fix X11 Vulkan bug from Wayland driver.
      VULKAN: Fix multi-line text spacing in menus with Vulkan driver.
      WINDOWS XP: Add Cheevos support.
      WINDOWS/MSVC 2003/2005/2010/2013/2015/2017: Add Cheevos support.
      VITA: Bugfix for ‘PS Vita takes many time to start to accept input’ issue.
      X11: Allow compositor disabling on X11 fullscreen through _NET_WM_BYPASS_COMPOSITOR
      X11: Prioritize NET_WM_STATE_FULLSCREEN in true fullscreen mode
      WIIU: Fix OOB read/write in keyboard driver.

      What’s coming next for RetroArch

      So, RetroArch 1.7.2 had some pretty major new features, right? By all indications, it looks like RetroArch 1.7.3 will be no different. So let us give you some sneak peek at what might be arriving down the road for the next version…

      A Qt-powered WIMP desktop UI!

      Ever since RetroArch’s inception in 2012 (and even way before that when it was just known as SSNES), we have stuck to our guns and insisted on a uniform menu experience that obviously took its design cues from mainstream gaming consoles like the PlayStation.

      While this lends itself very well to game consoles and the like, there is also a very vocal minority (or majority, depending on how you look at it) that has definitely made it well known that they would really prefer a native WIMP UI at times to be able to do mundane tasks like select/load a ROM, or browse through a playlist easily with the mouse, etc. And certainly, an argument can be made that on a traditional desktop PC, it might not be ideal at all times to be confined to the same kind of input limitations as say a traditional gamepad.

      For 1.7.3, the way we will try to reach for a concession with these users will be through the way of this companion UI. What you see in these screenshots will be a WIMP (Windows, Icons, Menus, Pointers) GUI powered by Qt. It will be available for RetroArch versions that run on PC Operating Systems like Linux, Windows and macOS.

      The way we envision this UI to work is a bit like how it is possible in Steam to switch between Big Picture mode and the traditional desktop UI. We still want the console-style menus to be RetroArch’s main user interface and we believe this scales fairly well onto game consoles, mobile devices and handhelds. But there is no denying, as Windows 8 all taught us, that there is no such thing as one true universal UI that can scale well across every potential device, so the user should definitely have his/her options.

      The two screenshots you see here are not just mockups, they are already operational in bparker’s branch. What you see here is the result of about one solid month of work, and it’s already reaching quite satisfactory levels.

      We have kept a tight lid on it until now, but felt the time was right to reveal more details about it. We are doing this primarily for the users, and we hope that they will like it, and through designing this we are also trying to be more receptive to user feedback than we might have been in the past.

      Despite all this, as with anything in our codebase, we do insist that from a programming point of view, that this will not impose any huge dependencies, and that all of these individual coding parts are modular in nature and can be easily compiled in or out of any build. With RetroArch we always have to walk a fine line between staying lightweight and not becoming perceived of being too bloated yet also trying to meet increasing user expectations, and it’s not necessarily always possible to be in the middle of these two opposing camps. So we try to do our best to satisfy both groups this way, and stay true to our design goals while also making sure that we keep the users happy who don’t care about the underlying codebase but just care about the results from an enduser perspective of what they can do with the program. It’s a big challenge and definitely a balancing act but we feel we have become better over the years in terms of finding the right balance.

      2018 The Year Of The Libretro Frontend

      Libretro, the underlying platform and ecosystem that powers most of what you see in RetroArch, will see an explosive growth throughout the rest of this year, both by our efforts and outside forces also only tangentially related to our project. You will see the Libretro logo not only in more places, but you will also see popular programs like Kodi finally adopting the API wholesale.

      While it was never our direct intent to have our API be synonomous with retro gaming and emulators, we do not mind this being the biggest driver of growth in this emerging ecosystem and are grateful for the developments there.