[$470] Support MAME-style backdrop, screen, bezel, overlay "artwork"

from .config/retroarch/layouts or a path without the dot?
I had problems with the mame.ini to make plugins work with dot paths, so maybe the problem lies there?
Unfortunately i can test this not until tomorrow.

I believe I used the default location (~/.config/retroarch/layouts)

1 Like


The problem crash on *.zip load was caused by disabling Filter unknow extensions in
Settings -> File Browser
or in retroarch.cfg
menu_navigation_browser_filter_supported_extensions_enable = "false"

This way RA has tried to load the *.zip as game.

About the black screen nothing new.
All systems i tested have ATI/AMD cards, but only the AMD Radeon HD 6800 goes dark.
On Radeon HD 7600G & Radeon HD 5400 it works as expected.
i know, not the newest cards :wink:

I finally got it to work by reverting to a (verry, verry) old graphics driver.
Now other programs doesn’t work anymore, so this is not a valid solution.

This is really sad, bacause i was super excited to see this being developed, but now it seems to be abandoned. (?)

It’s not abandoned. It only just got enabled lol

Maybe abandoned was the wrong wording.
I saw that huwpascoe (i presume the original developer of this feature) wasn’t active since May.
So i thought this feature will remain “as it is”

Sorry if this was misinterpreted by me

yeah, they fulfilled the bounty and then vanished, which is unfortunate but to be expected to happen sometimes. We haven’t reached out to see whether they would be open to bugfixing.

The real hope is that someone will take this working feature and run with it, polishing it up for things like automatic loading by filename match, extending it to other video drivers, etc.


Im just testing this here as well and i cant get the bezels to show period. Windows 10 64bit, Ryzen 7 1700x, GTX 1060 6GB. I have set the MAME core driver to GL but i cant get bezels to show. The game shows just fine, just no bezel.

This was with my daily install, so i downloaded a completely fresh 1.8.0 to test there and i get exactly the same results as my daily build, any ideas?

If it’s not black-screening, is it scaling the screen like it should? to make room for the artwork?

OK i have been doing some more testing with a different game, and i can get it to sort of work. I tested with 1941 and pointed to my 1941.zip bezel. I also unzipped my 1941 bezel to check its contents. i have 9 different bezels in the zip.

Retroarch shows that there are multiple different bezels in the UI, it goes up to 8. However only bezel “4” actually shows in game, and that is in fact a bezel made up of 3 seperate images named inst_1, inst_2 and inst_3, as seen in my first image, and here it is working as bezel 4. So it seems to be ignoring all the other bezels in the zip for some reason even though it see’s them as demonstrated by the UI going up to 8. The previous game i was testing was Guwange, with which i have four images in the bezel zip, but none of those will show for me, the UI shows “4” but none actually show when cycling through them.


Just been notified about this by hizzlekizzle on github.

Please could you send me a link to that 1941 bezel? I’d like to test it.

This is working well for me on a Ubuntu Nvidia GTX960 system, validated against a couple of MAME layouts (puckman, invaders). Thank you!

I recognize that this was developed for the gl driver, but was wondering if it is a heavy lift to extend it to glcore? Could glcore be enabled with some ifdef changes, or is it significantly different from the regular gl driver? I’m not sure how close the drivers are from a code perspective.

The reason I ask is that I would like combine official MAME artwork with RetroArch shaders. However, I find that many glsl shaders fail to work reliably, but their slang counterparts work fine. Unfortunately, using slang on Linux requires glcore (to the best of my knowledge). Im guess I’m trying to have the best of most worlds!

Regardless, this feature is great - thanks again!

Actually, I’m going to amend my feedback, because it looks like there may be an issue combining the video_overlay with some glsl shaders…not an issue with the shaders themselves.

Here is my setup:

  • Latest Ubuntu 18.04
  • Nvidia GTX 960 with latest Nvidia driver (430)
  • Resolution set to [email protected]
  • RetroArch 1.8.0, default settings, all assets freshly pulled via online updater
  • gl driver is enabled
  • video layout is enabled

Test Case:

  • MAME 2003 Plus core with puckman.zip ROM
  • Layout file from https://mrdo.mameworld.info/artwork/puckman.zip
  • Layout selected view is 0 (but same behavior or any view)
  • Shader file is ~/.config/retroarch/shaders/shaders_glsl/crt/crt-royale.glslp

In this case, the artwork is displayed, but the game contents are not.

If I disable the video layout setting, the artwork disappears, and the game content reappears with the selected shader.

If I leave video layout enabled, and switch to different shader (for example, crt-geom), I am able to see both artwork and game.

While I haven’t done an exhaustive test of all the CRT shaders, it looks like many/all of the ‘royale’ variants are showing a blank screen with the video layout enabled, while many of the others are working. These shaders work fine when video layout is disabled.

Not sure if anyone can diagnose the behavior, but hopefully this info helps.

1 Like

It looks like multipass shaders are having some conflicts with it, which isn’t too surprising. I guess it’s related to the framebuffer not being the size it’s expecting.

Sorry for the late response i wasnt aware there had been any replies. Here is the 1941 bezel i am using.

Thanks for taking a look.

A post was split to a new topic: MAME 1 frame additional latency

Figured out why only one of the views is working! It seems that Retroarch is currently unable to parse xml attribute strings with spaces in them. I’ve submitted this as an issue. https://github.com/libretro/RetroArch/issues/9703

1 Like

Oh wow, good find! Hopefully this won’t be too hard to fix.

The gl driver is kind of a reference implementation. I did try to get gl-core working too but was unable to do so in time.

The shaders are a difficult one. How it currently works (that I understand) is each driver implements everything itself. They provide a function-based interface, but that’s all. There probably is a need for a central compositing system that feeds drivers more basic commands like


Something like that. However, every graphics driver would need to be updated to support this and the project leaders would have to manage as well as even greenlight such a task. So don’t count on shaders working properly any time soon. <:)

Well that’s good news i guess, at least it wasn’t me being a dumbass :smile: Thanks for taking a look and submitting the issue, hopefully it’s not to difficult a fix to implement. Thanks again.