Skip to content

Releases: Ashnar2602/XGDTool

XGDTool v1.4.0 — High-Throughput Engine & Quality of Life Overhaul

Choose a tag to compare

@Ashnar2602 Ashnar2602 released this 03 Sep 21:28

XGDTool v1.4.0 — High-Throughput Engine & Quality of Life Overhaul

Version 1.4.0 is a major Engine Throughput & Quality of Life Overhaul by Ashnar2602, featuring hardware-accelerated CRC32 vectorization, asynchronous double-buffering I/O prefetching, real-time MB/s throughput and ETA tracking, an image verification diagnostic engine, smart title renamer, Windows Explorer context menu integration, and automated post-conversion workflows.


Key Improvements & Features

  • Hardware-Accelerated Vectorized CRC32 (ChecksumHelper.h):

    • Implemented ARMv8-A ACLE hardware CRC32 (__ARM_FEATURE_CRC32 via __crc32d and __crc32b), reaching 15–20 GB/s on modern ARM64 devices (Android & Apple Silicon).
    • Implemented Slice-by-8 vectorized algorithm on x86_64, processing 8 bytes per clock cycle straight in L1 cache (4–5 GB/s per core).
  • Asynchronous Double-Buffering Ring Pipeline (CSOWriter & CCIWriter):

    • Integrated ping-pong double-buffering with background asynchronous read prefetching (std::async(std::launch::async, ...)).
    • Completely hides storage read latency behind parallel LZ4 compression passes, keeping worker threads continuously fed at maximum NVMe speed.
  • OS Sequential Hints & Zero-Fragmentation Pre-allocation (IOHints.h):

    • Integrated FILE_FLAG_SEQUENTIAL_SCAN on Windows and posix_fadvise(POSIX_FADV_SEQUENTIAL | POSIX_FADV_WILLNEED) on Linux/Android.
    • Zero-fragmentation disk pre-allocation (resize_file / posix_fallocate) eliminates dynamic cluster fragmentation during file extraction.
  • Real-Time Throughput (MB/s) & Dynamic ETA Countdown:

    • Live throughput metric (MB/s) and formatted ETA countdown (hh:mm:ss) computed in XGDLog::print_progress() for both terminal CLI output and GUI status.
  • Diagnostic Image Verification Mode (--verify / UI button):

    • New diagnostic scanner inspecting disc geometry (XGD2/XGD3, layer break), AVL filesystem tree, primary executable (default.xex / default.xbe), Title ID, Title Name, and streaming checksums (CRC32, MD5, SHA-1) without modifying disc images.
  • Smart Game Renamer (--smart-rename / UI option):

    • Automatically formats output file and directory names as [<TitleID>] <GameName> using internal executable certificates and online title matching.
  • Windows Explorer Shell Context Menu (--register-shell / --unregister-shell):

    • Instant non-elevated context menu integration in HKEY_CURRENT_USER\Software\Classes\SystemFileAssociations for .iso, .xiso, .cso, .cci, and .zar.
  • Quality of Life Enhancements:

    • Added completion sound alert (wxBell()), automatic destination folder opening upon queue completion, and Android keep-screen-on setting.

Included Release Binaries

  • XGDTool-GUI.exe: Complete modern Windows GUI application with Dark Mode, Drag & Drop, batch queue manager, and multilingual support.
  • XGDTool-CLI.exe: Standalone Windows command-line executable for terminal automation, scripts, and batch processing.
  • XGDTool-Android.apk: Native Android app with Material 3 Xbox Dark UI, Zero-Copy storage access, background service, and multilingual localization.

XGDTool v1.3.1 — Zero-Copy Engine & Critical ZAR Fix

Choose a tag to compare

@Ashnar2602 Ashnar2602 released this 03 Sep 15:55

XGDTool v1.3.1 — Zero-Copy Engine & Critical ZAR Fix

Version 1.3.1 brings critical engine fixes and major Android storage optimizations by Ashnar2602, featuring Zero-Copy direct storage access (eliminating up to 20 GB of duplicate cache consumption on mobile devices), a critical fix for ZAR-to-image conversion across all platforms, and a redesigned responsive Android UI.


