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
bin
directory -
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.py
Or 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_tab
function 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