#################################
# Clean No-Intro ROMs
# Author: SigKill
# Website: http://sigkillit.com
# Last Updated: 05/29/2026
################################# IMPORTANT: Make sure no Antivirus or Backups are scanning the source or destination folders for maximum performance!
#################################
#################################
#################################



CHANGE LOG
#################################

## [v6.7] - 05/29/2026
-Updated Distro_Configs.ps1: Renamed Directory to RomsRoot and Bios to BiosRoot for consistency with other path properties, renamed GameListRoot to GameLibraryRoot, and added three new properties (GameLibrarySystem, GameLibraryFormat, GameLibraryPattern) to abstract the game library management system used by each distro — supporting EmulationStation (gamelist.xml) and RetroArch (*.lpl playlists) — making the config future-proof for additional frontends and emulation frameworks. Added two new properties (RomsExcludeFolders, RomsExcludeFiles) to each distro entry to define folders and file patterns that should be excluded during a ROMs backup — necessary because several distros (Batocera, Retrobat, Recalbox) store game library and media files inside the RomsRoot alongside ROMs, and Retropie stores save states inside RomsRoot. Reorganized property order within each distro entry by category (Connection, Distro Paths, Game Library, Media, ROMs Exclusions) for improved readability.
-Updated 1_Clean-NoIntroRoms.ps1: Updated all references to Distro_Configs.ps1 property renames — Directory to RomsRoot (4 locations) and ErrorMessage to ErrorMsg (2 locations). Replaced Copy-Item with robocopy in Upload-Roms for significantly faster SMB transfers when uploading cleaned ROMs to a distro.
-Updated 3_CheckXML.ps1: Updated all references to Distro_Configs.ps1 property renames — Directory to RomsRoot (1 location), GameListRoot to GameLibraryRoot (1 location), and ErrorMessage to ErrorMsg (1 location). Renamed local distro variables to match config property names ($distroDirectory to $distroRomsRoot, $distroGameListRoot to $distroGameLibraryRoot) and corrected $distroMediaFolders type declaration from [string] to [string[]]. Added GameLibraryPattern support to Check-GamesListXML to dynamically resolve the game library filename per distro (e.g. gamelist.xml for EmulationStation, *.lpl for RetroArch) rather than hardcoding gamelist.xml. Removed redundant Lakka-specific checks from the No-Intro and Custom ROM processing sections since EmulationStation compatibility is now enforced at validation via -RequireEmulationStation and -ExitOnIncompatible. Improved orphaned ROM summary messaging to display a hint when orphaned ROMs significantly outnumber total games, suggesting the system may not have been scraped yet.
-Updated 6_RemoveOrphanedFiles.ps1: Updated all references to Distro_Configs.ps1 property renames — Directory to RomsRoot (1 location in VALIDATE, 1 location in SET: DISTRO LOOP VARIABLES), GameListRoot to GameLibraryRoot (1 location), and ErrorMessage to ErrorMsg (1 location). Renamed local distro variables to match config property names ($distroDirectory to $distroRomsRoot, $distroGameListRoot to $distroGameLibraryRoot). Added GameLibraryPattern support to both Delete-OrphanedRoms and Delete-OrphanedMedia functions, threading the pattern through from Distro_Configs.ps1 via a new $distroGameLibraryPattern variable so the game library filename is resolved dynamically per distro (e.g. gamelist.xml for EmulationStation, *.lpl for RetroArch) rather than hardcoded.
-Added 7_Backup-RestoreDistros.ps1: Backs up or restores BIOS files, game library files, media, ROMs, and save states for each selected distro to/from a local backup directory. Supports Backup and Restore modes, dry run, purge before copy, and per-section enable/disable flags. Uses a shared Copy-DistroSection internal function with three copy modes — Recursive (BIOS, ROMs, SaveStates — copies the full directory tree in a single robocopy call with /E /MT:8 for maximum performance), GameLibrary (walks game system subfolders to find files matching GameLibraryPattern), and Media (copies only listed MediaFolders per game system, or entire MediaRoot recursively if MediaFolders is empty). ROMs backup respects per-distro RomsExcludeFolders and RomsExcludeFiles from Distro_Configs.ps1 to skip game library and media files that share the RomsRoot on applicable distros. All file copies use robocopy for significantly faster SMB transfers compared to Copy-Item.
-Updated MasterHashTable.ps1: Renamed o2em to odyssey2 and casloopy to loopy on Batocera for changes in v43.  Enabled casloopy on Batocera, which was previously disabled.  Added "mame\mame2003" under Custom for all Distros, which was missed prior.  Fixed bug where the Simple and Slim output files added 2 blank lines at the end.  Updated No-Intro_HT.ps1 and Custom_HT.ps1 from these changes.
-Fixed bugs in Convert-MasterHashTable.ps1: Wrong Directory was used importing Types.ps1, removed unused variable '$script:RomFilterDirectory', and fixed bug in the 'Convert-ToRomHashTableSlim' where it was outputting the Slim file before returing and overwrote that file again.

## [v6.6] - 05/20/2026
-Moved 'Show-RetroDistroValidation' and 'Validate-DirectoryPath' Functions from Log.ps1 to Helper.ps1 where they belong.
-Added '-RequireEmulationStation' switch to 'Validate-RetroDistros' and '-ExitOnIncompatible' switch to 'Show-RetroDistroValidation' to cleanly detect, log, and exit on EmulationStation-incompatible distros (e.g. Lakka) at validation time, used by script 3 which depends on gamelist.xml processing.
-Updated Scripts 1-6: Reorganized the variable regions into three clearly labeled sub-regions (SYSTEM VARIABLES - DO NOT CHANGE, USER VARIABLES, and IMPORTS) wrapped in a parent VARIABLES region, separating system-controlled settings from user-configurable settings and dot-sourced dependencies.
-Updated 1_Clean-NoIntroRoms.ps1: Fixed a bug in Clean-Roms where game systems with subfolder separators in their hash table key (e.g. mame\mame2003) caused the per-system log file creation to fail due to a missing subdirectory ? the log filename is now sanitized by replacing any path separators with an underscore.
-Updated 2_CompareFolderResults: Improved orphaned folder detection output in Compare-RomFolders to individually identify and display which directory (Dir1 or Dir2) does not exist for a game system, replacing the generic "ROM Folder(s) Do Not Exist" message with a specific path.
-Updated 3_CheckXML.ps1: Improved orphaned ROM summary messaging to display a hint when orphaned ROMs significantly outnumber total games, suggesting the system may not have been scraped yet, rather than just reporting the orphaned ROM count.
-Updated Readme.txt: Rewrote and restructured the SCRIPT USAGE section to mirror the new script region organization, added a SHARED COMPONENTS section for variables and imports common to all scripts, standardized each script entry with consistent sections (Description, Imported Files, System Variables, and user-configurable variable groups), corrected outdated defaults and descriptions, and removed duplicated entries now covered by SHARED COMPONENTS.

## [v6.5] - 05/04/2026
-Updated $script:RomDistroConfigs, $script:RomNoIntroHashTable, $script:RomCustomHashTable to be dot net imported and in the process corrected several copy/paste errors I had in previous versions.
-Updated $script:RomDistroConfigs to include bios and savestate directories.
-Added mame\mame2003 to Filters.
-Updated 1_Clean-NoIntroRoms.ps1: Improved collection stability, null guards, filter variable isolation, O(1) duplicate detection via Dictionary/HashSet, deferred single-pass ROM removal, exception pattern logging, and replaced wildcard Copy-Item with literal path construction in Upload-Roms.
-Updated 2_CompareFolderResults: Fixed $LogFiles case, -LiteralPath, Compare-Object Name property,Dir1/Dir2 diff labels, file counts per system, per-system diff totals, and Flush-LogBuffer.
-Updated 3_CheckXML: Fixed $romManualSplitstr, filter bleed-over, null safety, -LiteralPath,  TotalRoms on $gameObject, typos, and improved performance with ArrayList/ReadAllText/$_.name.
-Updated 4_UpdateVersion: Fixed $ScriptDirectory, $matches conflict, error styling, -LiteralPath/ -Encoding UTF8, multiline regex, PSCustomObject stats, Types.ps1 import, and auto-header insertion for filter files missing a version header.
-Updated 5_ConfirmFiltersExist: Added $LogFile parameter, -LiteralPath, ordered tables, FINAL RESULTS stats, section timing, moved extra file detection outside loop, and added -Recurse with relative path matching for subfolder filters like mame\mame2003.
-Updated 6_RemoveOrphanedFiles: Fixed script name, LogFile, -LiteralPath/ReadAllText, $mediaPath to use $MediaRoot, Write-Warning to Write-Text, media message, variable declarations, per-system timing, SMB disconnect, Step to Title styling, and redundant Test-Path on array.
-Updated Helper.ps1 functions Get-UniqueBaseNames, Get-UniqueSuffixNames, Get-UniqueStringsFast, Dedup-MultiSourceRoms, Remove-VariableIfExists, and Show-TimingSummary
-Update Log.ps1 to Buffer log file writes in Write-Out (flush every 100 lines) and added Flush-LogBuffer function, reducing disk I/O and eliminating file contention on large ROM sets.
-Updated readme.txt: fixed typo "patternc", corrected 6_RemovedOrphanedFiles to 6_RemoveOrphanedFiles, fixed RunCustomRomsCompare referencing wrong hashtable and typo "Cusom", and corrected $script:FindNonGame to $script:FindNonGames in readme.txt, updated Expected Results.

