Jump to navigation Jump to search

MESS

Can you describe QuickPlay's MAME/RetroArch-Mame Support?

Within MAME is both all the world's arcade games, but also a great many home console and home computer games. Its an amazing resource! MAME's own UI is not great at telling you about the non-arcade stuff, since the MAME/MESS merge a few years back (the home computer and console emulators used to be a separate project entirely, which only produced a MESS binary), its been quite difficult in MAME 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 now for QuickPlay.

The arcade machine setup process is about helping you to make your own MAME Romdata files, choosing which ROMS you want to present. That's fine for MAME's arcade machine games, but I realised long ago that dealing with the home computer and console games is a process of much more basic filtering as well as specialising, and not really for the end user who wants to play games. For instance we have to pick the right Commodore 64 emulator from like 300 in order to load NTSC floppies, we need to make sure that Genesis US isn't chosen to play MegaDrive Japan games (its region-locked so the game won't play), we need to make sure that A2600 games get set up against either the PAL and NTSC emulators or the games will look/play wrong, and we need to ensure the Thomson TO7 gets loaded first with the basic cartridge it needed before it could load any games from cassette or floppy disk. And I could go on, and on......Added to these configurations that QuickPlay can do for you, a lot of games in the MAME Software lists (just as in any retro collection!) don't work, a lot of systems don't work, or the devices that load games in those devices don't work. Phew! But, in MAME, there is labelling for things that don't work, so they can be excluded by QuickPlay before you see them...

So that's why, for console and home-computer games in MAME, QuickPlay does all the work up front: For every system that says it has working softlists, the games that say they work are available, and the right system setup is used as an emulator call in QuickPlay to get things to load. Here's C64's romdata for MAME:

Now do be advised here that MAME is the ultimate emulator, its not a simulator, so to load C64 games you are going to need to google what the load commands were, and use them (actually, often MAME has this information in its own dat files, you can use the UI toggle once you load the system and see if that infomation exists). For cassette games, you are going to have to 'press play' on cassette, and then turn throttling off to speed up the game load if you don't want to wait. MAME has keyboard shortcuts to do all these things just look up its basic documentation, and remember there's a notes field in the Media Panel in QuickPlay against each system for you to note down how to load things as you go. If that sounds complicated, just think how complicated it feels when you are doing the same thing for the 150th time.....its more like a coffee machine where you press basically the same buttons to make the coffee, only its every brand of coffee for every coffee machine ever made ;-)

QuickPlay approaches the Console and Home PC MAME support very differently from other Frontends. Mostly that's a product of QuickPlay's EFinder system, when its so easy to setup and configuring all the MAME emulators in bulk, it leads on to higher-level stuff pretty quickly. So we are doing filtering and selecting that, as far as i'm aware, you won't find anywhere else. The idea is to only see games that WORK, to try and make things work if they require extra config, and to allow MAME's softlists to sit beside all your other retro-game emulators and games

