Skip to content

v1.4.1

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 28 Aug 04:12
· 51 commits to main since this release

CHDSharp v1.4.1

What's New

GD-ROM support is now complete

  • extractcd correctly handles Dreamcast GD-ROM Redump images (REM SINGLE-DENSITY / HIGH-DENSITY, 45000-frame boundary, has_physical_pregap fixup). Works for both GDI and CUE/BIN.
  • Per-track extraction now uses the correct mode automatically (GDI vs CUEBIN vs TOC).

Smarter copy and parent handling

  • copy now picks the right default codecs for each image type automatically (HD/DVD → lzma,zlib,huff,flac / CD/GD → cdlz,cdzl,cdfl / laserdisc → avhu), same as chdman.
  • Parent CHDs: hunk size is inherited from the parent when omitted, and mismatched sizes are rejected as expected.

Fixed

Hard disks (createhd / createraw)

  • createhd -i image.img now writes GDDD geometry metadata — output is now byte-identical to chdman (was 51 bytes short).
  • createhd --ident now correctly reads CHS from the ATA IDENTIFY data.
  • Blank hard disks now correctly require -c none (was silently accepting compressed codecs).
  • createhd now validates interactions between -tp, -chs and -size / parent images.
  • createraw now correctly requires --unitsize when no parent is given and validates hunk size (16 B – 1 MiB, multiple of unit size).
  • listtemplates now shows all 17 templates (was missing 4 Quantum Fireball drives).

CD / GD-ROM extraction (extractcd)

  • extractcd now defaults to cooked sectors (2048/2352 bytes, no subcode, audio byte-swapped) — now matches chdman extractcd for all 43 CDs + 3 GD-ROMs. Use --raw to keep 2448-byte raw frames.
  • Library ExtractToDirectory(..., cooked: true) does the same — the default cooked: false is kept for backward compatibility.
  • Large extractions now use a 32 MiB aligned buffer and correct audio byte-swap (CUEBIN always, GDI only for CHD v5+).

DVD

  • createdvd / BuildDvdMetadata now writes an empty DVD tag (length 0) instead of a 0x00 byte — matches chdman.

Metadata

  • addmeta --valuetext no longer adds a trailing NUL (was text+'\0', now text).

CLI — stricter, now matches chdman

  • Unknown options, duplicate options and missing values now error correctly.
  • Each command now only accepts its valid options (e.g. createraw rejects -tp).
  • -isb/-ish/-ib/-ih slicing now correctly rejects mixing bytes and hunks.
  • 10MB with trailing B is now handled, and --size plain numbers are strict.

Diagnostics

  • info --verbose and verify --verbose now show per-codec hunk stats (SELF/PARENT/MINI buckets).
  • Progress now throttles to 0.5 s and errors go to stderr as Error: ....

Docs / Code quality

  • createcd -c cdzl on audio CDs is now documented: container bytes may differ due to FLAC subframe choice, but SHA-1 / verify are identical.
  • Zero build warnings. Added Meziantou.Analyzer to all projects.

Upgrade Notes

  • No API break. Library code keeps compiling.
  • CLI is now stricter. Scripts that passed invalid combos before (e.g. createhd blank with -c zlib, extractcd -tp 1, --splitbin without %t) will now fail — same as chdman. Fix the flags.
  • Cooked vs raw: If you compared ExtractToDirectory output to chdman extractcd, pass cooked: true.

Full Changelog: v1.4.0...v1.4.1