CMDL (Metroid Prime): Difference between revisions

>Aruki
>Aruki
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
''See [[CMDL (File Format)]] for the other revisions of this format.''
''This article is for the CMDL format from the Metroid Prime series. See [[CMDL (File Format)]] for the other revisions of this format.''


The '''CMDL format''' is the model format used in the Metroid Prime series. The format's stayed relatively consistent throughout the trilogy, with modifications only really being made to the materials section.
The '''CMDL format''' is the model format used in the Metroid Prime series. The format's stayed relatively consistent throughout the trilogy, with modifications only really being made to the materials section.
Line 7: Line 7:
== Format ==
== Format ==


CMDL 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.
CMDL files are split up into a number of 32-byte aligned ''data sections''. Every data section both starts and ends on a 32-byte boundary. These are used to separate different parts of the file; different data sections typically indicate different sets of data. The header declares the data section count and the size of each one; using these is the only way to navigate the file.


=== Header ===
=== Header ===
Line 13: Line 13:
{| class="wikitable"
{| class="wikitable"
! Offset
! Offset
! Size
! Type
! Description
! Count
! Name
! Notes
|-
|-
| 0x0
| 0x0
| 4
| u32
| '''Magic'''; always 0xDEADBABE
| 1
| '''Magic'''
| Always <code>0xDEADBABE</code>.
|-
|-
| 0x4
| 0x4
| 4
| u32
| '''Version'''; see below
| 1
| '''Version'''
| See [[CMDL (File Format)|hub article]] for a list of possible version numbers.
|-
|-
| 0x8
| 0x8
| 4
| u32
| '''Flags'''; see below
| 1
| '''Flags'''
| [[#Flags|See below]]
|-
|-
| 0xC
| 0xC
| 0x18
| float
| '''Axis-aligned bounding box'''
| 6
| '''Model Axis-Aligned Bounding Box'''
|
|-
|-
| 0x24
| 0x24
| 4
| u32
| '''Section count''' (SC)
| 1
| '''Data Section Count'''
| Count of data sections in the file.
|-
|-
| 0x28
| 0x28
| 4
| u32
| '''Material set count'''
| 1
| '''Material Set Count'''
| Count of material sets in the model. There will be one materials section per set in the file.
|-
|-
| 0x2C
| 0x2C
| 4 &times; SC
| u32
| '''Section sizes'''
| ''Data Section Count''
|}
| '''Data Section Sizes'''
 
|  
Following the end of the header, the file is padded to 32 bytes before the first section starts.
 
==== Version ====
 
{| class="wikitable"
! Version
! Game
|-
| 2
| Metroid Prime
|-
| 3
| Metroid Prime 2 Demo
|-
| 4
| Metroid Prime 2
|-
|-
| 5
| colspan=5 {{unknown|End of header; pad to 32 bytes before section data begins}}
| Metroid Prime 3
|}
|}


Line 75: Line 72:
| 0
| 0
| 0x1
| 0x1
| Appears to do nothing
| Indicates the model is skinned (no ingame effect)
|-
|-
| 1
| 1
Line 88: Line 85:
=== Materials ===
=== Materials ===


''See [[Materials (Metroid Prime)]]''
''See [[Materials (Metroid Prime)]] and [[Materials (Metroid Prime 3)]]''


CMDL files can have multiple material sets; each set will get its own section. The main catch with reading materials is to mind the version number; extra values were added starting in version 3 (Echoes Demo).
CMDL files can have multiple material sets; each set will get its own section. The main catch with reading materials is to mind the version number; extra values were added starting in version 3 (Echoes Demo).


Metroid Prime 3 uses a completely different material format; there's not much understood about it currently, though.
The material format was completely revamped in Metroid Prime 3, but the way the format supports multiple material sets is the same.


=== Geometry ===
=== Geometry ===
Line 102: Line 99:
== Tools ==
== Tools ==


* [https://drive.google.com/file/d/0B9MLV21H7SDvYXRtTWlFRGQ3ZjA/edit?usp=sharing Parax's CMDL Maxscript] will import CMDL files into 3DS Max.
* [https://drive.google.com/file/d/0B9MLV21H7SDvYXRtTWlFRGQ3ZjA/edit?usp=sharing Aruki's CMDL Maxscript] will import CMDL files into 3DS Max.


[[Category:File Formats]]
[[Category:File Formats]]
Anonymous user