Skip to content

Releases: purelogiccode/VideoGameFileSystemParser

v1.2.0

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 11 Aug 16:30

v1.2.0 — Sector-size-aware generic formats, ConsoleTypeRegistry & documentation

New features

  • Sector-size-aware generic formats. The generic raw / virtual-export console types are now split by sector size so each image type is unambiguous:
    • GenericIsoRaw → GenericIsoRaw2352 and GenericIsoRaw2048
    • GenericCueIso → GenericCueIso2352 and GenericCueIso2048
    • GenericCueBinWav → GenericCueBinWav2352 and GenericCueBinWav2048
    • GenericCueIsoWav → GenericCueIsoWav2352 and GenericCueIsoWav2048
    • GenericCueBin2352Default → renamed to GenericCueBin2352
  • New ConsoleTypeRegistry (VideoGameFileSystemParser.Models) — the single source of truth for console type display names and CLI aliases:
    • All — ordered list of ConsoleTypeInfo entries (type, display name, aliases)
    • Parse(alias) — case-insensitive alias resolution (e.g. "ps2", "cuebin2352")
    • GetDisplayName(type) / GetAliases(type)
    • Multiple display entries can resolve to the same ConsoleType (e.g. "PS3 ISO RAW 2352", "Xbox ISO RAW 2352" and "ISO RAW 2352" all map to GenericIsoRaw2352)
  • ParserFactory.GetAllSupportedConsoles() is now registry-driven — it returns the same list used by the UI/CLI, so the two can never drift apart.
  • Code modernization. Consistent use of var across all parsers (HFS parser included). No API or behavior changes — this is a source-only cleanup.
  • Professional multi-page documentation. The repository now ships a complete wiki-style documentation set under docs/:

Fixes

  • Virtual CUE export for 2048-cooked variants: audio tracks inside BIN files now always use 2352-byte sectors (previously they were written at the cooked 2048-byte size, producing unreadable audio tracks).
  • CUE track mode strings now reflect the actual sector size used per track (e.g. MODE1/2352, MODE2/2048) instead of hard-coding 2048 for ISO exports.

Breaking changes

  • Removed: ConsoleType.GenericIsoRaw, ConsoleType.GenericCueIso, ConsoleType.GenericCueBinWav, ConsoleType.GenericCueIsoWav, ConsoleType.GenericCueBin2352Default.
    Replace with the corresponding sector-size-aware values above.
  • ConsoleType member order changed (registry-ordering); do not rely on numeric enum values — resolve types through ConsoleTypeRegistry instead.

Upgrade guide

v1.1.0 v1.2.0
ConsoleType.GenericIsoRaw ConsoleType.GenericIsoRaw2352 (or GenericIsoRaw2048)
ConsoleType.GenericCueBin2352Default ConsoleType.GenericCueBin2352
ConsoleType.GenericCueIso ConsoleType.GenericCueIso2352 or GenericCueIso2048
ConsoleType.GenericCueBinWav ConsoleType.GenericCueBinWav2352 or GenericCueBinWav2048
ConsoleType.GenericCueIsoWav ConsoleType.GenericCueIsoWav2352 or GenericCueIsoWav2048

Full Changelog: v1.1.0...v1.2.0

v1.1.0

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 08 Aug 03:11

What's New in VideoGameFileSystemParser

1.1.0 (2026-08-07)

Fixed: Virtual CUE/BIN/ISO/WAV export

This release fixes three related bugs in the virtual disc export — the .cue, .bin, .iso, and .wav files exposed when a CHD is mounted as GenericCueBin2352Default, GenericCueBin2048, GenericCueIso, GenericCueBinWav, or GenericCueIsoWav.

  • Pregap shift (tracks started 2 s late / bled into each other / last track unreadable) — Track offsets no longer add the pregap frames a second time. chdman stores each track's pregap (e.g. the 2-second pregap on Neo Geo CD) as silence at the start of the track's chunk inside the CHD, and FRAMES already includes those frames. The previous code added the pregap on top of that offset, shifting every track after the first pregap by 150 frames (2 s): music started late, each track's tail bled into the next track's intro, and the last track mapped past the end of the CHD file, leaving its final 148 frames unreadable — the declared BIN/WAV sizes exceeded the readable content.
  • Missing ISO audio — In CUE/ISO export (GenericCueIso), the .iso file now contains the audio tracks the CUE sheet references (audio sectors at 2352 bytes/sector), so emulators no longer hit end-of-file when reading CD audio. The declared file size now matches the actual content.
  • Truncated tracks / incorrect sizes — Declared BIN/ISO sizes and the readable content now agree:
    • data tracks use the configured sector size (2352 bytes for BIN, 2048 for ISO);
    • audio tracks inside a single BINARY file use raw 2352-byte sectors (2048 in the cooked GenericCueBin2048 mode);
    • WAV exports contain exactly the audible track data, (frames - pregap) * 2352 bytes, starting at INDEX 01 00:00:00.

Changed

  • WAV export skips the stored pregap silence, so each *_TrackNN.wav begins at the music and matches the INDEX 01 00:00:00 written in the generated CUE sheet.
  • Removed a redundant global using from GlobalUsings.cs (no API change).

Full Changelog: v1.0.0...v1.1.0

v1.0.0

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 26 Jul 21:15