## [v6.4] - 07/01/2025
-Updated 3_CheckXML.ps1 to Detect non-game ROMs, Identify ROM files not listed in gamelist.xml, and Identify media files not listed in gamelist.xml. 
-Extended $script:ValidateData in 3_CheckXML.ps1 to include EmulationStation metadata and Batocera extended metadata fields.
-Enhanced $script:RomDistroConfigs with GameListRoot, MediaRoot, and MediaFolders for 3_CheckXML.ps1.
-Added 6_RemoveOrphanedFiles.ps1 to compliment the Orphaned ROM and Orphaned Media detection in 3_CheckXML.ps1.
-Corrected 'odyssey2' name to 'o2em' for Batocera in $script:RomNoIntroHashTable and the filter name.
-Fixed a bug in the MasterhashTable.ps1 "comments".  Apparently if you comment out a HashTable key/value pair it's still parsed and not treated as a comment and had weird effects breaking code in Convert-MasterHashTable.ps1 when modifying the comments. I removed the key/value pairs in the comments.
-Split MasterHashTable.ps1 into a second script Convert-MasterHashTable.ps1 so the original only has the hash tables and the latter converts it to other formats, and updated the code to better handle bugs. This is in preparation for future releases to start dot sourcing the MasterHashtable.ps1 so I can make further improvements such as having a single filter per game system instead of a version for each distro.
-Improved Show-RetroDistroValidation to dynamically list valid enum values.
-Updated Write-Out to Version 1.7
-Updated filters for amiga1200, atarist, c64, fds, gb, gbc, msx1, msx2, o2em, pcengine, pico, satellaview, scv, and vsmile

## [v6.3] - 06/15/2025
-Added _functions folder containing ps1 files for helper and log functions. These are now dot-sourced into each script, enabling centralized updates.
-Created MasterHashTable.ps1 in _functions, which defines detailed No-Intro and Custom hash tables. It can output these in multiple formats for copy/paste or future dot-sourcing.
-Introduced 5_ConfirmFiltersExist.ps1 to validate the existence of required filters per distro.
-Added RetroBat to the list of supported distros.
-Fixed a typo in 4_UpdateVersion.ps1 related to $filterDirectory validation.
-Corrected an incorrect filter file name (odyssey2.ps1) for Batocera.

## [v6.2] - 06/04/2025
-Added support for multiple Retro OS distributions, including major ones like Batocera, Recalbox, Lakka, and RetroPie. RetroPie was included despite appearing to slow or stop updates.
-To add support for a new Retro OS, update the RetroGameDistros enum, adjust any references to $script:RomDistro, extend $script:RomDistroConfigs, and extend either $script:RomNoIntroHashTable or $script:RomNoCustomHashTable with appropriate directory and filter configurations.
-Added support for multiple ROM source directories by making it an array instead of string. For example, the Commodore 64 system now references all three No-Intro source folders directly within the No-Intro hash table, eliminating the need for manual merging and inlcluding it in the Custom hash table.
-Updated all filters.
-Fixed an issue in Get-NoIntroDefaultFilters and Get-CustomDefaultFilters that caused errors when creating new filters. Also added additional fallback pattern matches for edge cases.
-Fixed a fringe case bug identifying primary ROM when $romsSortOrder has no matches and there are multiple matches for a unique ROM name. The script now selects the first match based on the default sort order.
-Refactored and reorganized the codebase with #region blocks, improved modularity, and optimized performance. Also upgraded Write-Out to v1.6.
-Updated the minimum required version to PowerShell 5.1.

## [v6.1] - 05/02/2025
-Updated filters to remove additional non-games and duplicates based on scraping tests.

## [v6.0] - 06/07/2023
-Rewrote all code to add features, updates, general code improvements, and optimizations for All Scripts which in some cases such as 3_CheckXML.ps1 are 10x faster!
-Added readme.txt and moved the change logs to there instead of the individual scripts.
-Updated Write-Out to v1.5 to allow support for multiple log files.
-Added ability to have Custom ROMs in Addition to No-Intro ROMs and Renamed functions to generalize the names.
-Added ability to detect Multicart ROMs for gaming systems that used multiple disks for a single game. I would consider this an experimental feature at the moment and will probably be improved in a future release.  So far in my testing, I'm getting the same results as v5.5 so it looks to be working fine but helps cleanup the filters needed.
-Replaced split() with -split to determine Primary ROM name. Split() is char array and -split is string array which allows using regex for advanced matching.
-Fixed issue with unzipping ROMs by Adding -LiteralPath
-On Filters, Renamed $romSplitchar with $romSplitstr to reflect switching to -split
-On Filters, Added $romSortAscending to allow sorting ROMS Ascending or Descending to determine Primary ROM name
-On Filters, added $romsMultiCart to detect Multicart Games
-Repaced Sort-Object with Natural Sort when determining primary ROM for ascending/descending order.
-Added variables to optionally skip sections of the script for faster results or test runs
-Added additional time tracking to results

## [v6.0b] - 06/07/2023
-Different code in '1_Clean-NoIntroRoms.ps1' Clean-Roms() Function on "STEP 3/7): Remove Exceptions" versus the code in the v6.0 release that I might want to later implement. This code seems to run faster on larger data sets or when it matches a large number of files to remove as exceptions. However, it seems to suffer when doing exact ROM matches, which is why I opted to pull it.

## [v5.6] - 11/5/2022
-Added 4_UpdateVersion.ps1 Script to programatically update version #'s on scripts and filters
-Added "Description" to Filters to help identify the ROM set they're intended to be used on. 
-Updated Clean-NoInroRoms Default Filters to Include a Description.

## [v5.5] - 10/3/2022
-Added $romSplitchar variable to Filters to customize how unique ROM names are determined
-Everything to the left of $romSplitchar is determined to be the unique ROM name.  
-If $romSplitchar is left blank, all ROMs will be skipped. Recommended to keep default '(' for No-Intro ROMs
-Fixed logs in 1_Clean-NoIntroRoms_Exceptions.log so they stay in order

## [v5.4] - 10/3/2022
-Fixed bug in Get-NoIntroRomsExceptions When ROM Name Does Not Contain '('
-Fixed bug setting non-duplicate primary ROM due to name missing $romSplitchar resulting in 0 matches
-Updated Filters by adding ROM extensions as last resort when matching, otherwise primary ROM is never set
-Added $script:ScriptVersion to Set Filter Version in Get-NoIntroDefaultFilters Function

## [v5.3] - 12/11/2020
-Re-Added Function Get-NoIntroDefaultFilters which was accidently removed from version 5.2
-Renamed "config" to "filter" where filters are stored
-Added Changelog in Comments

## [v5.2] - 10/8/2020
-Added variables for Write-Out Colors and Updated to Write-Out v1.3
-Updated Filters
-On CheckXML.ps1, Missing attributes set to $true were not being detected, only worked if they had a blank value

## [v5.1] - 9/28/2020
-Fixed minor bugs and updated filters

## [v5.0] - 9/10/2020
-Rewrote the code to be modular by importing filters for each game system instead of using separate scripts
-Added variables to define where to store game system filters and logs
-Replaced $MyInvocation.MyCommand.Name with $PSCommandPath which requires Powershell 3 or greater
-Replaced Log-Write with Write-Out function which requires Powershell 4 or greater
-Added Atari Jaguar because it can run on PI4 with proper customization
-Fixed bug with romsDoNotDelete
-Fixed bug where exceptions were not removed from uniqueRom causing it to still evaluate them for duplicates



SHARED COMPONENTS
#################################
The following files are dot-sourced and shared across all applicable scripts. You should not
need to modify these unless expanding the script suite or adding new distros/systems.

[Types.ps1]
enum RetroGameDistros:
	Enumeration of all supported Retro OS distributions currently including Batocera, Retrobat,	Recalbox, Lakka, and RetroPie. All scripts restrict $script:RomDistro to these values. Do not change unless you plan to expand all of the code where this enum is referenced.

[Distro_Configs.ps1]
$script:RomDistroConfigs:
	Per-distro configuration for each entry in RetroGameDistros. Each distro entry is organized into five property categories — Connection (UNC SMB path, credentials, error message), Distro Paths (RomsRoot, BiosRoot, SavesRoot), Game Library (GameLibrarySystem, GameLibraryFormat, GameLibraryRoot, GameLibraryPattern — supporting EmulationStation and RetroArch), Media (MediaRoot, MediaFolders), and ROMs Exclusions (RomsExcludeFolders, RomsExcludeFiles — file patterns and folder names to skip during ROMs backup for distros where game library, media, or save states share the RomsRoot). You should not need to change these unless your computer cannot resolve the distro hostname on your network, in which case replace the hostname with the device's IP address (e.g. "\\192.168.5.25\roms\"). Refer to Distro_Configs.ps1 for the current values and supported distros.
	Used by: Scripts 1, 3, 6, 7.

