Author Topic: AM crashes while generating MAME/MESS rom list  (Read 6533 times)

yoshi41

  • Newbie
  • *
  • Posts: 4
    • View Profile
AM crashes while generating MAME/MESS rom list
« on: March 26, 2016, 06:13:09 AM »
First of all, thanks a lot for this great frontend. I use it on my GroovyMAME CRT (UMSA) arcade pc.

I have troubles generating rom lists for MAME/MESS.

Tested with regular MAME and GroovyMAME 0.171 using different builds of AM version 2.

It works fine with MAME (listxml) and short MESS (listsoftware) rom lists, but it crashes with long MESS rom lists.

Working Example (sms)

sms.cfg

Code: [Select]
# Generated by Attract-Mode v2.0.0-rc3-1
#
executable           ..\mame\mame64.exe
args                 [system] -cart "[romfilename]"
rompath              ..\mame\roms\sms
romext               .zip;.7z
system               sms;Sega Master System
info_source          listsoftware
artwork    flyer           
artwork    marquee         
artwork    snap           
artwork    wheel           

It works in the GUI and on the command line.

Code: [Select]
E:\temp\firefox\attract.nightly>attract -b mess-sms
*** Generating Collection/Rom List: mess-sms
 - Found 584 files.
100%
 * Calculated CRCs for 0 files in 1553ms.
 - Obtaining -listsoftware info [sms]
 > 20em1                     ==> 20 em 1 (Bra)             [ 11]
 > 3dragon                   ==> The Three Dragon Story... [ 11]
 ...
 > zool                      ==> Zool - Ninja of the 'N... [ 11]
 - Removing any duplicate entries...
 + Writing 584 entries to: E:\temp\firefox\attract.nightly\romlists/mess-sms1.txt

E:\temp\firefox\attract.nightly>

Non-Working Example (megadriv)

mess-genesis.cfg

Code: [Select]
# Generated by Attract-Mode v2.0.0-rc3-1
#
executable           ..\mame\mame64.exe
args                 [system] -cart "[romfilename]"
rompath              ..\mame\roms\megadriv
romext               .zip;.7z
system               megadriv;Sega Genesis
info_source          listsoftware
artwork    flyer           
artwork    marquee         
artwork    snap           
artwork    wheel           

AM crashes in the GUI and on the command line.

Code: [Select]
E:\temp\firefox\attract.nightly>attract -b mess-genesis
*** Generating Collection/Rom List: mess-genesis
 - Found 2327 files.
100%

E:\temp\firefox\attract.nightly>

I was able to generate the rom list for MAME and MESS sms, pce, tg16, sgx roms.

But I can't generate it for MESS megadriv, nes, snes roms. It always crashes around 50% progress.  :'(

Thanks for your help.

omegaman

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 880
    • View Profile
Re: AM crashes while generating MAME/MESS rom list
« Reply #1 on: March 26, 2016, 05:26:14 PM »
Trying running it in vista compatibility mode. If that doesn't work, please open a bug report. 

yoshi41

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: AM crashes while generating MAME/MESS rom list
« Reply #2 on: March 27, 2016, 03:12:58 AM »
Already tried with Vista compatibility. Doesn't help.

Opened an issue for this problem...

https://github.com/mickelson/attract/issues/201

Thanks.

monkeybomb

  • Jr. Member
  • **
  • Posts: 11
    • View Profile
Re: AM crashes while generating MAME/MESS rom list
« Reply #3 on: March 27, 2016, 12:40:32 PM »
These are my romlists for those 3 systems using a full set of mess 149 roms.  They all play in mame 171 with no issues, so I assume the names haven't changed.  I made the lists with release candidate 3 and used the xml files from this link:

http://www.retrofe.com/forum/index.php?topic=319.0

You'll need to rename the lists to match the name you gave you mame 171 before adding it to your romlist folder.  I think this will work, but if it doesn't let me know.




yoshi41

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: AM crashes while generating MAME/MESS rom list
« Reply #4 on: March 28, 2016, 03:59:12 AM »
Thanks for the files.  :) There aren't many additions in MAME 0.171 from MESS 0.141.

In the meantime, I created a Perl script which converts "mame -listsoftware <system>" output to AM romlist format.

Btw, GroovyMAME does not contain the required "hash" directory for MESS roms. Need to take it from the regular MAME version.

Here's the AM display config I use to filter on console region for SNES and SMD. SNES and SFC are compatible (just a different cart on the real system), but a distinct setup avoids duplicates games in the display.

Code: [Select]
display Sega Genesis
layout               Cools
romlist              mess-genesis
in_cycle             yes
in_menu              yes
global_filter       
rule                 Title not_contains Prototype
rule                 Title contains \(World\)|\(World.*\)|\(.*World\)|\(.*World.*\)|\(USA\)|\(.*USA\)|\(USA.*\)|\(.*USA.*\)
filter               All
filter               Favourites
rule                 Favourite equals 1

