EMULAB Forum

clrmamepro [English] => clrmame Discussion => Topic started by: Roman on 27 March 2009, 11:09

Title: Hints and Tricks - 1000 things you always wanted to know....
Post by: Roman on 27 March 2009, 11:09
Well...starting a new ongoing discussion here where I add some things you might never discovered in clrmamepro or just some small tricks. Don't ask me how regular I will post things here...we'll see...

I keep it sticky and lock it to keep the structure and overview...if you have questions, feel free to start a new thread.
Title: #0001 - Set / Rom ratio
Post by: Roman on 27 March 2009, 11:16
If you're collecting for example MAME roms and the belonging MAME artwork files (icons, snapshots, etc), you notice that there are differences in the way the sets in the belonging datfiles are organized.

On the one hand you have thousand of sets with some roms in it, on the other hand you got one set containing thousand of roms.

So what's the impact on clrmamepro?

Well..both methods work, however the 1 set / 1000 roms method has an impact on scanner fixing speed. If such a set has lots of changes (new files, some renames, several resized etc), it can take very long(!) to fix that single set. The reason is obvious. The scanner will do most fixes in a queue...so it works over and over again on one single but content-wise huge zipfile.

The best solution in this case would be to rebuild the set instead of using the scanner. The rebuilder will fix wrong names, removes unneeded files for free. After that you can use the rebuilder again to add new stuff. This is much faster.

Good examples are updates on e.g. the MAME Titles, Icons, Snapshot sets.

So a rule to keep in mind: Lots of Sets with only some (< 1000) roms use the Scanner, otherwise use the rebuilder for updating.
Title: #0002 - Set Information Button
Post by: Roman on 27 March 2009, 11:27
"Where the hell is the Set Information Button"....a typical question...and I really wonder if I hide it too well.

(Image will be uploaded later)

It's in the scan results window (the one with the tree control showing your issues) on the bottom left. The button brings you to the set information where you can see all kind of information about the sets. The roms with hashes, you can enable/disable sets there (e.g. by using regular expressions, using variables like %m=*namco* to enable only namco games), you can search for crc32 etc...etc...
Title: #0003 - Multiple Instances of clrmamepro
Post by: Roman on 27 March 2009, 12:18
Can I run multiple instances of clrmamepro?

Yes. Checkout cmpro.ini and edit the following line
Adv_AllowRestart = on

Do I have to care about anything?