[No-Intro_HT.ps1]
$script:RomNoIntroHashTable:
	HashTable containing No-Intro ROM directory names on each distro mapped to their source directory, listed per Retro OS Distribution. You can comment out any game system you do not want to process by adding a # at the beginning of that line, but make sure you do it under the matching distribution block (e.g. [RetroGameDistros]::Batocera).
	Default is all systems enabled unless noted otherwise.
	Used by: Scripts 1, 2, 3, 5, 6.

[Custom_HT.ps1]
$script:RomCustomHashTable:
	HashTable containing Custom ROM directory names on each distro mapped to their source directory, listed per Retro OS Distribution. You can comment out any game system you do not want to process by adding a # at the beginning of that line, but make sure you do it under the matching distribution block (e.g. [RetroGameDistros]::Batocera).
	Default is all systems enabled unless noted otherwise.
	Used by: Scripts 1, 2, 3, 5, 6.



SCRIPT USAGE
#################################

1_Clean-NoIntroRoms.ps1
*********************************
Description:
	I did not want my Emulation Distros to be cluttered with unnecessary ROMs. I only wanted the original games, I did not want duplicates, revisions, and I preferred games in English. For example, the NES has about 716 officially licensed games and the No-Intro 2018 ROM set has about 2,748 games in it. I wanted to reduce that number closer to the officially licensed games count to save space and reduce the amount of ROMs I would have to scroll through each time. I decided to create several PowerShell scripts based on the No-Intro 2018 ROM set to accomplish my goal, which is explained in further detail below.

Imported Files:
	Types.ps1, Distro_Configs.ps1, No-Intro_HT.ps1, Custom_HT.ps1, Helper.ps1, Log.ps1

[System Variables - Do Not Change]
$script:ScriptName: Defaults to the name of the .ps1 script. Do not change this.
$script:ScriptVersion: Script version. Do not change this.
$script:LogFile: Main log file where all output is stored. Do not change this.
$script:LogOverwrite: Overwrite log files each time the script runs. Do not change this.
$script:LogVerbose: Logs detailed info for determining the primary ROM, used for debugging. Do not change this.
$script:LogRemoveExceptions: Logs removal of ROM exceptions. Setting to $false is for advanced use only to speed up results on large ROM sets. Do not change this.

[Select Retro OS Distribution to Process]
$script:RomDistro:
	Select the Retro OS Distribution to process, restricted to the values in the RetroGameDistros enum (Batocera, Retrobat, Recalbox, Lakka, RetroPie). You can have multiple values in an array format to run against multiple distros.
	Default is all distros (Batocera, Retrobat, Recalbox, Lakka, RetroPie).

[ROM Sets Directories and Processing]
$script:RomNoIntroDirectory:
	Source No-Intro 2018 Game System ROM Directory. Each game system should have a folder in here that matches a key in $script:RomNoIntroHashTable.
	Default is "C:\Games\Complete ROM Sets\No-Intro 2018\".

$script:RomCustomDirectory:
	Source Custom Game System ROM Directory. Each game system should have a folder in here that matches a key in $script:RomCustomHashTable.
	Default is "C:\Games\Complete ROM Sets\Custom\".

$script:RomCleanDirectory:
	Destination directory to copy cleaned source ROMs into. Each game system will have a subdirectory here matching the distro directory name defined in the hash tables.
	Default is "C:\Games\Distros\".

$script:RomCleanDirectoryPurge:
	Purge $script:RomCleanDirectory before copying ROMs. It is recommended to enable this to ensure you ONLY have the cleaned ROMs in your destination directory. When running the script multiple times while changing filters your results will differ ? for example, an initial run may produce 100 ROMs but a second run with tighter filters produces 95, yet without purging you would still have 100 ROMs in the destination.
	Default is $true.

$script:RomCleanDirectoryOverwrite:
	Overwrite existing ROMs in each game system directory in $script:RomCleanDirectory when the directory already exists. When $false, no ROMs are copied if the directory exists. When $true, ROMs are copied and overwritten but additional existing files are not removed. Intended for replacing individual problem ROMs during testing without clearing the entire directory. It is recommended to use $script:RomCleanDirectoryPurge instead.
	Default is $false.

$script:RomFilterDirectory:
	Directory that stores the filter files for each game system. Filters are .ps1 files named using the distro directory name defined in the hash tables. Pre-built filters are included by default. You can modify them to your liking, or if a filter does not exist the script will generate a generic one for that system.
	Default is a "filters" folder in the same directory as the script.

$script:RomDedupMultiSourceReversed:
	For game systems with multiple source folders (e.g. Commodore 64), deduplicates ROMs keeping the file based on source folder priority as defined in the hash tables. When $false, the first folder listed has the highest priority ? for example, if Source1 and Source2 both contain zork1.zip, it will be copied from Source1. Set to $true to reverse the priority so the last folder listed takes precedence.
	Default is $false.

[Enable/Disable Parts of the Script to Run]
$script:RunNoIntroRomsExceptions:
	Enable/Disable the Get-RomsExceptions function, which builds a list of potential exceptions used to create filters for removing unwanted ROMs for each system in $script:RomNoIntroHashTable.
	Default is $true.

$script:RunNoIntroRomsClean:
	Enable/Disable the Clean-Roms function for No-Intro ROMs defined in $script:RomNoIntroHashTable.
	Default is $true.

$script:RunNoIntroRomsUpload:
	Enable/Disable the Upload-Roms function for uploading cleaned No-Intro ROMs to the distros.
	Default is $false.

$script:RunCustomRomsExceptions:
	Enable/Disable the Get-RomsExceptions function for Custom ROMs defined in $script:RomCustomHashTable.
	Default is $false.

$script:RunCustomRomsClean:
	Enable/Disable the Clean-Roms function for Custom ROMs defined in $script:RomCustomHashTable.
	Default is $false.

$script:RunCustomRomsUpload:
	Enable/Disable the Upload-Roms function for uploading cleaned Custom ROMs to the distros.
	Default is $false.

[Distro Upload ROM Variables]
$script:RomDistroDirectoryPurge:
	Purge the destination ROM directory for each game system on the distro before copying cleaned ROMs. It is recommended to enable this to ensure you ONLY have the cleaned ROMs on the distro.
	Default is $true.

$script:RomDistroOverwrite:
	Overwrite existing ROMs in each game system directory on the distro when the directory already exists. When $false, no ROMs are copied if the directory exists. When $true, ROMs are copied and overwritten but additional existing files are not removed. It is recommended to use $script:RomDistroDirectoryPurge instead.
	Default is $false.



2_CompareFolderResults.ps1
*********************************
Description:
	Supplemental script intended to be used in conjunction with 1_Clean-NoIntroRoms.ps1 and 3_CheckXML.ps1. Compares the files/ROMs in two directories to show the differences between them using the Compare-Object cmdlet. Intended to compare different cleaned ROM results from 1_Clean-NoIntroRoms.ps1 when adjusting filters for a system.

Imported Files:
	Types.ps1, No-Intro_HT.ps1, Custom_HT.ps1, Helper.ps1, Log.ps1

[System Variables - Do Not Change]
$script:ScriptName: Defaults to the name of the .ps1 script. Do not change this.
$script:ScriptVersion: Script version. Do not change this.
$script:LogFile: Main log file where all output is stored. Do not change this.
$script:LogOverwrite: Overwrite log files each time the script runs. Do not change this.

[Select Retro OS Distribution to Process]
$script:RomDistro:
	Select the Retro OS Distribution to process, restricted to the values in the RetroGameDistros enum (Batocera, Retrobat, Recalbox, Lakka, RetroPie). Only one value is supported since the script compares exactly two folders.
	Default is Batocera.

[ROM Sets Directories and Processing]
$script:RomCleanDirectory1:
	First directory of cleaned ROMs to compare. Each game system will have a subdirectory here matching the distro directory name defined in the hash tables.
	Default is "C:\Games\Distros\Batocera\roms\".

$script:RomCleanDirectory2:
	Second directory of cleaned ROMs to compare against $script:RomCleanDirectory1. Use this to compare results when modifying filters in 1_Clean-NoIntroRoms.ps1.
	Default is "C:\Games\Distros\Batocera\roms2\".

[Enable/Disable Parts of the Script to Run]
$script:RunNoIntroRomsCompare:
	Enable/Disable folder comparison for No-Intro ROMs defined in $script:RomNoIntroHashTable.
	Default is $true.

$script:RunCustomRomsCompare:
	Enable/Disable folder comparison for Custom ROMs defined in $script:RomCustomHashTable.
	Default is $true.



3_CheckXML.ps1
*********************************
Description:
	Supplemental script intended to be used in conjunction with 1_Clean-NoIntroRoms.ps1 and 2_CompareFolderResults.ps1. Checks for missing scraped metadata by examining the gamelist.xml file for each game system on your distro. This can save hours of time manually checking for missing ROM scraped data. Also identifies potential duplicate ROMs, duplicate game names, non-games, orphaned ROMs, and orphaned media files. Duplicate detection was rewritten in 6.0 and is about 10x faster than older versions. NOTE: This script only supports EmulationStation-based distros (Batocera, Retrobat, Recalbox, RetroPie). Specifying Lakka will cause the script to exit at validation as it does not use EmulationStation or gamelist.xml.

