Could a "mame2019" be compiled?

Well, the complete bios/devices romset is only about 150MB. So updating that for the version of the core that does the MESS side of things is not as daunting as the arcade romset at 60+ GB, excluding CHDs.

Not to mention if you are using launchers like Hyperspin and Launchbox that make use of XMLs, you also need to update said XML files. And of course all the media files that need to have the same file name as the roms.

MESS devices may also change names but these don’t appear in your gamelist, they are just files that exist in the background in order for your roms to work. And yes, the Sofware List roms change too but you don’t have to use them. You can use other romsets like No-Intro or whatever else you have. The Software List is not needed, i never used it myself tbh.

So basically, updating MAME is hard and time consuming (depending on your setup). Updating MESS is easy so it doesn’t need to be kept out of date only because you don’t want to update your arcade roms. That’s why i said the merging only caused problems IMO.

“MAME 2019” core for Windows 7+ 64-bit

I compiled a mame core based on the 0.214 version and renamed all the relevant entries from MAME to MAME 2019 and from mame to mame2019

I also modified the *.info file, so that the core shows up in RA as it should.

Now it should use samples, cheats etc. from /system/mame2019/
and it generates the necessary cfg, nvram etc. folders in /saves/mame2019/ as well.
(/saves/MAME 2019/mame2019/) if you enable Sort Saves in Folders in the RetroArch Settings)

If someone is interrested in testing it: Dropbox - Link

https://www.virustotal.com/gui/url/e2628edb83b475f9bd72a08eca5bdf498c9c66f0f1cbb96d8ad199a954383a23/detection

Please note, that i don’t take any responsibility if something doesn’t work.

[TUTORIAL coming soon]


To use hiscore, history and command dat’s you need to change your settings to match the new configuration.
(see my guide in the libretro/general/guide section)
[GUIDE] mame(current) hiscores, history & commands

TL;DR:

  • Download and install mame 0.214 (or use the source from github) and put the plugins folder in /system/mame2019/
  • Make a new directory named history in /system/mame2019/
  • Download history.dat and command.dat and place it in this directory
  • Make a new directory named ini in /system/mame2019/
  • Create empty mame.ini, plugin.ini and ui.ini files in the ini directory and insert the following:
    • mame.ini (use the path on your system):
      pluginspath     D:\RetroArch\system\mame2019\plugins
      
    • plugin.ini:
      data        1
      hiscore     1
      
    • ui.ini (use the path on your system):
      historypath     D:\RetroArch\system\mame2019\history
      
  • Edit the init.lua in /system/mame2019/plugins/hiscore/
    • init.lua (use the path on your system):
      local hiscore_path =    "D:\\RetroArch\\saves\\MAME 2019\\mame2019\\hi";
      
  • Enable Read configuration from within the Quick Menu after starting a game.
  • Close MAME 2019 and everything should work on the next start.
4 Likes

Thank you so much for this.

Works great.

Is this going to be added in the buildbot at some point?

no plans for it currently, no

After trying to replicate my steps on a fresh and clean environment i am struggeling on setting up MSYS2:

https://docs.libretro.com/development/retroarch/compilation/windows/

pacman -U mingw-w64-x86_64-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz
loading packages...
resolving dependencies...
warning: cannot resolve "mingw-w64-crt", a dependency of "mingw-w64-nvidia-cg-toolkit"
:: The following package cannot be upgraded due to unresolvable dependencies:
      mingw-w64-nvidia-cg-toolkit

:: Do you want to skip the above package for this upgrade? [Y/n] n

error: failed to prepare transaction (could not satisfy dependencies)
:: unable to satisfy dependency 'mingw-w64-crt' required by mingw-w64-nvidia-cg-toolkit

@hunterk any idea? (sorry to bothering you)

Probably best to just not install the Cg toolkit (–disable-cg in your configure step). All you lose is Cg shaders.

1 Like

Problem solved.

I had to install the mingw-w64-x86_64-crt from sourceforge and not with pacman

#This is the wrong package:
pacman -S mingw-w64-x86_64-crt-git
#This works:
wget https://sourceforge.net/projects/mingw-w64-archlinux/files/x86_64/mingw-w64-crt-git-4.0.rc1.r183.g5e2e73b-1-any.pkg.tar.xz/download -O mingw-w64-x86_64-crt-git-4.0.rc1.r183.g5e2e73b-1-any.pkg.tar.xz
pacman -U mingw-w64-x86_64-crt-git-4.0.rc1.r183.g5e2e73b-1-any.pkg.tar.xz

After that the mingw-w64-nvidia-cg-toolkit installs fine

2 Likes

