Libretro and Classic/Mini Consoles update!

ModMyClassic Logo

Libretro has teamed up with ModMyClassic (formerly Hakchi Resources) to provide Libretro with their own official “Classic” platform offering for the classic consoles such as the NES Classic, SNES Classic, C64 Mini and the PlayStation Classic.

This now means you can download both stable and nightly builds of RetroArch and majority of the cores directly from official sources which are built and optimized specifically for the classic consoles.

We (Team Classic+) on behalf of ModMyClassic have been liaising with the Libretro developers on multiple cores to resolve numerous performance issues, bugs, crashes, and have gone through each core one by one to ensure that you receive the most compatible and best performing experience on your classic consoles.

As of writing this article there are currently 83 cores available for download in varying formats. (Raw .so, Compressed .so, zipped .so, hmod and compressed hmod) There will be more added to this list in the coming weeks and the inclusion of a “Classic” platform of RetroArch built specifically for the NESC and SNESC (based of HR’s RetroArch “Neo” build)

We are still working on this official “Classic” offering however you can find the WIP nightly builds here: https://buildbot.libretro.com/nightly/classics/

This means that ModMyClassic (formerly Hakchi Resources) will no longer be providing “3rd party builds” of RetroArch or its cores. It will only provide the builds directly from Libretro sources to ensure that any improvements made between developers ends up benefiting everyone in one single collection.

We also added a simple to use “Classic” platform to all of the core makefiles which we will expand on with future classic consoles. You can compile them for your own needs if needed. We added ARMv7 Cortex A7 (Hard Point with Neon) builds so you can also compile these for your own needs, or to use as a template for any other ARM based device. If you have a different architecture ARM device you should be able to easily adjust the classic platforms slightly to suit your needs. We will be providing a detailed compilation guide for the classics and other ARM devices in the libretro documentation in due course.

Notable Mentions (What’s new for current “Classic” users)

Apart from every single core on the list having been optimized, vetted, and tested to ensure they run at peak performance and stability, there have been a number of notable changes and improvements to some of the cores and their “Classic” versions. (Please note that some cores will run badly on the limited hardware. No amount of build optimization will fix this!)

  • New cores – EasyRPG is now available, SimCoupe core has been revived and added into the available cores and a few other variation cores have also been added such as VICE 128. (Commodore 128)
  • Fixed and optimized N64 cores (Mupen64Plus and Parallel) – The ancient builds of mupen and glupen have been moonlighted and classic specific build optimizations and fixes have been made for the N64 cores which allow for more compatible and higher FPS playback on some titles.
  • Mame2003plus speed issues fixed and improved – Thanks to the work from markwkidd, grant2258 and members of team classic+, we managed to resolve some speed issues with the core and the classic including some fixes to the audio and compatibility fixes. This is now very much the go to MAME core for the classics.
  • DOSBOX core improved – Thanks to radius we have fixed up the classic offering of DOSBOX so the core now runs much better than it originally did. 286 and 386 based games should run without issue on the classics now with 486 running ok depending on the game.
  • Nightly builds directly from libretro sources (Never be out of date!) – This means you can download the latest build of every core available for the “Classics” built directly from Libretro sources. You can download the latest version of any core if you so wish as they are built every 24 hours, 365 days of the year. We will still offer “Stable” releases which will likely tie in with releases of RetroArch.

RetroArch now ported and running on the PlayStation Classic

Thanks to the efforts of Team Classic+ (Especially CompCom) we have now ported RetroArch and all of the current 86 classic cores to the playstation classic. Here is a small video showcasing the functionality:

We will be adding the Playstation specific build platform to the RetroArch build and the cores very soon to tie in with the official “classic” platform release

Final Thoughts

We at ModMyClassic are extremely happy and enthusiastic to be working alongside Libretro and by forming this partnership we hope to better the “Classic” offering and provide the best end user experience possible. Whilst this is announcement is a WIP post, we aim to have the official Lbretro “Classic” platform of RetroArch and Cores polished and fully released in the upcoming month.

Please note that ModMyClassic is still in the process of a rebrand from Hakchi Resources and we are currently working at full load to try and get this finished as well as the “Classic” builds. Please excuse us if you check our website if it’s out of date as we are currently redoing everything from scratch which includes all of our APIs, build servers and deployment servers.

If you have any specific qustions regarding RetroArch on the classics or classics in general, please feel free to ask us directly in the ModMyClassic Discord and we will try and answer your questions/resolve your issues.

Big thanks to Autechre for helping make this partnership a reality and facilitating the project. Lastly, many thanks to all the members of TeamClassic+, m4xw, markwkidd, grant2258, gharby, robloach, flyinghead, radius and anyone else who helped to resolve issues and worked on the project.

 

 

Libretro/RetroArch Progress Report/Update – November 2018

RetroArch Switch nightlies now have overclocking support!

