Skip to main content
After downloading DAT files, you need to process them to organize and prepare them for use with emulators and ROM managers. This guide covers the complete processing workflow.

Understanding DAT Processing

Processing transforms raw DAT files into an organized structure by:
  • Loading and validating DAT file contents
  • Applying filters to select specific DATs
  • Executing actions (copy, deduplicate, merge)
  • Saving to your configured destination
  • Updating the internal database

Basic Processing Workflow

1

Fetch DATs First

Ensure you have downloaded DATs before processing:
datoso redump --fetch
2

Process All DATs

Process all downloaded DATs from a seed:
datoso redump --process
This processes all DAT files from ~/.datoso/tmp/redump/dats/ and copies them to your configured destination.
3

Review Results

Datoso displays the status of each processed file:
==============================
Processing seed redump
------------------------------
Processed Sony - PlayStation.dat ['Created']
Processed Nintendo - GameCube.dat ['Updated']
Processed Sega - Dreamcast.dat ['Exists']
...
Finished processing redump

Filtering DATs

Use filters to process only specific DAT files by name pattern:
# Process only PlayStation DATs
datoso redump --process --filter PlayStation

# Process only Nintendo systems
datoso nointro --process --filter Nintendo

# Process only IBM PC DATs
datoso redump --process --filter "IBM"
The --filter parameter matches against the DAT filename, processing only files containing that string.

Combined Fetch and Process

Fetch and process in one command:
# Fetch then process all DATs
datoso redump --fetch --process

# Fetch then process with filter
datoso redump --fetch --process --filter Sony

Processing Actions

Datoso executes a series of actions when processing each DAT. The default action pipeline includes:

Standard Actions

  1. LoadDatFile - Loads and parses the DAT file
  2. DeleteOld - Removes outdated versions
  3. Copy - Copies to destination with proper organization
  4. SaveToDatabase - Updates internal database
  5. MarkMias - Marks missing-in-action ROMs (if enabled)

Optional Actions

Additional actions can be enabled via configuration:
# Enable automatic deduplication during processing
datoso config --set PROCESS.ParentMergeEnabled=True

# Enable auto-merge for DATs with automerge property
datoso config --set PROCESS.AutoMergeEnabled=True

Processing Multiple Seeds

Process All Seeds

Process DATs from all installed seeds:
datoso all --process

Selective Processing

# Process only specific seeds
datoso all --process --only redump fbneo

# Process all except certain seeds
datoso all --process --exclude nointro

Advanced Processing Options

Specify Custom Actions

Execute only specific actions during processing:
# Only load and deduplicate, skip copying
datoso redump --process --actions LoadDatFile,Deduplicate

# Multiple actions
datoso redump --process --actions "LoadDatFile,Copy,SaveToDatabase"
Available actions:
  • LoadDatFile - Parse DAT file
  • DeleteOld - Remove old versions
  • Copy - Copy to destination
  • SaveToDatabase - Update database
  • MarkMias - Mark MIA ROMs
  • AutoMerge - Auto-merge duplicates
  • Deduplicate - Remove parent duplicates

Verbose Output

See detailed processing information:
# Enable verbose mode
datoso redump --process -v

# Quiet mode (minimal output)
datoso redump --process -q

Processing Status Messages

Understanding the output:
StatusMeaning
CreatedNew DAT file created
UpdatedExisting DAT file updated with new version
ExistsDAT already exists and is current
OverwrittenDAT overwritten (when Overwrite=True)
DisabledDAT is disabled, not processed
DedupedDuplicates removed via parent merge
AutomergedInternal duplicates merged
No Action Taken, Newer FoundDatabase has newer version
ErrorProcessing error occurred

Configuration Options

Essential Processing Settings

# Set destination for processed DATs
datoso config --set PATHS.DatPath=/path/to/organized/dats

# Overwrite existing files even if same date
datoso config --set PROCESS.Overwrite=True

# Enable parent-based deduplication
datoso config --set PROCESS.ParentMergeEnabled=True

# Enable auto-merge for applicable DATs
datoso config --set PROCESS.AutoMergeEnabled=True

# Process Missing-in-Action ROMs
datoso config --set PROCESS.ProcessMissingInAction=True

Ignore Patterns

Skip processing certain DATs with regex patterns:
# Ignore DATs matching pattern
datoso config --set PROCESS.DatIgnoreRegEx="(Beta|Proto)"

# Ignore certain seeds
datoso config --set PROCESS.SeedIgnoreRegEx="deprecated"

Output Directory Structure

Processed DATs are organized based on each seed’s rules:
{DatPath}/
├── Redump/
│   ├── Sony - PlayStation/
│   │   └── Sony - PlayStation.dat
│   ├── Nintendo - GameCube/
│   │   └── Nintendo - GameCube.dat
│   └── ...
├── No-Intro/
│   ├── Nintendo - Game Boy/
│   │   └── Nintendo - Game Boy.dat
│   └── ...
└── ...
Each seed plugin defines its own folder structure rules. The structure above is simplified - actual organization may vary by seed.

Troubleshooting

Processing Fails

If processing encounters errors:
1

Enable verbose logging

datoso redump --process -v
2

Check log file

datoso log
3

Verify seed health

datoso doctor redump
4

Check file permissions

Ensure write permissions on the destination directory:
ls -ld ~/.datoso/DatRoot/

Common Issues

“No Action Taken, Newer Found”
  • Your database already has a newer version
  • To force reprocess: datoso config --set PROCESS.Overwrite=True
“Disabled” Status
  • The DAT has been disabled in the database
  • Re-enable with: datoso dat -d seed:datname --set enabled=True
Filter Not Working
  • Ensure filter string matches part of the filename
  • Use quotes for filters with spaces: --filter "Sony - PlayStation"
Files Not Appearing
  • Check PATHS.DatPath configuration
  • Verify the seed’s action rules with verbose mode

Example Workflows

Complete Workflow for New Seed

# 1. Install seed
pip install datoso[redump]

# 2. Configure paths
datoso config --set PATHS.DatPath=/path/to/roms/dats

# 3. Fetch and process
datoso redump --fetch --process

# 4. Verify results
ls -R /path/to/roms/dats/

Update Existing DATs

# Fetch updates
datoso redump --fetch

# Process only updated files
datoso redump --process

# Files with "Exists" status are already current

Process Specific System

# Fetch all, process only PlayStation
datoso redump --fetch
datoso redump --process --filter PlayStation

Next Steps

After processing, you may want to:
  1. Deduplicate DATs to remove redundant entries
  2. Manage DAT properties to enable/disable or configure specific DATs
  3. Work with seeds to install additional sources
Processing does not download ROMs - it only organizes DAT files that describe ROM collections. Use the processed DATs with ROM managers like ROMVault or CLRMamePro.

Build docs developers (and LLMs) love