DKRDS Track (File Format): Difference between revisions
m (→Texture Group) |
mNo edit summary |
||
Line 67: | Line 67: | ||
| 0x02 || UInt16 || {{unknown-left|'''Unknown'''.}} | | 0x02 || UInt16 || {{unknown-left|'''Unknown'''.}} | ||
|- | |- | ||
| 0x04 || UInt16 || '''Number of | | 0x04 || UInt16 || '''Number of polygon groups''' ('''P'''). | ||
|- | |- | ||
| 0x06 || UInt16 || '''Number of vertices''' in [[#Track Section Vertex Data|Track Section Vertex Data]] (''' | | 0x06 || UInt16 || '''Number of vertices''' in [[#Track Section Vertex Data|Track Section Vertex Data]] ('''V'''). | ||
|- | |- | ||
| 0x08 || UInt16 || '''Number of | | 0x08 || UInt16 || '''Number of UVs''' in [[#Track Section UV|Track Section UV Data]] ('''U'''). | ||
|- | |- | ||
| 0x0A || UInt16 || '''Number of colors''' in [[#Track Section Color Data|Track Section Color Data]] (''' | | 0x0A || UInt16 || '''Number of colors''' in [[#Track Section Color Data|Track Section Color Data]] ('''C'''). | ||
|- | |- | ||
| 0x0C || Int32 | | | 0x0C || Int32 || '''[[#Track Section Unknown Data|Track Section Unknown Data]]''' offset. | ||
|- | |- | ||
| 0x10 || Int32 || '''[[#Track Section | | 0x10 || Int32 || '''[[#Track Section Collision Data|Track Section Collision Data]]''' offset. | ||
|- | |- | ||
| 0x14 || Int32 || '''[[#Track Section Vertex Data|Track Section Vertex Data]]''' offset. | | 0x14 || Int32 || '''[[#Track Section Vertex Data|Track Section Vertex Data]]''' offset. | ||
|- | |- | ||
| 0x18 || Int32 || '''[[#Track Section | | 0x18 || Int32 || '''[[#Track Section UV Data|Track Section UV Data]]''' offset. | ||
|- | |- | ||
| 0x1C || Int32 || '''[[#Track Section Color Data|Track Section Color Data]]''' offset. | | 0x1C || Int32 || '''[[#Track Section Color Data|Track Section Color Data]]''' offset. | ||
Line 89: | Line 89: | ||
==== Track Section Data ==== | ==== Track Section Data ==== | ||
This data starts with an unknown | This data follows directly after the header of the section entry and starts with a 76-byte header. | ||
{|class=wikitable | |||
! Offset !! Type !! Description | |||
|- | |||
| 0x00 || Int32 || {{unknown-left|'''Unknown'''. Seems to be always 0xFFFFFFFF and set to an address when loaded in memory.}} | |||
|- | |||
| 0x04 || Byte[24] || {{unknown-left|'''Unknown'''. Always 0, padding?}} | |||
|- | |||
| 0x1C || UInt16[12][2] || {{unknown-left|'''Unknown'''. Both 24-byte arrays seem to always be the same?}} | |||
|- | |||
| 0x4C || colspan=2 {{unknown|End of header, start of [[#Track Section Polygon Data|Track Section Polygon Data]]}} | |||
|} | |||
===== Track Section Polygon Data ===== | |||
This section seems to store '''P''' polygon groups' attributes. | |||
{|class=wikitable | |||
! Offset !! Type !! Description | |||
|- | |||
| 0x00 || Polygon Group Entry['''P'''] || '''Polygon group entries'''. | |||
|} | |||
====== Polygon Group Entry ====== | |||
Each polygon group entry is 12 bytes long. | |||
{|class=wikitable | |||
! Offset !! Type !! Description | |||
|- | |||
| 0x00 || UInt16 || '''First triangle ID'''. | |||
|- | |||
| 0x02 || UInt16 || '''Number of triangles'''. | |||
|- | |||
| 0x04 || Byte || {{unknown-left|'''Unknown'''.}} | |||
|- | |||
| 0x05 || Byte || {{unknown-left|'''Unknown'''.}} | |||
|- | |||
| 0x06 || UInt16 || {{unknown-left|'''Unknown'''.}} | |||
|- | |||
| 0x08 || Byte[4] || {{unknown-left|'''Unknown'''.}} | |||
|} | |||
===== Track Section Unknown Data ===== | |||
''TBD'' | |||
===== Track Section Collision Data ===== | ===== Track Section Collision Data ===== | ||
48-byte data per entry ''' | 48-byte data per entry '''P''' (?). ''TBD'' | ||
===== Track Section Vertex Data ===== | ===== Track Section Vertex Data ===== | ||
Vertex data is stored as 6-byte groups per entry ''' | Vertex data is stored as 6-byte groups per entry '''V'''. | ||
{|class=wikitable | {|class=wikitable | ||
! Offset !! Type !! Description | ! Offset !! Type !! Description | ||
|- | |- | ||
| 0x00 || Int16[3][''' | | 0x00 || Int16[3]['''V'''] || '''Vertex XYZ position'''. | ||
|} | |} | ||
===== Track Section UV Data ===== | ===== Track Section UV Data ===== | ||
UV data is stored as 4-byte groups per entry ''' | UV data is stored as 4-byte groups per entry '''U'''. | ||
{|class=wikitable | {|class=wikitable | ||
! Offset !! Type !! Description | ! Offset !! Type !! Description | ||
|- | |- | ||
| 0x00 || Int16[2][''' | | 0x00 || Int16[2]['''U'''] || '''Vertex UV position'''. | ||
|} | |} | ||
===== Track Section Color Data ===== | ===== Track Section Color Data ===== | ||
Color data is stored as 2-byte groups per entry ''' | Color data is stored as 2-byte groups per entry '''C'''. | ||
{|class=wikitable | {|class=wikitable | ||
! Offset !! Type !! Description | ! Offset !! Type !! Description | ||
|- | |- | ||
| 0x00 || UInt16[''' | | 0x00 || UInt16['''C'''] || '''RGBA5551 color'''. | ||
|} | |} | ||
Revision as of 18:19, 22 June 2024
DKRDS Track is the nameless file format used in Diddy Kong Racing DS that stores the tracks' section models, collision and textures. Its type identifier in assets.bin is 0x9A.
File Format
The file byte order is always little endian.
Header
The file starts with a header that is 56 bytes long.
Offset | Type | Description |
---|---|---|
0x00 | Int32 | Number of sections (N). |
0x04 | Int32 | Track Section Group offset. |
0x08 | Int32 | Unknown Section 1 offset. |
0x0C | Byte[4] | Unknown. Always 0xCCCCCCCC. |
0x10 | Int32 | Unknown Section 2 offset. |
0x14 | Int32 | Unknown Section 2 data type:
|
0x18 | Int32 | Number of textures. |
0x1C | Int32 | Texture Group offset. |
0x20 | Int32 | Unknown Section 3 offset. |
0x24 | Int32 | Wish Race Unknown Section entry count. |
0x28 | Int32 | Wish Race Unknown Section offset. |
0x2C | Byte[4] | Unknown. Seems to be some kind of flags. |
0x30 | Int32 | Unknown. |
0x34 | Int32 | File size. |
0x38 | End of header |
Track Section Group
This group starts with a list of N offsets.
Offset | Type | Description |
---|---|---|
0x00 | Int32[N] | Track Section Entry offsets. Relative to the start of this group. |
Track Section Entry
Every section entry defines model and collision data. The entry starts with a 32-byte header.
Offset | Type | Description |
---|---|---|
0x00 | Byte | Unknown. |
0x01 | Byte | Unknown. Always 5? |
0x02 | UInt16 | Unknown. |
0x04 | UInt16 | Number of polygon groups (P). |
0x06 | UInt16 | Number of vertices in Track Section Vertex Data (V). |
0x08 | UInt16 | Number of UVs in Track Section UV Data (U). |
0x0A | UInt16 | Number of colors in Track Section Color Data (C). |
0x0C | Int32 | Track Section Unknown Data offset. |
0x10 | Int32 | Track Section Collision Data offset. |
0x14 | Int32 | Track Section Vertex Data offset. |
0x18 | Int32 | Track Section UV Data offset. |
0x1C | Int32 | Track Section Color Data offset. |
0x38 | End of header, start of Track Section Data |
Track Section Data
This data follows directly after the header of the section entry and starts with a 76-byte header.
Offset | Type | Description |
---|---|---|
0x00 | Int32 | Unknown. Seems to be always 0xFFFFFFFF and set to an address when loaded in memory. |
0x04 | Byte[24] | Unknown. Always 0, padding? |
0x1C | UInt16[12][2] | Unknown. Both 24-byte arrays seem to always be the same? |
0x4C | End of header, start of Track Section Polygon Data |
Track Section Polygon Data
This section seems to store P polygon groups' attributes.
Offset | Type | Description |
---|---|---|
0x00 | Polygon Group Entry[P] | Polygon group entries. |
Polygon Group Entry
Each polygon group entry is 12 bytes long.
Offset | Type | Description |
---|---|---|
0x00 | UInt16 | First triangle ID. |
0x02 | UInt16 | Number of triangles. |
0x04 | Byte | Unknown. |
0x05 | Byte | Unknown. |
0x06 | UInt16 | Unknown. |
0x08 | Byte[4] | Unknown. |
Track Section Unknown Data
TBD
Track Section Collision Data
48-byte data per entry P (?). TBD
Track Section Vertex Data
Vertex data is stored as 6-byte groups per entry V.
Offset | Type | Description |
---|---|---|
0x00 | Int16[3][V] | Vertex XYZ position. |
Track Section UV Data
UV data is stored as 4-byte groups per entry U.
Offset | Type | Description |
---|---|---|
0x00 | Int16[2][U] | Vertex UV position. |
Track Section Color Data
Color data is stored as 2-byte groups per entry C.
Offset | Type | Description |
---|---|---|
0x00 | UInt16[C] | RGBA5551 color. |
Unknown Section 1
TBD
Unknown Section 2
TBD
Texture Group
See DKRDS Texture Group.
Unknown Section 3
TBD
Wish Race Unknown Section
This section is only used for the Wish Race tracks. TBD
Tools
The following tools can handle DKRDS Track:
- (none)