Key Improvements & Fixes

  • Critical Fix for ZAR ➔ Image Conversions (InputHelper::create_image):

    • Fixed an engine bug where extracting a .zar archive into an intermediate directory caused the output image path to be computed inside the temporary folder (_temp/_temp.iso), leading to the generated image being deleted during post-conversion cleanup.
    • Preserved the original input file path so images are placed into their correct title folder, and isolated temporary extraction files in a dedicated hidden .xgd_temp folder.
  • Android Zero-Copy Direct Storage Access (MANAGE_EXTERNAL_STORAGE):

    • Enabled all-files access permission and implemented direct SAF path resolution in PathUtils.kt.
    • Conversions now read and write directly to the device storage at full native UFS speed without duplicating input and output files into internal app cache, saving over 15–20 GB of storage.
  • Android 2-Step ZAR Conversion Pipeline (ConvertService.kt):

    • Automated 2-step conversion for ZAR archives (clean extraction to .xgd_zar_temp followed by direct image building), guaranteeing 100% reliability.
  • Verified Cache Cleanup & MediaStore Indexing:

    • Intermediate cache files are verified for exact byte length before removal, ensuring no data loss while keeping device flash clean. User source files are never touched.
    • Integrated MediaScannerConnection.scanFile() so newly generated ISO, CSO, CCI, GoD, and ZAR files show up immediately in all Android file explorers.
  • Android UI Modernization:

    • Fully adaptive scrollable interface, compact side-by-side collapsible source/destination cards, collapsible conversion queue, expandable log viewer, and sticky footer action bar.
    • Added top app bar author attribution (by Ashnar2602) and neon version badge.

Included Release Binaries

  • XGDTool-GUI.exe: Complete modern Windows GUI application with Dark Mode, Drag & Drop, batch queue manager, and multilingual support.
  • XGDTool-CLI.exe: Standalone Windows command-line executable for terminal automation, scripts, and batch processing.
  • XGDTool-Android.apk: Native Android app with Material 3 Xbox Dark UI, Zero-Copy storage access, background service, and multilingual localization.

XGDTool v1.3.0: High-Performance Engine Overhaul

Choose a tag to compare

@Ashnar2602 Ashnar2602 released this 02 Sep 22:18

XGDTool v1.3.0 — High-Performance Engine Overhaul

Version 1.3.0 is a comprehensive High-Performance Engine Overhaul by Ashnar2602. Every supported disc and archive format has been refactored for maximum throughput across all available CPU cores and modern NVMe/SSD storage, eliminating micro-I/O bottlenecks, single-threaded compression stalls, and redundant disk re-reads while preserving 100% bit-for-bit format integrity and emulator compatibility.


Key Improvements & Optimizations

  • High-Throughput 2 MB Chunked I/O (XisoWriter & ImageReader):

    • Replaced legacy 2 KB micro-sector operations with 2 MB sequential batches (CHUNK_SECTORS = 1024).
    • Syscall count for reading and writing standard 8 GB discs reduced by over 99.9% (from ~4,000,000 to ~4,000).
    • In-memory OG Xbox scrub padding zeroing eliminates extraneous disk seeks.
    • Eliminated redundant seekg() repositioning during sequential reads, keeping OS read-ahead caches hot.
    • Upgraded global transfer buffer XGD::BUFFER_SIZE from 64 KB to 2 MB.
  • Zero-Overhead Streaming Verification Checksums (ChecksumHelper):

    • CRC32 (zlib), MD5 (OpenSSL), and hardware-accelerated SHA-1 (SHA-NI) are now accumulated in RAM on the fly during image writing.
    • Output verification checksum calculation overhead reduced to 0.0 seconds for ISO creation, eliminating the 8 GB disc re-read entirely.
    • Upgraded fallback reader to a 4 MB streaming buffer operating at RAM speeds (4–6 GB/s) from the OS page cache.
  • Lock-Free Multithreaded Compression Engine (CSOWriter & CCIWriter):

    • Replaced single-sector micro-queues, mutex locks, and std::promise heap allocations with a coarse-grained batch coordinator (BatchContext).
    • Worker threads steal 8-sector work slices using lock-free atomic fetch_add, saturating all CPU cores without mutex contention during compression.
    • Reusable preallocated batch buffers eliminate millions of heap allocations.
  • High-Speed Multithreaded Zstd Engine (ZARWriter & external/ZArchive):

    • Transformed ZArchive compression from single-threaded into a fully parallel multi-core engine with persistent per-thread ZSTD_CCtx* contexts.
    • 4 MB data block batches are compressed concurrently across all CPU threads and written sequentially to maintain 100% compliance with Cemu/ZArchive specifications, block offset tables, and SHA-256 integrity signatures.
    • Fully hooked up GUI & CLI compression level presets to Zstd (Default = Level 2, Fast = Level 1, Balanced = Level 3, Maximum = Level 6).
    • Confirmed via technical benchmarks that Zstd decompression speed in emulators remains flat and ultra-fast (~2 GB/s) regardless of compression level.
  • Contiguous Block I/O & Fast Hashtables (GoDWriter):

    • Replaced 2 KB single-sector reads and writes with contiguous block chunks of up to 816 KB (408 sectors) per syscall via get_contiguous_sectors().
    • Upgraded Sub-Hash Table (SHT) computation to read all 204 blocks (816 KB) in a single file read before hashing in memory.
  • High-Performance Chunked Readers (CSOReader, CCIReader, GoDReader):

    • Implemented multi-sector read_sectors across all compressed and container formats.
    • CSOReader and CCIReader now load compressed block spans in single I/O operations and decompress sector slices in parallel across all CPU cores.
    • GoDReader reads contiguous slices of up to 816 KB per syscall, eliminating seek thrashing during extraction or format conversion from GoD.