Well....yes...The temporary folder (which is used sometimes during fixing) is cleaned on startup of each instances...so you better start a new session when no scan operation takes place. Also keep in mind that if you're running multiple instances you shouldn't use the same profile (which doesn't really makes sense but is theoretically possible) since they would interfear each other. That's pretty it.
Title: #0004 - I don't want XML datfiles
Post by: Roman on 27 March 2009, 12:20
You don't want XML datfiles? Why? XML is powerful, you can do much more interesting things (like transforming it via xslt) with it as with the old -listinfo format. Really...you should change to XML.
...but anyway, if the SetInformation->Export button (and I think fix-dats) should create an old style formatted datfile you can enter cmpro.ini and set:
Adv_DatFormatXML = off
Title: #0005 - Quick switching Scanner / Rebuilder
Post by: Roman on 27 March 2009, 12:22
You can quickly switch between the rebuilder by pressing Alt-2 (from Scanner to Rebuilder) and Alt-1 (from Rebuilder to Scanner. You can also use the little radio buttons at the dialogs bottom right corner.
Title: #0006 - Missing / Have List
Post by: Roman on 27 March 2009, 12:38
People are not aware of what the missing / have lists do.

They only do a quick setname look up. Nothing else. If e.g. set 'pacman' is in the database, the miss/have list only checks each rompath if either a archive file pacman(.rar/.7z/.zip) or a subfolder pacman is in there. Nothing else...it doesn't look into the files.

So, these lists aren't accurate at all.

You should always do a scan with all check options to get a valid output. After that, you may want to use the list options for some file generation....Personally, I'd like to remove these buttons completely but there seem to be still some users who wants to use them.....no problem...as long as they understood what they do.
Title: #0007 - Hide / Show issues
Post by: Roman on 30 March 2009, 17:45
Instead of only scanning for some issues, you should always keep all check options enabled. After a (new)scan you can always toggle the check options to update the issue tree. If you're not interested in unneeded messages, simply toggle unneeded and the tree will be rebuilt without any unneeded items. Not interested in roms? No problem...toggle roms and rom messages are shown/hidden.
Title: #0008 - Hide / Show issues
Post by: Roman on 30 March 2009, 22:28
Ever scanned empty MAME rompaths and wondered about the stats?

Missing
?Sets                 7944/7986
?Roms                 78276/116904
?CHDs                 289/374
?Samples              2178/2178
?Bytes                41gb/64gb

Empty paths but the count ain't 100/100?

Well, the reason for this are mainly nodumps. Nodumps are 'not dumped' ICs which appear in the database with a given size but no hash information. The total values count them (to match the MAME output) while they aren't handled as missing. That's why you don't see 100/100. Similar for CHDs...there are still a lot laserdisk chds which are listed as nodumps.
Title: #0009 - The about dialog
Post by: Roman on 31 March 2009, 17:27
Wondered what the dialog window is all about...well..sure..it shows the version, got buttons to write an email, visit the homepage etc....but there is more...

drag'n drop an (archive (7z/rar/7z)) file into it....you will see what happens...:)


There is also a popup menu in this dialog to change the style of the buttons plus some more...you can also scan folders for a given crc32....
Title: #0010 - Your own customized statistics
Post by: Roman on 01 April 2009, 17:51
Have a look at stats.ini file. This is the default textfile which holds the captions and placeholders for the statistics window which appears optionally after a scan.
You don't like the layout, well, feel free and change it. The placeholder variables are pretty much recognizeable by the captions.

You shouldn't change stats.ini itself, instead create stats01.ini (..02.ini, ..., 10.ini). The highest number will be used. Why not changing stats.ini itself? Well, because when you update to a new version, stats.ini will be replaced again.
Title: #0011 - Missing sets (chd-only sets)
Post by: Roman on 03 April 2009, 18:08
Some people wonder why e.g. CD32 sets are listed as missing sets when they don't have the chd.
Well, these sets are chd-only sets, i.e. the only have a chd (plus separated bios files).
As long as you scan for 'Sets' and don't have the chd, the set will be listed as missing. It's not recommended to turn off 'sets'. An easier way is to fool cmpro a bit. You can simply add empty setsubfolders for the sets in question (as you normally do to put a chd file in it). The the 'sets' scan won't report any issue anymore...however an enabled chd check will of course list the missing chd.
Title: #0012 - Download roms
Post by: Roman on 06 April 2009, 11:55
Downloading roms? Sounds a bit hmm...well...something to discuss...
Anyway, clrmamepro got some mechanism to download files and let them automatically rebuilt them to your collection. What is needed:

1) urls.ini
2) a download folder

1) In urls.ini (or better use urls01.ini ...urls10.ini to avoid overwriting your changes with the next update), you can define a site alias, a pre and a post string. Let's have a look at the official urls.ini which lists an entry for MAWS and CAESAR:

CAESAR; http://caesar.logiqx.com/html/emus/multi/mame/; .shtml

There are three parts separated by ;. First one is an alias (which will be shown later in the frontend), a pre (http:....) and a post string (.shtml).

So what does this pre/post string stuff do?
In the scan results popup menu you got the menu items WWW Open. Via "Set URL" you can select one of the alias names. If you selected a missing set you will also see something like 'Open <setname> @ <alias". clrmamepro will build an url by taking the prestring + setname + poststring. As an example if you selected "puckman", it will open http://caesar.logiqx.com/html/emus/multi/mame/puckman.shtml
In this example it will open the

Now to the downloading....in the same menu you also see download options to actually download the constructed url. There are also options to rebuild the downloaded files automatically afterwards.

2) download folder: In settings you can define a download folder root path. This path (your_root\profile_name) is used for these download operations.

A good example for downloading files is for Mr Do's artwork collection. Add an entry in urls01.ini like this:

MrDo; http://www.arcadeflyers.com/artwork/; .zip

