https://www.3dbrew.org/w/api.php?action=feedcontributions&user=Yifanlu&feedformat=atom
3dbrew - User contributions [en]
2024-03-29T02:31:35Z
User contributions
MediaWiki 1.35.8
https://www.3dbrew.org/w/index.php?title=Makerom&diff=15591
Makerom
2016-01-23T06:36:33Z
<p>Yifanlu: /* Creating ELF files */</p>
<hr />
<div>{{Infobox homebrew<br />
| title = makerom<br />
| type = pc utility<br />
| author = [[User:3dsguy|3dsguy]]<br />
| download = https://anonfiles.com/file/865643f366d17771aa907d467f00826f<br />
| source = https://github.com/profi200/Project_CTR/tree/master/makerom<br />
| version = 0.13<br />
}}<br />
<br />
makerom is a tool which can be used to create [[NCCH]], [[NCSD|CCI]], and [[CIA]] files.<br />
<br />
== Format Overviews ==<br />
=== NCCH ===<br />
The native format storing code binaries and data archives for the 3DS is [[NCCH]]. [[NCCH]] files are comprised of:<br />
* code/exheader/plainregion (used for code execution) (plainregion just lists included SDK library add-ons)<br />
* icon (app title text, icon, homemenu settings, see [[SMDH|here]]<br />
* banner (cbmd + cwav, i.e. the upper screen banner/sound shown on the homemenu)<br />
* logo (the splash screen displayed after an application is launched from the homemenu)<br />
* romfs (read-only filesystem used to store resources)<br />
<br />
Typical uses for NCCH files include:<br />
* Executable image (code+exheader+icon+banner+logo+romfs)<br />
* e-Manual archive (accessed from homemenu) (romfs)<br />
* [[Download Play|DLP]] child CIA archive (accessed from application) (romfs)<br />
* Update Data archive (romfs)<br />
* Standalone data archive (romfs)<br />
* DLC index archive (icon+romfs)<br />
* DLC archive (romfs)<br />
<br />
=== CCI ===<br />
The native format for gamecard images is [[NCSD|CCI]] and is a NCCH container format. CCI files are limited to containing 8 NCCH files, and can contain NCCH files for applications titles only.<br />
==== NCCH configuration for CCI ====<br />
{| class="wikitable"<br />
|-<br />
! NCCH<br />
! Required<br />
! Index<br />
|-<br />
| Executable image<br />
| YES<br />
| 0<br />
|-<br />
| e-Manual archive<br />
| NO<br />
| 1<br />
|-<br />
| DLP child CIA archive<br />
| NO<br />
| 2<br />
|-<br />
| Update Data archive<br />
| NO<br />
| 7<br />
|}<br />
<br />
=== CIA ===<br />
The native format for packaging NCCH files for install is [[CIA]], which is also a NCCH container format. CIA files are limited to containing 65535 NCCH files and can be used to contain NCCH files for any title type. CIA files also contain '''signed''' data used by the 3DS for general title management and DRM. Installing custom CIA files on a 3DS which also uses eShop/SysUpdates is unwise as conflicts will likely occur.<br />
<br />
==== NCCH configurations for CIA ====<br />
Applications (Application/DlpChild/Demo/Patch/SystemApplication):<br />
{| class="wikitable"<br />
|-<br />
! NCCH<br />
! Required<br />
! Index<br />
|-<br />
| Executable image<br />
| YES<br />
| 0<br />
|-<br />
| e-Manual archive<br />
| NO<br />
| 1<br />
|-<br />
| DLP child CIA archive<br />
| NO<br />
| 2<br />
|}<br />
<br />
System Applet/Module:<br />
{| class="wikitable"<br />
|-<br />
! NCCH<br />
! Required<br />
! Index<br />
|-<br />
| Executable image<br />
| YES<br />
| 0<br />
|}<br />
<br />
System Data Archives:<br />
{| class="wikitable"<br />
|-<br />
! NCCH<br />
! Required<br />
! Index<br />
|-<br />
| Data archive<br />
| YES<br />
| 0<br />
|}<br />
<br />
DLC:<br />
<br />
The number of DLC data archives in DLC varies for each DLC.<br />
{| class="wikitable"<br />
|-<br />
! NCCH<br />
! Required<br />
! Index<br />
|-<br />
| DLC index archive<br />
| YES<br />
| 0<br />
|-<br />
| DLC data archive<br />
| YES<br />
| Varies<br />
|}<br />
<br />
== Using Makerom ==<br />
<br />
=== Command line ===<br />
<br />
makerom [general args] [rsf args] [crypto args] [ncch 0 build args] [cci args] [cia args]<br />
<br />
'''General Arguments'''<br />
{| class="wikitable"<br />
|-<br />
! Argument<br />
! Acceptable values<br />
! Notes<br />
|-<br />
| -f <format><br />
| 'ncch'/'cxi'/'cfa'/'cci'/'cia'<br />
| Specify the output file format. 'ncch'/'cxi'/'cfa' has no affect, probably parsed without error for legacy support.<br />
|-<br />
| -o <path><br />
| Valid file path.<br />
| Specify name/path for output file. Makerom will decided a name if this is not specified.<br />
|-<br />
| -v<br />
| not required<br />
| Enables verbose output.<br />
|}<br />
<br />
'''RSF Arguments'''<br />
{| class="wikitable"<br />
|-<br />
! Argument<br />
! Acceptable values<br />
! Notes<br />
|-<br />
| -rsf <path><br />
| Valid file path<br />
| Specify the path to Rom Specification File(RSF). See below for creating RSF.<br />
|-<br />
| -D<NAME>=<VALUE><br />
| <br />
| This is used to substitute where "$(<NAME>)" exists in the RSF files with "<VALUE>". (Uppercase isn't a requirement)<br />
|}<br />
<br />
'''Crypto Arguments'''<br />
{| class="wikitable"<br />
|-<br />
! Argument<br />
! Acceptable values<br />
! Notes<br />
|-<br />
| -target <target><br />
| 't'/'d'/'p'<br />
| Specify key-chain. This affects encryption, signing and '-desc' template availability. t=test, suitable for homebrew. d=devkit(incomplete), suitable for devkits. p=retail(unusable), suitable for signing retail software?<br />
|-<br />
| -ckeyid <index><br />
| Any value between 0-255 (inclusive).<br />
| Overrides the default common key used to encrypt CIA title keys.<br />
|-<br />
| -showkeys<br />
| none<br />
| Dumps loaded key-chain to stdout.<br />
|}<br />
<br />
'''NCCH Build Arguments'''<br />
{| class="wikitable"<br />
|-<br />
! Argument<br />
! Acceptable values<br />
! Notes<br />
|-<br />
| -elf <file><br />
| Valid file path<br />
| Specify ELF. See below for creating ELF.<br />
|-<br />
| -icon <file><br />
| Valid file path<br />
| Specify [[SMDH|icon]].<br />
|-<br />
| -banner <file><br />
| Valid file path<br />
| Specify banner.<br />
|-<br />
| -desc <apptype>:<fw><br />
| <apptype>='app'/'ecapp'/'demo'/'dlpchild'. <fw>='kernel version minor'.<br />
| Use a template for [[Exheader|exheader/accessdesc]]. These are hard-coded, so not all firmwares have a template. A value from 1-7 can be used in place of 'kernel version minor'. A template shouldn't be used if the title needs "special" permissions, the RSF must be configured fully.<br />
|-<br />
| -exefslogo<br />
| none<br />
| Include logo in ExeFS. Required for usage on <5.0 systems.<br />
|}<br />
<br />
Arguments useful for rebuilding a NCCH file:<br />
{| class="wikitable"<br />
|-<br />
! Argument<br />
! Acceptable values<br />
! Notes<br />
|-<br />
| -code <file><br />
| Valid file path<br />
| Specify decompressed/plaintext exefs code binary.<br />
|-<br />
| -exheader <file><br />
| Valid file path<br />
| Specify plaintext exheader binary.<br />
|-<br />
| -logo <file><br />
| Valid file path<br />
| Specify logo.<br />
|-<br />
| -plainrgn <file><br />
| Valid file path<br />
| Specify NCCH plain-region.<br />
|-<br />
| -romfs <file><br />
| Valid file path<br />
| Specify an unencrypted RomFS binary.<br />
|}<br />
<br />
'''CCI Arguments'''<br />
{| class="wikitable"<br />
|-<br />
! Argument<br />
! Acceptable values<br />
! Notes<br />
|-<br />
| -content <path>:<index><br />
| <path>=Valid file path. <index>=Any value between 0-7 (inclusive)<br />
| Include a built NCCH file in the CCI container. "-i" can be used instead of "-content".<br />
|-<br />
| -devcci<br />
| none<br />
| Build a debug CCI?<br />
|-<br />
| -nomodtid<br />
| none<br />
| Don't modify the TitleIds of NCCH files included to match NCCH0<br />
|-<br />
| -alignwr<br />
| none<br />
| Align the offset for the Card2 writable region to the end of the last NCCH in the CCI.<br />
|}<br />
<br />
'''CIA Arguments'''<br />
{| class="wikitable"<br />
|-<br />
! Argument<br />
! Acceptable values<br />
! Notes<br />
|-<br />
| -content <path>:<index>:<id><br />
| <path>=Valid file path. <index>=Any value between 0x0-0xFFFF (inclusive). <id>=Any value between 0x0-0xFFFFFFFF (inclusive)<br />
| Include a built NCCH file in the CIA container. If <id> isn't specified, it will be generated randomly. "-i" can be used instead of "-content".<br />
|-<br />
| -major <version><br />
| Any value between 0-63 (inclusive)<br />
| Specify the version major for the title. This cannot be used with "-dver".<br />
|-<br />
| -minor <version><br />
| Any value between 0-63 (inclusive)<br />
| Specify the version minor for the title. This cannot be used with "-dver".<br />
|-<br />
| -micro <version><br />
| Any value between 0-15 (inclusive)<br />
| Specify the version micro for the title.<br />
|-<br />
| -dver <version><br />
| Any value between 0-4095 (inclusive)<br />
| Specify the data-title version for the title. This cannot be used with "-major" or "-minor".<br />
|-<br />
| -dlc<br />
| none<br />
| Specify this flag when building a DLC CIA.<br />
|-<br />
| -rand<br />
| none<br />
| Use a random title key to encrypt CIA content.<br />
|}<br />
<br />
==== Examples ====<br />
<br />
General examples:<br />
<br />
'''Create CXI'''<br />
makerom -o sample.cxi -rsf sample.rsf -target t -elf sample.elf -icon sample.icn -banner sample.bnr -desc app:4<br />
<br />
'''Create CFA'''<br />
makerom -o sample.cfa -rsf sample.rsf -target t<br />
<br />
'''Create CCI'''<br />
makerom -f cci -o sample.cci -target t -i sample.cxi:0 -i sample.cfa:1<br />
<br />
'''Create CIA'''<br />
makerom -f cia -o sample.cia -target t -i sample.cxi:0:0 -i sample.cfa:1:1<br />
<br />
<br />
Makerom supports building a NCCH file and including it automatically (as index 0) into a NCCH container:<br />
<br />
'''Create CCI and CXI at the same time and include a CFA'''<br />
makerom -f cci -o sample.cci -rsf sample.rsf -target t -elf sample.elf -icon sample.icn -banner sample.bnr -desc app:4 -i sample.cfa:1<br />
<br />
'''Create CIA and CXI at the same time and include a CFA'''<br />
makerom -f cia -o sample.cia -rsf sample.rsf -target t -elf sample.elf -icon sample.icn -banner sample.bnr -desc app:4 -i sample.cfa:1:1<br />
<br />
Rebuilding CXI:<br />
makerom -o rebuild.cxi -rsf rebuild.rsf -target t -code rebuild/code.bin -exheader rebuild/exheader.bin -icon rebuild/icon.bin -banner rebuild/banner.bin -romfs rebuild/romfs.bin<br />
<br />
=== Creating RSF files ===<br />
Inspired by Nintendo's format for their makerom, a yaml configuration file is required for creating NCCH files. CIA/CCI can be created without using a RSF file, but default settings will be used.<br />
<br />
For CXI, RSF files can be used to specify permissions, and access control settings. Makerom can use default settings by use of the "-desc" option, which removes the requirement for specifying them in the RSF file.<br />
<br />
Sample RSF to be used with "-desc": [https://gist.githubusercontent.com/3DSGuy/83e12e0ae3dcccb9827f/raw/sample0.rsf download] (link broken)<br />
<br />
Sample RSF to be used without "-desc": [https://gist.githubusercontent.com/3DSGuy/83e12e0ae3dcccb9827f/raw/sample1.rsf download] (link broken)<br />
<br />
=== Creating ELF files ===<br />
The latest devkitARM used in conjunction with [https://github.com/smealum/ctrulib ctrulib] can create ELF files compatible with makerom.<br />
<br />
ELF files that are created using the official SDK are also supported by makerom.<br />
<br />
== Compiling Source ==<br />
For Windows a MinGW/MSYS build setup is required. <br />
<br />
For Linux, gcc/g++/make must be installed.<br />
<br />
All additional libraries used by makerom (polarssl/libyaml) are included in the source, and are linked statically.<br />
<br />
== Issues ==<br />
<br />
* RomFS hasn't been completely implemented (but valid pre-built RomFS can be used as substitute)</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=LOADER:LoadProcess&diff=15522
LOADER:LoadProcess
2016-01-20T08:06:24Z
<p>Yifanlu: /* Description */</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x00010080]<br />
|-<br />
| 1-2<br />
| u64, Program Handle<br />
|}<br />
<br />
=Response=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code<br />
|-<br />
| 1<br />
| Result code<br />
|-<br />
| 3<br />
| KProcess handle<br />
|}<br />
<br />
=Description=<br />
This maps 0x10000000 and reads ExeFS:/.code there, then decompresses it if needed. It uses the exheader information to find how many pages to allocate for each section (text,rodata,data). The way the allocation works is that it rounds each size field to the nearest page and then assumes that the decompressed ExeFS:/.code fits each section to the rounded size (NOT the size specified in the exheader if that size is not page aligned!). This is different from how the sysmodules (fs,loader,etc) are loaded. The size field for those modules are actually used as-specified. This then uses svcCreateCodeSet and then svcCreateProcess. Once finished this writes the KProcess handle to cmdreply[3].</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=NIMS:CheckSysupdateAvailableSOAP&diff=12266
NIMS:CheckSysupdateAvailableSOAP
2015-04-10T06:59:17Z
<p>Yifanlu: </p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x000A0000]<br />
|}<br />
<br />
=Response=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code<br />
|-<br />
| 1<br />
| Result code<br />
|-<br />
| 2<br />
| u8 flag determining whether a system update is available (using data from a SOAP request)<br />
|}</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=Title_list&diff=12135
Title list
2015-03-28T18:50:02Z
<p>Yifanlu: reversing system transfer shows name is actually "Cardboard"</p>
<hr />
<div>The Nintendo 3DS utilizes a similar title-based organization as seen in the Wii and DSi platforms. The update server is located [http://nus.cdn.c.shop.nintendowifi.net/ccs/download/ here]. When using SSL, the update/shop servers must be accessed via SSLv3.<br />
<br />
The organization of Title IDs has not been documented fully yet. Region info isn't stored in title IDs however there does appear to be evidence that the regions are sequential, similar to how Wii System Menu Updates are ordered: JPN USA EUR KOR and CHN (introduced with the DSi). 3DS has one additional region: TWN.<br />
<br />
Note: The terms 'Title ID', 'Partition ID' and 'Media ID' are interchangeable.<br />
<br />
The 3DS retrieves system [[CommonETicket|tickets]] with SOAP request GetSystemCommonETicket, instead of directly downloading the cetk with HTTPS. The cetk is still accessible via HTTP, however 3DS doesn't use direct HTTP for this.<br />
<br />
<br />
'''TitleID Structure''': 0xCCCCABCDLLLLLLRR<br />
<br />
* CCCC defines the console '''Platform''' (5=WiiU, 4=3DS, 3=DSi, 1=[http://wiibrew.org/wiki/Title_database Wii])<br />
* ABCD defines the '''Content Category''' of the title, Demo, DLPChild, etc.<br />
* LLLLLL For CTR titles, this is the title's '''Unique ID'''. For TWL converted titles this is in two sections grouped as SSLLLL. SS is the old title identification used by the DSi and is made redundant by 'ABCD'. LLLL is the TWL title's 'Unique ID'. There are restrictions on the Unique ID, see below for more info.<br />
* RR This is the Title ID '''Variation''', and has various uses.<br />
<br />
<br />
'''Content Categories''':<br />
<br />
This u16 is a collection bit mask flag. Each Category is a group of one or more bit masks.<br />
<br />
Specific Bitmask Flags:<br />
{| class="wikitable" border="1"<br />
|-<br />
! Category<br />
! Bitmask<br />
|-<br />
| Normal<br />
| 0x0<br />
|-<br />
| DlpChild<br />
| 0x1<br />
|-<br />
| Demo<br />
| 0x2<br />
|-<br />
| Contents<br />
| 0x3<br />
|-<br />
| AddOnContents<br />
| 0x4<br />
|-<br />
| Patch<br />
| 0x6<br />
|-<br />
| CannotExecution<br />
| 0x8<br />
|-<br />
| System<br />
| 0x10<br />
|-<br />
| RequireBatchUpdate<br />
| 0x20<br />
|-<br />
| NotRequireUserApproval<br />
| 0x40<br />
|-<br />
| NotRequireRightForMount<br />
| 0x80<br />
|-<br />
| CanSkipConvertJumpId<br />
| 0x100<br />
|-<br />
| TWL<br />
| 0x8000<br />
|}<br />
<br />
* TWL Category bit mask are carried over from original TWL category bitmasks (ignoring bit mask 0x8000), so TWL system titles have the bitmask of 0x8001.<br />
<br />
* System titles (TWL and CTR) are eligible to be updated during a System Update.<br />
<br />
* Bit Mask 0x4000 appears to be reserved, as it renders the ''TWL'' and ''System'' bit masks useless.<br />
<br />
'''Unique ID Restrictions''':<br />
<br />
For the CTR titles, there appears to be is a correlation between Unique IDs (UID) and 3DS 'title types'. For developer titles this is known(shown below), and retail titles *appear* to follow suite. It is unknown if this correlation is enforced on retail units, or if it is just for organisation purposes. <br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! TITLE TYPE<br />
! UNIQUE ID RANGE<br />
|-<br />
| System<br />
| 0x0 - 0x2FF<br />
|- <br />
| Application<br />
| 0x300 - 0xF7FFF<br />
|- <br />
| Evaluation<br />
| 0xF8000 -0xFFFFF<br />
|- <br />
| Prototype*<br />
| 0xFF000 - 0xFF3FF<br />
|}<br />
<nowiki>*</nowiki>On the home menu, titles with UIDs within the 'Prototype' range, appear on the home menu after install without the gift fanfare.<br />
<br />
ProgramID/titleID low bitmask 0xF0000000(uniqueID bitmask 0xF00000) seems to be related to which hardware the title is allowed to run on. 3DS code tends to clear this bitmask when handling programIDs. This bitmask is normally zero. When this is 0x2, this indicates that the title only runs on [[New_3DS]](that is, programID-low 0x20000000 / uniqueID 0x200000).<br />
<br />
'''TitleID Variation''':<br />
<br />
This u8 allows enumeration of titles from the same category and unique ID. Common uses are explained below:<br />
<br />
* CTR System Titles: The 3DS has two copies of most modules/applets/archives for usage with either the NATIVE_FIRM or SAFE_MODE_FIRM. This is allowed for, by changing the title ID variation of the title to match the core version set by the FIRM it is designed to be used with:<br />
{| class="wikitable" border="1"<br />
|-<br />
! RR<br />
! MEANING<br />
|- <br />
| 02<br />
| System Title (Core version 0x2)<br />
|-<br />
| 03<br />
| SAFE_MODE System Title (Core version 0x3)<br />
|}<br />
Normally on retail SAFE_MODE ARM11 [[NCCH#CXI|CXI]] titles can't be launched, since the [[Configuration_Memory|system]] core version doesn't match the CXI exheader core version.<br />
<br />
* Only most non-Normal Applications are known to utilise Title ID variation, this is explained in their respective sections on this page.<br />
<br />
* [[3DS Development Unit Software|Dev Menu]] installs CTR Applications with a TitleID variation of 0x02 to the CTR NAND.<br />
<br />
* Title ID variation is ignored for TWL titles, this value is carried over from the original TWL title ID and is used for region lock:<br />
<br />
=== Versions ===<br />
<br />
v## = 0xHHHH = 0bBBBBBBBB...<br />
<br />
* The version major,minor and micro can be extracted from the version number by converting the 16 bit number to binary<br />
* 6 bits : Major<br />
* 6 bits : Minor<br />
* 4 bits : Micro ('Build' in some contexts)<br />
* i.e. v2069 (Taken from 000400DB00017302) = 0b000010 000001 0101 means that the title version is v2.1.5. For reasons unknown, the CVer build, stored in the RomFS of the title, has always been zero (at time of writing), regardless of the CVer build in the TMD. So when predicting the firmware version, this should be taken into account.<br />
<br />
NOTE: This Title list is a condensed version, only the System Titles lists are full lists. For a full list of titles on Nintendo's CDN, see [http://mtheall.com/~mtheall/tmdlist.php here]. The reports/title-lists from [http://yls8.mtheall.com/ninupdates/reports.php here] are automatically obtained from the system update SOAP.<br />
<br />
== CTR System Titles ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! System Category<br />
! Bit Mask(s)<br />
! Category Bit Mask<br />
|-<br />
| Application (SYSTEM_APPLICATION)<br />
| Normal<nowiki>|</nowiki>System<br />
| 0x0010<br />
|-<br />
| System Data Archives (SYSTEM_CONTENT)<br />
| Contents<nowiki>|</nowiki>CannotExecution<nowiki>|</nowiki>System<br />
| 0x001B<br />
|-<br />
| Shared Data Archives (SHARED_CONTENT)<br />
| Contents<nowiki>|</nowiki>CannotExecution<nowiki>|</nowiki>System<nowiki>|</nowiki>NotRequireRightForMount<br />
| 0x009B<br />
|-<br />
| System Data Archives (AUTO_UPDATE_CONTENT)<br />
| Contents<nowiki>|</nowiki>CannotExecution<nowiki>|</nowiki>System<nowiki>|</nowiki>NotRequireUserApproval<nowiki>|</nowiki>NotRequireRightForMount<br />
| 0x00DB<br />
|-<br />
| Applet (APPLET)<br />
| Normal<nowiki>|</nowiki>System<nowiki>|</nowiki>RequireBatchUpdate<br />
| 0x0030<br />
|-<br />
| Module (BASE)<br />
| Normal<nowiki>|</nowiki>System<nowiki>|</nowiki>RequireBatchUpdate<nowiki>|</nowiki>CanSkipConvertJumpId<br />
| 0x0130<br />
|-<br />
| Firmware (FIRMWARE)<br />
| Normal<nowiki>|</nowiki>CannotExecution<nowiki>|</nowiki>System<nowiki>|</nowiki>RequireBatchUpdate<nowiki>|</nowiki>CanSkipConvertJumpId<br />
| 0x0138<br />
|}<br />
<br />
=== 00040010 - System Applications ===<br />
The versions for CHN, KOR, and TWN are separate from the other regions.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! JPN TIDLow<br />
! USA TIDLow<br />
! EUR TIDLow<br />
! CHN TIDLow<br />
! KOR TIDLow<br />
! TWN TIDLow<br />
! Description<br />
! JPN Versions<br />
! EUR Versions<br />
! USA Versions<br />
! CHN Versions<br />
! KOR Versions<br />
! TWN Versions<br />
! Status<br />
|-<br />
| 00020000<br />
| 00021000<br />
| 00022000<br />
| 00026000<br />
| 00027000<br />
| 00028000<br />
| [[System Settings]] (mset)<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1027]], [[3.0.0-5|v2060]], [[4.0.0-7|v3074]], [[5.0.0-11|v4097]], [[6.0.0-11|v5127]], [[7.0.0-13|v6157]], [[7.2.0-17|v7173]], [[8.1.0-0_New3DS|v8198]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v9224]]<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1027]], [[3.0.0-5|v2061]], [[4.0.0-7|v3075]], [[5.0.0-11|v4097]], [[6.0.0-11|v5127]], [[7.0.0-13|v6157]], [[7.2.0-17|v7174]], [[9.0.0-20|v8202]]<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1027]], [[3.0.0-5|v2062]], [[4.0.0-7|v3078]], [[5.0.0-11|v4098]], [[6.0.0-11|v5128]], [[7.0.0-13|v6157]], [[7.2.0-17|v7174]], [[9.0.0-20|v8203]]<br />
| [[4.0.0-7|v8]], [[4.4.0-10|v1024]](CHN-only sysupdate for just mset), [[5.0.0-11|v2049]], [[7.0.0-13|v3075]]<br />
| [[4.0.0-7|v1026]], [[5.0.0-11|v2049]], [[7.0.0-13|v4098]]<br />
| [[4.1.0-8|v8]], [[4.2.0-9|v1024]], [[5.0.0-11|v2050]], [[7.0.0-13|v3074]]<br />
| Active<br />
|-<br />
| 00020100<br />
| 00021100<br />
| 00022100<br />
| 00026100<br />
| 00027100<br />
| 00028100<br />
| [[Download Play]] (dlplay)<br />
| [[1.0.0-0|v0]], [[2.1.0-4|v1026]], [[4.0.0-7|v2051]], [[9.0.0-20|v3072]](Also for [[8.1.0-0_New3DS]])<br />
| [[1.0.0-0|v0]], [[2.1.0-4|v1026]], [[4.0.0-7|v2051]], [[9.0.0-20|v3073]]<br />
| [[1.0.0-0|v0]], [[2.1.0-4|v1026]], [[4.0.0-7|v2051]], [[9.0.0-20|v3073]]<br />
| [[4.0.0-7|v4]]<br />
| [[4.0.0-7|v1027]]<br />
| [[4.1.0-8|v4]]<br />
| Active<br />
|-<br />
| 00020200<br />
| 00021200<br />
| 00022200<br />
| 00026200<br />
| 00027200<br />
| 00028200<br />
| [[Activity Log]]<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[3.0.0-5|v2051]]<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[3.0.0-5|v2054]], [[7.0.0-13|v2064]]<br />
| Same as EUR<br />
| [[4.0.0-7|v3]]<br />
| [[4.0.0-7|v2]], [[7.0.0-13|v16]]<br />
| [[4.1.0-8|v2]]<br />
| Active<br />
|-<br />
| 00020300<br />
| 00021300<br />
| 00022300<br />
| 00026300<br />
| 00027300<br />
| 00028300<br />
| [[Health and Safety Information]]<br />
| [[1.0.0-0|v0]], [[4.0.0-7|v1024]], [[6.0.0-11|v2050]]<br />
| [[1.0.0-0|v0]], [[3.0.0-5|v1024]], [[4.0.0-7|v2050]], [[6.0.0-11|v3077]]<br />
| [[1.0.0-0|v0]], [[4.0.0-7|v1026]], [[6.1.0-12U|v2051]]<br />
| [[4.0.0-7|v5]]<br />
| [[4.0.0-7|v2]]<br />
| [[4.1.0-8|v5]]<br />
| Active<br />
|-<br />
| 20020300<br />
| 20021300<br />
| 20022300<br />
| N/A<br />
| N/A<br />
| N/A<br />
| [[New_3DS]] [[Health and Safety Information]]<br />
| [[8.1.0-0_New3DS|v2]], [[9.3.0-21|v17]]<br />
| [[8.1.0-0_New3DS|v1]]<br />
| Same as EUR.<br />
| N/A<br />
| N/A<br />
| N/A<br />
| Active<br />
|-<br />
| 00020400<br />
| 00021400<br />
| 00022400<br />
| 00026400<br />
| 00027400<br />
| 00028400<br />
| [[Nintendo 3DS Camera]] (CtrApp)<br />
| [[1.0.0-0|v0]], [[2.1.0-4|v16]], [[3.0.0-5|v1038]], [[4.0.0-7|v2048]], [[6.0.0-11|v3073]], [[9.0.0-20|v4097]](Also for [[8.1.0-0_New3DS]])<br />
| [[1.0.0-0|v0]], [[2.1.0-4|v16]], [[3.0.0-5|v1039]], [[4.0.0-7|v2048]], [[6.0.0-11|v3073]], [[7.0.0-13|v3088]], [[9.0.0-20|v4097]]<br />
| [[1.0.0-0|v0]], [[2.1.0-4|v16]], [[3.0.0-5|v1039]], [[4.0.0-7|v2048]], [[6.1.0-12U|v3074]], [[7.0.0-13|v3088]], [[9.0.0-20|v4097]]<br />
| [[4.0.0-7|v3]]<br />
| [[4.0.0-7|v2]], [[7.0.0-13|v1040]]<br />
| [[4.1.0-8|v3]]<br />
| Active<br />
|-<br />
| 00020500<br />
| 00021500<br />
| 00022500<br />
| 00026500<br />
| 00027500<br />
| 00028500<br />
| [[Nintendo 3DS Sound]] (CtrApp)<br />
| [[1.0.0-0|v0]], [[2.1.0-4|v1027]], [[3.0.0-5|v2049]], [[4.0.0-7|v3072]], [[7.0.0-13|v3089]]<br />
| [[1.0.0-0|v0]], [[2.1.0-4|v1027]], [[3.0.0-5|v2049]], [[4.0.0-7|v3072]], [[7.0.0-13|v3088]]<br />
| [[1.0.0-0|v0]], [[2.1.0-4|v1027]], [[3.0.0-5|v2049]], [[4.0.0-7|v3072]], [[7.0.0-13|v3088]]<br />
| [[4.0.0-7|v2]]<br />
| [[4.0.0-7|v2]], [[7.0.0-13|v16]]<br />
| [[4.1.0-8|v3]]<br />
| Active<br />
|-<br />
| 00020700<br />
| 00021700<br />
| 00022700<br />
| 00026700<br />
| 00027700<br />
| 00028700<br />
| [[Mii Maker]] (EDIT)<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[7.0.0-13|v2055]]<br />
| Same as JPN<br />
| Same as JPN<br />
| [[4.0.0-7|v1]]<br />
| [[4.0.0-7|v1]], [[7.0.0-13|v16]]<br />
| [[4.1.0-8|v2]]<br />
| Active<br />
|-<br />
| 00020800<br />
| 00021800<br />
| 00022800<br />
| 00026800<br />
| 00027800<br />
| 00028800<br />
| [[StreetPass Mii Plaza]] (MEET)<br />
| [[1.0.0-0|v0]], v1027, [[2.1.0-4|v2048]], [[3.0.0-5|v3087]], [[3.0.0-6|v4096]], [[6.0.0-11|v5121]]<br />
| [[1.0.0-0|v0]], v1027, [[2.1.0-4|v2048]], [[3.0.0-5|v3087]], [[3.0.0-6|v4096]], [[6.0.0-11|v5122]]<br />
| [[1.0.0-0|v0]], v1027, [[2.1.0-4|v2048]], [[3.0.0-5|v3087]], [[3.0.0-6|v4096]], [[6.1.0-12U|v5124]], [[7.0.0-13|v5136]]<br />
| [[4.0.0-7|v0]], [[4.4.0-10|v4096]]<br />
| [[4.0.0-7|v1]], [[4.4.0-10|v4096]], [[7.0.0-13|v5120]]<br />
| [[4.1.0-8|v1]], [[4.4.0-10|v4096]]<br />
| Active<br />
|-<br />
| 00020900<br />
| 00021900<br />
| 00022900<br />
| N/A<br />
| 00027900<br />
| 00028900<br />
| [[eShop]] (tiger)<br />
| [[2.0.0-2|v4]], [[2.1.0-3|v1026]], [[3.0.0-5|v2057]], [[4.0.0-7|v3081]], [[4.1.0-8|v4096]], [[4.2.0-9|v5123]], [[4.3.0-10|v6146]], [[5.0.0-11|v7169]], [[7.0.0-13|v8206]], [[7.1.0-14|v9231]], [[7.2.0-17|v10245]], [[8.0.0-18|v11265]], [[8.1.0-19|v12288]], [[9.0.0-20|v13320]], [[9.3.0-21|v15366]], [[9.5.0-22|v16384]]<br />
| [[2.0.0-2|v4]], [[2.1.0-3|v1026]], [[3.0.0-5|v2058]], [[4.0.0-7|v3081]], [[4.1.0-8|v4096]], [[4.2.0-9|v5123]], [[4.3.0-10|v6146]], [[5.0.0-11|v7171]], [[7.0.0-13|v8206]], [[7.1.0-14|v9231]], [[7.2.0-17|v10245]], [[8.0.0-18|v11265]], [[8.1.0-19|v12288]], [[9.0.0-20|v13321]], [[9.3.0-21|v15366]], [[9.5.0-22|v16384]]<br />
| [[2.0.0-2|v4]], [[2.1.0-3|v1026]], [[3.0.0-5|v2058]], [[4.0.0-7|v3081]], [[4.1.0-8|v4096]], [[4.2.0-9|v5123]], [[4.3.0-10|v6146]], [[5.0.0-11|v7170]], [[7.0.0-13|v8206]], [[7.1.0-14|v9231]], [[7.2.0-17|v10246]], [[8.0.0-18|v11265]], [[8.1.0-19|v12288]], [[9.0.0-20|v13320]], [[9.3.0-21|v15366]], [[9.5.0-22|v16384]]<br />
| N/A<br />
| [[4.0.0-7|v3082]], [[4.1.0-8|v4096]], [[4.2.0-9|v5123]], [[4.3.0-10|v6146]], [[5.0.0-11|v7169]], [[7.0.0-13|v8205]], [[7.1.0-14|v9231]], [[8.1.0-19|v12288]], [[9.0.0-20|v13320]], [[9.3.0-21|v15366]], [[9.5.0-22|v16384]]<br />
| [[4.1.0-8|v4096]], [[4.2.0-9|v5123]], [[4.3.0-10|v6146]], [[5.0.0-11|v7170]], [[7.0.0-13|v8205]], [[7.1.0-14|v9231]], [[8.1.0-19|v12288]], [[9.3.0-21|v15366]], [[9.5.0-22|v16384]]<br />
| Active<br />
|-<br />
| 00020A00<br />
| 00021A00<br />
| 00022A00<br />
| N/A<br />
| 00027A00<br />
| 00028A00<br />
| [[System Transfer]] (CARDBOARD)<br />
| [[2.0.0-2|v4]], [[3.0.0-5|v1035]], [[4.0.0-7|v2050]], [[5.0.0-11|v3074]], [[7.0.0-13|v4109]], [[9.0.0-20|v5130]]<br />
| [[2.0.0-2|v4]], [[3.0.0-5|v1035]], [[4.0.0-7|v2050]], [[5.0.0-11|v3073]], [[7.0.0-13|v4109]], [[9.0.0-20|v5131]]<br />
| [[2.0.0-2|v4]], [[3.0.0-5|v1035]], [[4.0.0-7|v2051]], [[5.0.0-11|v3073]], [[7.0.0-13|v4109]], [[9.0.0-20|v5131]]<br />
| N/A<br />
| [[4.0.0-7|v2]], [[5.0.0-11|v1025]], [[7.0.0-13|v2061]], [[9.0.0-20|v3082]]<br />
| [[4.1.0-8|v2]], [[5.0.0-11|v1025]], [[7.0.0-13|v2061]]<br />
| Active<br />
|-<br />
| 00020B00<br />
| 00021B00<br />
| 00022B00<br />
| N/A<br />
| N/A<br />
| N/A<br />
| [[Nintendo Zone]] ("Nintendo")<br />
| [[1.0.0-0|v0]], [[3.0.0-5|v1034]]<br />
| Same as JPN<br />
| Same as JPN<br />
| N/A<br />
| N/A<br />
| N/A<br />
| Active<br />
|-<br />
| 00020D00<br />
| 00021D00<br />
| 00022D00<br />
| 00026D00<br />
| 00027D00<br />
| 00028D00<br />
| [[Face Raiders]]<br />
| [[1.0.0-0|v0]], [[2.1.0-4|v1028]]<br />
| [[1.0.0-0|v0]], [[2.1.0-4|v1028]], [[7.0.0-13|v1040]]<br />
| Same as EUR<br />
| [[4.0.0-7|v0]]<br />
| [[4.0.0-7|v0]]<br />
| [[4.1.0-8|v2]]<br />
| Active<br />
|-<br />
| 20020D00<br />
| 20021D00<br />
| 20022D00<br />
| N/A<br />
| N/A<br />
| N/A<br />
| [[New_3DS]] [[Face Raiders]]<br />
| [[8.1.0-0_New3DS|v2050]]<br />
| [[8.1.0-0_New3DS|v2049]]<br />
| Same as EUR.<br />
| N/A<br />
| N/A<br />
| N/A<br />
| Active<br />
|-<br />
| 00020E00<br />
| 00021E00<br />
| 00022E00<br />
| 00026E00<br />
| 00027E00<br />
| 00028E00<br />
| [[AR Games]] (AR_ACT)<br />
| [[1.0.0-0|v0]], [[2.1.0-4|v1026]]<br />
| [[1.0.0-0|v0]], [[2.1.0-4|v1026]], [[7.0.0-13|v1040]]<br />
| [[1.0.0-0|v0]], [[2.1.0-4|v1027]], [[7.0.0-13|v1040]]<br />
| [[4.0.0-7|v0]]<br />
| [[4.0.0-7|v0]], [[7.0.0-13|v16]]<br />
| [[4.1.0-8|v1]]<br />
| Active<br />
|-<br />
| 00020F00<br />
| 00021F00<br />
| 00022F00<br />
| 00026F00<br />
| 00027F00<br />
| 00028F00<br />
| SAFE_MODE [[System Settings#System Updater|System Updater]] (mset)<br />
| [[1.0.0-0|v0]], [[3.0.0-5|v1024]], [[6.0.0-11|v2049]]<br />
| [[1.0.0-0|v0]], [[3.0.0-5|v1024]], [[6.0.0-11|v2050]]<br />
| Same as JPN<br />
| [[4.0.0-7|v1]], [[6.0.0-11|v1026]]<br />
| [[4.0.0-7|v1]]<br />
| [[4.1.0-8|v1]]<br />
| Active<br />
|-<br />
| 00023000<br />
| 00024000<br />
| 00025000<br />
| N/A<br />
| N/A<br />
| N/A<br />
| Promotional video<br />
| [[1.1.0-1|v2]], [[2.0.0-2|v2048]]<br />
| [[1.1.0-1|v<unknown>]], [[2.0.0-2|v2048]]<br />
| [[1.1.0-1|v0]], [[2.0.0-2|v2048]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| Stubbed<br />
|-<br />
| 0002BF00<br />
| 0002C000<br />
| 0002C100<br />
| N/A<br />
| N/A<br />
| N/A<br />
| Nintendo Network ID Settings (act)<br />
| [[7.0.0-13|v14]], [[7.2.0-17|v1029]], [[9.0.0-20|v2051]], [[9.3.0-21|v3072]]<br />
| Same as JPN<br />
| Same as JPN<br />
| N/A<br />
| N/A<br />
| N/A<br />
| Active<br />
|-<br />
| 20023100<br />
| 20024100<br />
| 20025100<br />
| N/A<br />
| N/A<br />
| N/A<br />
| [[microSD Management]] ('mcopy') ([[New_3DS]]-only)<br />
| [[8.1.0-0_New3DS|v8]], [[9.0.0-20|v1024]]<br />
| [[8.1.0-0_New3DS|v4]]<br />
| [[8.1.0-0_New3DS|v5]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| Available<br />
|-<br />
| 2002C800<br />
| 2002CF00<br />
| 2002D000<br />
| N/A<br />
| N/A<br />
| N/A<br />
| [[New_3DS]]-only, currently stubbed. Placeholder exheader name is "menu".<br />
| [[8.1.0-0_New3DS|v2]], [[9.0.0-20|v18]], [[9.3.0-21|v34]]<br />
| [[8.1.0-0_New3DS|v1]], [[9.3.0-21|v17]]<br />
| [[8.1.0-0_New3DS|v1]], [[9.3.0-21|v18]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| Stubbed<br />
|-<br />
| 2002C900<br />
| 2002D100<br />
| 2002D200<br />
| N/A<br />
| N/A<br />
| N/A<br />
| [[New_3DS]]-only, currently stubbed. Placeholder exheader name is "friend".<br />
| [[8.1.0-0_New3DS|v1]]<br />
| Same as JPN.<br />
| [[8.1.0-0_New3DS|v0]], [[9.3.0-21|v16]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| Stubbed<br />
|-<br />
| 2002CA00<br />
| 2002D300<br />
| 2002D400<br />
| N/A<br />
| N/A<br />
| N/A<br />
| [[New_3DS]]-only, currently stubbed. Placeholder exheader name is "newslist".<br />
| [[8.1.0-0_New3DS|v0]], v1([[Home_Menu|JPN-only]] Oct 2, 2014 "sysupdate", actually uploaded on 09-29-14. Identical to v0, same TMDs besides title-versions)<br />
| [[8.1.0-0_New3DS|v2]]<br />
| [[8.1.0-0_New3DS|v0]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
| Stubbed<br />
|-<br />
| 2002CB00<br />
| 2002D500<br />
| 2002D600<br />
| N/A<br />
| N/A<br />
| N/A<br />
| [[New_3DS]]-only, currently stubbed. Placeholder exheader name is "cherry".<br />
| [[8.1.0-0_New3DS|v0]], [[9.0.0-20|v1]]<br />
| [[8.1.0-0_New3DS|v2]]<br />
| Same as EUR.<br />
| N/A<br />
| N/A<br />
| N/A<br />
| Stubbed<br />
|}<br />
<br />
The "act" application seems to use a web browser with webkit?<br />
<br />
Regardless of version, the ExeFS:/.code for mset is the same for USA/EUR/JPN. The [[4.0.0-7]] version of mset([[4.1.0-8]] for TWN) has the same ExeFS:/.code for all regions(JPN, USA, EUR, CHN, KOR, TWN). The [[5.0.0-11]] mset ExeFS:/.code is the same for all regions as well, except for CHN. The [[7.0.0-13]] mset ExeFS:/.code is unique for the following regions: CHN, KOR, and TWN.<br />
<br />
=== 0004001B - [[NCCH#CFA|System Data Archives]] ===<br />
{| class="wikitable" border="1"<br />
|-<br />
! TitleID Low<br />
! Description<br />
! Versions<br />
|-<br />
| 00010002<br />
| [[ClCertA]]<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 00010702<br />
| [[NS CFA]]<br />
| [[3.0.0-5|v0]], [[6.0.0-11|v1028]], [[6.3.0-12|v2048]], [[7.0.0-13|v3073]], [[9.0.0-20|v4096]](also for [[8.1.0-0_New3DS]])<br />
|-<br />
| 00010802<br />
| This CFA only contains a 1-byte "dummy.txt" in the RomFS, which contains '0'.<br />
| [[6.3.0-12|v0]], [[9.5.0-23|v1024]]<br />
|-<br />
| 00018002<br />
| Same contents as 00010802. Starting with [[7.1.0-15]], the "dummy.txt" file was removed from RomFS: this CFA RomFS now contains web-browser data(similar to 00018102) for NNID / networking, etc.<br />
| [[7.0.0-13|v14]], [[7.1.0-15|v1025]], [[7.2.0-17|v2055]], [[9.0.0-20|v3078]], [[9.3.0-21|v4096]]<br />
|-<br />
| 00018102<br />
| This contains local web-browser data(html/js, gfx, etc) for the Miiverse Offline-mode.<br />
| [[7.0.0-13|v11]], [[9.0.0-20|v1025]](also for [[8.1.0-0_New3DS]])<br />
|-<br />
| 00018202<br />
| This contains the webkit/OSS [[CRO0|CROs]] used with the Miiverse applet and the "act" application.<br />
| [[7.0.0-13|v7]], [[8.1.0-0_New3DS|v1026]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v2050]]<br />
|-<br />
| 00019002<br />
| [[Fangate_updater]]<br />
| [[9.3.0-21|v2]]<br />
|}<br />
<br />
=== 00040030 - Applets===<br />
{| class="wikitable" border="1"<br />
|-<br />
! JPN TitleIDLow<br />
! USA TitleIDLow<br />
! EUR TitleIDLow<br />
! Description<br />
! JPN Versions<br />
! USA Versions<br />
! EUR Versions<br />
|-<br />
| 00008102<br />
| 00008102<br />
| 00008102<br />
| [[NS#Alternate menu|Alternate menu]]<br />
| N/A<br />
|-<br />
| 00008202<br />
| 00008F02<br />
| 00009802<br />
| [[Home Menu|SYSMENU]] (menu)<br />
| v0, v1029, v2049, [[2.2.0-X|v3075]], v4111, v5131, [[4.2.0-9|v6146]], [[5.0.0-11|v7172]], [[6.0.0-11|v8198]], [[7.0.0-13|v9230]], [[8.1.0-0_New3DS|v10250]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v13313]], [[9.1.0-20J|v14336]], [[9.2.0-20|v15360]], [[9.3.0-21|v16402]], [[9.4.0-21|v17408]], [[9.5.0-22|v18432]]<br />
| v0, v1029, v2049, [[2.2.0-X|v3075]], v4111, v5131, [[4.2.0-9|v6146]], [[5.0.0-11|v7172]], [[6.0.0-11|v8198]], [[7.0.0-13|v9230]], [[8.1.0-0_New3DS|v10250]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v11272]], [[9.2.0-20|v12288]], [[9.3.0-21|v13330]], [[9.4.0-21|v14336]], [[9.5.0-22|v15360]]<br />
| v0, v1029, v2049, [[2.2.0-X|v3075]], v4111, v5131, [[4.2.0-9|v6146]], [[5.0.0-11|v7172]], [[6.0.0-11|v8198]], [[7.0.0-13|v9230]], [[8.1.0-0_New3DS|v10250]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v11272]], [[9.2.0-20|v12288]], [[9.3.0-21|v13330]], [[9.4.0-21|v14336]], [[9.5.0-22|v15360]]<br />
|-<br />
| 00008402<br />
| 00009002<br />
| 00009902<br />
| Camera applet used by Home-menu (CtrApp)<br />
| v0, v1036, [[9.0.0-20|v2049]](Also for [[8.1.0-0_New3DS]])<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 00008502<br />
| 00009102<br />
| 00009A02<br />
| Not available on CDN<br />
| ?<br />
| <br />
| <br />
|-<br />
| 00008602<br />
| 00009202<br />
| 00009B02<br />
| Instruction Manual, applet for displaying instruction manuals<br />
| v0, v1026, v2048, v3072, [[5.0.0-11|v4097]], [[9.0.0-20|v5120]](Also for [[8.1.0-0_New3DS]])<br />
| Same as JPN<br />
|-<br />
| 00008702<br />
| 00009302<br />
| 00009C02<br />
| Game Notes (Cherry)<br />
| v0, v1026, v2049, [[5.0.0-11|v3073]], [[9.0.0-20|v4096]](Also for [[8.1.0-0_New3DS]])<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 00008802<br />
| 00009402<br />
| 00009D02<br />
| [[Internet Browser]] (spider)<br />
| [[2.0.0-2|v6]], [[2.1.0-4|v1024]], [[4.0.0-7|v2050]], [[5.0.0-11|v3074 (EUR)/v3075(USA,JAP)]], [[7.0.0-13|v3088]], [[7.1.0-16|v4096]], [[9.5.0-23|v5121]]<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 20008802<br />
| 20009402<br />
| 20009D02<br />
| [[New_3DS]] [[Internet Browser]] (SKATER)<br />
| [[8.1.0-0_New3DS|v10]], [[9.3.0-21|v1027]]<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 00008A02<br />
| 00008A02<br />
| 00008A02<br />
| [[ErrDisp]]<br />
| v0, v1025, [[2.2.0-X|v2048]], [[3.0.0-5|v3072]], [[4.0.0-7|v4096]], [[5.0.0-11|v5121]], [[8.0.0-18|v6144]], [[9.0.0-20|v7168]](Also for [[8.1.0-0_New3DS]])<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 00008A03<br />
| 00008A03<br />
| 00008A03<br />
| SAFE_MODE [[ErrDisp]]<br />
| v0<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 20008A03<br />
| 20008A03<br />
| 20008A03<br />
| [[New_3DS]] SAFE_MODE [[ErrDisp]]<br />
| [[8.1.0-0_New3DS|v7169]]<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 00008D02<br />
| 00009602<br />
| 00009F02<br />
| Friend List (friend)<br />
| v0, v1026, [[2.2.0-X|v2051]], v3082, v4099, [[7.0.0-13|v5120]], [[9.0.0-20|v6144]](Also for [[8.1.0-0_New3DS]]) (EUR v6, v1024, v3082, v4099, [[7.0.0-13|v5120]], [[9.0.0-20|v6144]])<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 00008E02<br />
| 00009702<br />
| 0000A002<br />
| Notifications (newslist)<br />
| v0, v1029, v2054, v3075, [[9.0.0-20|v4097]] (EUR v6, v1024, v2054, v3075, [[9.0.0-20|v4097]]) (JPN: ..., [[8.1.0-0_New3DS|v4096]], [[9.0.0-20|v5121]])<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 0000C002<br />
| 0000C802<br />
| 0000D002<br />
| Software Keyboard (swkbd)<br />
| v0, v1026, v2053, [[7.0.0-13|v3072]], [[9.0.0-20|v4096]](Also for [[8.1.0-0_New3DS]])<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 0000C003<br />
| 0000C803<br />
| 0000D003<br />
| SAFE_MODE Software Keyboard (swkbd)<br />
| v0<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 2000C003<br />
| 2000C803<br />
| 2000D003<br />
| [[New_3DS]] SAFE_MODE Software Keyboard (swkbd)<br />
| [[8.1.0-0_New3DS|v0]](for JPN this is v1024)<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 0000C102<br />
| 0000C902<br />
| 0000D102<br />
| appletEd<br />
| v0, v1026, [[9.0.0-20|v2048]](Also for [[8.1.0-0_New3DS]]), [[9.3.0-21|v3077]]<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 0000C302<br />
| 0000CB02<br />
| 0000D302<br />
| PNOTE_AP (Photo file selector applet, for SD-card/etc?)<br />
| v0, v1024, [[8.1.0-0_New3DS|v2049]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v3075]], [[9.3.0-21|v4096]]<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 0000C402<br />
| 0000CC02<br />
| 0000D402<br />
| SNOTE_AP (Sound file selector applet, for SD-card/etc?)<br />
| v0, v3, [[8.0.0-18|v1026]], [[9.0.0-20|v2048]](Also for [[8.1.0-0_New3DS]])<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 0000C502<br />
| 0000C502<br />
| 0000C502<br />
| error (This applet displays networking errors, etc)<br />
| v0, v1026, v2053, v3074, [[8.1.0-0_New3DS|v4096]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v5128]]<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 0000C503<br />
| 0000C503<br />
| 0000C503<br />
| SAFE_MODE error applet<br />
| v0<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 2000C503<br />
| 2000C503<br />
| 2000C503<br />
| [[New_3DS]] SAFE_MODE error applet<br />
| [[8.1.0-0_New3DS|v1024]]<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 0000CD02<br />
| 0000CD02<br />
| 0000CD02<br />
| extrapad ([[Circle Pad Pro]] calibration applet)<br />
| v1, v1026, [[8.1.0-0_New3DS|v2048]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v3073]]<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 0000C602<br />
| 0000CE02<br />
| 0000D602<br />
| mint. eShop applet, used by applications for accessing the eShop, for DLC/etc. Also used by the eShop application itself.<br />
| v5, v1028, [[4.2.0-9|v2050]], [[5.0.0-11|v3072]], [[7.0.0-13|v4109]], [[7.2.0-17|v5125]](v5123 for JPN), [[8.0.0-18|v6145]], [[8.1.0-0_New3DS|v7168]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v8200]], [[9.3.0-21|v9224]]<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 0000BC02<br />
| 0000BD02<br />
| 0000BE02<br />
| olv (Miiverse applet)<br />
| [[7.0.0-13|v14]], [[7.2.0-17|v1024]], [[9.0.0-20|v2048]](Also for [[8.1.0-0_New3DS]]), [[9.3.0-21|v3072]]<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 0000F602<br />
| 0000F602<br />
| 0000F602<br />
| memolib (Uses Miiverse, likely the "system library" for Miiverse)<br />
| [[7.0.0-13|v5]], [[8.1.0-0_New3DS|v1024]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v2050]], [[9.3.0-21|v3072]]<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 00008302<br />
| 00008B02<br />
| 0000BA02<br />
| solv3 (Miiverse-posting applet)<br />
| [[9.0.0-20|v6]]<br />
| Same as JPN<br />
| Same as JPN<br />
|-<br />
| 00009502<br />
| 00009E02<br />
| 0000B902<br />
| Cabinet ([[amiibo Settings]])<br />
| [[9.3.0-21|v7]]<br />
| Same as JPN<br />
| Same as JPN<br />
|}<br />
<br />
Most of these processes are applets. There can only be one application here(Home Menu, Internet Browser, Friend-List, etc) with programID-high 00040030 running at a time. When directly launching one of these 00040030 applications with Home Menu, the Home Menu process will terminate once the process is launched. When returning to Home Menu from that launched process, the Home Menu process is launched again.<br />
<br />
All of the above processes use the "SYSTEM" [[SVC|memory-region]].<br />
<br />
The ExeFS for Home Menu is exactly the same for USA/EUR/JPN.<br />
<br />
The Miiverse applet seems to use a web browser with webkit.<br />
<br />
=== 0004009B - [[NCCH#CFA|System Data Archives]] (Shared Archives) ===<br />
{| class="wikitable" border="1"<br />
|-<br />
! JPN TitleIDLow<br />
! USA TitleIDLow<br />
! EUR TitleIDLow<br />
! Description<br />
! Versions<br />
|-<br />
| 00010202<br />
| 00010202<br />
| 00010202<br />
| Probably Mii-related, contains "CFL_Res.dat" in the RomFS.<br />
| v0<br />
|-<br />
| 00010302<br />
| 00010302<br />
| 00010302<br />
| Doesn't exist on CDN?<br />
| v0, v2052<br />
|-<br />
| 00010402<br />
| 00010402<br />
| 00010402<br />
| Mounted as "area:", contains Country and Region names<br />
| v0, v1024, v2050, v3072, [[7.0.0-13|v4098]]<br />
|-<br />
| 00010502<br />
| 00010502<br />
| 00010502<br />
| Doesn't exist on CDN?<br />
| v0, v1024, v2048<br />
|-<br />
| 00010602<br />
| 00010602<br />
| 00010602<br />
| Non-Nintendo TLS Root-CA Certificates (RomFS contains files with filename "CACERT_PUBLIC_CA_<val>.der", where <val> is 5..8)<br />
| v2<br />
|-<br />
| 00011902<br />
| ?<br />
| ?<br />
| ?<br />
| v0<br />
|-<br />
| ?<br />
| 00011402<br />
| ?<br />
| ?<br />
| v0<br />
|-<br />
| ?<br />
| 00011602<br />
| ?<br />
| ?<br />
| v0<br />
|-<br />
| ?<br />
| 00011D02<br />
| ?<br />
| ?<br />
| v0<br />
|-<br />
| ?<br />
| 00011E02<br />
| ?<br />
| ?<br />
| v0<br />
|-<br />
| ?<br />
| ?<br />
| 00011202<br />
| ?<br />
| v0<br />
|-<br />
| ?<br />
| ?<br />
| 00011302<br />
| ?<br />
| v0<br />
|-<br />
| ?<br />
| ?<br />
| 00011502<br />
| ?<br />
| v0<br />
|-<br />
| ?<br />
| ?<br />
| 00011702<br />
| ?<br />
| v0<br />
|-<br />
| ?<br />
| ?<br />
| 00011802<br />
| ?<br />
| v0<br />
|-<br />
| 00011902<br />
| ?<br />
| ?<br />
| ?<br />
| v0<br />
|-<br />
| ?<br />
| ?<br />
| 00011B02<br />
| ?<br />
| v0<br />
|-<br />
| ?<br />
| ?<br />
| 00011C02<br />
| ?<br />
| v0<br />
|-<br />
| ?<br />
| ?<br />
| 00011D02<br />
| ?<br />
| v0<br />
|-<br />
| ?<br />
| ?<br />
| 00012102<br />
| ?<br />
| v0, v1026, v2051, v3074<br />
|-<br />
| 00012202<br />
| 00012302<br />
| 00012102<br />
| ?contains a lists with error strings<br />
| v1026, v2053, v3073, [[4.2.0-9|v4096]], [[5.0.0-11|v5120]], [[7.0.0-13|v6149]], [[7.2.0-17|v7168]], [[8.0.0-18|v8192]], [[9.0.0-20|v9218]], [[9.3.0-21|v10242]]<br />
|-<br />
| 00013202<br />
| 00013302<br />
| 00013102<br />
| Mounted as "eula:"<br />
| v0, v1024, v2049 USA: v1024, v2051, [[7.0.0-13|v3074]], [[7.2.0-17|v4100]](EUR-only), [[9.0.0-20|v4099]]<br />
|-<br />
| 00014002<br />
| 00014002<br />
| 00014002<br />
| JPN/EUR/USA System Font ("font:")<br />
| v0<br />
|-<br />
| 00014102<br />
| 00014102<br />
| 00014102<br />
| CHN System Font ("font:")<br />
| v0, v1024<br />
|-<br />
| 00014202<br />
| 00014202<br />
| 00014202<br />
| KOR System Font ("font:")<br />
| v0, v1024<br />
|-<br />
| 00014302<br />
| 00014302<br />
| 00014302<br />
| TWN System Font ("font:")<br />
| v0, v1024<br />
|-<br />
| 00015202<br />
| 00015302<br />
| 00015102<br />
| Mounted as "rate:"<br />
| v0 (EUR: v0, v1024)<br />
|-<br />
| ?<br />
| 00016302<br />
| ?<br />
| ?<br />
| v80<br />
|-<br />
| ?<br />
| 00017302<br />
| ?<br />
| ?<br />
| v3088<br />
|}<br />
<br />
=== 000400DB - [[NCCH#CFA|System Data Archives]] ===<br />
These [[NVer]] titleIDs can be found @ offset 0x320 in every [[CCI]].<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! EUR TitleIDLow<br />
! JPN TitleIDLow<br />
! USA TitleIDLow<br />
! CHN TitleIDLow<br />
! KOR TitleIDLow<br />
! TWN TitleIDLow<br />
! Description<br />
! USA/EUR/JPN Versions<br />
! CHN Versions<br />
! TWN Versions<br />
! KOR Versions<br />
|-<br />
| 00010302<br />
| 00010302<br />
| 00010302<br />
| 00010302<br />
| 00010302<br />
| 00010302<br />
| NGWord bad word list<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1024]], [[3.0.0-5|v2052]], [[4.0.0-7|v3072]], [[4.3.0-10|v4096]], [[5.0.0-11|v5120]], [[9.0.0-20|v6144]], [[9.3.0-21|v7168]]<br />
| Same as USA<br />
| Same as USA<br />
| Same as USA<br />
|-<br />
| 00010502<br />
| 00010502<br />
| 00010502<br />
| 00010502<br />
| 00010502<br />
| 00010502<br />
| [[Nintendo Zone]] hotspot list<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1024]], [[3.0.0-5|v2048]], [[4.0.0-7|v3073]], [[4.3.0-10|v4096]], [[4.4.0-10|v5120]], [[4.5.0-10|v6144]], [[5.0.0-11|v7169]], [[6.0.0-11|v8192]], [[6.2.0-12|v9216]], [[7.0.0-13|v10242]], [[7.2.0-17|v11267]], [[8.0.0-18|v12288]], [[9.0.0-20|v14336]], [[9.3.0-21|v15360]]<br />
| Same as USA<br />
| Same as USA<br />
| Same as USA<br />
|-<br />
| 00016102<br />
| 00016202<br />
| 00016302<br />
| 00016402<br />
| 00016502<br />
| 00016602<br />
| [[NVer]]<br />
| [[1.0.0-0|v0]], [[1.1.0-1|v16]], [[2.0.0-2|v32]], [[2.1.0-3|v48]], [[2.1.0-4|v64]], [[3.0.0-5|v80]], [[3.0.0-6|v96]], [[4.0.0-7|v112]], [[4.1.0-8|v128]], [[4.2.0-9|v144]], [[4.3.0-10|v160]], [[5.0.0-11|v176]], non-USA=[[6.0.0-11|v192]]/USA=[[6.1.0-12U|v192]], [[7.0.0-13|v208]], [[7.1.0-14|v224]], [[7.1.0-15|v240]], [[7.1.0-16|v256]], [[7.2.0-17|v272]], [[8.0.0-18|v288]], [[8.1.0-19|v304]], [[9.0.0-20|v320]], [[9.3.0-21|v336]], [[9.5.0-22|v352]], [[9.5.0-23|v368]]<br />
| [[4.0.0-7|v113]], [[4.2.0-9|v128]], [[5.0.0-11|v129]], [[7.1.0-16|v130]], [[7.2.0-17|v272]], [[9.5.0-23|v131]]<br />
| [[4.1.0-8|v114]], [[4.2.0-9|v133]], [[4.3.0-10|v134]], [[5.0.0-11|v136]], [[7.0.0-13|v144]], [[7.1.0-14|v160]] [[7.1.0-16|v192]], [[7.2.0-17|v272]], [[8.0.0-18|v208]], [[8.1.0-19|v224]], [[9.0.0-20|v240]], [[9.5.0-22|v272]], [[9.5.0-23|v288]]<br />
| [[4.0.0-7|v113]], [[4.1.0-8|v114]], [[4.2.0-9|v133]], [[4.3.0-10|v134]], [[5.0.0-11|v136]], [[7.0.0-13|v160]], [[7.1.0-14|v176]], [[7.1.0-16|v176]], [[7.2.0-17|v272]], [[8.0.0-18|v224]], [[8.1.0-19|v240]], [[9.0.0-20|v256]], [[9.3.0-21|v272]], [[9.5.0-22|v288]], [[9.5.0-23|v304]]<br />
|-<br />
| 20016102<br />
| 20016202<br />
| 20016302<br />
| N/A<br />
| N/A<br />
| N/A<br />
| [[New_3DS]] [[NVer]]<br />
| [[8.1.0-0_New3DS|v0]], [[9.0.0-20|v320]], [[9.3.0-21|v336]], [[9.5.0-22|v352]], [[9.5.0-22|v352]], [[9.5.0-23|v368]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
|-<br />
| 00017102<br />
| 00017202<br />
| 00017302<br />
| 00017402<br />
| 00017502<br />
| 00017602<br />
| [[CVer]]<br />
| [[1.0.0-0|v1024]], [[1.1.0-1|v1045]], [[2.0.0-2|v2049]], [[2.1.0-3|v2069]], [[2.2.0-X|v2088]] [[3.0.0-5|v3088]], [[4.0.0-7|v4098]], [[4.1.0-8|v4113]], [[4.2.0-9|v4130]], [[4.3.0-10|v4145]], [[4.4.0-10|v4163]], [[4.5.0-10|v4176]], [[5.0.0-11|v5120]], [[5.1.0-11|v5136]], [[6.0.0-11|v6146]], [[6.1.0-11|v6160]], [[6.2.0-12|v6178]], [[6.3.0-12|v6192]], [[7.0.0-13|v7175]], [[7.1.0-14|v7187]], [[7.2.0-17|v7203]], [[8.0.0-18|v8196]], [[8.1.0-18|v8208]], [[8.1.0-0_New3DS|v8215]](8.1.0-0_New3DS), [[9.0.0-20|v9218]], [[9.1.0-20J|v9232]](JPN-only), [[9.2.0-20|v9248]], [[9.3.0-21|v9264]], [[9.4.0-21|v9280]], [[9.5.0-22|v9296]]<br />
| [[1.0.0-0|v1024]], [[1.1.0-1|v1045]], [[2.0.0-2|v2049]], [[2.1.0-3|v2069]], [[2.2.0-X|v2088]] [[3.0.0-5|v3088]], [[4.0.0-7|v4098]], [[4.1.0-8|v4113]], [[4.2.0-9|v4130]], [[4.3.0-10|v4145]], [[4.4.0-10|v4163]], [[4.5.0-10|v4176]], [[5.0.0-11|v5120]], [[5.1.0-11|v5136]], [[6.0.0-11|v6146]], [[6.1.0-11|v6160]], [[6.2.0-12|v6178]], [[6.3.0-12|v6192]], [[7.0.0-13|v7175]], [[7.1.0-14|v7187]], [[7.2.0-17|v7203]], [[8.0.0-18|v8196]], [[8.1.0-18|v8208]], [[9.0.0-20|v9217]], [[9.3.0-21|v9264]], [[9.5.0-22|v9296]]<br />
| Same as CHN<br />
| Same as CHN<br />
|}<br />
<br />
=== 00040130 - System [[Services API|Modules]] ===<br />
{| class="wikitable" border="1"<br />
|-<br />
! TitleID Low<br />
! Description<br />
! Versions<br />
|-<br />
| 00001002<br />
| sm (Stored in [[FIRM|NATIVE_FIRM]])<br />
| N/A<br />
|-<br />
| 00001102<br />
| [[Filesystem services‎|fs]] (Stored in [[FIRM|NATIVE_FIRM]])<br />
| N/A<br />
|-<br />
| 00001202<br />
| [[Process Manager Services|pm]] (Stored in [[FIRM|NATIVE_FIRM]])<br />
| N/A<br />
|-<br />
| 00001302<br />
| loader (Stored in [[FIRM|NATIVE_FIRM]])<br />
| N/A<br />
|-<br />
| 00001402<br />
| pxi (Stored in [[FIRM|NATIVE_FIRM]])<br />
| N/A<br />
|-<br />
| 00001502<br />
| [[Application Manager Services|AM]] ( Application Manager )<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[3.0.0-5|v2053]], [[4.0.0-7|v3072]], [[5.0.0-11|v4098]], [[6.0.0-11|v5120]], [[8.0.0-18|v6148]], [[8.1.0-0_New3DS|v7168]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v8192]]<br />
|-<br />
| 00001503<br />
| SAFE_MODE AM<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20001503<br />
| [[New_3DS]] SAFE_MODE AM<br />
| [[8.1.0-0_New3DS|v7169]]<br />
|-<br />
| 00001602<br />
| Camera<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[3.0.0-5|v2048]], [[4.0.0-7|v3074]], [[5.0.0-11|v4098]], [[6.0.0-11|v5120]], [[7.1.0-14|v6146]], [[8.0.0-18|v7172]], [[9.0.0-20|v9216]], [[9.3.0-21|v10242]]<br />
|-<br />
| 20001602<br />
| [[New_3DS]] Camera<br />
| [[8.1.0-0_New3DS|v8200]], [[9.0.0-20|v9218]], [[9.3.0-21|v10242]]<br />
|-<br />
| 00001702<br />
| [[Config Services|Config]] (cfg)<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1024]], [[3.0.0-5|v2049]], v3072, [[4.0.0-7|v4096]], [[5.0.0-11|v5122]], [[6.0.0-11|v6145]], [[6.1.0-11|v7168]], [[7.0.0-13|v8196]], [[7.2.0-17|v9220]], [[8.0.0-18|v10243]], [[8.1.0-0_New3DS|v11265]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v12290]], [[9.3.0-21|v13315]]<br />
|-<br />
| 00001703<br />
| SAFE_MODE Config (cfg)<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20001703<br />
| [[New_3DS]] SAFE_MODE Config (cfg)<br />
| [[8.1.0-0_New3DS|v11265]]<br />
|-<br />
| 00001802<br />
| Codec<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1025]], [[2.2.0-X|v2048]], [[3.0.0-5|v3072]], [[5.0.0-11|v4098]], [[7.0.0-13|v5120]], [[8.0.0-18|v6144]], [[9.0.0-20|v7168]](Also for [[8.1.0-0_New3DS]])<br />
|-<br />
| 00001803<br />
| SAFE_MODE Codec<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20001803<br />
| [[New_3DS]] SAFE_MODE Codec<br />
| [[8.1.0-0_New3DS|v7169]]<br />
|-<br />
| 00001902<br />
| dmnt, debugger sysmodule. This use devunit-only HIO for devunit<>pc comms. This only exists for development units(launched by NS during startup depending on certain [[Configuration_Memory]] fields' values). This is installed at the [[Factory_Setup|factory]], then later deleted at the factory on retail units.<br />
| <br />
|-<br />
| 00001A02<br />
| DSP<br />
| [[1.0.0-0|v0]], [[3.0.0-5|v1024]], [[4.0.0-7|v2048]], [[5.0.0-11|v3074]], [[6.0.0-11|v4096]], [[8.0.0-18|v5120]]<br />
|-<br />
| 00001A03<br />
| SAFE_MODE DSP<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20001A03<br />
| [[New_3DS]] SAFE_MODE DSP<br />
| [[8.1.0-0_New3DS|v6145]]<br />
|-<br />
| 00001B02<br />
| GPIO<br />
| [[1.0.0-0|v0]], [[5.0.0-11|v1025]], [[8.0.0-18|v2048]], [[9.5.0-22|v3073]]<br />
|-<br />
| 00001B03<br />
| SAFE_MODE GPIO<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20001B03<br />
| [[New_3DS]] SAFE_MODE GPIO<br />
| [[8.1.0-0_New3DS|v3073]]<br />
|-<br />
| 00001C02<br />
| GSP<br />
| [[1.0.0-0|v0]], [[1.1.0-1|v1040]], [[2.0.0-2|v2049]], [[3.0.0-5|v3075]], v4098, [[4.0.0-7|v5120]], [[5.0.0-11|v6145]], [[6.0.0-11|v7168]], [[8.0.0-18|v8196]], [[9.0.0-20|v10240]], [[9.3.0-21|v11264]]<br />
|-<br />
| 20001C02<br />
| [[New_3DS]] GSP<br />
| [[8.1.0-0_New3DS|v10243]], [[9.3.0-21|v11267]]<br />
|-<br />
| 00001C03<br />
| SAFE_MODE GSP<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20001C03<br />
| [[New_3DS]] SAFE_MODE GSP<br />
| [[8.1.0-0_New3DS|v9217]]<br />
|-<br />
| 00001D02<br />
| HID (Human Interface Devices) <br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1025]], [[2.2.0-X|v2048]], [[3.0.0-5|v3072]], [[4.0.0-7|v4096]], [[5.0.0-11|v5121]], [[7.2.0-17|v6148]], [[8.0.0-18|v7168]], [[8.1.0-0_New3DS|v8192]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v9216]], [[9.3.0-21|v10240]]<br />
|-<br />
| 00001D03<br />
| SAFE_MODE HID<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20001D03<br />
| [[New_3DS]] SAFE_MODE HID<br />
| [[8.1.0-0_New3DS|v8193]]<br />
|-<br />
| 00001E02<br />
| i2c<br />
| [[1.0.0-0|v0]], [[3.0.0-5|v1024]], [[5.0.0-11|v2049]], [[8.0.0-18|v3076]], [[9.3.0-21|v5120]]<br />
|-<br />
| 20001E02<br />
| [[New_3DS]] i2c<br />
| [[8.1.0-0_New3DS|v4096]], [[9.3.0-21|v5121]]<br />
|- <br />
| 00001E03<br />
| SAFE_MODE i2c<br />
| [[1.0.0-0|v0]]<br />
|- <br />
| 20001E03<br />
| [[New_3DS]] SAFE_MODE i2c<br />
| [[8.1.0-0_New3DS|v4097]]<br />
|-<br />
| 00001F02<br />
| MCU<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[2.1.0-3|v2048]], [[3.0.0-5|v3072]], [[4.0.0-7|v4102]], [[5.0.0-11|v5122]], [[6.0.0-11|v6145]], [[7.0.0-13|v7168]], [[8.0.0-18|v8192]]<br />
|-<br />
| 20001F02<br />
| [[New_3DS]] MCU<br />
| [[8.1.0-0_New3DS|v8192]]<br />
|-<br />
| 00001F03<br />
| SAFE_MODE MCU<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20001F03<br />
| [[New_3DS]] SAFE_MODE MCU<br />
| [[8.1.0-0_New3DS|v9217]]<br />
|-<br />
| 00002002<br />
| Microphone (mic)<br />
| [[1.0.0-0|v0]], [[5.0.0-11|v1025]], [[8.0.0-18|v2048]]<br />
|-<br />
| 00002102<br />
| PDN<br />
| [[1.0.0-0|v0]], [[5.0.0-11|v1025]], [[8.0.0-18|v2048]]<br />
|-<br />
| 00002103<br />
| SAFE_MODE PDN<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20002103<br />
| [[New_3DS]] SAFE_MODE PDN<br />
| [[8.1.0-0_New3DS|v3073]]<br />
|-<br />
| 00002202<br />
| PTM (Play time, pedometer, and battery manager)<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[2.2.0-X|v2048]], [[3.0.0-5|v3075]], v4096, [[4.0.0-7|v5120]], [[5.0.0-11|v6146]], [[6.0.0-11|v7168]], [[7.0.0-13|v8192]], [[8.0.0-18|v9219]]<br />
|-<br />
| 20002202<br />
| [[New_3DS]] PTM (Play time, pedometer, and battery manager)<br />
| [[8.1.0-0_New3DS|v10240]]<br />
|-<br />
| 00002203<br />
| SAFE_MODE PTM<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20002203<br />
| [[New_3DS]] SAFE_MODE PTM<br />
| [[8.1.0-0_New3DS|v10241]]<br />
|-<br />
| 00002302<br />
| spi<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1025]], [[5.0.0-11|v2049]], [[8.0.0-18|v3072]]<br />
|-<br />
| 20002302<br />
| [[New_3DS]] spi<br />
| [[8.1.0-0_New3DS|v4096]]<br />
|-<br />
| 00002303<br />
| SAFE_MODE spi<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20002303<br />
| [[New_3DS]] SAFE_MODE spi<br />
| [[8.1.0-0_New3DS|v4097]]<br />
|-<br />
| 00002402<br />
| Network manager (AC)<br />
| [[1.0.0-0|v0]], [[1.1.0-1|v1024]], [[2.0.0-2|v2052]], [[2.1.0-3|v3072]], [[3.0.0-5|v4101]], [[5.0.0-11|v5122]], [[7.0.0-13|v6145]], [[8.0.0-18|v7172]], [[9.0.0-20|v8192]](Also for [[8.1.0-0_New3DS]]), [[9.3.0-21|v9216]]<br />
|-<br />
| 00002403<br />
| SAFE_MODE AC<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20002403<br />
| [[New_3DS]] SAFE_MODE AC<br />
| [[8.1.0-0_New3DS|v8193]]<br />
|-<br />
| 00002602<br />
| Cecd (StreetPass)<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[2.2.0-X|v2048]], [[3.0.0-5|v3073]], [[4.0.0-7|v4097]], [[5.0.0-11|v5122]], [[6.0.0-11|v6144]], [[6.2.0-12|v7170]], [[7.0.0-13|v8193]], [[8.0.0-18|v9216]], [[9.0.0-20|v10240]]<br />
|-<br />
| 00002702<br />
| CSND<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1025]], [[4.0.0-7|v2048]], [[5.0.0-11|v3073]], [[8.0.0-18|v4096]], [[9.0.0-20|v5120]]<br />
|-<br />
| 00002703<br />
| SAFE_MODE CSND<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20002703<br />
| [[New_3DS]] SAFE_MODE CSND<br />
| [[8.1.0-0_New3DS|v5121]]<br />
|-<br />
| 00002802<br />
| dlp ([[Download Play]])<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[2.2.0-X|v2048]], [[3.0.0-5|v3078]], [[5.0.0-11|v4099]], [[8.0.0-18|v5123]], [[9.0.0-20|v6145]](Also for [[8.1.0-0_New3DS]])<br />
|-<br />
| 00002902<br />
| http<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[2.1.0-3|v2049]], [[2.2.0-X|v3072]], [[3.0.0-5|v4099]], [[4.0.0-7|v5122]], [[5.0.0-11|v6145]], [[7.0.0-13|v7171]], [[7.1.0-14|v8192]], [[8.0.0-18|v9220]], [[8.1.0-18|v10245]], [[8.1.0-0_New3DS|v11264]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v12288]]<br />
|-<br />
| 00002903<br />
| SAFE_MODE http<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20002903<br />
| [[New_3DS]] SAFE_MODE http<br />
| [[8.1.0-0_New3DS|v10241]]<br />
|-<br />
| 00002A02<br />
| MP<br />
| [[1.0.0-0|v0]], [[5.0.0-11|v1025]], [[8.0.0-18|v2048]]<br />
|-<br />
| 00002A03<br />
| SAFE_MODE MP<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 00002B02<br />
| NDM<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1025]], [[3.0.0-5|v2049]], [[4.0.0-7|v3072]], [[5.0.0-11|v4098]], [[8.0.0-18|v5124]], [[8.1.0-0_New3DS|v6144]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v7169]]<br />
|-<br />
| 00002C02<br />
| [[NIM Services|NIM]]<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1028]], [[3.0.0-5|v2055]], [[4.0.0-7|v3074]], [[5.0.0-11|v4100]], [[6.0.0-11|v5120]], [[7.0.0-13|v6148]], [[7.2.0-17|v7174]], [[8.0.0-18|v8195]], [[8.1.0-0_New3DS|v9217]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v10249]], [[9.3.0-21|v11267]]<br />
|-<br />
| 00002C03<br />
| SAFE_MODE NIM<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20002C03<br />
| [[New_3DS]] SAFE_MODE NIM<br />
| [[8.1.0-0_New3DS|v9217]]<br />
|-<br />
| 00002D02<br />
| NWM ( Low-level wifi manager )<br />
| [[1.0.0-0|v0]], [[1.1.0-1|v1024]], [[2.0.0-2|v2052]], [[2.2.0-X|v3072]], [[3.0.0-5|v4101]], [[4.0.0-7|v5120]], [[5.0.0-11|v6148]], [[6.0.0-11|v7169]], [[7.2.0-17|v8196]], [[8.0.0-18|v9216]], [[9.0.0-20|v10240]]<br />
|-<br />
| 00002D03<br />
| SAFE_MODE NWM<br />
| [[1.0.0-0|v0]], [[6.0.0-11|v5120]]<br />
|-<br />
| 20002D03<br />
| [[New_3DS]] SAFE_MODE NWM<br />
| [[8.1.0-0_New3DS|v10241]]<br />
|-<br />
| 00002E02<br />
| Sockets<br />
| [[1.0.0-0|v0]], [[1.1.0-1|v1024]], [[2.0.0-2|v2053]], [[3.0.0-5|v3075]], [[4.0.0-7|v4096]], [[5.0.0-11|v5121]], [[8.0.0-18|v6144]], [[9.0.0-20|v7168]]<br />
|-<br />
| 00002E03<br />
| SAFE_MODE Sockets<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20002E03<br />
| [[New_3DS]] SAFE_MODE Sockets<br />
| [[8.1.0-0_New3DS|v7169]]<br />
|-<br />
| 00002F02<br />
| SSL<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1024]], [[2.1.0-3|v2048]], [[3.0.0-5|v3072]], [[4.0.0-7|v4096]], [[5.0.0-11|v5122]], [[8.0.0-18|v6144]], [[9.0.0-20|v7168]]<br />
|-<br />
| 00002F03<br />
| SAFE_MODE SSL<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20002F03<br />
| [[New_3DS]] SAFE_MODE SSL<br />
| [[8.1.0-0_New3DS|v7169]]<br />
|-<br />
| 00003102<br />
| [[Process Services‎|PS]] ( Process Manager )<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1025]], [[5.0.0-11|v2049]], [[6.0.0-11|v3072]], [[8.0.0-18|v4096]], [[9.0.0-20|v5120]]<br />
|-<br />
| 00003103<br />
| SAFE_MODE PS<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20003103<br />
| [[New_3DS]] SAFE_MODE PS<br />
| [[8.1.0-0_New3DS|v5121]]<br />
|-<br />
| 00003202<br />
| FriendsList (friends)<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1028]], [[2.2.0-X|v2048]], [[3.0.0-5|v3072]], [[4.0.0-7|v4096]], [[5.0.0-11|v5122]], [[7.0.0-13|v6145]], [[8.0.0-18|v7172]], [[9.0.0-20|v8192]](Also for [[8.1.0-0_New3DS]])<br />
|-<br />
| 00003203<br />
| SAFE_MODE FriendsList (friends)<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20003203<br />
| [[New_3DS]] SAFE_MODE FriendsList (friends)<br />
| [[8.1.0-0_New3DS|v8193]]<br />
|-<br />
| 00003302<br />
| IR (Infrared)<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1026]], [[2.2.0-X|v2048]], [[3.0.0-5|v3072]], [[4.0.0-7|v4096]], [[5.0.0-11|v5121]], [[8.0.0-18|v6148]], [[8.1.0-0_New3DS|v7170]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v8192]], [[9.3.0-21|v9216]]<br />
|-<br />
| 00003303<br />
| SAFE_MODE IR<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20003303<br />
| [[New_3DS]] SAFE_MODE IR<br />
| [[8.1.0-0_New3DS|v7169]]<br />
|- <br />
| 00003402<br />
| BOSS (SpotPass)<br />
| [[1.0.0-0|v0]], [[1.1.0-1|v1024]], [[2.0.0-2|v2053]], [[2.2.0-X|v3073]], [[3.0.0-5|v4101]], [[4.0.0-7|v5122]], [[5.0.0-11|v6146]], [[6.0.0-11|v7169]], [[6.2.0-12|v8193]], [[7.0.0-13|v9222]], [[8.0.0-18|v10240]], [[9.0.0-20|v11266]]<br />
|-<br />
| 00003502<br />
| News (Notifications)<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1028]], [[2.2.0-X|v2048]], [[3.0.0-5|v3072]], [[5.0.0-11|v4097]], [[8.0.0-18|v5120]], [[9.0.0-20|v6147]]<br />
|-<br />
| 00003602<br />
| This only exist for development units(launched by NS during startup depending on certain [[Configuration_Memory]] fields' values).<br />
| <br />
|-<br />
| 00003702<br />
| [[RO_Services|RO]]<br />
| [[2.0.0-2|v0]], [[4.0.0-7|v1024]], [[5.0.0-11|v2049]], [[7.2.0-17|v3074]], [[8.0.0-18|v4096]], [[9.0.0-20|v5120]](Also for [[8.1.0-0_New3DS]]), [[9.3.0-21|v6148]]<br />
|-<br />
| 00003802<br />
| act (handles Nintendo Network '''a'''c'''c'''oun'''t'''s)<br />
| [[7.0.0-13|v1029]], [[7.1.0-14|v2050]], [[7.2.0-17|v3077]], [[8.0.0-18|v4099]], [[8.1.0-0_New3DS|v5120]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v6144]], [[9.3.0-21|v7168]]<br />
|-<br />
| 00004002<br />
| Old3DS [[NFC_Services|nfc]]<br />
| [[9.3.0-21|v2053]]<br />
|-<br />
| 20004002<br />
| [[New_3DS]] [[NFC_Services|nfc]]<br />
| [[8.1.0-0_New3DS|v0]], [[9.0.0-20|v1024]], [[9.3.0-21|v2053]], [[9.5.0-22|v3073]]<br />
|-<br />
| 20004102<br />
| [[New_3DS]] mvd<br />
| [[8.1.0-0_New3DS|v0]], [[9.0.0-20|v1024]]<br />
|-<br />
| 20004202<br />
| [[New_3DS]] [[QTM Services|qtm]]<br />
| [[8.1.0-0_New3DS|v8]], [[9.0.0-20|v1024]], [[9.3.0-21|v2052]]<br />
|-<br />
| 00008002<br />
| [[NS]] (Memory-region: "SYSTEM")<br />
| [[1.0.0-0|v0]], [[2.0.0-2|v1028]], [[2.2.0-X|v2048]], [[3.0.0-5|v3077]], v4096, [[4.0.0-7|v5121]], [[5.0.0-11|v6148]], [[5.1.0-11|v7168]], [[6.0.0-11|v8193]], [[6.1.0-11|v9216]], [[7.0.0-13|v10248]], [[7.2.0-17|v11268]], [[8.0.0-18|v12291]], [[8.1.0-0_New3DS|v13312]]([[8.1.0-0_New3DS]]), [[9.0.0-20|v14336]], [[9.3.0-21|v15360]]<br />
|-<br />
| 00008003<br />
| SAFE_MODE NS (Memory-region: "SYSTEM")<br />
| [[1.0.0-0|v0]]<br />
|-<br />
| 20008003<br />
| [[New_3DS]] SAFE_MODE NS (Memory-region: "SYSTEM")<br />
| [[8.1.0-0_New3DS|v13313]]<br />
|}<br />
<br />
Once Home Menu finishes loading, all of the above system modules are running, except for MP, RO, and act which are automatically [[Process_Manager_Services|loaded]] when a process requires them. When [[Process_Manager_Services|PM]]-module terminates processes, it will check whether the processes listed as dependencies for this process are listed as dependencies for other processes. Any processes which are no longer listed in any processes dependencies lists are then terminated. On [[New_3DS]], the only New3DS-specific system-module which automatically gets loaded during system boot is qtm.<br />
<br />
All of the above system modules use the "BASE" [[SVC|memory-region]](specified in the exheader), except when listed otherwise for certain modules.<br />
<br />
When handling the exheader dependency list starting with [[8.0.0-18]], Old3DS FIRM [[Process_Manager_Services|PM]]-module now skips handling titles in this list which have any bits in programID-low bitmask 0xF0000000 set(with [[8.0.0-18]] this is hard-coded). The exheader dependency list handling change is for the [[New 3DS]] system-module(s), which do not exist on Old3DS. When the New3DS pm-module is launching any title except [[NS]], it first attempts to launch the title with programID-low bitmask 0x20000000 set, then with that bitmask clear if launching fails.<br />
<br />
=== 00040138 - [[FIRM|System Firmware]] ===<br />
NATIVE_FIRM and SAFE_MODE_FIRM for the initial versions are exactly the same, besides [[Configuration_Memory|core-version]] fields. SAFE_MODE_FIRM is used for running SAFE_MODE titles, on retail SAFE_MODE_FIRM seems to be only used for running the [[System_Settings#System_Updater|System Updater]] application. When a GBA VC title is launched, AGB_FIRM is launched to handle running this title. GBA VC savegames stored under SD card /title/<TID>/data use a custom format, this is handled by AGB_FIRM.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! TitleID Low<br />
! Description<br />
! USA/EUR/JPN Versions<br />
! CHN Versions<br />
! KOR Versions<br />
! TWN Versions<br />
|-<br />
| 00000001<br />
| Unknown, very similar to SAFE_MODE_FIRM. Exists only on dev units and seems to only be used by SystemUpdaters.<br />
| v0<br />
| <br />
| <br />
| <br />
|-<br />
| 00000002<br />
| NATIVE_FIRM (Native Firmware)<br />
| [[1.0.0-0|v432]], [[1.1.0-1|v1472]], [[2.0.0-2|v2516]], [[2.1.0-3|v3553]], [[2.2.0-X|v4595]], [[3.0.0-5|v5647]], [[4.0.0-7|v6677]], [[4.1.0-8|v7712]], [[5.0.0-11|v8758]], [[5.1.0-11|v9792]], [[6.0.0-11|v10833]], [[6.1.0-11|v11872]], [[7.0.0-13|v12916]], [[7.2.0-17|v13956]], v15043, [[8.0.0-18|v15047]], [[9.0.0-20|v17120]], [[9.3.0-21|v18182]], [[9.5.0-22|v19216]]<br />
| Same as USA/EUR/JPN starting with the USA/EUR/JPN [[4.0.0-7]] title-version<br />
| Same as CHN.<br />
| Same as CHN.<br />
|-<br />
| 20000002<br />
| [[New_3DS]] NATIVE_FIRM (Native Firmware)<br />
| [[8.1.0-0_New3DS|v16085]], [[9.0.0-20|v17120]], [[9.3.0-21|v18182]], [[9.5.0-22|v19218]]<br />
| N/A<br />
| Same as CHN.<br />
| Same as CHN.<br />
|-<br />
| 00000003<br />
| SAFE_MODE_FIRM <br />
| [[1.0.0-0|v432]], [[3.0.0-5|v5632]]<br />
| Same as USA/EUR/JPN starting with the USA/EUR/JPN [[3.0.0-5]] title-version<br />
| Same as CHN.<br />
| Same as CHN.<br />
|-<br />
| 20000003<br />
| [[New_3DS]] SAFE_MODE_FIRM <br />
| [[8.1.0-0_New3DS|v16081]]<br />
| N/A<br />
| Same as CHN.<br />
| Same as CHN.<br />
|-<br />
| 00000102 <br />
| TWL_FIRM ( DSi Firmware )<br />
| [[1.0.0-0|v432]], [[2.0.0-2|v1489]], [[3.0.0-5|v2565]], v3601, [[4.0.0-7|v4625]], [[4.4.0-10|v5681]], [[4.5.0-10|v6704]], [[6.0.0-11|v7762]], [[6.2.0-12|v8817]]<br />
| Same as USA/EUR/JPN starting with the USA/EUR/JPN [[4.0.0-7]] title-version<br />
| Same as CHN.<br />
| Same as CHN.<br />
|-<br />
| 20000102 <br />
| [[New_3DS]] TWL_FIRM ( DSi Firmware )<br />
| [[8.1.0-0_New3DS|v9936]]<br />
| N/A<br />
| Same as CHN.<br />
| Same as CHN.<br />
|- <br />
| 00000202<br />
| AGB_FIRM ( GBA Firmware )<br />
| [[3.0.0-5|v519]], v1553, [[4.0.0-7|v2576]], [[6.0.0-11|v3665]]<br />
| [[4.0.0-7|v2576]]<br />
| [[4.0.0-7|v2576]], [[6.0.0-11|v3665]]<br />
| Same as CHN.<br />
|- <br />
| 20000202<br />
| [[New_3DS]] AGB_FIRM ( GBA Firmware )<br />
| [[8.1.0-0_New3DS|v4816]]<br />
| N/A<br />
| N/A<br />
| N/A<br />
|}<br />
<br />
== TWL System Titles ==<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Content Category<br />
! Bit Mask(s)<br />
! Category Bit Mask<br />
|-<br />
| System Application<br />
| TWL<nowiki>|</nowiki>0x1<nowiki>|</nowiki>0x4<br />
| 0x8005<br />
|-<br />
| System Archive<br />
| TWL<nowiki>|</nowiki>0x1<nowiki>|</nowiki>0x2<nowiki>|</nowiki>0x4<nowiki>|</nowiki>0x8<br />
| 0x800F<br />
|}<br />
Bitmask 0x1 for TWL titles determines whether the title will be updated during a System Update.<br />
<br />
=== 00048005 - System Applications===<br />
{| class="wikitable" border="1"<br />
|-<br />
! TitleID Low<br />
! Region<br />
! Description<br />
! Versions<br />
! Information<br />
|-<br />
| 42383841(B88A)<br />
| ALL<br />
| [[DS Internet]]<br />
| v0, [[2.1.0-4|v1025]], [[3.0.0-5|v2048]]<br />
| [[DS Internet]] is the DSi-mode application launched by [[System Settings]] for setting TWL wifi configuration. <br />
|-<br />
| 484E4441(HNDA)<br />
| ALL<br />
| [[Download Play]]<br />
| v1024<br />
| This [[Download Play]] application is the DS-mode Download Play client, launched by the 3DS-mode Download Play application.<br />
|-<br />
| 484E4443(HNDC)<br />
| CHN<br />
| [[Download Play]]<br />
| v1024<br />
| See Above Description.<br />
|-<br />
| 484E444B(HNDK)<br />
| KOR<br />
| [[Download Play]]<br />
| v1024<br />
| See Above Description.<br />
|}<br />
<br />
=== 0004800F - System Data Archives===<br />
{| class="wikitable" border="1"<br />
|-<br />
! TitleID Low<br />
! Description<br />
! Versions<br />
|-<br />
| 484E4841(HNHA)<br />
| [[Nintendo DS Cart Whitelist]]<br />
| v0, [[2.0.0-2|v1026]], [[2.2.0-X|v2048]], [[3.0.0-5|v3072]], [[4.0.0-7|v4096]], [[4.2.0-9|v5120]], [[4.3.0-10|v6145]], [[4.4.0-10|v7168]], [[4.5.0-10|v8192]], [[5.0.0-11|v9216]], [[6.0.0-11|v10240]], [[7.0.0-13|v11264]]<br />
|-<br />
| 484E4C41(HNLA)<br />
| [[Version Data]]<br />
| v0<br />
|}<br />
<br />
New system updates only block DS flash-cards when the above whitelist was updated, or when TWL_FIRM was updated. The whitelist contains the data used for detecting flash-cards, this is used by TWL_FIRM.<br />
<br />
== Application Titles ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Content Category<br />
! Bit Mask(s)<br />
! Category Bit Mask<br />
|-<br />
| [[Title list/eShop Titles|Application]] (eShop Title)<br />
| Normal<br />
| 0x0000<br />
|-<br />
| DLP Child<br />
| DlpChild<br />
| 0x0001<br />
|-<br />
| [[EShop Demos|Demo]]<br />
| Demo<br />
| 0x0002<br />
|-<br />
| [[Title list/Patches|Patch]]<br />
| CannotExecution<nowiki>|</nowiki>Patch<br />
| 0x000E<br />
|-<br />
| [[Title list/DLC|Add-on Content]] (DLC)<br />
| NotRequireRightForMount<nowiki>|</nowiki>CannotExecution<nowiki>|</nowiki>AddOnContents<br />
| 0x008C<br />
|}<br />
<br />
=== 00040001 - [[Download Play]] Titles ===<br />
This titleID-high/programID-high is used for the titles sent over [[Download Play]]. Only one 00040001 Download Play title is installed to NAND /title at a time. There can be a maximum of 255 Download Play child titles per Unique ID, indexed by Title ID Variation. The legal index range: 0x0 - 0xff.<br />
<br />
== TWL Application Titles ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Content Category<br />
! Bit Mask(s)<br />
! Category Bit Mask<br />
|-<br />
| Application (DSiWare)<br />
| TWL<nowiki>|</nowiki>0x4<br />
| 0x8004<br />
|}<br />
<br />
=== 00048004 - DSiWare ===<br />
Although these have a titleID high separate from DSi and a titleID is stored in the SRLs, the content of these SRLs are identical to DSi.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! TitleID Low<br />
! Region<br />
! Description<br />
! Versions<br />
|-<br />
| 4B4B5456(KKTV)<br />
| EUR<br />
| Cut the Rope<br />
| v0, v64<br />
|-<br />
| 4B4E5256(KNRV)<br />
| EUR<br />
| A Little Bit of... Brain Training™: Maths Edition <br />
| v0<br />
|-<br />
| 4B5A4C56(KZLV)<br />
| EUR<br />
| Plants vs. Zombies™<br />
| v0<br />
|-<br />
| 4B454256(KEBV)<br />
| EUR<br />
| ELECTROPLANKTON (Hanenbow)<br />
| v0<br />
|-<br />
| 4B513956(KQ9V)<br />
| EUR<br />
| Zelda: Four Swords Anniversary Edition<br />
| v16<br />
|-<br />
| 4B574256(KWBV)<br />
| EUR<br />
| Mario Calculator <br />
| v0<br />
|-<br />
| 4B574656(KWFV)<br />
| EUR<br />
| Mario Clock <br />
| v0<br />
|}</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=FSReg:Register&diff=12125
FSReg:Register
2015-03-28T04:35:52Z
<p>Yifanlu: </p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x040103C0]<br />
|-<br />
| 1<br />
| Process ID to register<br />
|-<br />
| 2-3<br />
| Title/Program ID (?)<br />
|-<br />
| 4-7<br />
| [[FS:GetProgramLaunchInfo|Launch info]]<br />
|-<br />
| 8-15<br />
| [[Exheader#Storage_Info|Storage information]] (?)<br />
|}<br />
<br />
=Response=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code<br />
|-<br />
| 1<br />
| Result code<br />
|}<br />
<br />
=Description=<br />
Register a process for filesystem use.</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=Filesystem_services&diff=12124
Filesystem services
2015-03-28T04:28:34Z
<p>Yifanlu: /* ProgramRegistry service "fs:REG" */</p>
<hr />
<div>[[Category:Services]]<br />
<br />
= Filesystem service "fs:USER" =<br />
You can at most have 32 FS archive handles.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Available since system version <br />
! Description<br />
! scope="col" width="400" | Required [[NCCH/Extended_Header|exheader]] access info bitmask<br />
|-<br />
| 0x000100C6<br />
|?<br />
| Dummy1<br />
| None<br />
|-<br />
| 0x040100C4<br />
|?<br />
| Control<br />
| None<br />
|-<br />
| 0x08010002<br />
|?<br />
| [[FS:Initialize|Initialize]]<br />
| None<br />
|-<br />
| 0x080201C2<br />
|?<br />
| [[FS:OpenFile|OpenFile]]<br />
| None<br />
|-<br />
| 0x08030204<br />
|?<br />
| [[FS:OpenFileDirectly|OpenFileDirectly]]<br />
| None<br />
|-<br />
| 0x08040142<br />
|?<br />
| [[FS:DeleteFile|DeleteFile]]<br />
| None<br />
|-<br />
| 0x08050244<br />
|?<br />
| [[FS:RenameFile|RenameFile]]<br />
| None<br />
|-<br />
| 0x08060142<br />
|?<br />
| [[FS:DeleteDirectory|DeleteDirectory]]<br />
| None<br />
|-<br />
| 0x08070142<br />
|?<br />
| DeleteDirectoryRecursively<br />
| None<br />
|-<br />
| 0x08080202<br />
|?<br />
| [[FS:CreateFile|CreateFile]]<br />
| None<br />
|-<br />
| 0x08090182<br />
|?<br />
| [[FS:CreateDirectory|CreateDirectory]]<br />
| None<br />
|-<br />
| 0x080A0244<br />
|?<br />
| [[FS:RenameDirectory|RenameDirectory]]<br />
| None<br />
|-<br />
| 0x080B0102<br />
|?<br />
| [[FS:OpenDirectory|OpenDirectory]]<br />
| None<br />
|-<br />
| 0x080C00C2<br />
|?<br />
| [[FS:OpenArchive|OpenArchive]]<br />
| Each archive ID code has separate access info bitmasks, if it has any<br />
|-<br />
| 0x080D0144<br />
|?<br />
| ControlArchive<br />
| None<br />
|-<br />
| 0x080E0080<br />
|?<br />
| [[FS:CloseArchive|CloseArchive]]<br />
| None<br />
|-<br />
| 0x080F0180<br />
|?<br />
| [[FS:FormatThisUserSaveData|FormatThisUserSaveData]]<br />
| None<br />
|-<br />
| 0x08100200<br />
|?<br />
| CreateSystemSaveData<br />
| 0x4, for when the input saveID doesn't match the exheader saveID<br />
|-<br />
| 0x08110040<br />
|?<br />
| DeleteSystemSaveData<br />
| 0x1004, for when the input saveID doesn't match the exheader saveID<br />
|-<br />
| 0x08120080<br />
|?<br />
| GetFreeBytes<br />
| None<br />
|-<br />
| 0x08130000<br />
|?<br />
| GetCardType<br />
| 0x1017<br />
|-<br />
| 0x08140000<br />
|?<br />
| [[FS:GetSdmcArchiveResource|GetSdmcArchiveResource]]<br />
| None<br />
|-<br />
| 0x08150000<br />
|?<br />
| [[FS:GetNandArchiveResource|GetNandArchiveResource]]<br />
| 0x1007<br />
|-<br />
| 0x08160000<br />
|?<br />
| GetSdmcFatfsError<br />
| 0x2<br />
|-<br />
| 0x08170000<br />
|?<br />
| [[FS:IsSdmcDetected|IsSdmcDetected]]<br />
| None<br />
|-<br />
| 0x08180000<br />
|?<br />
| [[FS:IsSdmcWritable|IsSdmcWritable]]<br />
| None<br />
|-<br />
| 0x08190042<br />
|?<br />
| GetSdmcCid<br />
| 0x2<br />
|-<br />
| 0x081A0042<br />
|?<br />
| GetNandCid<br />
| 0x2<br />
|-<br />
| 0x081B0000<br />
|?<br />
| GetSdmcSpeedInfo<br />
| 0x2<br />
|-<br />
| 0x081C0000<br />
|?<br />
| GetNandSpeedInfo<br />
| 0x2<br />
|-<br />
| 0x081D0042<br />
|?<br />
| GetSdmcLog<br />
| 0x2<br />
|-<br />
| 0x081E0042<br />
|?<br />
| GetNandLog<br />
| 0x2<br />
|-<br />
| 0x081F0000<br />
|?<br />
| ClearSdmcLog<br />
| 0x2<br />
|-<br />
| 0x08200000<br />
|?<br />
| ClearNandLog<br />
| 0x2<br />
|-<br />
| 0x08210000<br />
|?<br />
| CardSlotIsInserted<br />
| 0x1017<br />
|-<br />
| 0x08220000<br />
|?<br />
| CardSlotPowerOn<br />
| 0x2<br />
|-<br />
| 0x08230000<br />
|?<br />
| CardSlotPowerOff<br />
| 0x2<br />
|-<br />
| 0x08240000<br />
|?<br />
| CardSlotGetCardIFPowerStatus<br />
| 0x2<br />
|-<br />
| 0x08250040<br />
|?<br />
| CardNorDirectCommand<br />
| 0x2<br />
|-<br />
| 0x08260080<br />
|?<br />
| CardNorDirectCommandWithAddress<br />
| 0x2<br />
|-<br />
| 0x08270082<br />
|?<br />
| CardNorDirectRead<br />
| 0x2<br />
|-<br />
| 0x082800C2<br />
|?<br />
| CardNorDirectReadWithAddress<br />
| 0x2<br />
|-<br />
| 0x08290082<br />
|?<br />
| CardNorDirectWrite<br />
| 0x2<br />
|-<br />
| 0x082A00C2<br />
|?<br />
| CardNorDirectWriteWithAddress<br />
| 0x2<br />
|-<br />
| 0x082B00C2<br />
|?<br />
| CardNorDirectRead_4xIO<br />
| 0x2<br />
|-<br />
| 0x082C0082<br />
|?<br />
| CardNorDirectCpuWriteWithoutVerify<br />
| 0x2<br />
|-<br />
| 0x082D0040<br />
|?<br />
| CardNorDirectSectorEraseWithoutVerify<br />
| 0x2<br />
|-<br />
| 0x082E0040<br />
|?<br />
| [[FS:GetProductInfo|GetProductInfo]]<br />
| 0x1005<br />
|-<br />
| 0x082F0040<br />
|?<br />
| [[FS:GetProgramLaunchInfo|GetProgramLaunchInfo]]<br />
| 0x1005<br />
|-<br />
| 0x08300182<br />
|?<br />
| CreateExtSaveData<br />
| 0xC, for when the input extdataID doesn't match the exheader extdataID<br />
|-<br />
| 0x08310180<br />
|?<br />
| CreateSharedExtSaveData<br />
| 0x1005<br />
|-<br />
| 0x08320102<br />
|?<br />
| [[FS:ReadExtSaveDataIcon|ReadExtSaveDataIcon]]<br />
| 0x100D, for when the input extdataID doesn't match the exheader extdataID<br />
|-<br />
| 0x08330082<br />
|?<br />
| [[FS:EnumerateExtSaveData|EnumerateExtSaveData]]<br />
| 0x1005<br />
|-<br />
| 0x08340082<br />
|?<br />
| EnumerateSharedExtSaveData<br />
| 0x1005<br />
|-<br />
| 0x08350080<br />
|?<br />
| DeleteExtSaveData<br />
| 0x100D, for when the input extdataID doesn't match the exheader extdataID<br />
|-<br />
| 0x08360080<br />
|?<br />
| DeleteSharedExtSaveData<br />
| 0x1005<br />
|-<br />
| 0x08370040<br />
|?<br />
| SetCardSpiBaudRate<br />
| 0x2<br />
|-<br />
| 0x08380040<br />
|?<br />
| SetCardSpiBusMode<br />
| 0x2<br />
|-<br />
| 0x08390000<br />
|?<br />
| SendInitializeInfoTo9<br />
| None<br />
|-<br />
| 0x083A0100<br />
|?<br />
| GetSpecialContentIndex<br />
| 0x1005<br />
|-<br />
| 0x083B00C2<br />
|?<br />
| GetLegacyRomHeader<br />
| 0x1015<br />
|-<br />
| 0x083C00C2<br />
|?<br />
| GetLegacyBannerData<br />
| 0x1015<br />
|-<br />
| 0x083D0100<br />
|?<br />
| CheckAuthorityToAccessExtSaveData<br />
| 0x44<br />
|-<br />
| 0x083E00C2<br />
|?<br />
| QueryTotalQuotaSize<br />
| None<br />
|-<br />
| 0x083F00C0<br />
|?<br />
| GetExtDataBlockSize<br />
| None<br />
|-<br />
| 0x08400040<br />
|?<br />
| AbnegateAccessRight<br />
|?<br />
|-<br />
| 0x08410000<br />
|?<br />
| DeleteSdmcRoot<br />
| 0x1005<br />
|-<br />
| 0x08420040<br />
|?<br />
| DeleteAllExtSaveDataOnNand<br />
| 0x1005<br />
|-<br />
| 0x08430000<br />
|?<br />
| [[FS:InitializeCtrFileSystem|InitializeCtrFileSystem]]<br />
| None<br />
|-<br />
| 0x08440000<br />
|?<br />
| CreateSeed<br />
| 0x2<br />
|-<br />
| 0x084500C2<br />
|?<br />
| [[FS:GetFormatInfo|GetFormatInfo]]<br />
|?<br />
|-<br />
| 0x08460102<br />
|?<br />
| GetLegacyRomHeader2<br />
| 0x1015<br />
|-<br />
| 0x08470180<br />
|?<br />
| FormatCtrCardUserSaveData<br />
| 0x6<br />
|-<br />
| 0x08480042<br />
|?<br />
| GetSdmcCtrRootPath<br />
| 0x100D<br />
|-<br />
| 0x08490040<br />
|?<br />
| GetArchiveResource<br />
|?<br />
|-<br />
| 0x084A0002<br />
|?<br />
| ExportIntegrityVerificationSeed<br />
| 0x4000<br />
|-<br />
| 0x084B0002<br />
|?<br />
| ImportIntegrityVerificationSeed<br />
| 0x4000<br />
|-<br />
| 0x084C0242<br />
|?<br />
| [[FS:FormatSaveData|FormatSaveData]]<br />
| 0x6, in some cases this write isn't needed however<br />
|-<br />
| 0x084D0102<br />
|?<br />
| GetLegacySubBannerData<br />
| 0x1015<br />
|-<br />
| 0x084E0342<br />
|?<br />
| [[FS:UpdateSha256Context|UpdateSha256Context]]<br />
| 0x5<br />
|-<br />
| 0x084F0102<br />
|?<br />
| ReadSpecialFile<br />
| None<br />
|-<br />
| 0x08500040<br />
|?<br />
| GetSpecialFileSize<br />
| None<br />
|-<br />
| 0x08510242<br />
| [[3.0.0-5]]<br />
| CreateExtSaveData<br />
| Shared extdata: 0x101005. Regular extdata in certain cases: 0xC<br />
|-<br />
| 0x08520100<br />
| [[3.0.0-5]]<br />
| DeleteExtSaveData (u32 flags, u64 extdataID)<br />
| Shared extdata: 0x101005. Regular extdata in certain cases: 0x10100D<br />
|-<br />
| 0x08530142<br />
| [[3.0.0-5]]<br />
| ReadExtSaveDataIcon<br />
| 0x10100D (this doesn't apply in certain cases, however)<br />
|-<br />
| 0x085400C0<br />
| [[3.0.0-5]]<br />
| GetExtDataBlockSize?<br />
| 0x10100D (this doesn't apply in certain cases, however)<br />
|-<br />
| 0x08550102<br />
| [[3.0.0-5]]<br />
| EnumerateExtSaveData<br />
| 0x101005<br />
|-<br />
| 0x08560200<br />
| [[3.0.0-5]]<br />
| FsCreateSystemSaveData?<br />
| 0x4 (this doesn't apply in certain cases, however)<br />
|-<br />
| 0x08570080<br />
| [[3.0.0-5]]<br />
| DeleteSystemSaveData<br />
| 0x1004 (this doesn't apply in certain cases, however)<br />
|-<br />
| 0x08580000<br />
| [[3.0.0-5]]<br />
| [[FS:GetMovableSedHashedKeyYRandomData|GetMovableSedHashedKeyYRandomData]]<br />
| 0x2004<br />
|-<br />
| 0x08590200<br />
| [[3.0.0-5]]<br />
| SetMovableSedHashedKeyYRandomData?<br />
| 0x2004<br />
|-<br />
| 0x085A00C0<br />
| [[3.0.0-5]]<br />
| SetArchivePriority(u64 ID,u32 priority)<br />
| None<br />
|-<br />
| 0x085B0080<br />
| [[3.0.0-5]]<br />
| GetArchivePriority(u64 ID,u32 *priority)<br />
| None<br />
|-<br />
| 0x085C00C0<br />
| [[3.0.0-5]]<br />
| SetCtrCardLatencyParameter<br />
| 0xE<br />
|-<br />
| 0x085D0180<br />
| [[3.0.0-5]]<br />
|?<br />
| 0x100001<br />
|-<br />
| 0x085E0040<br />
| [[3.0.0-5]]<br />
| ResetCardCompatibilityParameter<br />
| 0xE<br />
|-<br />
| 0x085F0040<br />
| [[3.0.0-5]]<br />
| SwitchCleanupInvalidSaveData<br />
| 0x12004<br />
|-<br />
| 0x08600042<br />
| [[3.0.0-5]]<br />
| EnumerateSystemSaveData<br />
| 0x2004<br />
|-<br />
| 0x08610042<br />
| [[3.0.0-5]]<br />
| InitializeWithSdkVersion<br />
| None<br />
|-<br />
| 0x08620040<br />
| [[3.0.0-5]]<br />
| SetPriority<br />
| None<br />
|-<br />
| 0x08630000<br />
| [[3.0.0-5]]<br />
| GetPriority<br />
| None<br />
|-<br />
| 0x08640000<br />
| [[3.0.0-5]]<br />
| Obsoleted_4_0_GetNandInfo <br />
| Stubbed, this returns an error<br />
|-<br />
| 0x08650140<br />
| [[4.0.0-7]]<br />
| SetSaveDataSecureValue, this is used with [[Anti Savegame Restore]].<br />
| 0x121004 (in certain cases this doesn't apply, however)<br />
|-<br />
| 0x086600C0<br />
| [[4.0.0-7]]<br />
| GetSaveDataSecureValue, this is used with [[Anti Savegame Restore]].<br />
| 0x121004 (in certain cases this doesn't apply, however)<br />
|-<br />
| 0x086700C4<br />
| [[4.0.0-7]]<br />
| ControlSecureSave<br />
| 0x121004<br />
|-<br />
| 0x08680000<br />
| [[4.0.0-7]]<br />
| GetMediaType, This loads the u8 mediatype for the current application from already initialized state, this u8 was originally loaded from the same data used by [[FS:GetProgramLaunchInfo|GetProgramLaunchInfo]]. This then writes the u8 to response-word[2]. This is used with [[Anti Savegame Restore]]<br />
| None<br />
|-<br />
| 0x08690000<br />
| [[4.0.0-7]]<br />
| Obsoleted_4_0_GetNandEraseCount Stubbed, this returns an error.<br />
| None<br />
|-<br />
| 0x086A0082<br />
| [[4.0.0-7]]<br />
| ReadNandReport This is a wrapper for [[Filesystem_services_PXI|FSPXI]] command 0x00550082.<br />
| None<br />
|-<br />
| 0x086B00C2<br />
|?<br />
|?<br />
| 00121004<br />
|-<br />
| 0x086C00C2<br />
|?<br />
|?<br />
| 00121004<br />
|-<br />
| 0x086D0040<br />
|?<br />
|?<br />
| 00020004<br />
|-<br />
| 0x086E00C0<br />
|?<br />
|?<br />
|None?<br />
|-<br />
| 0x086F0040<br />
|?<br />
|?<br />
| 0xE<br />
|-<br />
| 0x087000C2<br />
|?<br />
|?<br />
|None?<br />
|-<br />
| 0x08710100<br />
|?<br />
|?<br />
| 0xC<br />
|-<br />
| 0x087201C0<br />
|?<br />
|?<br />
| 00080004<br />
|-<br />
| 0x087300C0<br />
|?<br />
|?<br />
| 00080004<br />
|-<br />
| 0x08740000<br />
|?<br />
|?<br />
| 00080004<br />
|-<br />
| 0x08750140<br />
|?<br />
|?<br />
|None?<br />
|-<br />
| 0x087600C0<br />
|?<br />
|?<br />
|None?<br />
|-<br />
| 0x08770100<br />
|?<br />
|?<br />
|?<br />
|-<br />
| 0x087800C0<br />
|?<br />
|?<br />
|?<br />
|-<br />
| 0x087900C2<br />
| ?<br />
| Same as GetLegacyBannerData, except for the last parameter this passes u8 value 0x1 instead of 0x0, for the FSPXI command.<br />
| 0x00101015<br />
|-<br />
| 0x087A....<br />
| [[9.6.0-24|9.6.0-X]]<br />
| ?<br />
| 0x00200000<br />
|-<br />
| 0x087B....<br />
| [[9.6.0-24|9.6.0-X]]<br />
| Wrapper for the code internally used for command <0x087A....>.<br />
| 0x00200000<br />
|-<br />
| 0x087C....<br />
| [[9.6.0-24|9.6.0-X]]<br />
| Eventually calls same code as command <0x087A....>.<br />
| 0x00200000<br />
|-<br />
| 0x087D....<br />
| [[9.6.0-24|9.6.0-X]]<br />
| Writes an u32 from state to cmdreply[2].<br />
| 0x00200000<br />
|-<br />
| 0x087E....<br />
| [[9.6.0-24|9.6.0-X]]<br />
| Eventually calls same code as command <0x087A....>.<br />
| 0x00200000<br />
|-<br />
| 0x087F....<br />
| [[9.6.0-24|9.6.0-X]]<br />
| ?<br />
| 0x00200000<br />
|-<br />
| 0x0880....<br />
| [[9.6.0-24|9.6.0-X]]<br />
| Eventually calls same code as command <0x087A....>.<br />
| 0x00200000<br />
|-<br />
| 0x0881....<br />
| [[9.6.0-24|9.6.0-X]]<br />
| Eventually calls same code as command <0x087A....>.<br />
| 0x00200000<br />
|-<br />
| 0x0882....<br />
| [[9.6.0-24|9.6.0-X]]<br />
| Eventually calls same code as command <0x087A....>.<br />
| 0x00200000<br />
|-<br />
| 0x0883....<br />
| [[9.6.0-24|9.6.0-X]]<br />
| ?<br />
| 0x00200000<br />
|-<br />
| 0x0884....<br />
| [[9.6.0-24|9.6.0-X]]<br />
| Eventually calls same code as command <0x087A....>.<br />
| 0x00200000<br />
|-<br />
| 0x0885....<br />
| [[9.6.0-24|9.6.0-X]]<br />
| ?<br />
| 0x00200000<br />
|}<br />
<br />
Note: The question marks from Dummy1 to GetSpecialFileSize on the "available since system version" field are mainly there because I think that most of these are necessary for the main system to function, so theoretically that would mean that since the creation of the 3DS these were available, or since launch if that makes more sense. But because of the peculiar nature of some of the functions, they will remain question marks until they can be confirmed 100%.<br />
<br />
When access rights are required for a command, at least one of the bits in the process access info specified in the above table for the command must be set. Error 0xD9004676 is returned when a process attempts to use a command which it doesn't have access rights for the command. The exheader access info field is all zero's for most applications. Note that the permissions listed in the above table is for system-version v2.x, therefore permission bit(s) added with newer FIRM may be missing from this.<br />
<br />
Each session for fs:USER has separate permissions, initially these are set to all zero's for new fs:USER sessions. The permissions/etc for fs:USER sessions are initialized via [[FS:Initialize]](loaded from the user process exheader).<br />
<br />
=File service=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Description<br />
|-<br />
| 0x000100C6<br />
| Dummy1<br />
|-<br />
| 0x040100C4<br />
| Control<br />
|-<br />
| 0x08010100<br />
| OpenSubFile<br />
|-<br />
| 0x080200C2<br />
| [[FSFile:Read|Read]]<br />
|-<br />
| 0x08030102<br />
| [[FSFile:Write|Write]]<br />
|-<br />
| 0x08040000<br />
| [[FSFile:GetSize|GetSize]]<br />
|-<br />
| 0x08050080<br />
| [[FSFile:SetSize|SetSize]]<br />
|-<br />
| 0x08060000<br />
| GetAttributes<br />
|-<br />
| 0x08070040<br />
| SetAttributes<br />
|-<br />
| 0x08080000<br />
| [[FSFile:Close|Close]]<br />
|-<br />
| 0x08090000<br />
| Flush<br />
|-<br />
| 0x080A0040<br />
| SetPriority<br />
|-<br />
| 0x080B0000<br />
| GetPriority<br />
|-<br />
| 0x080C0000<br />
| OpenLinkFile<br />
|}<br />
<br />
=Directory service=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Available since system version<br />
! Description<br />
|-<br />
| 0x000100C6<br />
| [[1.0.0-0]]<br />
| Dummy1<br />
|-<br />
| 0x040100C4<br />
| [[1.0.0-0]]<br />
| Control<br />
|-<br />
| 0x08010042<br />
| [[1.0.0-0]]<br />
| [[FSDir:Read|Read]]<br />
|-<br />
| 0x08020000<br />
| [[1.0.0-0]]<br />
| [[FSDir:Close|Close]]<br />
|-<br />
| 0x08030040<br />
| ?<br />
| SetPriority<br />
|-<br />
| 0x08040000<br />
| ?<br />
| GetPriority<br />
|}<br />
<br />
= Filesystem service "fs:LDR" =<br />
This service is identical to fs:USER, except [[FS:OpenArchive]] archive 0x2345678E can only be accessed with fs:LDR<br />
<br />
= ProgramRegistry service "fs:REG" =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Description<br />
|-<br />
| 0x000100C6<br />
| Dummy1<br />
|-<br />
| 0x040103C0<br />
| [[FSReg:Register|Register]]<br />
|-<br />
| 0x04020040<br />
| [[FSReg:Unregister|Unregister]]<br />
|-<br />
| 0x040300C0<br />
| GetProgramInfo<br />
|-<br />
| 0x04040100<br />
| LoadProgram<br />
|-<br />
| 0x04050080<br />
| UnloadProgram<br />
|-<br />
| 0x04060080<br />
| CheckHostLoadId<br />
|}<br />
<br />
=Errors=<br />
See [[Filesystem_services_PXI]].</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=FSReg:Register&diff=12123
FSReg:Register
2015-03-28T04:27:57Z
<p>Yifanlu: Created page with "=Request= {| class="wikitable" border="1" |- ! Index Word ! Description |- | 0 | Header code [0x040103C0] |- | 1 | Process ID to register |- | 2-3 | Title/Program ID (?) |- | 4..."</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x040103C0]<br />
|-<br />
| 1<br />
| Process ID to register<br />
|-<br />
| 2-3<br />
| Title/Program ID (?)<br />
|-<br />
| 4-7<br />
| Unknown<br />
|-<br />
| 8-15<br />
| [[Exheader#Storage_Info|Storage information]] (?)<br />
|}<br />
<br />
=Response=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code<br />
|-<br />
| 1<br />
| Result code<br />
|}<br />
<br />
=Description=<br />
Register a process for filesystem use.</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=FSReg:Unregister&diff=12122
FSReg:Unregister
2015-03-28T04:21:54Z
<p>Yifanlu: Created page with "=Request= {| class="wikitable" border="1" |- ! Index Word ! Description |- | 0 | Header code [0x04020040] |- | 1 | Process ID of program to unregister |} =Response= {| class="..."</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x04020040]<br />
|-<br />
| 1<br />
| Process ID of program to unregister<br />
|}<br />
<br />
=Response=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code<br />
|-<br />
| 1<br />
| Result code<br />
|}<br />
<br />
=Description=<br />
Unregister a process registered with [[FSReg:Register]]</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=FSPXI:ImportIntegrityVerificationSeed&diff=12117
FSPXI:ImportIntegrityVerificationSeed
2015-03-28T01:54:10Z
<p>Yifanlu: </p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x00460002]<br />
|-<br />
| 1<br />
| Always 0x00013006, for 0x130 size: (size<<8) <nowiki>|</nowiki> 6<br />
|-<br />
| 2<br />
| Input IntegrityVerificationSeed pointer<br />
|}<br />
<br />
=Response=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code<br />
|-<br />
| 1<br />
| Result code<br />
|}<br />
<br />
=IntegrityVerificationSeed=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset<br />
! Size<br />
! Description<br />
|-<br />
| 0x0<br />
| 0x10<br />
| AES-CBC MAC over a SHA256 hash, which hashes the first 0x110-bytes of the cleartext SEED.<br />
|-<br />
| 0x10<br />
| 0x120<br />
| The [[nand/private/movable.sed]], encrypted with AES-CTR using the above MAC for the counter.<br />
|}<br />
<br />
=Description=<br />
This decrypts the input SEED and verifies it with the input AES-CBC MAC, verifies the RSA-signature, then writes the data to [[nand/private/movable.sed]].</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=FSPXI:ImportIntegrityVerificationSeed&diff=12116
FSPXI:ImportIntegrityVerificationSeed
2015-03-28T01:53:56Z
<p>Yifanlu: Undo revision 12112 by Yifanlu (talk)</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x00460002]<br />
|-<br />
| 1<br />
| Always 0x00013004, for 0x130 size: (size<<8) <nowiki>|</nowiki> 6<br />
|-<br />
| 2<br />
| Input IntegrityVerificationSeed pointer<br />
|}<br />
<br />
=Response=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code<br />
|-<br />
| 1<br />
| Result code<br />
|}<br />
<br />
=IntegrityVerificationSeed=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset<br />
! Size<br />
! Description<br />
|-<br />
| 0x0<br />
| 0x10<br />
| AES-CBC MAC over a SHA256 hash, which hashes the first 0x110-bytes of the cleartext SEED.<br />
|-<br />
| 0x10<br />
| 0x120<br />
| The [[nand/private/movable.sed]], encrypted with AES-CTR using the above MAC for the counter.<br />
|}<br />
<br />
=Description=<br />
This decrypts the input SEED and verifies it with the input AES-CBC MAC, verifies the RSA-signature, then writes the data to [[nand/private/movable.sed]].</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=FSPXI:ExportIntegrityVerificationSeed&diff=12115
FSPXI:ExportIntegrityVerificationSeed
2015-03-28T01:53:32Z
<p>Yifanlu: Undo revision 12113 by Yifanlu (talk)</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x00450002]<br />
|-<br />
| 1<br />
| Always 0x00013004, for 0x130 size: (size<<8) <nowiki>|</nowiki> 4<br />
|-<br />
| 2<br />
| Output [[FSPXI:ImportIntegrityVerificationSeed|IntegrityVerificationSeed]] pointer <br />
|}<br />
<br />
=Response=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code<br />
|-<br />
| 1<br />
| Result code<br />
|}<br />
<br />
=Description=<br />
This encrypts [[nand/private/movable.sed]] to the output buffer, and writes the AES-CBC MAC to the output buffer as well.</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=Filesystem_services_PXI&diff=12114
Filesystem services PXI
2015-03-28T01:52:46Z
<p>Yifanlu: Undo revision 12111 by Yifanlu (talk)</p>
<hr />
<div>{| class="wikitable" border="1"<br />
|-<br />
! Command Header, prior to [[3.0.0-5]]<br />
! Command Header, starting with [[3.0.0-5]]<br />
! Available since system version<br />
! Description<br />
|-<br />
| 0x000101C2<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:OpenFile|OpenFile]]<br />
|-<br />
| 0x00020142<br />
|?<br />
| [[1.0.0-0]]<br />
| DeleteFile? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) <br />
|-<br />
| 0x00030244<br />
|?<br />
| [[1.0.0-0]]<br />
| RenameFile? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, secondarchivehandlelo, secondarchivehandlehi, secondpathtype, secondpathsize, pathptrsize, pathptr, secondpathptrsize, secondpathptr)<br />
|-<br />
| 0x00040142<br />
|?<br />
| [[1.0.0-0]]<br />
| DeleteDirectory? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) <br />
|-<br />
| 0x00050202<br />
|?<br />
| [[1.0.0-0]]<br />
| CreateFile? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, unknown_u32, unknown_lo, unknown_hi, pathptrsize, pathptr) <br />
|-<br />
| 0x00060182<br />
|?<br />
| [[1.0.0-0]]<br />
| CreateDirectory? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, unknown_u32, pathptrsize, pathptr) <br />
|-<br />
| 0x00070244<br />
|?<br />
| [[1.0.0-0]]<br />
| RenameDirectory? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, secondarchivehandlelo, secondarchivehandlehi, secondpathtype, secondpathsize, pathptrsize, pathptr, secondpathptrsize, secondpathptr)<br />
|-<br />
| 0x00080102<br />
|?<br />
| [[1.0.0-0]]<br />
| OpenDirectory (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr)<br />
|-<br />
| 0x00090142<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:ReadFile|ReadFile]]<br />
|-<br />
| 0x000A00C2<br />
|?<br />
| [[1.0.0-0]]<br />
| CalculateFileHashSHA256<br />
|-<br />
| 0x000B0182<br />
|?<br />
| [[1.0.0-0]]<br />
| WriteFile<br />
|-<br />
| 0x000C0104<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CalcSavegameMAC|CalcSavegameMAC]]<br />
|-<br />
| 0x000D0080<br />
|?<br />
| [[1.0.0-0]]<br />
| GetFileSize<br />
|-<br />
| 0x000E0100<br />
|?<br />
| [[1.0.0-0]]<br />
| SetFileSize (sizelo, sizehi, filehandlelo, filehandlehi)<br />
|-<br />
| 0x000F0080<br />
|?<br />
| [[1.0.0-0]]<br />
| CloseFile (filehandlelo, filehandlehi)<br />
|-<br />
| 0x001000C2<br />
|?<br />
| [[1.0.0-0]]<br />
| ReadDirectory (dirhandlelo, dirhandlehi, count, ptrsize, ptr)<br />
|-<br />
| 0x00110080<br />
|?<br />
| [[1.0.0-0]]<br />
| CloseDirectory (dirhandlelo, dirhandlehi)<br />
|-<br />
| 0x001200C2<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:OpenArchive|OpenArchive]]<br />
|-<br />
| 0x00130102<br />
|?<br />
| [[1.0.0-0]]<br />
| CreateExtSaveData? (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) <br />
|-<br />
| 0x00140102<br />
|?<br />
| [[1.0.0-0]]<br />
| (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) <br />
|-<br />
| 0x00150102<br />
|?<br />
| [[1.0.0-0]]<br />
| (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) <br />
|-<br />
| 0x00160080<br />
|?<br />
| [[1.0.0-0]]<br />
| CloseArchive (archivehandlelo, archivehandlehi)<br />
|-<br />
| 0x00170080<br />
|?<br />
| [[1.0.0-0]]<br />
| ReopenArchive? (archivehandlelo, archivehandlehi)<br />
|-<br />
| 0x00180000<br />
|?<br />
| [[1.0.0-0]]<br />
| GetCardType<br />
|-<br />
| 0x00190000<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:GetSdmcArchiveResource|GetSdmcArchiveResource]]<br />
|-<br />
| 0x001A0000<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:GetNandArchiveResource|GetNandArchiveResource]]<br />
|-<br />
| 0x001B0000<br />
|?<br />
| [[1.0.0-0]]<br />
| GetSdmcFatFsError<br />
|-<br />
| 0x001C0000<br />
|?<br />
| [[1.0.0-0]]<br />
| GetSdmcDetected<br />
|-<br />
| 0x001D0000<br />
|?<br />
| [[1.0.0-0]]<br />
| GetSdmcWritable<br />
|-<br />
| 0x001E0042<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:GetSdmcCid|GetSdmcCid]]<br />
|-<br />
| 0x001F0042<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:GetNandCid|GetNandCid]]<br />
|-<br />
| 0x00200000<br />
|?<br />
| [[1.0.0-0]]<br />
| GetSdmcSpeedInfo<br />
|-<br />
| 0x00210000<br />
|?<br />
| [[1.0.0-0]]<br />
| GetNandSpeedInfo<br />
|-<br />
| 0x00220042<br />
|?<br />
| [[1.0.0-0]]<br />
| GetSdmcLog<br />
|-<br />
| 0x00230042<br />
|?<br />
| [[1.0.0-0]]<br />
| GetNandLog<br />
|-<br />
| 0x00240000<br />
|?<br />
| [[1.0.0-0]]<br />
| ClearSdmcLog<br />
|-<br />
| 0x00250000<br />
|?<br />
| [[1.0.0-0]]<br />
| ClearNandLog<br />
|-<br />
| 0x00260000<br />
|?<br />
| [[1.0.0-0]]<br />
| GetCardSlotInserted<br />
|-<br />
| 0x00270000<br />
|?<br />
| [[1.0.0-0]]<br />
| CardSlotPowerOn<br />
|-<br />
| 0x00280000<br />
|?<br />
| [[1.0.0-0]]<br />
| CardSlotPowerOff<br />
|-<br />
| 0x00290000<br />
|?<br />
| [[1.0.0-0]]<br />
| CardSlotGetIfPowerStatus<br />
|-<br />
| 0x002A0040<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectCommand|CardNorDirectCommand]] (These CardNor commands are used for accessing the raw gamecard flash savedata)<br />
|-<br />
| 0x002B0080<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectCommandWithAddress|CardNorDirectCommandWithAddress]]<br />
|-<br />
| 0x002C0082<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectRead|CardNorDirectRead]]<br />
|-<br />
| 0x002D00C2<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectReadWithAddress|CardNorDirectReadWithAddress]]<br />
|-<br />
| 0x002E0082<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectWrite|CardNorDirectWrite]]<br />
|-<br />
| 0x002F00C2<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectWriteWithAddress|CardNorDirectWriteWithAddress]]<br />
|-<br />
| 0x003000C2<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectRead4IO|CardNorDirectRead4IO]]<br />
|-<br />
| 0x00310082<br />
|?<br />
| [[1.0.0-0]]<br />
| CardNorDirectCpuWriteWithoutVerify<br />
|-<br />
| 0x00320040<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectSectorEraseWithoutVerify|CardNorDirectSectorEraseWithoutVerify]]<br />
|-<br />
| 0x00330080<br />
|?<br />
| [[1.0.0-0]]<br />
| GetProductInfo<br />
|-<br />
| 0x00340040<br />
|?<br />
| [[1.0.0-0]]<br />
| SetCardSpiBaudrate<br />
|-<br />
| 0x00350040<br />
|?<br />
| [[1.0.0-0]]<br />
| SetCardSpiBusMode<br />
|-<br />
| 0x00360040<br />
|?<br />
| [[1.0.0-0]]<br />
| SendInitializeInfo<br />
|-<br />
| 0x00370140<br />
|?<br />
| [[1.0.0-0]]<br />
| CreateExtSaveData<br />
|-<br />
| 0x003800C0<br />
|?<br />
| [[1.0.0-0]]<br />
| DeleteExtSaveData<br />
|-<br />
| 0x00390082<br />
|?<br />
| [[1.0.0-0]]<br />
| EnumerateExtSaveData<br />
|-<br />
| 0x003A0100<br />
|?<br />
| [[1.0.0-0]]<br />
| GetSpecialContentIndex<br />
|-<br />
| 0x003B00C2<br />
|?<br />
| [[1.0.0-0]]<br />
| GetLegacyRomHeader<br />
|-<br />
| 0x003C00C2<br />
| 0x003C00C2<br />
| [[1.0.0-0]]<br />
| GetLegacyBannerData<br />
|-<br />
| 0x003F0000<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:DeleteSdmcRoot|DeleteSdmcRoot]]<br />
|-<br />
| 0x00400040<br />
|?<br />
| [[1.0.0-0]]<br />
| DeleteAllExtSaveDataOnNand<br />
|-<br />
| 0x00410000<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:InitializeCtrFilesystem|InitializeCtrFilesystem]]<br />
|-<br />
| 0x00420000<br />
|?<br />
| [[1.0.0-0]]<br />
| CreateSeed<br />
|-<br />
| 0x00430042<br />
|?<br />
| [[2.0.0-2]]<br />
| [[FSPXI:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]<br />
|-<br />
| 0x00440040<br />
|?<br />
| [[2.0.0-2]]<br />
| GetArchiveResource<br />
|-<br />
| 0x00450002<br />
| 0x00440002<br />
| [[2.0.0-2]]<br />
| [[FSPXI:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]<br />
|-<br />
| 0x00460002<br />
| 0x00450002<br />
| [[2.0.0-2]]<br />
| [[FSPXI:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]<br />
|-<br />
| 0x00470082<br />
|?<br />
| [[2.0.0-2]]<br />
| EnumerateSharedExtSaveData<br />
|-<br />
| 0x00480102<br />
|?<br />
| [[2.0.0-2]]<br />
| GetLegacySubBannerData<br />
|-<br />
| 0x00490042<br />
|?<br />
| [[2.0.0-2]]<br />
| Initialize (?)<br />
|-<br />
| 0x004A00C2<br />
|?<br />
| [[2.0.0-2]]<br />
| OpenSpecialFile? (archivehandlelo, archivehandlehi, size, ptrsize_mul2, ptr)<br />
|-<br />
| 0x004B0102<br />
|?<br />
| [[2.0.0-2]]<br />
| ReadSpecialFile<br />
|-<br />
|?<br />
| 0x004B0000<br />
| [[3.0.0-5]]<br />
| [[FSPXI:GetMovableSedHashedKeyYRandomData|GetMovableSedHashedKeyYRandomData]]<br />
|-<br />
| 0x004C0040<br />
|?<br />
| [[2.0.0-2]]<br />
| GetSpecialFileSize<br />
|-<br />
|?<br />
| 0x004D01C4<br />
| [[3.0.0-5]]<br />
| [[FSPXI:ReadFileWrapper|ReadFileWrapper]]. If the first ReadFile call fails, this calls ReadFile again then executes hash-related code.<br />
|-<br />
|?<br />
| 0x004E0204<br />
| [[3.0.0-5]]<br />
| This is a wrapper for WriteFile, this is similar to command 0x004D01C4.<br />
|-<br />
|?<br />
| 0x004F....<br />
| [[3.0.0-5]]<br />
| (unknown_u64)<br />
|-<br />
|?<br />
| 0x00500000<br />
| [[3.0.0-5]]<br />
| Stubbed, this only returns value 0.<br />
|-<br />
|?<br />
| 0x0051....<br />
| [[3.0.0-5]]<br />
| (unknown_u8)<br />
|-<br />
|?<br />
| 0x00520042<br />
| [[3.0.0-5]]<br />
| (outbuffersize, outbufferptr)<br />
|-<br />
|?<br />
| 0x00530000<br />
| [[3.0.0-5]]<br />
| Unknown, stubbed with [[4.0.0-7]].<br />
|-<br />
|?<br />
| 0x0054....<br />
| [[4.0.0-7]]<br />
| Stubbed with [[4.0.0-7]].<br />
|-<br />
|?<br />
| 0x00550082<br />
| [[4.0.0-7]]<br />
| ReadNandReport (outbuffersize, u8 mediatype, outbufferptr)<br />
|-<br />
| None<br />
| 0x00560102<br />
| [[9.6.0-24|9.6.0-X]]<br />
| This calls some archive-class vtable funcptr, for the specified archive-handle. It's unknown what this is for.<br />
|}<br />
<br />
=Errors=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Error-code<br />
! Description<br />
|-<br />
| 0xC82044BE<br />
| Object does already exist/failed to create object.<br />
|-<br />
| 0xC8804478<br />
| Object doesn't exist / failed to open object(file). Or: The specified title does not exist in the [[Title_Database|database]].<br />
|-<br />
| 0xC880448D<br />
| FSPXI: Gamecard not inserted when attempting to use the gamecard.<br />
|-<br />
| 0xC88044AB<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: TMIO_STAT_CMD_BUSY or TMIO_STAT_TXUNDERRUN<br />
|-<br />
| 0xC88044AC<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: TMIO_STAT_ILL_FUNC<br />
|-<br />
| 0xC92044E6<br />
| Operation not allowed with the current file openflags (maybe other causes too?).<br />
|-<br />
| 0xC9204509<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: TMIO_STAT_CMDTIMEOUT<br />
|-<br />
| 0xC960454B<br />
| [[SDMC]]/NAND bus error, when an error-bit in REG_SDSTATUS separate from the above errors is set. This can also indicate that the TWL partition table in the NAND sector0 is invalid, or that the sector signature for sector0 at offset 0x1FE is invalid?<br />
|-<br />
| 0xC960454C<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: TMIO_STAT_STOPBIT_ERR<br />
|-<br />
| 0xC960F401<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: Bit23 (0x00800000)<br />
|-<br />
| 0xD9004587<br />
| FSPXI: Hash verification failure (only for NCCH region hashes?).<br />
|-<br />
| 0xD9004588<br />
| FSPXI/FSUSER: Verification failure for RSA or hashes. FSUSER: Verification failed for [[Savegames|savegame]] AES-MAC.<br />
|-<br />
| 0xD900458B<br />
| Invalid RomFS / savedata block hash.<br />
|-<br />
| 0xD9004676<br />
| FSUSER: The specified service-command / archive is not accessible, due to the currently used exheader accessinfo not having the required bit(s) set. (This error can also indicate that the required ARM9 access-control mount flag is not enabled, in the exheader for any of the running ARM11 processes)<br />
|-<br />
| 0xE0E046BE<br />
| Invalid lowpath. This can also indicate that the specified archive-id does not exist, or that the specified archive-id is not accessible over FSPXI. In certain cases this can also be caused by attempting to open a FSUSER archive where none of the required bit(s) for the archive are set in the user-process exheader accessinfo.<br />
|-<br />
| 0xE0C046F9<br />
| FSPXI: Specified read-size doesn't match the actual filesize, when accessing ExeFS.<br />
|-<br />
| 0xE160F402<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: TMIO_STAT_RXRDY<br />
|-<br />
| 0xE160F403<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: Bit28 (0x10000000)<br />
|-<br />
| 0xE160F404<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: Bit27 (0x08000000)<br />
|}</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=FSPXI:ExportIntegrityVerificationSeed&diff=12113
FSPXI:ExportIntegrityVerificationSeed
2015-03-28T01:46:51Z
<p>Yifanlu: taken from 9.2 fs module</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x00440002]<br />
|-<br />
| 1<br />
| Always 0x00013004, for 0x130 size: (size<<8) <nowiki>|</nowiki> 4<br />
|-<br />
| 2<br />
| Output [[FSPXI:ImportIntegrityVerificationSeed|IntegrityVerificationSeed]] pointer <br />
|}<br />
<br />
=Response=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code<br />
|-<br />
| 1<br />
| Result code<br />
|}<br />
<br />
=Description=<br />
This encrypts [[nand/private/movable.sed]] to the output buffer, and writes the AES-CBC MAC to the output buffer as well.</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=FSPXI:ImportIntegrityVerificationSeed&diff=12112
FSPXI:ImportIntegrityVerificationSeed
2015-03-28T01:46:23Z
<p>Yifanlu: taken from 9.2 fs module</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x00450002]<br />
|-<br />
| 1<br />
| Always 0x00013006, for 0x130 size: (size<<8) <nowiki>|</nowiki> 6<br />
|-<br />
| 2<br />
| Input IntegrityVerificationSeed pointer<br />
|}<br />
<br />
=Response=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code<br />
|-<br />
| 1<br />
| Result code<br />
|}<br />
<br />
=IntegrityVerificationSeed=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset<br />
! Size<br />
! Description<br />
|-<br />
| 0x0<br />
| 0x10<br />
| AES-CBC MAC over a SHA256 hash, which hashes the first 0x110-bytes of the cleartext SEED.<br />
|-<br />
| 0x10<br />
| 0x120<br />
| The [[nand/private/movable.sed]], encrypted with AES-CTR using the above MAC for the counter.<br />
|}<br />
<br />
=Description=<br />
This decrypts the input SEED and verifies it with the input AES-CBC MAC, verifies the RSA-signature, then writes the data to [[nand/private/movable.sed]].</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=Filesystem_services_PXI&diff=12111
Filesystem services PXI
2015-03-28T01:45:28Z
<p>Yifanlu: assuming Filesystem_services is correct, these are the commands made to PxiFS from those calls</p>
<hr />
<div>{| class="wikitable" border="1"<br />
|-<br />
! Command Header, prior to [[3.0.0-5]]<br />
! Command Header, starting with [[3.0.0-5]]<br />
! Available since system version<br />
! Description<br />
|-<br />
| 0x000101C2<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:OpenFile|OpenFile]]<br />
|-<br />
| 0x00020142<br />
|?<br />
| [[1.0.0-0]]<br />
| DeleteFile? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) <br />
|-<br />
| 0x00030244<br />
|?<br />
| [[1.0.0-0]]<br />
| RenameFile? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, secondarchivehandlelo, secondarchivehandlehi, secondpathtype, secondpathsize, pathptrsize, pathptr, secondpathptrsize, secondpathptr)<br />
|-<br />
| 0x00040142<br />
|?<br />
| [[1.0.0-0]]<br />
| DeleteDirectory? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) <br />
|-<br />
| 0x00050202<br />
|?<br />
| [[1.0.0-0]]<br />
| CreateFile? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, unknown_u32, unknown_lo, unknown_hi, pathptrsize, pathptr) <br />
|-<br />
| 0x00060182<br />
|?<br />
| [[1.0.0-0]]<br />
| CreateDirectory? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, unknown_u32, pathptrsize, pathptr) <br />
|-<br />
| 0x00070244<br />
|?<br />
| [[1.0.0-0]]<br />
| RenameDirectory? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, secondarchivehandlelo, secondarchivehandlehi, secondpathtype, secondpathsize, pathptrsize, pathptr, secondpathptrsize, secondpathptr)<br />
|-<br />
| 0x00080102<br />
|?<br />
| [[1.0.0-0]]<br />
| OpenDirectory (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr)<br />
|-<br />
| 0x00090142<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:ReadFile|ReadFile]]<br />
|-<br />
| 0x000A00C2<br />
|?<br />
| [[1.0.0-0]]<br />
| CalculateFileHashSHA256<br />
|-<br />
| 0x000B0182<br />
|?<br />
| [[1.0.0-0]]<br />
| WriteFile<br />
|-<br />
| 0x000C0104<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CalcSavegameMAC|CalcSavegameMAC]]<br />
|-<br />
| 0x000D0080<br />
|?<br />
| [[1.0.0-0]]<br />
| GetFileSize<br />
|-<br />
| 0x000E0100<br />
|?<br />
| [[1.0.0-0]]<br />
| SetFileSize (sizelo, sizehi, filehandlelo, filehandlehi)<br />
|-<br />
| 0x000F0080<br />
|?<br />
| [[1.0.0-0]]<br />
| CloseFile (filehandlelo, filehandlehi)<br />
|-<br />
| 0x001000C2<br />
|?<br />
| [[1.0.0-0]]<br />
| ReadDirectory (dirhandlelo, dirhandlehi, count, ptrsize, ptr)<br />
|-<br />
| 0x00110080<br />
|?<br />
| [[1.0.0-0]]<br />
| CloseDirectory (dirhandlelo, dirhandlehi)<br />
|-<br />
| 0x001200C2<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:OpenArchive|OpenArchive]]<br />
|-<br />
| 0x00130102<br />
|?<br />
| [[1.0.0-0]]<br />
| CreateExtSaveData? (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) <br />
|-<br />
| 0x00140102<br />
|?<br />
| [[1.0.0-0]]<br />
| (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) <br />
|-<br />
| 0x00150102<br />
|?<br />
| [[1.0.0-0]]<br />
| (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr) <br />
|-<br />
| 0x00160080<br />
|?<br />
| [[1.0.0-0]]<br />
| CloseArchive (archivehandlelo, archivehandlehi)<br />
|-<br />
| 0x00170080<br />
|?<br />
| [[1.0.0-0]]<br />
| ReopenArchive? (archivehandlelo, archivehandlehi)<br />
|-<br />
| 0x00180000<br />
|?<br />
| [[1.0.0-0]]<br />
| GetCardType<br />
|-<br />
| 0x00190000<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:GetSdmcArchiveResource|GetSdmcArchiveResource]]<br />
|-<br />
| 0x001A0000<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:GetNandArchiveResource|GetNandArchiveResource]]<br />
|-<br />
| 0x001B0000<br />
|?<br />
| [[1.0.0-0]]<br />
| GetSdmcFatFsError<br />
|-<br />
| 0x001C0000<br />
|?<br />
| [[1.0.0-0]]<br />
| GetSdmcDetected<br />
|-<br />
| 0x001D0000<br />
|?<br />
| [[1.0.0-0]]<br />
| GetSdmcWritable<br />
|-<br />
| 0x001E0042<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:GetSdmcCid|GetSdmcCid]]<br />
|-<br />
| 0x001F0042<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:GetNandCid|GetNandCid]]<br />
|-<br />
| 0x00200000<br />
|?<br />
| [[1.0.0-0]]<br />
| GetSdmcSpeedInfo<br />
|-<br />
| 0x00210000<br />
|?<br />
| [[1.0.0-0]]<br />
| GetNandSpeedInfo<br />
|-<br />
| 0x00220042<br />
|?<br />
| [[1.0.0-0]]<br />
| GetSdmcLog<br />
|-<br />
| 0x00230042<br />
|?<br />
| [[1.0.0-0]]<br />
| GetNandLog<br />
|-<br />
| 0x00240000<br />
|?<br />
| [[1.0.0-0]]<br />
| ClearSdmcLog<br />
|-<br />
| 0x00250000<br />
|?<br />
| [[1.0.0-0]]<br />
| ClearNandLog<br />
|-<br />
| 0x00260000<br />
|?<br />
| [[1.0.0-0]]<br />
| GetCardSlotInserted<br />
|-<br />
| 0x00270000<br />
|?<br />
| [[1.0.0-0]]<br />
| CardSlotPowerOn<br />
|-<br />
| 0x00280000<br />
|?<br />
| [[1.0.0-0]]<br />
| CardSlotPowerOff<br />
|-<br />
| 0x00290000<br />
|?<br />
| [[1.0.0-0]]<br />
| CardSlotGetIfPowerStatus<br />
|-<br />
| 0x002A0040<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectCommand|CardNorDirectCommand]] (These CardNor commands are used for accessing the raw gamecard flash savedata)<br />
|-<br />
| 0x002B0080<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectCommandWithAddress|CardNorDirectCommandWithAddress]]<br />
|-<br />
| 0x002C0082<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectRead|CardNorDirectRead]]<br />
|-<br />
| 0x002D00C2<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectReadWithAddress|CardNorDirectReadWithAddress]]<br />
|-<br />
| 0x002E0082<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectWrite|CardNorDirectWrite]]<br />
|-<br />
| 0x002F00C2<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectWriteWithAddress|CardNorDirectWriteWithAddress]]<br />
|-<br />
| 0x003000C2<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectRead4IO|CardNorDirectRead4IO]]<br />
|-<br />
| 0x00310082<br />
|?<br />
| [[1.0.0-0]]<br />
| CardNorDirectCpuWriteWithoutVerify<br />
|-<br />
| 0x00320040<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:CardNorDirectSectorEraseWithoutVerify|CardNorDirectSectorEraseWithoutVerify]]<br />
|-<br />
| 0x00330080<br />
|?<br />
| [[1.0.0-0]]<br />
| GetProductInfo<br />
|-<br />
| 0x00340040<br />
|?<br />
| [[1.0.0-0]]<br />
| SetCardSpiBaudrate<br />
|-<br />
| 0x00350040<br />
|?<br />
| [[1.0.0-0]]<br />
| SetCardSpiBusMode<br />
|-<br />
| 0x00360040<br />
|?<br />
| [[1.0.0-0]]<br />
| SendInitializeInfo<br />
|-<br />
| 0x00370140<br />
|?<br />
| [[1.0.0-0]]<br />
| CreateExtSaveData<br />
|-<br />
| 0x003800C0<br />
|?<br />
| [[1.0.0-0]]<br />
| DeleteExtSaveData<br />
|-<br />
| 0x00390082<br />
|?<br />
| [[1.0.0-0]]<br />
| EnumerateExtSaveData<br />
|-<br />
| 0x003A0100<br />
|?<br />
| [[1.0.0-0]]<br />
| GetSpecialContentIndex<br />
|-<br />
| 0x003B00C2<br />
|?<br />
| [[1.0.0-0]]<br />
| GetLegacyRomHeader<br />
|-<br />
| 0x003C00C2<br />
| 0x003C00C2<br />
| [[1.0.0-0]]<br />
| GetLegacyBannerData<br />
|-<br />
| 0x003F0000<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:DeleteSdmcRoot|DeleteSdmcRoot]]<br />
|-<br />
| 0x00400040<br />
|?<br />
| [[1.0.0-0]]<br />
| DeleteAllExtSaveDataOnNand<br />
|-<br />
| 0x00410000<br />
|?<br />
| [[1.0.0-0]]<br />
| [[FSPXI:InitializeCtrFilesystem|InitializeCtrFilesystem]]<br />
|-<br />
| 0x00420000<br />
|?<br />
| [[1.0.0-0]]<br />
| CreateSeed<br />
|-<br />
| 0x00430042<br />
|?<br />
| [[2.0.0-2]]<br />
| [[FSPXI:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]<br />
|-<br />
| 0x00440040<br />
|?<br />
| [[2.0.0-2]]<br />
| GetArchiveResource<br />
|-<br />
| 0x00440002<br />
|?<br />
| [[2.0.0-2]]<br />
| [[FSPXI:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]<br />
|-<br />
| 0x00450002<br />
|?<br />
| [[2.0.0-2]]<br />
| [[FSPXI:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]<br />
|-<br />
| 0x00470082<br />
|?<br />
| [[2.0.0-2]]<br />
| EnumerateSharedExtSaveData<br />
|-<br />
| 0x00480102<br />
|?<br />
| [[2.0.0-2]]<br />
| GetLegacySubBannerData<br />
|-<br />
| 0x00490042<br />
|?<br />
| [[2.0.0-2]]<br />
| Initialize (?)<br />
|-<br />
| 0x004A00C2<br />
|?<br />
| [[2.0.0-2]]<br />
| OpenSpecialFile? (archivehandlelo, archivehandlehi, size, ptrsize_mul2, ptr)<br />
|-<br />
| 0x004B0102<br />
|?<br />
| [[2.0.0-2]]<br />
| ReadSpecialFile<br />
|-<br />
|?<br />
| 0x004B0000<br />
| [[3.0.0-5]]<br />
| [[FSPXI:GetMovableSedHashedKeyYRandomData|GetMovableSedHashedKeyYRandomData]]<br />
|-<br />
| 0x004C0040<br />
|?<br />
| [[2.0.0-2]]<br />
| GetSpecialFileSize<br />
|-<br />
|?<br />
| 0x004D01C4<br />
| [[3.0.0-5]]<br />
| [[FSPXI:ReadFileWrapper|ReadFileWrapper]]. If the first ReadFile call fails, this calls ReadFile again then executes hash-related code.<br />
|-<br />
|?<br />
| 0x004E0204<br />
| [[3.0.0-5]]<br />
| This is a wrapper for WriteFile, this is similar to command 0x004D01C4.<br />
|-<br />
|?<br />
| 0x004F....<br />
| [[3.0.0-5]]<br />
| (unknown_u64)<br />
|-<br />
|?<br />
| 0x00500000<br />
| [[3.0.0-5]]<br />
| Stubbed, this only returns value 0.<br />
|-<br />
|?<br />
| 0x0051....<br />
| [[3.0.0-5]]<br />
| (unknown_u8)<br />
|-<br />
|?<br />
| 0x00520042<br />
| [[3.0.0-5]]<br />
| (outbuffersize, outbufferptr)<br />
|-<br />
|?<br />
| 0x00530000<br />
| [[3.0.0-5]]<br />
| Unknown, stubbed with [[4.0.0-7]].<br />
|-<br />
|?<br />
| 0x0054....<br />
| [[4.0.0-7]]<br />
| Stubbed with [[4.0.0-7]].<br />
|-<br />
|?<br />
| 0x00550082<br />
| [[4.0.0-7]]<br />
| ReadNandReport (outbuffersize, u8 mediatype, outbufferptr)<br />
|-<br />
| None<br />
| 0x00560102<br />
| [[9.6.0-24|9.6.0-X]]<br />
| This calls some archive-class vtable funcptr, for the specified archive-handle. It's unknown what this is for.<br />
|}<br />
<br />
=Errors=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Error-code<br />
! Description<br />
|-<br />
| 0xC82044BE<br />
| Object does already exist/failed to create object.<br />
|-<br />
| 0xC8804478<br />
| Object doesn't exist / failed to open object(file). Or: The specified title does not exist in the [[Title_Database|database]].<br />
|-<br />
| 0xC880448D<br />
| FSPXI: Gamecard not inserted when attempting to use the gamecard.<br />
|-<br />
| 0xC88044AB<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: TMIO_STAT_CMD_BUSY or TMIO_STAT_TXUNDERRUN<br />
|-<br />
| 0xC88044AC<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: TMIO_STAT_ILL_FUNC<br />
|-<br />
| 0xC92044E6<br />
| Operation not allowed with the current file openflags (maybe other causes too?).<br />
|-<br />
| 0xC9204509<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: TMIO_STAT_CMDTIMEOUT<br />
|-<br />
| 0xC960454B<br />
| [[SDMC]]/NAND bus error, when an error-bit in REG_SDSTATUS separate from the above errors is set. This can also indicate that the TWL partition table in the NAND sector0 is invalid, or that the sector signature for sector0 at offset 0x1FE is invalid?<br />
|-<br />
| 0xC960454C<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: TMIO_STAT_STOPBIT_ERR<br />
|-<br />
| 0xC960F401<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: Bit23 (0x00800000)<br />
|-<br />
| 0xD9004587<br />
| FSPXI: Hash verification failure (only for NCCH region hashes?).<br />
|-<br />
| 0xD9004588<br />
| FSPXI/FSUSER: Verification failure for RSA or hashes. FSUSER: Verification failed for [[Savegames|savegame]] AES-MAC.<br />
|-<br />
| 0xD900458B<br />
| Invalid RomFS / savedata block hash.<br />
|-<br />
| 0xD9004676<br />
| FSUSER: The specified service-command / archive is not accessible, due to the currently used exheader accessinfo not having the required bit(s) set. (This error can also indicate that the required ARM9 access-control mount flag is not enabled, in the exheader for any of the running ARM11 processes)<br />
|-<br />
| 0xE0E046BE<br />
| Invalid lowpath. This can also indicate that the specified archive-id does not exist, or that the specified archive-id is not accessible over FSPXI. In certain cases this can also be caused by attempting to open a FSUSER archive where none of the required bit(s) for the archive are set in the user-process exheader accessinfo.<br />
|-<br />
| 0xE0C046F9<br />
| FSPXI: Specified read-size doesn't match the actual filesize, when accessing ExeFS.<br />
|-<br />
| 0xE160F402<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: TMIO_STAT_RXRDY<br />
|-<br />
| 0xE160F403<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: Bit28 (0x10000000)<br />
|-<br />
| 0xE160F404<br />
| [[SDMC]]/NAND bus error, REG_SDSTATUS: Bit27 (0x08000000)<br />
|}</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=AMNet:ImportCertificates&diff=12093
AMNet:ImportCertificates
2015-03-26T18:43:09Z
<p>Yifanlu: /* Description */</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x08190108]<br />
|-<br />
| 1<br />
| First certificate size<br />
|-<br />
| 2<br />
| Second certificate size<br />
|-<br />
| 3<br />
| Third certificate size<br />
|-<br />
| 4<br />
| Fourth certificate size<br />
|-<br />
| 5<br />
| 16 * first cert size + 10<br />
|-<br />
| 6<br />
| First certificate ptr<br />
|-<br />
| 7<br />
| 16 * second cert size + 10<br />
|-<br />
| 8<br />
| Second certificate ptr<br />
|-<br />
| 9<br />
| 16 * third cert size + 10<br />
|-<br />
| 10<br />
| Third certificate ptr<br />
|-<br />
| 11<br />
| 16 * fourth cert size + 10<br />
|-<br />
| 12<br />
| Fourth certificate ptr<br />
|}<br />
<br />
=Response=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code<br />
|-<br />
| 1<br />
| Result code<br />
|}<br />
<br />
=Description=<br />
This is called before [[AMNet:OpenTicket]] to set the [[Ticket#Certificate_Chain|certificate chain]] for the tickets to be installed. You can submit up to four certificates at a time, and if you have more than four, you can make multiple calls. If you have less than four certificates, you can pass in NULL for the pointers, 0 for the sizes, and 16*0+10=10 for the other sizes.</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=AMNet:ImportCertificates&diff=12092
AMNet:ImportCertificates
2015-03-26T18:42:08Z
<p>Yifanlu: /* Request */</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x08190108]<br />
|-<br />
| 1<br />
| First certificate size<br />
|-<br />
| 2<br />
| Second certificate size<br />
|-<br />
| 3<br />
| Third certificate size<br />
|-<br />
| 4<br />
| Fourth certificate size<br />
|-<br />
| 5<br />
| 16 * first cert size + 10<br />
|-<br />
| 6<br />
| First certificate ptr<br />
|-<br />
| 7<br />
| 16 * second cert size + 10<br />
|-<br />
| 8<br />
| Second certificate ptr<br />
|-<br />
| 9<br />
| 16 * third cert size + 10<br />
|-<br />
| 10<br />
| Third certificate ptr<br />
|-<br />
| 11<br />
| 16 * fourth cert size + 10<br />
|-<br />
| 12<br />
| Fourth certificate ptr<br />
|}<br />
<br />
=Response=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code<br />
|-<br />
| 1<br />
| Result code<br />
|}<br />
<br />
=Description=<br />
This is called before [[AMNet:OpenTicket]] to set the [[Ticket#Certificate_Chain|certificate chain]] for the tickets to be installed. You can submit up to four certificates at a time, and if you have more than four, you can make multiple calls. If you have less than four certificates, you can pass in NULL for the pointers and 16*0+10=10 for the size field.</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=Application_Manager_Services&diff=12091
Application Manager Services
2015-03-26T18:32:27Z
<p>Yifanlu: /* Application Manager network service "am:net" */</p>
<hr />
<div>[[Category:Services]]<br />
<br />
= Application Manager services =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Description<br />
|-<br />
| 0x00010040<br />
| [[AMNet:TitleIDListGetTotal|TitleIDListGetTotal]]<br />
|-<br />
| 0x00020082<br />
| [[AMNet:GetTitleIDList|GetTitleIDList]]<br />
|-<br />
| 0x00030084<br />
| [[AMNet:ListTitles|ListTitles]]<br />
|-<br />
| 0x000400C0<br />
| [[AM:DeleteApplicationTitle|DeleteApplicationTitle]]<br />
|-<br />
| 0x000500C0<br />
| [[AM:GetTitleProductCode|GetTitleProductCode]]<br />
|-<br />
| 0x00080000<br />
| [[AMNet:TitleIDListGetTotal3|TitleIDListGetTotal3]]<br />
|-<br />
| 0x00090082<br />
| [[AMNet:GetTitleIDList3|GetTitleIDList3]]<br />
|-<br />
| 0x000A0000<br />
| [[AMNet:GetDeviceID|GetDeviceID]] (Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x003C0000)<br />
|-<br />
| 0x000D0084<br />
| [[AMNet:ListTitles2|ListTitles2]]<br />
|-<br />
| 0x00140040<br />
| [[AMNet:FinishInstallToMedia|FinishInstallToMedia]]<br />
|-<br />
| 0x00180080<br />
| This is a wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x00470080. (unknown_u8, unknown_u8)<br />
|-<br />
| 0x00190040<br />
| [[AM:ReloadDBS|ReloadDBS]]<br />
|-<br />
| 0x001A00C0<br />
| [[AM:GetDSiWareExportSize|GetDSiWareExportSize]]<br />
|-<br />
| 0x001B0144<br />
| [[AM:ExportDSiWare|ExportDSiWare]]<br />
|-<br />
| 0x001C0084<br />
| [[AM:ImportDSiWare|ImportDSiWare]]<br />
|-<br />
| 0x001D0000<br />
| Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x00510000.<br />
|-<br />
| 0x001E....<br />
| DSiWare related.<br />
|-<br />
| 0x00230080<br />
| [[AMNet:TitleIDListGetTotal2|TitleIDListGetTotal2]]<br />
|-<br />
| 0x002400C2<br />
| [[AMNet:GetTitleIDList2|GetTitleIDList2]]<br />
|}<br />
<br />
The above commands are for am:sys, am:u, and am:net.<br />
<br />
== Application Manager services "am:u" and "am:net" ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Description<br />
|-<br />
| 0x04010080<br />
| [[AM:InstallFIRM|InstallFIRM]]<br />
|-<br />
| 0x04020040<br />
| [[AM:StartInstallCIADB0|StartInstallCIADB0]]<br />
|-<br />
| 0x04030000<br />
| [[AM:StartInstallCIADB1|StartInstallCIADB1]]<br />
|-<br />
| 0x04040002<br />
| [[AM:AbortCIAInstall|AbortCIAInstall]]<br />
|-<br />
| 0x04050002<br />
| [[AM:CloseCIAFinalizeInstall|CloseCIAFinalizeInstall]]<br />
|-<br />
| 0x04060002<br />
| [[AM:CloseCIA|CloseCIA]]<br />
|-<br />
| 0x040700C2<br />
| [[AM:FinalizeTitlesInstall|FinalizeTitlesInstall]]<br />
|-<br />
| 0x04080042<br />
| This returns a [[AMNet:ListTitles|titlelist]] entry for a [[CIA]], using the specified file-handle. AM module reads data from the specified CIA file-handle for this. (entryptr*, [[CIA]] filehandle, mediatype)<br />
|-<br />
| 0x040B0002<br />
| For this command, AM module reads an u64 from the [[CIA]] using the specified file-handle? (u64* out, [[CIA]] filehandle)<br />
|-<br />
| 0x040E00C2<br />
| [[AM:InstallTitlesFinish|InstallTitlesFinish]]<br />
|-<br />
| 0x040F0000<br />
| [[AM:InstallNATIVEFIRM|InstallNATIVEFIRM]]<br />
|-<br />
| 0x041000C0<br />
| [[AM:DeleteTitle|DeleteTitle]]<br />
|-<br />
| 0x04120000<br />
| [[AM:Initialize|Initialize]]<br />
|}<br />
<br />
= Application Manager service "am:app" =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Description<br />
|-<br />
| 0x100100C0<br />
| ?<br />
|-<br />
| 0x10030142<br />
| ?<br />
|-<br />
| 0x10050084<br />
| ?<br />
|-<br />
| 0x10070102<br />
| ?<br />
|-<br />
|}<br />
<br />
= Application Manager service "am:sys" =<br />
<br />
= Application Manager service "am:u" =<br />
<br />
= Application Manager service "am:pipe" =<br />
<br />
= Application Manager network service "am:net" =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Description<br />
|-<br />
| 0x08010000<br />
| [[AMNet:OpenTicket|OpenTicket]]<br />
|-<br />
| 0x08020002<br />
| [[AMNet:TicketAbortInstall|TicketAbortInstall]]<br />
|-<br />
| 0x08030002<br />
| [[AMNet:TicketFinalizeInstall|TicketFinalizeInstall]]<br />
|-<br />
| 0x08040100<br />
| [[AMNet:InstallTitleBegin|InstallTitleBegin]]<br />
|-<br />
| 0x08050000<br />
| [[AMNet:InstallTitleAbort|InstallTitleAbort]]<br />
|-<br />
| 0x080600C0<br />
| [[AMNet:InstallTitleResume|InstallTitleResume]]<br />
|-<br />
| 0x08070000<br />
| [[AMNet:InstallTitleAbortTMD|InstallTitleAbortTMD]]<br />
|-<br />
| 0x08080000<br />
| [[AMNet:InstallTitleFinish|InstallTitleFinish]]<br />
|-<br />
| 0x080A0000<br />
| [[AMNet:OpenTMD|OpenTMD]]<br />
|-<br />
| 0x080B0002<br />
| [[AMNet:TMDAbortInstall|TMDAbortInstall]]<br />
|-<br />
| 0x080C0042<br />
| [[AMNet:TMDFinalizeInstall|TMDFinalizeInstall]]<br />
|-<br />
| 0x080E0040<br />
| [[AMNet:OpenContentEncrypted|OpenContentCreate]]<br />
|-<br />
| 0x080F0002<br />
| [[AMNet:ContentAbortInstall|ContentAbortInstall]]<br />
|-<br />
| 0x08100040<br />
| [[AMNet:OpenContentDisc|OpenContentResume]]<br />
|-<br />
| 0x08120002<br />
| [[AMNet:ContentFinalizeInstall|ContentFinalizeInstall]]<br />
|-<br />
| 0x08130000<br />
| [[AMNet:GetTotalContents|GetTotalContents]]<br />
|-<br />
| 0x08140042<br />
| [[AMNet:GetContentIndexes|GetContentIndexes]]<br />
|-<br />
| 0x08150044<br />
| [[AMNet:GetContentsInfo|GetContentsInfo]]<br />
|-<br />
| 0x08190108<br />
| [[AMNet:SetCertificates|SetCertificates]]<br />
|-<br />
| 0x081B00C2<br />
| [[AMNet:InstallTitlesFinish|InstallTitlesFinish]]<br />
|}<br />
<br />
= File service =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Description<br />
|-<br />
|-<br />
| 0x080200C2<br />
| [[AMFile:Read|Read]]<br />
|-<br />
| 0x08030102<br />
| [[AMFile:Write|Write]]<br />
|-<br />
| 0x08040000<br />
| [[AMFile:GetSize|GetSize]]<br />
|-<br />
| 0x08050080<br />
| [[AMFile:SetSize|SetSize]]<br />
|-<br />
| 0x08080000<br />
| [[AMFile:Close|Close]]<br />
|}<br />
<br />
These are identical to [[Filesystem_services#File_service|FSFile]].<br />
<br />
=Errors=<br />
See [[Application_Manager_Services_PXI|this]].</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=AMNet:ImportCertificates&diff=12090
AMNet:ImportCertificates
2015-03-26T18:30:31Z
<p>Yifanlu: Created page with "=Request= {| class="wikitable" border="1" |- ! Index Word ! Description |- | 0 | Header code [0x08190108] |- | 1 | First certificate ptr |- | 2 | Second certificate ptr |- | 3 ..."</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x08190108]<br />
|-<br />
| 1<br />
| First certificate ptr<br />
|-<br />
| 2<br />
| Second certificate ptr<br />
|-<br />
| 3<br />
| Third certificate ptr<br />
|-<br />
| 4<br />
| Fourth certificate ptr<br />
|-<br />
| 5<br />
| 16 * first cert size + 10<br />
|-<br />
| 6<br />
| First certificate ptr<br />
|-<br />
| 7<br />
| 16 * second cert size + 10<br />
|-<br />
| 8<br />
| Second certificate ptr<br />
|-<br />
| 9<br />
| 16 * third cert size + 10<br />
|-<br />
| 10<br />
| Third certificate ptr<br />
|-<br />
| 11<br />
| 16 * fourth cert size + 10<br />
|-<br />
| 12<br />
| Fourth certificate ptr<br />
|}<br />
<br />
=Response=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code<br />
|-<br />
| 1<br />
| Result code<br />
|}<br />
<br />
=Description=<br />
This is called before [[AMNet:OpenTicket]] to set the [[Ticket#Certificate_Chain|certificate chain]] for the tickets to be installed. You can submit up to four certificates at a time, and if you have more than four, you can make multiple calls. If you have less than four certificates, you can pass in NULL for the pointers and 16*0+10=10 for the size field.</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=Application_Manager_Services_PXI&diff=12069
Application Manager Services PXI
2015-03-26T02:52:42Z
<p>Yifanlu: </p>
<hr />
<div>{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Available since system version<br />
! Description<br />
|-<br />
| 0x00010040<br />
| [[1.0.0-0]]<br />
| [[AMPXI:GetTitleCount|GetTitleCount]]<br />
|-<br />
| 0x00020082<br />
| [[1.0.0-0]]<br />
| [[AMPXI:GetTitleList|GetTitleList]]<br />
|-<br />
| 0x00030084<br />
| [[1.0.0-0]]<br />
| [[AMPXI:GetTitleInfo|GetTitleInfo]]<br />
|-<br />
| 0x000400C0<br />
| [[1.0.0-0]]<br />
| [[AMPXI:DeleteTitle|DeleteTitle]]<br />
|-<br />
| 0x000500C0<br />
| [[1.0.0-0]]<br />
| [[AMPXI:GetTitleProductCode|GetTitleProductCode]]<br />
|-<br />
| 0x000600C0<br />
| [[1.0.0-0]]<br />
| (unknown_u8, unknown_u64)<br />
|-<br />
| 0x00070080<br />
| [[1.0.0-0]]<br />
| (unknown_u8, unknown_u32)<br />
|-<br />
| 0x00080080<br />
| [[1.0.0-0]]<br />
| [[AMPXI:InstallFIRM|InstallFIRM]]<br />
|-<br />
| 0x00090000<br />
| [[1.0.0-0]]<br />
| InstallTikBegin<br />
|-<br />
| 0x000A0042<br />
| [[1.0.0-0]]<br />
| InstallTikWrite (size, ptr, ptrsize)<br />
|-<br />
| 0x000B0000<br />
| [[1.0.0-0]]<br />
| InstallTikAbort<br />
|-<br />
| 0x000C0000<br />
| [[1.0.0-0]]<br />
| InstallTikFinish<br />
|-<br />
| 0x000D0080<br />
| [[1.0.0-0]]<br />
| (unknown_u64)<br />
|-<br />
| 0x000E0000<br />
| [[1.0.0-0]]<br />
| GetTitleAllCount<br />
|-<br />
| 0x000F0082<br />
| [[1.0.0-0]]<br />
| GetTitleAllList<br />
|-<br />
| 0x00100100<br />
| [[1.0.0-0]]<br />
| InstallTitleBegin (?)<br />
|-<br />
| 0x00110000<br />
| [[1.0.0-0]]<br />
| InstallTitleAbort (?)<br />
|-<br />
| 0x00120100<br />
| [[1.0.0-0]]<br />
| InstallTitleResume (?)<br />
|-<br />
| 0x00130000<br />
| [[1.0.0-0]]<br />
| InstallTmdBegin (?)<br />
|-<br />
| 0x00140042<br />
| [[1.0.0-0]]<br />
| [[AMPXI:InstallTmdWrite|InstallTmdWrite]]<br />
|-<br />
| 0x00150000<br />
| [[1.0.0-0]]<br />
|?<br />
|-<br />
| 0x00160040<br />
| [[1.0.0-0]]<br />
| InstallTmdFinish (?)<br />
|-<br />
| 0x00170040<br />
| [[1.0.0-0]]<br />
| [[AMPXI:InstallContentBegin|InstallContentBegin]]<br />
|-<br />
| 0x00180042<br />
| [[1.0.0-0]]<br />
| [[AMPXI:InstallContentWrite|InstallContentWrite]]<br />
|-<br />
| 0x00190000<br />
| [[1.0.0-0]]<br />
| InstallContentAbort (?)<br />
|-<br />
| 0x001A0000<br />
| [[1.0.0-0]]<br />
|?<br />
|-<br />
| 0x001B0040<br />
| [[1.0.0-0]]<br />
| [[AMPXI:InstallContentResume|InstallContentResume]]<br />
|-<br />
| 0x001C0000<br />
| [[1.0.0-0]]<br />
| [[AMPXI:InstallContentFinish|InstallContentFinish]]<br />
|-<br />
| 0x001D0040<br />
| [[1.0.0-0]]<br />
| (unknown_u8, unknown_u32)<br />
|-<br />
| 0x001E00C2<br />
| [[1.0.0-0]]<br />
| (unknown_entrycount, unknown_u8, unknown_u32, ptr, ptrsize)<br />
|-<br />
| 0x001F0084<br />
| [[1.0.0-0]]<br />
| [[AMPXI:GetTitleTemporaryInfo|GetTitleTemporaryInfo]]<br />
|-<br />
| 0x002000C0<br />
| [[1.0.0-0]]<br />
| (unknown_u8, unknown_u64)<br />
|-<br />
| 0x002100C0<br />
| [[1.0.0-0]]<br />
| (unknown_u8, unknown_u64)<br />
|-<br />
| 0x00220102<br />
| [[1.0.0-0]]<br />
| (count, unknown_u8, unknown_u64, ptrsize_count_mul_2, ptr)<br />
|-<br />
| 0x00230104<br />
| [[1.0.0-0]]<br />
| (count, unknown_u8, unknown_u64, ptr1size_count_mul_2, ptr1, ptr2size_count_mul_24, ptr2)<br />
|-<br />
| 0x00240102<br />
| [[1.0.0-0]]<br />
| (count, unknown_u8, unknown_u64, ptrsize_count_mul2, ptr)<br />
|-<br />
| 0x00250000<br />
| [[1.0.0-0]] <br />
| GetContentCount (?)<br />
|-<br />
| 0x00260042<br />
| [[1.0.0-0]]<br />
| GetContentIds (?)<br />
|-<br />
| 0x00270044<br />
| [[1.0.0-0]]<br />
| GetContentInfoForIds (?)<br />
|-<br />
| 0x00280000<br />
| [[1.0.0-0]]<br />
|?<br />
|-<br />
| 0x00290000<br />
| [[1.0.0-0]]<br />
| InstallTitleFinish (?)<br />
|-<br />
| 0x002A00C2<br />
| [[1.0.0-0]]<br />
| (unknown_u8, count, unknown_u8, ptrsize_count_mul_8, ptr)<br />
|-<br />
| 0x002B....<br />
| [[1.0.0-0]]<br />
| ?<br />
|-<br />
| 0x002C....<br />
| [[1.0.0-0]]<br />
| ?<br />
|-<br />
| 0x002D....<br />
| [[1.0.0-0]]<br />
| ?<br />
|-<br />
| 0x002E....<br />
| [[1.0.0-0]]<br />
| ?<br />
|-<br />
| 0x002F....<br />
| [[1.0.0-0]]<br />
| ?<br />
|-<br />
| 0x0030....<br />
| [[1.0.0-0]]<br />
| ?<br />
|-<br />
| 0x0031....<br />
| [[1.0.0-0]]<br />
| ?<br />
|-<br />
| 0x0032....<br />
| [[1.0.0-0]]<br />
| ?<br />
|-<br />
| 0x0033....<br />
| [[1.0.0-0]]<br />
| ?<br />
|-<br />
| 0x0034....<br />
| [[1.0.0-0]]<br />
| ?<br />
|-<br />
| 0x0035....<br />
| [[1.0.0-0]]<br />
| ?<br />
|-<br />
| 0x0036....<br />
| [[1.0.0-0]]<br />
| ?<br />
|-<br />
| 0x0037....<br />
| [[1.0.0-0]]<br />
| ?<br />
|-<br />
| 0x0038....<br />
| [[1.0.0-0]]<br />
| ?<br />
|-<br />
| 0x00390146<br />
| [[1.0.0-0]]<br />
| (size2, size3, unknown_u64, size1, ptr1size_size1, ptr1, ptr2size_size2, ptr2, ptr3size_size3, ptr3)<br />
|-<br />
| 0x003A0146<br />
| [[1.0.0-0]]<br />
| (unknown_u64, size1, size2, size3, ptr1size_size1, ptr1, ptr2size_size2, ptr2, ptr3size_size3, ptr3)<br />
|-<br />
| 0x003B0042<br />
| [[1.0.0-0]]<br />
| (size, ptrsize, ptr)<br />
|-<br />
| 0x003C0000<br />
| [[1.0.0-0]]<br />
|?<br />
|-<br />
| 0x003D0108<br />
| [[1.0.0-0]]<br />
| (size1, size2, size3, size4, ptr1size, ptr1, ptr2size, ptr2, ptr3size, ptr3, ptr4size, ptr4)<br />
|-<br />
| 0x003E0042<br />
| [[1.0.0-0]]<br />
| (size, ptrsize, ptr)<br />
|-<br />
| 0x003F0040<br />
| [[1.0.0-0]]<br />
| (unknown_u8)<br />
|-<br />
| 0x00400040<br />
| [[1.0.0-0]]<br />
| FinishInstallToMedia (u8 mediatype)<br />
|-<br />
| 0x00410000<br />
| [[1.0.0-0]]<br />
|?<br />
|-<br />
| 0x00420142<br />
| [[1.0.0-0]]<br />
| InstallCommit<br />
|-<br />
| 0x004301C8<br />
| [[2.0.0-2]]<br />
| [[AMPXI:VerifyDSiWareFooter|VerifyDSiWareFooter]]<br />
|-<br />
| 0x004400C4<br />
| [[2.0.0-2]]<br />
| This does basically nothing: after checking the two buffers' mem-ranges successfully(on failure it executes svcBreak like all other Process9 code for that), this just returns 0x0.<br />
|-<br />
| 0x00450108<br />
| [[2.0.0-2]]<br />
| (size1, size3, size2, unknown_u8, ptr1size, ptr1, ptr2size, ptr2, ptr3size, ptr3, ptr4size_size2, ptr4) (DecryptDSiWareData)<br />
|-<br />
| 0x00460182<br />
| [[2.0.0-2]]<br />
| [[AMPXI:WriteTWLSavedata|WriteTWLSavedata]]<br />
|-<br />
| 0x00470080<br />
| [[2.0.0-2]]<br />
| (unknown_u8, unknown_u8)<br />
|-<br />
| 0x00480040<br />
| [[2.0.0-2]]<br />
| [[AMPXI:ReloadDBS|ReloadDBS]]<br />
|-<br />
| 0x00490080<br />
| [[2.0.0-2]]<br />
| (unknown_u64)<br />
|-<br />
| 0x004A0102<br />
| [[2.0.0-2]]<br />
| (count, unknown_u64, unknown_u8, ptrsize_count_mul_8, ptr)<br />
|-<br />
| 0x004B0100<br />
| [[2.0.0-2]]<br />
| (unknown_u64, unknown_u64)<br />
|-<br />
| 0x004C0042<br />
| [[2.0.0-2]]<br />
| (count, ptrsize_count_mul_24, ptr)<br />
|-<br />
| 0x004D0144<br />
| [[2.0.0-2]]<br />
| [[AMPXI:ExportDSiWare|ExportDSiWare]]<br />
|-<br />
| 0x004E00C0<br />
| [[2.0.0-2]]<br />
| (unknown_u64, unknown_u8)<br />
|-<br />
| 0x004F00C0<br />
| [[2.0.0-2]]<br />
| [[AMPXI:GetDSiWareExportSize|GetDSiWareExportSize]]<br />
|-<br />
| 0x00500044<br />
| [[2.0.0-2]]<br />
| (count, ptr1size_count_mul_8, ptr1, ptr2size_count_mul_4, ptr2)<br />
|-<br />
| 0x00510000<br />
| [[2.0.0-2]]<br />
|?<br />
|-<br />
| 0x00520040<br />
| [[2.0.0-2]]<br />
| (unknown_u8)<br />
|-<br />
| 0x00530084<br />
| [[2.0.0-2]]<br />
| [[AMPXI:ValidateDSiWareMovableSedHash|ValidateDSiWareMovableSedHash]]<br />
|-<br />
| 0x00540000<br />
| [[2.0.0-2]]<br />
|?<br />
|-<br />
| 0x005500C4<br />
| [[2.0.0-2]]<br />
| [[AMPXI:ValidateDSiWareSectionMAC|ValidateDSiWareSectionMAC]]<br />
|-<br />
| 0x005600C0<br />
| [[2.0.0-2]]<br />
| (unknown_u64, unknown_u16)<br />
|-<br />
| 0x00570042<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x0058....<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x00590104<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x005A0142<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x005B....<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x005C0044<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x005D0082<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x005E0102<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x005F....<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x00600102<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x00610142<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x00620044<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x00630042<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x0064....<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x0065....<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x0066....<br />
| [[4.0.0-7]]<br />
| Stubbed starting with [[4.0.0-7]], this only returns zero for the command result-code.<br />
|-<br />
| 0x00670082<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x006801C2<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x0069....<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x006A....<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x006B0142<br />
| [[4.0.0-7]]<br />
| ?<br />
|-<br />
| 0x006C....<br />
| [[5.0.0-11]]<br />
| (u8 [[Mediatypes|Mediatype]], u64 programID)<br />
|}<br />
<br />
=Errors=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Error-code<br />
! Description<br />
|-<br />
| 0xC8A0802B<br />
| This indicates the the [[Title_Database|dbs]] image(.db) does not exist, or opening the .db file failed.<br />
|-<br />
| 0xC8E083FC<br />
| This error indicates that the title is already installed, with the same title-version as the title being installed?<br />
|-<br />
| 0xD8E08027<br />
| Invalid title-version, or the title-version of the title being installed is older than the currently installed title-version.<br />
|-<br />
| 0xD8A08004<br />
| Invalid ticket title version.<br />
|-<br />
| 0xD8E08025<br />
| Invalid NCCH. returned from InstallContentFinish<br />
|-<br />
| 0xD8A08029<br />
| Error-type 1<br />
|-<br />
| 0xD8E08065<br />
| Error-type -1<br />
|-<br />
| 0xD8E08065+1 / 0xD8E08066<br />
| Error-type -2<br />
|-<br />
| 0xD8E08065+2 / 0xD8E08067<br />
| Error-type -3<br />
|-<br />
| 0xD8E08065+3 / 0xD8E08068<br />
| Error-type -4<br />
|-<br />
| 0xD8E08065+4 / 0xD8E08069<br />
| Error-type -5<br />
|-<br />
| 0xD8E08065+5 / 0xD8E0806A<br />
| Error-type -6. Returned when a function returns error -2011: signature check for cert(TMD/TIK/cert-chain, ...) failed.<br />
|-<br />
| 0xD8E08065+6 / 0xD8E0806B<br />
| Error-type -7<br />
|-<br />
| 0xD8E08065+7 / 0xD8E0806C<br />
| Error-type -8<br />
|-<br />
| 0xD8E08065+8 / 0xD8E0806D<br />
| Error-type -9<br />
|-<br />
| 0xD8E08065+9 / 0xD8E0806E<br />
| Error-type -10<br />
|-<br />
| 0xD8E08065+10 / 0xD8E0806F<br />
| Error-type -11<br />
|-<br />
| 0xD8E08065+11 / 0xD8E08070<br />
| Error-type -12<br />
|-<br />
| 0xD8E08065+12 / 0xD8E08071<br />
| Error-type -13<br />
|-<br />
| 0xD8E08065+13 / 0xD8E08072<br />
| Error-type -14<br />
|-<br />
| 0xD8A083FA<br />
| Invalid titleID.<br />
|-<br />
| 0xE0E0802C<br />
| AM module returns this error when the system-title bit is set for the input CTR/TWL titleID-high, for [[AM:DeleteApplicationTitle]].<br />
|}</div>
Yifanlu
https://www.3dbrew.org/w/index.php?title=PS:EncryptDecryptAes&diff=12023
PS:EncryptDecryptAes
2015-03-23T20:54:21Z
<p>Yifanlu: SSL process passes dst size as word 2. did not check if it is used though.</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x00040204]<br />
|-<br />
| 1<br />
| Size in bytes<br />
|-<br />
| 2<br />
| Destination size in bytes (Unused)<br />
|-<br />
| 3-6<br />
| IV / CTR<br />
|-<br />
| 7<br />
| u8 Algorithm [[PSPXI:EncryptDecryptAes|Type]] (0..5)<br />
|-<br />
| 8<br />
| u8 Key [[PSPXI:EncryptDecryptAes|Type]] (0..7)<br />
|-<br />
| 9<br />
| (size<<4) <nowiki>|</nowiki> 10<br />
|-<br />
| 10<br />
| Source pointer<br />
|-<br />
| 11<br />
| (size<<4) <nowiki>|</nowiki> 12<br />
|-<br />
| 12<br />
| Destination pointer<br />
|}<br />
<br />
=Response=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x00040144]<br />
|-<br />
| 1<br />
| Result code<br />
|-<br />
| 2-5<br />
| See [[PSPXI:EncryptDecryptAes|here]].<br />
|}<br />
<br />
=Description=<br />
This is a wrapper for [[PSPXI:EncryptDecryptAes]]. Before using this PSPXI command, PS module will check whether the algorithm type is AES-CCM. PS module will return error-code 0xC90107E8 when the algorithm type is AES-CCM, since [[PSPXI:EncryptDecryptAes]] doesn't support AES-CCM. When the algorithm type is AES-CBC, PS module will clear the low 4-bits of the data size.</div>
Yifanlu