<?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=CMB_%28File_Format%29</id>
	<title>CMB (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=CMB_%28File_Format%29"/>
	<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=CMB_(File_Format)&amp;action=history"/>
	<updated>2026-05-06T14:12:47Z</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=CMB_(File_Format)&amp;diff=166&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=CMB_(File_Format)&amp;diff=166&amp;oldid=prev"/>
		<updated>2024-05-01T17:23:03Z</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;{{under-construction}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CMB&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;#039;itra &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039;odel &amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039;inary) is a file format used in [[Nintendo 3DS]] games such as &amp;#039;&amp;#039;The Legend of Zelda: Ocarina of Time 3D&amp;#039;&amp;#039; and &amp;#039;&amp;#039;The Legend of Zelda: Majora&amp;#039;s Mask 3D&amp;#039;&amp;#039;, and they contain 3D model and texture information.&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 0x20 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 || Char[4] || &amp;#039;&amp;#039;&amp;#039;File magic&amp;#039;&amp;#039;&amp;#039;. Always &amp;#039;&amp;#039;cmb &amp;#039;&amp;#039;&amp;amp;#x200C; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &amp;#039;&amp;#039;&amp;#039;File size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || {{Unknown-left|Probably a version number. 0x6 for &amp;#039;&amp;#039;OoT3D&amp;#039;&amp;#039; and 0xA for &amp;#039;&amp;#039;MM3D&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;. Always 0.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || String || Null-terminated string of the &amp;#039;&amp;#039;&amp;#039;model name&amp;#039;&amp;#039;&amp;#039; and padding.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Section Data ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int32 || &amp;#039;&amp;#039;&amp;#039;Number of indices&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#skl &amp;amp;#x200C;|skl ]]&amp;amp;#x200C; offset&amp;#039;&amp;#039;&amp;#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; | &amp;#039;&amp;#039;&amp;#039;If [[#Header|version]] = 0xA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x08 || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#qtrs|qtrs]] offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | &amp;#039;&amp;#039;&amp;#039;P  = current position&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#mats|mats]] offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; + 0x04 || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#tex &amp;amp;#x200C;|tex ]]&amp;amp;#x200C; offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; + 0x08 || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#sklm|sklm]] offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; + 0x0C || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#luts|luts]] offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; + 0x10 || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#vatr|vatr]] offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; + 0x14 || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#Index Buffer|Index Buffer]] offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; + 0x18 || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#Texture Data|Texture Data]] offset&amp;#039;&amp;#039;&amp;#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; | &amp;#039;&amp;#039;&amp;#039;If [[#Header|version]] = 0xA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; + 0x1C || UInt32 || &amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;. Always 0. Maybe padding?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== skl &amp;amp;#x200C; ==&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;skl &amp;#039;&amp;#039;&amp;#039;&amp;amp;#x200C; section contains skeleton information.&lt;br /&gt;
&lt;br /&gt;
=== 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;Section magic&amp;#039;&amp;#039;&amp;#039;. Always &amp;#039;&amp;#039;skl &amp;#039;&amp;#039;&amp;amp;#x200C; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Section size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &amp;#039;&amp;#039;&amp;#039;Number of [[#Bone|bones]]&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|}&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;
|-&lt;br /&gt;
| 0x00 || Int16 || &amp;#039;&amp;#039;&amp;#039;Bone index&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Int16 || &amp;#039;&amp;#039;&amp;#039;Parent bone index&amp;#039;&amp;#039;&amp;#039;. -1 if none.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Float[3] || &amp;#039;&amp;#039;&amp;#039;Bone scale&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Float[3] || &amp;#039;&amp;#039;&amp;#039;Bone rotation&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Float[3] || &amp;#039;&amp;#039;&amp;#039;Bone translation&amp;#039;&amp;#039;&amp;#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; | &amp;#039;&amp;#039;&amp;#039;If [[#Header|version]] = 0xA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|- bgcolor=&amp;quot;#DDFFDD&amp;quot;&lt;br /&gt;
| 0x28 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== qtrs ==&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;qtrs&amp;#039;&amp;#039;&amp;#039; section contains quadtree information. It&amp;#039;s only used on version 0xA.&lt;br /&gt;
&lt;br /&gt;
=== 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;Section magic&amp;#039;&amp;#039;&amp;#039;. Always &amp;#039;&amp;#039;qtrs&amp;#039;&amp;#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Section size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &amp;#039;&amp;#039;&amp;#039;Number of [[#Bounding Box|Bounding Boxes]]&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;. Always 0?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;. Always 0?}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Bounding Box ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Float[3] || &amp;#039;&amp;#039;&amp;#039;Minimum box position&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Float[3] || &amp;#039;&amp;#039;&amp;#039;Maximum box position&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || Int32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;. Usually -1.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Int32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;. Usually -1.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;. Always 0. Maybe padding?}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== mats ==&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;mats&amp;#039;&amp;#039;&amp;#039; section contains material information.&lt;br /&gt;
&lt;br /&gt;
=== 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;Section magic&amp;#039;&amp;#039;&amp;#039;. Always &amp;#039;&amp;#039;mats&amp;#039;&amp;#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;. Seems to be a size value, but it does not match with the section&amp;#039;s size.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || &amp;#039;&amp;#039;&amp;#039;Number of [[#Material|Materials]]&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Material ===&lt;br /&gt;
Each material has a [[#Header|header]], 3 [[#Texture Sampler|Texture Sampler]] sections, &amp;lt;!-- and more stuff that I can&amp;#039;t figure out, presumaly similar to BCRES materials --&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Header ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte[8] || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown flags&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Int32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Int32 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Texture Sampler ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || Int16 || &amp;#039;&amp;#039;&amp;#039;Texture ID&amp;#039;&amp;#039;&amp;#039;. -1 if none.&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || Int16 || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt16 || Texture &amp;#039;&amp;#039;&amp;#039;MinFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
* 0x2600 = GL_NEAREST&lt;br /&gt;
* 0x2601 = GL_LINEAR&lt;br /&gt;
* 0x2700 = GL_NEAREST_MIPMAP_NEAREST&lt;br /&gt;
* 0x2701 = GL_LINEAR_MIPMAP_NEAREST&lt;br /&gt;
* 0x2702 = GL_NEAREST_MIPMAP_LINEAR&lt;br /&gt;
* 0x2703 = GL_LINEAR_MIPMAP_LINEAR&lt;br /&gt;
* 0x8146 = GL_FILTER4_SGIS&lt;br /&gt;
* 0x8170 = GL_LINEAR_CLIPMAP_LINEAR_SGIX&lt;br /&gt;
* 0x8184 = GL_PIXEL_TEX_GEN_Q_CEILING_SGIX&lt;br /&gt;
* 0x8185 = GL_PIXEL_TEX_GEN_Q_ROUND_SGIX&lt;br /&gt;
* 0x8186 = GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX&lt;br /&gt;
* 0x848D = GL_NEAREST_CLIPMAP_NEAREST_SGIX&lt;br /&gt;
* 0x844E = GL_NEAREST_CLIPMAP_LINEAR_SGIX&lt;br /&gt;
* 0x844F = GL_LINEAR_CLIPMAP_NEAREST_SGIX&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 || UInt16 || Texture &amp;#039;&amp;#039;&amp;#039;MagFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
* 0x2600 = GL_NEAREST&lt;br /&gt;
* 0x2601 = GL_LINEAR&lt;br /&gt;
* 0x8097 = GL_LINEAR_DETAIL_SGIS&lt;br /&gt;
* 0x8098 = GL_LINEAR_DETAIL_ALPHA_SGIS&lt;br /&gt;
* 0x8099 = GL_LINEAR_DETAIL_COLOR_SGIS&lt;br /&gt;
* 0x80AD = GL_LINEAR_SHARPEN_SGIS&lt;br /&gt;
* 0x80AE = GL_LINEAR_SHARPEN_ALPHA_SGIS&lt;br /&gt;
* 0x80AF = GL_LINEAR_SHARPEN_COLOR_SGIS&lt;br /&gt;
* 0x8146 = GL_FILTER4_SGIS&lt;br /&gt;
* 0x8184 = GL_PIXEL_TEX_GEN_Q_CEILING_SGIX&lt;br /&gt;
* 0x8185 = GL_PIXEL_TEX_GEN_Q_ROUND_SGIX&lt;br /&gt;
* 0x8186 = GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt16[2] || Texture &amp;#039;&amp;#039;&amp;#039;Wrap Mode&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
* 0x2900 = GL_CLAMP&lt;br /&gt;
* 0x2901 = GL_REPEAT&lt;br /&gt;
* 0x812D = GL_CLAMP_TO_BORDER&lt;br /&gt;
* 0x812F = GL_CLAMP_TO_EDGE&lt;br /&gt;
* 0x8370 = GL_MIRRORED_REPEAT&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || Byte[12] || {{Unknown-left|&amp;#039;&amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;&amp;#039;.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Texture Combiner ===&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle CMB files:&lt;br /&gt;
* [https://github.com/xdanieldzd/N3DSCmbViewer N3DSCmbViewer], by xdanieldzd.&lt;br /&gt;
&lt;br /&gt;
[[Category:3DS File Formats]]&lt;/div&gt;</summary>
		<author><name>Wexos</name></author>
	</entry>
</feed>