Plus, I'm using a global filter rule on all the systems with "FileIsAvailable equals 1" together with full sets romlists (generated by AM using xml lists) to avoid the need to ever generate a romlist with any game that I might add.
Can you explain me how it is done? Very interested in this feature
Sure
First step is using hyperlist kinda xml lists for AM to generate a full set romlist.
You can do it opening a command line and:
attract --import-romlist <source_file> [emulator name]
or
attract --import-romlist "system name list.xml" "system name"
Then in attract.cfg file, Spectrum example to show any game automatically when added to the roms path:
display Sinclair ZX Spectrum
layout Arcadeflow_88
romlist Sinclair ZX Spectrum
in_cycle yes
in_menu yes
global_filter
rule FileIsAvailable equals 1
filter All
sort_by Title
Mind you that your files or the user ones need to have the same name as those lists of course, that usually follow no intro name, with the exception of mame and a few other arcade systems.
It works in AF quite well.
Having a master romlist and global rule filters and others can be great since it allows stuff like this print, showing here a global favorites collection spreading from all the systems that you have instead. Then the fun starts with custom collections too, using AM filters to find automatically any street fighter game, any (insert title), or show only games from specific emulator/system... The possibilities can be endless since filters are one of the best AM features.
This is very interesting. I've always thought of implementing a "global favourite" function in my layout, but it's not possible, or better it's possible if the layout scans all the romlists and build an internal custom list, but then it won't be able to launch games.
I also thought that if the user can make a romlist merging all the systems romlists, then Arcadeflow can treat it as a single huge list filtering by systems etc, substituting "displays menu" with a self buils Systems menu that actually filters the huge list, but that's really overkill: Arcadeflow will struggle in sorting and especially realtime filtering such a list.
On the other hand the use of master romlists for each system, with default filter works flawlessly, I feared that it would slow down Arcadeflow but it doesn't because when you load them into the layout Attract Mode applies the filter very quickly.
I have a question on how it could work, because I got from your post that you work with separated romlists for each system and one master romlist, but in this way I don't know if you have to generate the master romlist anytime something changes in the single romlists.
You said that you had to build the master romlist yourself, the one with all the master romlists from the various systems, right? Well maybe the layout could do it for you :O
My idea is this:
- create master romlists for each system
- stitch them together so you can create a huge master romlist
- create a Display for each system, adding a filter like "available = true & system = SNES"
- create custom displays for cross-system favourites or collections etc
- create custom displays "per category", for example one with all consoles, all computers etc
In this way all the changes you make to one display list are reflected in all the other lists. Is this what you are doing?
At the moment if you want to add an "All Consoles" display in Arcadeflow you can do it: just create a merged romlist (or filtered master romlist) and name it "All Consoles#CONSOLE". Bear in mind though that if you remove a display from the cycle list, Arcadeflow won't be able to jump to that
Regarding romlists, what I usually do is generate first the full set one for any system individually. Then I just copy paste it after to the global master romlist with:
#System name
copy paste all games from the system individual full set romlist
When I need to edit something in the lists (score, number of players, etc), normally I do it first again in the single system romlists, then just copy paste again/overwrite the system in the global master romlist. Sounds like lot of work but it's really just a minutes process.
Yeah, had to do it manually (copy paste all systems romlists, separated with #System name) due to issues when using AM menu generate process.
Your idea is similar to what I've been doing manually so a more automatic process would be great of course.
I use also another global filter rule for AF to show only a specific system per display together with the global master romlist, that works similar to what you are describing. Here's again a Spectrum example:
display Sinclair ZX Spectrum
layout Arcadeflow_88
romlist All Systems
in_cycle yes
in_menu yes
global_filter
rule FileIsAvailable equals 1
rule Emulator equals Sinclair ZX Spectrum
filter All
sort_by Title
Regarding custom displays, I have some similar to this, spreading from all romlists and organize by year in this case:
display Mario
layout Arcadeflow_88
romlist All Systems
in_cycle yes
in_menu yes
global_filter
rule FileIsAvailable equals 1
rule Title contains Mario|Luigi
filter
sort_by Year
Or just about any genre, title and whatever we want basically.
Thanks you for the hint about the "All Consoles" example.
Usually, unless the layout has artwork, a way to generate it or if I can make something, I don't have these kind of custom collections in cycle or menu because of that. Thankfully AF at least always show the title in display menu so it's great.
Like the "Favorites" example, using a global master romlist opens some interesting possibilities for any kind of global displays and custom collections.