Imported Files:
	Types.ps1, Distro_Configs.ps1, No-Intro_HT.ps1, Custom_HT.ps1, Helper.ps1, Log.ps1

[System Variables - Do Not Change]
$script:ScriptName: Defaults to the name of the .ps1 script. Do not change this.
$script:ScriptVersion: Script version. Do not change this.
$script:LogFile: Main log file where all output is stored. Do not change this.
$script:LogOverwrite: Overwrite log files each time the script runs. Do not change this.

[Select Retro OS Distribution to Process]
$script:RomDistro:
	Select the Retro OS Distribution to process, restricted to EmulationStation-based distros only (Batocera, Retrobat, Recalbox, RetroPie). Specifying Lakka will cause the script to exit at validation. You can have multiple values in an array format to run against multiple distros.
	Default is Batocera.

[ROM Sets Directories and Processing]
$script:RomSplitstr:
	Manually set the ROM split string used to determine a ROM's unique base name for duplicate detection. Leave blank to import it automatically from the game filter file.
	Default is "" (imports from game filter).

$script:RomFilterDirectory:
	Directory that stores the filter files for each game system. Filters are .ps1 files named using the distro directory name defined in the hash tables. Pre-built filters are included by default. You can modify them to your liking, or if a filter does not exist the script will generate a generic one for that system.
	Default is a "filters" folder in the same directory as the script.

$script:FindRomDuplicates:
	Enable/Disable duplicate ROM detection. Uses the same base name method as 1_Clean-NoIntroRoms.ps1 and supports multicart ROMs. Duplicate detection was greatly improved in version 6.0 to be about 10x faster, so disabling this is rarely necessary.
	Default is $true.

$script:IgnoreMulticartDuplicates:
	If enabled, any potential duplicate ROM matching a pattern in $MultiCartExceptions will be excluded from duplicate detection.
	Default is $true.

$script:MultiCartExceptions:
	Manually set the multicart exception patterns used during duplicate ROM detection. Leave blank to import automatically from the game filter file.
	Default is @() (imports from game filter).

$script:FindGameDuplicates:
	Enable/Disable detection of duplicate game name entries in gamelist.xml after scraping. Catches cases where different ROM filenames scrape to the same game name, such as 'Wonder Boy (USA, Europe).zip' vs 'Wonderboy (USA, Europe).zip' for Commodore 64.
	Default is $true.

$script:FindNonGames:
	Enable/Disable detection of non-game entries in gamelist.xml after scraping, such as utility programs tagged as 'ZZZ(notgame)'. Behavior varies by scraper ? customize using $script:NonGames.
	Default is $true.

$script:NonGames:
	Array of strings used to identify non-game entries in gamelist.xml. Customize based on the scraper used as different scrapers tag non-games differently. Supports multiple values.
	Default is @("ZZZ(notgame)").

$script:FindRomsNotInXml:
	Enable/Disable detection of ROM files present on the distro that are not referenced in gamelist.xml (orphaned ROMs).
	Default is $true.

$script:FindMediaNotInXml:
	Enable/Disable detection of media files present on the distro that are not referenced in gamelist.xml (orphaned media such as videos or images).
	Default is $true.

$script:ValidateVerbose:
	When enabled, overrides all individual settings in $script:ValidateData and validates every metadata property. Note that many game systems do not use all properties, so this will produce significantly more results and increase run time.
	Default is $false.

$script:ValidateData:
	Ordered hashtable allowing you to individually enable or disable validation of each metadata property. Set a property to $true to check whether it has been scraped, or $false to skip it. Many game systems do not use all properties, and you may have chosen not to scrape certain data such as videos to save disk space. If $script:ValidateVerbose is enabled, all settings here are ignored. Refer to the script for the full list of supported EmulationStation and Batocera extended metadata properties. Default has path, name, desc, image, thumbnail, and video set to $true; all others $false.

[Enable/Disable Parts of the Script to Run]
$script:RunNoIntroRomsXml:
	Enable/Disable gamelist.xml checking for No-Intro ROMs defined in $script:RomNoIntroHashTable.
	Default is $true.

$script:RunCustomRomsXml:
	Enable/Disable gamelist.xml checking for Custom ROMs defined in $script:RomCustomHashTable.
	Default is $false.



4_UpdateVersion.ps1
*********************************
Description: 
	This is intended to be used as the supplemental script to be used in conjunction with the other scripts and game system filters. Whenever an update is made to any script or filter that requires a version update, this script will update the version number in each file. In addition, it will append the version to the 'CHANGE LOG' section in readme.txt, which you can add the changes made.

[Select Retro OS Distribution to Process]
$script:RomDistro: 
	Select the Retro OS Distribition to process, which is restricticted to the values in the RetroGameDistros Enumeration currently including (Batocera, Recalbox, Lakka, and Retropie).  You can have multiple values in an array format if you want to run against multiple distros.
	Default is Batocera.

[ROM Filters Directories and Processing]	
$script:RomFilterDirectory: 
	Directory that stores the "filters" for each game system. The filters are .ps1 files named using the RetroPie directory name defined in $script:RomNoIntroHashTable. I have customized the filters for each system and included them by default. You can modify them to your liking or if they do not exist, the script will generate a generic filter for each system. 
	Default is a "filters" folder in the same directory as the script.

$FileVersion: 
	Manually Set Script Version here or Read it From First Script File.
	Default is "", which means it will read the value from the first Script File.
	
[Enable/Disable Parts of the Script to Run]
$script:DryRun
	Displays the changes it will make on the Script Files, Readme.txt, and Filter files without actually writing data.
	Default is $true as a safeguard to prevent accidental overwriting

[System Variables - Do Not Change These]
$script:ScriptName: Defaults to name of the .ps1 script. Do not change this.
$script:ScriptVersion: Script version.  Do not change this.
enum RetroGameDistros: Enumeration of available RetroOS's available in the script.  Do not change unless you plan to expand all of the code where used.
$script:LogFile: Main log file where all output is stored. Do not change this.
$script:LogOverwrite: Overwrite Log Files each time the script runs. Do not change this.



5_ConfirmFiltersExist.ps1
*********************************
Description:
	Supplemental script that audits your filter files to confirm that a filter exists for every game system across all selected distros. Useful for identifying any missing filters before running 1_Clean-NoIntroRoms.ps1.

Imported Files:
	Types.ps1, No-Intro_HT.ps1, Custom_HT.ps1, Helper.ps1, Log.ps1

[System Variables - Do Not Change]
$script:ScriptName: Defaults to the name of the .ps1 script. Do not change this.
$script:ScriptVersion: Script version. Do not change this.
$script:LogFile: Main log file where all output is stored. Do not change this.
$script:LogOverwrite: Overwrite log files each time the script runs. Do not change this.

[Select Retro OS Distribution to Process]
$script:RomDistro:
	Select the Retro OS Distribution to process, restricted to the values in the RetroGameDistros enum (Batocera, Retrobat, Recalbox, Lakka, RetroPie). You can have multiple values in an array format to run against multiple distros.
	Default is all distros (Batocera, Retrobat, Recalbox, Lakka, RetroPie).

[ROM Filters Directories and Processing]
$script:RomFilterDirectory:
	Directory that stores the filter files for each game system. Filters are .ps1 files named using the distro directory name defined in the hash tables. Pre-built filters are included by default. You can modify them to your liking, or if a filter does not exist the script will generate a generic one for that system.
	Default is a "filters" folder in the same directory as the script.



6_RemoveOrphanedFiles.ps1
*********************************
Description:
	Removes orphaned ROM and media files from distros that are not referenced in gamelist.xml. Intended to complement the orphaned ROM and media detection in 3_CheckXML.ps1 by performing the actual deletion after you have reviewed the results.

Imported Files:
	Types.ps1, Distro_Configs.ps1, No-Intro_HT.ps1, Custom_HT.ps1, Helper.ps1, Log.ps1

[System Variables - Do Not Change]
$script:ScriptName: Defaults to the name of the .ps1 script. Do not change this.
$script:ScriptVersion: Script version. Do not change this.
$script:LogFile: Main log file where all output is stored. Do not change this.
$script:LogOverwrite: Overwrite log files each time the script runs. Do not change this.

[Select Retro OS Distribution to Process]
$script:RomDistro:
	Select the Retro OS Distribution to process, restricted to the values in the RetroGameDistros enum (Batocera, Retrobat, Recalbox, Lakka, RetroPie). You can have multiple values in an array format to run against multiple distros.
	Default is Batocera.

[Enable/Disable Parts of the Script to Run]
$script:DeleteOrphanedRoms:
	Enable/Disable deletion of orphaned ROM files not referenced in gamelist.xml. It is recommended to review the results from 3_CheckXML.ps1 before enabling this.
	Default is $false.

$script:DeleteOrphanedMedia:
	Enable/Disable deletion of orphaned media files not referenced in gamelist.xml. It is recommended to review the results from 3_CheckXML.ps1 before enabling this.
	Default is $false.



