Attract-Mode Support Forum
Attract-Mode Support => General => Topic started by: yoshi41 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
# 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.
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
# 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.
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.
-
Trying running it in vista compatibility mode. If that doesn't work, please open a bug report.
-
Already tried with Vista compatibility. Doesn't help.
Opened an issue for this problem...
https://github.com/mickelson/attract/issues/201
Thanks.
-
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.
-
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.
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.
-
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):
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;
}
-
Glad I'm not the only one that has had a rather unpleasant reaction to squirrel's regex implementation :)
-
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.
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