tisx
BMW TIS Graphics Decoder
🔗 GitHub
About
Decoder for graphics formats used in BMW TIS (Technical Information System). Reverse engineering of image compression from BMW service documentation.
Supported Formats
ITW (Image TIS Wavelet)
Wavelet compression with entropy coding:
- V1 (0x0300) — CDF 5/3 wavelet + sparse coding
- V2 (0x0400) — LZW + RLE chain
ITX (Image TIS Indexed)
Indexed images with color palette.
Usage
bash
# Decode ITW to PNG
npx tisx decode image.itw -o output.png
# File information
npx tisx info image.itw
# Batch decode
npx tisx decode ./images/*.itw -o ./output/Reverse Engineering
Project based on reverse engineering of tis.exe:
- Ghidra analysis
- Fischer probability coding
- Custom wavelet filters (CDF 5/3, CDF 9/7)
- Sparse coefficient encoding
Format Details
ITW V1 Structure
Header (8 bytes):
- Magic: 0x0300
- Width, Height
- Block count
Metadata (77 bytes):
- Wavelet levels
- Quantization params
Payload:
- 19 zlib streams
- LL4 (lowest freq) + detail subbands
- RLE position + Fischer value streamsITW V2 Structure
Header + block table
Each block:
- LZW compressed
- RLE decompression
- Direct pixel dataStatus
| Format | Decode | Encode |
|---|---|---|
| ITW V1 | 🔄 WIP | ❌ |
| ITW V2 | ✅ Complete | ❌ |
| ITX | ✅ Complete | ❌ |
