Skip to content

release_3.1.0

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 26 Jul 03:39
· 36 commits to master since this release

New Features

Improved CloneCD (.ccd) Support

  • Full CloneCD disc image conversion support via the new CCDSharp library
  • .ccd files are now converted to CHD by generating a CUE/BIN pair from the .ccd/.img set and then passing through chdman
  • CloneCD files inside archives (.zip, .7z, .rar) are automatically detected and converted
  • When processing archives, .img files that belong to a CloneCD set are no longer independently converted (avoiding duplicate output)
  • Original .ccd, .img, .sub, and .cdt files are cleaned up when "Delete originals" is enabled

CSOSharp (replaces maxcso.exe)

  • CSO/CISO decompression is now handled by the CSOSharp library
  • Supports both CSO v1 (deflate/zlib) and CSO v2/ZSO (LZ4) formats
  • Removes the maxcso.exe dependency — no more x64-only limitation for CSO files
  • ARM64 users can now process .cso files (previously unavailable)

PBPSharp (replaces psxpackager.exe)

  • PBP extraction is now handled by the PBPSharp library
  • Supports single-disc and multi-disc PBP files with full SFO metadata parsing
  • Generates CUE sheets that match the original psxpackager output
  • Removes the psxpackager.exe dependency

Improvements

CHD Conversion

  • Non-ASCII file paths (Japanese, Chinese, etc.) are now handled by copying files to a temporary ASCII-safe path before conversion, avoiding chdman encoding issues
  • Automatic retry with createdvd when chdman reports "Unrecognized track type" on a createcd attempt
  • Added -us 2352 flag for .raw files to specify the sector size explicitly
  • Improved error reporting when chdman exits with a non-zero code but produces a valid output file
  • Added file size validation (must be divisible by sector size 2048) before conversion to catch corrupt files early
  • Non-ASCII file paths in CUE/GDI/TOC files are now handled with encoding fallback (Shift-JIS, GB2312, Windows-1252)

Robustness

  • KillChdmanProcesses method added to clean up lingering chdman processes when file deletion retries are exhausted
  • File operation retry count increased from 3 to 5
  • Disk space warnings are now logged as informational messages instead of warnings (reducing false bug reports)
  • Bug report API sink now filters out informational messages (disk space, rate-limiting, etc.)
  • Updated SharpCompress from 0.50.0 to 0.50.1

Code Quality

  • Replaced object lock fields with the new Lock type for improved thread safety semantics
  • Replaced string.Contains() and string == comparisons with explicit StringComparison.Ordinal throughout
  • Replaced Task.Run() fire-and-forget patterns with _ = Task.Run() discard to suppress CS4014 warnings
  • Added .ConfigureAwait(false) to library-level async calls
  • Reduced public API surface: many classes and members changed from public to internal
  • Added Meziantou.Analyzer for code analysis

UI

  • Simplified status bar: removed MAXCSO and PSXPACKAGER dependency indicators (no longer needed)
  • Updated About window links to reference CSOSharp, PBPSharp, and CCDSharp

Bug Fixes

  • Fixed PBP magic value validation and SFO offset parsing in PBPSharp
  • Fixed CUE/GDI/TOC file reading for non-UTF-8 encodings (added fallback through Shift-JIS, GB2312, Windows-1252)
  • Fixed int.TryParse call to use CultureInfo.InvariantCulture for timeout parsing
  • Fixed ex.Message.Contains() to use StringComparison.Ordinal for consistent behavior

Dependencies Removed

Removed Replaced By
maxcso.exe CSOSharp library
psxpackager.exe PBPSharp library
Resources/BASE.PBP, Resources/DATA.PSP, etc. No longer needed (PBPSharp handles extraction)

Full Changelog: release_3.0.0...release_3.1.0