Attract-Mode Support Forum

Attract-Mode Support => General => Topic started by: Joelf on May 03, 2017, 08:27:27 PM

Title: Sorting Arcade games by Region or Country using the Filter.
Post by: Joelf on May 03, 2017, 08:27:27 PM
OK, this is a tough one. I want to sort my arcade games by country. Unfortunately the front end text files don't contain that info.

eg:
Code: [Select]
#Name;Title;Emulator;CloneOf;Year;Manufacturer;Category;Players;Rotation;Control;Status;DisplayCount;DisplayType;AltRomname;AltTitle;Extra;Buttons
1944;1944: The Loop Master;Arcade;;2000;Eighting;Shooter;2 Players (Sim);Horizontal;8-Way Joystick;good;1;Raster;;;;

So, I look at catver.ini

Code: [Select]
1944=Shooter / Flying Vertical
nothing

The XML file that emulation scrapes?

Code: [Select]
<game>
<path>./1944.zip</path>
<name>1944: The Loop Master (USA 000620) </name>
<desc>North American release. Game developed in Japan. For more information about the game itself, please see the original Japanese release entry; "1944 - The Loop Master [Green Board]" (Japan 000620).

</desc>
<image>./images/1944.png</image>
<rating>0.8460000000000001</rating>
<releasedate>2000</releasedate>
<developer>Eighting / Raizing (Capcom license)</developer>
<publisher />
<genre>Shooter / Flying Vertical</genre>
<players>2</players>
</game>

nope (I know the description and name field has Japan in this one example, but this is totally not consistent - only for games that have revisions or alts, not games that are Japan exclusive)

Mame XML??

