MT — Mission Briefing Text (.MT)¶
FA_2.LIB contains 363 .MT files — roughly one per mission. Each stores the
full text content for the pre-mission briefing and post-mission debrief
screens. Format is plain ASCII text using a shared directive/markup engine
with .TXT files.
Tools¶
fx¶
fx mt info <file.MT> # mission id/title/type + section count + round-trip
Parsing rides the shared directive engine in lib/src/txt.cpp (the same
line-preserving parser as TXT); lib/src/mt.cpp adds the
section-1 header semantics.
tests/test_mt.cpp runs a census over all 363 .MT files in a real install (under
FX_FA_ROOT): each round-trips byte-identically, every directive it uses is one the engine
knows, its sections are the documented 4 or 5 (346 use 4, 17 use 5), and the 361 that carry
an identifier line decode it.
The round-trip is worth exactly what it costs: txt_write replays the file's own lines, so
all 363 would round-trip byte-identically whether or not the decoder understood a thing —
and for years, while the codec was dropping the mission ID on 263 of them, they did.
File Layout¶
Plain ASCII text, CRLF line endings. Directives begin with . and may be
chained on one line, separated by spaces. Plain text between directives is
rendered in the current active style. Directives may also appear inline within
a content line (e.g. .header TITLE .body renders "TITLE" in header style
then switches to body).
Directives¶
The complete vocabulary, read out of the executable — the text interpreter
(FormatDirective, 0x47E1B0; the engine around it is documented in
shell-ui.md § The text/format engine)
compares each token against exactly these, lowercased. A token it does not recognise is
rendered as text, which is why a briefing can write "get the .ell out" as prose
(~K30.MT) without it meaning anything.
| Directive | Off form | Description |
|---|---|---|
.section <N> |
— | Begin numbered section (see Section Semantics below) |
.page |
— | Page break within a section — a new screen, not a new section |
.title |
— | Title render style |
.header |
— | Header render style |
.body |
— | Body render style |
.italic |
..italic |
Italic |
.bold |
..bold |
Bold |
.underline |
..underline |
Underline |
.left .right .center .full |
— | Alignment (.full = justified) |
.indent_left .indent_right |
.indent_off |
Indent |
.picture <name> |
— | Inline image |
.sound <name> |
— | Play a sound |
.music <name> |
.music_off |
Play music |
.button |
..button |
Delimit a button (UI templates — see TXT) |
.dbutton |
..dbutton |
Delimit a disabled button |
Directives apply until overridden. Alignment and style are independent —
.center .underline .header sets all three simultaneously. The .. prefix turns the named
directive off; it is not a general "close" marker (.section and .page have no off form).
tests/test_txt.cpp asserts that every directive fx reports, across all 363 .MT and all
8 .TXT files in a real install, is one of the above.
Section Semantics¶
Sections 1–5 are observed across all 363 files:
| Section | Purpose |
|---|---|
| 1 | Mission identifier — a plain text line (<ID> (<annotation>), see below) followed by title and mission type |
| 2 | Pre-mission briefing — location, date/time, objectives, threat data |
| 3 | Debrief (primary outcome — typically success for single-player, Blue success for multiplayer) |
| 4 | Debrief (secondary outcome — failure, or Red success for multiplayer) |
| 5 | Debrief (draw / objectives incomplete) |
Most single-player missions use sections 1–4. Multiplayer and some campaign missions use all 5.
Section 1 ID Line¶
The first content line of section 1 is shaped:
<MISSIONID> (<annotation>)
Any leading dashes are decoration. Of the 361 shipped .MT files that carry an
identifier line, 244 write a bare AB01, 100 write --AB01, and ~FANOTH.MT writes
-RB12 with a single dash. What identifies the line is its shape — one unspaced token,
then a parenthesised note — not a prefix.
An earlier version of this page said the
--was "the engine's cue (inferred) to parse this line as the mission ID". It is not, and the inference was never checked: the engine never parses this line at all. It renders section 1 through the text interpreter (0x47E1B0) like any other text — there is no mission-ID parser in the binary. The codec believed the doc, required the--, and so lost the ID on 263 of the 363 files, shifting every other field up by one: the title came out as the ID line and the mission type as the title. Every one of them still round-tripped byte-identically. See #491.
The parenthesised note is an annotation, not a key. It is usually the file's own name,
but the designers were not consistent: ~FANOTH.MT writes a theater (Panama) and
EXAMPLE.MT names a different file (extra01). Do not resolve anything with it.
QUICK.MT and QUICKMP.MT have no identifier line — their section 1 opens with a plain
title (QUICK MISSION). A line with no parenthesised note is a title, not an ID.
Example — BEXTRA01.MT (complete section 2)¶
.section 2
.center .underline .header
WEAPONS FREE
..underline .left .body
TARTU AIRBASE
DATE : February 22
LOCAL TIME : 1200
WEATHER : Cloudy
.header .underline
MISSION OBJECTIVE
..underline .body
Destroy all guerrilla structures and vehicles in the area.
.header .underline
THREAT SUPPRESSION DATA
..underline .body
GROUND OPPOSITION : Shoulder-launched SAMs
AIR OPPOSITION : Possible U.N Rafales, Mirage 2000s
Related¶
Formats: M — .M mission files that reference these briefing
texts by filename; TXT — uses the same directive engine; adds
.button and .picture for UI screens.