....and you can download the missing artwork files without the need to visit his page and grab the files manually. (However you should visit his page since he's doing a great job).


For "Download" ftp and http urls are allowed...for "Open" operations everything your system allows...
Title: #0013 - rebuilding prestrings
Post by: Roman on 09 April 2009, 08:33
Let's open up the rebuilder advanced dialog. At its bottom you see a 'Dest. prestring' check and editbox. So what's this all about?

In general, the rebuilder takes any file (or file in archive) from the source, matches it against the database (hash + size compare) and creates all instances at the destination.

To keep it simple (and ignore system-default-paths for now), the file is created the usual way:
destination_path\set_name\rom_name (where set_name can also be an archive...).

No back to that advanced rebuilder option. With the destination prestring, the creation path changes slightly:
destination_path\<prestring>set_name\rom_name.

So you got the chance to modify the setname. You can also use "\" in the prestring which results in folders. You can also use variables (e.g. %m = manufacturer) as prestring. The variables are listed as tooltip of the prestring edit box.

An example: Let's assume your rebuilder destination is "d:\temp\" and you want to rebuild some MAME files to folders specifying the year and then the manufacturer.
As destination prestring you enter:

%y\%m\

so you get something like:

d:\temp\1985\capcom\commando.zip
d:\temp\1987\[Seibu Kaihatsu] (Taito license)\cshooter.zip
d:\temp\1987\capcom\1943.zip


The %A, %a, %Z, %z variables can be used to sort sets by their first character/number.
Title: #0014 - system default paths and systems
Post by: Roman on 15 April 2009, 18:08
System Default Paths are a way to split up sets by 'bios' usage.

So for example you want to keep your Playchoice10 sets in a different folder than neogeo ones.
In MAME you got roughly 43 different systems and of course a huge amout of sets which don't use a bios at all. These non-bios ones are collected as system 'Standard'.

In clrmamepro you can define a path on our harddisk for each of the systems. Open the 'Systems' dialog which is accessible in Scanner, Rebuilder or Merger. You will see a list of BIOS Descriptions, setname and an assigned path. By double-clicking this last column you can browse a path.

System Default Paths are not necessarily rompaths. In most cases they match your rompaths though.

Hitting Auto-Detect SysDefPaths will try to find the best-fitting rompath name for the system default paths.

Move Sets will run through your rompaths and moves the sets to their belonging system default paths.

In front of the BIOS descriptions you also see a checkbox. Enabling/Disabling can be used to enable/disable all sets belonging to this BIOS/System, i.e. they are ignored during scanning/rebuilding/merging.


Rebuilding To Sytem-Default-Paths: Well, in rebuilder you can specify system-default path usage as rebuilder destination(s). So the rebuilder can split up your sets by systems.

Scanner: Well, in this case we talk about rompaths = system default paths. Now there's one thing to know: Fix-missing adds files and in case of system-default-paths usage you have to tell clrmamepro that you want to split up your sets by systems.

In the scanner advanced dialog you find 3 system default path options:

1) Detect Sets in Wrong SysDefaultPaths - this will list a warning about set xyz is in a wrong system default path. You have to manually move it to the correct one (or use the System->Move Sets button).

2) CHDs use SysDefault assignments - when a chd is wrong placed and moved to the correct place, you can use this option and clrmamepro will use the system-default-path information as new place

3) Use SysDefault paths for fix missing - the most important one for system default path usage. Fix missing got several rules to find the correct place to add found missing files. If you use system-default-paths, you have to enable this to get added files correctly placed.
Title: #0015 - chds in rompath root
Post by: Roman on 15 April 2009, 18:14
An - imo - ugly way to store chds is to keep the chd files themselves in a rompath root. Why ugly?

1) it's against the general MAME loading scheme of rompath\setname\file 1... n (rompath\setname.zip for compressed sets)

2) you don't have any connection to the set itself. In case the name matches the setname like area51.chd it's ok....but you normally don't know directly to which game 765uab02.chd belongs.

Some years back MAME allowed chds on root level...then it was fixed (it was defined as a bug). When MAME introduced the new chd 4 format lately, this storing method was reenabled.

In case you're using this (which I personally don't recommend) you have to tell clrmamepro so. In Scanner Advanced you will find an option to allow chds on rompath root level.
Title: #0016 - double roms
Post by: Roman on 15 April 2009, 18:26
MAME tries to name the files after their name and location of the original PCB. This can result in different filenames for identical files in different sets. If they don't share a parent/clone relationship this doesn't play a role. Now what happens when this happens within a parent/clone relationship.

By default, clrmamepro acts like this: different names - different roms.

So if you have something like:

pacman\rom1.bin      crc 0x12345678
pucmanjp\rom1jp.bin crc 0x12345678

within a parent clone relationship and you fully merge the sets you will have 2 files in there which are byte-wise identical.

A waste of disc space? Well...since MAME loads by crc/sha1, you don't actually need the files twice...MAME doesn't care about naming anyway....clrmame does. clrmame is strict. In days of terabyte HDs it's questionable if you really have to care about some bytes..

MAME itself added something to define that the files are identical. These are the so called merge-tags and they tell clrmamepro which 'alternative' name is also allowed:

