31 December 2020

MAME Shader Roundup - GLSL Configuration Working Again! Happy New Year!

Happy New Year to everybody!

With a very big MAME 0.227 release, I took some time to sum up the options that Mac Users have in terms of shaders - please read at least this post first for an overview, and I follow up on that one.

Out of the box: When you run MAME without any tweaks, it only smoothens the pixels, but does not apply any shaders. By this, every operating system starts MAME games, while shaders are often very OS-centric.

When to use this: Only if you have a system that does not cope with any of the below options nicely.

GLSL is back again! For quite some time I thought that the good old OpenGL shaders no longer work, but they actually do. Let me summarise how to configure two variants of the CRT-GEOM shader for MAME GLSL.

Setup MAME 0.227 from scratch on Macs (Update December 2020/January 2021)

Another update on how to configure MAME from scratch in the very preferable way, which is
via its internal interface MEWUI (default MAME UI since 0.171) and a text editor.
  
If you are willing to work with your Terminal and a Text Editor, it is by far the best way to set up and maintain MAME, irrespective of which frontend you wanna use later on.

So let's go step by step from scratch. 
MEWUI - click to enlarge
Step 1 - Basic Homework 

Download and install SDL 2 as explained here. Download a good text editor - I now use Atom - https://atom.io, which needs a bit of a learning curve, but it's a very decent Open Source editor.

Change Finder Settings in order to display hidden folders and files, e.g. with Deeper (you need access to your User Library folder, which is by default a hidden folder). Another very smart way to display hidden folders and files is this key combo in the finder: SHIFT-CMD-. 

Shift - CMD - . and you see the hidden files greyed out, but fully accessible, very neat!

Of course, download MAME from here and unzip it into the place of your choice. Obviously this is the SDL version of MAME complied for Macs.

Recommendation: I currently keep my running MAME version in the folder 'mame' and keep only older versions in a version-related directory. This definitely helps you further on to stay consistent and carry on your work from version to version.

Step 2 - Create .ini files in the Terminal and manually configure ini paths

After a lot of testing, my recommendation is to create your first .ini files from the Terminal. This should save you from a lot of headache by multiple .ini files that just cause confusion.

  • Start Terminal and cd into your directory of MAME (recommendation: name your main directory mame, see above)
  • Now in the Terminal and in the right directory, the command ./mame64 -cc generates the three default config files in your mame directory:
mame.ini - your overall configuration file for MAME
plugin.ini - your configuration file for activating and deactivating MAME Plugins
ui.ini - your configuration file for the MEWUI interface
  • By default, mame.ini contains the following multiple ini paths:
inipath  "$HOME/Library/Application Support/mame;$HOME/.mame;.;ini"
Recommendation: In my own experience, this is rather unfortunate, because you may end up with multiple .ini files at multiple places rather easily. Since MAME then considers all these .ini files in a certain order, you may be lost in chaos. Right now, I actually prefer having all .ini files in the MAME sub-directory called ini, thus I reduce this line as follows:
inipath                   ini
This means of course that you have to move the three .ini files created in the first step into the ini subdirectory. As long as you do not forget about the ini directory when moving to a new MAME version, this is probably easiest to handle, and the /Library/Application Support directory stays clean of MAME config files
 Step 3 - Start MEWUI (the right way)

Open Terminal and switch to your MAME working directory (easiest way: type 'cd' and then drag the mame directory from the Finder into the Terminal -> press Return in the Terminal window)

Warning: starting mame64 with double-click does not work in the right way -> so start via Terminal as explained here. So you must be in the MAME working directory!

27 December 2020

MAME and MacOS Catalina (Update December 2020)

Update 28 December 2020: I finally updated my iMac Late 2013 to Catalina - and everything works in MAME as expected. 

Interestingly, nothing of the concernes raised in the community back in January actually turned out to affect the Open Source community. Homebrew has now been in Catalina development for more than a year, and this update took quite a while, some hickups included, which I however could resolve with Google.

19 December 2020

Intel UHD (bad for MAME) and macOS Big Sur 11.1 first impressions

