Welcome to the official wiki for Batch Convert to CHD, a high-performance Windows desktop utility for converting disk images into the Compressed Hunks of Data (CHD) format.
This documentation covers the project from both a user and a developer perspective: features, workflows, architecture, services, utilities, embedded libraries, testing, and troubleshooting.
| # |
Page |
Audience |
Contents |
| 1 |
Project Overview |
Everyone |
What the app does, key features, supported formats, content-based routing, technical logic |
| 2 |
Getting Started |
Users & devs |
Requirements, installation, building from source, command line usage |
| 3 |
Architecture |
Developers |
Solution layout, projects, dependency graph, startup sequence, data flow |
| 4 |
User Guide |
Users |
The three workflows: conversion, extraction, verification; options and hotkeys |
| 5 |
Conversion Pipeline (Technical) |
Developers |
Content resolution, per-format routing, chdman wrapper, cue normalization, ISZ/ECM/Alcohol/split sets, error handling |
| 6 |
Extraction & Verification (Technical) |
Developers |
CHD extraction internals, verification, file moves, partial-extraction handling |
| 7 |
Services Reference |
Developers |
ArchiveService, UpdateService, StatsService, FileWatcherService, AppHttpClient, more |
| 8 |
Utilities Reference |
Developers |
PathUtils, CueNormalizer, CueWorkDirectory, GameFileParser, BinCueGenerator, content detection, ISZ/ECM/Alcohol, more |
| 9 |
Bug Reporting System |
Developers |
Bug report API contract, sink, exclusion patterns, environment details |
| 10 |
Embedded Libraries |
Developers |
CCDSharp, CSOSharp, PBPSharp: purpose, API, integration |
| 11 |
Testing |
Developers |
Test project layout, coverage by file, integration tests, how to run |
| 12 |
Application Data |
Users & devs |
AppData layout: logs, screenshots, temp directories, cleanup |
| 13 |
Troubleshooting |
Users & devs |
Common errors, their meaning, and how to resolve them |
| Fact |
Value |
| Application name |
BatchConvertToCHD |
| Latest version |
3.4.2 |
| Target framework |
.NET 10.0 (net10.0-windows), WPF |
| Platform |
Windows 10 / 11, x64 and ARM64 |
| License |
GPL v3.0 |
| Primary binary |
chdman (MAME Project), bundled as chdman.exe / chdman_arm64.exe |
| External tools needed |
None beyond the bundled chdman and 7za — every input format is handled in-process |
| Output format |
.chd (Compressed Hunks of Data) |
| Logs |
%LocalAppData%\BatchConvertToCHD\logs |
| Screenshots |
%LocalAppData%\BatchConvertToCHD\screenshots (F8 hotkey) |
| Bug reporting |
Automatic, opt-out by design — sent to the PureLogicCode BugReport API |
CSharp_BatchConvertToCHD/
├── BatchConvertToCHD/ # WPF application (net10.0-windows)
│ ├── MainWindow.xaml(.cs) # Main UI + conversion/extraction/verification logic
│ ├── App.xaml(.cs) # Startup, Serilog, exception handlers
│ ├── AppConfig.cs # Central configuration constants
│ ├── Models/ # FileItem, GitHubRelease, PbpExtractionResult
│ ├── Services/ # Archive, BugReport, FileWatcher, Stats, Update, ...
│ └── Utilities/ # PathUtils, CueNormalizer, GameFileParser, ...
│ ├── Ecm/ # in-process ECM decoding
│ ├── Isz/ # in-process ISZ decompression
│ └── Mds/ # Alcohol 120% .mds/.mdf support
├── BatchConvertToCHD.Tests/ # xUnit test suite (777 tests)
├── CCDSharp/ # CloneCD (.ccd/.img/.sub) parsing library
├── CSOSharp/ # CSO/CISO decompression library (deflate + LZ4)
├── PBPSharp/ # PlayStation PBP extraction + SFO parsing library
├── docs/ # This wiki
├── References/ # Third-party reference sources (not part of the build)
└── CSharp_BatchConvertToCHD.sln # Solution
← Back to the repository