Skip to content

Appendix — File formats

Formats read

Format Extension Notes
A2L / DAMOS .a2l .dam .damos ASAM MCD-2 MC; the most reliable path
Intel HEX .hex Record addresses resolved, gaps preserved
Motorola S-record .s19 .s28 .s37 S0–S9 records
Raw ROM .bin .rom .ori .mpc Map boundaries are not recorded
WinOLS .ols ROM + maps + axes + metadata
KP pack .kp No ROM data; an open project is required
TunerPro .xdf Definition file
VAG .frf .sgo .odx .zip Encrypted content needs an AES key file
CSV / JSON list .csv .json Map address lists
Map pack .mtrpack MRC format
Patch .mtrpatch MRC format
Datalog .csv Channel list and time series

Formats written

Format Extension Notes
Project .mtrp ROM + maps + history + metadata (container)
Raw ROM .bin .rom Size and byte order preserved
WinOLS .ols Project export
TunerPro .xdf Definition export
Map pack .mtrpack / .csv Selected maps
Map list .csv .json Name, address, dimensions
Tuning report .html Old/new value comparison
Theme .mtrtheme Palette definition

The project container (.mtrp)

.mtrp is a binary container:

  • Header — magic (MTRP), format version, total size, TOC offset.
  • TOC — magic, offset and size of every block.
  • Blocks — ROM data, map definitions, metadata, history, styles.
  • Body checksum — to detect corruption.

Blocks are written and read independently; reading a single block does not require loading the whole file into memory.

Patch format (.mtrpatch)

A JSON document:

{
  "format": "mtrpatch",
  "label": "Stage 1 — low RPM fuel maps",
  "maps": [
    {
      "name": "KRKTE_FIX",
      "address": "0x0012A340",
      "ref":  "0x0B0C0D0E",
      "new":  "0x0B0C1012"
    }
  ],
  "raw": []
}
  • ref — bytes before the change, used for verification.
  • new — bytes to write.
  • raw — raw byte patches outside maps (valid for the same software version).

Map pack format (.mtrpack)

Carries maps as name + address + scaling + values. The application matches them against the target ROM in three steps: explicit address, name, then the address stored in the pack.

Scaling taken from A2L

COMPU_METHOD uses COEFFS_LINEAR in the form f(x) = a·x + b. The application converts these coefficients directly into the map's factor and offset. Tabular conversions defined with COMPU_TAB_REF are supported too.

Byte order

Some A2L files declare BYTE_ORDER MSB_LAST, meaning the cell bytes are stored reversed. The application reads this as a property, but you can still change it manually with View ▸ Byte Order. A map read in the wrong order produces "meaningless" values that are surprisingly easy to miss.