Skip to the content.

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


← Back to the repository