Mount CHD (Compressed Hunks of Data) CD/DVD images as virtual read-only drives on Windows. Supports 37 console/format modes (console types plus generic CUE/ISO/BIN/RAW formats), selectable by CLI alias.
- Mount CHD files as virtual drives using Dokan or WinFsp
- 37 console/format modes — console types (ISO 9660, UDF, XDVDFS (Xbox), OperaFS (3DO), CD-i Green Book, HFS/HFS+ (Pippin), and more) plus generic CUE/ISO/BIN/WAV export modes
- Virtual CUE/BIN/ISO/WAV export — 8 disc image export modes (2352/2048 × CUE/ISO, CUE/ISO/WAV, CUE/BIN, CUE/BIN/WAV) for emulators and burning tools
- SingleFile ISO passthrough — single
image.isofile for emulators that expect raw ISO (xemu, RPCS3) - Read-only — never modifies your CHD files
- Automatic filesystem detection by track header — no manual setup needed for most discs
- Command-line interface for scripting and frontend integration
- WPF dark theme UI with console type dropdown, real-time log output, settings dialog
- Settings with DPAPI encryption — persisted across sessions
- Update checker — polls GitHub releases for new versions
- Serilog structured logging to file and debug output
- Single-file self-contained publish — distribute as one
.exe - x64 and ARM64 support
| Console / Format | CLI Alias | Filesystem | Notes |
|---|---|---|---|
| 3DO | 3do |
OperaFS | Block-based directory chain, ISO 9660 fallback |
| Amiga CD | amigacd |
ISO 9660 | |
| Amiga CD32 | amigacd32 |
ISO 9660 | |
| Amiga CDTV | amigacdtv |
ISO 9660 | |
| CD-i | cdi |
Green Book | Interleaved stream support, Path Table |
| CUE/BIN RAW 2048 | cuebin2048 |
Virtual | CUE + BIN at 2048 bytes/sector |
| CUE/BIN RAW 2352 | cuebin2352 |
Virtual | CUE + BIN at 2352 bytes/sector |
| CUE/BIN/WAV RAW 2048 | cuebinwav2048 |
Virtual | CUE + BIN + WAV audio tracks (2048-byte data) |
| CUE/BIN/WAV RAW 2352 | cuebinwav2352 |
Virtual | CUE + BIN + WAV audio tracks (2352-byte data) |
| CUE/ISO RAW 2048 | cueiso2048 |
Virtual | CUE sheet + ISO at 2048 bytes/sector |
| CUE/ISO RAW 2352 | cueiso2352 |
Virtual | CUE sheet + ISO at 2352 bytes/sector |
| CUE/ISO/WAV RAW 2048 | cueisowav2048 |
Virtual | CUE + ISO + WAV audio tracks (2048-byte data) |
| CUE/ISO/WAV RAW 2352 | cueisowav2352 |
Virtual | CUE + ISO + WAV audio tracks (2352-byte data) |
| FM Towns | fmtowns |
ISO 9660 | |
| ISO 9660 | iso9660 |
ISO 9660 / High Sierra | Joliet/UTF-16BE, SUSP/Rock Ridge |
| ISO RAW 2048 | isoraw2048 |
Raw sectors | Entire CHD as single image.iso (2048-byte units) |
| ISO RAW 2352 | isoraw2352 |
Raw sectors | Entire CHD as single image.iso (2352-byte units) |
| Neo Geo CD | neogeocd |
ISO 9660 | |
| Nuon | nuon |
UDF → ISO 9660 fallback | VM Labs Nuon DVD |
| PC Engine CD | pcengine |
ISO 9660 | Boot signature scan, fallback raw track files |
| PC-98 | pc98 |
ISO 9660 | |
| PC-FX | pcfx |
PC-FX ISO | Dedicated byte-offset VD scanner |
| Pico | pico |
ISO 9660 | Sega Pico |
| Pippin | pippin |
HFS → HFS+ → UDF → ISO | Apple Bandai Pippin |
| PlayStation (Auto) | psauto |
ISO 9660 | Auto-detect PS1/PS2/PS3/PSP |
| PS1 | ps1 |
ISO 9660 | Track-level parsing, aggressive PVD scan |
| PS2 | ps2 |
ISO 9660 | CD/DVD auto-detection |
| PS3 | ps3 |
UDF → ISO 9660 fallback | Multi-extent large file support |
| PS3 ISO RAW 2352 | isoraw2352 |
Virtual ISO passthrough | Single image.iso for RPCS3 |
| PSP | psp |
ISO 9660 | UMD image support |
| Sega Dreamcast | segadreamcast |
ISO 9660 | GD-ROM offset search (-45000, -150, 0, etc.) |
| Sega Genesis | segagenesis |
ISO 9660 | |
| Sega Saturn | segasaturn |
ISO 9660 | |
| X68000 | x68000 |
ISO 9660 → UDF fallback | |
| Xbox | xbox |
XDVDFS | Binary tree directory structure |
| Xbox 360 | xbox360 |
XDVDFS | XGD2/XGD3 offset detection |
| Xbox ISO RAW 2352 | isoraw2352 |
Virtual ISO passthrough | Single image.iso for xemu |
- Windows 10 or later (x64 or ARM64)
- .NET 10.0 Desktop Runtime (or self-contained build ships its own)
- Dokan Use latest version — install Dokany
or - WinFsp Use latest version — download WinFsp
Only one driver is needed. The Dokan executable uses Dokan; the WinFsp executable uses WinFsp. Both ship side-by-side.
Grab the latest self-contained executables from Releases:
CHDMounter.exe
No installation required. Just download and run.
CHDMounter.exe
Opens the main window. Click Browse to select a CHD file, pick a filesystem type from the dropdown, and click Mount. The drive appears in Explorer.
CHDMounter.exe [/l] [/a] [/s:<alias>] <chd_file> [mount_point]
| Argument | Description |
|---|---|
/l |
Launch Explorer after mount |
/a |
Auto-select drive letter |
/s:<alias> |
Select console system by alias (e.g. ps2, cuebin2352) |
<chd_file> |
Path to the .chd file (required) |
[mount_point] |
Drive letter/path for mount (optional, auto-picks if omitted) |
Notes:
- Arguments can be in any order
- Flags are prefixed with
/ - A console alias may also be passed as a positional argument (e.g.
CHDMounter.exe game.chd ps2) - If only
<chd_file>is provided without flags, a dialog appears asking you to choose
You can specify the console type using a string alias (case-insensitive). Numeric indexes are not supported — the alias list below is defined in the VideoGameFileSystemParser library and is the single source of truth.
| Console / Format | CLI Alias |
|---|---|
| 3DO | 3do |
| Amiga CD | amigacd |
| Amiga CD32 | amigacd32 |
| Amiga CDTV | amigacdtv |
| CD-i | cdi |
| CUE/BIN RAW 2048 | cuebin2048 |
| CUE/BIN RAW 2352 | cuebin2352 |
| CUE/BIN/WAV RAW 2048 | cuebinwav2048 |
| CUE/BIN/WAV RAW 2352 | cuebinwav2352 |
| CUE/ISO RAW 2048 | cueiso2048 |
| CUE/ISO RAW 2352 | cueiso2352 |
| CUE/ISO/WAV RAW 2048 | cueisowav2048 |
| CUE/ISO/WAV RAW 2352 | cueisowav2352 |
| FM Towns | fmtowns |
| ISO 9660 | iso9660 |
| ISO RAW 2048 | isoraw2048 |
| ISO RAW 2352 | isoraw2352 |
| Neo Geo CD | neogeocd |
| Nuon | nuon |
| PC Engine CD | pcengine |
| PC-98 | pc98 |
| PC-FX | pcfx |
| Pico | pico |
| Pippin | pippin |
| PlayStation (Auto) | psauto |
| PS1 | ps1 |
| PS2 | ps2 |
| PS3 | ps3 |
| PS3 ISO RAW 2352 | isoraw2352 |
| PSP | psp |
| Sega Dreamcast | segadreamcast |
| Sega Genesis | segagenesis |
| Sega Saturn | segasaturn |
| X68000 | x68000 |
| Xbox | xbox |
| Xbox 360 | xbox360 |
| Xbox ISO RAW 2352 | isoraw2352 |
Examples:
# Mount a PS2 game as drive M:
CHDMounter.exe /s:ps2 game.chd M:
# Mount an Xbox 360 game (auto-select drive letter)
CHDMounter.exe game.chd xbox360
# Mount a Dreamcast game and launch Explorer
CHDMounter.exe /l /s:segadreamcast game.chd
# Mount as virtual CUE/BIN (2352-byte sectors)
CHDMounter.exe /s:cuebin2352 disc.chd
# Mount with generic ISO 9660 parser
CHDMounter.exe /s:iso9660 data.chd N:
# Mount with console alias as a positional argument
CHDMounter.exe game.chd ps3If no console type is specified, a dialog appears asking you to choose.
- .NET 10.0 SDK
- Windows 10+ (x64 or ARM64)
CHD (Compressed Hunks of Data) is MAME's lossless compression format for CD/DVD/HDD images. CHDMounter uses CHDSharp to read all five CHD versions (V1-V5) and all compression codecs:
- General: zlib (deflate), LZMA, FLAC (headerless, 16-bit stereo), dynamic Huffman, Zstd
- CD-sector: CDZL (zlib), CDLZ (LZMA), CDFL (FLAC), CDZS (Zstd) — with ECC regeneration
- AV: AVHuff — audio+video Huffman for laserdisc/arcade captures
The SectorReader maps logical block addresses (LBAs) to byte offsets within CHD hunks. It:
- Parses track metadata (
CHT2/CHTR/CHGDtags) for multi-track CD images - Maps LBA to CHD frame number using track offsets (handles GD-ROM 45000-LBA shift)
- Reads and caches the compressed hunk via
ReadHunk() - Detects sector mode (Mode 1 = 16-byte header, Mode 2 = 24-byte header) by scanning for the CD sync pattern
00 FF×10 00 - Strips headers to deliver 2048 bytes of user data per sector
CHDMounter uses the VideoGameFileSystemParser library (v1.1.0, vendored into this solution as the VideoGameFileSystemParser project) to parse various console file systems from raw sectors and reconstruct directory trees. The console alias registry lives in the library and is the single source of truth for console selection.
Supported file systems include ISO 9660 (with Joliet/Rock Ridge), XDVDFS (Xbox), OperaFS (3DO), CD-i Green Book, UDF, and HFS/HFS+.
The ChdContainer bridges the parsed FsNode tree to the Dokan/WinFsp VFS layer:
- Dokan:
ChdFsimplementsIDokanOperations—CreateFileresolves paths,ReadFilemaps file offsets to sector reads,FindFileslists directories,GetVolumeInformationreports "CHDFS" read-only volume. - WinFsp:
ChdFsextendsFileSystemBase—Openresolves paths and returnsFileEntryas both file node and descriptor,Readcopies sector data into native memory viaMarshal.Copy,ReadDirectoryEntryenumerates children with.and...
For CUE/BIN/ISO/WAV modes, the container generates virtual entries dynamically:
- The
.cuefile contains standardFILE,TRACK, andINDEXdescriptors built from CHD track metadata. - The
.bin/.isofile maps reads to raw sector data (2352 or 2048 bytes per sector). .wavfiles are generated per audio track with standard WAV headers.
For SingleFile mode, the container serves the entire decompressed CHD image as a single image.iso file via CHDFile.Read().
| Aspect | Dokan | WinFsp |
|---|---|---|
| Driver | Kernel-mode (Dokan.sys) | User-mode (WinFsp) |
| NuGet | DokanNet 2.3.0.3 |
winfsp.net 2.1.25156 |
| FileSystem base | IDokanOperations |
FileSystemBase |
| Admin mount | Standard | Cross-integrity folder mounts with permissive DACL |
Both variants share the same core functionality and UI. Choose based on your driver preference.
WPF desktop application for batch testing and benchmarking CHD disc image parsing. Scans folders of .chd files, parses each one with a selected console file system parser, and generates summary reports with PDF export.
- Select a folder of CHD files and a target console type
- Batch-parse every
.chdfile in the folder - Report success/failure, file count, directory count, volume size, and timing per file
- View aggregated summary statistics (fastest, slowest, average, total throughput)
- Export results to PDF with QuestPDF
- Launch
CHDMounter_Tester.exe - Select a folder containing
.chdfiles - Choose a console type from the dropdown
- Click Run Tests to begin batch parsing
- Click Export PDF to save results
| Package | Version | Purpose |
|---|---|---|
CHDSharp |
1.2.0 | MAME CHD format reader |
coverlet.collector |
10.0.1 | Code coverage (Tests only) |
DokanNet |
2.3.0.3 | Dokan virtual filesystem driver bindings |
Microsoft.NET.Test.Sdk |
18.8.1 | Test SDK (Tests only) |
QuestPDF |
2026.7.2 | PDF report generation (Tester only) |
Serilog |
4.4.0 | Structured logging |
Serilog.Sinks.Debug |
3.0.0 | Visual Studio debug output logging |
Serilog.Sinks.File |
7.0.0 | File-based log output |
VideoGameFileSystemParser |
vendored | Filesystem parser (project reference — see Build from Source) |
winfsp.net |
2.1.25156 | WinFsp virtual filesystem driver bindings |
WPF-UI |
4.3.0 | Modern WPF theming (Fluent/Win11 style) |
xUnit |
2.9.3 | Test framework (Tests only) |
xunit.runner.visualstudio |
3.1.5 | VS test adapter (Tests only) |
- CHDSharp — https://github.com/drpetersonfernandes/CHDSharp
- VideoGameFileSystemParser — https://github.com/drpetersonfernandes/VideoGameFileSystemParser
- MAME — https://github.com/mamedev/mame
This project is licensed under the GPLv3 License – see the LICENSE file for details.
