<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wexosmk.xyz/index.php?action=history&amp;feed=atom&amp;title=NKM_%28File_Format%29</id>
	<title>NKM (File Format) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wexosmk.xyz/index.php?action=history&amp;feed=atom&amp;title=NKM_%28File_Format%29"/>
	<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=NKM_(File_Format)&amp;action=history"/>
	<updated>2026-04-07T18:46:03Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=NKM_(File_Format)&amp;diff=273&amp;oldid=prev</id>
		<title>Wexos: Imported from avsys wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=NKM_(File_Format)&amp;diff=273&amp;oldid=prev"/>
		<updated>2024-05-01T17:52:38Z</updated>

		<summary type="html">&lt;p&gt;Imported from avsys wiki&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;NKM is a file format that describes objects, routes, cameras and other information about a course in [[Mario Kart DS]].&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
== File Header ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &amp;#039;&amp;#039;&amp;#039;File magic&amp;#039;&amp;#039;&amp;#039;. Always &amp;#039;&amp;#039;NKMD&amp;#039;&amp;#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || &amp;#039;&amp;#039;&amp;#039;Version number&amp;#039;&amp;#039;&amp;#039;. Final tracks are always 3.7 (0x25 = 37). Beta tracks are 3.0 (0x1E = 30), 3.2 (0x20 = 32) or 3.4 (0x22 = 34). The files written with MKDS Course Modifier 4.0 beta 10 are 4.0 (0x28 = 40), because of the [[#Special (additional) Sections|additional information section]].&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &amp;#039;&amp;#039;&amp;#039;Size of header&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32[] || Section offsets.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The section offsets may point to the sections in any order, however, in original files they are always stored in the same order as presented in this documentation.&lt;br /&gt;
&lt;br /&gt;
== Section Header ==&lt;br /&gt;
Every sections except the [[#STAG|STAG section]] starts with the following 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;
!Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &amp;#039;&amp;#039;&amp;#039;Section magic&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Number of entries&amp;#039;&amp;#039;&amp;#039; in the section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OBJI ==&lt;br /&gt;
The OBJI Section describes object used in tracks. Each entry is a 0x3C byte structure as follows:&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 || Fx32[3] || 3D position vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Fx32[3] || 3D rotation vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Fx32[3] || 3D scale vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt16 || Object ID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x26 || UInt16 || Route ID. 0xFFFF if none.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt16[8] || 4 object-specific settings.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || UInt32 || Show in Time Trails. 1 if shown, 0 if not.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PATH ==&lt;br /&gt;
The PATH section describes paths used for [[#OBJI|objects]] and [[#CAME|cameras]]. Each entry is a 0x04 byte structure as follows:&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 || Route ID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || 1 if the route loops, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || &amp;#039;&amp;#039;&amp;#039;Number of points&amp;#039;&amp;#039;&amp;#039;. The points are stored in the [[#POIT|POIT]] section.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== POIT ==&lt;br /&gt;
The POIT section describes points that is used by the [[#PATH|PATH]] section. Each entry is a 0x14 byte structure as follows:&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 || Fx32[3] || 3D position vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte || Point index in the route.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D || Byte || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E || Int16 || Point duration. Not always used.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== STAG ==&lt;br /&gt;
The STAG section describes global information about the track. This is the only section that doesn&amp;#039;t start with the section header. The section is a 0x2C byte structure as follows:&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] || &amp;#039;&amp;#039;&amp;#039;Section magic&amp;#039;&amp;#039;&amp;#039;. Always &amp;#039;&amp;#039;STAG&amp;#039;&amp;#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || Track ID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || Amount of laps.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || Byte || 1 = fog enabled, 0 = disabled.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || Byte || Fog table generation mode.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B || Byte || Fog slope.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Fx32 || Fog distance.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || GXRgb || Fog color.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A || UInt16 || Fog alpha (0-15).&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || GXRgb || KCL color 1, the default color.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E || GXRgb || KCL color 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || GXRgb || KCL color 3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 || GXRgb || KCL color 4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Fx32 || Frustum far.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== KTPS ==&lt;br /&gt;
The KTPS section describes start positions of racers. Each entry is a 0x1C byte structure as follows:&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 || Fx32[3] || 3D position vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Fx32[3] || 3D rotation vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt16 || Padding (0xFFFF).&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A || UInt16 || &amp;#039;&amp;#039;&amp;#039;Start position index&amp;#039;&amp;#039;&amp;#039;. Only used in battle stages and mission mode. For regular courses it is 0xFFFF.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== KTPJ ==&lt;br /&gt;
The KTPJ section describes respawn positions. Each entry is a 0x20 byte structure as follows:&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 || Fx32[3] || 3D position vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Fx32[3] || 3D rotation vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt16 || Enemy position ID ([[#EPOI|EPOI]]).&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A || UInt16 || Item position ID ([[#IPOI|IPOI]]).&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || Respawn ID.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In tracks with version 0x1E, the Respawn ID does not exist. Tracks with version 0x1E, 0x20 and 0x22 (beta tracks) has a different rotation vector. The Y-rotation can be calculated by using:&lt;br /&gt;
 Atan2(Rotation.X, Rotation.Z)&lt;br /&gt;
&lt;br /&gt;
== KTP2 ==&lt;br /&gt;
The KTP2 section describes points you need to pass to let the lap count. Each entry is a 0x1C byte structure as follows:&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 || Fx32[3] || 3D position vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Fx32[3] || 3D rotation vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt16 || Padding (0xFFFF).&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A || UInt16 || &amp;#039;&amp;#039;&amp;#039;Index&amp;#039;&amp;#039;&amp;#039;. Always 0xFFFF.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== KTPC ==&lt;br /&gt;
The KTPC section describes cannons (or pipe) destination points. Pipes do only work in battle mode by default. Each entry is a 0x1C byte structure as follows:&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 || Fx32[3] || 3D position vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Fx32[3] || 3D rotation vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt16 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A || UInt16 || &amp;#039;&amp;#039;&amp;#039;Cannon index&amp;#039;&amp;#039;&amp;#039;. Used for the &amp;#039;Cannon Activator&amp;#039; collision type.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== KTPM ==&lt;br /&gt;
The KTPM sections describes points that you need to pass to let a mission succeed. Each entry is a 0x1C byte structure as follows:&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 || Fx32[3] || 3D position vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Fx32[3] || 3D rotation vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt16 || Padding (0xFFFF).&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A || UInt16 || &amp;#039;&amp;#039;&amp;#039;Index&amp;#039;&amp;#039;&amp;#039; (last start position index + 1 is the first one).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CPOI ==&lt;br /&gt;
The CPOI section describes check points. Each entry is a 0x24 byte structure as follows:&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 || Fx32[3] || 2D position vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Fx32[3] || 2D position vector 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Fx32 || &amp;#039;&amp;#039;&amp;#039;Sinus&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || Fx32 || &amp;#039;&amp;#039;&amp;#039;Cosinus&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Fx32 || Distance&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int16 || &amp;#039;&amp;#039;&amp;#039;Section data 1&amp;#039;&amp;#039;&amp;#039;. Has to do with different sections and such, but it is still very unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E || Int16 || &amp;#039;&amp;#039;&amp;#039;Section data 2&amp;#039;&amp;#039;&amp;#039;. Has to do with different sections and such, but it is still very unknown.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt16 || Key ID. 0x0000 = lap counter, 0x0001 &amp;amp;ndash; 0xFFFE = key, 0xFFFF = no key.&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 || Byte || Respawn ID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x23 || Byte || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CPAT ==&lt;br /&gt;
The CPAT section describes [[#CPOI|CPOI]] grouping. Each entry is a 0x0C byte structure as follows:&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 || Point start.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || Point length.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte[3] || &amp;#039;&amp;#039;&amp;#039;Next group&amp;#039;&amp;#039;&amp;#039;. The indicies of up to 3 the previous [[#CPOI|CPOI]] groups entries may have followed. Unneeded slots are set to value 0xFF.&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || Byte[3] || &amp;#039;&amp;#039;&amp;#039;Previous group&amp;#039;&amp;#039;&amp;#039;. The indicies of up to 3 next [[#CPOI|CPOI]] group entries to follow. Unneeded slots are set to value 0xFF.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || Int16 || Section order.&lt;br /&gt;
|}\t&lt;br /&gt;
&lt;br /&gt;
== IPOI ==&lt;br /&gt;
The IPOI section describes item points; the routes of items such as red shells. Each entry is a 0x14 byte structure as follows:&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 || Fx32[3] || 3D position vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Fx32 || Point scale.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IPAT ==&lt;br /&gt;
The IPAT section describes [[#IPOI|IPOI]] grouping. Each entry is a 0x0C byte structure as follows:&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 || Point start.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || Point length.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte[3] || &amp;#039;&amp;#039;&amp;#039;Next group&amp;#039;&amp;#039;&amp;#039;. The indicies of up to 3 the previous [[#IPOI|IPOI]] groups entries may have followed. Unneeded slots are set to value 0xFF.&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || Byte[3] || &amp;#039;&amp;#039;&amp;#039;Previous group&amp;#039;&amp;#039;&amp;#039;. The indicies of up to 3 next [[#IPOI|IPOI]] group entries to follow. Unneeded slots are set to value 0xFF.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || Int16 || Section order.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== EPOI ==&lt;br /&gt;
The EPOI section describes enemy points; the routes that the CPUs take. Each entry is a 0x18 byte structure as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Fx32[3] || 3D position vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Fx32 || Point scale.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int16 || Drifting.&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || UInt16 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== EPAT ==&lt;br /&gt;
The EPAT section describes [[#EPOI|EPOI]] grouping. Each entry is a 0x0C byte structure as follows:&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 || Point start.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || Point length.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte[3] || &amp;#039;&amp;#039;&amp;#039;Next group&amp;#039;&amp;#039;&amp;#039;. The indicies of up to 3 the previous [[#EPOI|EPOI]] groups entries may have followed. Unneeded slots are set to value 0xFF.&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || Byte[3] || &amp;#039;&amp;#039;&amp;#039;Previous group&amp;#039;&amp;#039;&amp;#039;. The indicies of up to 3 next [[#EPOI|EPOI]] group entries to follow. Unneeded slots are set to value 0xFF.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || Int16 || Section order .&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MEPO ==&lt;br /&gt;
The MEPO section describes enemy points used in minigames. Each entry is a 0x18 byte structure as follows:&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 || Fx32[3] || 3D position vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Fx32 || Point scale.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || Drifting.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MEPA ==&lt;br /&gt;
The MEPA section describes [[#MEPO|MEPO]] grouping used in minigames. Each entry is a 0x14 byte structure as follows:&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 || Point start.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || UInt16 || Point length.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Byte[8] || &amp;#039;&amp;#039;&amp;#039;Next group&amp;#039;&amp;#039;&amp;#039;. The indicies of up to 8 the previous [[#MEPO|MEPO]] groups entries may have followed. Unneeded slots are set to value 0xFF.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Byte[8] || &amp;#039;&amp;#039;&amp;#039;Previous group&amp;#039;&amp;#039;&amp;#039;. The indicies of up to 8 next [[#MEPO|MEPO]] group entries to follow. Unneeded slots are set to value 0xFF.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== AREA ==&lt;br /&gt;
The AREA section describes areas, mosty used for determine which camera to use. Each entry is a 0x48 byte structure as follows:&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 || Fx32[3] || 3D position vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Fx32[3] || 3D length vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Fx32[3] || X-vector?.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Fx32[3] || Y-vector?.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || Fx32[3] || Z-vector?.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || Int16 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x3E || Int16 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || Int16 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x42 || Byte || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x43 || Byte || Camera ID.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44 || Byte || Area type.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Camera.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Water fall sound area.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x45 || Byte || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x46 || UInt16 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CAME ==&lt;br /&gt;
The CAME section describes cameras used in tracks. Each entry is a 0x4C byte structure as follows:&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 || Fx32[3] || 3D position vector 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Fx32[3] || 3D rotation vector.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Fx32[3] || 3D position vector 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Fx32[3] || 3D position vector 3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || Int16 || FOV begin.&lt;br /&gt;
|-&lt;br /&gt;
| 0x32 || Fx16 || FOV begin sine.&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || Fx16 || FOV begin cosine.&lt;br /&gt;
|-&lt;br /&gt;
| 0x36 || Int16 || FOV end.&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || Fx16 || FOV end sine.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3A || Fx16 || FOV end cosine.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C || UInt16 || Camera zoom.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3E || UInt16 || Camera type.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || After race camera&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039; (with route).}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Intro camera (top screen).&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Intro camera (bottom screen).&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || Battle mode camera.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Mission finish camera.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || UInt16 || Linked route (0xFFFF if none).&lt;br /&gt;
|-&lt;br /&gt;
| 0x42 || UInt16 || Route speed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x44 || UInt16 || Point speed.&lt;br /&gt;
|-&lt;br /&gt;
| 0x46 || UInt16 || Camera duration in 1/60 second units.&lt;br /&gt;
|-&lt;br /&gt;
| 0x48 || UInt16 || Next camera (0xFFFF if this is the last one).&lt;br /&gt;
|-&lt;br /&gt;
| 0x4A || Byte || &amp;#039;&amp;#039;&amp;#039;Intro pan first camera indicator&amp;#039;&amp;#039;&amp;#039; (0x00 = none, 0x01 = top screen, 0x02 = bottom screen).&lt;br /&gt;
|-&lt;br /&gt;
| 0x4B || Byte || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;. 1 if camera type = 5.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== NKMI ==&lt;br /&gt;
Since MKDS Course Modifier 4.0 beta 10, some additional information may be stored in the NKM file. The NKMI section describes some information about the track itself, like the name and the version etc.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset !! Size !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || 0x04 || Char[4] || &amp;#039;&amp;#039;&amp;#039;Section magic&amp;#039;&amp;#039;&amp;#039;. NKMI in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || 0x04 || UInt32 || Section length.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || a || StringNT || Track name.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 + a || b || StringNT || Author.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 + a + b || c || StringNT || Version.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 + a + b + c || d || StringNT || &amp;#039;&amp;#039;&amp;#039;Latest edit date&amp;#039;&amp;#039;&amp;#039;. Format: dd/MM/yyyy HH:mm:ss.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle NKM files:&lt;br /&gt;
* [[Every File Explorer]], by Gericom&lt;br /&gt;
* [https://www.romhacking.net/utilities/1304 Mario Kart Toolbox], by Gericom&lt;br /&gt;
* [http://www.dshack.wiki/index.php/MKDS_Course_Modifier MKDS Course Modifier], by Gericom&lt;br /&gt;
&lt;br /&gt;
[[Category:Mario Kart DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Wexos</name></author>
	</entry>
</feed>