config

The config.yml file defines how ROMSearch will do the run. As such, it has quite a number of options.

As a note on includes, this will match something from the start of the string. So “Game Title VII” would include “Game Title VII”, “Game Title VIII”, but not “Game Title Anthology - Game Title VII”, for example.

Syntax:

dirs:
  raw_dir: [raw_dir]                # Raw directory to download ROM files using ROMDownloader
  rom_dir: [rom_dir]                # Final output directory for ROMs. Will automatically subdivide by platform
  patch_dir: [patch_dir]            # Directory for patch files. Will divide up by game
  compress_dir: [patch_dir]         # Directory for compressed files. Will subdivide by platform
  ra_hash_dir: [ra_hash_dir]        # Directory for parsed RA platform hashes
  dat_dir: [dat_dir]                # Directory to place raw .dat files
  mapped_dat_dir: [mapped_dat_dir]  # Directory to place old .dat files to compare against
  parsed_dat_dir: [parsed_dat_dir]  # Directory to place parsed .dat files, as well as clonelists
  dupe_dir: [dupe_dir]              # Directory to place dupe files
  log_dir: [log_dir]                # Directory to place logs
  cache_dir: [cache_dir]            # Directory to place cache files

platforms:                          # List of platforms to download ROMs for
  - [platform]

region_preferences:                 # List of regions, in preference order
  - [most_preferred_region]
  - [next_preferred_region]

language_preferences:               # List of languages, in preference order
  - [most_preferred_language]
  - [next_preferred_language]

include_games:                      # OPTIONAL. Use this to trim down the number of ROMs downloaded
  [platform]:
    - [game]

romsearch:                          # ROMSearch specific options
  method: 'filter_then_download'    # OPTIONAL. Method to use, option are 'filter_then_download', or
                                    #           'download_then_filter'. Defaults to 'filter_then_download'
  separate_directories: false       # OPTIONAL. If false, then ROMs will be moved to a flattened directory structure
                                    #           (all ROMs in one directory). If true, will separate ROMs out based
                                    #           on their short names. Defaults to false
  handle_multi_discs: false         # OPTIONAL. Whether to group multi-disc games into a single .m3u file. Defaults
                                    #           to false
  run_romdownloader: true           # OPTIONAL. Whether to run ROMDownloader. Defaults to true
  run_rahasher: false               # OPTIONAL. Whether to run RAHasher. Defaults to false
  run_datparser: true               # OPTIONAL. Whether to run DATParser. Defaults to true
  run_datmapper: false              # OPTIONAL. Whether to run DATMapper. Defaults to false
  run_dupeparser: true              # OPTIONAL. Whether to run DupeParsed. Defaults to true
  run_romchooser: true              # OPTIONAL. Whether to run ROMChooser. Defaults to true
  run_rompatcher: false             # OPTIONAL. Whether to run ROMPatcher. Defaults to false
  run_rommover: true                # OPTIONAL. Whether to run ROMMover. Defaults to true
  dry_run: false                    # OPTIONAL. Set to true to not make any changes to filesystem. Defaults to false

romdownloader:                      # ROMDownloader specific options
  dry_run: false                    # OPTIONAL. Set to true to not make any changes to filesystem. Defaults to false
  remote_name: 'rclone_remote'      # Rclone remote name
  use_absolute_url: false           # OPTIONAL. If true, will assume the path is an absolute URL for the rclone
                                    #           remote. Set to false if using an HTTP remote!
  sync_all: false                   # OPTIONAL. If true, will download everything that rclone finds. Set to false to
                                    #           use the include_games above

rahasher:                           # RAHasher specific options
  username: "user"                  # RA username
  api_key: "1234567890abcde"        # RA API key
  cache_period: 1                   # Cache period for GameList in days. Since this is a heavy API operation, RA
                                    # suggests caching this aggressively. Defaults to 1

dupeparser:                         # DupeParser specific options
  use_retool: true                  # OPTIONAL. Whether to use retool clonelists or not. Defaults to true

gamefinder:                         # GameFinder specific options
  filter_dupes: true                # OPTIONAL. Whether to filter dupes or not. Defaults to true

