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 V1🔄 WIP
ITW V2✅ Complete
ITX✅ Complete
  • EdiabasX — BMW EDIABAS implementation
  • inpax — INPA interpreter