Code: [Select]
<game name="1944">
<description>1944: The Loop Master (US 000620)</description>
<year>2000</year>
<manufacturer>Capcom, supported by Eighting/Raizing</manufacturer>
<category>Shooter / Flying Vertical</category>
<nplayers>Shooter / Flying Vertical</nplayers>
<verAdded>.66</verAdded>
<controls_info>numPlayers="2" alternating="0" mirrored="1" usesService="0" tilt="0" cocktail="0"</controls_info>
<player number="1" numButtons="2">
<controls>
<control name="8-way Joystick">
<constant name="joy8way"/>
</control>
</controls>
<labels>
<label name="P1_BUTTON1" value="Shoot"/>
<label name="P1_BUTTON2" value="Bomb"/>
<label name="P1_JOYSTICK_UP" value="Up"/>
<label name="P1_JOYSTICK_DOWN" value="Down"/>
<label name="P1_JOYSTICK_LEFT" value="Left"/>
<label name="P1_JOYSTICK_RIGHT" value="Right"/>
</labels>
</player>
<rom name="nffu.03" size="524288" crc="9693cf8f" sha1="c296cb008e282f77b44374d1c3638a3f4d5d5d4e" region="cpu1" offset="0"/>
<rom name="nff.04" size="524288" crc="dba1c66e" sha1="4764e77d4da5d19d9acded27df1e1bcba06b0fcf" region="cpu1" offset="80000"/>
<rom name="nffu.05" size="524288" crc="ea813eb7" sha1="34e0175a5f22d08c3538369b4bfd077a7427a128" region="cpu1" offset="100000"/>
<rom name="nffux.03" size="524288" crc="675c8109" sha1="ab9756dc81c231e75050f22c8cdd3759a592bbe1" region="user1" offset="0"/>
<rom name="nff.13" size="4194304" crc="c9fca741" sha1="1781d4fc18b6d6f79b7b39d9bcace750fb61a5cf" region="gfx1" offset="0"/>
<rom name="nff.15" size="4194304" crc="f809d898" sha1="a0b6af49e1780678d808c317b875161cedddb314" region="gfx1" offset="2"/>
<rom name="nff.17" size="4194304" crc="15ba4507" sha1="bed6a82bf1dc1aa501d4c2d098115a15e18d446a" region="gfx1" offset="4"/>
<rom name="nff.19" size="4194304" crc="3dd41b8c" sha1="676078baad789e25f6e5a79de29672587be7ff00" region="gfx1" offset="6"/>
<rom name="nff.14" size="1048576" crc="3fe3a54b" sha1="0a8e5cae141d24fd8b3cb11796c44728b0acd69e" region="gfx1" offset="1000000"/>
<rom name="nff.16" size="1048576" crc="565cd231" sha1="0aecd433fb4ca2de1aca9fbb1e314fb1f6979321" region="gfx1" offset="1000002"/>
<rom name="nff.18" size="1048576" crc="63ca5988" sha1="30137fa77573c84bcc24570bccb7dba61ddb413c" region="gfx1" offset="1000004"/>
<rom name="nff.20" size="1048576" crc="21eb8f3b" sha1="efa69f19a958047dd91a294c88857ed3133fcbef" region="gfx1" offset="1000006"/>
<rom name="nff.01" size="131072" crc="d2e44318" sha1="33e45f6fe9fed098a4c072b8c39406aef1a949b2" region="cpu2" offset="0"/>
<rom name="nff.11" size="4194304" crc="243e4e05" sha1="83281f7290ac105a3f9a7507cbc11317d45ba706" region="sound1" offset="0"/>
<rom name="nff.12" size="4194304" crc="4fcf1600" sha1="36f18c5d92b79433bdf7088b29a244708929d48e" region="sound1" offset="400000"/>
<chip type="cpu" name="68000" clock="11800000"/>
<chip type="cpu" name="Z80" clock="8000000"/>
<chip type="audio" name="QSound" clock="4000000"/>
<video screen="raster" orientation="horizontal" width="384" height="224" aspectx="4" aspecty="3" refresh="59.633331"/>
<sound channels="2"/>
<input players="2" control="joy8way" buttons="2" coins="2" service="yes"/>
<driver status="good" color="good" sound="good" palettesize="4096"/>
</game>
<game name="19xx">
<description>19XX: The War Against Destiny (US 951207)</description>
<year>1996</year>
<manufacturer>Capcom</manufacturer>
<category>Shooter / Flying Vertical</category>
<nplayers>Shooter / Flying Vertical</nplayers>
<verAdded>.37b13</verAdded>
<controls_info>numPlayers="2" alternating="0" mirrored="1" usesService="0" tilt="0" cocktail="0"</controls_info>
<player number="1" numButtons="2">
<controls>
<control name="8-way Joystick">
<constant name="joy8way"/>
</control>
</controls>
<labels>
<label name="P1_BUTTON1" value="Shoot"/>
<label name="P1_BUTTON2" value="Bomb"/>
<label name="P1_JOYSTICK_UP" value="Up"/>
<label name="P1_JOYSTICK_DOWN" value="Down"/>
<label name="P1_JOYSTICK_LEFT" value="Left"/>
<label name="P1_JOYSTICK_RIGHT" value="Right"/>
</labels>
</player>
<rom name="19xu.03" size="524288" crc="05955268" sha1="d3b6b416f1f9eb1c1cbca6647630d1155647082d" region="cpu1" offset="0"/>
<rom name="19xu.04" size="524288" crc="3111ab7f" sha1="8bbce20ae7ba47949f4939b2f35014fb6decd283" region="cpu1" offset="80000"/>
<rom name="19xu.05" size="524288" crc="38df4a63" sha1="1303f7ab6296f1454907a24d64878bdbd1ef88a7" region="cpu1" offset="100000"/>
<rom name="19xu.06" size="524288" crc="5c7e60d3" sha1="26bf0936962051be871d7a7776cf78abfca5b5ee" region="cpu1" offset="180000"/>
<rom name="19x.07" size="524288" crc="61c0296c" sha1="9e225beccffd14bb53a32f8c0f2aef7f331dae30" region="cpu1" offset="200000"/>
<rom name="19xux.03" size="524288" crc="239a08ae" sha1="a57e5a0cef351485569cf5c3c79ca0cc7ce439cf" region="user1" offset="0"/>
<rom name="19xux.04" size="524288" crc="c13a1072" sha1="e5c1c85cb77d69d5f43f8cfa6bcc894bd31e0b68" region="user1" offset="80000"/>
<rom name="19xux.05" size="524288" crc="8c066ec3" sha1="a540a773e1cb04a814feb4be8cf22b0eb3121cee" region="user1" offset="100000"/>
<rom name="19xux.06" size="524288" crc="4b1caeb9" sha1="8f965054e5b1c3f1dcaa20279a3348d63a94c1d6" region="user1" offset="180000"/>
<rom name="19x.13" size="524288" crc="427aeb18" sha1="901029b5423e4bda85f592735036c06b7d426680" region="gfx1" offset="0"/>
<rom name="19x.15" size="524288" crc="63bdbf54" sha1="9beb64ef0a8c92490848599d5d979bf42532609d" region="gfx1" offset="2"/>
<rom name="19x.17" size="524288" crc="2dfe18b5" sha1="8a44364d9af6b9e1664b44b9235dc172182c9eb8" region="gfx1" offset="4"/>
<rom name="19x.19" size="524288" crc="cbef9579" sha1="172413f220b242411218c7865e04014ec6417537" region="gfx1" offset="6"/>
<rom name="19x.14" size="2097152" crc="e916967c" sha1="3f937022166149a80585f91388de521055ca88ca" region="gfx1" offset="800000"/>
<rom name="19x.16" size="2097152" crc="6e75f3db" sha1="4e1c8466eaa612102d0807d2e8bf1004e97476ea" region="gfx1" offset="800002"/>
<rom name="19x.18" size="2097152" crc="2213e798" sha1="b1a9d5547f3f6c3ab59e8b761d224793c6ca33cb" region="gfx1" offset="800004"/>
<rom name="19x.20" size="2097152" crc="ab9d5b96" sha1="52b755da401fde90c13181b02ab33e5e4b2aa1f7" region="gfx1" offset="800006"/>
<rom name="19x.01" size="131072" crc="ef55195e" sha1="813f465f2d392f6abeadbf661c54cf51171fa006" region="cpu2" offset="0"/>
<rom name="19x.11" size="2097152" crc="d38beef3" sha1="134e961b926a97cca5e45d3558efb98f6f278e08" region="sound1" offset="0"/>
<rom name="19x.12" size="2097152" crc="d47c96e2" sha1="3c1b5563f8e7ee1c450b3592fcb319e928caec3c" region="sound1" offset="200000"/>
<chip type="cpu" name="68000" clock="11800000"/>
<chip type="cpu" name="Z80" clock="8000000"/>
<chip type="audio" name="QSound" clock="4000000"/>
<video screen="raster" orientation="vertical" width="224" height="384" aspectx="3" aspecty="4" refresh="59.633331"/>
<sound channels="2"/>
<input players="2" control="joy8way" buttons="2" coins="2" service="yes"/>
<driver status="good" color="good" sound="good" palettesize="4096"/>
</game>
<game name="280zzzap">
<description>Datsun 280 Zzzap</description>
<year>1976</year>
<manufacturer>Midway</manufacturer>
<category>Driving / 1st Person</category>
<nplayers>Driving / 1st Person</nplayers>
<verAdded>.31</verAdded>
<rom name="zzzaph" size="1024" crc="1fa86e1c" sha1="b9cf16eb037ada73631ed24297e9e3b3bf6ab3cd" region="cpu1" offset="0"/>
<rom name="zzzapg" size="1024" crc="9639bc6b" sha1="b2e2497e421e79a411d07ebf2eed2bb8dc227003" region="cpu1" offset="400"/>
<rom name="zzzapf" size="1024" crc="adc6ede1" sha1="206bf2575696c4b14437f3db37a215ba33211943" region="cpu1" offset="800"/>
<rom name="zzzape" size="1024" crc="472493d6" sha1="ae5cf4481ee4b78ca0d2f4d560d295e922aa04a7" region="cpu1" offset="c00"/>
<rom name="zzzapd" size="1024" crc="4c240ee1" sha1="972475f80253bb0d24773a10aec26a12f28e7c23" region="cpu1" offset="1000"/>
<rom name="zzzapc" size="1024" crc="6e85aeaf" sha1="ffa6bb84ef1f7c2d72fd26c24bd33aa014aeab7e" region="cpu1" offset="1400"/>
<chip type="cpu" name="8080" clock="2000000"/>
<video screen="raster" orientation="horizontal" width="256" height="224" aspectx="4" aspecty="3" refresh="60.000000"/>
<sound channels="0"/>
<input players="1" control="paddle" buttons="2" coins="1"/>
<dipswitch name="Coinage">
<dipvalue name="2 Coins/1 Credit"/>
<dipvalue name="1 Coin/1 Credit" default="yes"/>
<dipvalue name="2 Coins/3 Credits"/>
<dipvalue name="1 Coin/3 Credits"/>
</dipswitch>
<dipswitch name="Time">
<dipvalue name="60"/>
<dipvalue name="80" default="yes"/>
<dipvalue name="99"/>
<dipvalue name="Test Mode"/>
</dipswitch>
<dipswitch name="Extended Time">
<dipvalue name="Score >= 2.5" default="yes"/>
<dipvalue name="Score >= 2"/>
<dipvalue name="None"/>
</dipswitch>
<dipswitch name="Language">
<dipvalue name="English" default="yes"/>
<dipvalue name="German"/>
<dipvalue name="French"/>
<dipvalue name="Spanish"/>
</dipswitch>
<driver status="good" color="good" sound="preliminary" palettesize="2"/>
</game>

