.MLVL description here.
Note that file IDs are 4 bytes in Prime/Echoes and 8 bytes in Corruption/Returns.
Size
|
Description
|
Games
|
0x4
|
Magic 0xDEAFBABE
|
All
|
0x4
|
File Version
|
All
|
0x4/0x8
|
World Name .STRG
|
All
|
0x4
|
Dark World Name .STRG
|
Echoes
|
0x4
|
?
|
Echoes/Corruption
|
0x1
|
Boolean, checks whether the next two values exist
|
Returns
|
?
|
Level Number string (zero-terminated)
|
Returns
|
0x10
|
4 floats
|
Returns
|
0x4/0x8
|
World .SAVW
|
All
|
0x4/0x8
|
World Skybox .CMDL
|
All
|
Memory Relays (Prime only)
Size
|
Description
|
Games
|
0x4
|
Memory Relay count
|
Prime
|
For each memory relay:
Size
|
Description
|
Games
|
0x4
|
Memory Relay Instance ID
|
Prime
|
0x4
|
Connected Instance ID
|
Prime
|
0x2
|
Message
|
Prime
|
0x1
|
? (Always 0)
|
Prime
|
Areas
Size
|
Description
|
Games
|
0x4
|
Area count
|
All
|
0x4
|
?
|
Prime
|
For each area:
Size
|
Description
|
Games
|
0x4/0x8
|
Area Name .STRG
|
All
|
0x30
|
Transformation Matrix
|
All
|
0x18
|
Axis-Aligned Bounding Box
|
All
|
0x4/0x8
|
Area .MREA
|
All
|
0x4/0x8
|
Area ID (used by layer-switching objects)
|
All
|
0x4
|
Connected area count (CC)
|
Prime/Echoes/Corruption
|
0x2 x CC
|
Connected area numbers
|
Prime/Echoes/Corruption
|
0x4
|
? (always 0)
|
Prime/Echoes
|
Dependency List (Prime/Echoes)
Starts with DGRP.
Size
|
Description
|
Games
|
0x4
|
Dependency Offset Count (OC)
|
Prime/Echoes
|
0x4 x OC
|
Dependency Offsets
|
Prime/Echoes
|
Docks
Size
|
Description
|
Games
|
0x4
|
Dock count
|
Prime/Echoes/Corruption
|
For each dock:
Size
|
Description
|
Games
|
0x4
|
Connection Count
|
Prime/Echoes/Corruption
|
For each connection:
Size
|
Description
|
Games
|
0x4
|
Area Number
|
Prime/Echoes/Corruption
|
0x4
|
Dock Number
|
Prime/Echoes/Corruption
|
Size
|
Description
|
Games
|
0x4
|
? (Always 4, could be a count for the dock coordinates)
|
Prime/Echoes/Corruption
|
0x30
|
4 sets of dock coordinates
|
Prime/Echoes/Corruption
|
.rel list (Echoes)
Size
|
Description
|
Games
|
0x4
|
.rel Count (RC)
|
Echoes
|
? x RC
|
.rels (zero-terminated)
|
Echoes
|
0x4
|
.rel Offset Count (OC)
|
Echoes
|
0x4 x OC
|
.rel Offsets
|
Echoes
|
Remainder
Size
|
Description
|
Games
|
0x4
|
Always 0; could be something in previous games, such as the dock count, but I have no way of knowing for sure
|
Returns
|
?
|
Code Name (zero-terminated)
|
Echoes, Corruption, Returns
|
After Areas
Size
|
Description
|
Games
|
0x4/0x8
|
World .MAPW
|
Prime/Echoes/Corruption
|
0x5
|
? (Always 0)
|
Prime/Echoes/Corruption
|
0x4
|
.AGSC count (AC)
|
Prime
|
For each AGSC:
Size
|
Description
|
Games
|
0x4
|
?
|
Prime
|
0x4
|
.AGSC ID
|
Prime
|
Size
|
Description
|
Games
|
0x1
|
? (Always 0)
|
Prime
|
0x4
|
Area Layer Info Count (should be identical to Area Count)
|
All
|
For each layer info:
Size
|
Description
|
Games
|
0x4
|
Layer Count
|
All
|
0x8
|
Layer Bit Flags (1 if a layer should be turned on in a new file)
|
All
|
Size
|
Description
|
Games
|
0x4
|
Layer Name Count (LC)
|
All
|
? x LC
|
Layer Names (zero-terminated)
|
All
|
0x4
|
(Unknown) Count (UC)
|
Corruption/Returns
|
0x10 x UC
|
?
|
Corruption/Returns
|
0x4
|
Layer Name Offset Count (OC)
|
All
|
0x4 x OC
|
Layer Name Offsets
|
All
|