BCMA is the file format used for the electronic manuals on the Nintendo 3DS. It presumably stands for Binary CTR Manual.
Region and language codes #
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 |
Top-level archive overview #
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.
At least the following archives should be found in the top level archive:
Archive path | Comment |
---|---|
./BcmaInfo.arc | Archive containing metadata about this manual, such as available languages and version information. |
./REG_la_index.arc | Archive containing the table of contents for a specific locale. |
./REG_la_large.arc | Archive containing the pages of the manual in a large font size. |
./REG_la_small.arc | Archive containing the pages of the manual in a small font size. |
Other archives not named here may be present as well. Usually, these contain locale specific images.
BcmaInfo.arc #
This archive has a single BCLYT file located in ./blyt/BcmaInfo.bclyt. This file contains the following panes, all direct children of the RootPane:
Pane name | Pane type | User data | |
---|---|---|---|
Key | Type | Value description | |
LangInfo | pan1 | LangNum | Int[1] |
Lang_xxx | String | ||
RegionInfo | pan1 | RegionNum | Int[1] |
Region_xxx | String | ||
REG | pan1 | LangNum | Int[1] |
Lang_xxx | String | ||
REG_la | txt1 | TexResNum | Int[1] |
TexRes_xxxx | String | ||
VersionInfo | pan1 | CurrentVersion | Int[1] |
Description | String |
All other properties of the panes seem to be set to a default value and do not seem to matter.
REG_la_index.arc #
This archive contains the table of contents for a certain language. This archive contains exactly one file, ./blyt/Index.bclyt, which contains the following panes, all children of the RootPane:
Pane name | Pane type | User data | |
---|---|---|---|
Key | Type | Value description | |
MetaData | pan1 | PageNum | Int[1] |
CategoryNum | Int[1] | ||
SplitNumL | Int[PageNum] | ||
SplitNumS | Int[PageNum] | ||
PageTitle_xxx | txt1 | None | |
Category_xxx | txt1 | IsValid | Int[1] |
CategoryPageNum | Int[1] | ||
PageID_xxx | Int[1] |
REGlasize.arc #
These archives actually contain the contents of a page in the manual. It contains the following files:
File name | Description |
---|---|
./blyt/Page_xxxsizey.bclyt | Contains the text and foreground images of page number xxx, part y and size size. |
./blyt/Page_xxx_size_bg.bclyt | Contains all background images on the page. |
./blyt/Page_xxx_size_info.bclyt | Could perhaps contain metadata from the manual editor? |
In the filenames, xxx should be replaced by the page number, starting from 000. size should be replaced by either “large” or “small”. Finally, y should be replaced by the page part, starting from 0.