Releases: Ashnar2602/XGDTool
Release list
XGDTool v1.4.0 — High-Throughput Engine & Quality of Life Overhaul
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_CRC32via__crc32dand__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).
- Implemented ARMv8-A ACLE hardware CRC32 (
-
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.
- Integrated ping-pong double-buffering with background asynchronous read prefetching (
-
OS Sequential Hints & Zero-Fragmentation Pre-allocation (
IOHints.h):- Integrated
FILE_FLAG_SEQUENTIAL_SCANon Windows andposix_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.
- Integrated
-
Real-Time Throughput (MB/s) & Dynamic ETA Countdown:
- Live throughput metric (MB/s) and formatted ETA countdown (
hh:mm:ss) computed inXGDLog::print_progress()for both terminal CLI output and GUI status.
- Live throughput metric (MB/s) and formatted ETA countdown (
-
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.
- New diagnostic scanner inspecting disc geometry (XGD2/XGD3, layer break), AVL filesystem tree, primary executable (
-
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.
- Automatically formats output file and directory names as
-
Windows Explorer Shell Context Menu (
--register-shell/--unregister-shell):- Instant non-elevated context menu integration in
HKEY_CURRENT_USER\Software\Classes\SystemFileAssociationsfor.iso,.xiso,.cso,.cci, and.zar.
- Instant non-elevated context menu integration in
-
Quality of Life Enhancements:
- Added completion sound alert (
wxBell()), automatic destination folder opening upon queue completion, and Android keep-screen-on setting.
- Added completion sound alert (
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
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
.zararchive 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_tempfolder.
- Fixed an engine bug where extracting a
-
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.
- Enabled all-files access permission and implemented direct SAF path resolution in
-
Android 2-Step ZAR Conversion Pipeline (
ConvertService.kt):- Automated 2-step conversion for ZAR archives (clean extraction to
.xgd_zar_tempfollowed by direct image building), guaranteeing 100% reliability.
- Automated 2-step conversion for ZAR archives (clean extraction to
-
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
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_SIZEfrom 64 KB to 2 MB.
- Replaced legacy 2 KB micro-sector operations with 2 MB sequential batches (
-
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::promiseheap 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.
- Replaced single-sector micro-queues, mutex locks, and
-
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.
- Transformed ZArchive compression from single-threaded into a fully parallel multi-core engine with persistent per-thread
-
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.
- Replaced 2 KB single-sector reads and writes with contiguous block chunks of up to 816 KB (408 sectors) per syscall via
-
High-Performance Chunked Readers (
CSOReader,CCIReader,GoDReader):- Implemented multi-sector
read_sectorsacross all compressed and container formats. CSOReaderandCCIReadernow load compressed block spans in single I/O operations and decompress sector slices in parallel across all CPU cores.GoDReaderreads contiguous slices of up to 816 KB per syscall, eliminating seek thrashing during extraction or format conversion from GoD.
- Implemented multi-sector
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
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
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.