7_Backup-RestoreDistros.ps1
*********************************
Description:
	Backs up or restores BIOS files, game library files (gamelist.xml / *.lpl playlists), media (images, videos, etc.), ROMs, and save states for each selected distro to/from a local backup directory. Supports both Backup and Restore modes, a dry run option to preview changes without writing anything, purge before copy, and per-section enable/disable flags so you can run only the sections you need. ROMs backup automatically excludes game library files and media that share the RomsRoot on applicable distros (Batocera, Retrobat, Recalbox), and excludes save state files on distros where saves share the RomsRoot (Retropie), using the RomsExcludeFolders and RomsExcludeFiles properties in Distro_Configs.ps1.

Imported Files:
	Types.ps1, Distro_Configs.ps1, Helper.ps1, Log.ps1

[System Variables - Do Not Change]
$script:ScriptName: Defaults to the name of the .ps1 script. Do not change this.
$script:ScriptVersion: Script version. Do not change this.
$script:LogFile: Main log file where all output is stored. Do not change this.
$script:LogOverwrite: Overwrite log files each time the script runs. Do not change this.

[Select Retro OS Distribution to Process]
$script:RomDistro:
	Select the Retro OS Distribution to process, restricted to the values in the RetroGameDistros enum (Batocera, Retrobat, Recalbox, Lakka, RetroPie). You can have multiple values in an array format to run against multiple distros.
	Default is Batocera.

[Backup/Restore Directories and Processing]
$script:Mode:
	Set to "Backup" to copy files from the distro to the local backup directory, or "Restore" to copy files from the local backup directory back to the distro.
	Default is "Backup".

$script:BackupDirectory:
	Local directory where backup files are stored. Each distro will have a subdirectory here (e.g. Batocera\), and within that a subfolder per section (bios\, gamelibrary\, media\, roms\, savestates\).
	Default is "C:\Games\Distros\".

$script:BackupPurge:
	Purge the destination directory for each section before copying. Recommended to ensure the destination exactly mirrors the source. When restoring, this purges the distro section before writing from backup.
	Default is $true.

$script:BackupOverwrite:
	Overwrite existing files in the destination when the directory already exists and purge is $false. When $false, existing files are skipped. It is recommended to use $script:BackupPurge instead.
	Default is $false.

$script:DryRun:
	When $true, logs all actions that would be taken (directories created, files copied, directories purged) without making any changes. Set to $false to perform the actual backup or restore.
	Default is $true as a safeguard to prevent accidental overwrites.

[Enable/Disable Parts of the Script to Run]
$script:RunBios:
	Enable/Disable backup or restore of BIOS files.
	Default is $true.

$script:RunGameLibrary:
	Enable/Disable backup or restore of game library files (gamelist.xml for EmulationStation distros, *.lpl playlists for Lakka/RetroArch).
	Default is $true.

$script:RunMedia:
	Enable/Disable backup or restore of scraped media files (images, videos, etc.).
	Default is $true.

$script:RunRoms:
	Enable/Disable backup or restore of ROM files. Exclusions defined in RomsExcludeFolders and RomsExcludeFiles in Distro_Configs.ps1 are applied automatically.
	Default is $false.

$script:RunSaveStates:
	Enable/Disable backup or restore of save state files.
	Default is $true.



FILTERS USAGE
#################################

Description: 
	I have customized and included these since v5.0 and they are located in ".\filters\<gamesystem>.ps1". If you want customize which ROMs are cleaned or kept for each system, this is what you want to change.

$romSplitstr: 
	Customize the string used to split a ROM name to determine the unique ROM names by using everything to the left of this string. This string is a regex to allow advanced matching, but you need to escape special characters using a backslash '\' or using [regex]::escape(), which will automatically escape any special characters. 
	Default for the No-Intro ROMs this is a left parenthesis set as "\(" or [regex]::escape("("), and varies for the Custom ROMs. For example, when comparing "Darkwing Duck (USA).zip" and  "Darkwing Duck (Europe).zip" for NES, the unique ROM name would be "Darkwing Duck ". The script would then use $romSortOrder to determine which of the two files to keep, which would be the USA version if you use my default filters.

$romSortAscending: 
	Determines if the ROMs are sorted in ascending/descending alphabetical order. The sort order determines the order the ROMs are matched in $romsSortOder and if there are no matches the first file is chosen as primary. 
	Default is $true which sorts ROMs ascending.

$romUnzip: 
	Unzip ROMs for emulators that don’t support .zip files. Setting this to $true will unzip the files and $false will NOT unzip them after cleaning then in Script 1.

$romsDoNotDelete: 
	Any exact ROM name (including extension) in this list will NOT be deleted. ROMs listed here will not be deleted even in they match a value in $romsExceptions or they are NOT the Primary ROM via $romSortOrder. Ex: "Castlevania (USA) (Rev A).zip" would always keep this specific ROM.
	Default is @().

$romsExceptions: 
	Any ROMs containing these strings or exact ROM name will be removed unless the exact ROM name is in $romsDoNotDelete.
	Default is @().

$romsSortOrder: 
	Preferred sorting order to pick 1 Primary ROM to keep when evaluating duplicates. Uses regular expressions to define the preferred sorting order based on language, and if there are no matches it will determine the primary ROM by either ascending/descending alphabetical order defined in $romSortAscending. ROMs in $romsExceptions will not be deleted even if it is not determined to be the Primary ROM.
	Default is @().

$romsMultiCart
	I would consider this an experimental feature as of v6.0 and will probably be improved in a future release. Some gaming systems used multiple disks for a single game, and this allows you to keep these multicarts as an exception. Once the primary ROM is determined for a game, it will check if it has a multicart exception by checking if the primary ROM name matches a regex in $romsMultiCart. If a match is found, it considers a multicart the exact name of the ROM and replaces the matching text with the regex $romsMultiCart. For example, in the $romsMultiCart hash table, if you had the value "\(Disk\s?[1-4].*\)" and your primary ROM was "Dungeon Master (Disk 1).zip", it would consider any ROM matching the name "Dungeon Master (Disk #).zip" a Multicart exception to keep where # is 1 to 4.
	Default is @().
	


EXPECTED RESULTS & TROUBLESHOOTING
#################################