rom name="mds-te_2b_a.bin" merge="mds-te.2b"

When clrmamepro uses this information it's not that strict anymore and detects if double roms can be avoided. By default usage of this tags is disabled. The reason for this is: I personally like the strict way better since each rom listed in the datfile can be found with the correct name in the sets and in the past merge tags were buggy in MAME's xml output.

You can enable the usage of the rom merge tags in profiler->options->Parse rom 'merge' tags.

By the way, disks (chds) also have merge tags...and surprisingly this option is enabled by default (otherwise you'd need some of the beatmania chds twice or even more...this *IS* a waste ;))
Title: #0017 - batcher
Post by: Roman on 28 April 2009, 20:10
Hmm...real life takes a lot of my time at the moment...so just a quick one here...which you most likely already know....

You're bored to scan lots of dats as dat by dat? Well...then use the batcher.
Simply load more than one profile in the profiler (select multiple items) and the batcher window appears with three tabs.

Generally you can scan them in a row plus optionally a rebuild run before each scan (first 2 tabs). The third tab is mostly for naming rules when new datfiles are loaded. Pretty self explaining I hope.

The batcher simply loads the profiles in a row, so the individual n-th profile options are active during the n-th profile run. The options you select in the batcher window overwrite them temporarily. For example your profile removes rebuilt source files and you select in the batch to not remove them, the files won't be removed during a batchrun but they do get removed during a normal run.
Title: #0018 - setformat.xml
Post by: Roman on 20 May 2009, 21:50
Ah...finally a new posting....As mentioned...I'm busy :)

Ok...setformat.xml.

what is it?

It's a xml file in the cmpro root folder.

What is it for?

Here you can define how a set list export should look like.

In Scanner's Popupmenu you find an entry "Export Set List" where you can export the selected set (or all..or completely missing ones etc) to a file or to clipboard. You can specify how the output should look like by selecting one of the export formats which are defined in the upper mentioned xml file.

So let's have a look at the file.

Besides some comments about variable usage, there are four default export formats listed. You see that you specify various attributes per format:

name = a unique name which is also shown in the popupmenu

pre = a prestring
post = a poststring
separator = a string used for separation
string = the actual string which should be exported (see variable list for details)

So what is pre/post/separator and string all about?
The exported data looks like this:

pre + string (for set 1) + separator + string (for set 2) + separator + ..... + post

So feel free to create your own export formats.
As known from other xml or ini files you can use setformat01.xml ... setformat10.xml to avoid any overwriting when updating cmpro.

Title: #0019 - rule #1
Post by: Roman on 09 July 2009, 07:28
Never ever disable the SETS option ;)

Why? Because you want to see unneeded files, folders, wrong named sets, wrong placed chds etc...
It enables a lot of checks for files in your rompaths (while roms/samples/chds look inside the files/archives in your rompaths). Spot the difference.
Title: #0020 - why limiting sets is not a good idea
Post by: Roman on 07 August 2009, 06:26
As you might know, you can use several filters in Scanner->Set Information to scan only *some* sets of a dat.
There are some reasons why this limiting is a good idea, but people should be aware of sideeffects:

A user wondered if there were sets removed from MAME 133 to 133u1.
After some discussion he mentioned that he only has some sets enabled.

Well, there's the answer to his problem. He did not scan all sets.
He did limit the known sets by disabling them (by only enabling some) in setinfo.
This means the 'new names' of u1 are unknown and so the wrong named sets are listed as unneeded.

Limiting sets is not a good idea anyway. Why do users want to limit them? Because they don't want to see 19247394714 missing set information if they only have 3 sets.

Solution: Keep all sets enabled!!! Hide fully missing set messages via Scanner->View (popupmenu)->Hide Fully Missing Sets.

Title: #0021 - Long folder/ path names
Post by: Roman on 08 December 2018, 08:27
Standard windows path length limit is something around 260 characters.
NTFS supports 32k, however to actually use them, you need to use a different rompath style, you need to prefix them with for example: \\?\e:\mame\roms\neogeo instead of just e:\mame\roms\neogeo

So if you already have a setup rompath where you picked a folder with the folder dialog, you can hit F2 to edit the path to add the pre-string \\?\ to it

Sometimes it's also needed to add the prefix to cmpro's temporary folder. For this, open cmpro.ini, search for CMPro_TempFolder and add the \\?\ to the path, so e.g. CMPro_TempFolder = \\?\E:\ClrMamePro\temp\