mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-10-20 23:20:36 +02:00
- [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions). - [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md) - [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability. ------------------- A new NSO compression method was introduced in Switch 22.0.0. This is a customized variant of zstd and is used when NSO flags have bit 7 set. Key characteristics: - ZSTD_MAGICNUMBER is set to 0x4349425A (b'ZBIC') instead of 0xFD2FB528 - ZSTD_LEGACY_SUPPORT is set to 0 - ZSTD_TRACE is set to 1, zstd version used is 1.5.7 (10507) - FSE_readNCount is replaced with a BIC (Binary Interpolative Coding) version which improves compression of entropy tables significantly Source: https://switchbrew.org/wiki/22.0.0 Implementation: - Detect ZBIC segments via NSO flag bit 7 (NsoFlags_UseZbicCompression) and/or ZBIC magic scan in nso.cpp - Fall back to LZ4 when ZBIC is not detected or returns unexpected size - Handle segment 0 alternate offset (0x100 vs 0x108) for both ZBIC and LZ4 References: - Atmosphère loader/strat zstd-zbic integration: |
||
|---|---|---|
| .. | ||
| android | ||
| audio_core | ||
| common | ||
| core | ||
| dedicated_room | ||
| dynarmic | ||
| frontend_common | ||
| hid_core | ||
| input_common | ||
| network | ||
| qt_common | ||
| shader_recompiler | ||
| tests | ||
| video_core | ||
| web_service | ||
| yuzu | ||
| yuzu_cmd | ||
| yuzu_room_standalone | ||
| .clang-format | ||
| CMakeLists.txt | ||
| dep_hashes.h.in | ||