display Sega Mega Drive
layout               Cools
romlist              mess-megadrij
in_cycle             yes
in_menu              yes
global_filter       
rule                 Title not_contains Prototype
rule                 Title contains \(World\)|\(World.*\)|\(.*World\)|\(.*World.*\)|\(Jpn\)|\(.*Jpn\)|\(Jpn.*\)|\(.*Jpn.*\)
filter               All
filter               Favourites
rule                 Favourite equals 1

display Nintendo SNES
layout               Cools
romlist              mess-snes
in_cycle             yes
in_menu              yes
global_filter       
rule                 Title not_contains Prototype
rule                 Title contains \(USA\)|\(.*USA\)|\(USA.*\)|\(.*USA.*\)
filter               All
filter               Favourites
rule                 Favourite equals 1

display Nintendo Super Famicom
layout               Cools
romlist              mess-snes
in_cycle             yes
in_menu              yes
global_filter       
rule                 Title not_contains Prototype
rule                 Title contains \(Jpn\)|\(.*Jpn\)|\(Jpn.*\)|\(.*Jpn.*\)
filter               All
filter               Favourites
rule                 Favourite equals 1

The filter rule could be possibly shorter. I'm not familiar with the AM specific implementation of regexp.

Usually, ".*" matches anything or nothing while ".+" needs at least one character. And ".*?" stop quantifiers from being greedy. AM seems to treat ".*" like ".+" and doesn't recognize "?".

Is there a detailed AM regexp description somewhere?

And there's one detail missing in my whole setup.

I haven't found a way to exit AM with a button combination.

MAME allows to config combos like L+R+Start for exit (and optional confirmation). I would like to configure the same combo in AM.

raygun

  • Administrator
  • Sr. Member
  • *****
  • Posts: 393
    • View Profile
Re: AM crashes while generating MAME/MESS rom list
« Reply #5 on: March 28, 2016, 10:41:12 PM »
Hi there,

I've not been able to reproduce this crash here yet, but have a couple more things to try.

with respect to the regexp in Attract-Mode, it is based on the squirrel language's regexp, which is horribly broken as you have discovered.  My plan is to move to c++11 at some point in the future, which will fix this using the c++ standard library version.

The only documentation I know of for the squirrel regexp is here: http://www.squirrel-lang.org/doc/sqstdlib3.html#d0e2180

Attract-Mode doesn't currently support button combinations out of the box.  You can do a workaround though by creating a plugin that repeatedly checks if all the keys you want pressed are down and then fires the command that you want... so something like (just roughing this in, there may be some errors):

Code: [Select]
local fired=false;  // guard so we only fire the event once per key combo press
fe.add_ticks_callback( "keycheck" );

function keycheck( ttime )
{
   if ( fe.get_input_state( "L" ) && fe.get_input_state( "R" ) )   // test for the key combo that you want
   {
      if (!fired)
      {
         fe.signal( "exit" );
         fired=true;
      }
   }
   else
      fired=false;
}
« Last Edit: March 29, 2016, 07:19:13 AM by raygun »

chrisvg

  • Full Member
  • ***
  • Posts: 78
    • View Profile
Re: AM crashes while generating MAME/MESS rom list
« Reply #6 on: March 29, 2016, 02:20:53 AM »
Glad I'm not the only one that has had a rather unpleasant reaction to squirrel's regex implementation :)

yoshi41

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: AM crashes while generating MAME/MESS rom list
« Reply #7 on: March 29, 2016, 02:26:39 PM »
Thanks for the info raygun.

The regexp implementation is indeed a bit funky.  ;D But the link helps. :)

After messing around a bit, I found a shorter way.

Code: [Select]
display Sega Genesis
layout               Cools
romlist              mess-megadriv
in_cycle             yes
in_menu              yes
global_filter       
rule                 Title not_contains Prototype
rule                 Title contains \([^)]*USA|\(USA|\([^)]*World|\(World
filter               All
filter               Favourites
rule                 Favourite equals 1

display Sega Mega Drive
layout               Cools
romlist              mess-megadriv
in_cycle             yes
in_menu              yes
global_filter       
rule                 Title not_contains Prototype
rule                 Title contains \([^)]*Jpn|\(Jpn|\([^)]*World|\(World
filter               All
filter               Favourites
rule                 Favourite equals 1

display Nintendo SNES
layout               Cools
romlist              mess-snes
in_cycle             yes
in_menu              yes
global_filter       
rule                 Title not_contains Prototype
rule                 Title contains \([^)]*USA|\(USA
filter               All
filter               Favourites
rule                 Favourite equals 1

display Nintendo Super Famicom
layout               Cools
romlist              mess-snes
in_cycle             yes
in_menu              yes
global_filter       
rule                 Title not_contains Prototype
rule                 Title contains \([^)]*Jpn|\(Jpn
filter               All
filter               Favourites
rule                 Favourite equals 1