1_Clean-NoIntroRoms.ps1 should take about 5 minutes (Verbose Logging) & 4 minutes (Non-Verbose Logging) to complete All No-Intro ROMs on Batocera and 5 minutes (Verbose Logging) & 4 minutes (Non-Verbose Logging) to complete All Custom ROMs on Batocera, which is skewed by ZXSpectrum.  If the script seems to be running slow, ake sure you don't have any Antivirus or Backup software running on the source, destination, or script directories.
Here are my No-Intro 2018 & Custom Results for comparison using v6.5:

  ======================================================================
  **********************************************************************
  >> SECTION: CLEAN NO-INTRO ROMS BATOCERA [1/1]
  **********************************************************************
 
	Step 8/8 Clean No-Intro ROMs Results: (ADVISION) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 5                       
    ROMs UNIQUE               : 5                       
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 1                       
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 1                       
    ROMs Total Cleaned        : 4                       
    ROMs Total Cleaned Size   : 0.01MB                  
    Start Time                : 05/04/2026 01:46:43     
    End Time                  : 05/04/2026 01:46:43     
    Elapsed Time              : 0.18                    

    Step 8/8 Clean No-Intro ROMs Results: (AMIGA1200) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 2820                    
    ROMs UNIQUE               : 2197                    
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 290                     
    ROMs Dups Deleted         : 473                     
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 763                     
    ROMs Total Cleaned        : 2057                    
    ROMs Total Cleaned Size   : 2177.32MB               
    Start Time                : 05/04/2026 01:46:43     
    End Time                  : 05/04/2026 01:47:25     
    Elapsed Time              : 41.43                   

    Step 8/8 Clean No-Intro ROMs Results: (ARCADIA) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 48                      
    ROMs UNIQUE               : 48                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 0                       
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 0                       
    ROMs Total Cleaned        : 48                      
    ROMs Total Cleaned Size   : 0.18MB                  
    Start Time                : 05/04/2026 01:47:25     
    End Time                  : 05/04/2026 01:47:25     
    Elapsed Time              : 0.66                    

    Step 8/8 Clean No-Intro ROMs Results: (ATARI2600) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 582                     
    ROMs UNIQUE               : 566                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 89                      
    ROMs Dups Deleted         : 15                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 104                     
    ROMs Total Cleaned        : 478                     
    ROMs Total Cleaned Size   : 1.98MB                  
    Start Time                : 05/04/2026 01:47:25     
    End Time                  : 05/04/2026 01:47:29     
    Elapsed Time              : 3.83                    

    Step 8/8 Clean No-Intro ROMs Results: (ATARI5200) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 107                     
    ROMs UNIQUE               : 104                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 34                      
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 34                      
    ROMs Total Cleaned        : 73                      
    ROMs Total Cleaned Size   : 0.72MB                  
    Start Time                : 05/04/2026 01:47:29     
    End Time                  : 05/04/2026 01:47:30     
    Elapsed Time              : 0.8                     

    Step 8/8 Clean No-Intro ROMs Results: (ATARI7800) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 116                     
    ROMs UNIQUE               : 67                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 10                      
    ROMs Dups Deleted         : 47                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 57                      
    ROMs Total Cleaned        : 59                      
    ROMs Total Cleaned Size   : 1.81MB                  
    Start Time                : 05/04/2026 01:47:30     
    End Time                  : 05/04/2026 01:47:31     
    Elapsed Time              : 0.86                    

    Step 8/8 Clean No-Intro ROMs Results: (ATARIST) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 306                     
    ROMs UNIQUE               : 302                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 6                       
    ROMs Dups Deleted         : 4                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 10                      
    ROMs Total Cleaned        : 296                     
    ROMs Total Cleaned Size   : 99.67MB                 
    Start Time                : 05/04/2026 01:47:31     
    End Time                  : 05/04/2026 01:47:36     
    Elapsed Time              : 5.14                    

    Step 8/8 Clean No-Intro ROMs Results: (C20) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 292                     
    ROMs UNIQUE               : 217                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 57                      
    ROMs Dups Deleted         : 64                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 121                     
    ROMs Total Cleaned        : 171                     
    ROMs Total Cleaned Size   : 0.98MB                  
    Start Time                : 05/04/2026 01:47:36     
    End Time                  : 05/04/2026 01:47:38     
    Elapsed Time              : 2.26                    

    Step 8/8 Clean No-Intro ROMs Results: (C64) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 3676                    
    ROMs UNIQUE               : 2834                    
    ROMs Msrc Dedup Deleted   : 153                     
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 404                     
    ROMs Dups Deleted         : 627                     
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 1184                    
    ROMs Total Cleaned        : 2492                    
    ROMs Total Cleaned Size   : 220.15MB                
    Start Time                : 05/04/2026 01:47:38     
    End Time                  : 05/04/2026 01:47:53     
    Elapsed Time              : 15.13                   

    Step 8/8 Clean No-Intro ROMs Results: (CHANNELF) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 37                      
    ROMs UNIQUE               : 33                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 6                       
    ROMs Dups Deleted         : 2                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 8                       
    ROMs Total Cleaned        : 29                      
    ROMs Total Cleaned Size   : 0.06MB                  
    Start Time                : 05/04/2026 01:47:53     
    End Time                  : 05/04/2026 01:47:54     
    Elapsed Time              : 0.29                    

    Step 8/8 Clean No-Intro ROMs Results: (COLECOVISION) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 174                     
    ROMs UNIQUE               : 160                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 22                      
    ROMs Dups Deleted         : 10                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 32                      
    ROMs Total Cleaned        : 142                     
    ROMs Total Cleaned Size   : 1.56MB                  
    Start Time                : 05/04/2026 01:47:54     
    End Time                  : 05/04/2026 01:47:55     
    Elapsed Time              : 0.78                    

    Step 8/8 Clean No-Intro ROMs Results: (CPLUS4) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 18                      
    ROMs UNIQUE               : 14                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 13                      
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 13                      
    ROMs Total Cleaned        : 5                       
    ROMs Total Cleaned Size   : 0.05MB                  
    Start Time                : 05/04/2026 01:47:55     
    End Time                  : 05/04/2026 01:47:55     
    Elapsed Time              : 0.19                    

    Step 8/8 Clean No-Intro ROMs Results: (CRVISION) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 21                      
    ROMs UNIQUE               : 18                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 3                       
    ROMs Dups Deleted         : 3                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 6                       
    ROMs Total Cleaned        : 15                      
    ROMs Total Cleaned Size   : 0.07MB                  
    Start Time                : 05/04/2026 01:47:55     
    End Time                  : 05/04/2026 01:47:55     
    Elapsed Time              : 0.45                    

    Step 8/8 Clean No-Intro ROMs Results: (FDS) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 319                     
    ROMs UNIQUE               : 273                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 3                       
    ROMs Multicarts Kept      : 3                       
    ROMs Exceptions Deleted   : 70                      
    ROMs Dups Deleted         : 21                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 91                      
    ROMs Total Cleaned        : 228                     
    ROMs Total Cleaned Size   : 9.99MB                  
    Start Time                : 05/04/2026 01:47:55     
    End Time                  : 05/04/2026 01:47:58     
    Elapsed Time              : 2.45                    

    Step 8/8 Clean No-Intro ROMs Results: (GAMECOM) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 24                      
    ROMs UNIQUE               : 23                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 4                       
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 4                       
    ROMs Total Cleaned        : 20                      
    ROMs Total Cleaned Size   : 8.3MB                   
    Start Time                : 05/04/2026 01:47:58     
    End Time                  : 05/04/2026 01:47:58     
    Elapsed Time              : 0.24                    

    Step 8/8 Clean No-Intro ROMs Results: (GAMEGEAR) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 501                     
    ROMs UNIQUE               : 415                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 205                     
    ROMs Dups Deleted         : 26                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 231                     
    ROMs Total Cleaned        : 270                     
    ROMs Total Cleaned Size   : 45.45MB                 
    Start Time                : 05/04/2026 01:47:58     
    End Time                  : 05/04/2026 01:47:59     
    Elapsed Time              : 1.58                    

    Step 8/8 Clean No-Intro ROMs Results: (GB) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 1616                    
    ROMs UNIQUE               : 1320                    
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 1                       
    ROMs Multicarts Kept      : 7                       
    ROMs Exceptions Deleted   : 897                     
    ROMs Dups Deleted         : 112                     
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 1009                    
    ROMs Total Cleaned        : 607                     
    ROMs Total Cleaned Size   : 61.72MB                 
    Start Time                : 05/04/2026 01:47:59     
    End Time                  : 05/04/2026 01:48:04     
    Elapsed Time              : 4.18                    

    Step 8/8 Clean No-Intro ROMs Results: (GBA) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 3095                    
    ROMs UNIQUE               : 2142                    
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 1337                    
    ROMs Dups Deleted         : 602                     
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 1939                    
    ROMs Total Cleaned        : 1156                    
    ROMs Total Cleaned Size   : 4464.71MB               
    Start Time                : 05/04/2026 01:48:04     
    End Time                  : 05/04/2026 01:49:04     
    Elapsed Time              : 59.95                   

    Step 8/8 Clean No-Intro ROMs Results: (GBC) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 1430                    
    ROMs UNIQUE               : 1144                    
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 1                       
    ROMs Multicarts Kept      : 3                       
    ROMs Exceptions Deleted   : 657                     
    ROMs Dups Deleted         : 194                     
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 851                     
    ROMs Total Cleaned        : 579                     
    ROMs Total Cleaned Size   : 240.46MB                
    Start Time                : 05/04/2026 01:49:04     
    End Time                  : 05/04/2026 01:49:08     
    Elapsed Time              : 4.43                    

    Step 8/8 Clean No-Intro ROMs Results: (GMASTER) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 13                      
    ROMs UNIQUE               : 13                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 1                       
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 1                       
    ROMs Total Cleaned        : 12                      
    ROMs Total Cleaned Size   : 0.1MB                   
    Start Time                : 05/04/2026 01:49:08     
    End Time                  : 05/04/2026 01:49:08     
    Elapsed Time              : 0.2                     

    Step 8/8 Clean No-Intro ROMs Results: (GP32) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 35                      
    ROMs UNIQUE               : 23                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 7                       
    ROMs Dups Deleted         : 6                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 13                      
    ROMs Total Cleaned        : 22                      
    ROMs Total Cleaned Size   : 159.15MB                
    Start Time                : 05/04/2026 01:49:08     
    End Time                  : 05/04/2026 01:49:09     
    Elapsed Time              : 1.15                    

    Step 8/8 Clean No-Intro ROMs Results: (JAGUAR) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 64                      
    ROMs UNIQUE               : 61                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 6                       
    ROMs Dups Deleted         : 2                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 8                       
    ROMs Total Cleaned        : 56                      
    ROMs Total Cleaned Size   : 105.35MB                
    Start Time                : 05/04/2026 01:49:09     
    End Time                  : 05/04/2026 01:49:10     
    Elapsed Time              : 0.92                    

    Step 8/8 Clean No-Intro ROMs Results: (LYNX) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 87                      
    ROMs UNIQUE               : 85                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 10                      
    ROMs Dups Deleted         : 1                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 11                      
    ROMs Total Cleaned        : 76                      
    ROMs Total Cleaned Size   : 10.09MB                 
    Start Time                : 05/04/2026 01:49:10     
    End Time                  : 05/04/2026 01:49:11     
    Elapsed Time              : 0.54                    

    Step 8/8 Clean No-Intro ROMs Results: (MASTERSYSTEM) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 573                     
    ROMs UNIQUE               : 446                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 268                     
    ROMs Dups Deleted         : 24                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 292                     
    ROMs Total Cleaned        : 281                     
    ROMs Total Cleaned Size   : 35.76MB                 
    Start Time                : 05/04/2026 01:49:11     
    End Time                  : 05/04/2026 01:49:13     
    Elapsed Time              : 2.05                    

    Step 8/8 Clean No-Intro ROMs Results: (MEGADRIVE) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 1813                    
    ROMs UNIQUE               : 1307                    
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 750                     
    ROMs Dups Deleted         : 224                     
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 974                     
    ROMs Total Cleaned        : 839                     
    ROMs Total Cleaned Size   : 567.71MB                
    Start Time                : 05/04/2026 01:49:13     
    End Time                  : 05/04/2026 01:49:21     
    Elapsed Time              : 8.04                    

    Step 8/8 Clean No-Intro ROMs Results: (MSX1) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 937                     
    ROMs UNIQUE               : 612                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 92                      
    ROMs Dups Deleted         : 309                     
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 401                     
    ROMs Total Cleaned        : 536                     
    ROMs Total Cleaned Size   : 11.46MB                 
    Start Time                : 05/04/2026 01:49:21     
    End Time                  : 05/04/2026 01:49:36     
    Elapsed Time              : 14.96                   

    Step 8/8 Clean No-Intro ROMs Results: (MSX2) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 196                     
    ROMs UNIQUE               : 154                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 9                       
    ROMs Dups Deleted         : 39                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 48                      
    ROMs Total Cleaned        : 148                     
    ROMs Total Cleaned Size   : 17.55MB                 
    Start Time                : 05/04/2026 01:49:36     
    End Time                  : 05/04/2026 01:49:39     
    Elapsed Time              : 2.71                    

    Step 8/8 Clean No-Intro ROMs Results: (N64) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 950                     
    ROMs UNIQUE               : 498                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 352                     
    ROMs Dups Deleted         : 277                     
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 629                     
    ROMs Total Cleaned        : 321                     
    ROMs Total Cleaned Size   : 3737.25MB               
    Start Time                : 05/04/2026 01:49:39     
    End Time                  : 05/04/2026 01:50:51     
    Elapsed Time              : 72                      

    Step 8/8 Clean No-Intro ROMs Results: (N64DD) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 13                      
    ROMs UNIQUE               : 13                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 2                       
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 2                       
    ROMs Total Cleaned        : 11                      
    ROMs Total Cleaned Size   : 218.27MB                
    Start Time                : 05/04/2026 01:50:51     
    End Time                  : 05/04/2026 01:50:56     
    Elapsed Time              : 5.02                    

    Step 8/8 Clean No-Intro ROMs Results: (NES) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 2748                    
    ROMs UNIQUE               : 2001                    
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 1593                    
    ROMs Dups Deleted         : 342                     
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 1935                    
    ROMs Total Cleaned        : 813                     
    ROMs Total Cleaned Size   : 80.21MB                 
    Start Time                : 05/04/2026 01:50:56     
    End Time                  : 05/04/2026 01:51:02     
    Elapsed Time              : 6.13                    

    Step 8/8 Clean No-Intro ROMs Results: (NGP) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 11                      
    ROMs UNIQUE               : 11                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 5                       
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 5                       
    ROMs Total Cleaned        : 6                       
    ROMs Total Cleaned Size   : 2.61MB                  
    Start Time                : 05/04/2026 01:51:02     
    End Time                  : 05/04/2026 01:51:02     
    Elapsed Time              : 0.19                    

    Step 8/8 Clean No-Intro ROMs Results: (NGPC) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 120                     
    ROMs UNIQUE               : 88                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 70                      
    ROMs Dups Deleted         : 9                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 79                      
    ROMs Total Cleaned        : 41                      
    ROMs Total Cleaned Size   : 22.27MB                 
    Start Time                : 05/04/2026 01:51:02     
    End Time                  : 05/04/2026 01:51:03     
    Elapsed Time              : 0.87                    

    Step 8/8 Clean No-Intro ROMs Results: (O2EM) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 133                     
    ROMs UNIQUE               : 120                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 4                       
    ROMs Dups Deleted         : 13                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 17                      
    ROMs Total Cleaned        : 116                     
    ROMs Total Cleaned Size   : 0.31MB                  
    Start Time                : 05/04/2026 01:51:03     
    End Time                  : 05/04/2026 01:51:04     
    Elapsed Time              : 1.07                    

    Step 8/8 Clean No-Intro ROMs Results: (PCENGINE) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 420                     
    ROMs UNIQUE               : 354                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 21                      
    ROMs Dups Deleted         : 61                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 82                      
    ROMs Total Cleaned        : 338                     
    ROMs Total Cleaned Size   : 73.57MB                 
    Start Time                : 05/04/2026 01:51:04     
    End Time                  : 05/04/2026 01:51:07     
    Elapsed Time              : 3.01                    

    Step 8/8 Clean No-Intro ROMs Results: (PICO) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 343                     
    ROMs UNIQUE               : 320                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 44                      
    ROMs Dups Deleted         : 22                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 66                      
    ROMs Total Cleaned        : 277                     
    ROMs Total Cleaned Size   : 198.37MB                
    Start Time                : 05/04/2026 01:51:07     
    End Time                  : 05/04/2026 01:51:10     
    Elapsed Time              : 2.93                    

    Step 8/8 Clean No-Intro ROMs Results: (POKEMINI) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 44                      
    ROMs UNIQUE               : 24                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 7                       
    ROMs Dups Deleted         : 17                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 24                      
    ROMs Total Cleaned        : 20                      
    ROMs Total Cleaned Size   : 2.8MB                   
    Start Time                : 05/04/2026 01:51:10     
    End Time                  : 05/04/2026 01:51:10     
    Elapsed Time              : 0.43                    

    Step 8/8 Clean No-Intro ROMs Results: (PV1000) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 5                       
    ROMs UNIQUE               : 5                       
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 0                       
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 0                       
    ROMs Total Cleaned        : 5                       
    ROMs Total Cleaned Size   : 0.03MB                  
    Start Time                : 05/04/2026 01:51:10     
    End Time                  : 05/04/2026 01:51:10     
    Elapsed Time              : 0.18                    

    Step 8/8 Clean No-Intro ROMs Results: (SATELLAVIEW) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 244                     
    ROMs UNIQUE               : 219                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 47                      
    ROMs Dups Deleted         : 21                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 68                      
    ROMs Total Cleaned        : 176                     
    ROMs Total Cleaned Size   : 77.46MB                 
    Start Time                : 05/04/2026 01:51:10     
    End Time                  : 05/04/2026 01:51:12     
    Elapsed Time              : 1.98                    

    Step 8/8 Clean No-Intro ROMs Results: (SCV) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 25                      
    ROMs UNIQUE               : 23                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 0                       
    ROMs Dups Deleted         : 2                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 2                       
    ROMs Total Cleaned        : 23                      
    ROMs Total Cleaned Size   : 0.41MB                  
    Start Time                : 05/04/2026 01:51:12     
    End Time                  : 05/04/2026 01:51:13     
    Elapsed Time              : 0.49                    

    Step 8/8 Clean No-Intro ROMs Results: (SEGA32X) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 63                      
    ROMs UNIQUE               : 51                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 21                      
    ROMs Dups Deleted         : 9                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 30                      
    ROMs Total Cleaned        : 33                      
    ROMs Total Cleaned Size   : 57.51MB                 
    Start Time                : 05/04/2026 01:51:13     
    End Time                  : 05/04/2026 01:51:14     
    Elapsed Time              : 0.73                    

    Step 8/8 Clean No-Intro ROMs Results: (SG1000) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 208                     
    ROMs UNIQUE               : 101                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 85                      
    ROMs Dups Deleted         : 41                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 126                     
    ROMs Total Cleaned        : 82                      
    ROMs Total Cleaned Size   : 1.12MB                  
    Start Time                : 05/04/2026 01:51:14     
    End Time                  : 05/04/2026 01:51:16     
    Elapsed Time              : 2.23                    

    Step 8/8 Clean No-Intro ROMs Results: (SNES) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 3486                    
    ROMs UNIQUE               : 2267                    
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 2188                    
    ROMs Dups Deleted         : 474                     
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 2662                    
    ROMs Total Cleaned        : 824                     
    ROMs Total Cleaned Size   : 668.87MB                
    Start Time                : 05/04/2026 01:51:16     
    End Time                  : 05/04/2026 01:51:25     
    Elapsed Time              : 9.04                    

    Step 8/8 Clean No-Intro ROMs Results: (SUFAMI) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 13                      
    ROMs UNIQUE               : 13                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 0                       
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 0                       
    ROMs Total Cleaned        : 13                      
    ROMs Total Cleaned Size   : 4.4MB                   
    Start Time                : 05/04/2026 01:51:25     
    End Time                  : 05/04/2026 01:51:25     
    Elapsed Time              : 0.23                    

    Step 8/8 Clean No-Intro ROMs Results: (SUPERGRAFX) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 5                       
    ROMs UNIQUE               : 5                       
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 0                       
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 0                       
    ROMs Total Cleaned        : 5                       
    ROMs Total Cleaned Size   : 2.4MB                   
    Start Time                : 05/04/2026 01:51:25     
    End Time                  : 05/04/2026 01:51:25     
    Elapsed Time              : 0.18                    

    Step 8/8 Clean No-Intro ROMs Results: (SUPERVISION) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 63                      
    ROMs UNIQUE               : 63                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 0                       
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 0                       
    ROMs Total Cleaned        : 63                      
    ROMs Total Cleaned Size   : 1.27MB                  
    Start Time                : 05/04/2026 01:51:25     
    End Time                  : 05/04/2026 01:51:26     
    Elapsed Time              : 0.42                    

    Step 8/8 Clean No-Intro ROMs Results: (SUPRACAN) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 9                       
    ROMs UNIQUE               : 9                       
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 0                       
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 0                       
    ROMs Total Cleaned        : 9                       
    ROMs Total Cleaned Size   : 8.92MB                  
    Start Time                : 05/04/2026 01:51:26     
    End Time                  : 05/04/2026 01:51:26     
    Elapsed Time              : 0.25                    

    Step 8/8 Clean No-Intro ROMs Results: (VECTREX) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 45                      
    ROMs UNIQUE               : 41                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 13                      
    ROMs Dups Deleted         : 2                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 15                      
    ROMs Total Cleaned        : 30                      
    ROMs Total Cleaned Size   : 0.13MB                  
    Start Time                : 05/04/2026 01:51:26     
    End Time                  : 05/04/2026 01:51:26     
    Elapsed Time              : 0.39                    

    Step 8/8 Clean No-Intro ROMs Results: (VIDEOPACPLUS) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 34                      
    ROMs UNIQUE               : 33                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 7                       
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 7                       
    ROMs Total Cleaned        : 27                      
    ROMs Total Cleaned Size   : 0.14MB                  
    Start Time                : 05/04/2026 01:51:26     
    End Time                  : 05/04/2026 01:51:27     
    Elapsed Time              : 0.28                    

    Step 8/8 Clean No-Intro ROMs Results: (VIRTUALBOY) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 31                      
    ROMs UNIQUE               : 29                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 6                       
    ROMs Dups Deleted         : 2                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 8                       
    ROMs Total Cleaned        : 23                      
    ROMs Total Cleaned Size   : 8.04MB                  
    Start Time                : 05/04/2026 01:51:27     
    End Time                  : 05/04/2026 01:51:27     
    Elapsed Time              : 0.26                    

    Step 8/8 Clean No-Intro ROMs Results: (VSMILE) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 112                     
    ROMs UNIQUE               : 102                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 19                      
    ROMs Dups Deleted         : 10                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 29                      
    ROMs Total Cleaned        : 83                      
    ROMs Total Cleaned Size   : 305.42MB                
    Start Time                : 05/04/2026 01:51:27     
    End Time                  : 05/04/2026 01:51:30     
    Elapsed Time              : 2.57                    

    Step 8/8 Clean No-Intro ROMs Results: (WSWAN) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 116                     
    ROMs UNIQUE               : 111                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 1                       
    ROMs Dups Deleted         : 5                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 6                       
    ROMs Total Cleaned        : 110                     
    ROMs Total Cleaned Size   : 92.61MB                 
    Start Time                : 05/04/2026 01:51:30     
    End Time                  : 05/04/2026 01:51:31     
    Elapsed Time              : 1.35                    

    Step 8/8 Clean No-Intro ROMs Results: (WSWANC) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 95                      
    ROMs UNIQUE               : 92                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 2                       
    ROMs Dups Deleted         : 3                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 5                       
    ROMs Total Cleaned        : 90                      
    ROMs Total Cleaned Size   : 143.92MB                
    Start Time                : 05/04/2026 01:51:31     
    End Time                  : 05/04/2026 01:51:32     
    Elapsed Time              : 1.46    

  ======================================================================
  **********************************************************************
  >> SECTION: RESULTS BATOCERA [1/1]
  **********************************************************************
  ======================================================================
  Exceptions ROMs (No-Intro) Elapsed Time     : 5.55 seconds
  Cleanup    ROMs (No-Intro) Elapsed Time     : 289.24 seconds
  Exceptions ROMs (Custom)   Elapsed Time     : 0.01 seconds
  Cleanup    ROMs (Custom)   Elapsed Time     : 0.01 seconds
  Upload     ROMs (No-Intro) Elapsed Time     : 0.01 seconds
  Upload     ROMs (Custom)   Elapsed Time     : 0.01 seconds
  Distro Start Time                           : 05/04/2026 01:46:38
  Distro End Time                             : 05/04/2026 01:51:32
  Distro Elapsed Time                         : 294.83 seconds



  ======================================================================
  **********************************************************************
  >> SECTION: CLEAN CUSTOM ROMS BATOCERA [1/1]
  **********************************************************************
  ======================================================================
 
    Step 8/8 Clean No-Intro ROMs Results: (AMSTRADCPC) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 2416                    
    ROMs UNIQUE               : 2140                    
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 168                     
    ROMs Multicarts Kept      : 191                     
    ROMs Exceptions Deleted   : 91                      
    ROMs Dups Deleted         : 52                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 143                     
    ROMs Total Cleaned        : 2273                    
    ROMs Total Cleaned Size   : 80.71MB                 
    Start Time                : 05/04/2026 01:58:22     
    End Time                  : 05/04/2026 01:58:30     
    Elapsed Time              : 8.08                    

    Step 8/8 Clean No-Intro ROMs Results: (APPLE2) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 1006                    
    ROMs UNIQUE               : 458                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 141                     
    ROMs Multicarts Kept      : 219                     
    ROMs Exceptions Deleted   : 220                     
    ROMs Dups Deleted         : 122                     
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 342                     
    ROMs Total Cleaned        : 664                     
    ROMs Total Cleaned Size   : 37.88MB                 
    Start Time                : 05/04/2026 01:58:30     
    End Time                  : 05/04/2026 01:58:34     
    Elapsed Time              : 4.03                    

    Step 8/8 Clean No-Intro ROMs Results: (ATARI800) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 8333                    
    ROMs UNIQUE               : 3105                    
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 220                     
    ROMs Multicarts Kept      : 269                     
    ROMs Exceptions Deleted   : 3880                    
    ROMs Dups Deleted         : 1250                    
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 5130                    
    ROMs Total Cleaned        : 3203                    
    ROMs Total Cleaned Size   : 67.78MB                 
    Start Time                : 05/04/2026 01:58:34     
    End Time                  : 05/04/2026 01:58:48     
    Elapsed Time              : 14.62                   

    Step 8/8 Clean No-Intro ROMs Results: (COCO) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 109                     
    ROMs UNIQUE               : 97                      
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 38                      
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 38                      
    ROMs Total Cleaned        : 71                      
    ROMs Total Cleaned Size   : 0.85MB                  
    Start Time                : 05/04/2026 01:58:48     
    End Time                  : 05/04/2026 01:58:49     
    Elapsed Time              : 0.48                    

    Step 8/8 Clean No-Intro ROMs Results: (INTELLIVISION) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 189                     
    ROMs UNIQUE               : 161                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 38                      
    ROMs Dups Deleted         : 16                      
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 54                      
    ROMs Total Cleaned        : 135                     
    ROMs Total Cleaned Size   : 1.1MB                   
    Start Time                : 05/04/2026 01:58:49     
    End Time                  : 05/04/2026 01:58:50     
    Elapsed Time              : 0.61                    

    Step 8/8 Clean No-Intro ROMs Results: (MAME\MAME2003) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 1                       
    ROMs UNIQUE               : 1                       
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 0                       
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 0                       
    ROMs Total Cleaned        : 1                       
    ROMs Total Cleaned Size   : 1397.73MB               
    Start Time                : 05/04/2026 01:58:50     
    End Time                  : 05/04/2026 01:59:05     
    Elapsed Time              : 15.12                   

    Step 8/8 Clean No-Intro ROMs Results: (NEOGEO) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 149                     
    ROMs UNIQUE               : 149                     
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 0                       
    ROMs Multicarts Kept      : 0                       
    ROMs Exceptions Deleted   : 2                       
    ROMs Dups Deleted         : 0                       
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 2                       
    ROMs Total Cleaned        : 147                     
    ROMs Total Cleaned Size   : 2631.84MB               
    Start Time                : 05/04/2026 01:59:05     
    End Time                  : 05/04/2026 01:59:32     
    Elapsed Time              : 27.67                   

    Step 8/8 Clean No-Intro ROMs Results: (ZXSPECTRUM) BATOCERA [1/1]
    ============================================================
    ROMs TOTAL                : 61615                   
    ROMs UNIQUE               : 13760                   
    ROMs Msrc Dedup Deleted   : 0                       
    ROMs Multicart Games      : 547                     
    ROMs Multicarts Kept      : 585                     
    ROMs Exceptions Deleted   : 39702                   
    ROMs Dups Deleted         : 13219                   
    ROMs Non-Dup Deleted      : 0                       
    ROMs Total Deleted        : 52921                   
    ROMs Total Cleaned        : 8694                    
    ROMs Total Cleaned Size   : 301.47MB                
    Start Time                : 05/04/2026 01:59:32     
    End Time                  : 05/04/2026 02:01:47     
    Elapsed Time              : 134.7    
    
  ======================================================================
  **********************************************************************
  >> SECTION: RESULTS BATOCERA [1/1]
  **********************************************************************
  ======================================================================
  Exceptions ROMs (No-Intro) Elapsed Time     : 0.01 seconds
  Cleanup    ROMs (No-Intro) Elapsed Time     : 0.01 seconds
  Exceptions ROMs (Custom)   Elapsed Time     : 88.03 seconds
  Cleanup    ROMs (Custom)   Elapsed Time     : 205.35 seconds
  Upload     ROMs (No-Intro) Elapsed Time     : 0.01 seconds
  Upload     ROMs (Custom)   Elapsed Time     : 0 seconds
  Distro Start Time                           : 05/04/2026 01:56:54
  Distro End Time                             : 05/04/2026 02:01:47
  Distro Elapsed Time                         : 293.42 seconds