As already anticipated in this post, probably any Intel Macs with Intel UHD Graphics are a quite bad choice for MAME. Here is new proof with the probably very latest Intel Mac mini, a machine that I otherwise very much like. 

But as also barefeats.com explain here, these Mac minis 'scream for an eGPU' when it comes to gaming and other GPU-intensive tasks.


This Mac mini has it all - except for the GPU.

For all Mac Users out there that are struggling with MAME performance - just check your GPU and forget about the rest. If you have some Intel UHD Graphics installed, you already know the culprit. Shaders will then not perform nicely, and also Bezel Artwork. So here is some numbers with identical MAME versions and identical ROM files.

21 May 2020

ARCADE - the better MAME for most of us (R0ni build link included)

Update May 2020: R0ni now provides official Mac builds for MAME Arcade in the directory of his site listed below.


There is a subproject of MAME, fully on par with the official project, but which can be easily overlooked. If you are willing to compile and build your own romset, this is the best MAME for most of us.

Website: https://arcade.mameworld.info
GitHub repo: https://github.com/Robbbert/store1
Official binaries: sorry, there are no longer official builds available, and it was not R0ni's decision 😑. So I will look into that once again and may build unofficial Arcade builds - but please look into the easy build instructions below.


The Arcade internal MAMEUI has a customized colour palette, which I much prefer over the standard palette. Otherwise standard MAME functions, which is good.
What is it?

- Working Arcade games only (so skeleton drivers or games booting into a black screen)
- No mechanical games (pinball games etc)
- No casino or gambling games
- No computers, consoles, terminals, etc.
- No games that display a black screen

26 April 2020

Standalone Spinner for MAME - The one and only How-To!

Arkanoid ... finally!

Arkanoid was very popular amongst us youngsters. I was one those that managed all 100 levels, but certainly not with just one coin. I also think that this was just manageable in the cocktail table version due to the stamina and focus required for this difficult game. We typically used to take the challenge by two, so that after dying, you could relax a bit while the other guy plays, and that worked out quite well.

A spinner for MAME has always been in my plans simply because of Arkanoid. But I always hesitated because I wanted a standalone spinner (for reasons stated below), while basically all online instructions relate to integrating a spinner into your overall arcade control panel.

Now, finally, it is there and works just perfectly.

My prototype with cardboard. As you can see, very decent styling.
I might even stick with the cardboard version because it works so well.

11 April 2020

Negatron - a MAME Desktop Frontend at its best

Okay, I quite finished my review, but will update it incrementally from time to time.
Update 11 April - Negatron Cross Platform Pack, MAMEUI screenshot, further .ini info and NegaMAME
Update 13 April - included further information on Extras, In-Game Extras and the Manuals tab; edited the information on .ini issues.
Update 14 April - finishing up with a conclusion
Update 30 April - negatron 0.100.1 gets rid of some Mac-specific bugs, so go and get it!

MAME frontends for MacOS have always been scarce. That's why I was surprised to learn about this Negatron MAME Desktop Frontend being available cross platform, thus for MacOS as well. Already after my first tests, I was blown away by its capabilities. This review tries to point to the outstanding functions, especially for MacOS users, so that you can choose whether to give it a try.


Version tested: 0.100.1 (yes, the software is around since 2015, and I was never aware of - shame on me!)
Website NegaMAME: http://www.babelsoft.net/products/negamame.htm (a dedicated MAME derivative)
The software is updated frequently by its developer XinYingHo.

02 April 2020

Funding for OSX MAME Website during Covid19 time - please do consider!

This is a post during the Covid19 Lockdown:

Jay, the maintainer of https://sdlmame.lngn.net/, is directly affected by the Covid19 lockdown, and he kindly asks for assistance to keep his site up and running:

https://www.gofundme.com/f/save-lngnnet-services?d=tueAWZxgx3lwv%2B67DwkexMpwQQV7JY7L7yRHDj9Qc5g%3D

I did my part, and please consider to do the same. Thanks indeed.

24 February 2020

OpenEmu - A New Strong Contender for MacOS MAME

These days I revisited OpenEmu after quite some time, and it is a fair statement that it became an extremely attractive contender for playing MAME in MacOS.


