CMDL (Donkey Kong Country Returns): Difference between revisions

Jump to navigation Jump to search
no edit summary
>Aruki
No edit summary
>Aruki
No edit summary
Line 3: Line 3:
The '''CMDL format''' is DKCR's model format. It's similar to the CMDL format found in the Metroid Prime trilogy, but with a lot of additions and changes, and some layout changes.
The '''CMDL format''' is DKCR's model format. It's similar to the CMDL format found in the Metroid Prime trilogy, but with a lot of additions and changes, and some layout changes.


{{research|moderate|Where to begin? Materials need a lot of research (they're very similar if not the same as Metroid Prime 3). A lot of the visibility group data is unknown. The submesh headers contain a lot of unknowns, and the possible vertex format settings are unknown. Geometry should be split off into a separate article if it's confirmed that it's the same format that's used in MREA (which is fairly likely). Materials should also be split off once more is known about them.}}
{{research|moderate|The visibility group data in the header has a lot of unknown values.}}
{{research|moderate|The visibility group data in the header has a lot of unknown values.}}


Line 17: Line 16:
! Offset
! Offset
! Type
! Type
! Size
! Count
! Description
! Name
! Notes
|-
|-
| 0x0
| 0x0
| u16
| u16
| 4
| 1
| {{unknown|'''Unknown'''; always 0x9381000A - likely either magic value or 16-bit magic/version}}
| '''Magic'''
| Always <code>0x9381</code>
|-
| 0x2
| u16
| 1
| '''Version'''
| Always 0xA. See [[CMDL (File Format)|hub article]] for a list of possible version numbers.
|-
|-
| 0x4
| 0x4
| u32
| u32
| 4
| 1
| '''Flags'''; see below
| '''Flags'''
| [[#Flags|See below]]
|-
|-
| 0x8
| 0x8
| float[6]
| float
| 0x18
| 6
| '''Model Bounding Box'''
| '''Model Bounding Box'''
|
|-
|-
| 0x20
| 0x20
| u32
| u32
| 4
| 1
| '''Section count''' (SC)
| '''Section Count'''
| Count of data sections in the file.
|-
|-
| 0x24
| 0x24
| u32
| u32
| 4
| 1
| '''Material set count'''
| '''Material Set Count'''
| Count of material sets in the model.
|-
|-
| 0x28
| 0x28
| -
| [[#Visibility Groups|Visibility Groups]]
| -
| 1
| '''Visibility group data'''; present if flag 0x10 is set. See below for structure.
| '''Visibility Group Data'''
| Only present if flag 0x10 is set.
|-
|-
| -
| {{none}}
| u32[]
| u32
| 4 &times; SC
| ''Section Count''
| '''Section sizes'''
| '''Section Sizes'''
|
|-
|-
| colspan=4 {{unknown|End of header; pad to multiple of 32 before first section starts}}
| colspan=5 {{unknown|End of header; pad to multiple of 32 before first section starts}}
|}
|}


Line 94: Line 107:
==== Visibility Groups ====
==== Visibility Groups ====


Visibility group data is present in the header if bit 0x10 is set, after the material set count and before the section sizes. Visibility groups are used to toggle the visibility of certain meshes on or off during animations; for instance, Diddy's jetpack.
Visibility group data is present in the header if bit 0x10 is set, after the material set count and before the section sizes. Visibility groups are used to toggle the visibility of certain surfaces on or off during animations; for instance, Diddy's jetpack is part of his model but doesn't render in most of his animations.


{| class="wikitable"
{| class="wikitable"
Anonymous user

Navigation menu