I noticed something weird today with this core. In the “slider options” when you press start for the menu, all the overclocking options are missing. They do exist in the “normal” version of the core or the standalone.

Is this an error or am i missing something?

Edit: It seems it affects some games. I tested Gunforce 2 (one of the few games i use overcklock) and they are missing from there.

Are you talking about these settings?:


1 Like

Yes.

My version don’t show these when i load the game.

However, i made some other tests and if i load a save state made from the previous MAME 0.214 core they appear again.

It’s weird, maybe there’s something funny with my core options, inis, etc.

Try to delete your default.cfg and gunforc2.cfg to see if this problem persists.

[EDIT] You have to Enable cheats from the Quick menu - Options

1 Like

If a “MAME2019” is ever made (Ugly name if you asked me you should make a “MAME2020” instead) Please make sure to also add a description to what MAME set it corresponds to.

The one that is already compiled in this thread is the 0.214 core.

1 Like

Thanks SO much! Finally a modern version which supports states, fast-forward AND hiscores! Got it working right away.

Every other MAME core has some issues… Couldn’t get hiscores working in MAME 2016, MAME 2013-Plus has questionable support for many games (i.e. Batsugun doesn’t have music).

@hunterk I do understand the hesitation to have a gajillion MAME cores in the buildbot, but as outlined in this thread there is definitely merit to having a “modern, stable” MAME core available. It certainly does not make sense for me to be on the most up-to-date MAME core, because many ROMs do break and there’s no other way to know for sure than to generate a new DAT file and check yourself - then re-validating and re-building roms is very time consuming and painful and just not something I want to do every two weeks.

What I enjoy about RetroArch is that I have a million systems and their games playable in an instant - a “stable” core allows me to have exactly that. With that said, I’d be happy to see a more modern MAME core added to the buildbot.

Can it also be compiled for Linux and/or Android?

Hi @Tarrasque , i am fairly sure that this works on all systems able to build Libretro MAME in the first place.
I can confirm that it works on Windows 7 and Linux Mint 19.3.
I never tried it on ARM or other systems (don’t know how to do that. Is it possible to cross compile them from Windows or Linux?)

Steps to compile a custom MAME core

(With proper paths)

1. Make sure that you can build the most recent version

git clone http://github.com/libretro/mame
cd mame

make -j3 -f Makefile.libretro                   #Complete build
make -j3 -f Makefile.libretro SUBTARGET=arcade  #Arcade-only build
make -j3 -f Makefile.libretro SUBTARGET=mess    #Softlist-only build

-j = number of jobs
-f = file (Makefile.libretro)

2. Reset the contents of the repository to a clean state

(do this inside the mame directory)

make clean
git reset --hard

3. Checkout the desired version source

[NOTE] Make sure the version contains a Makefile.libretro. Not all commits have the Makefile.libretro so you have to search for the right one.

git checkout 3ec4cbb

e.g.

mame 0.217 = aedbec9
mame 0.216 = no Makefile.libretro
mame 0.215 = 7cf10a3
mame 0.214 = 3ec4cbb
mame 0.213 = no Makefile.libretro
mame 0.212 = 725827c
mame 0.211 = 3cbaac0
mame 0.210 = no Makefile.libretro
mame 0.209 = 1961f6c

4. Edit the following files:

  • mame/src/osd/libretro/libretro-internal/libretro.cpp
    (core information displayed in RetroArch)
479 - info->library_name     = "MAME";
480 - info->library_version  = bare_build_version;

479 + info->library_name     = "MAME 2019";
480 + info->library_version  = "0.214 custom";
  • mame/src/osd/libretro/libretro-internal/libretro_shared.h
    (name of the directorys [saves, states, system, etc.], core name etc.)
111 - static const char core[] = "mame";

111 + static const char core[] = "mame2019";

5. Build your custom MAME core

make -j3 -f Makefile.libretro                   #Complete build
make -j3 -f Makefile.libretro SUBTARGET=arcade  #Arcade-only build
make -j3 -f Makefile.libretro SUBTARGET=mess    #Softlist-only build

The resulting core is still mame_libretro.* since i don’t have found a way to rename it in the building process without getting an error, so you have to rename it to your liking. e.g. mame2019_libretro.*

6. Create a matching *.info file

  • RetroArch/info/mame.info or .config/retroarch/info/mame.info
    (core name in RetroArch)
    • rename to match the core
      (e.g. mame2019_libretro.dll = mame2019_libretro.info)
001 - display_name    = "Arcade (MAME)"
004 - corename        = "MAME (Git)"

001 + display_name    = "Arcade (MAME 2019)"
004 + corename        = "MAME 2019 (based on 0.214)" # <- optional