This shall only serve as a teaser for an in-depth review - just briefly what makes OpenEmu a compelling option for gaming MAME in MacOS:
  • Up to date - current MAME Core is 0.217 (note: the MAME Core only comes with the "Experimental" version of OpenEmu!).
  • Performance is extremely good. OpenEmu claims to have developed a Metal backend for better performance in MacOS. While there is nothing documented about this, so far all games work flawlessly. A more objective testing than playing games you know does not seem to be available.
  • Shaders built in, can be changed in the game on the fly. It is by far the most convenient way of applying shaders for MAME games. And you find CRT-GEOM or even CRT-Royale-Kurozumi amongst them! Shader options are also very convenient.
  • And of course outstanding usability, which you will not find in any other MAME emulator:
    • import roms by drag'n'drop and enjoy immediate scans for artwork; import also provides a smart mechanism for resolving conflicts with other emulators; if you launch a game with missing roms (e.g. neogeo.zip), OpenEmu tells you this; also importing of bios files is drag'n'drop (more important for the other emulators)
    • outstanding configuration of joypads, with a lot of them being recognized automatically
  • Autostate out of the box: MAME currently does not save hiscore files in OpenEmu, and there is nothing to worry about that. Because OpenEmu, by its default options, just autosaves your last state and resume there at restart. So your highscores are just saved by savestates, and that's just fine.
I wanted to write this teaser very fast because OpenEmu now has reached a state where it becomes a top option for MAME in MacOS. In my review, I will also elaborate on the current deficits (e.g. no Artwork), but all in all, for the casual arcade gamer, this software is just brilliant. Stay tuned, I need to test further.

Read further for my in-depth review of OpenEmu (this review is reduced to the MAME core, wile OpenEmu's potential obviously go far beyond MAME emulation):

12 January 2020

Update MAME 0.217 - Low Latency (WIP) and 60.000 views :-)

Update 15 Jan 2020: Performance tests with nine of my reference games indicate no performance losses when activating Low Latency

In the terminal, cd into the mame folder and run:


./mame64 -video bgfx -str 60 -noafs -bgfx_screen_chains crt-geom -bgfx_backend metal -noreadconfig -nosleep -nothrottle -lowlatency [game]

./mame64 -video bgfx -str 60 -noafs -bgfx_screen_chains crt-geom -bgfx_backend metal -noreadconfig -nosleep -nothrottle -lowlatency [game]

The test results are either identical or even in favor of low latency. MAME 0.217 is also a hot performer, so the BGFX shaders now really perform flawlessly. I could not be happier with current MAME performance-wise.

Update: With MAME 0.217, you can configure Low Latency within MAMEUI! I explained here how to properly access MAMEUI.




Thanks to a visitor of this blog (hi, Borsuk 😊), I became aware of a new MAME option that introduces a mode with lower input latency. 

As so often with MAME, info is rather scarce, both the Github commit and the MAME documentation explain the minimum:
https://github.com/mamedev/mame/commit/eab5bcac0029e4e298e1f194133c21580098508d
https://docs.mamedev.org/commandline/commandline-all.html (search for "lowlatency")

Things to consider:
  • In running systems, you need to add the option to your existing mame.ini (and of course also in any game-specific inis).
  • Currently the default is 'off' because of the potential side effects in some systems.
  • First check whether your mame version is capable. Then you can look into your current configuration. In the terminal, within the mame directory, execute: 
    • ./mame64 -showusage - under the header "CORE PERFOMRMANCE OPTIONS" you should find the following entry: 
      -lowlatency          draws new frame before throttling to reduce input latency
    • then ./mame64 -showconfig - under the header "CORE PERFORMANCE OPTIONS" you should find: 
      lowlatency                1
    • 1 for on or 0 for off. If not, you have to add it in your mame.ini
So is it worth the hassle? I am undecided right now. Further testing is needed.

And this blog reached 60.000 views since I started back in 2016. Thank you for all of you that are still into reading old-fashioned Blog entries. While I see the advantages of YouTube instructions in some cases, I still prefer sharing know-how as text - particularly because I try to update my posts if it makes sense and put them to a later date in this blog.