A modern GUI for CHDMAN operations, allowing you to compress, decompress, and manage disk images with ease.
- Version 1.0.0: Basic GUI implementation complete with modern interface and theme system
- Version 1.1.0: CHDMAN integration complete with proper worker tracking and intelligent disc image handling
- Version 1.2.0-dev: Currently enhancing batch processing capabilities
See the CHANGELOG.md for detailed version history and the ROADMAP.md for development plans.
- Compression: Convert disk images (ISO, BIN, IMG, etc.) to CHD format for efficient storage
- Media-Specific Compression Profiles: Optimized compression settings for CD, DVD, and hard disk images
- Extraction: Extract disk images from CHD files to various formats
- Batch Processing: Process multiple files in batch mode
- Tool Plugins: Extensible plugin system for additional tools
- Dynamic Theming: Customizable themes with accessibility validation
- Modern UI: Clean, responsive interface built with PySide6 (Qt)
- Python 3.8+
- PySide6
- CHDMAN executable (part of MAME)
-
Clone this repository
-
Install dependencies:
pip install -r requirements.txt -
Run the setup script:
setup_chdman.bat(Windows) or./setup_chdman.sh(Linux/macOS) -
Copy the CHDMAN executable to the
bindirectory -
Run the application:
python main.py -
Clone this repository:
git clone https://github.com/yourusername/retroclamp.git cd retroclamp -
Install dependencies:
pip install -r requirements.txt -
Run the application:
python main.pyOr use the provided batch file:
run_retroclamp.bat
RetroClamp features optimized compression profiles for different media types and gaming consoles:
- CD Images: Uses specialized CD algorithms (cdlz, cdzl, cdfl) with 9.8KB hunk size
- DVD Images: Uses optimized settings for DVD data with 2KB (sector-sized) hunks
- Hard Disk Images: Uses settings optimized for block-based storage with 4KB hunks
Each media type has three profile options:
- Optimal: Best compression ratio (slower)
- Balanced: Good balance of speed and compression
- Fast: Fastest compression (larger files)
RetroClamp now automatically detects and applies optimized settings for specific gaming consoles:
- PlayStation 1: Optimized CD compression for PS1 games
- PlayStation 2: DVD-specific settings for PS2 games
- PSP: UMD-optimized compression settings
- Dreamcast: GD-ROM specific settings with 8-sector hunks
- SEGA CD/Mega CD: Optimized for SEGA CD games
- SEGA Saturn: Saturn-specific CD compression
- TurboGrafx-CD/PC Engine CD: Optimized for TG-CD games
Console detection is based on file extensions, sizes, and filename patterns. See README_COMPRESSION_PROFILES.md for detailed information.
core/: Core functionality moduleschdman.py: CHDMAN wrapper for compression/extractionarchive.py: Archive handling (ZIP, 7z, RAR)file_scanner.py: File scanning and filteringcheckpoint.py: Checkpoint system for pause/resume
gui/: GUI componentshome_tab.py: Home screencompression_tab.py: Compression interfaceextraction_tab.py: Extraction interfacetheme_tab.py: Theme customizationsettings_tab.py: Application settings
modules/: Shared modulestheme_config.py: Theme configurationtheme_utils.py: Theme utilitiesui_functions.py: UI functionsapp_settings.py: Settings management
tools/: Plugin system and tools__init__.py: Plugin managerscummvm_generator.py: SCUMMVM configuration generator
config/: Configuration filestheme.json: Default themetheme_light.json: Light theme
resources/: Resources like icons
RetroClamp supports a plugin system for adding new tools. To create a plugin:
- Create a new Python file in the
tools/directory - Define the following metadata variables:
PLUGIN_NAME = "Your Plugin Name" PLUGIN_DESCRIPTION = "Description of your plugin" PLUGIN_VERSION = "1.0.0" PLUGIN_AUTHOR = "Your Name"
- Implement a
register_tabfunction that takes a parent widget and adds your tool's UI to it
See tools/scummvm_generator.py for an example.
MIT
- CHDMAN - The compression/extraction tool
- PyDracula - UI design inspiration
- Tabler Icons - Icons used in the application
- namDHC and Tools-CHD - CLI inspiration
- RetroBat, Batocera, and Libretro - UX flow inspiration