Your ROM companion - Convert, compress, verify, and organize disc images and cartridge ROMs.
- CHD Conversion - Convert CUE, GDI, CDI, ISO to compressed CHD format (40-60% space savings)
- CHD Extraction - Extract CHD files back to their original format (CUE/BIN, ISO)
- M3U Playlist Creation - Automatically organize multi-disc games
- CHD Verification - Verify CHD file integrity with chdman
- CUE/BIN Validation - Check file structure and references
- ROM Health Check - Verify ROMs against No-Intro/Redump databases
- Multi-level Verification - 5 confidence levels (100% to 80%)
- ROM Hack Detection - Identify translations and modifications
- Header Detection - Find external copier headers (SNES, NES)
- Fuzzy Matching - Smart filename and checksum comparison
Cartridges:
- Nintendo: NES, SNES, N64, GB, GBC, GBA, NDS, 3DS
- Sega: Genesis, Master System, Game Gear, 32X
- Atari: 2600, 5200
Discs:
- Sony: PS1, PS2, PS3, PSP
- Nintendo: GameCube, Wii
- Sega: Saturn, Dreamcast, Sega CD
- Microsoft: Xbox, Xbox 360
- SNK: Neo Geo CD
- Download
RomMate.exefrom the Releases page - Double-click and run — no installation needed
- Download
RomMate-x86_64.AppImagefrom the Releases page - Double-click and run — no installation needed
# Prerequisites
sudo apt install python3 python3-tk # Linux only
pip install tkinterdnd2 customtkinter
git clone https://github.com/rchaicowski/rommate.git
cd rommate
python3 rommate.py- Launch RomMate
- Select a folder containing your ROMs or disc images
- Choose an operation:
- Convert to CHD
- Extract CHD to original format
- Create M3U playlists
- Check ROM health
- Validate & fix ROM names
- Click Start and let RomMate do the work!
Access settings via the ⚙️ gear icon:
- Sound preferences
- Folder behavior (remember last / default)
- Conversion options
- Language (9 languages supported)
rommate/
├── core/
│ ├── chd_converter.py # CHD conversion logic
│ ├── m3u_creator.py # M3U playlist creation
│ ├── rom_health.py # ROM verification
│ └── cartridge_checker.py # Cartridge ROM validation
├── gui/
│ ├── main_window.py # Main interface
│ ├── processing_panel.py # Progress display
│ ├── completion_panel.py # Results screen
│ └── settings_panel.py # Settings interface
├── utils/
│ ├── config.py # Configuration management
│ ├── i18n.py # Internationalization
│ ├── sounds.py # Sound playback
│ ├── theme.py # UI theming
│ └── file_utils.py # File operations
├── databases/
│ ├── no-intro/ # Cartridge ROM databases
│ └── redump/ # Disc ROM databases
├── locales/ # Translations (EN, PT, ES, FR, DE, IT, JA, ZH)
├── icon.png # App icon (Linux)
├── icon.ico # App icon (Windows)
└── sounds/ # Sound effects
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the GNU General Public License v3.0 (GPLv3).
See LICENSE file for full text.
- ✅ You can use, modify, and distribute this software
- ✅ You must keep the source code open
- ✅ You must license derivative works under GPLv3
- ✅ You must credit the original authors
- MAME chdman - CHD compression and verification
- Python tkinter - GUI framework
- tkinterdnd2 - Drag and drop support
- customtkinter - Modern UI widgets (toggle switch)
- pycaw - Windows audio control
- The ROM preservation community
- MAME development team
- No-Intro and Redump projects
Found a bug or have a feature idea?
- Open an issue on GitHub
- Include your OS, app version, and steps to reproduce
| Level | Confidence | Description |
|---|---|---|
| ✅ Verified Good Dump | 100% | Exact checksum match with database |
| ✅ Probable Good Dump | 99% | 2/3 checksums match |
| 📝 Likely Match | 95% | Filename + size match |
| 🔍 Name Match | 80% | Filename similar, checksum differs |
| ❓ Unknown | N/A | Not in database |
| 🎨 ROM Hack | 90% | Modification/translation detected |
| 100% | External header detected (fixable) |
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Ko-fi: Support the project
Made with ❤️ for the ROM preservation community