Commit Graph

5 Commits

Author SHA1 Message Date
Kevin Bortis
6be36b6bda Add Zstandard compression support
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.
2026-03-19 08:45:07 +01:00
050810c91d Update copyright year to 2026. 2025-12-23 08:23:40 +00:00
5c7610c1c0 Use heuristics to setup table shift. 2025-10-02 04:40:16 +01:00
41aee42c53 Enhance documentation for various structures with detailed descriptions and formatting improvements 2025-10-01 05:35:39 +01:00
3b012797cb Implement creating AaruFormat image and writing header. 2025-08-07 15:43:35 +01:00