mirror of
https://github.com/aaru-dps/libaaruformat.git
synced 2026-07-08 18:06:18 +00:00
Implements zstd as an alternative to LZMA for data block and subchannel compression using the allocated compression IDs 4 (kCompressionZstd) and 5 (kCompressionZstdCst). Adds zstd v1.5.7 as a bundled submodule with a static library build including x86_64 assembly fast path for decompression. Write path selects zstd or LZMA based on the zstd option. Subchannel blocks use zstd+CST instead of LZMA+CST when enabled. LZMA properties header is only written for LZMA-based compression types, preventing format corruption in zstd-compressed images. Activated via options string: "zstd=true;zstd_level=19". Default remains LZMA for backwards compatibility. Tested: SHA-256 verified lossless roundtrips across 9 disc systems (Dreamcast, Saturn, Mega CD, PC Engine CD, Neo Geo CD, PS1, PS2 CD, PS2 DVD) and PS1 SBI subchannel preservation with zstd+CST.