MREA (Metroid Prime)

See MREA (File Format) for the other revisions of this format.

The MREA format defines areas (rooms) in Metroid Prime. It's a massive format that contains tons of different data, including terrain geometry, collision, objects, lights, and more.

Format
Like CMDL, MREA files are split up into a number of 32-byte aligned sections. Every section both starts and ends on a 32-byte boundary. These are used to separate different parts of the file; different types of sections typically indicate different sets of data. The header declares the section count and the size of each one; using these is the only way to navigate the file.

These are the sections that appear in each MREA file, in the order they appear in the file:

World Geometry
See Materials (Metroid Prime) and Geometry (Metroid Prime)

MREA files have one material section, followed by a number of world models, each of which has its own set of geometry sections. There's couple small differences you'll usually see on world models compared to regular CMDL ones:


 * Normals are always shorts, so vertex format 0 is never used.
 * Most world models use lightmaps, so normally the first UV coordinate on each vertex will read from the short UV array. This isn't always the case, though; you need to make sure you check the material so you know where to read from.
 * Surfaces will usually have a bounding box in the extra data in the surface header. This bounding box is used for depth sorting.
 * Each world model starts with an extra header section which is formatted like this:

Area Octree
The AROT section stores the area's octree, accelerating back-to-front rendering of contained meshes. It is also used for spacial queries such as collision.

Script Layers
The SCLY section contains data for objects.

Collision
Main article: Area Collision (File Format)

Unknown Section
This one is sandwiched between collision and lights, and usually just contains a single 32-bit "1". Purpose is unknown. In the Prime 3/DKCR MREA format, this section is labelled.

Lights
This section is for dynamic lights. See the Light article for details.

Visibility Tree
This section is a PVS octree labeled "VISI". Some areas don't have visibility octrees; in that case this section will be completely empty and listed with a size of 0.

Path
This is the final section in the file; its only value is a single PATH file ID.