MREA (Metroid Prime 2): Difference between revisions

fix and add links in TOC
>Aruki
(fix and add links in TOC)
 
(5 intermediate revisions by 3 users not shown)
Line 10: Line 10:


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.
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 in each MREA file, in the order they appear in the file:
{| class="wikitable"
! Identifier
! Name
|-
| {{none}}
| [[#World Geometry|World Geometry]]
|-
| {{none}}
| [[#Unknown Section 1|Unknown Section 1]]
|-
| <code>SCLY</code>
| [[Scriptable_Layers_(Metroid_Prime_2)|Script Layers]]
|-
| <code>SCGN</code>
| Generated Script Objects
|-
| <code>0xDEAFBABE</code>
| [[#Collision|Collision]]
|-
| {{none}}
| [[MREA (Metroid Prime)#Unknown Section|Unknown Section 2]]
|-
| <code>0xBABEDEAD</code>
| [[Lights (Metroid Prime)|Lights]]
|-
| <code>VISI</code>
| [[VISI (MREA Section)|Visibility Tree]]
|-
| {{none}}
| [[#Path|Path]]
|-
| {{none}}
| [[#Portal Area|Portal Area]]
|-
| {{none}}
| [[#Static Geometry Map|Static Geometry Map]]
|}


=== Header ===
=== Header ===
Line 143: Line 183:
|}
|}


=== Compressed Blocks ===
==== Compressed Blocks ====


The MREA format contains compressed blocks that can each contain a number of regular file sections within them. The data defining these blocks is at the end of the MREA header; the beginning and end of the compressed block list is padded to 32 bytes. The decompressed size of a block is capped at 0x20000 bytes; each section contains as many MREA sections as it can fit under that size limit. There are two exceptions:
The MREA format contains compressed blocks that can each contain a number of regular file sections within them. The data defining these blocks is at the end of the MREA header; the beginning and end of the compressed block list is padded to 32 bytes. The decompressed size of a block is capped at 0x20000 bytes; each section contains as many MREA sections as it can fit under that size limit. There are two exceptions:
Line 189: Line 229:
The actual data contained in these blocks is padded to 32 bytes, but their padding is located at the beginning of the block rather than the end, so it's required to account for the padding before you start decompressing. Thee data is compressed using segmented LZO1X-999; the "segmented" part means there's multiple segments of data that are compressed/decompressed separately. Each segment starts with a 16-bit size value. The size value is signed; a negative value indicates the segment is not compressed (this is done when compressing a segment doesn't reduce its size). Each segment is 0x4000 bytes large when decompressed (except the last one).
The actual data contained in these blocks is padded to 32 bytes, but their padding is located at the beginning of the block rather than the end, so it's required to account for the padding before you start decompressing. Thee data is compressed using segmented LZO1X-999; the "segmented" part means there's multiple segments of data that are compressed/decompressed separately. Each segment starts with a 16-bit size value. The size value is signed; a negative value indicates the segment is not compressed (this is done when compressing a segment doesn't reduce its size). Each segment is 0x4000 bytes large when decompressed (except the last one).


=== Data Sections ===
=== World Geometry ===
 
{| class="wikitable"
! Identifier
! Name
|-
| {{none}}
| [[#World Geometry|World Geometry]]
|-
| {{none}}
| [[#Unknown Section 1|Unknown Section 1]]
|-
| <code>SCLY</code>
| Script Layers
|-
| <code>SCGN</code>
| Generated Script Objects
|-
| <code>0xDEAFBABE</code>
| Collision
|-
| {{none}}
| [[#MREA (Metroid Prime)#Unknown Section|Unknown Section 2]]
|-
| <code>0xBABEDEAD</code>
| Lights
|-
| <code>VISI</code>
| Visibility Tree
|-
| {{none}}
| [[#Path|Path]]
|-
| {{none}}
| [[#Portal Area|Portal Area]]
|-
| {{none}}
| [[#Static Geometry Map|Static Geometry Map]]
|}
 
==== World Geometry ====
''See [[MREA (Metroid Prime)#World Geometry]], [[Materials (Metroid Prime)]] and [[Geometry (Metroid Prime)]]''
''See [[MREA (Metroid Prime)#World Geometry]], [[Materials (Metroid Prime)]] and [[Geometry (Metroid Prime)]]''


Line 302: Line 302:
|}
|}


==== Unknown Section 1 ====
=== Unknown Section 1 ===


This section appears to be related to world geometry.
This section appears to be related to world geometry.
Line 314: Line 314:
| u32
| u32
| 1
| 1
| '''Element Count 1'''
| Count of elements in the next array. Always 0 in light world areas.
|-
| u32
| ''Element Count 1''
| {{unknown|Unknown}}
| {{unknown|Unknown}}
| Always 0?
| May also be a pair of u16s?
|-
|-
| u32
| u32
| 1
| 1
| '''Element Count'''
| '''Element Count 2'''
| Count of elements in the next array. Matches the area's surface group count.
| Count of elements in the next array. Matches the area's surface group count.
|-
|-
| u8
| u8
| ''Element Count''
| ''Element Count 2''
| {{unknown|Unknown}}
| {{unknown|Unknown}}
| Every entry is always 0xFF?
| Every entry is always 0xFF in light world areas. Dark world appears to include both 0x00 and 0xFF?
|-
|-
| colspan=4 {{unknown|End of section}}
| colspan=4 {{unknown|End of section}}
|}
|}


==== Path ====
=== Collision ===
 
''Main article: [[Area Collision (File Format)]]''
 
=== Path ===


This section only contains a single [[PATH (File Format)|PATH]] asset ID.
This section only contains a single [[PATH (File Format)|PATH]] asset ID.
Line 346: Line 355:
|}
|}


==== Portal Area ====
=== Portal Area ===


This section only contains a single [[PTLA (File Format)|PTLA]] asset ID.
This section only contains a single [[PTLA (File Format)|PTLA]] asset ID.
Line 362: Line 371:
|}
|}


==== Static Geometry Map ====
=== Static Geometry Map ===


This section only contains a single [[EGMC (File Format)|EGMC]] asset ID.
This section only contains a single [[EGMC (File Format)|EGMC]] asset ID.
13

edits