BatchConvertToCHD — Wiki
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.
📚 Documentation Index
| # | 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 |
🔑 Quick Facts
| 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 |
🗺️ Repository Layout
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
🚀 Where to Start
- I just want to use the app → Getting Started and User Guide
- I want to build from source → Getting Started → Building from Source
- I want to understand the internals → Architecture → Conversion Pipeline
- I want to contribute or add tests → Testing