Skip to content

rchaicowski/rommate

Repository files navigation

RomMate

Your ROM companion - Convert, compress, verify, and organize disc images and cartridge ROMs.


Features

Disc-Based Systems

  • 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

Cartridge ROMs

  • 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

Supported Systems (26+)

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

Installation

Windows

  1. Download RomMate.exe from the Releases page
  2. Double-click and run — no installation needed

Linux

  1. Download RomMate-x86_64.AppImage from the Releases page
  2. Double-click and run — no installation needed

Run from source (developers)

# 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

Usage

Quick Start

  1. Launch RomMate
  2. Select a folder containing your ROMs or disc images
  3. Choose an operation:
    • Convert to CHD
    • Extract CHD to original format
    • Create M3U playlists
    • Check ROM health
    • Validate & fix ROM names
  4. Click Start and let RomMate do the work!

Settings

Access settings via the ⚙️ gear icon:

  • Sound preferences
  • Folder behavior (remember last / default)
  • Conversion options
  • Language (9 languages supported)

Project Structure

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

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the GNU General Public License v3.0 (GPLv3).

See LICENSE file for full text.

What this means:

  • ✅ 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

Credits & Attribution

Tools & Libraries

  • 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

Databases

Special Thanks

  • The ROM preservation community
  • MAME development team
  • No-Intro and Redump projects

Bug Reports & Feature Requests

Found a bug or have a feature idea?

  • Open an issue on GitHub
  • Include your OS, app version, and steps to reproduce

Documentation

ROM Verification Confidence Levels

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
⚠️ Has Header 100% External header detected (fixable)

Support


Made with ❤️ for the ROM preservation community

About

RomMate - Your ROM companion for converting, compressing, and organizing disc images. Supports CHD conversion and M3U playlist creation for PS1, PS2, Dreamcast, Saturn, and more.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages