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.