Highlights
- Non-ASCII cue sheets now convert correctly. Korean, Russian, and Japanese-named game files (e.g.
진설 사무라이 스피리츠 무사도열전.cue,Буря в пустыне-Vermilion Desert.cue) previously failed withcouldn't find bin filebecause the cue text encoding was misdetected. The app now detects the real encoding (UTF-8, Shift-JIS, Korean CP949, Cyrillic CP1251, GBK, Latin-1 and more) by matching referenced file names against the actual files on disk. - MP3 audio tracks are handled automatically. Rips that use MP3 audio tracks (common in Neo Geo CD and older PS1 sets —
Fatal Fury,King of Fighters,Metal Slug,Super Sidekicks,Silent Hilland friends) previously failed withUnhandled track type MP3. The app now decodes MP3 tracks to WAV before conversion using Windows Media Foundation. - bin-only archives convert without a cue. Archives containing only a
.binfile now get an auto-generated single-track cue (MODE2/2352, with an automaticMODE1/2352retry) instead of failing with "No supported primary files found in archive." - Smarter track-name resolution. Referenced files are resolved case-insensitively and zero-padding-tolerantly — a cue referencing
(Track 02).binfinds(Track 2).binon disk and vice versa.
Bug Fixes
CUE / TOC conversion failures ("couldn't find bin file")
- Fixed the biggest failure cluster across all reports: cues whose text was not UTF-8, cues with unquoted/malformed
FILElines, and cues referencing files that differ only by case or zero-padding. - When a cue needs it, the app now builds a self-contained, ASCII-safe working set (canonicalized cue + all referenced files) before handing it to chdman — previously only the
.cuefile was copied, which guaranteed failure for non-ASCII names. - If a conversion still fails with
couldn't find bin file, the log now lists the actual files present in the input folder so the problem is diagnosable at a glance.
MP3 audio track rejection
Unhandled track type MP3failures are gone: MP3 tracks are decoded to 16-bit PCM WAV (NAudio / Media Foundation) and the cue is rewritten before conversion. WAVE and AIFF tracks are untouched (chdman already supports them).
Archives
No supported primary files found in archive.is resolved for bin-only archives (auto-generated cue, see Highlights).- Multi-part RAR archives with a missing volume now show a specific message telling you to download all parts, instead of a generic "corrupted or unsupported format" error.
Disc images
- Non-sector-aligned images (corrupt/truncated
.isofiles) are flagged with a clear early warning. The app no longer waits for a full failed conversion to tell you the file is bad.
File deletion
- "Failed to delete original file" reports are addressed: deletion now retries for up to ~45 seconds with backoff (handles transient locks from antivirus or Explorer), and the read-only attribute is cleared automatically when it blocks deletion.
Diagnostics & reporting
- Disconnected network drives/shares (e.g.
\\NAS\...) now produce a clear "network location unavailable" message instead of a generic file-access error. - Data-side failures (corrupt archives, missing RAR volumes, unavailable network locations, non-sector-aligned images) are no longer sent to the bug-report API — only genuine application errors are reported.
- GitHub rate-limit responses during update checks are handled gracefully and no longer surface as bug reports.
Under the Hood
- Encoding detection engine for cue/toc text: BOM → strict UTF-8 → legacy code pages, filtered to losslessly decodable candidates and scored by filesystem resolution.
- Cue normalization pipeline: canonical UTF-8 rewrite (quoted
FILElines, resolved names, CRLF), used both before conversion and by the dependency validator, so valid cues are no longer rejected by a case-sensitive existence check. - Temporary-directory lifecycle hardening: work directories are guaranteed to be cleaned up on success, cancellation, timeout, and failure paths.
- Retry semantics: deletion retries only on transient lock errors; permanent failures (e.g. access denied) fail fast.
Full Changelog: release_3.2.0...release_3.3.0