This page documents the format of ARC.
Overview #
ARC files are compressed files.
Found in manual files compressed with LZ-10
(more compression methods might be available).
This page documents the format of ARC.
ARC files are compressed files.
Found in manual files compressed with LZ-10
(more compression methods might be available).
.bcfnt
files are bitmap fonts made for the 3ds. The
system font uses this format too except the header is changed from CFNT
to CFNU and all file offsets are changed to absolute in memory offsets.
Offset | Size | Description |
---|---|---|
0x00 | 0x04 | Magic Header (either CFNT or CFNU or FFNT) |
0x04 | 0x02 | Endianness (0xFEFF = little, 0xFFFE = big) |
0x06 | 0x02 | Header Size |
0x08 | 0x04 | Version (observed to be 0x03000000) |
0x0C | 0x04 | File size (the total) |
0x10 | 0x04 | Number of “blocks” to read |
Offset | Size | Description |
---|---|---|
0x00 | 0x04 | Magic Header (FINF) |
0x04 | 0x04 | Section Size |
0x08 | 0x01 | Font Type |
0x09 | 0x01 | Line Feed |
0x0A | 0x02 | Alter Char Index |
0x0C | 0x03 | Default Width (3 bytes: Left, Glyph Width, Char Width) |
0x0F | 0x01 | Encoding |
0x10 | 0x04 | TGLP Offset |
0x14 | 0x04 | CWDH Offset |
0x18 | 0x04 | CMAP Offset |
0x1C | 0x01 | Height |
0x1D | 0x01 | Width |
0x1E | 0x01 | Ascent |
0x1F | 0x01 | Reserved |
Offset | Size | Description |
---|---|---|
0x00 | 0x04 | Magic Header (FINF) |
0x04 | 0x04 | Section Size |
0x08 | 0x01 | Font Type |
0x09 | 0x01 | Height |
0x0A | 0x01 | Width |
0x0B | 0x01 | Ascent |
0x0C | 0x02 | Line Feed |
0x0E | 0x02 | Alter Char Index |
0x10 | 0x03 | Default Width (3 bytes: Left, Glyph Width, Char Width) |
0x13 | 0x01 | Encoding |
0x14 | 0x04 | TGLP Offset |
0x18 | 0x04 | CWDH Offset |
0x1C | 0x04 | CMAP Offset |
Offset | Size | Description |
---|---|---|
0x00 | 0x04 | Magic Header (TGLP) |
0x04 | 0x04 | Section Size |
0x08 | 0x01 | Cell Width |
0x09 | 0x01 | Cell Height |
0x0A | 0x01 | Baseline Position |
0x0B | 0x01 | Max Character Width |
0x0C | 0x04 | Sheet Size |
0x10 | 0x02 | Number of Sheets |
0x12 | 0x02 | Sheet Image Format 0-13: (RGBA8, RGB8, RGBA5551, RGB565, RGBA4, LA8, HILO8, L8, A8, LA4, L4, A4, ETC1, ETC1A4) |
0x14 | 0x02 | Number of columns |
0x16 | 0x02 | Number of rows |
0x18 | 0x02 | Sheet Width |
0x1A | 0x02 | Sheet Height |
0x1C | 0x04 | Sheet Data Offset |
Offset | Size | Description |
---|---|---|
0x00 | 0x04 | Magic Header (TGLP) |
0x04 | 0x04 | Section Size |
0x08 | 0x01 | Cell Width |
0x09 | 0x01 | Cell Height |
0x0A | 0x01 | Number of Sheets |
0x0B | 0x01 | Max Character Width |
0x0C | 0x04 | Sheet Size |
0x10 | 0x02 | Baseline Position |
0x12 | 0x02 | Sheet Image Format 0-13: (RGBA8, RGB8, RGBA5551, RGB565, RGBA4, LA8, HILO8, L8, A8, LA4, L4, A4, ETC1, ETC1A4) |
0x14 | 0x02 | Number of Sheet columns |
0x16 | 0x02 | Number of Sheet rows |
0x18 | 0x02 | Sheet Width |
0x1A | 0x02 | Sheet Height |
0x1C | 0x04 | Sheet Data Offset |
Offset | Size | Description |
---|---|---|
0x00 | 0x04 | Magic Header (CMAP) |
0x04 | 0x04 | Section Size |
0x08 | 0x02 | Code Begin |
0x0A | 0x02 | Code End |
0x0C | 0x02 | Mapping Method (0 = Direct, 1 = Table, 2 = Scan) |
0x0E | 0x02 | Reserved? |
0x10 | 0x04 | Next CMAP Offset |
Depending on the mapping method the next bytes are read like so:
BCMA is the file format used for the electronic manuals on the Nintendo 3DS. It presumably stands for Binary CTR Manual.
In several places, three letter uppercase region codes and two letter lowercase language codes are used. These will be indicated by the italic placeholders REG and la respectively on this page.
The following region and language codes are known:
Region code | Region | Language code | Language |
---|---|---|---|
EUR | Europe | de | German |
en | British English | ||
fr | French | ||
es | Spanish | ||
it | Italic | ||
nl | Dutch | ||
pt | Portuguese | ||
ru | Russian | ||
JPN | Japan | ja | Japanese |
A BCMA file is a regular, uncompressed DARC archive which contains a set of LZ10-compressed DARC archives. These subarchives contoin files containing either textures in the BCLIM format or metadata and manual pages in the binary CLYT format.
The BCSAR (Binary CTR Sound ARchive) format is the 3DS’s equivalent of the Wii’s BRSAR format. They’re not the same structures, though, but they do have the same purpose.
BCSAR are located in the RomFS, this is usually stored under
“romfs:/sound/
OFFSET | SIZE | DESCRIPTION |
---|---|---|
0x0 | 0x4 | MAGIC “CSAR” |
0x4 | 0x2 | Byte order mark (0xFEFF = Big Endian, 0xFFFE = Little Endian) |
0x6 | 0x2 | Length of BCSAR header |
0x8 | 0x4 | Version |
0xC | 0x4 | Length of the entire BCSAR (starting from 0x0) |
0x10 | 0x4 | Amount of main partitions in the BCSAR [STRG + INFO + FILE = 0x03 (= 3)] |
0x14 | 0x4 | STRG partition reference ID? (Always 0x2000) |
0x18 | 0x4 | Location of STRG partition |
0x1C | 0x4 | Length of STRG partition |
0x20 | 0x4 | INFO partition reference ID? (Always 0x2001) |
0x24 | 0x4 | Location of INFO partition |
0x28 | 0x4 | Length of INFO partition |
0x2C | 0x4 | Main FILE partition reference ID? (Always 0x2002) |
0x30 | 0x4 | Location of main FILE partition |
0x34 | 0x4 | Length of main FILE partition |
0x38 | 0x4 | Reserved for 4th main partition location? |
0x3C | 0x4 | Reserved for 4th main partition length? |
STRG contains the names of the audio files in the BCSAR.
This document is about the format of CTR Streams (CSTM).
The structure is similar to that of a BCWAV, with a few differences, such as its different INFO block format, the addition of a SEEK block, and the organization of the DATA block samples into blocks.
These files are either found in rom:\sound\stream\ or they can be inside of a CSAR.
OFFSET | SIZE | DESCRIPTION |
---|---|---|
0x000 | 4 | Magic (CSTM) |
0x004 | 2 | Endianness (0xFEFF = little, 0xFFFE = big) |
0x006 | 2 | Header Size (0x40 due to Info Block alignment) |
0x008 | 4 | Version (0x02000000) |
0x00C | 4 | File Size |
0x010 | 2 | Number of Blocks (3) |
0x012 | 2 | Reserved |
0x014 | 12 | Info Block Sized Reference (Offset relative to start of file) |
0x020 | 12 | Seek Block Sized Reference (Offset relative to start of file) |
0x02C | 12 | Data Block Sized Reference (Offset relative to start of file) |
OFFSET | SIZE | DESCRIPTION |
---|---|---|
0x000 | 4 | Magic |
0x004 | 4 | Size |
MAGIC | TYPE |
---|---|
INFO | Info Block |
SEEK | Seek Block |
DATA | Data Block |
OFFSET | SIZE | DESCRIPTION |
---|---|---|
0x000 | 8 | Block Header |
0x008 | 8 | Stream Info Reference (Offset relative to this field) |
0x010 | 8 | Track Info Reference Table Reference (Offset relative to Stream Info Reference field) |
0x018 | 8 | Channel Info Reference Table Reference (Offset relative to Stream Info Reference field) |
0x020 | 56 | Stream Info |
0x058 | X | Track Info Reference Table |
X | X | Channel Info Reference Table |
X | X | Track Info Entries |
X | X | Channel Info Entries |
If encoding is DSP ADPCM:
This document is about the format of Binary CTR Wave files (BCWAV). The structure is very similar to Microsoft’s Wave file.
Microsoft’s WAV structure is RIFF Header which defines the data inside which is WAVE, then the media player expects a “fmt " chunk and a “data” chunk. Nintendo’s format uses a CWAV header (no need for a general structure for media, only wave), which points to an INFO struct (the equivalent to fmt) and a DATA struct (the equivalent to data).
CBMD - CTR Banner Model Data
This page describes the format used for banners’ models. These are stored in CXI ExeFS:/banner and optionally in extdata exbanner. CBMD is a container file for CGFX blocks. This is used for banners of titles you see in the home menu. BNR used for the app banners in the CXI/exbanner is the same as CBMD with CWAV at the end.
Offset | Length | Description |
---|---|---|
0x0 | 0x4 | Magic “CBMD” |
0x4 | 0x4 | Zero |
0x8 | 0x4 | Offset for common CGFX |
0xc | 0x34 | Optional offsets for region/language specific CGFX |
0x40 | 0x44 | Padding? |
0x84 | 0x4 | BCWAV offset |
The common CGFX is used if the CGFX offset for the system region/language is zero. Those optional offsets can be used in extdata exbanner, but separate CBMD banner files for each region/language can be used as well.
See also: NCSD.
This page documents the format of NCSD. CTR cart images (CCI) is NCSD, but is used for other things as well. CSU is NCSD used for system updates and development tools.
This is a container format which generally holds CXI files inside.
NCSD images start with a NCSD header, followed by up to a maximum of 8 partitions according to spec. The first partition(NCCH 0) usually starts at 0x4000, this is generally the main NCCH executable. The following info on partitions 1, 2, and 7 are only valid for .CCI. The second partition(NCCH 1) contains the game “Manual”(title ID for the .CXI containing the Manual always starts with ‘0005’). The third partition(NCCH 2) contains the download play “Child”(The title ID for the NCCH containing the Child always starts with ‘0006’). The eighth block(NCCH 7) contains “Update Data”(The title ID for the NCCH containing the Update Data always starts with ‘8000’) The format of partitions can be determined from the partition FS flags, while the contents can be determined from the partitions flags.
CGFX is a container format used to store graphics resources. It can contain 3D models, textures and animation data.
CGFX header :
Offset | Length | Description |
---|---|---|
0x0 | 0x4 | Magic “CGFX” |
0x4 | 0x2 | Byte order mark: FFFE (little endian) or FEFF (big endian) |
0x6 | 0x2 | CGFX header size |
0x8 | 0x4 | Revision |
0xC | 0x4 | File size (bytes) |
0x10 | 0x4 | Number of entries |
A typical CGFX file contains two main entries, beginning directly after the CGFX header: DATA and IMAG.
CIA stands for CTR Importable Archive. This format allows the installation of titles to the 3DS. CIA files and titles on Nintendo’s CDN contain identical data. As a consequence, valid CIA files can be generated from CDN content. This also means CIA files can contain anything that titles on Nintendo’s CDN can contain.
Under normal circumstances CIA files are used where downloading a title is impractical or not possible. Such as distributing a Download Play child, or installing forced Gamecard updates. Those CIA(s) are stored by the titles in question, in an auxiliary CFA file.
CLAN (.bclan) is the layout animation format used on the 3DS. It stands for (Binary) CTR Layout Animation, and is similar to the RLAN format used on the Wii.
Offset | Size | Type | Description |
---|---|---|---|
0x00 | 0x4 | String | Signature (CLAN) |
0x04 | 0x2 | UInt16 | Byte Order Mark |
0x06 | 0x2 | UInt16 | Header Length |
0x08 | 0x4 | UInt32 | Revision |
0x0C | 0x4 | UInt32 | File Size |
0x10 | 0x4 | UInt32 | Nr Sections |
Offset | Size | Type | Description |
---|---|---|---|
0x00 | 0x4 | String | Signature (pat1) |
0x04 | 0x4 | UInt32 | Section Size |
0x08 | 0x4 | UInt32 | Flags? |
0x0C | 0x4 | UInt32 | ? |
0x10 | 0x4 | Int32 | ? |
0x14 | 0x4 | UInt32 | ? |
0x18 | 0x10 | String | Pattern name |
Offset | Size | Type | Description |
---|---|---|---|
0x00 | 0x4 | String | Signature (pai1) |
0x04 | 0x4 | UInt32 | Section Size |
0x08 | 0x4 | UInt32 | ? |
0x0C | 0x4 | UInt32 | Flags? |
0x10 | 0x4 | UInt32 | Nr entries? |
0x14 | 0x4 | UInt32 | Entries offset (relative to pai1) |
Offset | Size | Type | Description |
---|---|---|---|
0x00 | 0x14 | String | Target panel name |
0x14 | 0x4 | UInt32 | Flags? |
0x18 | 0x4 | UInt32 | Animation entry offset (relative to entry) |
0x1C | 0x4 | UInt32 | ? (if flag bit 1 is set) |
Offset | Size | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x00 | 0x4 | String | Animation typeCLYT FormatCLYT (.bclyt) is the layout format used on the 3DS. It stands for (Binary) CTR Layout, and is similar to the RLYT format used on the Wii. Header #
lyt1 (Layout 1) #
|