A Windows desktop application for validating ROM files against DAT files and generating new No-Intro compliant DAT files from your collection.
- ROM Validation: Validate your ROM collection against No-Intro DAT files
- DAT File Generation: Generate new No-Intro compliant DAT files from your ROM collection
- Duplicate Detection: Identify duplicate ROM files in your collection
- Multiple Hash Support: Supports CRC32, MD5, SHA-1, and SHA-256 hash verification
- Archive Support: Can read ROMs from 7z archives using SharpSevenZip
- Bug Reporting: Built-in bug reporting system for error tracking
- Version Checking: Automatic GitHub version checking for updates
- Usage Statistics: Anonymous usage statistics tracking
- .NET 10.0 or higher
- Windows 10/11 (WPF application)
- 7z native libraries (included via SharpSevenZip package)
- Clone the repository:
git clone https://github.com/drpetersonfernandes/RomValidator.git
- Open the solution in Visual Studio 2022 or later:
CSharp_RomValidator.sln - Build the solution (Ctrl+Shift+B)
- Run the application (F5)
Check the GitHub Releases page for pre-built binaries.
- Launch the application
- Navigate to the "Validate" tab
- Load a DAT file (No-Intro format)
- Select your ROM directory or archive
- Click "Validate" to start the validation process
- View results showing which ROMs are valid, missing, or have incorrect hashes
- Navigate to the "Generate DAT" tab
- Select your ROM directory
- Configure output settings (name, description, version)
- Click "Generate" to create a new DAT file
- Save the generated DAT file for use with other ROM management tools
CSharp_RomValidator/
├── RomValidator/ # Main WPF application
│ ├── Models/ # Data models
│ │ ├── NoIntro/ # No-Intro DAT file models (Datafile, Game, Rom, Header)
│ │ ├── BugReportPayload.cs # Bug reporting model
│ │ ├── GitHubRelease.cs # GitHub release model
│ │ ├── GitHubAsset.cs # GitHub release asset model
│ │ └── GameFile.cs # Game file model with hash values
│ ├── Services/ # Business logic services
│ │ ├── HashCalculator.cs # Hash calculation service (CRC32, MD5, SHA1, SHA256)
│ │ ├── Crc32Algorithm.cs # CRC32 hash algorithm implementation
│ │ ├── LoggerService.cs # Logging and error tracking
│ │ ├── BugReportService.cs # Bug reporting service
│ │ ├── GitHubVersionChecker.cs # Version checking
│ │ ├── ApplicationStatsService.cs # Usage statistics tracking
│ │ └── TempDirectoryHelper.cs # Temporary directory management
│ ├── Pages/ # Application pages
│ │ ├── ValidatePage.xaml # ROM validation UI
│ │ └── GenerateDatPage.xaml # DAT generation UI
│ ├── MainWindow.xaml # Main application window
│ ├── AboutWindow.xaml # About dialog
│ ├── DuplicateFilesWindow.xaml # Duplicate files dialog
│ └── App.xaml.cs # Application entry point with global exception handling
├── RomValidator.Tests/ # Unit tests (xUnit)
└── CSharp_RomValidator.sln # Visual Studio solution
dotnet builddotnet test- SharpSevenZip (2.0.36): For 7z archive support
- WPF: Windows Presentation Foundation for UI
- xUnit (2.9.3): Unit testing framework
- Microsoft.NET.Test.Sdk (18.4.0): Test SDK
- coverlet.collector (10.0.0): Test coverage
- C# 14 language features
- Nullable reference types enabled
- Implicit usings enabled
- Async/await pattern for I/O operations
- Fork the repository
- Create a feature branch
- Make your changes
- Add or update tests as needed
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Website: http://www.purelogiccode.com
- GitHub Issues: Report bugs or request features
- Bug Reports: Built-in bug reporting system in the application
- v2.6.0: Current version (see AssemblyVersion in csproj)
- Check GitHub Releases for detailed changelog
- No-Intro for the DAT file format specification
- SharpSevenZip for archive support
- All contributors and testers