Oh my god, so much info, but none of it the country!

So how do you sort your arcade machines by country?
My horrible  solution

I use a program called LightSpeed Mamelister. It can output attractmode front end files, and it includes all sorts of weird additional info, including region.


Once you have done this, export it as an XML file and region will be filled in. You can also use the program to select a region or whatever and make an attractmode.txt file if you want to make a display that's just Japan or USA or World, etc.

I use filters so I


My question to you, friend

Is there an easier way???
Title: Re: Sorting Arcade games by Region or Country using the Filter.
Post by: Joelf on May 03, 2017, 11:08:05 PM
Easier:. Make the romlister spit out names only, make it into a tag list and filter using that.
Title: Re: Sorting Arcade games by Region or Country using the Filter.
Post by: progets on May 04, 2017, 12:54:41 AM
Tag files are the way to go for that and the least amount of work.

I use a program called romlister (https://www.waste.org/~winkles/ROMLister/ (https://www.waste.org/~winkles/ROMLister/)) which does similar things as lightppeed and it can output the filtering into text files with just the rom name without the extension. These can simply be renamed into .tag files.

Here's some more links to filtering if you're interested:
http://forum.attractmode.org/index.php?topic=1563.msg11120#msg11120 (http://forum.attractmode.org/index.php?topic=1563.msg11120#msg11120)
http://forum.attractmode.org/index.php?topic=1165.msg8455#msg8455 (http://forum.attractmode.org/index.php?topic=1165.msg8455#msg8455)

Title: Re: Sorting Arcade games by Region or Country using the Filter.
Post by: Joelf on May 04, 2017, 01:25:31 PM
Romlister and lightspeed are similar. I didn't realize romlister collected and presented country info too.

Definitely, making your lister spit out a list of rom names, and saving as a .tag is a lot easier than adding a country it to the text file. The nice thing about tag files is you don't even have to narrow it down by your collection. Just make a tag file for all Japanese, US, Europe or World games and have AM do all the comparisons against what roms you own. 

If your romlister can't pop out a list of rom names, you can use regex to delete everything but the names by searching for a new line, and any characters up to the an unescaped semicolon, and replace it with a new line.
Title: Re: Sorting Arcade games by Region or Country using the Filter.
Post by: progets on May 05, 2017, 01:13:47 AM
Romlister can output in 100% correct text files for .tag files. That's why I mentioned it.