<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wexosmk.xyz/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Atlas</id>
	<title>Wexos&#039;s Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wexosmk.xyz/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Atlas"/>
	<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php/Special:Contributions/Atlas"/>
	<updated>2026-06-08T20:25:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Track_(File_Format)&amp;diff=678</id>
		<title>DKRDS Track (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Track_(File_Format)&amp;diff=678"/>
		<updated>2026-06-04T14:38:04Z</updated>

		<summary type="html">&lt;p&gt;Atlas: /* Polygon Group Entry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{under-construction}}&lt;br /&gt;
&#039;&#039;&#039;DKRDS Track&#039;&#039;&#039; is the nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039; that stores the tracks&#039; section models, collision and textures. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x9A&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a header that is 56 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Number of sections&#039;&#039;&#039; (&#039;&#039;&#039;N&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || &#039;&#039;&#039;[[#Track Section Group|Track Section Group]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;[[#Collision Effects|Collision Effects]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0xCCCCCCCC.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || &#039;&#039;&#039;[[#Culling Groups|Culling Groups]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;[[#Culling Groups|Culling Groups]]&#039;&#039;&#039; data type:&lt;br /&gt;
* 1 = 4-byte per &#039;&#039;&#039;N&#039;&#039;&#039; group.&lt;br /&gt;
* 2 = 8-byte per &#039;&#039;&#039;N&#039;&#039;&#039; group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Int32 || &#039;&#039;&#039;Number of textures&#039;&#039;&#039; (&#039;&#039;&#039;X&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || &#039;&#039;&#039;[[#Texture Group|Texture Group]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Int32 || &#039;&#039;&#039;[[#Unknown Section 1|Unknown Section 1]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Int32 || &#039;&#039;&#039;[[#Wish Race Unknown Section|Wish Race Unknown Section]]&#039;&#039;&#039; entry count.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Int32 || &#039;&#039;&#039;[[#Wish Race Unknown Section|Wish Race Unknown Section]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be some kind of flags.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || Int32 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || Int32 || &#039;&#039;&#039;File size&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Track Section Group ==&lt;br /&gt;
This group starts with a list of &#039;&#039;&#039;N&#039;&#039;&#039; offsets.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Track Section Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32[&#039;&#039;&#039;N&#039;&#039;&#039;] || &#039;&#039;&#039;[[#Track Section Entry|Track Section Entry]]&#039;&#039;&#039; offsets. Relative to the start of this group.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Track Section Entry ===&lt;br /&gt;
Every section entry defines model and collision data. The entry starts with a 32-byte header.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Track Section Entry Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 5?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || &#039;&#039;&#039;Number of polygon groups&#039;&#039;&#039; (&#039;&#039;&#039;P&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &#039;&#039;&#039;Number of vertices&#039;&#039;&#039; in [[#Track Section Vertex Data|Track Section Vertex Data]] (&#039;&#039;&#039;V&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16 || &#039;&#039;&#039;Number of UVs&#039;&#039;&#039; in [[#Track Section UV|Track Section UV Data]] (&#039;&#039;&#039;U&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt16 || &#039;&#039;&#039;Number of colors&#039;&#039;&#039; in [[#Track Section Color Data|Track Section Color Data]] (&#039;&#039;&#039;C&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || &#039;&#039;&#039;[[#Track Section Triangle Data|Track Section Triangle Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || &#039;&#039;&#039;[[#Track Section Collision Data|Track Section Collision Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;[[#Track Section Vertex Data|Track Section Vertex Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Int32 || &#039;&#039;&#039;[[#Track Section UV Data|Track Section UV Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || &#039;&#039;&#039;[[#Track Section Color Data|Track Section Color Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || colspan=2 {{unknown|End of header, start of [[#Track Section Data|Track Section Data]]}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Track Section Data ====&lt;br /&gt;
This data follows directly after the header of the section entry and starts with a 76-byte header.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be always 0xFFFFFFFF and set to an address when loaded in memory.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32[3] || &#039;&#039;&#039;Collision XYZ offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32[3] || &#039;&#039;&#039;Visual model XYZ offset&#039;&#039;&#039;. The units are not the same as the collision offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || [[#Track Section AABB|Track Section AABB]][2] || &#039;&#039;&#039;AABB areas&#039;&#039;&#039; of the entire section used for collision detection. The second AABB always seems to be a duplicate of the first.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C || colspan=2 {{unknown|End of header, start of [[#Track Section Polygon Data|Track Section Polygon Data]]}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section AABB =====&lt;br /&gt;
Track sections contain 2 identical AABB areas each. It is unknown why there&#039;s a duplicate, perhaps used during runtime after object space transform. All values need to be divided by 64 in order to obtain the absolute position data and match with the visual models.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32[3] || &#039;&#039;&#039;AABB minimum XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32[3] || &#039;&#039;&#039;AABB XYZ extent&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Polygon Data =====&lt;br /&gt;
This section seems to store &#039;&#039;&#039;P&#039;&#039;&#039; polygon groups&#039; attributes.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || [[#Polygon Group Entry|Polygon Group Entry]][&#039;&#039;&#039;P&#039;&#039;&#039;] || &#039;&#039;&#039;Polygon group entries&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Polygon Group Entry ======&lt;br /&gt;
Each polygon group entry is 12 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;First triangle ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &#039;&#039;&#039;Number of triangles&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || &#039;&#039;&#039;Main collision attribute&#039;&#039;&#039;. &#039;&#039;&#039;AAAA BBBB&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: &#039;&#039;&#039;Shadow level&#039;&#039;&#039;. The higher the value, the darker the character gets.&lt;br /&gt;
* &#039;&#039;&#039;B&#039;&#039;&#039;: &#039;&#039;&#039;Collision flag&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Road and effects.&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Wall (sparks on collision).&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Special effects (turns off visual model).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Invisible wall (no sparks on collision, turns off visual model).&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || &#039;&#039;&#039;Secondary collision attribute&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;Main flag = 0x01&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Special effect? Used for water.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Pass through/no effect.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Road.&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;Main flag = 0x08&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Invisible wall (no sparks on collision).&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Water.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &#039;&#039;&#039;Tertiary collision attribute&#039;&#039;&#039;. Split in bits.&lt;br /&gt;
* &#039;&#039;&#039;Main flag = 0x01&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Used in non-collideable stuff.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Water, inflates tires in car.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Used in non-collideable stuff.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Used in non-collideable stuff.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x60 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Used in non-collideable stuff.}}&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;Main flag = 0x08&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Used in non-collideable stuff.}}&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;Main flag = 0x0C&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Ignore when using plane.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The number of triangles &#039;&#039;&#039;T&#039;&#039;&#039; can be calculated by adding the first triangle ID to the number of triangles of the last polygon group entry.&lt;br /&gt;
&lt;br /&gt;
===== Track Section Triangle Data =====&lt;br /&gt;
This section stores &#039;&#039;&#039;T&#039;&#039;&#039; triangle entries.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || [[#Triangle Entry|Triangle Entry]][&#039;&#039;&#039;T&#039;&#039;&#039;] || &#039;&#039;&#039;Triangle entries&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Triangle Entry ======&lt;br /&gt;
Each triangle entry is 20 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;Attribute flags&#039;&#039;&#039;. &#039;&#039;&#039;AAAA AAAA AAAA AAAB&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: &#039;&#039;&#039;Texture ID&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;B&#039;&#039;&#039;: &#039;&#039;&#039;Is collidable&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16[3] || &#039;&#039;&#039;Face XYZ normals&#039;&#039;&#039;. Values need to be divided by 4096.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[4] || &#039;&#039;&#039;Vertex position indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte[4] || &#039;&#039;&#039;UV indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Byte[4] || &#039;&#039;&#039;Color indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Collision Data =====&lt;br /&gt;
4-byte data per triangle (?). &#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Track Section Vertex Data =====&lt;br /&gt;
Vertex data is stored as 6-byte groups per entry &#039;&#039;&#039;V&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int16[3][&#039;&#039;&#039;V&#039;&#039;&#039;] || &#039;&#039;&#039;Vertex XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section UV Data =====&lt;br /&gt;
UV data is stored as 4-byte groups per entry &#039;&#039;&#039;U&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int16[2][&#039;&#039;&#039;U&#039;&#039;&#039;] || &#039;&#039;&#039;Vertex UV position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Color Data =====&lt;br /&gt;
Color data is stored as 2-byte groups per entry &#039;&#039;&#039;C&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[&#039;&#039;&#039;C&#039;&#039;&#039;] || &#039;&#039;&#039;RGBA5551 color&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Collision Effects ==&lt;br /&gt;
Each texture is linked to 2 specific collision effects that affect the vehicle&#039;s speed, particles and lighting. This section contains 2 blocks of &#039;&#039;&#039;X&#039;&#039;&#039; UInt16s.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[&#039;&#039;&#039;X&#039;&#039;&#039;] || &#039;&#039;&#039;Effects&#039;&#039;&#039;, split in bits.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;X&#039;&#039;&#039; * 2 || UInt16[&#039;&#039;&#039;X&#039;&#039;&#039;] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. This seems to be a copy of the previous block?}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Culling Groups ==&lt;br /&gt;
This section includes a 4-byte or 8-byte per track section values that determine which section models are loaded when entering a specific section. Each section is represented as 1 bit.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[&#039;&#039;&#039;N&#039;&#039;&#039;]/UInt32[&#039;&#039;&#039;N&#039;&#039;&#039;] || &#039;&#039;&#039;Culled model sections&#039;&#039;&#039;, represented as &#039;&#039;&#039;N&#039;&#039;&#039; bits, 1 per section, in order from the least to the most significant bit. 0 if culled, 1 if loaded.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Texture Group ==&lt;br /&gt;
See &#039;&#039;&#039;[[DKRDS Texture Group]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Unknown Section 1 ==&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wish Race Unknown Section ==&lt;br /&gt;
This section is only used for the Wish Race tracks. &#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Track:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Track_(File_Format)&amp;diff=677</id>
		<title>DKRDS Track (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Track_(File_Format)&amp;diff=677"/>
		<updated>2026-06-03T18:22:25Z</updated>

		<summary type="html">&lt;p&gt;Atlas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{under-construction}}&lt;br /&gt;
&#039;&#039;&#039;DKRDS Track&#039;&#039;&#039; is the nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039; that stores the tracks&#039; section models, collision and textures. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x9A&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a header that is 56 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Number of sections&#039;&#039;&#039; (&#039;&#039;&#039;N&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || &#039;&#039;&#039;[[#Track Section Group|Track Section Group]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;[[#Collision Effects|Collision Effects]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0xCCCCCCCC.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || &#039;&#039;&#039;[[#Culling Groups|Culling Groups]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;[[#Culling Groups|Culling Groups]]&#039;&#039;&#039; data type:&lt;br /&gt;
* 1 = 4-byte per &#039;&#039;&#039;N&#039;&#039;&#039; group.&lt;br /&gt;
* 2 = 8-byte per &#039;&#039;&#039;N&#039;&#039;&#039; group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Int32 || &#039;&#039;&#039;Number of textures&#039;&#039;&#039; (&#039;&#039;&#039;X&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || &#039;&#039;&#039;[[#Texture Group|Texture Group]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Int32 || &#039;&#039;&#039;[[#Unknown Section 1|Unknown Section 1]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Int32 || &#039;&#039;&#039;[[#Wish Race Unknown Section|Wish Race Unknown Section]]&#039;&#039;&#039; entry count.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Int32 || &#039;&#039;&#039;[[#Wish Race Unknown Section|Wish Race Unknown Section]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be some kind of flags.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || Int32 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || Int32 || &#039;&#039;&#039;File size&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Track Section Group ==&lt;br /&gt;
This group starts with a list of &#039;&#039;&#039;N&#039;&#039;&#039; offsets.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Track Section Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32[&#039;&#039;&#039;N&#039;&#039;&#039;] || &#039;&#039;&#039;[[#Track Section Entry|Track Section Entry]]&#039;&#039;&#039; offsets. Relative to the start of this group.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Track Section Entry ===&lt;br /&gt;
Every section entry defines model and collision data. The entry starts with a 32-byte header.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Track Section Entry Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 5?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || &#039;&#039;&#039;Number of polygon groups&#039;&#039;&#039; (&#039;&#039;&#039;P&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &#039;&#039;&#039;Number of vertices&#039;&#039;&#039; in [[#Track Section Vertex Data|Track Section Vertex Data]] (&#039;&#039;&#039;V&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16 || &#039;&#039;&#039;Number of UVs&#039;&#039;&#039; in [[#Track Section UV|Track Section UV Data]] (&#039;&#039;&#039;U&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt16 || &#039;&#039;&#039;Number of colors&#039;&#039;&#039; in [[#Track Section Color Data|Track Section Color Data]] (&#039;&#039;&#039;C&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || &#039;&#039;&#039;[[#Track Section Triangle Data|Track Section Triangle Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || &#039;&#039;&#039;[[#Track Section Collision Data|Track Section Collision Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;[[#Track Section Vertex Data|Track Section Vertex Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Int32 || &#039;&#039;&#039;[[#Track Section UV Data|Track Section UV Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || &#039;&#039;&#039;[[#Track Section Color Data|Track Section Color Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || colspan=2 {{unknown|End of header, start of [[#Track Section Data|Track Section Data]]}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Track Section Data ====&lt;br /&gt;
This data follows directly after the header of the section entry and starts with a 76-byte header.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be always 0xFFFFFFFF and set to an address when loaded in memory.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32[3] || &#039;&#039;&#039;Collision XYZ offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32[3] || &#039;&#039;&#039;Visual model XYZ offset&#039;&#039;&#039;. The units are not the same as the collision offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || [[#Track Section AABB|Track Section AABB]][2] || &#039;&#039;&#039;AABB areas&#039;&#039;&#039; of the entire section used for collision detection. The second AABB always seems to be a duplicate of the first.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C || colspan=2 {{unknown|End of header, start of [[#Track Section Polygon Data|Track Section Polygon Data]]}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section AABB =====&lt;br /&gt;
Track sections contain 2 identical AABB areas each. It is unknown why there&#039;s a duplicate, perhaps used during runtime after object space transform. All values need to be divided by 64 in order to obtain the absolute position data and match with the visual models.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32[3] || &#039;&#039;&#039;AABB minimum XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32[3] || &#039;&#039;&#039;AABB XYZ extent&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Polygon Data =====&lt;br /&gt;
This section seems to store &#039;&#039;&#039;P&#039;&#039;&#039; polygon groups&#039; attributes.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || [[#Polygon Group Entry|Polygon Group Entry]][&#039;&#039;&#039;P&#039;&#039;&#039;] || &#039;&#039;&#039;Polygon group entries&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Polygon Group Entry ======&lt;br /&gt;
Each polygon group entry is 12 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;First triangle ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &#039;&#039;&#039;Number of triangles&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || &#039;&#039;&#039;Main collision attribute&#039;&#039;&#039;. &#039;&#039;&#039;AAAA BBBB&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: &#039;&#039;&#039;Shadow level&#039;&#039;&#039;. The higher the value, the darker the character gets.&lt;br /&gt;
* &#039;&#039;&#039;B&#039;&#039;&#039;: &#039;&#039;&#039;Collision flag&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Road and effects.&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Wall.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Special effects?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Invisible wall.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || &#039;&#039;&#039;Secondary collision attribute&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;Main flag = 0x01&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Special effect? Used for water.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Pass through/no effect.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Road.&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;Main flag = 0x08&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Water.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &#039;&#039;&#039;Tertiary collision attribute&#039;&#039;&#039;. Split in bits.&lt;br /&gt;
* &#039;&#039;&#039;Main flag = 0x01&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Used in non-collideable stuff.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Water, inflates tires in car.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Used in non-collideable stuff.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Used in non-collideable stuff.}}&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;Main flag = 0x0C&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Ignore when using plane.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The number of triangles &#039;&#039;&#039;T&#039;&#039;&#039; can be calculated by adding the first triangle ID to the number of triangles of the last polygon group entry.&lt;br /&gt;
&lt;br /&gt;
===== Track Section Triangle Data =====&lt;br /&gt;
This section stores &#039;&#039;&#039;T&#039;&#039;&#039; triangle entries.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || [[#Triangle Entry|Triangle Entry]][&#039;&#039;&#039;T&#039;&#039;&#039;] || &#039;&#039;&#039;Triangle entries&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Triangle Entry ======&lt;br /&gt;
Each triangle entry is 20 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;Attribute flags&#039;&#039;&#039;. &#039;&#039;&#039;AAAA AAAA AAAA AAAB&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: &#039;&#039;&#039;Texture ID&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;B&#039;&#039;&#039;: &#039;&#039;&#039;Is collidable&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16[3] || &#039;&#039;&#039;Face XYZ normals&#039;&#039;&#039;. Values need to be divided by 4096.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[4] || &#039;&#039;&#039;Vertex position indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte[4] || &#039;&#039;&#039;UV indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Byte[4] || &#039;&#039;&#039;Color indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Collision Data =====&lt;br /&gt;
4-byte data per triangle (?). &#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Track Section Vertex Data =====&lt;br /&gt;
Vertex data is stored as 6-byte groups per entry &#039;&#039;&#039;V&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int16[3][&#039;&#039;&#039;V&#039;&#039;&#039;] || &#039;&#039;&#039;Vertex XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section UV Data =====&lt;br /&gt;
UV data is stored as 4-byte groups per entry &#039;&#039;&#039;U&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int16[2][&#039;&#039;&#039;U&#039;&#039;&#039;] || &#039;&#039;&#039;Vertex UV position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Color Data =====&lt;br /&gt;
Color data is stored as 2-byte groups per entry &#039;&#039;&#039;C&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[&#039;&#039;&#039;C&#039;&#039;&#039;] || &#039;&#039;&#039;RGBA5551 color&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Collision Effects ==&lt;br /&gt;
Each texture is linked to 2 specific collision effects that affect the vehicle&#039;s speed, particles and lighting. This section contains 2 blocks of &#039;&#039;&#039;X&#039;&#039;&#039; UInt16s.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[&#039;&#039;&#039;X&#039;&#039;&#039;] || &#039;&#039;&#039;Effects&#039;&#039;&#039;, split in bits.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;X&#039;&#039;&#039; * 2 || UInt16[&#039;&#039;&#039;X&#039;&#039;&#039;] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. This seems to be a copy of the previous block?}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Culling Groups ==&lt;br /&gt;
This section includes a 4-byte or 8-byte per track section values that determine which section models are loaded when entering a specific section. Each section is represented as 1 bit.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[&#039;&#039;&#039;N&#039;&#039;&#039;]/UInt32[&#039;&#039;&#039;N&#039;&#039;&#039;] || &#039;&#039;&#039;Culled model sections&#039;&#039;&#039;, represented as &#039;&#039;&#039;N&#039;&#039;&#039; bits, 1 per section, in order from the least to the most significant bit. 0 if culled, 1 if loaded.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Texture Group ==&lt;br /&gt;
See &#039;&#039;&#039;[[DKRDS Texture Group]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Unknown Section 1 ==&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wish Race Unknown Section ==&lt;br /&gt;
This section is only used for the Wish Race tracks. &#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Track:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Track_(File_Format)&amp;diff=676</id>
		<title>DKRDS Track (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Track_(File_Format)&amp;diff=676"/>
		<updated>2026-06-03T17:53:08Z</updated>

		<summary type="html">&lt;p&gt;Atlas: /* Polygon Group Entry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{under-construction}}&lt;br /&gt;
&#039;&#039;&#039;DKRDS Track&#039;&#039;&#039; is the nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039; that stores the tracks&#039; section models, collision and textures. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x9A&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a header that is 56 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Number of sections&#039;&#039;&#039; (&#039;&#039;&#039;N&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || &#039;&#039;&#039;[[#Track Section Group|Track Section Group]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;[[#Unknown Section 1|Unknown Section 1]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0xCCCCCCCC.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || &#039;&#039;&#039;[[#Culling Groups|Culling Groups]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;[[#Culling Groups|Culling Groups]]&#039;&#039;&#039; data type:&lt;br /&gt;
* 1 = 4-byte per &#039;&#039;&#039;N&#039;&#039;&#039; group.&lt;br /&gt;
* 2 = 8-byte per &#039;&#039;&#039;N&#039;&#039;&#039; group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Int32 || &#039;&#039;&#039;Number of textures&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || &#039;&#039;&#039;[[#Texture Group|Texture Group]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Int32 || &#039;&#039;&#039;[[#Unknown Section 2|Unknown Section 2]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Int32 || &#039;&#039;&#039;[[#Wish Race Unknown Section|Wish Race Unknown Section]]&#039;&#039;&#039; entry count.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Int32 || &#039;&#039;&#039;[[#Wish Race Unknown Section|Wish Race Unknown Section]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be some kind of flags.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || Int32 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || Int32 || &#039;&#039;&#039;File size&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Track Section Group ==&lt;br /&gt;
This group starts with a list of &#039;&#039;&#039;N&#039;&#039;&#039; offsets.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Track Section Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32[&#039;&#039;&#039;N&#039;&#039;&#039;] || &#039;&#039;&#039;[[#Track Section Entry|Track Section Entry]]&#039;&#039;&#039; offsets. Relative to the start of this group.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Track Section Entry ===&lt;br /&gt;
Every section entry defines model and collision data. The entry starts with a 32-byte header.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Track Section Entry Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 5?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || &#039;&#039;&#039;Number of polygon groups&#039;&#039;&#039; (&#039;&#039;&#039;P&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &#039;&#039;&#039;Number of vertices&#039;&#039;&#039; in [[#Track Section Vertex Data|Track Section Vertex Data]] (&#039;&#039;&#039;V&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16 || &#039;&#039;&#039;Number of UVs&#039;&#039;&#039; in [[#Track Section UV|Track Section UV Data]] (&#039;&#039;&#039;U&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt16 || &#039;&#039;&#039;Number of colors&#039;&#039;&#039; in [[#Track Section Color Data|Track Section Color Data]] (&#039;&#039;&#039;C&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || &#039;&#039;&#039;[[#Track Section Triangle Data|Track Section Triangle Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || &#039;&#039;&#039;[[#Track Section Collision Data|Track Section Collision Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;[[#Track Section Vertex Data|Track Section Vertex Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Int32 || &#039;&#039;&#039;[[#Track Section UV Data|Track Section UV Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || &#039;&#039;&#039;[[#Track Section Color Data|Track Section Color Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || colspan=2 {{unknown|End of header, start of [[#Track Section Data|Track Section Data]]}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Track Section Data ====&lt;br /&gt;
This data follows directly after the header of the section entry and starts with a 76-byte header.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be always 0xFFFFFFFF and set to an address when loaded in memory.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32[3] || &#039;&#039;&#039;Collision XYZ offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32[3] || &#039;&#039;&#039;Visual model XYZ offset&#039;&#039;&#039;. The units are not the same as the collision offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || [[#Track Section AABB|Track Section AABB]][2] || &#039;&#039;&#039;AABB areas&#039;&#039;&#039; of the entire section used for collision detection. The second AABB always seems to be a duplicate of the first.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C || colspan=2 {{unknown|End of header, start of [[#Track Section Polygon Data|Track Section Polygon Data]]}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section AABB =====&lt;br /&gt;
Track sections contain 2 identical AABB areas each. It is unknown why there&#039;s a duplicate, perhaps used during runtime after object space transform. All values need to be divided by 64 in order to obtain the absolute position data and match with the visual models.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32[3] || &#039;&#039;&#039;AABB minimum XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32[3] || &#039;&#039;&#039;AABB XYZ extent&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Polygon Data =====&lt;br /&gt;
This section seems to store &#039;&#039;&#039;P&#039;&#039;&#039; polygon groups&#039; attributes.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || [[#Polygon Group Entry|Polygon Group Entry]][&#039;&#039;&#039;P&#039;&#039;&#039;] || &#039;&#039;&#039;Polygon group entries&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Polygon Group Entry ======&lt;br /&gt;
Each polygon group entry is 12 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;First triangle ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &#039;&#039;&#039;Number of triangles&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || &#039;&#039;&#039;Main collision attribute&#039;&#039;&#039;. &#039;&#039;&#039;AAAA BBBB&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: &#039;&#039;&#039;Shadow level&#039;&#039;&#039;. The higher the value, the darker the character gets.&lt;br /&gt;
* &#039;&#039;&#039;B&#039;&#039;&#039;: &#039;&#039;&#039;Collision flag&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Road and effects.&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Wall.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Invisible wall.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || &#039;&#039;&#039;Secondary collision attribute&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;Main flag = 0x01&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Special effect? Used for water.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Pass through/no effect.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Road.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &#039;&#039;&#039;Tertiary collision attribute&#039;&#039;&#039;. Split in bits.&lt;br /&gt;
* &#039;&#039;&#039;Main flag = 0x01&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Used in non-collideable stuff.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Water, inflates tires in car.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Used in non-collideable stuff.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Used in non-collideable stuff.}}&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;Main flag = 0x0C&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Ignore when using plane.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The number of triangles &#039;&#039;&#039;T&#039;&#039;&#039; can be calculated by adding the first triangle ID to the number of triangles of the last polygon group entry.&lt;br /&gt;
&lt;br /&gt;
===== Track Section Triangle Data =====&lt;br /&gt;
This section stores &#039;&#039;&#039;T&#039;&#039;&#039; triangle entries.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || [[#Triangle Entry|Triangle Entry]][&#039;&#039;&#039;T&#039;&#039;&#039;] || &#039;&#039;&#039;Triangle entries&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Triangle Entry ======&lt;br /&gt;
Each triangle entry is 20 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;Attribute flags&#039;&#039;&#039;. &#039;&#039;&#039;AAAA AAAA AAAA AAAB&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: &#039;&#039;&#039;Texture ID&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;B&#039;&#039;&#039;: &#039;&#039;&#039;Is collidable&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16[3] || &#039;&#039;&#039;Face XYZ normals&#039;&#039;&#039;. Values need to be divided by 4096.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[4] || &#039;&#039;&#039;Vertex position indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte[4] || &#039;&#039;&#039;UV indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Byte[4] || &#039;&#039;&#039;Color indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Collision Data =====&lt;br /&gt;
4-byte data per triangle (?). &#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Track Section Vertex Data =====&lt;br /&gt;
Vertex data is stored as 6-byte groups per entry &#039;&#039;&#039;V&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int16[3][&#039;&#039;&#039;V&#039;&#039;&#039;] || &#039;&#039;&#039;Vertex XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section UV Data =====&lt;br /&gt;
UV data is stored as 4-byte groups per entry &#039;&#039;&#039;U&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int16[2][&#039;&#039;&#039;U&#039;&#039;&#039;] || &#039;&#039;&#039;Vertex UV position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Color Data =====&lt;br /&gt;
Color data is stored as 2-byte groups per entry &#039;&#039;&#039;C&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[&#039;&#039;&#039;C&#039;&#039;&#039;] || &#039;&#039;&#039;RGBA5551 color&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Unknown Section 1 ==&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Culling Groups ==&lt;br /&gt;
This section includes a 4-byte or 8-byte per track section values that determine which section models are loaded when entering a specific section. Each section is represented as 1 bit.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[&#039;&#039;&#039;N&#039;&#039;&#039;]/UInt32[&#039;&#039;&#039;N&#039;&#039;&#039;] || &#039;&#039;&#039;Culled model sections&#039;&#039;&#039;, represented as &#039;&#039;&#039;N&#039;&#039;&#039; bits, 1 per section, in order from the least to the most significant bit. 0 if culled, 1 if loaded.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Texture Group ==&lt;br /&gt;
See &#039;&#039;&#039;[[DKRDS Texture Group]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Unknown Section 2 ==&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wish Race Unknown Section ==&lt;br /&gt;
This section is only used for the Wish Race tracks. &#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Track:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Track_(File_Format)&amp;diff=675</id>
		<title>DKRDS Track (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Track_(File_Format)&amp;diff=675"/>
		<updated>2026-06-03T15:58:58Z</updated>

		<summary type="html">&lt;p&gt;Atlas: /* Triangle Entry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{under-construction}}&lt;br /&gt;
&#039;&#039;&#039;DKRDS Track&#039;&#039;&#039; is the nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039; that stores the tracks&#039; section models, collision and textures. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x9A&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a header that is 56 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Number of sections&#039;&#039;&#039; (&#039;&#039;&#039;N&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || &#039;&#039;&#039;[[#Track Section Group|Track Section Group]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;[[#Unknown Section 1|Unknown Section 1]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0xCCCCCCCC.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || &#039;&#039;&#039;[[#Culling Groups|Culling Groups]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;[[#Culling Groups|Culling Groups]]&#039;&#039;&#039; data type:&lt;br /&gt;
* 1 = 4-byte per &#039;&#039;&#039;N&#039;&#039;&#039; group.&lt;br /&gt;
* 2 = 8-byte per &#039;&#039;&#039;N&#039;&#039;&#039; group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Int32 || &#039;&#039;&#039;Number of textures&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || &#039;&#039;&#039;[[#Texture Group|Texture Group]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Int32 || &#039;&#039;&#039;[[#Unknown Section 2|Unknown Section 2]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Int32 || &#039;&#039;&#039;[[#Wish Race Unknown Section|Wish Race Unknown Section]]&#039;&#039;&#039; entry count.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Int32 || &#039;&#039;&#039;[[#Wish Race Unknown Section|Wish Race Unknown Section]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be some kind of flags.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || Int32 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || Int32 || &#039;&#039;&#039;File size&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Track Section Group ==&lt;br /&gt;
This group starts with a list of &#039;&#039;&#039;N&#039;&#039;&#039; offsets.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Track Section Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32[&#039;&#039;&#039;N&#039;&#039;&#039;] || &#039;&#039;&#039;[[#Track Section Entry|Track Section Entry]]&#039;&#039;&#039; offsets. Relative to the start of this group.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Track Section Entry ===&lt;br /&gt;
Every section entry defines model and collision data. The entry starts with a 32-byte header.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Track Section Entry Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 5?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || &#039;&#039;&#039;Number of polygon groups&#039;&#039;&#039; (&#039;&#039;&#039;P&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &#039;&#039;&#039;Number of vertices&#039;&#039;&#039; in [[#Track Section Vertex Data|Track Section Vertex Data]] (&#039;&#039;&#039;V&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16 || &#039;&#039;&#039;Number of UVs&#039;&#039;&#039; in [[#Track Section UV|Track Section UV Data]] (&#039;&#039;&#039;U&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt16 || &#039;&#039;&#039;Number of colors&#039;&#039;&#039; in [[#Track Section Color Data|Track Section Color Data]] (&#039;&#039;&#039;C&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || &#039;&#039;&#039;[[#Track Section Triangle Data|Track Section Triangle Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || &#039;&#039;&#039;[[#Track Section Collision Data|Track Section Collision Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;[[#Track Section Vertex Data|Track Section Vertex Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Int32 || &#039;&#039;&#039;[[#Track Section UV Data|Track Section UV Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || &#039;&#039;&#039;[[#Track Section Color Data|Track Section Color Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || colspan=2 {{unknown|End of header, start of [[#Track Section Data|Track Section Data]]}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Track Section Data ====&lt;br /&gt;
This data follows directly after the header of the section entry and starts with a 76-byte header.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be always 0xFFFFFFFF and set to an address when loaded in memory.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32[3] || &#039;&#039;&#039;Collision XYZ offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32[3] || &#039;&#039;&#039;Visual model XYZ offset&#039;&#039;&#039;. The units are not the same as the collision offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || [[#Track Section AABB|Track Section AABB]][2] || &#039;&#039;&#039;AABB areas&#039;&#039;&#039; of the entire section used for collision detection. The second AABB always seems to be a duplicate of the first.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C || colspan=2 {{unknown|End of header, start of [[#Track Section Polygon Data|Track Section Polygon Data]]}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section AABB =====&lt;br /&gt;
Track sections contain 2 identical AABB areas each. It is unknown why there&#039;s a duplicate, perhaps used during runtime after object space transform. All values need to be divided by 64 in order to obtain the absolute position data and match with the visual models.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32[3] || &#039;&#039;&#039;AABB minimum XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32[3] || &#039;&#039;&#039;AABB XYZ extent&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Polygon Data =====&lt;br /&gt;
This section seems to store &#039;&#039;&#039;P&#039;&#039;&#039; polygon groups&#039; attributes.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || [[#Polygon Group Entry|Polygon Group Entry]][&#039;&#039;&#039;P&#039;&#039;&#039;] || &#039;&#039;&#039;Polygon group entries&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Polygon Group Entry ======&lt;br /&gt;
Each polygon group entry is 12 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;First triangle ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &#039;&#039;&#039;Number of triangles&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to affect collision attributes, such as the type of collision and terrain effects.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The number of triangles &#039;&#039;&#039;T&#039;&#039;&#039; can be calculated by adding the first triangle ID to the number of triangles of the last polygon group entry.&lt;br /&gt;
&lt;br /&gt;
===== Track Section Triangle Data =====&lt;br /&gt;
This section stores &#039;&#039;&#039;T&#039;&#039;&#039; triangle entries.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || [[#Triangle Entry|Triangle Entry]][&#039;&#039;&#039;T&#039;&#039;&#039;] || &#039;&#039;&#039;Triangle entries&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Triangle Entry ======&lt;br /&gt;
Each triangle entry is 20 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;Attribute flags&#039;&#039;&#039;. &#039;&#039;&#039;AAAA AAAA AAAA AAAB&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: &#039;&#039;&#039;Texture ID&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;B&#039;&#039;&#039;: &#039;&#039;&#039;Is collidable&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16[3] || &#039;&#039;&#039;Face XYZ normals&#039;&#039;&#039;. Values need to be divided by 4096.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[4] || &#039;&#039;&#039;Vertex position indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte[4] || &#039;&#039;&#039;UV indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Byte[4] || &#039;&#039;&#039;Color indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Collision Data =====&lt;br /&gt;
4-byte data per triangle (?). &#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Track Section Vertex Data =====&lt;br /&gt;
Vertex data is stored as 6-byte groups per entry &#039;&#039;&#039;V&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int16[3][&#039;&#039;&#039;V&#039;&#039;&#039;] || &#039;&#039;&#039;Vertex XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section UV Data =====&lt;br /&gt;
UV data is stored as 4-byte groups per entry &#039;&#039;&#039;U&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int16[2][&#039;&#039;&#039;U&#039;&#039;&#039;] || &#039;&#039;&#039;Vertex UV position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Color Data =====&lt;br /&gt;
Color data is stored as 2-byte groups per entry &#039;&#039;&#039;C&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[&#039;&#039;&#039;C&#039;&#039;&#039;] || &#039;&#039;&#039;RGBA5551 color&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Unknown Section 1 ==&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Culling Groups ==&lt;br /&gt;
This section includes a 4-byte or 8-byte per track section values that determine which section models are loaded when entering a specific section. Each section is represented as 1 bit.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[&#039;&#039;&#039;N&#039;&#039;&#039;]/UInt32[&#039;&#039;&#039;N&#039;&#039;&#039;] || &#039;&#039;&#039;Culled model sections&#039;&#039;&#039;, represented as &#039;&#039;&#039;N&#039;&#039;&#039; bits, 1 per section, in order from the least to the most significant bit. 0 if culled, 1 if loaded.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Texture Group ==&lt;br /&gt;
See &#039;&#039;&#039;[[DKRDS Texture Group]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Unknown Section 2 ==&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wish Race Unknown Section ==&lt;br /&gt;
This section is only used for the Wish Race tracks. &#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Track:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Track_(File_Format)&amp;diff=674</id>
		<title>DKRDS Track (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Track_(File_Format)&amp;diff=674"/>
		<updated>2026-06-03T12:20:18Z</updated>

		<summary type="html">&lt;p&gt;Atlas: /* Track Section Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{under-construction}}&lt;br /&gt;
&#039;&#039;&#039;DKRDS Track&#039;&#039;&#039; is the nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039; that stores the tracks&#039; section models, collision and textures. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x9A&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a header that is 56 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Number of sections&#039;&#039;&#039; (&#039;&#039;&#039;N&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || &#039;&#039;&#039;[[#Track Section Group|Track Section Group]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;[[#Unknown Section 1|Unknown Section 1]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0xCCCCCCCC.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || &#039;&#039;&#039;[[#Culling Groups|Culling Groups]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;[[#Culling Groups|Culling Groups]]&#039;&#039;&#039; data type:&lt;br /&gt;
* 1 = 4-byte per &#039;&#039;&#039;N&#039;&#039;&#039; group.&lt;br /&gt;
* 2 = 8-byte per &#039;&#039;&#039;N&#039;&#039;&#039; group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Int32 || &#039;&#039;&#039;Number of textures&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || &#039;&#039;&#039;[[#Texture Group|Texture Group]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Int32 || &#039;&#039;&#039;[[#Unknown Section 2|Unknown Section 2]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Int32 || &#039;&#039;&#039;[[#Wish Race Unknown Section|Wish Race Unknown Section]]&#039;&#039;&#039; entry count.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Int32 || &#039;&#039;&#039;[[#Wish Race Unknown Section|Wish Race Unknown Section]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be some kind of flags.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || Int32 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || Int32 || &#039;&#039;&#039;File size&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Track Section Group ==&lt;br /&gt;
This group starts with a list of &#039;&#039;&#039;N&#039;&#039;&#039; offsets.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Track Section Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32[&#039;&#039;&#039;N&#039;&#039;&#039;] || &#039;&#039;&#039;[[#Track Section Entry|Track Section Entry]]&#039;&#039;&#039; offsets. Relative to the start of this group.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Track Section Entry ===&lt;br /&gt;
Every section entry defines model and collision data. The entry starts with a 32-byte header.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Track Section Entry Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 5?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || &#039;&#039;&#039;Number of polygon groups&#039;&#039;&#039; (&#039;&#039;&#039;P&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &#039;&#039;&#039;Number of vertices&#039;&#039;&#039; in [[#Track Section Vertex Data|Track Section Vertex Data]] (&#039;&#039;&#039;V&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16 || &#039;&#039;&#039;Number of UVs&#039;&#039;&#039; in [[#Track Section UV|Track Section UV Data]] (&#039;&#039;&#039;U&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt16 || &#039;&#039;&#039;Number of colors&#039;&#039;&#039; in [[#Track Section Color Data|Track Section Color Data]] (&#039;&#039;&#039;C&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || &#039;&#039;&#039;[[#Track Section Triangle Data|Track Section Triangle Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || &#039;&#039;&#039;[[#Track Section Collision Data|Track Section Collision Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;[[#Track Section Vertex Data|Track Section Vertex Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Int32 || &#039;&#039;&#039;[[#Track Section UV Data|Track Section UV Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || &#039;&#039;&#039;[[#Track Section Color Data|Track Section Color Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || colspan=2 {{unknown|End of header, start of [[#Track Section Data|Track Section Data]]}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Track Section Data ====&lt;br /&gt;
This data follows directly after the header of the section entry and starts with a 76-byte header.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be always 0xFFFFFFFF and set to an address when loaded in memory.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32[3] || &#039;&#039;&#039;Collision XYZ offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32[3] || &#039;&#039;&#039;Visual model XYZ offset&#039;&#039;&#039;. The units are not the same as the collision offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || [[#Track Section AABB|Track Section AABB]][2] || &#039;&#039;&#039;AABB areas&#039;&#039;&#039; of the entire section used for collision detection. The second AABB always seems to be a duplicate of the first.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C || colspan=2 {{unknown|End of header, start of [[#Track Section Polygon Data|Track Section Polygon Data]]}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section AABB =====&lt;br /&gt;
Track sections contain 2 identical AABB areas each. It is unknown why there&#039;s a duplicate, perhaps used during runtime after object space transform. All values need to be divided by 64 in order to obtain the absolute position data and match with the visual models.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32[3] || &#039;&#039;&#039;AABB minimum XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32[3] || &#039;&#039;&#039;AABB XYZ extent&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Polygon Data =====&lt;br /&gt;
This section seems to store &#039;&#039;&#039;P&#039;&#039;&#039; polygon groups&#039; attributes.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || [[#Polygon Group Entry|Polygon Group Entry]][&#039;&#039;&#039;P&#039;&#039;&#039;] || &#039;&#039;&#039;Polygon group entries&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Polygon Group Entry ======&lt;br /&gt;
Each polygon group entry is 12 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;First triangle ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &#039;&#039;&#039;Number of triangles&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to affect collision attributes, such as the type of collision and terrain effects.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The number of triangles &#039;&#039;&#039;T&#039;&#039;&#039; can be calculated by adding the first triangle ID to the number of triangles of the last polygon group entry.&lt;br /&gt;
&lt;br /&gt;
===== Track Section Triangle Data =====&lt;br /&gt;
This section stores &#039;&#039;&#039;T&#039;&#039;&#039; triangle entries.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || [[#Triangle Entry|Triangle Entry]][&#039;&#039;&#039;T&#039;&#039;&#039;] || &#039;&#039;&#039;Triangle entries&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Triangle Entry ======&lt;br /&gt;
Each triangle entry is 20 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;Texture ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16[3] || &#039;&#039;&#039;Face XYZ normals&#039;&#039;&#039;. Values need to be divided by 4096.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[4] || &#039;&#039;&#039;Vertex position indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte[4] || &#039;&#039;&#039;UV indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Byte[4] || &#039;&#039;&#039;Color indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Collision Data =====&lt;br /&gt;
4-byte data per triangle (?). &#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Track Section Vertex Data =====&lt;br /&gt;
Vertex data is stored as 6-byte groups per entry &#039;&#039;&#039;V&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int16[3][&#039;&#039;&#039;V&#039;&#039;&#039;] || &#039;&#039;&#039;Vertex XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section UV Data =====&lt;br /&gt;
UV data is stored as 4-byte groups per entry &#039;&#039;&#039;U&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int16[2][&#039;&#039;&#039;U&#039;&#039;&#039;] || &#039;&#039;&#039;Vertex UV position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Color Data =====&lt;br /&gt;
Color data is stored as 2-byte groups per entry &#039;&#039;&#039;C&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[&#039;&#039;&#039;C&#039;&#039;&#039;] || &#039;&#039;&#039;RGBA5551 color&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Unknown Section 1 ==&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Culling Groups ==&lt;br /&gt;
This section includes a 4-byte or 8-byte per track section values that determine which section models are loaded when entering a specific section. Each section is represented as 1 bit.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[&#039;&#039;&#039;N&#039;&#039;&#039;]/UInt32[&#039;&#039;&#039;N&#039;&#039;&#039;] || &#039;&#039;&#039;Culled model sections&#039;&#039;&#039;, represented as &#039;&#039;&#039;N&#039;&#039;&#039; bits, 1 per section, in order from the least to the most significant bit. 0 if culled, 1 if loaded.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Texture Group ==&lt;br /&gt;
See &#039;&#039;&#039;[[DKRDS Texture Group]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Unknown Section 2 ==&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wish Race Unknown Section ==&lt;br /&gt;
This section is only used for the Wish Race tracks. &#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Track:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Texture_Tileset_(File_Format)&amp;diff=673</id>
		<title>DKRDS Texture Tileset (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Texture_Tileset_(File_Format)&amp;diff=673"/>
		<updated>2026-05-26T22:53:12Z</updated>

		<summary type="html">&lt;p&gt;Atlas: /* Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;DKRDS Texture Tileset&#039;&#039;&#039; is a nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039;. It stores raw Nintendo DS 8x8 character tile graphics used to build screen backgrounds. It exists in 4bpp (32 bytes per tile) and 8bpp (64 bytes per tile) bit-depth variants, which correspond to different palette modes in the accompanying files. Other filetypes that are commonly associated with texture tilesets, and necessary to create screen backgrounds, are [[DKRDS Tile Layout]], [[DKRDS Tilemap]] and [[DKRDS Palette Bank]]. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x00&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a 4-byte header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Number of tiles&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tile Entries ==&lt;br /&gt;
After the header comes the tile entries. The total file size is always &amp;lt;code&amp;gt;4 + &#039;&#039;&#039;T&#039;&#039;&#039; x &#039;&#039;size&#039;&#039;&amp;lt;/code&amp;gt;, where &#039;&#039;size&#039;&#039; is 32 (4bpp) or 64 (8bpp) depending on the variant.&lt;br /&gt;
&lt;br /&gt;
=== Variant A ===&lt;br /&gt;
The first variant is used together with a 16-color palette from a [[DKRDS Palette Bank]] file. Each tile is an 8x8 pixel block where every pixel is a 4-bit index (0-15) into one of the 16 available palettes.&lt;br /&gt;
&lt;br /&gt;
==== Tile data layout ====&lt;br /&gt;
Each tile is made of 32 bytes. Pixels are packed two per byte, row-major within the tile:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;R&#039;&#039;&#039; * 4 + &#039;&#039;&#039;C&#039;&#039;&#039; / 2&amp;lt;/code&amp;gt; || Two pixels from row &#039;&#039;&#039;R&#039;&#039;&#039;: low nibble = pixel at column &#039;&#039;&#039;C&#039;&#039;&#039; (even), high nibble = pixel at column &#039;&#039;&#039;C&#039;&#039;&#039;+1 (odd).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variant B ===&lt;br /&gt;
The second variant is used together with a 256-color palette from a [[DKRDS Palette Bank]]. Each tile is an 8x8 pixel block where every pixel is a full byte (0-255), a direct index into the single 256-color palette.&lt;br /&gt;
&lt;br /&gt;
==== Tile data layout ====&lt;br /&gt;
Each tile is made of 64 bytes. One byte per pixel, row-major.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Pixel index 0 is always transparent. The corresponding palette entry may contain any value; it is never displayed.&lt;br /&gt;
* Sub-tile IDs referenced from the [[DKRDS Tile Layout]] file are direct indices into this file. For Variant B (48-byte two-section layout), the full value must be used without masking, as sub-tile IDs can exceed 1023.&lt;br /&gt;
* The [[DKRDS Tile Layout]] file specifies which palette bank to use for each sub-tile. In 4bpp mode this selects one of 16 palettes (each 16 colors x 2 bytes = 32 bytes). In 8bpp mode the whole 512-byte palette block is treated as a single 256-color palette and the palette ID field is ignored.&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Texture Tileset:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Palette_Bank&amp;diff=672</id>
		<title>DKRDS Palette Bank</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Palette_Bank&amp;diff=672"/>
		<updated>2026-05-26T22:52:38Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Redirected page to DKRDS Palette Bank (File Format)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[DKRDS Palette Bank (File Format)]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Palette_Bank_(File_Format)&amp;diff=671</id>
		<title>DKRDS Palette Bank (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Palette_Bank_(File_Format)&amp;diff=671"/>
		<updated>2026-05-26T22:52:29Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;DKRDS Palette Bank&amp;#039;&amp;#039;&amp;#039; is a nameless file format used in &amp;#039;&amp;#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&amp;#039;&amp;#039;. It contains BGR555 color data used to render pixels from tile sprites. It exists in two variants depending on the bit-depth of the accompanying DKRDS Texture Tileset file: a 16-palette bank (for 4bpp tiles) or a single 256-color palette (for 8bpp tiles). Both variants are exactly 512 bytes. Other filetypes that are commonly associa...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;DKRDS Palette Bank&#039;&#039;&#039; is a nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039;. It contains BGR555 color data used to render pixels from tile sprites. It exists in two variants depending on the bit-depth of the accompanying [[DKRDS Texture Tileset]] file: a 16-palette bank (for 4bpp tiles) or a single 256-color palette (for 8bpp tiles). Both variants are exactly 512 bytes. Other filetypes that are commonly associated with palette banks, and necessary to create screen backgrounds, are [[DKRDS Tile Layout]] and [[DKRDS Tilemap]]. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x00&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Variant A ==&lt;br /&gt;
The first variant is used with 4bpp [[DKRDS Texture Tileset]] files. The 512 bytes are divided into 16 palettes of 16 colors each.&lt;br /&gt;
&lt;br /&gt;
=== Structure ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[16] || &#039;&#039;&#039;Palette 0&#039;&#039;&#039; (colors 0-15).&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt16[16] || &#039;&#039;&#039;Palette 1&#039;&#039;&#039; (colors 0-15).&lt;br /&gt;
|-&lt;br /&gt;
| ... || ... || ...&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E0 || UInt16[16] || &#039;&#039;&#039;Palette 15&#039;&#039;&#039; (colors 0-15).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Variant B ==&lt;br /&gt;
The second variant is used with 8bpp [[DKRDS Texture Tileset]] files. The 512 bytes form a single palette of 256 colors; pixel bytes index directly into it.&lt;br /&gt;
&lt;br /&gt;
=== Structure ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[256] || &#039;&#039;&#039;BGR555 colors&#039;&#039;&#039; (colors 0-255).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Color index 0 of &#039;&#039;&#039;any&#039;&#039;&#039; palette is transparent regardless of the stored BGR555 value.&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Palette Bank:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Texture_Tileset&amp;diff=670</id>
		<title>DKRDS Texture Tileset</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Texture_Tileset&amp;diff=670"/>
		<updated>2026-05-26T22:40:24Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Redirected page to DKRDS Texture Tileset (File Format)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[DKRDS Texture Tileset (File Format)]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Texture_Tileset_(File_Format)&amp;diff=669</id>
		<title>DKRDS Texture Tileset (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Texture_Tileset_(File_Format)&amp;diff=669"/>
		<updated>2026-05-26T22:40:13Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;DKRDS Texture Tileset&amp;#039;&amp;#039;&amp;#039; is a nameless file format used in &amp;#039;&amp;#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&amp;#039;&amp;#039;. It stores raw Nintendo DS 8x8 character tile graphics used to build screen backgrounds. It exists in 4bpp (32 bytes per tile) and 8bpp (64 bytes per tile) bit-depth variants, which correspond to different palette modes in the accompanying files. Other filetypes that are commonly associated with texture tilesets, and necessary to cre...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;DKRDS Texture Tileset&#039;&#039;&#039; is a nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039;. It stores raw Nintendo DS 8x8 character tile graphics used to build screen backgrounds. It exists in 4bpp (32 bytes per tile) and 8bpp (64 bytes per tile) bit-depth variants, which correspond to different palette modes in the accompanying files. Other filetypes that are commonly associated with texture tilesets, and necessary to create screen backgrounds, are [[DKRDS Tile Layout]], [[DKRDS Tilemap]] and [[DKRDS Palette Bank]]. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x00&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a 4-byte header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Number of tiles&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tile Entries ==&lt;br /&gt;
After the header comes the tile entries. The total file size is always &amp;lt;code&amp;gt;4 + &#039;&#039;&#039;T&#039;&#039;&#039; x &#039;&#039;size&#039;&#039;&amp;lt;/code&amp;gt;, where &#039;&#039;size&#039;&#039; is 32 (4bpp) or 64 (8bpp) depending on the variant.&lt;br /&gt;
&lt;br /&gt;
=== Variant A ===&lt;br /&gt;
The first variant is used together with a 16-color palette from a [[DKRDS Palette Bank]] file. Each tile is an 8x8 pixel block where every pixel is a 4-bit index (0-15) into one of the 16 available palettes.&lt;br /&gt;
&lt;br /&gt;
==== Tile data layout ====&lt;br /&gt;
Each tile is made of 32 bytes. Pixels are packed two per byte, row-major within the tile:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;R&#039;&#039;&#039; * 4 + &#039;&#039;&#039;C&#039;&#039;&#039; / 2&amp;lt;/code&amp;gt; || Two pixels from row &#039;&#039;&#039;R&#039;&#039;&#039;: low nibble = pixel at column &#039;&#039;&#039;C&#039;&#039;&#039; (even), high nibble = pixel at column &#039;&#039;&#039;C&#039;&#039;&#039;+1 (odd).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variant B ===&lt;br /&gt;
The second variant is used together with a 256-color palette from a [[DKRDS Palette Bank]]. Each tile is an 8x8 pixel block where every pixel is a full byte (0-255), a direct index into the single 256-color palette.&lt;br /&gt;
&lt;br /&gt;
==== Tile data layout ====&lt;br /&gt;
Each tile is made of 64 bytes. One byte per pixel, row-major.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Pixel index 0 is always transparent. The corresponding palette entry may contain any value; it is never displayed.&lt;br /&gt;
* Sub-tile IDs referenced from the [[DKRDS Tile Layout]] file are direct indices into this file. For Variant B (48-byte two-section layout), the full value must be used without masking, as sub-tile IDs can exceed 1023.&lt;br /&gt;
* The [[DKRDS Tile Layout]] file specifies which palette bank to use for each sub-tile. In 4bpp mode this selects one of 16 palettes (each 16 colors x 2 bytes = 32 bytes). In 8bpp mode the whole 512-byte palette block is treated as a single 256-color palette and the palette ID field is ignored.&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Tile Layout:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Tilemap&amp;diff=668</id>
		<title>DKRDS Tilemap</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Tilemap&amp;diff=668"/>
		<updated>2026-05-26T22:18:51Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Redirected page to DKRDS Tilemap (File Format)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[DKRDS Tilemap (File Format)]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Tilemap_(File_Format)&amp;diff=667</id>
		<title>DKRDS Tilemap (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Tilemap_(File_Format)&amp;diff=667"/>
		<updated>2026-05-26T22:18:39Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;DKRDS Tilemap&amp;#039;&amp;#039;&amp;#039; is a nameless file format used in &amp;#039;&amp;#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&amp;#039;&amp;#039; which defines a grid of 32x32 tile cells in order to assemble an image. Each cell in the grid is equivalent to one entry from the accompanying DKRDS Tile Layout file. Rendering all cells in order (from the top-left to the bottom-right tile) produces the complete image. Other filetypes that are commonly associated with tilemaps, and neces...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;DKRDS Tilemap&#039;&#039;&#039; is a nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039; which defines a grid of 32x32 tile cells in order to assemble an image. Each cell in the grid is equivalent to one entry from the accompanying [[DKRDS Tile Layout]] file. Rendering all cells in order (from the top-left to the bottom-right tile) produces the complete image. Other filetypes that are commonly associated with tilemaps, and necessary to create screen backgrounds, are [[DKRDS Texture Tileset]] and [[DKRDS Palette Bank]]. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x00&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;Map width&#039;&#039;&#039; in tiles (&#039;&#039;&#039;W&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &#039;&#039;&#039;Map height&#039;&#039;&#039; in tiles (&#039;&#039;&#039;H&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16[&#039;&#039;&#039;W&#039;&#039;&#039;][&#039;&#039;&#039;H&#039;&#039;&#039;] || &#039;&#039;&#039;Grid of tile entries&#039;&#039;&#039;, row-major.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
=== Tile Entry ===&lt;br /&gt;
Each entry represents a 32x32 tile which contains a reference index and flip attributes. They use the following bit layout:&lt;br /&gt;
&lt;br /&gt;
 A  A  A  A  B  C  D  D  D  D  D  D  D  D  D  D&lt;br /&gt;
 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Bits !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0?}}&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &#039;&#039;&#039;Flip vertical&#039;&#039;&#039;. If 1, it mirrors the 32x32 tile on the Y axis.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || &#039;&#039;&#039;Flip horizontal&#039;&#039;&#039;. If 1, it mirrors the 32x32 tile on the X axis.&lt;br /&gt;
|-&lt;br /&gt;
| 6-15 || &#039;&#039;&#039;Tile ID&#039;&#039;&#039;. This is the index into the [[DKRDS Tile Layout]] file (0-1023).&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
== Notes ==&lt;br /&gt;
* Tile index 0 typically represents an empty or fully-transparent background tile. In minimaps, large regions surrounding the track consist entirely of index-0 entries.&lt;br /&gt;
* The flip fields apply to the rendered 32x32 output of the whole 32x32 tile, &#039;&#039;&#039;after&#039;&#039;&#039; all 8x8 sub-tiles within it have been composited. They are independent of the per-sub-tile flip flags stored in the [[DKRDS Tile Layout]] file.&lt;br /&gt;
 &lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Tilemap:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Tile_Layout&amp;diff=666</id>
		<title>DKRDS Tile Layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Tile_Layout&amp;diff=666"/>
		<updated>2026-05-26T22:01:48Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Redirected page to DKRDS Tile Layout (File Format)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[DKRDS Tile Layout (File Format)]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Tile_Layout&amp;diff=665</id>
		<title>DKRDS Tile Layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Tile_Layout&amp;diff=665"/>
		<updated>2026-05-26T22:01:38Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Created page with &amp;quot;# REDIRECT DKRDS Tile Layout (File Format)&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# REDIRECT [[DKRDS Tile Layout (File Format)]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Tile_Layout_(File_Format)&amp;diff=664</id>
		<title>DKRDS Tile Layout (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Tile_Layout_(File_Format)&amp;diff=664"/>
		<updated>2026-05-26T22:01:23Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;DKRDS Tile Layout&amp;#039;&amp;#039;&amp;#039; is a nameless file format used in &amp;#039;&amp;#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&amp;#039;&amp;#039; with the purpose of assembling a set of reusable 32x32-pixel tiles for screen backgrounds, such as minimaps. Each tile is composed of a 4x4 grid of 8x8 character tiles sourced from a DKRDS Texture Tileset file. At least two format variants exist, distinguished by their per-entry size. Other filetypes that are commonly associated with...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;DKRDS Tile Layout&#039;&#039;&#039; is a nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039; with the purpose of assembling a set of reusable 32x32-pixel tiles for screen backgrounds, such as minimaps. Each tile is composed of a 4x4 grid of 8x8 character tiles sourced from a [[DKRDS Texture Tileset]] file. At least two format variants exist, distinguished by their per-entry size. Other filetypes that are commonly associated with tile layouts, and necessary to create screen backgrounds, are [[DKRDS Tilemap]] and [[DKRDS Palette Bank]]. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x00&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
All variants begin with a 4-byte header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Number of tiles&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tile Entries ==&lt;br /&gt;
After the header comes the tile entries. The total file size is always &amp;lt;code&amp;gt;4 + &#039;&#039;&#039;T&#039;&#039;&#039; x &#039;&#039;size&#039;&#039;&amp;lt;/code&amp;gt;, where &#039;&#039;size&#039;&#039; is 32 or 48 depending on the variant.&lt;br /&gt;
&lt;br /&gt;
=== Variant A ===&lt;br /&gt;
The first variant is used when the sub-tiles carry their own palette in each tilemap value (4bpp mode with per-tile palette selection). It contains a single section of 32-byte entries. Each entry describes one 32x32 tile as 16 tilemap references arranged in a 4-column x 4-row grid (row-major, left-to-right then top-to-bottom).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[16][&#039;&#039;&#039;T&#039;&#039;&#039;] || &#039;&#039;&#039;Sub-tile entries&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Sub-tile Entry ====&lt;br /&gt;
Each entry is composed of a reference ID and tile attributes. Only up to 1024 different sub-tile references can be defined. They use the following bit layout:&lt;br /&gt;
&lt;br /&gt;
 A  A  A  A  B  C  D  D  D  D  D  D  D  D  D  D&lt;br /&gt;
 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Bits !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-3 || &#039;&#039;&#039;Palette ID&#039;&#039;&#039;. Selects one of the 16 palettes from the [[DKRDS Palette Bank]] file.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &#039;&#039;&#039;Flip vertical&#039;&#039;&#039;. If 1, it mirrors the 8x8 sub-tile on the Y axis.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || &#039;&#039;&#039;Flip horizontal&#039;&#039;&#039;. If 1, it mirrors the 8x8 sub-tile on the X axis.&lt;br /&gt;
|-&lt;br /&gt;
| 6-15 || &#039;&#039;&#039;Sub-tile ID&#039;&#039;&#039;. This is the index into the [[DKRDS Texture Tileset]] file (0-1023).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variant B ===&lt;br /&gt;
The second variant is used when palette and flip information is stored separately from the sub-tile references (4bpp or 8bpp mode). The file is divided into two back-to-back sections (32-byte and 16-byte each) rather than interleaved per-entry data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[16][&#039;&#039;&#039;T&#039;&#039;&#039;] || &#039;&#039;&#039;Sub-tile entries&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;T&#039;&#039;&#039; * 32 || Byte[16][&#039;&#039;&#039;T&#039;&#039;&#039;] || &#039;&#039;&#039;Tile attributes&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Sub-tile Entry ====&lt;br /&gt;
Each entry contains a direct sub-tile reference. The value here is &#039;&#039;&#039;only&#039;&#039;&#039; a tile index, so up to 65536 different sub-tiles can be referenced in contrast of Variant A&#039;s limit of 1024.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Bits !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-15 ||  &#039;&#039;&#039;Sub-tile ID&#039;&#039;&#039;. This is the index into the [[DKRDS Texture Tileset]] file (0-65535).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Tile Attribute ====&lt;br /&gt;
Each byte corresponds to a sub-tile and encodes palette and flip data using the following bit layout:&lt;br /&gt;
&lt;br /&gt;
 A A B B B B C D&lt;br /&gt;
 0 1 2 3 4 5 6 7&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Bits !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0-1 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Changing these values seems to produce no visible difference in-game, but existing files still use different values for each sub-tile.}}&lt;br /&gt;
|-&lt;br /&gt;
| 2-5 || &#039;&#039;&#039;Palette ID&#039;&#039;&#039;.  Selects one of the 16 palettes from the [[DKRDS Palette Bank]] file.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || &#039;&#039;&#039;Flip vertical&#039;&#039;&#039;. If 1, it mirrors the 8x8 sub-tile on the Y axis.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || &#039;&#039;&#039;Flip horizontal&#039;&#039;&#039;. If 1, it mirrors the 8x8 sub-tile on the X axis.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Tile Layout:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Track_(File_Format)&amp;diff=663</id>
		<title>DKRDS Track (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Track_(File_Format)&amp;diff=663"/>
		<updated>2026-05-25T18:58:12Z</updated>

		<summary type="html">&lt;p&gt;Atlas: /* Track Section Entry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{under-construction}}&lt;br /&gt;
&#039;&#039;&#039;DKRDS Track&#039;&#039;&#039; is the nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039; that stores the tracks&#039; section models, collision and textures. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x9A&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a header that is 56 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Number of sections&#039;&#039;&#039; (&#039;&#039;&#039;N&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || &#039;&#039;&#039;[[#Track Section Group|Track Section Group]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;[[#Unknown Section 1|Unknown Section 1]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0xCCCCCCCC.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || &#039;&#039;&#039;[[#Culling Groups|Culling Groups]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;[[#Culling Groups|Culling Groups]]&#039;&#039;&#039; data type:&lt;br /&gt;
* 1 = 4-byte per &#039;&#039;&#039;N&#039;&#039;&#039; group.&lt;br /&gt;
* 2 = 8-byte per &#039;&#039;&#039;N&#039;&#039;&#039; group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Int32 || &#039;&#039;&#039;Number of textures&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || &#039;&#039;&#039;[[#Texture Group|Texture Group]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Int32 || &#039;&#039;&#039;[[#Unknown Section 2|Unknown Section 2]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Int32 || &#039;&#039;&#039;[[#Wish Race Unknown Section|Wish Race Unknown Section]]&#039;&#039;&#039; entry count.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Int32 || &#039;&#039;&#039;[[#Wish Race Unknown Section|Wish Race Unknown Section]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be some kind of flags.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || Int32 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || Int32 || &#039;&#039;&#039;File size&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Track Section Group ==&lt;br /&gt;
This group starts with a list of &#039;&#039;&#039;N&#039;&#039;&#039; offsets.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Track Section Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32[&#039;&#039;&#039;N&#039;&#039;&#039;] || &#039;&#039;&#039;[[#Track Section Entry|Track Section Entry]]&#039;&#039;&#039; offsets. Relative to the start of this group.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Track Section Entry ===&lt;br /&gt;
Every section entry defines model and collision data. The entry starts with a 32-byte header.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Track Section Entry Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 5?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || &#039;&#039;&#039;Number of polygon groups&#039;&#039;&#039; (&#039;&#039;&#039;P&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &#039;&#039;&#039;Number of vertices&#039;&#039;&#039; in [[#Track Section Vertex Data|Track Section Vertex Data]] (&#039;&#039;&#039;V&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16 || &#039;&#039;&#039;Number of UVs&#039;&#039;&#039; in [[#Track Section UV|Track Section UV Data]] (&#039;&#039;&#039;U&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt16 || &#039;&#039;&#039;Number of colors&#039;&#039;&#039; in [[#Track Section Color Data|Track Section Color Data]] (&#039;&#039;&#039;C&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || &#039;&#039;&#039;[[#Track Section Triangle Data|Track Section Triangle Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || &#039;&#039;&#039;[[#Track Section Collision Data|Track Section Collision Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;[[#Track Section Vertex Data|Track Section Vertex Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Int32 || &#039;&#039;&#039;[[#Track Section UV Data|Track Section UV Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || &#039;&#039;&#039;[[#Track Section Color Data|Track Section Color Data]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || colspan=2 {{unknown|End of header, start of [[#Track Section Data|Track Section Data]]}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Track Section Data ====&lt;br /&gt;
This data follows directly after the header of the section entry and starts with a 76-byte header.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be always 0xFFFFFFFF and set to an address when loaded in memory.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32[3] || &#039;&#039;&#039;Collision XYZ offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32[3] || &#039;&#039;&#039;Visual model XYZ offset&#039;&#039;&#039;. The units are not the same as the collision offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt16[12][2] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Both 24-byte arrays seem to always be the same? They affect collision data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C || colspan=2 {{unknown|End of header, start of [[#Track Section Polygon Data|Track Section Polygon Data]]}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Polygon Data =====&lt;br /&gt;
This section seems to store &#039;&#039;&#039;P&#039;&#039;&#039; polygon groups&#039; attributes.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Polygon Group Entry[&#039;&#039;&#039;P&#039;&#039;&#039;] || &#039;&#039;&#039;Polygon group entries&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Polygon Group Entry ======&lt;br /&gt;
Each polygon group entry is 12 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;First triangle ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &#039;&#039;&#039;Number of triangles&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to affect collision attributes, such as the type of collision and terrain effects.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[4] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The number of triangles &#039;&#039;&#039;T&#039;&#039;&#039; can be calculated by adding the first triangle ID to the number of triangles of the last polygon group entry.&lt;br /&gt;
&lt;br /&gt;
===== Track Section Triangle Data =====&lt;br /&gt;
This section stores &#039;&#039;&#039;T&#039;&#039;&#039; triangle entries.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Triangle Entry[&#039;&#039;&#039;T&#039;&#039;&#039;] || &#039;&#039;&#039;Triangle entries&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Triangle Entry ======&lt;br /&gt;
Each triangle entry is 20 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;Texture ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16[3] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to affect the collision only. Perhaps triangle normals?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[4] || &#039;&#039;&#039;Vertex position indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte[4] || &#039;&#039;&#039;UV indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Byte[4] || &#039;&#039;&#039;Color indices&#039;&#039;&#039;. The index for each of the 3 vertices is 10 bits long. 2 last bits are unknown.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Collision Data =====&lt;br /&gt;
4-byte data per triangle (?). &#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Track Section Vertex Data =====&lt;br /&gt;
Vertex data is stored as 6-byte groups per entry &#039;&#039;&#039;V&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int16[3][&#039;&#039;&#039;V&#039;&#039;&#039;] || &#039;&#039;&#039;Vertex XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section UV Data =====&lt;br /&gt;
UV data is stored as 4-byte groups per entry &#039;&#039;&#039;U&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int16[2][&#039;&#039;&#039;U&#039;&#039;&#039;] || &#039;&#039;&#039;Vertex UV position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Track Section Color Data =====&lt;br /&gt;
Color data is stored as 2-byte groups per entry &#039;&#039;&#039;C&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[&#039;&#039;&#039;C&#039;&#039;&#039;] || &#039;&#039;&#039;RGBA5551 color&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Unknown Section 1 ==&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Culling Groups ==&lt;br /&gt;
This section includes a 4-byte or 8-byte per track section values that determine which section models are loaded when entering a specific section. Each section is represented as 1 bit.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16[&#039;&#039;&#039;N&#039;&#039;&#039;]/UInt32[&#039;&#039;&#039;N&#039;&#039;&#039;] || &#039;&#039;&#039;Culled model sections&#039;&#039;&#039;, represented as &#039;&#039;&#039;N&#039;&#039;&#039; bits, 1 per section, in order from the least to the most significant bit. 0 if culled, 1 if loaded.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Texture Group ==&lt;br /&gt;
See &#039;&#039;&#039;[[DKRDS Texture Group]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Unknown Section 2 ==&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wish Race Unknown Section ==&lt;br /&gt;
This section is only used for the Wish Race tracks. &#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Track:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=LEV_(File_Format)&amp;diff=662</id>
		<title>LEV (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=LEV_(File_Format)&amp;diff=662"/>
		<updated>2026-05-18T10:39:12Z</updated>

		<summary type="html">&lt;p&gt;Atlas: /* Asset Table */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;LEV&#039;&#039;&#039; (&#039;&#039;&#039;LEV&#039;&#039;&#039;el) is a file format from &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039; that contains indexes that link to [[assets.bin]].&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Asset Table ==&lt;br /&gt;
The file contains two tables. The first one links all the asset IDs from assets.bin used for the level/scene. The second table links to sound effect IDs from the SDAT&#039;s SEQ_SE sequences.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Format of an ID Table&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || Number of IDs used &#039;&#039;&#039;N&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 + 2 || UInt16[&#039;&#039;&#039;N&#039;&#039;&#039;] || IDs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle LEV files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Sprite_Group_(File_Format)&amp;diff=661</id>
		<title>DKRDS Sprite Group (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Sprite_Group_(File_Format)&amp;diff=661"/>
		<updated>2026-05-17T01:01:11Z</updated>

		<summary type="html">&lt;p&gt;Atlas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;DKRDS Sprite Group&#039;&#039;&#039; is the nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039; that stores a formation of tiles and positions to create sprites. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x00&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a header that is 12 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Number of sets? Always 1?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Byte || &#039;&#039;&#039;Format&#039;&#039;&#039;:&lt;br /&gt;
* 0 = Palette16&lt;br /&gt;
* 1 = Palette256&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || &#039;&#039;&#039;Maximum number of blocks&#039;&#039;&#039; in this group to be rendered on the screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;[[#Tile Generator|Tile Generator]] offset&#039;&#039;&#039;. Always 0xC?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || colspan=2 {{unknown|End of header, start of Tile Generator}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tile Generator ==&lt;br /&gt;
All offsets from here on are always relative to the start of this section.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || UInt16 || &#039;&#039;&#039;Number of [[#Tile Set|Tile Sets]]&#039;&#039;&#039; (&#039;&#039;&#039;S&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &#039;&#039;&#039;Total number of tile texture blocks&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || [[#Tile Set|Tile Set]][&#039;&#039;&#039;S&#039;&#039;&#039;] || &#039;&#039;&#039;Tile set entries&#039;&#039;&#039;, 8 bytes long each.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tile Set ===&lt;br /&gt;
Each tile set links tile information blocks with tile texture data.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || UInt16 || &#039;&#039;&#039;[[#Tile Texture Data|Tile Texture Data]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &#039;&#039;&#039;[[#Tile Information Block|Tile Information Block]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || &#039;&#039;&#039;Number of tiles&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &#039;&#039;&#039;Total texture data length&#039;&#039;&#039; in bytes, of all tiles in this set.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tiles ==&lt;br /&gt;
After all tile set entries are defined, each pair of arrays, that is &#039;&#039;&#039;T&#039;&#039;&#039; tile information blocks, and then its corresponding &#039;&#039;&#039;T&#039;&#039;&#039; tile texture data chunks; are stored sequentially.&lt;br /&gt;
&lt;br /&gt;
=== Tile Information Block ===&lt;br /&gt;
Each information block is 8 bytes long and stores position and tile format data.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || Int16[2] || &#039;&#039;&#039;Cumulative tile XY position&#039;&#039;&#039;. The coordinates are based on the top-left corner, being the origin the previous tile&#039;s top-left pixel.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || &#039;&#039;&#039;Number of 8x8 texture blocks&#039;&#039;&#039; for this tile.&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || &#039;&#039;&#039;Texture dimensions&#039;&#039;&#039;. Only the 4 least significant bits are taken into account:&lt;br /&gt;
* 0 = 8x8&lt;br /&gt;
* 1 = 16x16&lt;br /&gt;
* 2 = 32x32&lt;br /&gt;
* 3 = 64x64&lt;br /&gt;
* 4 = 16x8&lt;br /&gt;
* 5 = 32x8&lt;br /&gt;
* 6 = 32x16&lt;br /&gt;
* 7 = 64x32&lt;br /&gt;
* 8 = 8x16&lt;br /&gt;
* 9 = 8x32&lt;br /&gt;
* 10 = 16x32&lt;br /&gt;
* 11 = 32x64&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Padding?}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tile Texture Data ===&lt;br /&gt;
Texture data is stored as swizzled 8x8 blocks. Palette data is stored in separate files.&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Sprite Group:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Sprite_Group_(File_Format)&amp;diff=660</id>
		<title>DKRDS Sprite Group (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Sprite_Group_(File_Format)&amp;diff=660"/>
		<updated>2026-05-16T23:34:28Z</updated>

		<summary type="html">&lt;p&gt;Atlas: /* Tile Information Block */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;DKRDS Sprite Group&#039;&#039;&#039; is the nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039; that stores a formation of tiles and positions to create sprites. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x00&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a header that is 12 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Number of sets? Always 1?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || &#039;&#039;&#039;Maximum number of blocks&#039;&#039;&#039; in this group to be rendered on the screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;[[#Tile Generator|Tile Generator]] offset&#039;&#039;&#039;. Always 0xC?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || colspan=2 {{unknown|End of header, start of Tile Generator}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tile Generator ==&lt;br /&gt;
All offsets from here on are always relative to the start of this section.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || UInt16 || &#039;&#039;&#039;Number of [[#Tile Set|Tile Sets]]&#039;&#039;&#039; (&#039;&#039;&#039;S&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &#039;&#039;&#039;Total number of tile texture blocks&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || [[#Tile Set|Tile Set]][&#039;&#039;&#039;S&#039;&#039;&#039;] || &#039;&#039;&#039;Tile set entries&#039;&#039;&#039;, 8 bytes long each.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tile Set ===&lt;br /&gt;
Each tile set links tile information blocks with tile texture data.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || UInt16 || &#039;&#039;&#039;[[#Tile Texture Data|Tile Texture Data]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &#039;&#039;&#039;[[#Tile Information Block|Tile Information Block]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || &#039;&#039;&#039;Number of tiles&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &#039;&#039;&#039;Total texture data length&#039;&#039;&#039; in bytes, of all tiles in this set.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tiles ==&lt;br /&gt;
After all tile set entries are defined, each pair of arrays, that is &#039;&#039;&#039;T&#039;&#039;&#039; tile information blocks, and then its corresponding &#039;&#039;&#039;T&#039;&#039;&#039; tile texture data chunks; are stored sequentially.&lt;br /&gt;
&lt;br /&gt;
=== Tile Information Block ===&lt;br /&gt;
Each information block is 8 bytes long and stores position and tile format data.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || Int16[2] || &#039;&#039;&#039;Cumulative tile XY position&#039;&#039;&#039;. The coordinates are based on the top-left corner, being the origin the previous tile&#039;s top-left pixel.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || &#039;&#039;&#039;Number of 8x8 texture blocks&#039;&#039;&#039; for this tile.&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || &#039;&#039;&#039;Texture dimensions&#039;&#039;&#039;. Only the 4 least significant bits are taken into account:&lt;br /&gt;
* 0 = 8x8&lt;br /&gt;
* 1 = 16x16&lt;br /&gt;
* 2 = 32x32&lt;br /&gt;
* 3 = 64x64&lt;br /&gt;
* 4 = 16x8&lt;br /&gt;
* 5 = 32x8&lt;br /&gt;
* 6 = 32x16&lt;br /&gt;
* 7 = 64x32&lt;br /&gt;
* 8 = 8x16&lt;br /&gt;
* 9 = 8x32&lt;br /&gt;
* 10 = 16x32&lt;br /&gt;
* 11 = 32x64&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Padding?}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tile Texture Data ===&lt;br /&gt;
Texture data is stored as swizzled 8x8 blocks in 16-color palette format (4 bits per pixel). Palette data is stored in separate files.&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Sprite Group:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Sprite_Group_(File_Format)&amp;diff=659</id>
		<title>DKRDS Sprite Group (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Sprite_Group_(File_Format)&amp;diff=659"/>
		<updated>2026-05-16T23:09:05Z</updated>

		<summary type="html">&lt;p&gt;Atlas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;DKRDS Sprite Group&#039;&#039;&#039; is the nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039; that stores a formation of tiles and positions to create sprites. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x00&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a header that is 12 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Number of sets? Always 1?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || &#039;&#039;&#039;Maximum number of blocks&#039;&#039;&#039; in this group to be rendered on the screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;[[#Tile Generator|Tile Generator]] offset&#039;&#039;&#039;. Always 0xC?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || colspan=2 {{unknown|End of header, start of Tile Generator}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tile Generator ==&lt;br /&gt;
All offsets from here on are always relative to the start of this section.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || UInt16 || &#039;&#039;&#039;Number of [[#Tile Set|Tile Sets]]&#039;&#039;&#039; (&#039;&#039;&#039;S&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &#039;&#039;&#039;Total number of tile texture blocks&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || [[#Tile Set|Tile Set]][&#039;&#039;&#039;S&#039;&#039;&#039;] || &#039;&#039;&#039;Tile set entries&#039;&#039;&#039;, 8 bytes long each.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tile Set ===&lt;br /&gt;
Each tile set links tile information blocks with tile texture data.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || UInt16 || &#039;&#039;&#039;[[#Tile Texture Data|Tile Texture Data]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &#039;&#039;&#039;[[#Tile Information Block|Tile Information Block]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || &#039;&#039;&#039;Number of tiles&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &#039;&#039;&#039;Total texture data length&#039;&#039;&#039; in bytes, of all tiles in this set.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tiles ==&lt;br /&gt;
After all tile set entries are defined, each pair of arrays, that is &#039;&#039;&#039;T&#039;&#039;&#039; tile information blocks, and then its corresponding &#039;&#039;&#039;T&#039;&#039;&#039; tile texture data chunks; are stored sequentially.&lt;br /&gt;
&lt;br /&gt;
=== Tile Information Block ===&lt;br /&gt;
Each information block is 8 bytes long and stores position and tile format data.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || Int16 || &#039;&#039;&#039;Tile X position&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Int16 || &#039;&#039;&#039;Tile Y position&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || &#039;&#039;&#039;Number of 8x8 texture blocks&#039;&#039;&#039; for this tile.&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || &#039;&#039;&#039;Texture dimensions&#039;&#039;&#039;. Only the 4 least significant bits are taken into account:&lt;br /&gt;
* 0 = 8x8&lt;br /&gt;
* 1 = 16x16&lt;br /&gt;
* 2 = 32x32&lt;br /&gt;
* 3 = 64x64&lt;br /&gt;
* 4 = 16x8&lt;br /&gt;
* 5 = 32x8&lt;br /&gt;
* 6 = 32x16&lt;br /&gt;
* 7 = 64x32&lt;br /&gt;
* 8 = 8x16&lt;br /&gt;
* 9 = 8x32&lt;br /&gt;
* 10 = 16x32&lt;br /&gt;
* 11 = 32x64&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Padding?}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tile Texture Data ===&lt;br /&gt;
Texture data is stored as swizzled 8x8 blocks in 16-color palette format (4 bits per pixel). Palette data is stored in separate files.&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Sprite Group:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Sprite_Group&amp;diff=658</id>
		<title>DKRDS Sprite Group</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Sprite_Group&amp;diff=658"/>
		<updated>2026-05-16T19:43:37Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Redirected page to DKRDS Sprite Group (File Format)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[DKRDS Sprite Group (File Format)]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Sprite_Group_(File_Format)&amp;diff=657</id>
		<title>DKRDS Sprite Group (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Sprite_Group_(File_Format)&amp;diff=657"/>
		<updated>2026-05-16T19:43:08Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;DKRDS Sprite Group&amp;#039;&amp;#039;&amp;#039; is the nameless file format used in &amp;#039;&amp;#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&amp;#039;&amp;#039; that stores a formation of tiles and positions to create sprites. Its type identifier in assets.bin is &amp;#039;&amp;#039;&amp;#039;0x00&amp;#039;&amp;#039;&amp;#039;.  == Header == The file starts with a header that is 12 bytes long.  {|class=wikitable ! Offset !! Type !! Description |- | 0x00  || UInt16 || {{unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;. Always 0?}} |- | 0x02 || UInt16 || {{unknown-...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;DKRDS Sprite Group&#039;&#039;&#039; is the nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039; that stores a formation of tiles and positions to create sprites. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x00&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a header that is 12 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Number of sets? Always 1?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || &#039;&#039;&#039;Number of sprites&#039;&#039;&#039; in this group to be rendered on the screen.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;[[#Tile Generator|Tile Generator]] offset&#039;&#039;&#039;. Always 0xC?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || colspan=2 {{unknown|End of header, start of Tile Generator}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tile Generator ==&lt;br /&gt;
All offsets from here on are always relative to the start of this section.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || UInt16 || &#039;&#039;&#039;Number of [[#Tile Set|Tile Sets]]&#039;&#039;&#039; (&#039;&#039;&#039;S&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &#039;&#039;&#039;Total number of tile texture blocks&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || [[#Tile Set|Tile Set]][&#039;&#039;&#039;S&#039;&#039;&#039;] || &#039;&#039;&#039;Tile set entries&#039;&#039;&#039;, 8 bytes long each.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tile Set ===&lt;br /&gt;
Each tile set links tile information blocks with tile texture data.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || UInt16 || &#039;&#039;&#039;[[#Tile Texture Data|Tile Texture Data]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &#039;&#039;&#039;[[#Tile Information Block|Tile Information Block]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || &#039;&#039;&#039;Number of tiles&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &#039;&#039;&#039;Total texture data length&#039;&#039;&#039; in bytes, of all tiles in this set.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tiles ==&lt;br /&gt;
After all tile set entries are defined, each pair of arrays, that is &#039;&#039;&#039;T&#039;&#039;&#039; tile information blocks, and then its corresponding &#039;&#039;&#039;T&#039;&#039;&#039; tile texture data chunks; are stored sequentially.&lt;br /&gt;
&lt;br /&gt;
=== Tile Information Block ===&lt;br /&gt;
Each information block is 8 bytes long and stores position and tile format data.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00  || Int16 || &#039;&#039;&#039;Tile X position&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Int16 || &#039;&#039;&#039;Tile Y position&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || &#039;&#039;&#039;Number of 8x8 texture blocks&#039;&#039;&#039; for this tile.&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || &#039;&#039;&#039;Texture dimensions&#039;&#039;&#039;. Only the 4 least significant bits are taken into account:&lt;br /&gt;
* 0 = 8x8&lt;br /&gt;
* 1 = 16x16&lt;br /&gt;
* 2 = 32x32&lt;br /&gt;
* 3 = 64x64&lt;br /&gt;
* 4 = 16x8&lt;br /&gt;
* 5 = 32x8&lt;br /&gt;
* 6 = 32x16&lt;br /&gt;
* 7 = 64x32&lt;br /&gt;
* 8 = 8x16&lt;br /&gt;
* 9 = 8x32&lt;br /&gt;
* 10 = 16x32&lt;br /&gt;
* 11 = 32x64&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Padding?}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tile Texture Data ===&lt;br /&gt;
Texture data is stored as 8x8 blocks in 16-color palette format (4 bits per pixel). Palette data is stored in separate files.&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Sprite Group:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=Category:Diddy_Kong_Racing_DS&amp;diff=656</id>
		<title>Category:Diddy Kong Racing DS</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=Category:Diddy_Kong_Racing_DS&amp;diff=656"/>
		<updated>2026-05-14T23:40:00Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Created page with &amp;quot;This is a list of pages related to &amp;#039;&amp;#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&amp;#039;&amp;#039;.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of pages related to &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=VM61_BIN&amp;diff=655</id>
		<title>VM61 BIN</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=VM61_BIN&amp;diff=655"/>
		<updated>2026-05-10T13:03:55Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Redirected page to VM61 BIN (File Format)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[VM61 BIN (File Format)]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=VM61_BIN_(File_Format)&amp;diff=654</id>
		<title>VM61 BIN (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=VM61_BIN_(File_Format)&amp;diff=654"/>
		<updated>2026-05-10T13:02:59Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;BIN&amp;#039;&amp;#039;&amp;#039; is a model file format used in Luigi&amp;#039;s Mansion Arcade which inherits from the VM61 format. The format consist of a hierarchy of nodes, where each node can contain child nodes and meshes. The textures are external DDS files, and are linked by each material. This format is an evolution of Mario Kart Arcade GP DX&amp;#039;s BIKE BIN.  = File Format = The file byte order is always little endian. All sections and subsections are aligned to 0x10.  == VM61 Header =...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;BIN&#039;&#039;&#039; is a model file format used in [[Luigi&#039;s Mansion Arcade]] which inherits from the VM61 format. The format consist of a hierarchy of nodes, where each node can contain child nodes and meshes. The textures are external DDS files, and are linked by each material. This format is an evolution of [[Mario Kart Arcade GP DX]]&#039;s [[BIKE BIN]].&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian. All sections and subsections are aligned to 0x10.&lt;br /&gt;
&lt;br /&gt;
== VM61 Header ==&lt;br /&gt;
The file starts with the common VM61 header. It has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;VM61&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Version number&#039;&#039;&#039; of the file format&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;Size of this header&#039;&#039;&#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be padding.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BIN Header ===&lt;br /&gt;
The BIN header follows the [[#VM61 Header|VM61 header]]. It has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int64 || &#039;&#039;&#039;Number of [[#Material|materials]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int64 || &#039;&#039;&#039;[[#Material|Material]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int64 || &#039;&#039;&#039;Number of [[#Texture Reference|texture references]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Int64 || &#039;&#039;&#039;[[#Texture Reference|Texture reference]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Int64 || &#039;&#039;&#039;Number of [[#Bone|bones]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Int64 || &#039;&#039;&#039;[[#Bone|Bone]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || Int64 || &#039;&#039;&#039;[[#Root Node|Root node]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || Int64 || &#039;&#039;&#039;Number of [[#Bone Link|bone links]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || Int64 || &#039;&#039;&#039;[[#Bone Link|Bone links]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 || Int64 || &#039;&#039;&#039;Number of [[#Node Pair|node pairs]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50 || Int64 || &#039;&#039;&#039;[[#Node Pair|Node pair]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58 || Int64 || &#039;&#039;&#039;Padding&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Material ==&lt;br /&gt;
Each material has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int64 || &#039;&#039;&#039;Material name offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x11 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x19 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x25 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x26 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x29 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2D || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2F || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || Float[4] || &#039;&#039;&#039;Ambient color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || Float[4] || &#039;&#039;&#039;Diffuse color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50 || Float[4] || &#039;&#039;&#039;Specular color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60 || Float[4] || &#039;&#039;&#039;Incandescence color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70 || Float || &#039;&#039;&#039;Shiny&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x74 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x78 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x80 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x84 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x88 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x90 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x94 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x98 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0 || Int64 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8 || Int64 || &#039;&#039;&#039;[[#Translation Animation|Translation animation]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8 || Int16 || &#039;&#039;&#039;Color 1 texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAA || Int16 || &#039;&#039;&#039;Color 2 texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC || Int16 || &#039;&#039;&#039;Color 3 texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAE || Int16 || &#039;&#039;&#039;Specular texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0 || Int16 || &#039;&#039;&#039;Reflective texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB2 || Int16 || &#039;&#039;&#039;Environment texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4 || Int16 || &#039;&#039;&#039;Normal texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB6 || Int16 || &#039;&#039;&#039;Incandescence texture index&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Translation Animation ===&lt;br /&gt;
If the offset is not 0, a simple translation animation is applied to the material. The animation is a constant value.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float || &#039;&#039;&#039;U translation&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Float || &#039;&#039;&#039;V translation&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Texture Reference ==&lt;br /&gt;
Each texture reference has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int64 || &#039;&#039;&#039;Texture name offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bone ==&lt;br /&gt;
Each bone has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int64 || &#039;&#039;&#039;Bone name offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int64 || &#039;&#039;&#039;Node pair offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Root Node ==&lt;br /&gt;
The root node has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int64 || &#039;&#039;&#039;Node pair offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bone Link ==&lt;br /&gt;
Each bone link corresponds to a node that contains a model object as well as a node that contains a bone, then it gives a local ID for each bone.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int64 || &#039;&#039;&#039;Model object node offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int64 || &#039;&#039;&#039;Bone node offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || &#039;&#039;&#039;Local bone ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || &#039;&#039;&#039;Padding&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Node Pair ==&lt;br /&gt;
Each node pair contains the name and the [[#Node|node]] offset. The node pairs are in an array, which means it doesn&#039;t specify the hierarchy. Each entry has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int64 || &#039;&#039;&#039;Node name offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int64 || &#039;&#039;&#039;[[#Node|Node]] offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Node ===&lt;br /&gt;
Each node has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Visibility flag&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte[28] || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || &#039;&#039;&#039;[[#Transform|Transform]]&#039;&#039;&#039; || &#039;&#039;&#039;Node transform&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44 || Float[3] || &#039;&#039;&#039;Bounding sphere XYZ position&#039;&#039;&#039;. &lt;br /&gt;
|-&lt;br /&gt;
| 0x50 || Float || &#039;&#039;&#039;Bounding sphere radius&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x58 || Int64 || &#039;&#039;&#039;[[#Model Object|Model object]] array offset&#039;&#039;&#039;. Points to an array of Int64s, which points to [[#Model Object|model objects]]. The count is not stored, but the array is terminated by 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60 || Int64 || &#039;&#039;&#039;Morph array offset&#039;&#039;&#039;. Points to an array of Int64s, which point to a sub-array of Int64s which point to baked model objects used as vertex morph animations. The count is not stored, but the array is terminated by 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68 || Int64 || &#039;&#039;&#039;[[#Node|Child node]] array offset&#039;&#039;&#039;. Points to an array of UInt32s, which points to [[#Node|node children]]. The count is not stored, but the array is terminated by 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70 || &#039;&#039;&#039;[[#Transform|Transform]]&#039;&#039;&#039; || &#039;&#039;&#039;Pose transform&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x94 || Float[3] || &#039;&#039;&#039;Bounding box maximum position&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0 || Float[3] || &#039;&#039;&#039;Bounding box minimum position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Transform =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || &#039;&#039;&#039;Scale&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || &#039;&#039;&#039;Rotation&#039;&#039;&#039;, in radians.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float[3] || &#039;&#039;&#039;Translation&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Model Object ====&lt;br /&gt;
Each entry has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Number of triangles&#039;&#039;&#039; to draw. The number of elements in the index buffer is equal to this number multiplied by 3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;[[#Material|Material]] index&#039;&#039;&#039;. -1 if none.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || &#039;&#039;&#039;Bounding sphere XYZ position&#039;&#039;&#039;. &lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float || &#039;&#039;&#039;Bounding sphere radius&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || &#039;&#039;&#039;Vertex count&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Int64 || &#039;&#039;&#039;Position buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Int64 || &#039;&#039;&#039;Normal buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || Int64 || &#039;&#039;&#039;Secondary normal buffer offset&#039;&#039;&#039;. Unknown usage.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || Int64 || &#039;&#039;&#039;Color buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || Int64 || &#039;&#039;&#039;UV buffer 1 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 || Int64 || &#039;&#039;&#039;UV buffer 2 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x50 || Int64 || &#039;&#039;&#039;UV buffer 3 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58 || Int64 || &#039;&#039;&#039;UV buffer 4 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60 || Int64 || &#039;&#039;&#039;UV buffer 5 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68 || Int64 || &#039;&#039;&#039;UV buffer 6 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x70 || Int64 || &#039;&#039;&#039;Index buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x78 || UInt32 || &#039;&#039;&#039;Number of bones&#039;&#039;&#039; influencing the vertices.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C || UInt64 || &#039;&#039;&#039;Bone ID mask&#039;&#039;&#039;. Each bit represents a local bone ID from the corresponding [[#Bone Link|bone link]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x84 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x88 || Int64 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x90 || Int64 || &#039;&#039;&#039;Weight buffer offset&#039;&#039;&#039; (vertices * 4 bytes per bone).&lt;br /&gt;
|-&lt;br /&gt;
| 0x98 || Float[3] || &#039;&#039;&#039;Bounding box maximum position&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4 || Float[3] || &#039;&#039;&#039;Bounding box minimum position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle VM61 BIN files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Luigi&#039;s Mansion Arcade File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=BIKE_BIN_(File_Format)&amp;diff=653</id>
		<title>BIKE BIN (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=BIKE_BIN_(File_Format)&amp;diff=653"/>
		<updated>2026-05-10T13:02:21Z</updated>

		<summary type="html">&lt;p&gt;Atlas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;BIN&#039;&#039;&#039; is a model file format used in [[Mario Kart Arcade GP DX]] which inherits from the BIKE format. The format consist of a hierarchy of nodes, where each node can contain child nodes and meshes. The textures are external DDS files, and are linked by each material.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian. All sections and subsections are aligned to 0x10.&lt;br /&gt;
&lt;br /&gt;
== BIKE Header ==&lt;br /&gt;
The file starts with the common BIKE header. It has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;BIKE&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Version number&#039;&#039;&#039; of the file format&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;Size of this header&#039;&#039;&#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be padding.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BIN Header ===&lt;br /&gt;
The BIN header follows the [[#BIKE Header|BIKE header]]. It has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Number of [[#Material|materials]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;[[#Material|Material]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;Number of [[#Texture Reference|texture references]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || &#039;&#039;&#039;[[#Texture Reference|Texture reference]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || &#039;&#039;&#039;Number of [[#Bone|bones]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || &#039;&#039;&#039;[[#Bone|Bone]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || &#039;&#039;&#039;[[#Root Node|Root node]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || &#039;&#039;&#039;Number of [[#Bone Link|bone links]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || &#039;&#039;&#039;[[#Bone Link|Bone links]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || &#039;&#039;&#039;Number of [[#Node Pair|node pairs]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || &#039;&#039;&#039;[[#Node Pair|Node pair]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Material ==&lt;br /&gt;
Each material has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x11 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x21 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x25 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x26 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x27 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Float[4] || &#039;&#039;&#039;Ambient color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || Float[4] || &#039;&#039;&#039;Diffuse color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 || Float[4] || &#039;&#039;&#039;Specular color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58 || Float[4] || &#039;&#039;&#039;Incandescence color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68 || Float || &#039;&#039;&#039;Shiny&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x70 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x74 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x78 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x80 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x84 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x88 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x90 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x94 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x98 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C || UInt32 || &#039;&#039;&#039;[[#Translation Animation|Translation animation]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8 || Int16 || &#039;&#039;&#039;Albedo texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAA || Int16 || &#039;&#039;&#039;Specular texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC || Int16 || &#039;&#039;&#039;Reflective texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAE || Int16 || &#039;&#039;&#039;Environment texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0 || Int16 || &#039;&#039;&#039;Normal texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB2 || Int16 || &#039;&#039;&#039;Incandescence texture index&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Translation Animation ===&lt;br /&gt;
If the offset is not 0, a simple translation animation is applied to the material. The animation is a constant value.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float || &#039;&#039;&#039;U translation&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Float || &#039;&#039;&#039;V translation&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Texture Reference ==&lt;br /&gt;
Each texture reference has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Texture name offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bone ==&lt;br /&gt;
Each bone has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Bone name offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Node pair offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Root Node ==&lt;br /&gt;
The root node has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Node pair offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bone Link ==&lt;br /&gt;
Each bone link corresponds to a node that contains a model object as well as a node that contains a bone, then it gives a local ID for each bone.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Model object node offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Bone node offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;Local bone ID&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Node Pair ==&lt;br /&gt;
Each node pair contains the name and the [[#Node|node]] offset. The node pairs are in an array, which means it doesn&#039;t specify the hierarchy. Each entry has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Node name offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;[[#Node|Node]] offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Node ===&lt;br /&gt;
Each node has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Visibility flag&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || &#039;&#039;&#039;[[#Transform|Transform]]&#039;&#039;&#039; || &#039;&#039;&#039;Node transform&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Float[3] || &#039;&#039;&#039;Bounding sphere XYZ position&#039;&#039;&#039;. &lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || Float || &#039;&#039;&#039;Bounding sphere radius&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || UInt32 || &#039;&#039;&#039;[[#Model Object|Model object]] array offset&#039;&#039;&#039;. Points to an array of UInt32s, which points to [[#Model Object|model objects]]. The count is not stored, but the array is terminated by 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || UInt32 || &#039;&#039;&#039;[[#Node|Child node]] array offset&#039;&#039;&#039;. Points to an array of UInt32s, which points to [[#Node|node children]]. The count is not stored, but the array is terminated by 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || &#039;&#039;&#039;[[#Transform|Transform]]&#039;&#039;&#039; || &#039;&#039;&#039;Pose transform&#039;&#039;&#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#AAFFAA&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;If [[#BIKE Header|version]] &amp;gt;= 4.0.0&#039;&#039;&#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x64 || Float[3] || &#039;&#039;&#039;Bounding box maximum position&#039;&#039;&#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x70 || Float[3] || &#039;&#039;&#039;Bounding box minimum position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Transform =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || &#039;&#039;&#039;Scale&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || &#039;&#039;&#039;Rotation&#039;&#039;&#039;, in radians.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float[3] || &#039;&#039;&#039;Translation&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Model Object ====&lt;br /&gt;
Each entry has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Number of triangles&#039;&#039;&#039; to draw. The number of elements in the index buffer is equal to this number multiplied by 3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;[[#Material|Material]] index&#039;&#039;&#039;. -1 if none.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || &#039;&#039;&#039;Bounding sphere XYZ position&#039;&#039;&#039;. &lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float || &#039;&#039;&#039;Bounding sphere radius&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || &#039;&#039;&#039;Vertex count&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || &#039;&#039;&#039;Position buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || &#039;&#039;&#039;Normal buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || &#039;&#039;&#039;Color buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || UInt32 || &#039;&#039;&#039;UV buffer 1 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || UInt32 || &#039;&#039;&#039;UV buffer 2 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || UInt32 || &#039;&#039;&#039;UV buffer 3 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || UInt32 || &#039;&#039;&#039;UV buffer 4 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || UInt32 || &#039;&#039;&#039;Index buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || UInt32 || &#039;&#039;&#039;Number of bones&#039;&#039;&#039; influencing the vertices.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44 || UInt32 || &#039;&#039;&#039;Bone ID mask&#039;&#039;&#039;. Each bit represents a local bone ID from the corresponding [[#Bone Link|bone link]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 || UInt32 || &#039;&#039;&#039;Weight buffer offset&#039;&#039;&#039; (vertices * 4 bytes per bone).&lt;br /&gt;
|- bgcolor=&amp;quot;#AAFFAA&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;If [[#BIKE Header|version]] &amp;gt;= 4.0.0&#039;&#039;&#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x4C || Float[3] || &#039;&#039;&#039;Bounding box maximum position&#039;&#039;&#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x58 || Float[3] || &#039;&#039;&#039;Bounding box minimum position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle BIKE BIN files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Mario Kart Arcade GP DX File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=BIKE_BIN_(File_Format)&amp;diff=652</id>
		<title>BIKE BIN (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=BIKE_BIN_(File_Format)&amp;diff=652"/>
		<updated>2026-05-10T12:08:30Z</updated>

		<summary type="html">&lt;p&gt;Atlas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;BIN&#039;&#039;&#039; is a model file format used in [[Mario Kart Arcade GP DX]] which inherits from the BIKE format. The format consist of a hierarchy of nodes, where each node can contain child nodes and meshes. The textures are external DDS files, and are linked by each material.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian. All sections and subsections are aligned to 0x10.&lt;br /&gt;
&lt;br /&gt;
== BIKE Header ==&lt;br /&gt;
The file starts with the common BIKE header. It has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;BIKE&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Version number&#039;&#039;&#039; of the file format&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;Size of this header&#039;&#039;&#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be padding.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BIN Header ===&lt;br /&gt;
The BIN header follows the [[#BIKE Header|BIKE header]]. It has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Number of [[#Material|materials]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;[[#Material|Material]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;Number of [[#Texture Reference|texture references]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || &#039;&#039;&#039;[[#Texture Reference|Texture reference]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || &#039;&#039;&#039;Number of [[#Bone|bones]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || &#039;&#039;&#039;[[#Bone|Bone]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || &#039;&#039;&#039;[[#Root Node|Root node]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || &#039;&#039;&#039;Number of [[#Bone Link|bone links]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || &#039;&#039;&#039;[[#Bone Link|Bone links]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || &#039;&#039;&#039;Number of [[#Node Pair|node pairs]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || &#039;&#039;&#039;[[#Node Pair|Node pair]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Material ==&lt;br /&gt;
Each material has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x11 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x21 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x25 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x26 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x27 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Float[4] || &#039;&#039;&#039;Ambient color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || Float[4] || &#039;&#039;&#039;Diffuse color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 || Float[4] || &#039;&#039;&#039;Specular color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58 || Float[4] || &#039;&#039;&#039;Incandescence color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68 || Float || &#039;&#039;&#039;Shiny&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x70 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x74 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x78 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x80 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x84 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x88 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x90 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x94 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x98 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C || UInt32 || &#039;&#039;&#039;[[#Translation Animation|Translation animation]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8 || Int16 || &#039;&#039;&#039;Albedo texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAA || Int16 || &#039;&#039;&#039;Specular texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC || Int16 || &#039;&#039;&#039;Reflective texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAE || Int16 || &#039;&#039;&#039;Environment texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0 || Int16 || &#039;&#039;&#039;Normal texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB2 || Int16 || &#039;&#039;&#039;Incandescence texture index&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Translation Animation ===&lt;br /&gt;
If the offset is not 0, a simple translation animation is applied to the material. The animation is a constant value.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float || &#039;&#039;&#039;U translation&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Float || &#039;&#039;&#039;V translation&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Texture Reference ==&lt;br /&gt;
Each texture reference has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Texture name offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bone ==&lt;br /&gt;
Each bone has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Bone name offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Node pair offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Root Node ==&lt;br /&gt;
The root node has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Node pair offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bone Link ==&lt;br /&gt;
Each bone link corresponds to a node that contains a model object as well as a node that contains a bone, then it gives a local ID for each bone.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Model object node offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Bone node offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;Local bone ID&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Node Pair ==&lt;br /&gt;
Each node pair contains the name and the [[#Node|node]] offset. The node pairs are in an array, which means it doesn&#039;t specify the hierarchy. Each entry has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Node name offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;[[#Node|Node]] offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Node ===&lt;br /&gt;
Each node has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Visibility flag&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || &#039;&#039;&#039;[[#Transform|Transform]]&#039;&#039;&#039; || &#039;&#039;&#039;Node transform&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Float[3] || &#039;&#039;&#039;Bounding sphere XYZ position&#039;&#039;&#039;. &lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || Float || &#039;&#039;&#039;Bounding sphere radius&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || UInt32 || &#039;&#039;&#039;[[#Model Object|Model object]] array offset&#039;&#039;&#039;. Points to an array of UInt32s, which points to [[#Model Object|model objects]]. The count is not stored, but the array is terminated by 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || UInt32 || &#039;&#039;&#039;[[#Node|Child node]] array offset&#039;&#039;&#039;. Points to an array of UInt32s, which points to [[#Node|node children]]. The count is not stored, but the array is terminated by 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || &#039;&#039;&#039;[[#Transform|Transform]]&#039;&#039;&#039; || &#039;&#039;&#039;Pose transform&#039;&#039;&#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#AAFFAA&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;If [[#BIKE Header|version]] &amp;gt;= 4.0.0&#039;&#039;&#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x64 || Float[3] || &#039;&#039;&#039;Bounding box maximum position&#039;&#039;&#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x70 || Float[3] || &#039;&#039;&#039;Bounding box minimum position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Transform =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || &#039;&#039;&#039;Scale&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || &#039;&#039;&#039;Rotation&#039;&#039;&#039;, in radians.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float[3] || &#039;&#039;&#039;Translation&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Model Object ====&lt;br /&gt;
Each entry has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Number of triangles&#039;&#039;&#039; to draw. The number of elements in the index buffer is equal to this number multiplied by 3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;[[#Material|Material]] index&#039;&#039;&#039;. -1 if none.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || &#039;&#039;&#039;Bounding sphere XYZ position&#039;&#039;&#039;. &lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float || &#039;&#039;&#039;Bounding sphere radius&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || &#039;&#039;&#039;Vertex count&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || &#039;&#039;&#039;Position buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || &#039;&#039;&#039;Normal buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || &#039;&#039;&#039;Color buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || UInt32 || &#039;&#039;&#039;UV buffer 1 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || UInt32 || &#039;&#039;&#039;UV buffer 2 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || UInt32 || &#039;&#039;&#039;UV buffer 3 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || UInt32 || &#039;&#039;&#039;UV buffer 4 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || UInt32 || &#039;&#039;&#039;Index buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || UInt32 || &#039;&#039;&#039;Number of bones&#039;&#039;&#039; influencing the vertices.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44 || UInt32 || &#039;&#039;&#039;Bone ID mask&#039;&#039;&#039;. Each bit represents a local bone ID from the corresponding [[#Bone Link|bone link]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 || UInt32 || &#039;&#039;&#039;Weight buffer offset&#039;&#039;&#039; (vertices * 4 bytes per bone).&lt;br /&gt;
|- bgcolor=&amp;quot;#AAFFAA&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;If [[#BIKE Header|version]] &amp;gt;= 4.0.0&#039;&#039;&#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x4C || Float[3] || &#039;&#039;&#039;Bounding box maximum position&#039;&#039;&#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x58 || Float[3] || &#039;&#039;&#039;Bounding box minimum position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle BIN files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Mario Kart Arcade GP DX File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=KMP_(File_Format)/Mario_Kart_7&amp;diff=651</id>
		<title>KMP (File Format)/Mario Kart 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=KMP_(File_Format)/Mario_Kart_7&amp;diff=651"/>
		<updated>2026-05-08T18:12:01Z</updated>

		<summary type="html">&lt;p&gt;Atlas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;KMP&#039;&#039;&#039; files are used in [[Mario Kart 7]]. It contains information about how the course is played, such as start positions, check points and the CPU routes.&lt;br /&gt;
&lt;br /&gt;
This article describes the [[Mario Kart 7]] KMP format. For other formats, see [[KMP (File Format)]].&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
== File Header ==&lt;br /&gt;
All KMP files starts with the following header:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ File header of a KMP file&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;CDMD&#039;&#039; (Citra Dash Mapping Data) in LE. (&#039;&#039;DMDC&#039;&#039;) in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Length of the file&#039;&#039;&#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16 || &#039;&#039;&#039;N&#039;&#039;&#039; = Number of sections in the file.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt16 || &#039;&#039;&#039;Header size&#039;&#039;&#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || Version number of the file. The final game format uses 0xC1C.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32[&#039;&#039;&#039;N&#039;&#039;&#039;] || &#039;&#039;&#039;N&#039;&#039;&#039; section offsets. The type of each section can be detected by analysing the first 4 bytes of the section. The offsets are relative to the end of this header.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Section Header ==&lt;br /&gt;
Every section starts with this section header. The section header is a 0x08 byte structure as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Section header for all KMP sections&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || The section name in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || Number of entries.&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || Additional value. The POTI section stores the total number of points of all routes. The CAME section stores 0xFFFF. All other values 0x0000.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TPTK ==&lt;br /&gt;
The TPTK &#039;&#039;(kart point)&#039;&#039; section describes kart points; the starting positions of racers.&lt;br /&gt;
Each entry is a 0x1A byte structure as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || A &#039;&#039;&#039;3D position vector&#039;&#039;&#039; of the start position.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || A &#039;&#039;&#039;3D rotation vector&#039;&#039;&#039; of the start position.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt16 || Player index.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A || UInt16 || Padding?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This section is only used in battle tracks. The start point is written as an object in the [[#JBOG|JBOG]] section in the regular tracks.&lt;br /&gt;
&lt;br /&gt;
== TPNE ==&lt;br /&gt;
The TPNE &#039;&#039;(enemy point)&#039;&#039; section describes enemy points; the routes of CPU racers. The CPU racers attempt to follow the path described by each group of points (as determined by HPNE). Each entry is a 0x18 byte structure as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || A 3D position vector of the enemy position.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float || This value controls, how much the enemies leave the direct point-to-point line to the left and right side.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== HPNE ==&lt;br /&gt;
The HPNE &#039;&#039;(enemy path)&#039;&#039; section describes enemy points grouping; how the routes of CPU racers link together. &lt;br /&gt;
Each entry is a 0x48 byte structure as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || Point start. The index of the first [[#TPNE|TPNE]] entry in this group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || Point length. The number of [[#TPNE|TPNE]] entries in this group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16[16] || Previous group. The indicies of up to 16 the previous [[#TPNE|TPNE]] groups entries may have followed. Unneeded slots are set to value 0xFFFF.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt16[16] || Next group. The indicies of up to 16 next [[#TPNE|TPNE]] group entries to follow. Unneeded slots are set to value 0xFFFF.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TPTI ==&lt;br /&gt;
The TPTI &#039;&#039;(item point)&#039;&#039; section describes item points; the routes of items such as red shells. The items attempt to follow the path described by each group of points (as determined by HPTI). Each entry is a 0x14 byte structure as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || A 3D position vector of the item position.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float || Bullet Bill can be controlled a little bit by left and right. And this value defines the range.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== HPTI ==&lt;br /&gt;
The HPTI &#039;&#039;(item path)&#039;&#039; section describes item point grouping; how the routes of items link together.&lt;br /&gt;
Each entry is a 0x1C byte structure as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || Point start. The index of the first [[#TPTI|TPTI]] entry in this group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || Point length. The number of [[#TPTI|TPTI]] entries in this group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16[6] || Previous group. The indicies of up to 6 the previous [[#TPTI|TPTI]] groups entries may have followed. Unneeded slots are set to value 0xFFFF.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt16[6] || Next group. The indicies of up to 6 next [[#TPTI|TPTI]] group entries to follow. Unneeded slots are set to value 0xFFFF.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TPKC ==&lt;br /&gt;
The TPKC &#039;&#039;(checkpoint)&#039;&#039; section describes check points; the routes players must follow to count laps. The racers must follow the path described by each group of points (as determined by [[#HPKC|HPKC]]). Each entry is a 0x18 byte structure as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[2] || A 2D position vector (X and Z coordinate) of the &#039;&#039;&#039;left point&#039;&#039;&#039; of the check point line.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Float[2] || A 2D position vector (X and Z coordinate) of the &#039;&#039;&#039;right point&#039;&#039;&#039; of the check point line.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Byte || Respawn ID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x11 || Byte || Checkpoint type.&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || Byte || &#039;&#039;&#039;Previous check point&#039;&#039;&#039; in this group&#039;s sequence; 0xFF for the first point of the group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13 || Byte || &#039;&#039;&#039;Next check point&#039;&#039;&#039; in this group&#039;s sequence; 0xFF for the last point of the group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x15 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x17 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== HPKC ==&lt;br /&gt;
The HPKC &#039;&#039;(checkpoint path)&#039;&#039; section describes check point grouping; how the routes of check points link together. Each entry is a 0x10 byte structure as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || Point start. The index of the first [[#TPKC|TPKC]] entry in this group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || Point length. The number of [[#TPKC|TPKC]] entries in this group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte[6] || Previous group. The indicies of up to 6 the previous [[#TPKC|TPKC]] groups entries may have followed. Unneeded slots are set to value 0xFF.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[6] || Next group. The indicies of up to 6 next [[#TPKC|TPKC]] group entries to follow. Unneeded slots are set to value 0xFF.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== JBOG ==&lt;br /&gt;
The JBOG &#039;&#039;(game object)&#039;&#039; section describes objects; things on the course such as item boxes and coins. Each entry is a 0x40 byte structure as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;Object ID&#039;&#039;&#039; to identify the Object.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Float[3] || A &#039;&#039;&#039;3D position vector&#039;&#039;&#039; of the object.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Float[3] || A &#039;&#039;&#039;3D rotation vector&#039;&#039;&#039; of the object.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Float[3] || A &#039;&#039;&#039;3D scale vector&#039;&#039;&#039; of the object&#039;s scale.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt16 || &#039;&#039;&#039;Route&#039;&#039;&#039; used by the object. This is index link into the [[#ITOP|ITOP]] section. The value 0xFFFF means &#039;&#039;&amp;quot;no route&amp;quot;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A || UInt16[8] || Up to 8 object specific &#039;&#039;&#039;settings&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3A || UInt16 || Object &#039;&#039;&#039;presence flags&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x3E || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ITOP ==&lt;br /&gt;
The ITOP section describes routes; these are routes for many things including cameras and objects.&lt;br /&gt;
&lt;br /&gt;
Each entry is a 0x04 byte structure as follows, which is followed by 0x10 byte structures:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Route Header &lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;Number of points&#039;&#039;&#039; in the route.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte || Route setting 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Byte || Route setting 2.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each point in each entry is as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Route Points &lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || A &#039;&#039;&#039;3D position vector&#039;&#039;&#039; of the route position.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt16 || Route point setting 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E || UInt16 || Route point setting 2.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== AERA ==&lt;br /&gt;
The AERA section describes areas; used to determine which camera to use for example. Each entry is a 0x30 byte structure as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || Area &#039;&#039;&#039;mode&#039;&#039;&#039;. 0 = box, 1 = cylinder.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || Area &#039;&#039;&#039;type&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte || &#039;&#039;&#039;Index of [[#EMAC|EMAC]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Byte || &#039;&#039;&#039;Priority value&#039;&#039;&#039;. A higher number means a higher priority to choose which area activates if multiple areas intersected.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Float[3] || A &#039;&#039;&#039;3D position vector&#039;&#039;&#039; of the area.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Float[3] || A &#039;&#039;&#039;3D rotation vector&#039;&#039;&#039; of the area&#039;s rotation.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Float[3] || A &#039;&#039;&#039;3D scale vector&#039;&#039;&#039; of the area&#039;s scale.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== EMAC ==&lt;br /&gt;
The EMAC section describes cameras; used to determine cameras for starting routes, time trial pans, etc. Each entry is a 0x48 byte structure as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || Camera &#039;&#039;&#039;type&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || Next camera entry index. Value 0xFF means: no next camera.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Byte || &#039;&#039;&#039;Route&#039;&#039;&#039; used by the camera. This is index link into the [[#ITOP|ITPO]] section. The value 0xFF means &#039;&#039;&amp;quot;no route&amp;quot;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || Route speed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || FOV speed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16 || Viewpoint speed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || A &#039;&#039;&#039;3D position&#039;&#039;&#039; vector of the camera.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float[3] || A &#039;&#039;&#039;3D rotation&#039;&#039;&#039; vector of the camera.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Float || The angle of the FOV (start).&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Float || The angle of the FOV (end).&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || Float[3] || Start vector of the &#039;&#039;&#039;view point&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || Float[3] || Destination vector of the &#039;&#039;&#039;view point&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44 || Float || The &#039;&#039;&#039;time&#039;&#039;&#039; how long this Camera is active.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TPGJ ==&lt;br /&gt;
The TPGJ section describes Jugem points; the respawn points. Each entry is a 0x1C byte structure as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || A &#039;&#039;&#039;3D position vector&#039;&#039;&#039; of the respawn position.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || A &#039;&#039;&#039;3D rotation vector&#039;&#039;&#039; of the respawn position.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt16 || The ID of this respawn position.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TPNC ==&lt;br /&gt;
It seems that this section is unused.&lt;br /&gt;
&lt;br /&gt;
== TPSM ==&lt;br /&gt;
It seems that this section is unused.&lt;br /&gt;
&lt;br /&gt;
== IGTS ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SROC ==&lt;br /&gt;
It seems that this section is unused.&lt;br /&gt;
&lt;br /&gt;
== TPLG ==&lt;br /&gt;
Each entry is a 0x18 byte structure as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || A &#039;&#039;&#039;3D position vector&#039;&#039;&#039; of the point.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float || Point scale.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== HPLG ==&lt;br /&gt;
Each entry is a 0x0C byte structure as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offse !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || Point start. The index of the first [[#TPLG|TPLG]] entry in this group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || Point length. The number of [[#TPLG|TPLG]] entries in this group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte[6] || Previous groups. The indicies of up to 6 the previous [[#TPLG|TPLG]] groups entries may have followed. Unneeded slots are set to value 0xFF.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte[6] || Next groups. The indicies of up to 6 next [[#TPLG|TPLG]] group entries to follow. Unneeded slots are set to value 0xFF.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle KMP files:&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://static.wiidatabase.de/Every-File-Explorer.zip Every File Explorer], by [[Gericom]] (not editable)&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://github.com/mariohackandglitch/KMPExpander/releases/tag/v4 KMP Expander], by [[Ermelber]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mario Kart 7 File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=BFNT&amp;diff=650</id>
		<title>BFNT</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=BFNT&amp;diff=650"/>
		<updated>2026-05-04T20:39:52Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Redirected page to BFNT (File Format)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[BFNT (File Format)]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=BFNT_(File_Format)&amp;diff=649</id>
		<title>BFNT (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=BFNT_(File_Format)&amp;diff=649"/>
		<updated>2026-05-04T20:39:42Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;BFNT&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039;inary &amp;#039;&amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;#039;o&amp;#039;&amp;#039;&amp;#039;NT&amp;#039;&amp;#039;&amp;#039;) is a font file format used in Mario Kart Arcade GP DX and Luigi&amp;#039;s Mansion Arcade.  = File Format = The file byte order is always little endian.  == Header == The file starts with the following header:  {| class=&amp;quot;wikitable&amp;quot; ! Offset !! Type !! Description |- | 0x00 || Char[4] || &amp;#039;&amp;#039;&amp;#039;File magic&amp;#039;&amp;#039;&amp;#039;. Always &amp;#039;&amp;#039;BFNT&amp;#039;&amp;#039; in ASCII. |- | 0x04 || Int32 || &amp;#039;&amp;#039;&amp;#039;Font size&amp;#039;&amp;#039;&amp;#039;. |- | 0x08 || Int32 || &amp;#039;&amp;#039;&amp;#039;Is bold&amp;#039;&amp;#039;&amp;#039;. |- | 0x0C || Int32 || &amp;#039;&amp;#039;&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;BFNT&#039;&#039;&#039; (&#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;F&#039;&#039;&#039;o&#039;&#039;&#039;NT&#039;&#039;&#039;) is a font file format used in [[Mario Kart Arcade GP DX]] and [[Luigi&#039;s Mansion Arcade]].&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with the following header:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;BFNT&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || &#039;&#039;&#039;Font size&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;Is bold&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || &#039;&#039;&#039;Is italic&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || &#039;&#039;&#039;Is Unicode&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;Stretch height&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Int32 || &#039;&#039;&#039;Is smooth&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Related to anti-aliasing?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Int32[4] || &#039;&#039;&#039;Font padding&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || Int32[2] || &#039;&#039;&#039;Font spacing&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || Int32 || &#039;&#039;&#039;Outline width&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || Int32 || &#039;&#039;&#039;Line height&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || Int32 || &#039;&#039;&#039;Line base&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44 || Int32 || &#039;&#039;&#039;Scale width&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 || Int32 || &#039;&#039;&#039;Scale height&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C || Int32 || &#039;&#039;&#039;Number of pages&#039;&#039;&#039; (&#039;&#039;&#039;P&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x50 || Int32 || &#039;&#039;&#039;Is packed&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54 || Int32 || &#039;&#039;&#039;Is alpha channel&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58 || Int32 || &#039;&#039;&#039;Is red channel&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C || Int32 || &#039;&#039;&#039;Is green channel&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60 || Int32 || &#039;&#039;&#039;Is blue channel&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pages List ==&lt;br /&gt;
After the header, there&#039;s a struct of 8*&#039;&#039;&#039;P&#039;&#039;&#039; bytes for each font page.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Page ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || &#039;&#039;&#039;Page name offset&#039;&#039;&#039; relative to the [[#Strings|Strings]] section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Character List ==&lt;br /&gt;
After the page list, there&#039;s the characters section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Number of characters&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Character ===&lt;br /&gt;
Each character definition is 0x28 bytes long.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Character ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32[2] || &#039;&#039;&#039;XY position&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || &#039;&#039;&#039;Character width&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || &#039;&#039;&#039;Character height&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;XY offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || &#039;&#039;&#039;X advance&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Int32 || &#039;&#039;&#039;Page ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Int32 || &#039;&#039;&#039;Channel&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Strings ==&lt;br /&gt;
After the characters, there&#039;s a section with null-terminated strings that refer to external DDS file names for each page, without extension.&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle BFNT files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Luigi&#039;s Mansion Arcade File Formats]]&lt;br /&gt;
[[Category:Mario Kart Arcade GP DX File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=PAC_(File_Format)&amp;diff=648</id>
		<title>PAC (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=PAC_(File_Format)&amp;diff=648"/>
		<updated>2026-05-04T19:38:08Z</updated>

		<summary type="html">&lt;p&gt;Atlas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;PAC&#039;&#039;&#039; files are archive containers found in [[Mario Kart Arcade GP DX]] and [[Luigi&#039;s Mansion Arcade]]. They contain layout and image data.&lt;br /&gt;
&lt;br /&gt;
== File Format ==&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
=== File Header ===&lt;br /&gt;
The file starts with a header that is 0x14 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;pack&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || Number of files.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || Offset to [[#String Pool|String Pool]], relative to the end of the [[#File Entry List|File Entry List]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || Alignment used before file data. Always 0x20.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || File type:&lt;br /&gt;
* 1 = layout&lt;br /&gt;
* 2 = image&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || colspan=2 {{unknown|End of header, start of File Entry List}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== File Entry List ===&lt;br /&gt;
After the header, there&#039;s an entry list with entries for each file. Each entry is 0x10 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be some kind of hash of the real file name. Strings are assigned to each file in the [[#String Pool|String Pool]], but they do not contain an extension.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || Offset to file&#039;s string, relative to the start of the [[#String Pool|String Pool]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || Offset to file data, relative to the end of the entry list.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || File length.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Followed by the last entry, the data is aligned from the header alignment.&lt;br /&gt;
&lt;br /&gt;
=== String Pool ===&lt;br /&gt;
At the end of the file, after the file data, there&#039;s a string pool, which contains null-terminated strings linked to each file.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
The following tools can handle PAC files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Luigi&#039;s Mansion Arcade File Formats]]&lt;br /&gt;
[[Category: Mario Kart Arcade GP DX File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=CANM_(File_Format)/Xeen&amp;diff=647</id>
		<title>CANM (File Format)/Xeen</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=CANM_(File_Format)/Xeen&amp;diff=647"/>
		<updated>2026-05-04T18:57:42Z</updated>

		<summary type="html">&lt;p&gt;Atlas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;CANM&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;amera &#039;&#039;&#039;AN&#039;&#039;&#039;i&#039;&#039;&#039;M&#039;&#039;&#039;ation) is a file format found in games developed by Xeen, such as [[Mario Kart Arcade GP DX]] and [[Luigi&#039;s Mansion Arcade]]. It defines camera paths used in tracks and stages.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
The file starts with a header that is 0xE bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[0xA] || &#039;&#039;&#039;File magic&#039;&#039;&#039; in ASCII. &#039;&#039;MK3CAM100\0&#039;&#039; for Mario Kart Arcade GP DX, &#039;&#039;LMVCAM100\0&#039;&#039; for Luigi&#039;s Mansion Arcade.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || Int32 || &#039;&#039;&#039;Number of points/frames&#039;&#039;&#039; (&#039;&#039;&#039;N&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E || colspan=2 {{unknown|End of header, start of Camera Path}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Camera Path ==&lt;br /&gt;
After the header, there is a path with &#039;&#039;&#039;N&#039;&#039;&#039; 0x20-byte camera points, one per frame.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Camera Point&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || &#039;&#039;&#039;Camera XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Float || &#039;&#039;&#039;Vertical FOV&#039;&#039;&#039; in degrees.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Float[3] || &#039;&#039;&#039;Target XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle CANM files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Luigi&#039;s Mansion Arcade File Formats]]&lt;br /&gt;
[[Category:Mario Kart Arcade GP DX File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=CANM_(File_Format)&amp;diff=646</id>
		<title>CANM (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=CANM_(File_Format)&amp;diff=646"/>
		<updated>2026-05-04T18:55:55Z</updated>

		<summary type="html">&lt;p&gt;Atlas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;CANM&#039;&#039;&#039; is a file extension used for camera animations.&lt;br /&gt;
&lt;br /&gt;
* [[CANM (File Format)/Super Mario Galaxy|Super Mario Galaxy CANM]]&lt;br /&gt;
* [[CANM (File Format)/Xeen|Xeen CANM]]&lt;br /&gt;
&lt;br /&gt;
{{disambig}}&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=CANM_(File_Format)&amp;diff=645</id>
		<title>CANM (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=CANM_(File_Format)&amp;diff=645"/>
		<updated>2026-05-04T18:55:43Z</updated>

		<summary type="html">&lt;p&gt;Atlas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;CANM&#039;&#039;&#039; is a file extension used for camera animations.&lt;br /&gt;
&lt;br /&gt;
* [[CANM (File Format)/Xeen|Xeen CANM]]&lt;br /&gt;
* [[CANM (File Format)/Super Mario Galaxy|Super Mario Galaxy CANM]]&lt;br /&gt;
&lt;br /&gt;
{{disambig}}&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=CANM_(File_Format)/Xeen&amp;diff=644</id>
		<title>CANM (File Format)/Xeen</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=CANM_(File_Format)/Xeen&amp;diff=644"/>
		<updated>2026-05-04T18:55:17Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Atlas moved page CANM (File Format)/Mario Kart Arcade GP DX to CANM (File Format)/Xeen without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;CANM&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;amera &#039;&#039;&#039;AN&#039;&#039;&#039;i&#039;&#039;&#039;M&#039;&#039;&#039;ation) is a file format found in [[Mario Kart Arcade GP DX]]. It defines camera paths used in tracks.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
The file starts with a header that is 0xE bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[0xA] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;MK3CAM100\0&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || Int32 || &#039;&#039;&#039;Number of points/frames&#039;&#039;&#039; (&#039;&#039;&#039;N&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E || colspan=2 {{unknown|End of header, start of Camera Path}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Camera Path ==&lt;br /&gt;
After the header, there is a path with &#039;&#039;&#039;N&#039;&#039;&#039; 0x20-byte camera points, one per frame.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Camera Point&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || &#039;&#039;&#039;Camera XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Float || &#039;&#039;&#039;Vertical FOV&#039;&#039;&#039; in degrees.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Float[3] || &#039;&#039;&#039;Target XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle CANM files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Mario Kart Arcade GP DX File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=COL_(File_Format)&amp;diff=643</id>
		<title>COL (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=COL_(File_Format)&amp;diff=643"/>
		<updated>2026-05-04T18:37:47Z</updated>

		<summary type="html">&lt;p&gt;Atlas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;COL&#039;&#039;&#039; is a collision format used in [[Mario Kart Arcade GP DX]] and [[Luigi&#039;s Mansion Arcade]], and it is the successor of [[Mario Kart Arcade GP]] and [[Mario Kart Arcade GP 2]]&#039;s [[MKAGP BIN]].&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with the following header:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;COL\0&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte[4] || Timestamp? Always 16 08 12 20 (2012-08-16?). The game specifically checks if this value is correct, otherwise it won&#039;t read the file.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;Grid width&#039;&#039;&#039; (&#039;&#039;&#039;W&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || &#039;&#039;&#039;Grid length&#039;&#039;&#039; (&#039;&#039;&#039;L&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Float || &#039;&#039;&#039;Grid cell X size&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Float || &#039;&#039;&#039;Grid cell Y size&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float[2] || &#039;&#039;&#039;AABB minimum coordinate XZ&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Float[2] || &#039;&#039;&#039;AABB maximum coordinate XZ&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Float[2] || &#039;&#039;&#039;Negative AABB minimum coordinate XZ&#039;&#039;&#039;. Unknown usage.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Grid ==&lt;br /&gt;
Followed by the header, the grid data is read from the start of the AABB minimum coordinate, from left to right. A total of &#039;&#039;&#039;W&#039;&#039;&#039; * &#039;&#039;&#039;L&#039;&#039;&#039; cells are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Cell ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Number of [[#Triangle|Triangles]]&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || &#039;&#039;&#039;Number of [[#Wall|Walls]]&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Triangle ====&lt;br /&gt;
Followed by the cell header, there are &#039;&#039;&#039;T&#039;&#039;&#039; 0x70 triangles.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[2] || &#039;&#039;&#039;Minimal coordinate&#039;&#039;&#039; for this triangle.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Float[2] || &#039;&#039;&#039;Maximal coordinate&#039;&#039;&#039; for this triangle.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Float[3][3] || &#039;&#039;&#039;Triangle vertices&#039;&#039;&#039; XYZ position.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || Float[3][3] || &#039;&#039;&#039;Triangle edges&#039;&#039;&#039; XYZ directions.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58 || UInt32 || &#039;&#039;&#039;Neighbour triangle flag&#039;&#039;&#039;, used to determine which edges connect to other triangles.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C || UInt32 || &#039;&#039;&#039;Flags&#039;&#039;&#039;. A list of the attributes for Mario Kart Arcade GP DX can be found [[Mario Kart Arcade GP DX/COL Attributes|here]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x60 || Float[3] || &#039;&#039;&#039;Triangle normal&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C || Float || &#039;&#039;&#039;Negative dot product&#039;&#039;&#039; between triangle center and triangle normal.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Wall ====&lt;br /&gt;
Followed by the cell&#039;s triangles, there are &#039;&#039;&#039;C&#039;&#039;&#039; 0x40 walls, which are used for wall collision detection. The walls are auto-generated from [[#Triangle|all triangles]] by checking which edges are missing neighbour triangles.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || &#039;&#039;&#039;Min XYZ&#039;&#039;&#039; of the triangle edge.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Float[3] || &#039;&#039;&#039;Max XYZ&#039;&#039;&#039; of the triangle edge.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Float[3] || &#039;&#039;&#039;Position 1 XYZ&#039;&#039;&#039; of the triangle edge forming the wall.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Float[3] || &#039;&#039;&#039;Position 2 XYZ&#039;&#039;&#039; of the triangle edge forming the wall.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Triangle Wall Grid ==&lt;br /&gt;
Followed by the grid, there&#039;s a secondary grid with cells containing triangle walls. As of version 1.18 of Mario Kart Arcade GP DX, it only seems to be used in &#039;&#039;FM_L_N_HIT.col&#039;&#039; and &#039;&#039;FM_L_N_HIT_cam.col&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Triangle Wall Cell ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Number of [[#Triangle Wall|triangle walls]]&#039;&#039;&#039; (&#039;&#039;&#039;U&#039;&#039;&#039;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Triangle Wall ====&lt;br /&gt;
Followed by the cell header, there are &#039;&#039;&#039;U&#039;&#039;&#039; 0x38 triangle walls. These are walls represented as triangles. Presumably this was added since [[#Wall|edge walls]] which are auto-generated couldn&#039;t represent certain walls.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Possible collision flag indicating surface type.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Float[3][3] || &#039;&#039;&#039;Triangle vertices&#039;&#039;&#039; XYZ position.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Float[4] || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle COL files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Luigi&#039;s Mansion Arcade File Formats]]&lt;br /&gt;
[[Category:Mario Kart Arcade GP DX File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=Mario_Kart_Arcade_GP_DX/COL_Attributes&amp;diff=642</id>
		<title>Mario Kart Arcade GP DX/COL Attributes</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=Mario_Kart_Arcade_GP_DX/COL_Attributes&amp;diff=642"/>
		<updated>2026-05-04T18:36:40Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Atlas moved page COL flag to Mario Kart Arcade GP DX/COL Attributes without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the flags of [[Mario Kart Arcade GP DX]] [[COL]] files.&lt;br /&gt;
&lt;br /&gt;
== Collision Flags Format ==&lt;br /&gt;
The collision flag values are split into one 16 bit and two 8 bit groups. The 16 least significant bits determine the basic effect of the flag, the next 8 bits seems to be a sound variant, and the 8 most significant ones determine a special effect variant.&lt;br /&gt;
&lt;br /&gt;
=== Basic effects ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! What is it?&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001&lt;br /&gt;
| Default&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002&lt;br /&gt;
| {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Unused as of v1.10.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004&lt;br /&gt;
| Metal grid&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008&lt;br /&gt;
| Dirt&lt;br /&gt;
|-&lt;br /&gt;
| 0x0010&lt;br /&gt;
| Grass&lt;br /&gt;
|-&lt;br /&gt;
| 0x0020&lt;br /&gt;
| Metal&lt;br /&gt;
|-&lt;br /&gt;
| 0x0040&lt;br /&gt;
| {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Unused as of v1.10.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0080&lt;br /&gt;
| Water&lt;br /&gt;
|-&lt;br /&gt;
| 0x0100&lt;br /&gt;
| Wood&lt;br /&gt;
|-&lt;br /&gt;
| 0x0200&lt;br /&gt;
| Carpet&lt;br /&gt;
|-&lt;br /&gt;
| 0x0400&lt;br /&gt;
| Jump pad&lt;br /&gt;
|-&lt;br /&gt;
| 0x0800&lt;br /&gt;
| Smooth&lt;br /&gt;
|-&lt;br /&gt;
| 0x1000&lt;br /&gt;
| Asphalt&lt;br /&gt;
|-&lt;br /&gt;
| 0x2000&lt;br /&gt;
| Glass&lt;br /&gt;
|-&lt;br /&gt;
| 0x4000&lt;br /&gt;
| Sand&lt;br /&gt;
|-&lt;br /&gt;
| 0x8000&lt;br /&gt;
| Cloud&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sound variants ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! What is it?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| Default, no special effect&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| Drum sound&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| Another drum sound&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| Louder? Normally used with bumpy effect&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special effects ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! What is it?&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| Default, no special effect&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| Offroad?&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Used with water road}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Used with sand road}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| Bumpy&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| Slippery? Used on the edges&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Used with cloud road}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mario Kart Arcade GP DX File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=COL_(File_Format)&amp;diff=641</id>
		<title>COL (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=COL_(File_Format)&amp;diff=641"/>
		<updated>2026-05-04T18:35:52Z</updated>

		<summary type="html">&lt;p&gt;Atlas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;COL&#039;&#039;&#039; is a collision format used in [[Mario Kart Arcade GP DX]] and [[Luigi&#039;s Mansion Arcade]], and it is the successor of [[Mario Kart Arcade GP]] and [[Mario Kart Arcade GP 2]]&#039;s [[MKAGP BIN]].&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with the following header:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;COL\0&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte[4] || Timestamp? Always 16 08 12 20 (2012-08-16?). The game specifically checks if this value is correct, otherwise it won&#039;t read the file.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;Grid width&#039;&#039;&#039; (&#039;&#039;&#039;W&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || &#039;&#039;&#039;Grid length&#039;&#039;&#039; (&#039;&#039;&#039;L&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Float || &#039;&#039;&#039;Grid cell X size&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Float || &#039;&#039;&#039;Grid cell Y size&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float[2] || &#039;&#039;&#039;AABB minimum coordinate XZ&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Float[2] || &#039;&#039;&#039;AABB maximum coordinate XZ&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Float[2] || &#039;&#039;&#039;Negative AABB minimum coordinate XZ&#039;&#039;&#039;. Unknown usage.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Grid ==&lt;br /&gt;
Followed by the header, the grid data is read from the start of the AABB minimum coordinate, from left to right. A total of &#039;&#039;&#039;W&#039;&#039;&#039; * &#039;&#039;&#039;L&#039;&#039;&#039; cells are loaded.&lt;br /&gt;
&lt;br /&gt;
=== Cell ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Number of [[#Triangle|Triangles]]&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || &#039;&#039;&#039;Number of [[#Wall|Walls]]&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Triangle ====&lt;br /&gt;
Followed by the cell header, there are &#039;&#039;&#039;T&#039;&#039;&#039; 0x70 triangles.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[2] || &#039;&#039;&#039;Minimal coordinate&#039;&#039;&#039; for this triangle.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Float[2] || &#039;&#039;&#039;Maximal coordinate&#039;&#039;&#039; for this triangle.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Float[3][3] || &#039;&#039;&#039;Triangle vertices&#039;&#039;&#039; XYZ position.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || Float[3][3] || &#039;&#039;&#039;Triangle edges&#039;&#039;&#039; XYZ directions.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58 || UInt32 || &#039;&#039;&#039;Neighbour triangle flag&#039;&#039;&#039;, used to determine which edges connect to other triangles.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C || UInt32 || &#039;&#039;&#039;[[COL flag]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x60 || Float[3] || &#039;&#039;&#039;Triangle normal&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C || Float || &#039;&#039;&#039;Negative dot product&#039;&#039;&#039; between triangle center and triangle normal.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Wall ====&lt;br /&gt;
Followed by the cell&#039;s triangles, there are &#039;&#039;&#039;C&#039;&#039;&#039; 0x40 walls, which are used for wall collision detection. The walls are auto-generated from [[#Triangle|all triangles]] by checking which edges are missing neighbour triangles.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || &#039;&#039;&#039;Min XYZ&#039;&#039;&#039; of the triangle edge.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Float[3] || &#039;&#039;&#039;Max XYZ&#039;&#039;&#039; of the triangle edge.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Float[3] || &#039;&#039;&#039;Position 1 XYZ&#039;&#039;&#039; of the triangle edge forming the wall.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Float[3] || &#039;&#039;&#039;Position 2 XYZ&#039;&#039;&#039; of the triangle edge forming the wall.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Triangle Wall Grid ==&lt;br /&gt;
Followed by the grid, there&#039;s a secondary grid with cells containing triangle walls. As of version 1.18 of Mario Kart Arcade GP DX, it only seems to be used in &#039;&#039;FM_L_N_HIT.col&#039;&#039; and &#039;&#039;FM_L_N_HIT_cam.col&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Triangle Wall Cell ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &#039;&#039;&#039;Number of [[#Triangle Wall|triangle walls]]&#039;&#039;&#039; (&#039;&#039;&#039;U&#039;&#039;&#039;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Triangle Wall ====&lt;br /&gt;
Followed by the cell header, there are &#039;&#039;&#039;U&#039;&#039;&#039; 0x38 triangle walls. These are walls represented as triangles. Presumably this was added since [[#Wall|edge walls]] which are auto-generated couldn&#039;t represent certain walls.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Possible collision flag indicating surface type.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Float[3][3] || &#039;&#039;&#039;Triangle vertices&#039;&#039;&#039; XYZ position.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Float[4] || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle COL files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Luigi&#039;s Mansion Arcade File Formats]]&lt;br /&gt;
[[Category:Mario Kart Arcade GP DX File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=ABC_(File_Format)&amp;diff=640</id>
		<title>ABC (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=ABC_(File_Format)&amp;diff=640"/>
		<updated>2026-05-04T10:57:11Z</updated>

		<summary type="html">&lt;p&gt;Atlas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;ABC&#039;&#039;&#039; (&#039;&#039;&#039;A&#039;&#039;&#039;rea &#039;&#039;&#039;B&#039;&#039;&#039;lo&#039;&#039;&#039;C&#039;&#039;&#039;k) is a file format found in [[Mario Kart Arcade GP DX]] and [[Luigi&#039;s Mansion Arcade]]. In Mario Kart Arcade GP DX it defines culling areas used in tracks, whereas in Luigi&#039;s Mansion Arcade it defines areas used for lighting.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
The file starts with a header that is 0x10 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;ABCT&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || Always 1. Maybe version? The game checks if this value is 1, otherwise it won&#039;t read the file.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;Number of [[#Areas|Areas]]&#039;&#039;&#039; (&#039;&#039;&#039;N&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte[4] || &#039;&#039;&#039;Padding&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || colspan=2 {{unknown|End of header, start of Areas}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Areas ==&lt;br /&gt;
After the header, there are &#039;&#039;&#039;N&#039;&#039;&#039; 0x40-byte areas. Each area corresponds to each section of a corresponding [[VMD]] file. In Luigi&#039;s Mansion Arcade, it also references the sections from an [[ABT]] file. The area is made of a single 4x4 matrix. In Mario Kart Arcade GP DX this matrix is used to transform the current position of the camera&#039;s target. The game checks once per frame if the transformed position of each area lies within a -0.5f to 0.5f AABB cube to determine the culling status.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Area&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[16] || &#039;&#039;&#039;4x4 matrix&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle ABC files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Luigi&#039;s Mansion Arcade File Formats]]&lt;br /&gt;
[[Category:Mario Kart Arcade GP DX File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=Category:Luigi%27s_Mansion_Arcade_File_Formats&amp;diff=639</id>
		<title>Category:Luigi&#039;s Mansion Arcade File Formats</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=Category:Luigi%27s_Mansion_Arcade_File_Formats&amp;diff=639"/>
		<updated>2026-05-04T10:53:21Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Created page with &amp;quot;This is a list of file formats exclusively used in Luigi&amp;#039;s Mansion Arcade.  Category:File Formats&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of file formats exclusively used in [[Luigi&#039;s Mansion Arcade]].&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=ABC_(File_Format)&amp;diff=638</id>
		<title>ABC (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=ABC_(File_Format)&amp;diff=638"/>
		<updated>2026-05-04T10:53:02Z</updated>

		<summary type="html">&lt;p&gt;Atlas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;ABC&#039;&#039;&#039; (&#039;&#039;&#039;A&#039;&#039;&#039;rea &#039;&#039;&#039;B&#039;&#039;&#039;lo&#039;&#039;&#039;C&#039;&#039;&#039;k) is a file format found in [[Mario Kart Arcade GP DX]] and [[Luigi&#039;s Mansion Arcade]]. In Mario Kart Arcade GP DX it defines culling areas used in tracks, whereas in Luigi&#039;s Mansion Arcade it defines areas used for lighting.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== File Header ==&lt;br /&gt;
The file starts with a header that is 0x10 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;ABCT&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || Always 1. Maybe version? The game checks if this value is 1, otherwise it won&#039;t read the file.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;Number of [[#Culling Areas|Culling Areas]]&#039;&#039;&#039; (&#039;&#039;&#039;N&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte[4] || &#039;&#039;&#039;Padding&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || colspan=2 {{unknown|End of header, start of Culling Areas}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Culling Areas ==&lt;br /&gt;
After the header, there are &#039;&#039;&#039;N&#039;&#039;&#039; 0x40-byte culling areas. Each area corresponds to each section of the track&#039;s [[VMD]] file, and it is made of a single 4x4 matrix that is used to transform the current position of the camera&#039;s target. The game checks once per frame if the transformed position of each area lies within a -0.5f to 0.5f AABB cube to determine the culling status.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|+ Culling Area&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[16] || &#039;&#039;&#039;4x4 matrix&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle ABC files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Luigi&#039;s Mansion Arcade File Formats]]&lt;br /&gt;
[[Category:Mario Kart Arcade GP DX File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Ghost_Data&amp;diff=637</id>
		<title>DKRDS Ghost Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Ghost_Data&amp;diff=637"/>
		<updated>2026-04-23T01:34:15Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Redirected page to DKRDS Ghost Data (File Format)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[DKRDS Ghost Data (File Format)]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=DKRDS_Ghost_Data_(File_Format)&amp;diff=636</id>
		<title>DKRDS Ghost Data (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=DKRDS_Ghost_Data_(File_Format)&amp;diff=636"/>
		<updated>2026-04-23T01:33:59Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Created page with &amp;quot;{{under-construction}} &amp;#039;&amp;#039;&amp;#039;DKRDS Ghost Data&amp;#039;&amp;#039;&amp;#039; is the nameless file format used in &amp;#039;&amp;#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&amp;#039;&amp;#039; that stores the ghost data both as Staff ghosts in the ROM as well as saved ghost data in the save file. Its type identifier in assets.bin is &amp;#039;&amp;#039;&amp;#039;0x00&amp;#039;&amp;#039;&amp;#039;.  = File Format = The file is always 0x4FC bytes long. The file byte order is always little endian.  == Header == The file starts with a header that is 0x4C b...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{under-construction}}&lt;br /&gt;
&#039;&#039;&#039;DKRDS Ghost Data&#039;&#039;&#039; is the nameless file format used in &#039;&#039;[https://en.wikipedia.org/wiki/Diddy_Kong_Racing_DS Diddy Kong Racing DS]&#039;&#039; that stores the ghost data both as Staff ghosts in the ROM as well as saved ghost data in the save file. Its type identifier in [[assets.bin]] is &#039;&#039;&#039;0x00&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file is always 0x4FC bytes long. The file byte order is always little endian.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a header that is 0x4C bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Track ID?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || &#039;&#039;&#039;[[Diddy Kong Racing DS/List of Identifiers#Characters|Character ID]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;[[Diddy Kong Racing DS/List of Identifiers#Vehicles|Vehicle ID]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Time in frames the final lap is reached?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || &#039;&#039;&#039;Final time&#039;&#039;&#039; in frames.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Start boost type?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || StringNT || &#039;&#039;&#039;Null terminated string of the player&#039;s name&#039;&#039;&#039; with a maximum length of 0x20 bytes. Always &#039;&#039;TT&#039;&#039; in ROM files.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || Byte[0x14] || {{unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be related to vehicle customization data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C || colspan=2 {{unknown|End of header, start of Input Data}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Input Data ==&lt;br /&gt;
After the header there&#039;s input data. Unused inputs are filled with zeroes.&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle DKRDS Ghost Data:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=Diddy_Kong_Racing_DS/List_of_Identifiers&amp;diff=635</id>
		<title>Diddy Kong Racing DS/List of Identifiers</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=Diddy_Kong_Racing_DS/List_of_Identifiers&amp;diff=635"/>
		<updated>2026-04-23T01:16:44Z</updated>

		<summary type="html">&lt;p&gt;Atlas: Created page with &amp;quot;== Characters == {| class=&amp;quot;wikitable sortable&amp;quot; ! ID !! Description |- | 0x1 || Tiptup |- | 0x2 || Pipsy |- | 0x3 || Diddy Kong |- | 0x4 || Tiny Kong |- | 0x5 || Bumper |- | 0x6 || Timber |- | 0x7 || Dixie Kong |- | 0x8 || Krunch |- | 0x9 || Drumstick |- | 0xA || T.T. |- | 0xB || Taj |- | 0xC || Wizpig |}  == Vehicles == {| class=&amp;quot;wikitable sortable&amp;quot; ! ID !! Description |- | 0x0 || Car |- | 0x1 || Hovercraft |- | 0x2 || Plane |}  Category:Diddy Kong Racing DS|List of Id...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Characters ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || Tiptup&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 || Pipsy&lt;br /&gt;
|-&lt;br /&gt;
| 0x3 || Diddy Kong&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || Tiny Kong&lt;br /&gt;
|-&lt;br /&gt;
| 0x5 || Bumper&lt;br /&gt;
|-&lt;br /&gt;
| 0x6 || Timber&lt;br /&gt;
|-&lt;br /&gt;
| 0x7 || Dixie Kong&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || Krunch&lt;br /&gt;
|-&lt;br /&gt;
| 0x9 || Drumstick&lt;br /&gt;
|-&lt;br /&gt;
| 0xA || T.T.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB || Taj&lt;br /&gt;
|-&lt;br /&gt;
| 0xC || Wizpig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vehicles ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || Car&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || Hovercraft&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 || Plane&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Diddy Kong Racing DS|List of Identifiers]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=AMS_(File_Format)&amp;diff=634</id>
		<title>AMS (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=AMS_(File_Format)&amp;diff=634"/>
		<updated>2026-04-11T13:14:03Z</updated>

		<summary type="html">&lt;p&gt;Atlas: /* Header */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{under-construction}}&lt;br /&gt;
&#039;&#039;&#039;AMS&#039;&#039;&#039; (&#039;&#039;&#039;A&#039;&#039;&#039;qualead &#039;&#039;&#039;M&#039;&#039;&#039;e&#039;&#039;&#039;S&#039;&#039;&#039;h) is a file format developed by [[Aqualead]] and found in some [[Wii]] and [[3DS]] games (and suspected to be used in [[GameCube]] titles as well), such as &#039;&#039;[[One Piece: Unlimited Adventure]]&#039;&#039;, &#039;&#039;[[One Piece: Unlimited Cruise Episode 1 - The Treasure Beneath The Waves]]&#039;&#039;, &#039;&#039;[[One Piece: Unlimited Cruise Episode 2: Awakening of a Hero]]&#039;&#039;, &#039;&#039;[[One Piece: Unlimited Cruise SP]]&#039;&#039; and &#039;&#039;[[One Piece: Unlimited Cruise SP 2]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order can be either big endian (Wii) or little endian (3DS).&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with the following header:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;ALMS&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Format type or version? Values seen are 2, 3, 4, 5, 6, 7 and 8.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Possibly bit flags, but files either use 0x80 or 0x81.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || Byte || &#039;&#039;&#039;Number of materials&#039;&#039;&#039; (&#039;&#039;&#039;M&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || Byte || &#039;&#039;&#039;Number of texture references&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte || &#039;&#039;&#039;Number of shapes&#039;&#039;&#039; (&#039;&#039;&#039;S&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || Byte || &#039;&#039;&#039;Number of bones&#039;&#039;&#039; (&#039;&#039;&#039;B&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || Byte || &#039;&#039;&#039;Number of shape groups&#039;&#039;&#039; (&#039;&#039;&#039;G&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B || Byte || &#039;&#039;&#039;Length of each material section&#039;&#039;&#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || &#039;&#039;&#039;XYZ position&#039;&#039;&#039; of the model (does not apply to bones).&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float || &#039;&#039;&#039;Scale&#039;&#039;&#039; of the model (does not apply to bones).&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt16 || &#039;&#039;&#039;[[#Section 1|Section 1]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E || UInt16 || &#039;&#039;&#039;[[#Section 2|Section 2]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt16 || &#039;&#039;&#039;[[#Section 3|Section 3]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 || UInt16 || &#039;&#039;&#039;[[#Section 4|Section 4]] offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Section 1 ==&lt;br /&gt;
This section defines &#039;&#039;&#039;M&#039;&#039;&#039; material entries.&lt;br /&gt;
&lt;br /&gt;
=== Material ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0xB2?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || &#039;&#039;&#039;Texture reference ID&#039;&#039;&#039;. 0xFF if none.&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Section 2 ==&lt;br /&gt;
This section defines &#039;&#039;&#039;T&#039;&#039;&#039; 0x4-byte texture references.&lt;br /&gt;
&lt;br /&gt;
=== Texture Reference ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &#039;&#039;&#039;Padding&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || UInt24 || &#039;&#039;&#039;Asset link identifier&#039;&#039;&#039; of the texture.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Section 3 ==&lt;br /&gt;
This section defines &#039;&#039;&#039;B&#039;&#039;&#039; bone entries.&lt;br /&gt;
&lt;br /&gt;
=== Bone ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|- bgcolor=&amp;quot;#AAFFAA&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;If [[#Header|format]] = 7&#039;&#039;&#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;Bone name/ID&#039;&#039;&#039;. Hardcoded to be 4 characters long.&lt;br /&gt;
|- bgcolor=&amp;quot;#FFAAAA&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Else&#039;&#039;&#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#FFDDDD&amp;quot;&lt;br /&gt;
| 0x00 || float[3] || &#039;&#039;&#039;XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#FFDDDD&amp;quot;&lt;br /&gt;
| 0x0C || Char[4] || &#039;&#039;&#039;Bone name/ID&#039;&#039;&#039;. Hardcoded to be 4 characters long.&lt;br /&gt;
|- bgcolor=&amp;quot;#FFDDDD&amp;quot;&lt;br /&gt;
| 0x10 || float[4] || &#039;&#039;&#039;Rotation&#039;&#039;&#039;, using quaternions.&lt;br /&gt;
|- bgcolor=&amp;quot;#FFDDDD&amp;quot;&lt;br /&gt;
| 0x20 || float[4] || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Section 4 ==&lt;br /&gt;
This section defines &#039;&#039;&#039;S&#039;&#039;&#039; * &#039;&#039;&#039;G&#039;&#039;&#039; shape entries.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32[&#039;&#039;&#039;S&#039;&#039;&#039;] || &#039;&#039;&#039;Shape offsets&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shape Header ===&lt;br /&gt;
Each shape starts with a 0x20 byte header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &#039;&#039;&#039;Material ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte || &#039;&#039;&#039;Flag&#039;&#039;&#039;: xxx&#039;&#039;&#039;A&#039;&#039;&#039; xxx&#039;&#039;&#039;B&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: &#039;&#039;&#039;Unknown&#039;&#039;&#039; (sets some value to 32)&lt;br /&gt;
* &#039;&#039;&#039;B&#039;&#039;&#039;: &#039;&#039;&#039;Unknown&#039;&#039;&#039;. 4 floats come after the end of the header.&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 3?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || {{Unknown-left|Number of &#039;&#039;&#039;Unknown Data 1&#039;&#039;&#039; (&#039;&#039;&#039;S?&#039;&#039;&#039;).}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the vertex data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06.5 || 3 bits || &#039;&#039;&#039;Number of vertex position sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the vertex positions&#039; index data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || 4 bits || &#039;&#039;&#039;Vertex position data bytes per index&#039;&#039;&#039; in the draw commands:&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039;: Data not used; skip&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: 2 bytes (UInt16)&lt;br /&gt;
* &#039;&#039;&#039;Anything else&#039;&#039;&#039;: 1 byte&lt;br /&gt;
|-&lt;br /&gt;
| 0x07.4 || 4 bits || &#039;&#039;&#039;Vertex position format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SByte&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UInt16&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Int16&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Float&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16 || Number of &#039;&#039;&#039;vertex positions&#039;&#039;&#039; (&#039;&#039;&#039;SP&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the normal data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A.5 || 3 bits || &#039;&#039;&#039;Number of normal sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the normals&#039; index data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B || 4 bits || &#039;&#039;&#039;Normal data bytes per index&#039;&#039;&#039; in the draw commands:&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039;: Data not used; skip&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: 2 bytes (UInt16)&lt;br /&gt;
* &#039;&#039;&#039;Anything else&#039;&#039;&#039;: 1 byte&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B.4 || 4 bits || &#039;&#039;&#039;Vertex normal format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SByte&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UInt16&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Int16&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Float&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt16 || Number of &#039;&#039;&#039;vertex normals&#039;&#039;&#039; (&#039;&#039;&#039;SN&#039;&#039;&#039;). Normal data is usually always attached to the vertex data, so it&#039;s the same as the number of vertices (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the color data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E.5 || 3 bits || &#039;&#039;&#039;Number of color sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the colors&#039; index data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F || 4 bits || &#039;&#039;&#039;Color data bytes per index&#039;&#039;&#039; in the draw commands:&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039;: Data not used; skip&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: 2 bytes (UInt16)&lt;br /&gt;
* &#039;&#039;&#039;Anything else&#039;&#039;&#039;: 1 byte&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F.4 || 4 bits || &#039;&#039;&#039;Vertex color format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || RGBA8&lt;br /&gt;
|-&lt;br /&gt;
| 1 || RGB8&lt;br /&gt;
|-&lt;br /&gt;
| 2 || RGBX8&lt;br /&gt;
|-&lt;br /&gt;
| 3 || RGBA4&lt;br /&gt;
|-&lt;br /&gt;
| 4 || RGBA6&lt;br /&gt;
|-&lt;br /&gt;
| 5 || RGB565&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt16 || Number of &#039;&#039;&#039;vertex colors&#039;&#039;&#039; (&#039;&#039;&#039;SC&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the UV data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12.5 || 3 bits || &#039;&#039;&#039;Number of UV sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the UVs&#039; index data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13 || 4 bits || &#039;&#039;&#039;UV data bytes per index&#039;&#039;&#039; in the draw commands:&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039;: Data not used; skip&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: 2 bytes (UInt16)&lt;br /&gt;
* &#039;&#039;&#039;Anything else&#039;&#039;&#039;: 1 byte&lt;br /&gt;
|-&lt;br /&gt;
| 0x13.4 || 4 bits || &#039;&#039;&#039;UV format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SByte&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UInt16&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Int16&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Float&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt16 || Number of &#039;&#039;&#039;UVs&#039;&#039;&#039; (&#039;&#039;&#039;SU&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the bone ID data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x16.5 || 3 bits || &#039;&#039;&#039;Number of bone ID sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the bone ID data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x17 || 4 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. This value would correspond to the bone ID data bytes per index, but instead each entry corresponds to a vertex position. If bones are used, this value is always 1 (?)}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x17.4 || 4 bits || &#039;&#039;&#039;Bone ID format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SByte&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UInt16&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Int16&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Float&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt16 || Number of &#039;&#039;&#039;bone entries&#039;&#039;&#039; (&#039;&#039;&#039;SB&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the weight data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A.5 || 3 bits || &#039;&#039;&#039;Number of weight sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the weight data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B || 4 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. This value would correspond to the weight data bytes per index, but instead each entry corresponds to a vertex position. Always 0 (?)}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B.4 || 4 bits || &#039;&#039;&#039;Weight format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SByte&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UInt16&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Int16&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Float&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Byte[2] || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E || UInt16 || &#039;&#039;&#039;Section Data Helpers offset&#039;&#039;&#039;. Usually 0x20 or 0x30. If the value is 0, the Section Data Helpers come either at 0x20 (if the last bit of the value at 0x2 from this header is 0) or at 0x30 (if the value is 1). This value is always aligned by 4 bytes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Section Data Helpers ===&lt;br /&gt;
These entries seem to contain the offsets of the first instance for each of the entries defined in the Shape Header. Commonly, the first 4-byte entry is always related to the unit data, and the second one to its first draw command unit ID. For weight/bone data, it only has one entry, as they are not referenced by the draw commands. All offsets are relative to the start of the Shape Header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Format of a section data helper&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &#039;&#039;&#039;Stride of an entire entry unit&#039;&#039;&#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || UInt24 || &#039;&#039;&#039;Data offset&#039;&#039;&#039; for the first instance of the entry. These offsets indicate the first entry for each entry type defined by the Shape Header, including overlapping entries that may share a common data array. For example, the vertex data array may contain normal and weight data attached to each vertex, but the entries for position, normal and weight data are separate. As for the offsets of the unit indices, it correlates to the specific part of the first draw command that references the entry type. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unknown Data 1 ===&lt;br /&gt;
This section follows directly after the Section Data Helpers and contains &#039;&#039;&#039;S?&#039;&#039;&#039; entries, seen in UInt16 format, unless specified somewhere in the Shape Header. The purpose of this section is unknown and it does not seem to be referenced by the Section Data Helpers.&lt;br /&gt;
&lt;br /&gt;
=== Bone References ===&lt;br /&gt;
This section follows directly after the Unknown Data 1 and contains &#039;&#039;&#039;SB&#039;&#039;&#039; entries, seen in Byte format, unless specified somewhere else in the Shape Header. This section seems to list the indices of the bones in order. This section does not seem to be referenced by the Section Data Helpers.&lt;br /&gt;
&lt;br /&gt;
=== Vertex Position Data ===&lt;br /&gt;
This section follows after the Bone References and contains &#039;&#039;&#039;SP&#039;&#039;&#039; entries; the format of each defined by the Section Header. Sometimes vertex positions, normals and weight/bone indices may be packed together in this section.&lt;br /&gt;
&lt;br /&gt;
=== Vertex Normal Data ===&lt;br /&gt;
&#039;&#039;&#039;SN&#039;&#039;&#039; vertex normal entries seem to come after the Vertex Position Data, if present; the format of each defined by the Section Header.&lt;br /&gt;
&lt;br /&gt;
=== Vertex Color Data ===&lt;br /&gt;
&#039;&#039;&#039;SC&#039;&#039;&#039; vertex color entries seem to come after the Vertex Normal Data, if present; the format of each defined by the Section Header.&lt;br /&gt;
&lt;br /&gt;
=== UV Data ===&lt;br /&gt;
&#039;&#039;&#039;SU&#039;&#039;&#039; UV entries seem to come after the Color Data, if present; the format of each defined by the Section Header.&lt;br /&gt;
&lt;br /&gt;
=== Draw Data ===&lt;br /&gt;
After the UV entries comes the Draw Data. This section starts with a 4-byte header:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Draw Data Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0x80? Perhaps this value indicates that the data is made of Wii Graphics&#039; commands.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || UInt24 || &#039;&#039;&#039;Length of the draw commands&#039;&#039;&#039; in bytes. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Directly after the header there are the Wii Draw Commands.&lt;br /&gt;
&lt;br /&gt;
=== Bone Index Palette ===&lt;br /&gt;
After the Draw Data comes a section that contains a (compressed?) palette of bone indices, presumably linking position matrix IDs from the draw commands to multiple bone IDs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Unknown Data 2 Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;Length of the palette&#039;&#039;&#039; in bytes (&#039;&#039;&#039;P&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &#039;&#039;&#039;Number of bones&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte[&#039;&#039;&#039;P&#039;&#039;&#039; - 1] || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Index data seems to be compressed/mixed in some way?}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle AMS files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqualead File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=BIKE_BIN_(File_Format)&amp;diff=633</id>
		<title>BIKE BIN (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=BIKE_BIN_(File_Format)&amp;diff=633"/>
		<updated>2026-02-14T14:14:08Z</updated>

		<summary type="html">&lt;p&gt;Atlas: /* Node */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;BIN&#039;&#039;&#039; is a model file format used in [[Mario Kart Arcade GP DX]] which inherits from the BIKE format. The format consist of a hierarchy of nodes, where each node can contain child nodes and meshes. The textures are external DDS files, and are linked by each material.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian. All sections and subsections are aligned to 0x10.&lt;br /&gt;
&lt;br /&gt;
== BIKE Header ==&lt;br /&gt;
The file starts with the common BIKE header. It has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;BIKE&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Version number&#039;&#039;&#039; of the file format&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;Size of this header&#039;&#039;&#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be padding.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BIN Header ===&lt;br /&gt;
The BIN header follows the [[#BIKE Header|BIKE header]]. It has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Number of [[#Material|materials]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;[[#Material|Material]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;Number of [[#Texture Reference|texture references]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || &#039;&#039;&#039;[[#Texture Reference|Texture reference]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || &#039;&#039;&#039;Number of [[#Bone|bones]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || &#039;&#039;&#039;[[#Bone|Bone]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || &#039;&#039;&#039;[[#Root Node|Root node]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || &#039;&#039;&#039;Number of [[#Bone Link|bone links]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || &#039;&#039;&#039;[[#Bone Link|Bone links]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || &#039;&#039;&#039;Number of [[#Node Pair|node pairs]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || &#039;&#039;&#039;[[#Node Pair|Node pair]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Material ==&lt;br /&gt;
Each material has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x11 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x21 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x25 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x26 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x27 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Float[4] || &#039;&#039;&#039;Ambient color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || Float[4] || &#039;&#039;&#039;Diffuse color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 || Float[4] || &#039;&#039;&#039;Specular color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58 || Float[4] || &#039;&#039;&#039;Incandescence color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68 || Float || &#039;&#039;&#039;Shiny&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x70 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x74 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x78 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x80 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x84 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x88 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x90 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x94 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x98 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C || UInt32 || &#039;&#039;&#039;[[#Translation Animation|Translation animation]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8 || Int16 || &#039;&#039;&#039;Albedo texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAA || Int16 || &#039;&#039;&#039;Specular texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC || Int16 || &#039;&#039;&#039;Reflective texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAE || Int16 || &#039;&#039;&#039;Environment texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0 || Int16 || &#039;&#039;&#039;Normal texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB2 || Int16 || &#039;&#039;&#039;Incandescence texture index&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Translation Animation ===&lt;br /&gt;
If the offset is not 0, a simple translation animation is applied to the material. The animation is a constant value.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float || &#039;&#039;&#039;U translation&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Float || &#039;&#039;&#039;V translation&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Texture Reference ==&lt;br /&gt;
Each texture reference has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Texture name offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bone ==&lt;br /&gt;
Each bone has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Bone name offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Node pair offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Root Node ==&lt;br /&gt;
The root node has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Node pair offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bone Link ==&lt;br /&gt;
Each bone link corresponds to a node that contains a model object as well as a node that contains a bone, then it gives a local ID for each bone.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Model object node offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Bone node offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;Local bone ID&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Node Pair ==&lt;br /&gt;
Each node pair contains the name and the [[#Node|node]] offset. The node pairs are in an array, which means it doesn&#039;t specify the hierarchy. Each entry has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Node name offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;[[#Node|Node]] offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Node ===&lt;br /&gt;
Each node has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Visibility flag&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || &#039;&#039;&#039;[[#Transform|Transform]]&#039;&#039;&#039; || &#039;&#039;&#039;Node transform&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Float[3] || &#039;&#039;&#039;Bounding sphere XYZ position&#039;&#039;&#039;. &lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || Float || &#039;&#039;&#039;Bounding sphere radius&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || UInt32 || &#039;&#039;&#039;[[#Model Object|Model object]] array offset&#039;&#039;&#039;. Points to an array of UInt32s, which points to [[#Model Object|model objects]]. The count is not stored, but the array is terminated by 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || UInt32 || &#039;&#039;&#039;[[#Node|Child node]] array offset&#039;&#039;&#039;. Points to an array of UInt32s, which points to [[#Node|node children]]. The count is not stored, but the array is terminated by 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || &#039;&#039;&#039;[[#Transform|Transform]]&#039;&#039;&#039; || &#039;&#039;&#039;Pose transform&#039;&#039;&#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#AAFFAA&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;If [[#BIKE Header|version]] &amp;gt;= 4.0.0&#039;&#039;&#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x64 || Float[3] || &#039;&#039;&#039;Bounding box maximum position&#039;&#039;&#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x70 || Float[3] || &#039;&#039;&#039;Bounding box minimum position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Transform =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || &#039;&#039;&#039;Scale&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || &#039;&#039;&#039;Rotation&#039;&#039;&#039;, in radians.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float[3] || &#039;&#039;&#039;Translation&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Model Object ====&lt;br /&gt;
Each entry has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Number of triangles&#039;&#039;&#039; to draw. The number of elements in the index buffer is equal to this number multiplied by 3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;[[#Material|Material]] index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || &#039;&#039;&#039;Bounding sphere XYZ position&#039;&#039;&#039;. &lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float || &#039;&#039;&#039;Bounding sphere radius&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || &#039;&#039;&#039;Vertex count&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || &#039;&#039;&#039;Position buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || &#039;&#039;&#039;Normal buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || &#039;&#039;&#039;Color buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || UInt32 || &#039;&#039;&#039;UV buffer 1 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || UInt32 || &#039;&#039;&#039;UV buffer 2 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || UInt32 || &#039;&#039;&#039;UV buffer 3 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || UInt32 || &#039;&#039;&#039;UV buffer 4 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || UInt32 || &#039;&#039;&#039;Index buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || UInt32 || &#039;&#039;&#039;Number of bones&#039;&#039;&#039; influencing the vertices.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44 || UInt32 || &#039;&#039;&#039;Bone ID mask&#039;&#039;&#039;. Each bit represents a local bone ID from the corresponding [[#Bone Link|bone link]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 || UInt32 || &#039;&#039;&#039;Weight buffer offset&#039;&#039;&#039; (vertices * 4 bytes per bone).&lt;br /&gt;
|- bgcolor=&amp;quot;#AAFFAA&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;If [[#BIKE Header|version]] &amp;gt;= 4.0.0&#039;&#039;&#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x4C || Float[3] || &#039;&#039;&#039;Bounding box maximum position&#039;&#039;&#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x58 || Float[3] || &#039;&#039;&#039;Bounding box minimum position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle BIN files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Mario Kart Arcade GP DX File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=BIKE_BIN_(File_Format)&amp;diff=632</id>
		<title>BIKE BIN (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=BIKE_BIN_(File_Format)&amp;diff=632"/>
		<updated>2026-02-14T14:13:57Z</updated>

		<summary type="html">&lt;p&gt;Atlas: /* Model Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;BIN&#039;&#039;&#039; is a model file format used in [[Mario Kart Arcade GP DX]] which inherits from the BIKE format. The format consist of a hierarchy of nodes, where each node can contain child nodes and meshes. The textures are external DDS files, and are linked by each material.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order is always little endian. All sections and subsections are aligned to 0x10.&lt;br /&gt;
&lt;br /&gt;
== BIKE Header ==&lt;br /&gt;
The file starts with the common BIKE header. It has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;BIKE&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Version number&#039;&#039;&#039; of the file format&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;Size of this header&#039;&#039;&#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Seems to be padding.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BIN Header ===&lt;br /&gt;
The BIN header follows the [[#BIKE Header|BIKE header]]. It has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Number of [[#Material|materials]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;[[#Material|Material]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;Number of [[#Texture Reference|texture references]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || &#039;&#039;&#039;[[#Texture Reference|Texture reference]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || &#039;&#039;&#039;Number of [[#Bone|bones]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || &#039;&#039;&#039;[[#Bone|Bone]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || &#039;&#039;&#039;[[#Root Node|Root node]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || &#039;&#039;&#039;Number of [[#Bone Link|bone links]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || &#039;&#039;&#039;[[#Bone Link|Bone links]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || &#039;&#039;&#039;Number of [[#Node Pair|node pairs]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || &#039;&#039;&#039;[[#Node Pair|Node pair]] array offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Material ==&lt;br /&gt;
Each material has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x11 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x21 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x25 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x26 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x27 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Float[4] || &#039;&#039;&#039;Ambient color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || Float[4] || &#039;&#039;&#039;Diffuse color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 || Float[4] || &#039;&#039;&#039;Specular color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x58 || Float[4] || &#039;&#039;&#039;Incandescence color&#039;&#039;&#039; in RGBA.&lt;br /&gt;
|-&lt;br /&gt;
| 0x68 || Float || &#039;&#039;&#039;Shiny&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x70 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x74 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x78 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x80 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x84 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x88 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x90 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x94 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x98 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C || UInt32 || &#039;&#039;&#039;[[#Translation Animation|Translation animation]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4 || Float || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8 || Int16 || &#039;&#039;&#039;Albedo texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAA || Int16 || &#039;&#039;&#039;Specular texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC || Int16 || &#039;&#039;&#039;Reflective texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xAE || Int16 || &#039;&#039;&#039;Environment texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0 || Int16 || &#039;&#039;&#039;Normal texture index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB2 || Int16 || &#039;&#039;&#039;Incandescence texture index&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Translation Animation ===&lt;br /&gt;
If the offset is not 0, a simple translation animation is applied to the material. The animation is a constant value.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float || &#039;&#039;&#039;U translation&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Float || &#039;&#039;&#039;V translation&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Texture Reference ==&lt;br /&gt;
Each texture reference has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Texture name offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bone ==&lt;br /&gt;
Each bone has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Bone name offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Node pair offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Root Node ==&lt;br /&gt;
The root node has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Node pair offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bone Link ==&lt;br /&gt;
Each bone link corresponds to a node that contains a model object as well as a node that contains a bone, then it gives a local ID for each bone.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Model object node offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Bone node offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;Local bone ID&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Node Pair ==&lt;br /&gt;
Each node pair contains the name and the [[#Node|node]] offset. The node pairs are in an array, which means it doesn&#039;t specify the hierarchy. Each entry has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Node name offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;[[#Node|Node]] offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Node ===&lt;br /&gt;
Each node has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || &#039;&#039;&#039;Visibility flag&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || &#039;&#039;&#039;[[#Transform|Transform]]&#039;&#039;&#039; || &#039;&#039;&#039;Node transform&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Float[3] || &#039;&#039;&#039;Bounding shere XYZ position&#039;&#039;&#039;. &lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || Float || &#039;&#039;&#039;Bounding sphere radius&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || UInt32 || &#039;&#039;&#039;[[#Model Object|Model object]] array offset&#039;&#039;&#039;. Points to an array of UInt32s, which points to [[#Model Object|model objects]]. The count is not stored, but the array is terminated by 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || UInt32 || &#039;&#039;&#039;[[#Node|Child node]] array offset&#039;&#039;&#039;. Points to an array of UInt32s, which points to [[#Node|node children]]. The count is not stored, but the array is terminated by 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || &#039;&#039;&#039;[[#Transform|Transform]]&#039;&#039;&#039; || &#039;&#039;&#039;Pose transform&#039;&#039;&#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#AAFFAA&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;If [[#BIKE Header|version]] &amp;gt;= 4.0.0&#039;&#039;&#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x64 || Float[3] || &#039;&#039;&#039;Bounding box maximum position&#039;&#039;&#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x70 || Float[3] || &#039;&#039;&#039;Bounding box minimum position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Transform =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || &#039;&#039;&#039;Scale&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || &#039;&#039;&#039;Rotation&#039;&#039;&#039;, in radians.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float[3] || &#039;&#039;&#039;Translation&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Model Object ====&lt;br /&gt;
Each entry has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &#039;&#039;&#039;Number of triangles&#039;&#039;&#039; to draw. The number of elements in the index buffer is equal to this number multiplied by 3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;[[#Material|Material]] index&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || &#039;&#039;&#039;Bounding sphere XYZ position&#039;&#039;&#039;. &lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float || &#039;&#039;&#039;Bounding sphere radius&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || &#039;&#039;&#039;Vertex count&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || &#039;&#039;&#039;Position buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || &#039;&#039;&#039;Normal buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || &#039;&#039;&#039;Color buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || UInt32 || &#039;&#039;&#039;UV buffer 1 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || UInt32 || &#039;&#039;&#039;UV buffer 2 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || UInt32 || &#039;&#039;&#039;UV buffer 3 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || UInt32 || &#039;&#039;&#039;UV buffer 4 offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || UInt32 || &#039;&#039;&#039;Index buffer offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || UInt32 || &#039;&#039;&#039;Number of bones&#039;&#039;&#039; influencing the vertices.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44 || UInt32 || &#039;&#039;&#039;Bone ID mask&#039;&#039;&#039;. Each bit represents a local bone ID from the corresponding [[#Bone Link|bone link]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 || UInt32 || &#039;&#039;&#039;Weight buffer offset&#039;&#039;&#039; (vertices * 4 bytes per bone).&lt;br /&gt;
|- bgcolor=&amp;quot;#AAFFAA&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;If [[#BIKE Header|version]] &amp;gt;= 4.0.0&#039;&#039;&#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x4C || Float[3] || &#039;&#039;&#039;Bounding box maximum position&#039;&#039;&#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x58 || Float[3] || &#039;&#039;&#039;Bounding box minimum position&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle BIN files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Mario Kart Arcade GP DX File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=BCRES_(File_Format)&amp;diff=631</id>
		<title>BCRES (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=BCRES_(File_Format)&amp;diff=631"/>
		<updated>2025-10-25T23:35:33Z</updated>

		<summary type="html">&lt;p&gt;Atlas: /* Depth Operation */ death&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Under-construction}}&lt;br /&gt;
&#039;&#039;&#039;BCRES&#039;&#039;&#039; (&#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;C&#039;&#039;&#039;itra &#039;&#039;&#039;RES&#039;&#039;&#039;ource) is a file format used on [[Nintendo 3DS]] games, and contains model, texture and animation data.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || String || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;CGFX&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || {{BOM}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &#039;&#039;&#039;Header size&#039;&#039;&#039;. Always 0x14.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;Version number&#039;&#039;&#039; of the file format.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || &#039;&#039;&#039;File size&#039;&#039;&#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt16 || &#039;&#039;&#039;Number of sections.&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || UInt16 || &#039;&#039;&#039;Reserved&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DATA ===&lt;br /&gt;
After the header comes the DATA section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || String || &#039;&#039;&#039;Section magic&#039;&#039;&#039;. Always &#039;&#039;DATA&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Section size. Also includes the data that comes after.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After the DATA header comes &#039;&#039;&#039;N&#039;&#039;&#039; entries of the following structure. &#039;&#039;&#039;N&#039;&#039;&#039; seems to be depending on the version number.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Number of entries.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Int32 || [[#DICT|DICT]] offset.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DICT ===&lt;br /&gt;
A &#039;&#039;&#039;DICT&#039;&#039;&#039; (&#039;&#039;&#039;DICT&#039;&#039;&#039;ionary) is used to represent named entries. It is also a binary search tree, which allows faster name look-ups.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || String || &#039;&#039;&#039;Magic&#039;&#039;&#039; to identify this section. Always &#039;&#039;DICT&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Section size.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &#039;&#039;&#039;N&#039;&#039;&#039; = Number of entries in this dictionary.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After the header structure follows &#039;&#039;&#039;N&#039;&#039;&#039; + 1 number of entries. The first entry is a dummy node which never contains any data. It is used as a reference entry. Each entry has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Search value.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || Left entry index.&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || Right entry index.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || Name offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || Data offset.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CMDL ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Flags. &#039;&#039;&#039;xxxxxxxx xxxxxxxx xxxxxxxx Axxxxxxx&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039; determines if the model has bones.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || String || &#039;&#039;&#039;Magic&#039;&#039;&#039;. Always &#039;&#039;CMDL&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || Revision.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || Name offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || Number of &#039;&#039;&#039;user data&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;User data [[#DICT|DICT]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || Flags.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || Float[3] || &#039;&#039;&#039;Scale&#039;&#039;&#039; affecting this model.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || Float[3] || &#039;&#039;&#039;Rotation&#039;&#039;&#039; affecting this model.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 || Float[3] || &#039;&#039;&#039;Translation&#039;&#039;&#039; affecting this model.&lt;br /&gt;
|-&lt;br /&gt;
| 0x54 || Float[12] || Local 4x3 matrix.&lt;br /&gt;
|-&lt;br /&gt;
| 0x84 || Float[12] || World 4x3 matrix.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4 || UInt32 || Number of [[#Mesh|&#039;&#039;&#039;meshes&#039;&#039;&#039;]].&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8 || Int32 || &#039;&#039;&#039;[[#Mesh|Mesh]] pointer table&#039;&#039;&#039; offset. Links to a Int32[] which points to the structures.&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC || UInt32 || Number of &#039;&#039;&#039;[[#Material|material]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0 || Int32 || &#039;&#039;&#039;[[#Material|Material]] [[#DICT|DICT]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC4 || UInt32 || Number of &#039;&#039;&#039;[[#Shape|Shape]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8 || Int32 || &#039;&#039;&#039;[[#Shape|Shape]] pointer table&#039;&#039;&#039; offset. Links to a Int32[] which points to the structures.&lt;br /&gt;
|-&lt;br /&gt;
| 0xCC || UInt32 || Number of &#039;&#039;&#039;[[#Object Node|object nodes]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD0 || Int32 || &#039;&#039;&#039;[[#Object Node|Object nodes]] [[#DICT|DICT]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD4 || UInt32 || Flags.&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xDC || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|- bgcolor=&amp;quot;#AFAFAF&amp;quot;&lt;br /&gt;
| 0xE0 || Int32 || Bone offset. Only stored if &#039;&#039;&#039;A&#039;&#039;&#039; is 1 at 0x00.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Mesh ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Flags.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || String || &#039;&#039;&#039;Section magic&#039;&#039;&#039;. Always &#039;&#039;SOBJ&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || Revision.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || Name offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || Number of &#039;&#039;&#039;user data&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;User data [[#DICT|DICT]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || &#039;&#039;&#039;[[#Shape|Shape]]&#039;&#039;&#039; index.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || &#039;&#039;&#039;[[#Material|Material]]&#039;&#039;&#039; index.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Int32 || Offset to the &#039;&#039;&#039;[[#Header|owner model]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Byte || Visible.&lt;br /&gt;
|-&lt;br /&gt;
| 0x25 || Byte || Render priority.&lt;br /&gt;
|-&lt;br /&gt;
| 0x26 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A || ? || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Material ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Flags.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || String || &#039;&#039;&#039;Section magic&#039;&#039;&#039;. Always &#039;&#039;MTOB&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || Revision.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || Name offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || Number of &#039;&#039;&#039;user data&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;User data [[#DICT|DICT]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || Flags. &#039;&#039;&#039;xxxxxxxx xxxxxxxx xxxxxxxx xxABCDEF&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039; determines if polygon offset is enabled.&lt;br /&gt;
* &#039;&#039;&#039;B&#039;&#039;&#039; enables fog.&lt;br /&gt;
* &#039;&#039;&#039;C&#039;&#039;&#039; enables hemi sphere pcclusion.&lt;br /&gt;
* &#039;&#039;&#039;D&#039;&#039;&#039; enables hemi sphere light.&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039; enables vertex light.&lt;br /&gt;
* &#039;&#039;&#039;F&#039;&#039;&#039; enables fragment light.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || {{Unknown-left|UV config.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || &#039;&#039;&#039;[[#Material Color|Material Color]]&#039;&#039;&#039; || Material color.&lt;br /&gt;
|-&lt;br /&gt;
| 0x100 || &#039;&#039;&#039;[[#Rasterization|Rasterization]]&#039;&#039;&#039; || Rasterization.&lt;br /&gt;
|-&lt;br /&gt;
| 0x114 || &#039;&#039;&#039;[[#Depth Operation|Depth Operation]]&#039;&#039;&#039; || Depth operation.&lt;br /&gt;
|-&lt;br /&gt;
| 0x128 || &#039;&#039;&#039;[[#Blend Operation|Blend Operation]]&#039;&#039;&#039; || Blend operation.&lt;br /&gt;
|-&lt;br /&gt;
| 0x154 || &#039;&#039;&#039;[[#Stencil Operation|Stencil Operation]]&#039;&#039;&#039; || Stencil operation.&lt;br /&gt;
|-&lt;br /&gt;
| 0x164 || UInt32 || Number of active texture coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| 0x168 || &#039;&#039;&#039;[[#Texture Coordinate Source|Texture Coordinate Source]]&#039;&#039;&#039; || Texture coordinate source 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x198 || &#039;&#039;&#039;[[#Texture Coordinate Source|Texture Coordinate Source]]&#039;&#039;&#039; || Texture coordinate source 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C8 || &#039;&#039;&#039;[[#Texture Coordinate Source|Texture Coordinate Source]]&#039;&#039;&#039; || Texture coordinate source 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F8 || Int32[4] || Offset to 4 [[#Texture Mapper|texture mappers]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x208 || Int32 || Shader offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20C || Int32 || Fragment shader offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x210 || UInt32 || {{Unknown-left|Shader program description index.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x214 || UInt32 || Number of &#039;&#039;&#039;shader parameters&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x218 || UInt32 || &#039;&#039;&#039;Shader parameter&#039;&#039;&#039; array offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x21C || UInt32 || Light set index.&lt;br /&gt;
|-&lt;br /&gt;
| 0x220 || UInt32 || Fox index.&lt;br /&gt;
|-&lt;br /&gt;
| 0x224 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Shading parameter&#039;&#039;&#039; hash.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x228 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Shader parameters&#039;&#039;&#039; hash.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x22C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Texture coordinators&#039;&#039;&#039; hash.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x230 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Texture samplers&#039;&#039;&#039; hash.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x234 || UInt32 || &#039;&#039;&#039;[[#Texture Mapper|Texture mappers]]&#039;&#039;&#039; hash.&lt;br /&gt;
|-&lt;br /&gt;
| 0x238 || UInt32 || &#039;&#039;&#039;[[#Material Color|Material color]]&#039;&#039;&#039; hash.&lt;br /&gt;
|-&lt;br /&gt;
| 0x23C || UInt32 || &#039;&#039;&#039;[[#Rasterization|Rasterization]]&#039;&#039;&#039; hash.&lt;br /&gt;
|-&lt;br /&gt;
| 0x240 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Fragment lighting&#039;&#039;&#039; hash.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x244 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Fragment lighting table&#039;&#039;&#039; hash.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x248 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Fragment lighting table parameters&#039;&#039;&#039; hash.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x24C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Texture combiners&#039;&#039;&#039; hash.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x250 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Alpha test&#039;&#039;&#039; hash.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x254 || UInt32 || Hash of &#039;&#039;&#039;[[#Depth Operation|depth operation]]&#039;&#039;&#039;, &#039;&#039;&#039;[[#Blend Operation|blend operation]]&#039;&#039;&#039; and &#039;&#039;&#039;[[#Stencil Operation|stencil operation]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x258 || UInt32 || Material index.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Material Color ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[4][11] || &#039;&#039;&#039;Material colors&#039;&#039;&#039;. Each color is stored as &#039;&#039;&#039;four floats&#039;&#039;&#039; in RGBA format. There are a total of 11 colors where 1 is emission, 1 is ambient, 1 is diffuse, 2 are specular and 5 are constants.&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0 || Byte[4][11] || &#039;&#039;&#039;Material colors&#039;&#039;&#039;. Each color is stored as &#039;&#039;&#039;four bytes&#039;&#039;&#039; in RGBA format. There are a total of 11 colors where 1 is emission, 1 is ambient, 1 is diffuse, 2 are specular and 5 are constants.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Rasterization ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Flags.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Culling mode.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Float || {{Unknown-left|Polygon offset unit.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || {{Unknown-left|Command 1.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || {{Unknown-left|Command 2.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Depth Operation ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Flags. &#039;&#039;&#039;xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxAB&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039; enables depth test?&lt;br /&gt;
* &#039;&#039;&#039;B&#039;&#039;&#039; enables mask?&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || {{Unknown-left|Command 1.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || {{Unknown-left|Command 2.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || {{Unknown-left|Command 3.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || {{Unknown-left|Command 4.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Blend Operation ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Mode.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Float[4] || &#039;&#039;&#039;Blend color&#039;&#039;&#039; stored as four floats in RGBA format.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || {{Unknown-left|Command 1.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || {{Unknown-left|Command 2.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || {{Unknown-left|Command 3.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || {{Unknown-left|Command 4.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || {{Unknown-left|Command 5.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || {{Unknown-left|Command 6.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Stencil Operation ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || {{Unknown-left|Command 1.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || {{Unknown-left|Command 2.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || {{Unknown-left|Command 3.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || {{Unknown-left|Command 4.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Texture Coordinate Source ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Source.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Mapping method. 0 = UV, 1 = Cube, 2 = Sphere, 3 = Projection, 4 = Shadow&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || Camera reference.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || Matrix mode.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Float[2] || Scale.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float || Rotation.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Float[2] || Translation.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || Float[12] || Matrix 4x3.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Texture Mapper ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Type.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Dynamic allocator.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &#039;&#039;&#039;TXOB offset&#039;&#039;&#039;. Links to the texture header.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || Sampler offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E || UInt16 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt16 || Height.&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 || UInt16 || Width.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x44 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x44 || UInt32 || The command size to send.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shape ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Flags.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || String || &#039;&#039;&#039;Section magic&#039;&#039;&#039;. Always &#039;&#039;SOBJ&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || Revision.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || Name offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || Number of &#039;&#039;&#039;user data&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Int32 || &#039;&#039;&#039;User data [[#DICT|DICT]]&#039;&#039;&#039; offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || Flags.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || Bounding box offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || Float[3] || {{Unknown-left|&#039;&#039;&#039;Unknown vector&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || UInt32 || Number of face groups.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || Int32 || Offset to the face groups.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || UInt32 || Number of [[#Vertex Buffer|vertex buffers]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || Int32 || Offset to the [[#Vertex Buffer|vertex buffers]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Vertex Buffer ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || Buffer object.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || Location flag.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || Location address.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || Memory area.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || Number of &#039;&#039;&#039;[[#Vertex Attribute|vertex attributes]]&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || UInt32 || &#039;&#039;&#039;[[#Vertex Attribute|Vertex attributes]]&#039;&#039;&#039; pointer table offset. Links to a Int32[] which points to the structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Vertex Attribute =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt32 || Flags.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Target.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || Flags.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || Buffer object.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || Location flag.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || Stream size.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || Stream offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || Location address.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || Memory area.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || Flags. &#039;&#039;&#039;xxxxxxxx xxxxxxxx xxxxxxxx xxxxAAAA&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;AAAA&#039;&#039;&#039; is the format of the stream.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || Float || Scale.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || UInt32 || Offset.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Formats&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || SByte.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Int16.&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Float.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Targets&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description.&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Position.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Normal.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Tangent.&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Color.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UV 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || UV 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UV 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || Bone index.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Bone weight.&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || User attribute 0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || User attribute 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B || User attribute 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || User attribute 3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D || User attribute 4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E || User attribute 5.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F || User attribute 6.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || User attribute 7.&lt;br /&gt;
|-&lt;br /&gt;
| 0x11 || User attribute 8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || User attribute 9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13 || User attribute 10.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || User attribute 11.&lt;br /&gt;
|-&lt;br /&gt;
| 0x15 || Interleave.&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 || Quantity.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Object Node ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || Name offset.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || Visible.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TXOB ==&lt;br /&gt;
&lt;br /&gt;
[[Category:3DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=AMS_(File_Format)&amp;diff=628</id>
		<title>AMS (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=AMS_(File_Format)&amp;diff=628"/>
		<updated>2025-08-31T13:13:12Z</updated>

		<summary type="html">&lt;p&gt;Atlas: /* Bone Index Palette */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{under-construction}}&lt;br /&gt;
&#039;&#039;&#039;AMS&#039;&#039;&#039; (&#039;&#039;&#039;A&#039;&#039;&#039;qualead &#039;&#039;&#039;M&#039;&#039;&#039;e&#039;&#039;&#039;S&#039;&#039;&#039;h) is a file format developed by [[Aqualead]] and found in some [[Wii]] and [[3DS]] games (and suspected to be used in [[GameCube]] titles as well), such as &#039;&#039;[[One Piece: Unlimited Adventure]]&#039;&#039;, &#039;&#039;[[One Piece: Unlimited Cruise Episode 1 - The Treasure Beneath The Waves]]&#039;&#039;, &#039;&#039;[[One Piece: Unlimited Cruise Episode 2: Awakening of a Hero]]&#039;&#039;, &#039;&#039;[[One Piece: Unlimited Cruise SP]]&#039;&#039; and &#039;&#039;[[One Piece: Unlimited Cruise SP 2]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order can be either big endian (Wii) or little endian (3DS).&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with the following header:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;ALMS&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Format type or version? Values seen are 2, 3, 4, 5, 6, 7 and 8.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Posibly bit flags, but files either use 0x80 or 0x81.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || Byte || &#039;&#039;&#039;Number of materials&#039;&#039;&#039; (&#039;&#039;&#039;M&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || Byte || &#039;&#039;&#039;Number of texture references&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte || &#039;&#039;&#039;Number of shapes&#039;&#039;&#039; (&#039;&#039;&#039;S&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || Byte || &#039;&#039;&#039;Number of bones&#039;&#039;&#039; (&#039;&#039;&#039;B&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || Byte || &#039;&#039;&#039;Number of shape groups&#039;&#039;&#039; (&#039;&#039;&#039;G&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B || Byte || &#039;&#039;&#039;Length of each material section&#039;&#039;&#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || &#039;&#039;&#039;XYZ position&#039;&#039;&#039; of the model (does not apply to bones).&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float || &#039;&#039;&#039;Scale&#039;&#039;&#039; of the model (does not apply to bones).&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt16 || &#039;&#039;&#039;[[#Section 1|Section 1]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E || UInt16 || &#039;&#039;&#039;[[#Section 2|Section 2]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt16 || &#039;&#039;&#039;[[#Section 3|Section 3]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 || UInt16 || &#039;&#039;&#039;[[#Section 4|Section 4]] offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Section 1 ==&lt;br /&gt;
This section defines &#039;&#039;&#039;M&#039;&#039;&#039; material entries.&lt;br /&gt;
&lt;br /&gt;
=== Material ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0xB2?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || &#039;&#039;&#039;Texture reference ID&#039;&#039;&#039;. 0xFF if none.&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Section 2 ==&lt;br /&gt;
This section defines &#039;&#039;&#039;T&#039;&#039;&#039; 0x4-byte texture references.&lt;br /&gt;
&lt;br /&gt;
=== Texture Reference ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &#039;&#039;&#039;Padding&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || UInt24 || &#039;&#039;&#039;Asset link identifier&#039;&#039;&#039; of the texture.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Section 3 ==&lt;br /&gt;
This section defines &#039;&#039;&#039;B&#039;&#039;&#039; bone entries.&lt;br /&gt;
&lt;br /&gt;
=== Bone ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|- bgcolor=&amp;quot;#AAFFAA&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;If [[#Header|format]] = 7&#039;&#039;&#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;Bone name/ID&#039;&#039;&#039;. Hardcoded to be 4 characters long.&lt;br /&gt;
|- bgcolor=&amp;quot;#FFAAAA&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Else&#039;&#039;&#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#FFDDDD&amp;quot;&lt;br /&gt;
| 0x00 || float[3] || &#039;&#039;&#039;XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#FFDDDD&amp;quot;&lt;br /&gt;
| 0x0C || Char[4] || &#039;&#039;&#039;Bone name/ID&#039;&#039;&#039;. Hardcoded to be 4 characters long.&lt;br /&gt;
|- bgcolor=&amp;quot;#FFDDDD&amp;quot;&lt;br /&gt;
| 0x10 || float[4] || &#039;&#039;&#039;Rotation&#039;&#039;&#039;, using quaternions.&lt;br /&gt;
|- bgcolor=&amp;quot;#FFDDDD&amp;quot;&lt;br /&gt;
| 0x20 || float[4] || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Section 4 ==&lt;br /&gt;
This section defines &#039;&#039;&#039;S&#039;&#039;&#039; * &#039;&#039;&#039;G&#039;&#039;&#039; shape entries.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32[&#039;&#039;&#039;S&#039;&#039;&#039;] || &#039;&#039;&#039;Shape offsets&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shape Header ===&lt;br /&gt;
Each shape starts with a 0x20 byte header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &#039;&#039;&#039;Material ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte || &#039;&#039;&#039;Flag&#039;&#039;&#039;: xxx&#039;&#039;&#039;A&#039;&#039;&#039; xxx&#039;&#039;&#039;B&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: &#039;&#039;&#039;Unknown&#039;&#039;&#039; (sets some value to 32)&lt;br /&gt;
* &#039;&#039;&#039;B&#039;&#039;&#039;: &#039;&#039;&#039;Unknown&#039;&#039;&#039;. 4 floats come after the end of the header.&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 3?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || {{Unknown-left|Number of &#039;&#039;&#039;Unknown Data 1&#039;&#039;&#039; (&#039;&#039;&#039;S?&#039;&#039;&#039;).}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the vertex data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06.5 || 3 bits || &#039;&#039;&#039;Number of vertex position sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the vertex positions&#039; index data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || 4 bits || &#039;&#039;&#039;Vertex position data bytes per index&#039;&#039;&#039; in the draw commands:&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039;: Data not used; skip&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: 2 bytes (UInt16)&lt;br /&gt;
* &#039;&#039;&#039;Anything else&#039;&#039;&#039;: 1 byte&lt;br /&gt;
|-&lt;br /&gt;
| 0x07.4 || 4 bits || &#039;&#039;&#039;Vertex position format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SByte&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UInt16&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Int16&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Float&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16 || Number of &#039;&#039;&#039;vertex positions&#039;&#039;&#039; (&#039;&#039;&#039;SP&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the normal data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A.5 || 3 bits || &#039;&#039;&#039;Number of normal sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the normals&#039; index data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B || 4 bits || &#039;&#039;&#039;Normal data bytes per index&#039;&#039;&#039; in the draw commands:&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039;: Data not used; skip&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: 2 bytes (UInt16)&lt;br /&gt;
* &#039;&#039;&#039;Anything else&#039;&#039;&#039;: 1 byte&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B.4 || 4 bits || &#039;&#039;&#039;Vertex normal format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SByte&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UInt16&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Int16&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Float&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt16 || Number of &#039;&#039;&#039;vertex normals&#039;&#039;&#039; (&#039;&#039;&#039;SN&#039;&#039;&#039;). Normal data is usually always attached to the vertex data, so it&#039;s the same as the number of vertices (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the color data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E.5 || 3 bits || &#039;&#039;&#039;Number of color sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the colors&#039; index data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F || 4 bits || &#039;&#039;&#039;Color data bytes per index&#039;&#039;&#039; in the draw commands:&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039;: Data not used; skip&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: 2 bytes (UInt16)&lt;br /&gt;
* &#039;&#039;&#039;Anything else&#039;&#039;&#039;: 1 byte&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F.4 || 4 bits || &#039;&#039;&#039;Vertex color format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || RGBA8&lt;br /&gt;
|-&lt;br /&gt;
| 1 || RGB8&lt;br /&gt;
|-&lt;br /&gt;
| 2 || RGBX8&lt;br /&gt;
|-&lt;br /&gt;
| 3 || RGBA4&lt;br /&gt;
|-&lt;br /&gt;
| 4 || RGBA6&lt;br /&gt;
|-&lt;br /&gt;
| 5 || RGB565&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt16 || Number of &#039;&#039;&#039;vertex colors&#039;&#039;&#039; (&#039;&#039;&#039;SC&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the UV data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12.5 || 3 bits || &#039;&#039;&#039;Number of UV sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the UVs&#039; index data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13 || 4 bits || &#039;&#039;&#039;UV data bytes per index&#039;&#039;&#039; in the draw commands:&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039;: Data not used; skip&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: 2 bytes (UInt16)&lt;br /&gt;
* &#039;&#039;&#039;Anything else&#039;&#039;&#039;: 1 byte&lt;br /&gt;
|-&lt;br /&gt;
| 0x13.4 || 4 bits || &#039;&#039;&#039;UV format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SByte&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UInt16&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Int16&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Float&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt16 || Number of &#039;&#039;&#039;UVs&#039;&#039;&#039; (&#039;&#039;&#039;SU&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the bone ID data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x16.5 || 3 bits || &#039;&#039;&#039;Number of bone ID sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the bone ID data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x17 || 4 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. This value would correspond to the bone ID data bytes per index, but instead each entry corresponds to a vertex position. If bones are used, this value is always 1 (?)}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x17.4 || 4 bits || &#039;&#039;&#039;Bone ID format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SByte&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UInt16&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Int16&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Float&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt16 || Number of &#039;&#039;&#039;bone entries&#039;&#039;&#039; (&#039;&#039;&#039;SB&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the weight data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A.5 || 3 bits || &#039;&#039;&#039;Number of weight sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the weight data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B || 4 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. This value would correspond to the weight data bytes per index, but instead each entry corresponds to a vertex position. Always 0 (?)}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B.4 || 4 bits || &#039;&#039;&#039;Weight format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SByte&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UInt16&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Int16&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Float&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Byte[2] || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E || UInt16 || &#039;&#039;&#039;Section Data Helpers offset&#039;&#039;&#039;. Usually 0x20 or 0x30. If the value is 0, the Section Data Helpers come either at 0x20 (if the last bit of the value at 0x2 from this header is 0) or at 0x30 (if the value is 1). This value is always aligned by 4 bytes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Section Data Helpers ===&lt;br /&gt;
These entries seem to contain the offsets of the first instance for each of the entries defined in the Shape Header. Commonly, the first 4-byte entry is always related to the unit data, and the second one to its first draw command unit ID. For weight/bone data, it only has one entry, as they are not referenced by the draw commands. All offsets are relative to the start of the Shape Header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Format of a section data helper&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &#039;&#039;&#039;Stride of an entire entry unit&#039;&#039;&#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || UInt24 || &#039;&#039;&#039;Data offset&#039;&#039;&#039; for the first instance of the entry. These offsets indicate the first entry for each entry type defined by the Shape Header, including overlapping entries that may share a common data array. For example, the vertex data array may contain normal and weight data attached to each vertex, but the entries for position, normal and weight data are separate. As for the offsets of the unit indices, it correlates to the specific part of the first draw command that references the entry type. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unknown Data 1 ===&lt;br /&gt;
This section follows directly after the Section Data Helpers and contains &#039;&#039;&#039;S?&#039;&#039;&#039; entries, seen in UInt16 format, unless specified somewhere in the Shape Header. The purpose of this section is unknown and it does not seem to be referenced by the Section Data Helpers.&lt;br /&gt;
&lt;br /&gt;
=== Bone References ===&lt;br /&gt;
This section follows directly after the Unknown Data 1 and contains &#039;&#039;&#039;SB&#039;&#039;&#039; entries, seen in Byte format, unless specified somewhere else in the Shape Header. This section seems to list the indices of the bones in order. This section does not seem to be referenced by the Section Data Helpers.&lt;br /&gt;
&lt;br /&gt;
=== Vertex Position Data ===&lt;br /&gt;
This section follows after the Bone References and contains &#039;&#039;&#039;SP&#039;&#039;&#039; entries; the format of each defined by the Section Header. Sometimes vertex positions, normals and weight/bone indices may be packed together in this section.&lt;br /&gt;
&lt;br /&gt;
=== Vertex Normal Data ===&lt;br /&gt;
&#039;&#039;&#039;SN&#039;&#039;&#039; vertex normal entries seem to come after the Vertex Position Data, if present; the format of each defined by the Section Header.&lt;br /&gt;
&lt;br /&gt;
=== Vertex Color Data ===&lt;br /&gt;
&#039;&#039;&#039;SC&#039;&#039;&#039; vertex color entries seem to come after the Vertex Normal Data, if present; the format of each defined by the Section Header.&lt;br /&gt;
&lt;br /&gt;
=== UV Data ===&lt;br /&gt;
&#039;&#039;&#039;SU&#039;&#039;&#039; UV entries seem to come after the Color Data, if present; the format of each defined by the Section Header.&lt;br /&gt;
&lt;br /&gt;
=== Draw Data ===&lt;br /&gt;
After the UV entries comes the Draw Data. This section starts with a 4-byte header:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Draw Data Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0x80? Perhaps this value indicates that the data is made of Wii Graphics&#039; commands.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || UInt24 || &#039;&#039;&#039;Length of the draw commands&#039;&#039;&#039; in bytes. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Directly after the header there are the Wii Draw Commands.&lt;br /&gt;
&lt;br /&gt;
=== Bone Index Palette ===&lt;br /&gt;
After the Draw Data comes a section that contains a (compressed?) palette of bone indices, presumably linking position matrix IDs from the draw commands to multiple bone IDs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Unknown Data 2 Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;Length of the palette&#039;&#039;&#039; in bytes (&#039;&#039;&#039;P&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &#039;&#039;&#039;Number of bones&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte[&#039;&#039;&#039;P&#039;&#039;&#039; - 1] || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Index data seems to be compressed/mixed in some way?}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle AMS files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqualead File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=AMS_(File_Format)&amp;diff=627</id>
		<title>AMS (File Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=AMS_(File_Format)&amp;diff=627"/>
		<updated>2025-08-31T13:12:43Z</updated>

		<summary type="html">&lt;p&gt;Atlas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{under-construction}}&lt;br /&gt;
&#039;&#039;&#039;AMS&#039;&#039;&#039; (&#039;&#039;&#039;A&#039;&#039;&#039;qualead &#039;&#039;&#039;M&#039;&#039;&#039;e&#039;&#039;&#039;S&#039;&#039;&#039;h) is a file format developed by [[Aqualead]] and found in some [[Wii]] and [[3DS]] games (and suspected to be used in [[GameCube]] titles as well), such as &#039;&#039;[[One Piece: Unlimited Adventure]]&#039;&#039;, &#039;&#039;[[One Piece: Unlimited Cruise Episode 1 - The Treasure Beneath The Waves]]&#039;&#039;, &#039;&#039;[[One Piece: Unlimited Cruise Episode 2: Awakening of a Hero]]&#039;&#039;, &#039;&#039;[[One Piece: Unlimited Cruise SP]]&#039;&#039; and &#039;&#039;[[One Piece: Unlimited Cruise SP 2]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
The file byte order can be either big endian (Wii) or little endian (3DS).&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with the following header:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;File magic&#039;&#039;&#039;. Always &#039;&#039;ALMS&#039;&#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Format type or version? Values seen are 2, 3, 4, 5, 6, 7 and 8.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Posibly bit flags, but files either use 0x80 or 0x81.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || Byte || &#039;&#039;&#039;Number of materials&#039;&#039;&#039; (&#039;&#039;&#039;M&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || Byte || &#039;&#039;&#039;Number of texture references&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte || &#039;&#039;&#039;Number of shapes&#039;&#039;&#039; (&#039;&#039;&#039;S&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || Byte || &#039;&#039;&#039;Number of bones&#039;&#039;&#039; (&#039;&#039;&#039;B&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || Byte || &#039;&#039;&#039;Number of shape groups&#039;&#039;&#039; (&#039;&#039;&#039;G&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B || Byte || &#039;&#039;&#039;Length of each material section&#039;&#039;&#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || &#039;&#039;&#039;XYZ position&#039;&#039;&#039; of the model (does not apply to bones).&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Float || &#039;&#039;&#039;Scale&#039;&#039;&#039; of the model (does not apply to bones).&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt16 || &#039;&#039;&#039;[[#Section 1|Section 1]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E || UInt16 || &#039;&#039;&#039;[[#Section 2|Section 2]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt16 || &#039;&#039;&#039;[[#Section 3|Section 3]] offset&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 || UInt16 || &#039;&#039;&#039;[[#Section 4|Section 4]] offset&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Section 1 ==&lt;br /&gt;
This section defines &#039;&#039;&#039;M&#039;&#039;&#039; material entries.&lt;br /&gt;
&lt;br /&gt;
=== Material ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0xB2?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte || &#039;&#039;&#039;Texture reference ID&#039;&#039;&#039;. 0xFF if none.&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Section 2 ==&lt;br /&gt;
This section defines &#039;&#039;&#039;T&#039;&#039;&#039; 0x4-byte texture references.&lt;br /&gt;
&lt;br /&gt;
=== Texture Reference ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &#039;&#039;&#039;Padding&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || UInt24 || &#039;&#039;&#039;Asset link identifier&#039;&#039;&#039; of the texture.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Section 3 ==&lt;br /&gt;
This section defines &#039;&#039;&#039;B&#039;&#039;&#039; bone entries.&lt;br /&gt;
&lt;br /&gt;
=== Bone ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|- bgcolor=&amp;quot;#AAFFAA&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;If [[#Header|format]] = 7&#039;&#039;&#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x00 || Char[4] || &#039;&#039;&#039;Bone name/ID&#039;&#039;&#039;. Hardcoded to be 4 characters long.&lt;br /&gt;
|- bgcolor=&amp;quot;#FFAAAA&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Else&#039;&#039;&#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#FFDDDD&amp;quot;&lt;br /&gt;
| 0x00 || float[3] || &#039;&#039;&#039;XYZ position&#039;&#039;&#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#FFDDDD&amp;quot;&lt;br /&gt;
| 0x0C || Char[4] || &#039;&#039;&#039;Bone name/ID&#039;&#039;&#039;. Hardcoded to be 4 characters long.&lt;br /&gt;
|- bgcolor=&amp;quot;#FFDDDD&amp;quot;&lt;br /&gt;
| 0x10 || float[4] || &#039;&#039;&#039;Rotation&#039;&#039;&#039;, using quaternions.&lt;br /&gt;
|- bgcolor=&amp;quot;#FFDDDD&amp;quot;&lt;br /&gt;
| 0x20 || float[4] || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Section 4 ==&lt;br /&gt;
This section defines &#039;&#039;&#039;S&#039;&#039;&#039; * &#039;&#039;&#039;G&#039;&#039;&#039; shape entries.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32[&#039;&#039;&#039;S&#039;&#039;&#039;] || &#039;&#039;&#039;Shape offsets&#039;&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shape Header ===&lt;br /&gt;
Each shape starts with a 0x20 byte header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &#039;&#039;&#039;Material ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte || &#039;&#039;&#039;Flag&#039;&#039;&#039;: xxx&#039;&#039;&#039;A&#039;&#039;&#039; xxx&#039;&#039;&#039;B&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039;: &#039;&#039;&#039;Unknown&#039;&#039;&#039; (sets some value to 32)&lt;br /&gt;
* &#039;&#039;&#039;B&#039;&#039;&#039;: &#039;&#039;&#039;Unknown&#039;&#039;&#039;. 4 floats come after the end of the header.&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 3?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || {{Unknown-left|Number of &#039;&#039;&#039;Unknown Data 1&#039;&#039;&#039; (&#039;&#039;&#039;S?&#039;&#039;&#039;).}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the vertex data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06.5 || 3 bits || &#039;&#039;&#039;Number of vertex position sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the vertex positions&#039; index data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || 4 bits || &#039;&#039;&#039;Vertex position data bytes per index&#039;&#039;&#039; in the draw commands:&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039;: Data not used; skip&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: 2 bytes (UInt16)&lt;br /&gt;
* &#039;&#039;&#039;Anything else&#039;&#039;&#039;: 1 byte&lt;br /&gt;
|-&lt;br /&gt;
| 0x07.4 || 4 bits || &#039;&#039;&#039;Vertex position format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SByte&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UInt16&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Int16&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Float&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16 || Number of &#039;&#039;&#039;vertex positions&#039;&#039;&#039; (&#039;&#039;&#039;SP&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the normal data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A.5 || 3 bits || &#039;&#039;&#039;Number of normal sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the normals&#039; index data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B || 4 bits || &#039;&#039;&#039;Normal data bytes per index&#039;&#039;&#039; in the draw commands:&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039;: Data not used; skip&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: 2 bytes (UInt16)&lt;br /&gt;
* &#039;&#039;&#039;Anything else&#039;&#039;&#039;: 1 byte&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B.4 || 4 bits || &#039;&#039;&#039;Vertex normal format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SByte&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UInt16&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Int16&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Float&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt16 || Number of &#039;&#039;&#039;vertex normals&#039;&#039;&#039; (&#039;&#039;&#039;SN&#039;&#039;&#039;). Normal data is usually always attached to the vertex data, so it&#039;s the same as the number of vertices (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the color data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E.5 || 3 bits || &#039;&#039;&#039;Number of color sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the colors&#039; index data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F || 4 bits || &#039;&#039;&#039;Color data bytes per index&#039;&#039;&#039; in the draw commands:&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039;: Data not used; skip&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: 2 bytes (UInt16)&lt;br /&gt;
* &#039;&#039;&#039;Anything else&#039;&#039;&#039;: 1 byte&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F.4 || 4 bits || &#039;&#039;&#039;Vertex color format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || RGBA8&lt;br /&gt;
|-&lt;br /&gt;
| 1 || RGB8&lt;br /&gt;
|-&lt;br /&gt;
| 2 || RGBX8&lt;br /&gt;
|-&lt;br /&gt;
| 3 || RGBA4&lt;br /&gt;
|-&lt;br /&gt;
| 4 || RGBA6&lt;br /&gt;
|-&lt;br /&gt;
| 5 || RGB565&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt16 || Number of &#039;&#039;&#039;vertex colors&#039;&#039;&#039; (&#039;&#039;&#039;SC&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the UV data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12.5 || 3 bits || &#039;&#039;&#039;Number of UV sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the UVs&#039; index data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x13 || 4 bits || &#039;&#039;&#039;UV data bytes per index&#039;&#039;&#039; in the draw commands:&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039;: Data not used; skip&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: 2 bytes (UInt16)&lt;br /&gt;
* &#039;&#039;&#039;Anything else&#039;&#039;&#039;: 1 byte&lt;br /&gt;
|-&lt;br /&gt;
| 0x13.4 || 4 bits || &#039;&#039;&#039;UV format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SByte&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UInt16&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Int16&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Float&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt16 || Number of &#039;&#039;&#039;UVs&#039;&#039;&#039; (&#039;&#039;&#039;SU&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the bone ID data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x16.5 || 3 bits || &#039;&#039;&#039;Number of bone ID sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the bone ID data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x17 || 4 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. This value would correspond to the bone ID data bytes per index, but instead each entry corresponds to a vertex position. If bones are used, this value is always 1 (?)}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x17.4 || 4 bits || &#039;&#039;&#039;Bone ID format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SByte&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UInt16&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Int16&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Float&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt16 || Number of &#039;&#039;&#039;bone entries&#039;&#039;&#039; (&#039;&#039;&#039;SB&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A || 5 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Has something to do with the format of the weight data.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A.5 || 3 bits || &#039;&#039;&#039;Number of weight sections&#039;&#039;&#039;. Each section corresponds to one section data helper for the weight data.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B || 4 bits || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. This value would correspond to the weight data bytes per index, but instead each entry corresponds to a vertex position. Always 0 (?)}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B.4 || 4 bits || &#039;&#039;&#039;Weight format&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Byte&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SByte&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UInt16&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Int16&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Float&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Byte[2] || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E || UInt16 || &#039;&#039;&#039;Section Data Helpers offset&#039;&#039;&#039;. Usually 0x20 or 0x30. If the value is 0, the Section Data Helpers come either at 0x20 (if the last bit of the value at 0x2 from this header is 0) or at 0x30 (if the value is 1). This value is always aligned by 4 bytes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Section Data Helpers ===&lt;br /&gt;
These entries seem to contain the offsets of the first instance for each of the entries defined in the Shape Header. Commonly, the first 4-byte entry is always related to the unit data, and the second one to its first draw command unit ID. For weight/bone data, it only has one entry, as they are not referenced by the draw commands. All offsets are relative to the start of the Shape Header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Format of a section data helper&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &#039;&#039;&#039;Stride of an entire entry unit&#039;&#039;&#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || UInt24 || &#039;&#039;&#039;Data offset&#039;&#039;&#039; for the first instance of the entry. These offsets indicate the first entry for each entry type defined by the Shape Header, including overlapping entries that may share a common data array. For example, the vertex data array may contain normal and weight data attached to each vertex, but the entries for position, normal and weight data are separate. As for the offsets of the unit indices, it correlates to the specific part of the first draw command that references the entry type. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unknown Data 1 ===&lt;br /&gt;
This section follows directly after the Section Data Helpers and contains &#039;&#039;&#039;S?&#039;&#039;&#039; entries, seen in UInt16 format, unless specified somewhere in the Shape Header. The purpose of this section is unknown and it does not seem to be referenced by the Section Data Helpers.&lt;br /&gt;
&lt;br /&gt;
=== Bone References ===&lt;br /&gt;
This section follows directly after the Unknown Data 1 and contains &#039;&#039;&#039;SB&#039;&#039;&#039; entries, seen in Byte format, unless specified somewhere else in the Shape Header. This section seems to list the indices of the bones in order. This section does not seem to be referenced by the Section Data Helpers.&lt;br /&gt;
&lt;br /&gt;
=== Vertex Position Data ===&lt;br /&gt;
This section follows after the Bone References and contains &#039;&#039;&#039;SP&#039;&#039;&#039; entries; the format of each defined by the Section Header. Sometimes vertex positions, normals and weight/bone indices may be packed together in this section.&lt;br /&gt;
&lt;br /&gt;
=== Vertex Normal Data ===&lt;br /&gt;
&#039;&#039;&#039;SN&#039;&#039;&#039; vertex normal entries seem to come after the Vertex Position Data, if present; the format of each defined by the Section Header.&lt;br /&gt;
&lt;br /&gt;
=== Vertex Color Data ===&lt;br /&gt;
&#039;&#039;&#039;SC&#039;&#039;&#039; vertex color entries seem to come after the Vertex Normal Data, if present; the format of each defined by the Section Header.&lt;br /&gt;
&lt;br /&gt;
=== UV Data ===&lt;br /&gt;
&#039;&#039;&#039;SU&#039;&#039;&#039; UV entries seem to come after the Color Data, if present; the format of each defined by the Section Header.&lt;br /&gt;
&lt;br /&gt;
=== Draw Data ===&lt;br /&gt;
After the UV entries comes the Draw Data. This section starts with a 4-byte header:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Draw Data Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Always 0x80? Perhaps this value indicates that the data is made of Wii Graphics&#039; commands.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || UInt24 || &#039;&#039;&#039;Length of the draw commands&#039;&#039;&#039; in bytes. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Directly after the header there are the Wii Draw Commands.&lt;br /&gt;
&lt;br /&gt;
=== Bone Index Palette ===&lt;br /&gt;
After the Draw Data comes a section that contains a (compressed?) palette of bone indices, presumably linking position matrix IDs from the draw commands to multiple bone IDs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Unknown Data 2 Header&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || UInt16 || &#039;&#039;&#039;Length of the palette&#039;&#039;&#039; in bytes (&#039;&#039;&#039;P&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &#039;&#039;&#039;Number of bones&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte[&#039;&#039;&#039;P&#039;&#039;&#039; - 1] || {{Unknown-left|&#039;&#039;&#039;Unknown&#039;&#039;&#039;. Index data seems to be compressed/midex in some way?}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle AMS files:&lt;br /&gt;
* (none)&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqualead File Formats]]&lt;/div&gt;</summary>
		<author><name>Atlas</name></author>
	</entry>
</feed>