Included Portable Binaries

  • XGDTool-GUI.exe: Complete modern GUI application with Dark Mode, Drag & Drop, batch queue manager, and multi-language support.
  • XGDTool-CLI.exe: Standalone command-line executable for terminal, scripts, and batch processing.

XGDTool v1.2.0 - Drag & Drop, Dark Theme, Checksums, Auto .dvd & Multithreading

Choose a tag to compare

@Ashnar2602 Ashnar2602 released this 02 Sep 14:53

XGDTool v1.2.0 Release

New Features & Enhancements

  • Drag & Drop: Drag image files or game folders directly onto the app to queue them instantly.
  • Queue & Status Tracking: 3-column list (Format, Filename, Status), with right-click context menu and Delete key support.
  • Dark Theme: Modern dark mode palette toggle in the GUI.
  • Automatic .dvd\ File & LayerBreak Generation (--dvd): Writes companion .dvd\ file with LayerBreak (\2133520\ for XGD3, \1913760\ for XGD2 / OG Xbox) ready for ImgBurn.
  • Integrity Checksums (--checksum): Real-time hardware-accelerated CRC32, MD5, and SHA-1 calculation.
  • Adjustable Compression (-l\ / --level): Configurable presets (Default, Fast, Balanced, Maximum) for CCI, CSO, and ZAR.
  • Multi-threaded Batch Conversions (-j\ / -t\ / --threads): Concurrent worker pool for bulk conversions.
  • Automated CI/CD: GitHub Actions workflow for automated Windows static release builds.
  • Embedded Multilingual Localization: Full support for 6 languages (English, Italian, German, French, Spanish, Portuguese) with zero external asset dependencies.

XGDTool v1.1.0

Choose a tag to compare

@Ashnar2602 Ashnar2602 released this 02 Sep 14:29

XGDTool v1.1.0 Fork Release (by Ashnar2602)

This fork brings major quality-of-life improvements, multilingual support, stability fixes, and merged upstream community pull requests.

What's New & Changed vs Original:

*Full Multilingual Support (GUI & CLI):

  • 6 built-in languages: English, Italian, German, French, Spanish, Portuguese.
  • Automatic detection of OS language on startup.
  • Real-time language switching in GUI and --lang <code|system> flag in CLI.
    *Standalone Single-File Executables:
  • All translations are embedded directly into the binary — zero external assets required.
    *Multi-Disc Naming Protection (--keep-name):
  • Added "Keep Original Name" option to prevent multi-disc games (e.g. MagnaCarta 2 Disc 1 & 2) from overwriting each other.
    *Real-Time Batch Progress:
  • Overall progress bar updates continuously in real-time across batch operations.
    *Windows Toast Notifications & Completion Dialog:
  • Non-intrusive Windows notification upon completion + summary dialog with direct "Open Log File" button on errors.
    *Automatic Logging:
  • Diagnostics and runtime events are automatically written to xgdtool.log.
    *Merged Upstream Community Fixes:
  • Fixed GCC 13/14 compilation errors (PR wiredopposite#10).
  • Fixed End-of-Central-Directory zip record parsing (PR #14).
  • Fixed CSO/CCI progress calculation and memory leaks (PR #15).
  • Fixed split input stream handling and big-endian parsing.

Included Assets:

  • XGDTool-GUI.exe: Standalone GUI version.
  • XGDTool-CLI.exe: Standalone CLI version.
  • XGDTool-v1.1.0-Win64.zip: Complete package containing both executables and documentation.