When you do an E-Find scan for MAME emulators after doing a MAME Scan in QuickPlay, you get two kinds of emulators: one kind runs the MAME softlists for a systems (so will be called 'A200 NTSC Softlist` and others which are general-purpose emulators (have a look in the 'homepage' field in emulator settings for which filetypes these support) so they will be like 'A2600 PAL Europe Cart' (i.e.: each 'emulator' runs a different device like Cartridge (CART), Cassette (CASS), Floppy Disk (DISC) and so on...

Because RetroArch has a MAME core, everything I just said applies to RetroArch too. All setup and ready to go, you just need to make a couple of config changes to RetroArch

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 LLC'
  • Removes machines that don't have games for them (I looked online, it took ages)
  • For machines which need some kind of media in order to load games (like a basic cartridge), ensures we call those first

Softlists

  • Only makes softlists for systems that 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
  • tweaks the chosen mame emulators for softlists for computable reasons and non-computable reasons (we want an MSX that non-Japaenese people can load games on)
  • Fixes MAME's 'softlist gamename' conflict problem, where two games on the same system have the same MAME call, but may be for two different media devices (and could be different games eg: SMB2 on NES cart/Famicom disc)

Instructions

  • Firstly make sure MAME/RetroArch are setup correctly to load games themselves (to setup in RetroArch see the instructions for modding RetroArch to use full MAME)
  • Then please follow the instructions for MAME initial setup in QuickPlay to set QuickPlay's MAME Options up and get yourself a Mame Scan (the MAME Scan sets you up to create both arcade and home computer/console sets). In particular just ignore the section 'Arcade and Softlist Printing Options' for now (leave it disabled), and read about the implications of enabling that later in its own section here
  • Notice that when a MAME Scan has finished, you're advised to do an E-Find Scan - this is because the MAME Scan has found all of the Home Computer and Console Emulators that MAME is capable of running and has made you a MAME efind file (in the Efind folder in QuickPlay's root directory) customised to your MAME version called Mess_Mame.ini or Mess_RetroArch.ini. So that's why you now should run a new EFind, because that new E-Find file exists now, so run an efind for all systems in some folder that includes somewhere the MAME or RetroAch executable.

  • It should find just over 5000 emulators . One reason there are so many is because there is an emulator for each media device a system had (eg: Cassette, Floppy, Cartridge) and ones also for Softlists if the system has a softlist. That's just how MAME works, you almost always need to specify the media device in the call. The other reason there are so many is that: YOU JUST GOT SOOO MANY NEW WORKING EMULATORS, ALL AT ONCE ;-) Here's a scan after making both a MAME, and a RetroArch MAME EFind file:

  • Now you have two new things:
  1. The ability to use MAME's (non-softlist) emulators to run any rom you like, you can simply use your thousands of new emulators in QuickPlay to load your games! So find some roms as normal (here's a tip: check out the homepage field in each (non-softlist) emulator in the emulator setup: it tells you what file formats are supported, setup the media panel for your systems as normal
  2. You got the ability to create the MAME Softlists. So let's do that now. These are the lists of suppported games for each system that MAME supplies, in QuickPlay we're going to print out a folder for each system, and inside that folder there will be folders for each softlist that system supports. All you need to do now is pick a source folder that the Softlists are going it get written to. So go into the Roms sidebar (Left hand side of QuickPlay) and make/select a folder to be the root of the Softlist Folders, this can be your existing MAME folder, or any other folder (nothing is written to the root, the only folder that gets printed in the path you select is one called 'MAME Softlists' or 'Retroarch MAME Softlists' and under that will be...a lot of folders of games ;-) ).
  • Go to 'Arcade Roms' > 'Print MAME / RetroArch MESS Softlist Romdatas in Current Dir', select the Mame Emulator you're going to use to run the games (remember for RetroArch this must be straight 'MAME', not UME, not MESS, not MAME2009 etc) and hit go.

  • 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. If you want to get more compicated and run MAME's softlist roms with non-MAME emulators, then you'll need to turn softlist generation on in the MAME and think about what type of ROMS you have - read about it later)
  • 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)


FAQ

If you can setup the folder icons, why can't you auto-setup the media panel with screenshots, history/trivia and all the other info that MAME provides?

Its definitely possible, but it was too much work to do everything above and then work that out too. The media panel data is encoded with hex and pascal strings and all sorts. Roadmapped for 'quite soon'. For now do it yourself. The other problem here is a philosophical one: the more QuickPlay hardcodes the things provided to it by other Frontend/Emulator/Frameworks, the less power you, the user, has to make your own setups in QuickPlay. QuickPlay is not just a MAME Frontend, so if you make your own assets attached to "Commodore 64/128", we don't want to overwrite them with MAMEs, assume that MAME has auto-generated them, or try and later pick apart your own additions with MAMEs. This is a problem in many areas of software: how do you gain automatic configuration, but not lose power to make things of your own?

The softlists aren't working?

Just hit here http://forums.quickplayfrontend.com/ you'll get help quickly, but before you do, please just check that:

  • Did you choose the right MAME Emulator in the dialog boxes? Make it as 'straight' MAME as you can...
  • Did you first do an EFind to find a MAME Emulator, then run a MAME Scan using that emulator with the MAME XML, then do another EFind to find all those MAME Console and Home Computer Emulators. If your Softlists don't launch, saying the exe doesn't exist, that's probably why....
  • Does the game you want to play in fact work in MAME/RetroArch outside of QuickPlay?
  • Does it work on the command line? (You can right click a rom in QuickPlay to show you the command-line its going to run, and right click the command line to copy it)

