Skip to content

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 streams

ITW V2 Structure ​

Header + block table
Each block:
  - LZW compressed
  - RLE decompression
  - Direct pixel data

Status ​

FormatDecodeEncode
ITW V1WIPNo
ITW V2CompleteNo
ITXCompleteNo
  • EdiabasX — BMW EDIABAS implementation
  • inpax — INPA interpreter