====== DAT Rules ====== DAT rules allow you to define locations for your ROMs and settings for how you want those ROMs stored. These settings offer a lot of flexibility and control over your collection. To get the most value out of RomVault its best to spend time understanding exactly what options are available and how they work. The RomVault UI will allow you map multiple DATs to a single directory. Do NOT map multiple DATs to the same ROM directory. Doing so may result in unintentional file deletions during a fix operation if the "[[global_settings#double_check_delete|Double Check Delete]]" global setting is disabled. Directory rules can only be applied to standard directories, not auto-created virtual directories in the DatRoot. If you place multiple DATs into a single directory, you cannot apply a rule to an individual DAT within that directory. If you need to apply a directory rule to a specific DAT, then the DAT should reside in its own directory in the DatRoot. The directory settings can be accessed in two ways: * From the top menu: **Settings > Directory Settings**. \\ This view displays all of your directory rules in a single place. {{:settings:directory-settings.png?nolink&600|}} \\ * Right-clicking a directory in the tree and selecting **Set Dir Settings**. \\ This view displays only the directory rule for the directory selected. {{:settings:directory-rule.png?nolink&600 |}} \\ ----- ===== Rule Path and Directory Location ===== \\ {{:settings:directory-paths.png?nolink&600 |}} \\ \\ ==== Rule Path ==== This field is for reference and is not editable. The root of your entire setup is always called "RomVault". "RomVault" is mapped to where ever you keep all of your ROMs. This may not seem intuitive at first, but this mapping ensures that the path references to your ROMs are stored in a relative fashion in the cache. For example, lets say you start by storing all your ROMs at ''C:\ROMs\''. At some point in the future you may run out of space on ''C:\'' and you need to move your ROMs to a NAS accessed with a mapped network drive of ''Y:\''. You can make this change to the RomRoot location without needing to rescan all of your ROMs. ==== Dir Location ==== The Dir Location is the path to your ROMs. The folder icon allows you to choose the location by browsing. The ROM locations can be modified directly in the RomVault config XML. This should not be required unless you want to use the long path syntax or reference a remote server. Examples: * ''Y:\ROMs\'' * ''\\?\Y:\ROMs\'' * ''%%\\%%Server\Share\'' * ''\\?\UNC\Server\Share\'' ----- ===== Directory / Merge Rules ===== \\ {{:settings:directory-rule-main.png?nolink&600 |}} \\ \\ ==== Don't Auto Add DAT Directories ==== If two or more DATs share a directory in the DATRoot then RomVault will automatically create a virtual subdirectory for each DAT so they don't conflict with each other. If the "Don't Auto Add DAT Directories" option is __enabled__ then these directories will not be automatically created and the contents of the DATs will be effectively merged together. The result is that all of your ROMs from these DATs will be placed in the same directory. Because this option causes DATs to be merged its likely you may encounter a DAT merge conflict if used haphazardly. This option is only useful under very specific circumstances. ==== Archive Type ==== This option allows you to specify your preferred way packaging your ROMs. Options include: * **File** - Sets will be stored uncompressed * **Zip** - Sets will be .zip archives * **SevenZip** - Sets will be .7z archives If a DAT explicitly specifies a forced packing type in its header then that will be used. The **Override DAT** option allows you to override that specification and use your preferred settings instead. ==== Merge Type ==== This option allows you to specify your preferred way of merging your ROMs. This is primarily used for MAME DATs. Options include: * **Nothing** - No preference, generally used for non-MAME sets where merging does not apply * **Split** - A split set is one where the parent set contains all of the normal data it should, and the clone sets contain only what has changed as compared to the parent set. This saves some space, but isn’t quite as efficient as a merged set. * **Merged** - A merged set takes the parent set and one or more clone sets and puts them all inside the parent set’s storage. * **NonMerged** - A non-merged set is one that contains everything necessary for a given game to run in one ZIP file. The non-merged set is great for people that for instance create their own arcade cabinets and want to copy only very specific games to their PC/Rapsberry/Other. If a DAT explicitly specifies a forced merging type in its header then that will be used. The **Override DAT** option allows you to override that specification and use your preferred settings instead. For more information, refer to the [[merge_types|Merge Types]] guide. ==== ROM/CHD Filter ==== This option allows you to specify what types of files to allow. This is primarily used for MAME DATs. Options include: * **ROMs & CHDs** - Both ROMs and CHDs will be included. This option should be used in most cases. * **ROMs Only** - Only ROMs will be included. This is useful if you prefer to use MAME's listxml output as a DAT and only want to include ROMs. * **CHDs Only** - Only CHDs will be included. This is useful if you prefer to use MAME's listxml output as a DAT and only want to include CHDs. ==== Header Type ==== This option allows you to specify how you want to handle ROM headers. * **Optional** - Both headered and headerless ROMs will be allowed if a header skipper is declared in the DAT. * **Headered** - Only ROMs with headers will be included. * **Headerless** - Only ROMs without headers will be included. The "Headered" setting applies to all files in the DAT, even files where a header would not apply such as BIOS files. This means you may have missing ROMs if the DAT includes both types of files. This is normal and currently by design. ==== Single Archive ==== Enabling this option will turn the DATs in these directories into single archives. If enabled, this option allows you to specify how to handle subdirectories. The options are: * **Add SubDirs** * **No SubDirs** * **Add SubDirs if conflicts** * **Add SubDirs if multiple roms** This setting is extremely powerful and enables you to build a collection to match TOSEC torrents. It can also be used to create uncompressed sets without requiring subdirectories. The Single Archive subdirectory settings are outlined in more detail here: [[subdirs|Single Archive Options]] ==== Use description (instead of name) for auto added paths ==== If two or more DATs share a directory in the DATRoot then RomVault will automatically create a virtual subdirectory for each DAT so they don't conflict with each other. If the "Use description (instead of name) for auto added paths" option is __disabled__ then these subdirectories will be named as follows: * The value of the '''' tag in the DAT header * If no '''' tag is present, then the DAT filename will be used If the "Use description (instead of name) for auto added paths" option is __enabled__ then these subdirectories will be named as follows: * The value of '''' tag in the DAT header * If no '''' tag exists, then the value of the tag is used * If no '''' tag exists, then the DAT filename will be used ----- ===== Advanced Options ===== \\ {{:settings:directory-rule-advanced.png?nolink&600 |}} \\ \\ ==== Use ID for Numbered DAT Names (No-Intro DATs) ==== This option will prefix the set name with the value of the id attribute in the DAT. This is typically only applicable for No-Intro DATs that have release numbers. ==== Only Keep Complete Sets ==== This option will prevent incomplete sets. This is useful when you only want to collect a subset of games in DAT or you want to ensure everything you collect has all files for playability in a frontend. ----- ===== Filename Exclude ===== \\ {{:settings:directory-rule-exclude.png?nolink&600 |}} \\ ==== Filenames not to remove ==== This setting allows you to specify rules for files to ignore. Any ignored files are still scanned by RomVault, but they are flagged with an "ignore" status and will not be removed due to being unneeded according to the DAT. This setting is useful for ignoring a specific filenames or matching on patterns using wildcards or regex. Some examples include: ^Match Mode^Example^Description^ |Exact|''_readme_.txt''|Ignores the file named exactly ''_readme_.txt''| |Wildcard|''*.sbi''|Ignores all .sbi files which are sometimes packaged with PS1 dumps| |Regex|''regex:(\.stignore|\.stfolder)''|Ignores .stfolder and .stignore files which may be present if you sync a directory with syncthing to another location| Each ignore rule must be on its own line. Wildcard rules support ''?'' to match a single character and ''*'' to match any number of characters. Regex rules must be prefixed with ''regex:'' For assistance with regex, try [[https://regex101.com/|regex101.com]] ----- \\ ===== Cascading Directory Rules ===== Settings for a directory will cascade to all of that directory's descendants until overwritten by a higher priority rule. Rules for descendant directories are always a higher priority than the rules for ancestor directories. Individual directory settings of descendants are not "merged" with the settings of their ancestors. All directory rules are complete overrides. These cascading rules allow for a great deal of control over your ROM storage strategy. For example, you can apply settings at the root level that you would like to apply to all directories, and then override those settings on a case by case basis for certain DATs. {{:diagrams:directory-rule-cascade.png?nolink|}} The example above shows that ''**Sony - PlayStation**'' inherits the directory rule for ''**RomVault**'' (the root level). ''**MAME**'' and ''**Microsoft - Xbox**'' do not inherit because those directories have their own settings. If ''**Redump**'' had its own directory rule, then ''**Sony - PlayStation**'' would inherit that rule instead of the rule from ''**RomVault**''. ===== Video Tutorial ===== {{youtube>IdHdIopxNDU?full}}