Tips

  • For RetroArch, because I went for the 'experimental' command line option to get things working, you have every system, but bear in mind that RetroArch's configuration takes precedence over MAME's configuration, which can be good and bad. Its bad when you want to access a keyboard key for a computer but its been mapped to 'Fullscreen' in RetroArch for instance (you might still be able to use the MAME menu for lock the keyboard out, haven't tried yet)
  • If you are re-running the softlist-folder generation process because you've upgraded to a new version of MAME, please don't forget after a MAME Scan, to re-run the EFinder and overwrite your current MAME Emulators, or your list of emulators will be out of date for the new softlists you're about to make - its tempting to just go straight to generating the softlists after a new scan of the MAME XML, but then the softlists that get made won't agree quite with the emulators you have

General (non-QuickPlay) advise for setting up MAME for home computers and console games

We want to be able to click-and-play a MAME softlist game from QuickPlay and its amazing when you can, but that means setting up MAME for your systems a bit (like setting up a particular systems for your particular joypad, for instance)

  • If you want to know technical details about how to load games on a computer system, open MAMEs menu and look for the dats for the system, you can also search the MESS info online In a few cases, the infomation you want might actually be collected against a parent or child, so check those too. Sometimes the information hasn't been collected in MAME yet, so you have to google
  • these next tips are about the ini and cfg files in MAME, if you want to set up controllers for computer systems (console controls mostly work well in MAME, better than in RetroArch imho):
    • Writeconfig in the mame ini has ALWAYS been a problem. You should read about ini and cfg files in MAME. The setting 'writeconfig' is actually about the ini files in MAMEs ini directory, not about the .cfg files in the cfg directory. Ideally you want it on (set to 1) so you can change settings to make computers and things work, 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. Ultimately you CAN'T have writeconfig turned on. Turn it off (at the top of mame.ini in MAME's root folder, set writeconfig to 0
    • So now you can police the ini files in MAME's ini directory, you should know the .cfg files in MAME's cfg directory are mostly useful for setting joypads for each system. There are two choices with MAME now: you can make yourself a controller preset or make yourself a config for each systems, see MAME's own documentation about this. I only know about not using controller presets, but there is a way if you are using presets to overcome the problem in windows where the GUID of your joypads change if you unplug them - see this link and this issue
    • don't bother trying to setup joypads for the early consoles that had a controller with keypad including 1-9 on them, its not worth it, they are all a little bit different in what keys they have and which keys are actually fire. Just forget it
    • If you don't use controller presets, some tips for configuring joypads in MAMEs .cfg files:
      • If you don't use a preset for your controller, you'll be making a lot of .cfg files, when you need to setup your joypad, be aware you can't 'protect' your configs in this directory in the same way you just did the .ini files when you set writeconfig to off. In order to make sure MAME might not, for instance, decide your second joypad isn't plugged in and reset all your player 2 controls, you'll need to, in Windows, set the ini file for that system to be read-only. I'd advise spending some time NOT doing any joypad configuring at first: Just load some softlist games and get a feel for what you might want to change, then one day, plan some time to check each softlist in QuickPlay and get it working as you'd like, then set read-only when its right. Then never worry about it again
      • also if you use the .cfg approach to setting up your joypad, be aware that .cfg files HAVE NO INHERITANCE, whereas .ini files do. This means that if you want to set joypad controls for a2600 and a2600p (the PAL Atari 2600) you need TWO .cfg files, but only one .ini file (for a2600 because a2600p is a 'cloneof' a2600 and will read its ini). I think the reason for this is that the 'child' machines of a 'parent' system might have any number of differences, but share basic emulation configuration (like whether the keyboard should, by default, map MAMEs controls to it, or whether you need to press a button for it to do that). You can set the same controls for the a2600 and a2600p by just copying the a2600.cfg to a2600p.cfg and altering the machine name in the .cfg itself to read a2600p
      • so that sounds like a big hassle, right, setting up the joypad for every system? It is...don't worry about it at first, just load some games for a while with a keyboard to hand, get a feeling for things, and remember that each time you do a new one, a few more hundred games are potentially available to you. So plan to do them in one go: start at the top of the MAME softlists, setup a system's controls, set the .cfg file as read-only, move on till you are done