<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.3dbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=M-1</id>
	<title>3dbrew - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.3dbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=M-1"/>
	<link rel="alternate" type="text/html" href="https://www.3dbrew.org/wiki/Special:Contributions/M-1"/>
	<updated>2026-04-29T18:30:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=CGFX&amp;diff=20770</id>
		<title>CGFX</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=CGFX&amp;diff=20770"/>
		<updated>2018-07-31T05:42:58Z</updated>

		<summary type="html">&lt;p&gt;M-1: /* Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CGFX is a container format used to store graphics resources. It can contain 3D models, textures and animation data.&lt;br /&gt;
&lt;br /&gt;
== CGFX ==&lt;br /&gt;
&lt;br /&gt;
CGFX header :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Magic &amp;quot;CGFX&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x2&lt;br /&gt;
| Byte order mark: FFFE (little endian) or FEFF (big endian)&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 0x2&lt;br /&gt;
| CGFX header size&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Revision&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| File size (bytes)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Number of entries&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A typical CGFX file contains two main entries, beginning directly after the CGFX header: DATA and IMAG.&lt;br /&gt;
&lt;br /&gt;
== DATA ==&lt;br /&gt;
&lt;br /&gt;
DATA contains a list of DICT references.&lt;br /&gt;
&lt;br /&gt;
DATA header (for N = 0..15) :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Magic &amp;quot;DATA&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| DATA Size (in bytes)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 +(N*8)&lt;br /&gt;
| 0x4&lt;br /&gt;
| Number of entries in DICT N&lt;br /&gt;
|-&lt;br /&gt;
| 0xC +(N*8)&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to DICT N&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The DATA header contains the entry counts and offsets for each DICT entry. The number of entries can vary (probably based on the version?), but are always in the following order. Any unused entries are zeroed.&lt;br /&gt;
&lt;br /&gt;
Typical entries:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! N&lt;br /&gt;
! Type&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Models&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Textures&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| LUTS (Material/Color/Shader look-up tables?)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Materials&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Shaders&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Cameras&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Lights&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Fog&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Environments&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Skeleton animations&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Texture animations&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Visibility animations&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Camera animations&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Light animations&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Emitters&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DICT ==&lt;br /&gt;
&lt;br /&gt;
DICTs are generic structures used to store values (and associate them to a key ?). A DICT header is 0x1C bytes long.&lt;br /&gt;
&lt;br /&gt;
DICT header :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Magic &amp;quot;DICT&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| DICT size (in bytes)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Number of entries&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| Unknown. Seems to be shifted left by 4 bits in the source.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x2&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 0xA&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
DICT entry:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x2&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 0x2&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to symbol&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to object&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CMDL ==&lt;br /&gt;
&lt;br /&gt;
CMDL is used to describe a 3D model.&lt;br /&gt;
&lt;br /&gt;
CMDL Header :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Flags (bit 7: hasSkeletonSobj)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Magic &amp;quot;CMDL&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to model name&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x18&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Number of entries in Animation Types DICT&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to Animation Types DICT&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0xC&lt;br /&gt;
| Global scale vector (3 floats : x, y, z)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x18&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| 0x30&lt;br /&gt;
| Matrix 1&lt;br /&gt;
|-&lt;br /&gt;
| 0x84&lt;br /&gt;
| 0x30&lt;br /&gt;
| Matrix 2&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Number of Vertex Info SOBJ entries&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to Vertex Info SOBJ list&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Number of MTOB DICT entries&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to MTOB DICT&lt;br /&gt;
|-&lt;br /&gt;
| 0xC4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Number of Vertex Info SOBJ entries&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to Vertex Info SOBJ list&lt;br /&gt;
|-&lt;br /&gt;
| 0xCC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Number of Unknown DICT entries&lt;br /&gt;
|-&lt;br /&gt;
| 0xD0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to Unknown DICT&lt;br /&gt;
|-&lt;br /&gt;
| 0xD4&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Skeleton Info SOBJ offset (self-relative) [only present if flag bit 7 is set]&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8+[0xB8]&lt;br /&gt;
| 0x4*N&lt;br /&gt;
| Vertex Info SOBJ self-relative offset list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A CMDL section refers to outside data; it can not be considered separately from the rest of the CGFX file.&lt;br /&gt;
The second DICT in the CMDL section contains offsets to MTOB objects.&lt;br /&gt;
&lt;br /&gt;
== SOBJ ==&lt;br /&gt;
&lt;br /&gt;
SOBJ structures can be used to describe 3D objects that are part of the model. If such is the case then they will follow this structure :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Flags (bit 4: model; bit 1: skeleton)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Magic &amp;quot;SOBJ&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown symbol offset (self-relative)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0xC&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to Unknown1 (appears to hold array of floats) ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0xC&lt;br /&gt;
| Mesh position offset (X/Y/Z floats)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Face groups count&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to face groups offset array&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0x4&lt;br /&gt;
| Vertex groups count&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to vertex groups offset array&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown offset (self-relative) ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Face groups:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Bone groups count&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to UInt32 bone group IDs array&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown2 count&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to Unknown2 offset array&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Unknown2:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Face group descriptor count&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to face array descriptors offset array&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown3 count&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to UInt32 Unknown3 array&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x8&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Face array descriptor:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Flags (bit 1: vertex index format: 0=byte, 1=short)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Vertex index array size (in bytes)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to vertex index array&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vertex groups come in a number of different formats. Typically the first vertex group entry is of format 0x40000002 and contains the actual vertex array.&lt;br /&gt;
&lt;br /&gt;
Vertex group format 0x40000002:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Flags (0x40000002)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| Vertex array size (in bytes)&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to vertex array&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x4&lt;br /&gt;
| Vertex stride/size in bytes (see below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown3 count&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to component declaration offset array&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each mesh&#039;s primary vertex group contains an array of vertex component declaration objects, defining the order and parameters for each of a vertex&#039;s components.&lt;br /&gt;
&lt;br /&gt;
Vertex component declaration:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Flags (0x40000001)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Vertex component type (see below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 0x1&lt;br /&gt;
| Component data type (see below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x25&lt;br /&gt;
| 0x1&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x26&lt;br /&gt;
| 0x1&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x27&lt;br /&gt;
| 0x1&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Number of values in this component (e.g. XYZ-&amp;gt;3, UV-&amp;gt;2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Multiplier for this component&#039;s values (float)&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x4&lt;br /&gt;
| Position of this component within vertex stride&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vertex formats with bone data support multiple bone assignment. In this case, the sum of all bone weights is 0x64.&lt;br /&gt;
&lt;br /&gt;
Vertex component types:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| Normal&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| ? (unobserved)&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| Color&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| UV0&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| UV1&lt;br /&gt;
|-&lt;br /&gt;
| 0x06&lt;br /&gt;
| ? (unobserved, possibly UV2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x07&lt;br /&gt;
| Weight&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| Index&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vertex component data types:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| sbyte&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| byte&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| short&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| ? (unobserved, possibly ushort)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| ? (unobserved, possibly int)&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| ? (unobserved, possibly uint)&lt;br /&gt;
|-&lt;br /&gt;
| 0x06&lt;br /&gt;
| float&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vertex components are stored as one of the above data types, and the vertex component declaration contains a multiplier that adapts the values to the float version which the game will use.&lt;br /&gt;
For example, color RGBA values are stored as bytes, and the multiplier converts them from 0-255 to 0-1.0, and position components using short values are normalized via the multiplier to take advantage of the entire short value range.&lt;br /&gt;
&lt;br /&gt;
== TXOB ==&lt;br /&gt;
&lt;br /&gt;
TXOBs are contained within MTOBs. They can describe textures; if such is the case, then their structure is as follows :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Flags&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| Magic &amp;quot;TXOB&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x8&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self-relative) to symbol&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Texture height&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Texture width&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x4&lt;br /&gt;
| Mipmap levels&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x4&lt;br /&gt;
| Texture format ID (see table below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| 0x4&lt;br /&gt;
| Texture height (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x4&lt;br /&gt;
| Texture width (?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x4&lt;br /&gt;
| Texture data size&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x4&lt;br /&gt;
| Texture data offset (self-relative)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Texture format ID&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
|0x0&lt;br /&gt;
|RGBA8&lt;br /&gt;
|-&lt;br /&gt;
|0x1&lt;br /&gt;
|RGB8&lt;br /&gt;
|-&lt;br /&gt;
|0x2&lt;br /&gt;
|RGBA5551&lt;br /&gt;
|-&lt;br /&gt;
|0x3&lt;br /&gt;
|RGB565&lt;br /&gt;
|-&lt;br /&gt;
|0x4&lt;br /&gt;
|RGBA4&lt;br /&gt;
|-&lt;br /&gt;
|0x5&lt;br /&gt;
|LA8&lt;br /&gt;
|-&lt;br /&gt;
|0x6&lt;br /&gt;
|HILO8&lt;br /&gt;
|-&lt;br /&gt;
|0x7&lt;br /&gt;
|L8&lt;br /&gt;
|-&lt;br /&gt;
|0x8&lt;br /&gt;
|A8&lt;br /&gt;
|-&lt;br /&gt;
|0x9&lt;br /&gt;
|LA4&lt;br /&gt;
|-&lt;br /&gt;
|0xA&lt;br /&gt;
|L4&lt;br /&gt;
|-&lt;br /&gt;
|0xB&lt;br /&gt;
|A4 ?&lt;br /&gt;
|-&lt;br /&gt;
|0xC&lt;br /&gt;
|ETC1 (see notes below)&lt;br /&gt;
|-&lt;br /&gt;
|0xD&lt;br /&gt;
|ETC1A4 ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Every texture format has its texture data divided into 8x8 tiles. See [[SMDH#Icon_graphics|SMDH]] for more information.&lt;br /&gt;
ETC1 is a compressed texture format which compresses blocks of 4x4 pixels into u64s. These u64 are traditionally stored in big endian; however, nintendo&#039;s implementation stores them in little endian. ETC1 textures are stored in 8x8 tiles; decompressed 4x4 therefore have to be organized accordingly. See [https://gist.github.com/smealum/8897237] for implementation example.&lt;br /&gt;
&lt;br /&gt;
== LUTS ==&lt;br /&gt;
&lt;br /&gt;
Appears to contain color lookup tables possibly for use with shaders.&lt;br /&gt;
&lt;br /&gt;
LUTS Header:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Magic &amp;quot;LUTS&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x2&lt;br /&gt;
| Seems to adhere to powers of 2 (width/height/flags?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 0x2&lt;br /&gt;
| Seems to adhere to powers of 2 (width/height/flags?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x8&lt;br /&gt;
| all zeroes ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset to DICT (self-relative) ?&lt;br /&gt;
|}&lt;br /&gt;
All observed instances have an otherwise unreferenced DICT section immediately afterward (the last LUTS value being a 0x4, which may describe the relative position of that DICT), which appears to describe material specularity.&lt;br /&gt;
&lt;br /&gt;
== Skeleton data ==&lt;br /&gt;
&lt;br /&gt;
Skeleton data is stored in an array. Each entry is 0xE0 bytes in length and organized this way :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x4&lt;br /&gt;
| Offset (self relative) to name symbol&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 0x4&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x4&lt;br /&gt;
| Joint ID&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 0x4&lt;br /&gt;
| Parent joint ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 0x4&lt;br /&gt;
| Signed offset (self-relative) to parent joint&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0xC&lt;br /&gt;
| Angle vector (floats, x, y, z)&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| 0xC&lt;br /&gt;
| Position vector (floats, x, y, z)&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| 0x30&lt;br /&gt;
| Transformation matrix (4x3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x74&lt;br /&gt;
| 0x30&lt;br /&gt;
| Identity matrix ? (4x3)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each entry stores the joint transformation data twice; once as angle/position vectors and once as a transformation matrix. Each entry also stores a second matrix which appears to always be identity. (?)&lt;br /&gt;
&lt;br /&gt;
== CANM ==&lt;br /&gt;
&lt;br /&gt;
CANMs are used to store skeletal animation data.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
* Every File Explorer&lt;br /&gt;
* Ohana3DS and its forks&lt;br /&gt;
* SPICA&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Another CGFX Format Description (Archived Page): [https://web.archive.org/web/20150511211029/http://florian.nouwt.com/wiki/index.php/CGFX_(File_Format) http://florian.nouwt.com/wiki/index.php/CGFX_(File_Format)]&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>M-1</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Homebrew_Exploits&amp;diff=20076</id>
		<title>Homebrew Exploits</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Homebrew_Exploits&amp;diff=20076"/>
		<updated>2017-06-11T13:25:51Z</updated>

		<summary type="html">&lt;p&gt;M-1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Payload==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Works on latest fw&lt;br /&gt;
!  Name&lt;br /&gt;
!  Description&lt;br /&gt;
!  Supported firmwares&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: DarkOrange&amp;quot; | Only new3ds(XL)&lt;br /&gt;
| [https://smealum.github.io/3ds/ *hax payload]&lt;br /&gt;
| Booted by all of the below non-sysmodule exploits.&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-7&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.3.0-36&#039;&#039;&#039;, &#039;&#039;&#039;11.4.0-37&#039;&#039;&#039; only new3ds(XL).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the rest of this page, &amp;quot;Supported firmwares&amp;quot; refers to the exploit &#039;&#039;itself&#039;&#039;, not whether *hax payload supports it.&lt;br /&gt;
&lt;br /&gt;
==Standalone Homebrew Launcher Exploits==&lt;br /&gt;
The following homebrew exploits can be executed on a previously un-exploited system. &#039;&#039;Please&#039;&#039; see the above Payload section regarding what &amp;quot;Supported firmwares&amp;quot; indicates &#039;&#039;exactly&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Works on latest fw&lt;br /&gt;
!  Name&lt;br /&gt;
!  Supported firmwares&lt;br /&gt;
!  Requirements&lt;br /&gt;
!  Author&lt;br /&gt;
!  Install&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [[ninjhax|Ninjhax 1.1b]]&lt;br /&gt;
| From &#039;&#039;&#039;4.0.0-7&#039;&#039;&#039; up to and including &#039;&#039;&#039;9.2.0-20&#039;&#039;&#039;.&lt;br /&gt;
| A cartridge or eShop version (JPN-only) of &amp;quot;Cubic Ninja&amp;quot;.&lt;br /&gt;
| smea&lt;br /&gt;
| [http://smealum.net/ninjhax/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [[ninjhax|Ninjhax 2.x]]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-7&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.3.0-36&#039;&#039;&#039;, &#039;&#039;&#039;11.4.0-37&#039;&#039;&#039; only new3ds(XL).&lt;br /&gt;
|  A cartridge or eShop version (JPN-only, not available anymore for purchase) of &amp;quot;Cubic Ninja&amp;quot;.&lt;br /&gt;
| smea&lt;br /&gt;
| [https://smealum.github.io/ninjhax2/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [http://plutooo.github.io/freakyhax/ freakyhax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-7&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.3.0-36&#039;&#039;&#039;, &#039;&#039;&#039;11.4.0-37&#039;&#039;&#039; only new3ds(XL).&lt;br /&gt;
|  A cartridge or eShop version (USA/EUR/JAP, not available anymore for purchase) of &amp;quot;Freakyform Deluxe&amp;quot;.&lt;br /&gt;
| plutoo&lt;br /&gt;
| [http://plutooo.github.io/freakyhax/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [http://plutooo.github.io/smilehax/ smilehax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-7&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.0.0-33&#039;&#039;&#039;&lt;br /&gt;
| SmileBASIC (JPN all versions up to 3.32 excluded, USA 3.31 only)&lt;br /&gt;
| plutoo&lt;br /&gt;
| [http://plutooo.github.io/smilehax/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [http://mrnbayoh.github.io/basicsploit/ BASICSploit]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-7&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.0.0-33&#039;&#039;&#039;&lt;br /&gt;
| SmileBASIC (USA all versions)&lt;br /&gt;
| MrNbaYoh&lt;br /&gt;
| [http://mrnbayoh.github.io/basicsploit/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [[smashbroshax|smashbroshax]] (beaconhax)&lt;br /&gt;
| (New 3DS only) From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.4.0-37&#039;&#039;&#039;.&lt;br /&gt;
| Super Smash Bros 3DS (full-game) and a way to broadcast raw wifi beacons. The demo (prior to the updated November 2015 [https://github.com/yellows8/3ds_smashbroshax version]) isn&#039;t usable with the *hax payloads. Game-version v1.1.3 fixed the vuln used with this, see the repo for a workaround for that.&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
| [https://github.com/yellows8/3ds_smashbroshax Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [[browserhax]]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-2&#039;&#039;&#039; to &#039;&#039;&#039;11.0.0-33&#039;&#039;&#039;&lt;br /&gt;
Note that the browser-version-check bypass is only usable prior to [[10.7.0-32]].&lt;br /&gt;
| A USA, EUR, JPN, or KOR system.&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
| [http://yls8.mtheall.com/3dsbrowserhax.php Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [https://github.com/svanheulen/genhax genhax]&lt;br /&gt;
| (New 3DS only) From &#039;&#039;&#039;9.9.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.2.0-X&#039;&#039;&#039;.&lt;br /&gt;
| A gamecard or eShop-install of Monster Hunter X (JPN only), and the DLC encryption key (see installer instructions). &#039;&#039;&#039;Note: the secondary exploit still works, see bellow&#039;&#039;&#039;&lt;br /&gt;
| svanheulen&lt;br /&gt;
| [https://github.com/svanheulen/genhax_installer Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [https://github.com/nedwill/soundhax soundhax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-13&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.3.0-36&#039;&#039;&#039;.&lt;br /&gt;
| A USA, EUR, JPN or KOR system.&lt;br /&gt;
| nedwill&lt;br /&gt;
| [http://soundhax.com Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: darkorange&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/MrNbaYoh/doodlebomb doodlebomb]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039;(?) up to and including &#039;&#039;&#039;11.4.0-X&#039;&#039;&#039;.&lt;br /&gt;
| An eShop-install of Swapdoodle (version 1.1.1 or lower). As of 2017-4-26, version 1.1.2 was released, blocking outdated app version from sending or receiving messages.&lt;br /&gt;
| MrNbaYoh&lt;br /&gt;
| [https://mrnbayoh.github.io/doodlebomb/ Install]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that ninjhax 1.x is still not obsolete. Even though ninjhax 2.x can be run on 9.3+, this was made possible (amongst other things) by sacrificing the memory remapping exploit used in ninjhax 1.x (rohax). Therefore, things like JIT engines for emulators can only be supported on ninjhax 1.x. Furthermore, ninjhax 2.x does not run on system versions below 9.0.0-X, while ninjhax 1.x does.&lt;br /&gt;
&lt;br /&gt;
==Secondary Exploits==&lt;br /&gt;
Installation of these exploits requires a previously exploited system to install. After installation, they can be used on their own. &#039;&#039;Please&#039;&#039; see the above Payload section regarding what &amp;quot;Supported firmwares&amp;quot; indicates &#039;&#039;exactly&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Works on latest fw&lt;br /&gt;
!  Name&lt;br /&gt;
!  Supported firmwares&lt;br /&gt;
!  Requirements&lt;br /&gt;
!  Author&lt;br /&gt;
!  Install&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [[ironhax]]&lt;br /&gt;
| From &#039;&#039;&#039;9.5.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;10.3.0-X&#039;&#039;&#039;, for &#039;&#039;&#039;X&#039;&#039;&#039; up to and including 28.&lt;br /&gt;
| A copy of &amp;quot;Ironfall: Invasion&amp;quot; downloaded from eShop before August 11th, 2015. Note the updated version that was released on October 13th, 2015 is not supported.&lt;br /&gt;
| smea&lt;br /&gt;
| [http://smealum.github.io/3ds/ Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [http://vegaroxas.github.io/ steelhax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.3.0-X&#039;&#039;&#039;, for &#039;&#039;&#039;X&#039;&#039;&#039; up to and including 36.&lt;br /&gt;
| A copy of Steel Diver: Sub Wars&lt;br /&gt;
| Vegaroxas&lt;br /&gt;
| [https://github.com/VegaRoXas/vegaroxas.github.io/raw/master/files/steelhax-installer.zip Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/yellows8/oot3dhax oot3dhax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.3.0-X&#039;&#039;&#039;, for &#039;&#039;&#039;X&#039;&#039;&#039; up to and including 36.&lt;br /&gt;
| A gamecard or eShop-install of Legend of Zelda: Ocarina of Time 3D. Besides using the installer app, writing raw saveimages with a save dongle for example is another option. Before compression was introduced in the 2016-7-18 release, the size of the *hax payload meant the exploit can&#039;t coexist with regular saves on a physical version of the game.&lt;br /&gt;
| Yellows8 / smea et al.&lt;br /&gt;
| See [https://smealum.github.io/3ds/ here].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [[menuhax]]&lt;br /&gt;
| JPN/USA/EUR: From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.2.0-X&#039;&#039;&#039;.&lt;br /&gt;
KOR: From &#039;&#039;&#039;9.6.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.2.0-X&#039;&#039;&#039;.&lt;br /&gt;
| JPN/USA/EUR: Having created [[Home_Menu#Home_Menu_Theme_SD_ExtData|theme extdata]] through opening the official theme selector at least once.&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
| [https://github.com/yellows8/3ds_homemenuhax/releases Download]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/shinyquagsire23/supermysterychunkhax supermysterychunkhax]&lt;br /&gt;
| From &#039;&#039;&#039;9.9.0-X&#039;&#039;&#039; (USA/JPN) / &#039;&#039;&#039;10.2.0-X&#039;&#039;&#039; (EUR) up to and including &#039;&#039;&#039;11.3.0-X&#039;&#039;&#039;, &#039;&#039;&#039;11.4.0-X&#039;&#039;&#039; only new3ds(XL).&lt;br /&gt;
| A gamecard or eShop-install of Pokémon Super Mystery Dungeon.&lt;br /&gt;
| Shiny Quagsire / SALT team&lt;br /&gt;
| [https://smd.salthax.org/ Install].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [https://github.com/shinyquagsire23/v_hax (v*)hax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.0.0-X&#039;&#039;&#039;, for &#039;&#039;&#039;X&#039;&#039;&#039; up to and including 33.&lt;br /&gt;
Note that &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; is only required for the Homebrew Launcher - the game itself only requires &#039;&#039;&#039;2.1.0-X&#039;&#039;&#039; for primitive userland code execution.&lt;br /&gt;
| A copy of VVVVVV downloaded after March 2012 (v1). v1.1 patches out the overflow vulnerability used by (v*)hax.&lt;br /&gt;
| Shiny Quagsire / SALT team&lt;br /&gt;
| [https://vvvvvv.salthax.org/ Install].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/Dazzozo/humblehax humblehax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; (USA/EUR) up to and including &#039;&#039;&#039;11.2.0-X&#039;&#039;&#039;, for &#039;&#039;&#039;X&#039;&#039;&#039; up to and including 35.&lt;br /&gt;
| An eShop-install of Citizens of Earth (either v1 or v2), featured in the Humble &amp;quot;Friends of Nintendo&amp;quot; Bundle.&lt;br /&gt;
| Dazzozo / SALT team&lt;br /&gt;
| [https://citizens.salthax.org/ Install].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [http://mrnbayoh.github.io/basehaxx/ basehaxx]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.1.0-X&#039;&#039;&#039;, for &#039;&#039;&#039;X&#039;&#039;&#039; up to and including 34.&lt;br /&gt;
| A gamecard or eShop-install of Pokémon Omega Ruby / Alpha Sapphire.&lt;br /&gt;
| MrNbaYoh&lt;br /&gt;
| [http://mrnbayoh.github.io/basehaxx/ install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/yellows8/stickerhax stickerhax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.4.0-X&#039;&#039;&#039;.&lt;br /&gt;
| A gamecard or eShop-install of Paper Mario: Sticker Star.&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
| [https://github.com/yellows8/stickerhax Here]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/svanheulen/genhax genhax]&lt;br /&gt;
| (New 3DS only) From &#039;&#039;&#039;9.9.0-X&#039;&#039;&#039;(JPN) or &#039;&#039;&#039;10.3.0-X&#039;&#039;&#039;(EUR/USA) up to and including &#039;&#039;&#039;11.3.0-X&#039;&#039;&#039;.&lt;br /&gt;
| A gamecard or eShop-install of Monster Hunter Generations or Monster Hunter X (without the game updates installed), and an internet connection during installation.&lt;br /&gt;
| svanheulen&lt;br /&gt;
| [https://github.com/svanheulen/genhax_installer Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: lightgreen&amp;quot; | Yes&lt;br /&gt;
| [https://github.com/MrNbaYoh/painthax painthax]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.3.0-X&#039;&#039;&#039;.&lt;br /&gt;
| An eShop-install of PixelPaint.&lt;br /&gt;
| MrNbaYoh&lt;br /&gt;
| [https://github.com/MrNbaYoh/painthax/releases/latest install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [https://github.com/yellows8/ctpkpwn ctpkpwn_tfh]&lt;br /&gt;
| From &#039;&#039;&#039;9.9.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.3.0-X&#039;&#039;&#039;.&lt;br /&gt;
| A gamecard or eShop-install of &amp;quot;The Legend of Zelda: Tri Force Heroes&amp;quot;, and an Internet connection during installation. Unless you have &amp;quot;CFW&amp;quot;, ctr-httpwn &amp;gt;=v1.2 with the included bosshaxx on a compatible system-version is also required. If installing via ctr-httpwn, you can&#039;t do so on &amp;gt;=v11.4. Note that the exploit itself was not fixed.&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
| [https://github.com/yellows8/ctpkpwn/releases Install]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [https://github.com/MrNbaYoh/doodlebomb doodlebomb]&lt;br /&gt;
| From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039;(?) up to and including &#039;&#039;&#039;11.4.0-X&#039;&#039;&#039;.&lt;br /&gt;
| An eShop-install of Swapdoodle.&lt;br /&gt;
| MrNbaYoh&lt;br /&gt;
| [https://mrnbayoh.github.io/doodlebomb/ Install]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Exploits without Homebrew Launcher (Not recommended)==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;&amp;lt;/u&amp;gt; The following exploits can run code, but are missing a 3DSX launcher. They cannot launch any homebrew in the 3DSX format.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Works on latest fw&lt;br /&gt;
!  Name&lt;br /&gt;
!  Supported firmwares&lt;br /&gt;
!  Requirements&lt;br /&gt;
!  Author&lt;br /&gt;
!  Install&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [[browserhax]] (Without the loader in the 3ds_browserhax_common repo)&lt;br /&gt;
| (Old3DS) From &#039;&#039;&#039;5.0.0-2&#039;&#039;&#039; to &#039;&#039;&#039;11.0.0-33&#039;&#039;&#039; (Pre-v5.0 is supported for some versions if you manually modify the source)&lt;br /&gt;
&lt;br /&gt;
(New3DS) From &#039;&#039;&#039;9.0.0-20&#039;&#039;&#039; to &#039;&#039;&#039;11.0.0-33&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note that the browser-version-check bypass is only usable prior to [[10.7.0-32]].&lt;br /&gt;
| An USA, EUR, or JPN system.&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
| [[browserhax|Install]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| Ninjhax (with specialized payloads)&lt;br /&gt;
| Up to &#039;&#039;&#039;9.2.0-20&#039;&#039;&#039;?&lt;br /&gt;
| &lt;br /&gt;
| smea + independent developers&lt;br /&gt;
| N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Previous Exploits==&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;&amp;lt;/u&amp;gt; These exploits &#039;&#039;&#039;do not work&#039;&#039;&#039;. They are exploits which no longer function at all, regardless of software or firmware revision.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!  Works on latest fw&lt;br /&gt;
! Name&lt;br /&gt;
! Supported firmwares&lt;br /&gt;
! Requirements&lt;br /&gt;
! Author&lt;br /&gt;
! Install&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No&lt;br /&gt;
| [[tubehax|Tubehax]]&lt;br /&gt;
| None. &#039;&#039;&#039;Was&#039;&#039;&#039;: From &#039;&#039;&#039;9.0.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;10.1.0-X&#039;&#039;&#039;, for &#039;&#039;&#039;X&#039;&#039;&#039; up to and including 27.&lt;br /&gt;
| The YouTube application and an Internet connection. As of October 15, 2015, this is no longer usable due to an update being released which fixes the vuln used by tubehax + app update being forced (see [[YouTube|here]]).&lt;br /&gt;
| smea&lt;br /&gt;
| [http://smealum.github.io/3ds/ Install]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other Homebrew Loaders==&lt;br /&gt;
The [https://github.com/yellows8/hblauncher_loader hblauncher_loader] title can be used when running under modded-FIRM which allows running unsigned titles, to boot the *hax payloads.&lt;br /&gt;
&lt;br /&gt;
==Sysmodule Exploits==&lt;br /&gt;
This section is for system-module exploits, which can be run from the *hax payloads.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Works on latest fw&lt;br /&gt;
! Name&lt;br /&gt;
! Supported firmwares&lt;br /&gt;
! Requirements&lt;br /&gt;
! Author&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: salmon&amp;quot; | No, still usable pre-v11.4.&lt;br /&gt;
| [https://github.com/yellows8/ctr-httpwn/releases ctr-httpwn]&lt;br /&gt;
| From &#039;&#039;&#039;9.6.0-X&#039;&#039;&#039; up to and including &#039;&#039;&#039;11.3.0-X&#039;&#039;&#039;. This includes bosshaxx.&lt;br /&gt;
| None&lt;br /&gt;
| [[User:Yellows8|Yellows8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==WebKit vuln testing==&lt;br /&gt;
See [https://github.com/yellows8/3ds_browserhax_common/issues/28 here].&lt;/div&gt;</summary>
		<author><name>M-1</name></author>
	</entry>
</feed>