What's the MESS support then?
Since the MAME/MESS merge a few years back, its quite difficult to actually separate out the systems that are home pc and console from arcade games, which is kind of cool but you need to treat these things very differently. That's what we do in QuickPlay. The arcade machine process [MAME] is entirely separate from this. Because RetroArch support running MAME, everything to do with this support has a corresponding RetroArch file/set.
I think i've approached MESS/MAME support very differently from other Frontends. Mostly that's a product of QuickPlays EFinder system, I didn't have to worry about setting up and configuring all the MAME emulators, so it led me on to higher-level stuff pretty quickly.
I realised long ago that dealing with MESS is a process of constant filtering as well as specialising. The old adage is true: because its a MESS, it needs sorting out. We used to manually filter a few mame emulators that obviously didn't work, and let you make invidivudal softlists, but there's too much work to do to get working games. I realised we just needed working emulators and softlists where all the games actually work.
I've been playing around with software lists since they were first introduced to MESS, so I know all of their foibles well enough to be able to code against them. I know we have to pick the right Commodore 64 emulator from like 300, to load NTSC floppies, I know that Genesis US isn't going to play MegaDrive Japan games.
Features
Standalone Loading (non softlists)
- automatically finds Mame/Mess/UME/Retroarch emulators that you have and sets them up in QuickPlay - not just softlists. Everything!
- but only sets up emulators that actually work
- Tags each 'emulator' with the device it supports, filters out mame 'devices' that aren't about loading games eg: midi, printer
- Sets up a 'type system' to sensibly collect machines of the same type together
- Gives you some text in the emulator setup to tell you what file extensions the emulator supports
- Turns machine names into something a little easier than MAME's very-complete but often very long names - its 'Commodore' not 'Commodore Business Machines Ltd'
- Removes machines that don't have games for them (I looked online, it took ages)
Softlists
- Only makes softlist for systems work, and that have the right device for the softlist, and that device also works
- Doesn't make softlist for games that say they don't work (in the softlist's hash)
- removes softlists that have no games, and don't seem likely to ever have games
- picks the most suitable emulator to use to run each softlist
- Sets up the right emulator for the right region in individual softlists, is aware that 'Sweden' is in 'Europe' and the 'Europe' is 'PAL'
- sets the corresponding icon file in MAME Extras to use for each softlist
- adds comments for each game that were in the mame xml. Omits Japanese comments
- Uses retroarch's 'full mame' support, so you aren't limited to cartridge console games only
Instructions
- Existing users might be accustomed to just pasting over your install. This time, I want you to do 2 things, both are in a new folder in the root of Quickplay: 'updates'
(1) Run the exe in that folder (if you want to know what's in it look in src). It renames systems in multiple places in QuickPlay - its important this time around because a lot of system names
have changed, and some important ones (like "Game Boy"!)
(2) New users get a systems.dat if they start from scratch, but this time you REALLY need that dat (if you're going to use the new MESS/MAME/Retroach stuff. Please replace your existing dats/systems.dat
with this file, but have a look whether you have any system names i've missed. You can just paste them in (or keep your old file and paste them in later if you encounter a problem)
- Run an efind for all systems in some folder that includes somewhere the Mame executable (if your mame executable is called something other than Mame64.exe or Retroarch.exe, get out notepad++ and
search and replace in Efind/mame.ini and retroarch-mame.ini to change to the name you do have)
- It should find about 5000 emulators (i'm not exaggerating - If you have both MAME and retroarch you'll get somehwere under 1000 emulators)
- Find some roms as normal (if you don't know how look at the wiki) - check out the homepage field in emulator setup: it tells you what file formats are supported
- Setup the media panel for your systems as normal (again the wiki!)
For softlists:
- double click the right thing, AND THEN REFRESH IN QUICKPLAYS ROM WINDOW
You'll probably first come across the new functionality by seeing the softlist folders in the roms sidebar.
- You need to setup the emulators for the softlist folder to work - so do the above first
- To get icons working, use the menu item in quickplays folder options (ummm....) to setup your path to the mess icons
- Everything should 'just work now'. Remember that softlist calls just call MAME with a 'mameName' like 'smb' instead of file path. Which means if it works in mame, it'll work in QuickPlay
- Setup the media panel etc to your liking (I find it helps to use the notes field against systems to say how to load Floppys and Cassettes. Although I used to have a C64, I can't often remember
what it needs to load from the floppy (its LOAD "*',8,1)
Retroarch
By default Retroarch has a limited software list mode that supports loading carts only by default, basically limiting us to cart consoles. To use it you need to specify the full rompath in each call. I didn't like either of those things, I wanted to be able to use full mame from retroarch. Which you can do like so:
- go into your retroarch root folder. Open up or make retroarch-core-options.cfg. You need to change/set these 4 things, as they are not the defaults (everything else is fine at default):
mame_read_config = "enabled" mame_saves = "game" mame_boot_to_osd = "enabled" mame_boot_from_cli = "enabled"
- Once you've enabled those settings and saved the config, if you don't have one already, create yourself a mame.ini file using retroarch. Open a command-line window in retroarches root directory and enter
retroarch_debug.exe -L cores\mame_libretro.dll " -createconfig"
- That will make a mame.ini in that folder, move it to retroarchs system folder into system\mame\ini.
(retroarch will now read this, but overrides some of the settings in the ini, like read_config, with the settings in its retroarch-core-options.cfg)
- Put the path to your mame roms in that ini file, so in my case i went
rompath "F:\MAME\ROMS" (your software list roms should be in that path)
- Now retroarch knows where your games are, you can send MAME arguments as you would do with MAME natively, and you can access the MAME menu when you're playing games. Which means you can play all emulators
and load all softlists
FAQ
- Can I make my own softlist folders/mame emulators using some tool?
No, not at the moment, its on the roadmap. I promise to keep this up to date
- If you can setup the folder icons, can't you auto-setup the media panel with screenshots and history/trivia etc
I sure can, not so complex but too much work for one go. Roadmapped for 'quite soon'
Tips
- For Retroarch, because I went for the 'experimental' command line option to get things working, you have every system
- WriteConfig in the mame ini is always a problem for me. You want it on (set to 1) so you can simply make computers and things work (you ALWAYS need to change keymaps for one reason or another), but
once its on everything you do gets saved. The most annoying is that the last game stays loaded in whatever device it was in, causing havoc. To make matters worse, MAME's ini system is a Class-Object based one, meaning that if you have writeconfig enabled, every time you play a system, a new config is going to get saved based on the current state of the master mame.ini, so you're going to get lots of subtly different ini files in your ini folder over time. I don't have a great solution for this, but I know you need to do something! Ultimately you CAN'T have writeconfig turned on (particularly for Retroarch - how are you going to unclear that loaded device without a mame osd menu). I suggest you turn writeconfig on and then have a very large round of trying to setup the keys etc on every emulator you care about. Then turn writecongig off (and that means in ALL the inis you have, since every one you created now has writeconfig set to 1) - so notepad++ search and replace), only enabling it when you need to change configuration on a machine.
For retroarch, if you can't be bothered with the hassle, just make sure its off (its at the top of mame.ini). Retroarch maps the keys for you, so hey...