romparser:                          # ROMParser specific options
  use_filename: true                # OPTIONAL. Whether to parse properties from filename. Defaults to true
  use_dat: true                     # OPTIONAL. Whether to parse properties from .dat files. Defaults to true
  use_retool: true                  # OPTIONAL. Whether to parse properties from retool files. Defaults to true
  use_ra_hashes: false              # OPTIONAL. Whether to parse achievements from RA. Defaults to false

romchooser:                         # ROMChooser specific options
  dry_run: false                    # OPTIONAL. Set to true to not make any changes to filesystem. Defaults to false
  exclude_modern: false             # OPTIONAL. If true, will not include ROMs flagged as modern versions in the
                                                selection. Defaults to false
  use_best_version: true            # OPTIONAL. Whether to choose only what ROMChooser decides is the best version.
                                    #           Defaults to true
  filter_regions: true              # OPTIONAL. Whether to filter by region or not. Defaults to true
  filter_languages: true            # OPTIONAL. Whether to filter by language or not. Defaults to true
  bool_filters: "all_but_games"     # OPTIONAL. Can filter out non-games by various dat categories. If you want to
                                    #           include e.g. just games and applications, set to
                                    #           ['games', 'applications']. Defaults to 'all_but_games', which will
                                    #           remove everything except games

rommover:                                  # ROMPatcher specific options
  use_es_friendly_names                    # Whether to use ES-DE friendly names for the output folders

rompatcher:                                # ROMPatcher specific options
  xdelta_path: [path_to_xdelta]            # OPTIONAL. This is where xdelta is located on your filesystem
  rompatcher_js_path: [path_to_rompatcher] # OPTIONAL. This is where RomPatcher.js is located on your filesystem

romcompressor:                             # ROMCompressor specific options
  chdman_path: [path_to_chdman]            # OPTIONAL. This is where chdman.exe is located on your filesystem

discord:                            # OPTIONAL. If defined, supply a webhook URL so that ROMSearch can post Discord
  webhook_url: [webhook_url]        #           notifications

logger:
  level: info                       # OPTIONAL. If defined, can set the log level to be printed to terminal and
                                    #           logs

Sample

dirs:
  raw_dir: F:/Emulation/raw
  rom_dir: F:/Emulation/ROMs
  patch_dir: F:/Emulation/romsearch/patches
  ra_hash_dir: F:/Emulation/romsearch/ra_hash
  dat_dir: F:/Emulation/romsearch/dats
  parsed_dat_dir: F:/Emulation/romsearch/dats_parsed
  dupe_dir: F:/Emulation/romsearch/dupes
  cache_dir: F:/Emulation/romsearch/cache
  log_dir: F:/Emulation/romsearch/logs

platforms:
  - Nintendo - Super Nintendo Entertainment System

region_preferences:
  - USA

language_preferences:
  - English

include_games:
  SNES:
    - "Chrono Trigger"

romsearch:
  method: filter_then_download
  handle_multi_discs: false
  run_romdownloader: true
  run_rahasher: true
  run_datparser: true
  run_dupeparser: true
  run_romchooser: true
  run_rompatcher: true
  run_rommover: true
  dry_run: false

romdownloader:
  remote_name: 'rclone_remote'
  sync_all: true
  use_absolute_url: false
  dry_run: false

dupeparser:
  use_retool: true

gamefinder:
  filter_dupes: true

romparser:
  use_dat: true
  use_retool: true
  use_ra_hashes: true
  use_filename: true

romchooser:
  use_best_version: true
  exclude_modern: false
  filter_regions: true
  filter_languages: true
  dry_run: false
  dat_filters:
    - add-ons
    - applications
    - audio
    - bad_dumps
    - console
    - bonus_discs
    - coverdiscs
    - demos
    - educational
    - manuals
    - multimedia
    - pirate
    - preproduction
    - promotional
    - unlicensed
    - video

rahasher:
  username: "user"
  api_key: "1234567890abcde"
  cache_period: 1

rompatcher:
  xdelta_path: F:/Emulation/xdelta3-3.1.0-x86_64.exe
  rompatcher_js_path: F:\Emulation\RomPatcher.js\index.js

discord:
  webhook_url: "https://discord.com/api/webhooks/discord_url"

logger:
  level: info