RetroArch for Nintendo Switch now has built-in overclocking support! Download the latest nightlies here –

http://buildbot.libretro.com/nightly/nintendo/switch/libnx/

There are 3 “Overclocking” and 3 Underclocking options.

On exit, RetroArch will restore the default system clock.
On docking, RetroArch will restore chosen clock (same with undock)
On focus loss, RetroArch will restore the default system clocks.
On focus gain, RetroArch will restore the chosen clock.

Some general performance hints:

  • Turn ‘Threaded Video’ on.
  • PSX should be fullspeed for nearly anything but a few ROM’s with 1.5GHz. Often, Boost mode should be enough.
  • Mupen64Plus needs a bit more juice for most games. In addition, turn off framebuffer emulation in the core settings.

Beetle PSX HW – Improvements to PGXP and better UV offset calculations for higher resolutions

You can see in this screenshot that the sprite to the right is sliced and has a vertical black line. Issues like these have been fixed uniformly now across software rendering, Vulkan and OpenGL. They would happen when upscaling internally at higher resolutions.

iCatButler has improved many aspects of PGXP (mainly to do with ‘memory + CPU’ option), and he has also fixed some longstanding issues to do with how sprites are rendered at higher internal resolutions. Line artefacts should be considerably reduced/eliminated as a result.

Below follows an explanation by the author:

There was already a sub-texel offset applied to all the base UVs which was causing it to sample out of bounds on 2D quads regardless of the UV orientation (in hardware the error was only when the UVs were flipped).

I’ve changed it so this offset is shrunk as the scaling factor increases, which solves the problem for positive UV/XY derivatives and allows us to use the same code from the hardware renderers to fix flipped UVs.

Here is a summary of the changes made:

  • Add PGXP calls for instructions that were previously missed. Should improve support for games like Croc, MGS, Alundra 2 and others that rely on CPU instructions for vertex handling.
  • Calculate and apply offset for quads with flipped UVs earlier.
  • Reduce offsets applied in software renderer as resolution scaling increases (fixes line artefacts).
  • Calculate UV limits used for filtering earlier and pass these to the individual renderers.

NOTE: Despite the aforementioned improvements, we still find that PGXP option ‘memory only’ generally tends to be the less bug-prone solution. It’s also considerably less CPU intensive, so always keep that in mind.

Cannonball – 120Hz mode!

CannonBall, the core running an improved OutRun Engine, has now analog axis and triggers support alongside a new 120Hz mode.

G-sync seems to react poorly with it though, so be sure to disable it if you experience audio clicks or skipped frames.

Supermodel repository coming soon!

The Supermodel repository is going to be committed to Github soon. From there, we expect that we will get it in working order over the span of a week.

It will be a good Christmas this year for RetroArch fans that love the old Sega arcade games. In less than a year, Reicast Libretro has made incredible strides for arcade emulation thanks to the efforts of flyinghead, and soon Sega Model 3 will be in the bag as well!

NOTE: Supermodel will be an OpenGL-only core. No Vulkan or Direct3D 11 renderer exists for this emulator.

RetroArch 1.7.6 coming soon!

There are several big things brewing in the background, most of them done by natinusula. They are mostly UI-oriented.

Natinusula is working on a fancy widgets UI layer for RetroArch. This will allow us to show UI elements onscreen while the game is running. It will be far more advanced than basic simple text which is all the OSD layer in RetroArch is currently capable of displaying.

We don’t know yet if this will make the cut for 1.7.6, but we can certainly try! On top of that, natinusula has been working hard on the Ozone menu driver. Some of the things that remain to be done there is better scaling for resolutions beyond 1080p, touch/mouse integration, and thumbnails. It is our hope that once this menu driver is in a solid shape, we can replace the current MaterialUI menu for Android/iOS with this one.

Again, we have to preface this by saying that we don’t know if any of this can be achieved for the 1.7.6 release, but it is certainly something that is being prepared and it will eventually arrive in RetroArch anyway. Rome wasn’t built in a day!

What is definitely coming up, is the following:

  • Resolution selection (for Windows only right now, X11 support coming soon).
  • Will remember window position/size (for Windows only right now).
  • Linux ALSA MIDI driver.
  • Vulkan: Bugfix – ‘secondary screen in overlays not working’.
  • You can individually decide whether frame count, FPS and memory information is being shown.
  • Metal: Now supports rotation.
  • Wayland: Screensaver inhibit support.
  • F3 hotkey toggles FPS counter.

BeetleDC Libretro Atomiswave support!

Thanks to flyinghead, BeetleDC 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.


BeetleDC Libretro NAOMI and MAME ROM support!

Flyinghead is adding MAME ROM support to the arcade side of BeetleDC 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 BeetleDC Libretro if you loaded .lst files. .lst files are no longer necessary now. You should be able to run an arcade game with BeetleDC 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/beetle-dc/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