Commit Graph

7 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
5a8a8c630f Add BLAKE3 cryptographic hash function integration 2025-10-03 03:46:55 +01:00
88816c37fd Add xxHash submodule and CMake integration for fast hashing 2025-09-30 20:04:45 +01:00
d62e3119c2 Add slog logging support and update error handling in various modules 2025-08-13 20:16:42 +01:00
0e530dff85 Add uthash. 2022-10-02 03:12:33 +01:00
f5360fe146 Add FLAC. 2022-05-28 13:39:32 +01:00
f16ad00636 Add unit test for CRC64. 2022-05-28 11:41:19 +01:00