Roadmap & Changelog

Home

This page describes what's being worked on and what's still open for improvement, clarification or research. Some things might be clear, some things might be a big question mark to you, and some are also a questionmark for me, because I'm still finding out additional details about features and formats.

Roadmap

High Priority

Items needed for a feature to work, or where resolving them would unlock a large batch of downstream work.

Subsystem Items
MCF
  • NODE transform semantics (112B slot, fields between pos/rotation/scale), needed for animation playback.
  • 9 unknown u32 fields in the 44B MESH format header (+0x24–+0x44), needed for LOD / draw-order understanding.
  • OBJA hash/lookup table (~23KB body, likely name→chunk-id table), needed for symbolic node naming in the 3D viewer.
  • CAM node_ref = 191 exceeds the max NODE id (139). Camera auto-positioning is a temporary workaround.
  • LGHT negative intensities (-1.0 sentinel), likely animation-driven, needed for correct default lighting.
  • appdata.mcf / skindata.mcf, OBJA-tagged data-variant containers, structurally not yet reverse-engineered.
FPA, dataset completeness
  • 37 unresolved fields total, concentrated in the PHEV region (0xAA3–0xF2C) and the button/UI-control block (0x7BB–0x8DA).
  • Highest-value targets: unk_phev_BD8_table (55% conf, static platform lookup), unk_phev_D24 (192B, 12×16B records, 35% conf), unk_phev_DE4/DF0 (firmware-generation markers, 55%/20% conf).
  • These are dataset-editing-app-facing. Resolving any of them could unlock a feature currently marked unknown in app_fpa.

Medium Priority

Format research that improves confidence/coverage but isn't needed for a working feature today.

Subsystem Items
EPS steering
  • Physical-unit labels for most curve axes are still hypotheses; structure/LUT format/CRC are fully verified.
KZB
  • Unknown word at offset 0x04 (version? feature flags?); whether MIB3-specific KZBs add encryption/CRC fields; safe-repack (offset/directory patching) unverified.
Soundaktor Gen 2.5
  • DSP sample rate for filter fc: filters store an exact f0/fs ratio, but no candidate rate (512-48000, or the header sample_rate) makes the observed cutoffs land on round Hz. Blocks only the Hz display; decode/edit/re-encode is exact without it.
  • unknown_2 bit-flag register (byte 2): 0x00 on all gain_table_flag==3 files, 0x05 on exactly two early datasets, 0x07 on the other 32. Bit 1 looks like a series-release flag.
Ambient lighting
  • Theme colors (cold/calm/action/wellness/warm) not found in any dataset or BCM coding dump; best hypothesis is a hardcoded BCM firmware table.
  • Bit→zone mapping for the G-force 6-bit zone mask, and profile 20's "green" role, pending the in-car test matrix.
MCF
  • MATL Profile B/C (308B/196B variants). Outer sizes known, internal color/TEX offsets unconfirmed; no test file found yet.
  • TEX format. Pixel-format byte known, but mip-count field position and compressed GPU format support (BC1/DXT1, BC3/DXT5) unconfirmed.

Low Priority

Minor field meanings and edge cases, low impact, small file counts, or single-outlier data.

Subsystem Items
MCF
  • TOC footer unknown u32 (0x13BCF95A in car_lhd.mcf), ruled out as CRC32/Adler32; needs a second 3D MCF to test constant-vs-per-instance.
  • VTXF body (15B), vertex attribute layout descriptor; not needed while stride=32 is the only observed layout.
  • Images MCF field_08, field_20, field_34, and TOC toc_field_a/b/c, purpose unknown but preserved verbatim on save.
  • i18n MCF content_hash (data chunk +0x0C), not yet matched to a known hash algorithm; doesn't affect parsing since it's preserved on save.
FPA
  • KV-only fields (unk_phev_EF8, unk_phev_F00), only 3 files affected; low generalization value.
  • OJ00 anomaly, single-file outlier at offset 0x1D.
OPS
  • Several field identities unconfirmed (layoutMode, areaButtonRight field 24, tile inset real-world meaning); on-disk position/type is certain. No dedicated app_ops viewer exists yet.
GCA
  • Scale field unit unknown (s16, position fields are pixels).

In development

Open code tasks in the apps themselves, rather than format-understanding gaps.

Subsystem Items
Soundaktor simulator
  • Gen 2 post-import sample refresh: soundaktor.js calls window.simRefreshAudio() after a WAV import, but the Gen 2 simulator maps it to refreshLiveAudio(), which never reloads buffers, so preview keeps playing the old sample. Gen 2.5 already routes through switchProfileLive().
  • Apply the Eigensicherung filter in playback: the header filter at 148-156 is a real ECU output filter (peak / LP / HP, some at -9 dB) and is currently ignored by both simulators.
MCF Universal Editor
  • 3D model import/export: finish full round-trip for external 3D formats (OBJ, GLTF); currently partial. Requires NODE transform semantics (high-priority blocker).
  • Material editing UI: full MATL editor with texture assignment, color picker and profile-variant support (Profile A working, B/C blocked until samples are found).

To be tested

Changelog

Hash Date Message
943b5e8 2026-09-16 More anti spam features
1b948fe 2026-09-16 Applied anti-spam features
40fc37a 2026-09-03 Fix Gen 2 post-import sample refresh: route simRefreshAudio through switchProfileLive
54181ae 2026-09-03 Consolidate documentation: MCF 15→3 docs, Ambient 5→2 docs, i18ndata trimmed
0ec74a0 2026-09-02 Soundaktor: dead code removed, code updated
347cb08 2026-09-02 FPA: experimental 0xAA3 grid parsed
ec3f62d 2026-09-02 Mark Soundaktor live curve-shape editing complete in roadmap
8227d4e 2026-09-02 Add live curve-shape editing to Soundaktor simulators
80a2a37 2026-09-01 FPA: Additional fixes and clarifications
471fa87 2026-08-31 FPA Bugfix + additional experimental features added
182604d 2026-08-31 Home page buttons aspect ratio fix
7f70cfc 2026-08-31 Soundaktor: preload disabled for samples >1
dc63ce2 2026-08-31 FPA: Regressoin bugs to group logic fixed.
3f016f2 2026-08-31 Performance improvements
4ffb284 2026-08-31 Changelog page intro text and dedicated card image