09 May 2026

MAME (current) for RetroArch: running list of improvements

I will use this post as collector for any further improvements that we see in the MAME (current) RetroArch core.

Update 9 May 2026 - with the tremendous help of a community member, I now understand that MAME (current) still supports the .lay files of MAME official. However, due to the limitations of the RetroArch implementation, you will only need this for very special topics, but not for classical bezel artwork.

If I am not mistaken, there is no documentation of this setup anywhere - so here you are.

Very long time ago, I did a deep dive into the logic of a MAME .lay file:
With a highly capable shader such as koko-aio, there is no longer the need for such .lay file in RetroArch. However, there are things that a MAME .lay file is still valuable in RetroArch:

Configuration in the RetroArch shader, such as koko-aio:
  • Arcade machine artwork
  • Bezel configuration in every single detail
  • most Backdrops
What's left for a configuration in the MAME .lay file:
  • Screen overlays for colorizing pixels

The colorization of the pixles is done with an overlay in the MAME .lay file

In comparison without the overlay

  • Dual screen setups, like in certain Game & Watch handheld games

The alignment of the two screens is done in the MAME .lay file

  • Backdrops, like those of Game & Watch handhelds, only look good if configured in a MAME .lay file
Grass, hens and wood is in a MAME .lay file as backdrop, not in koko-aio


The apparent challenge is that you need to be absolutely sure what you need in the MAME .lay file and what not. Have a look into the two Game & Watch examples, that should help.

Installation of MAME lay files

Like in MAME official, the relevant file are compressed into a .zip file having the name of the game. In the .zip file, the layout file is called default.lay, and it contains the references to the other files in this .zip file.

Installation path in RetroArch: 
RetroArch/system/mame/artwork

For your orientation, the system folder is the folder that contains all other system data, such as bios files of consoles. Inside of this folder the mame subdirectory is written in small letters, as well as the artwork directory. Same as in official standalone MAME.

I hope that this information helps, it is incredibly hidden in the Internet. Cheers.


Update 4 August 2025 - just briefly an overdue update on easier highscore support in MAME (current) for RetroArch, which I can confirm as working (done with newest MAME version 0.279)

Preparatory steps:

  • Step 1: have the MAME (current) core installed
  • Step 2: verify that you have the following directory: $HOME/Documents/RetroArch/system/mame - if not, then create it
  • Step 3: download the entire master file from github as a zip file: https://github.com/libretro/mame and extract it
  • Step 4: move the following directories into the mame directory according to Step 2: hash and plugins
Activating Highscore Support from within MAME (current):
  • launch a game in MAME (current), enter Quick Menu, and in the Core Options/System, enable "Boot to OSD"
  • Completely close RetroArch, launch it again and launch a game (horizontal monitor!) in MAME (current) -> the OSD appears
  • With (TAB), jump to the General Settings of the MAME OSD, go to Plugins and activate "Hiscore Support" - don't forget to save the settings in the MAME OSD. 
  • After this, disable "Boot do OSD" in the Core Options and completely close RetroArch again.
  • MAME has now generated the necessary ini files in $HOME/Documents/RetroArch/system/mame/ini
From now on, games should save highscores in $HOME/Documents/RetroArch/system/mame/hiscore. Play any game and get a hiscore, and it should create this directory and save hiscores into it. 

Very good news: In my tests, I could successfully move all hiscores from MAME official to MAME (current) in RetroArch! The solution now seems compatible and stable enough.

Still a bit clumsy, but far better than before. 

Reminder: samples for very old MAME games need to be here as well - $HOME/Documents/RetroArch/system/mame/samples

Game & Watch Games in MAME with Screenshots

Finally: Game & Watch handhelds decently run in RetroArch with the koko-aio shader

This has been a major struggle, and with the spontaneous help of the creator of the koko-aio shader, these handhelds are up and running in RetroArch as well. Thanks to the capabilities of koko aio and its creator, the shader presets are compelling and even superior over official MAME.

If you want to test this out immediately, download my today's release of koko-aio with all the Arcade textures included here:

https://github.com/estefan3112/koko-aio-slang/releases/tag/0.8ng

These two Game & Watch presets are already included in the base package:



Technical Notes on the challenges:

  1. Partial reliance on MAME.lay file: For certain effects, such as a consistent overlay and a proper dual screen setup, you still need a reduced .lay file. The respective .zip files are provided in my koko-aio release (under system) and need to be placed under RetroArch/system/mame/artwork. So I had to split the layout between koko-aio (for the bezels and the shader) and the functions that koko-aio does not and will never support.
  2. MAME Alternative Renderer required: These games only look good if you use the Alternative Renderer of MAME current, which does own upscaling. In my koko-aio release, I provide game-specific .opt files for activating the Alternative Renderer and a resolution that runs on my M2 Mac Mini. Files need to reside besides the .slangp files in the RetroArch/config/MAME folder to be used automatically.
  3. Reference to koko-aio fast hires presets: As MAME does its own upscaling in the Alternative Renderer, it was very important to use one of the fast Hires shader presets. As regular koko-aio does its own upscaling, a reference to this preset resulted in very laggy performance.
  4. No Runahead or other latency option: Another very important catch is if you have Runahead or any other latency option of RetroArch enabled. Disabling Runahead (in any form) significantly improved performance. In my koko-aio release, I provide game-specific .cfg files for disabling Runahead, because for all other games, it is of great help.

The developer of koko-aio also provided a last minute patch for even nicer looks, so be sure to use my install file, which contains an entire instance of the koko-aio shader, bleeding edge.

Feel free to feedback on this release, should you run into any issues. It would also be very interesting to get feedback on performance of this setup on other machines. Thank you, and cheers!