https://www.3dbrew.org/w/api.php?action=feedcontributions&user=Joel16&feedformat=atom
3dbrew - User contributions [en]
2024-03-28T14:54:00Z
User contributions
MediaWiki 1.35.8
https://www.3dbrew.org/w/index.php?title=Config_Services&diff=20428
Config Services
2017-10-27T16:03:39Z
<p>Joel16: /* Config service "cfg:s" */</p>
<hr />
<div>[[Category:Services]]<br />
<br />
= Config Services =<br />
These commands are common to all Config services, except for "cfg:nor".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Available since system version<br />
! Description<br />
|-<br />
| 0x00010082<br />
| <br />
| [[CfgS:GetConfigInfoBlk2|GetConfigInfoBlk2]]<br />
|-<br />
| 0x00020000<br />
| <br />
| [[Cfg:SecureInfoGetRegion|SecureInfoGetRegion]]<br />
|-<br />
| 0x00030040<br />
| <br />
| [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]]/GetTransferableId<br />
|-<br />
| 0x00040000<br />
| [[3.0.0-5]]<br />
| [[Cfg:GetRegionCanadaUSA|GetRegionCanadaUSA]]/IsCoppacsSupported<br />
|-<br />
| 0x00050000<br />
| [[5.0.0-11]]<br />
| [[Cfg:GetSystemModel|GetSystemModel]]<br />
|-<br />
| 0x00060000<br />
| [[6.0.0-11]]<br />
| [[Cfg:GetModelNintendo2DS|GetModelNintendo2DS]]<br />
|-<br />
| 0x00070040<br />
| [[7.0.0-13]]<br />
| (u8 val) This writes the input u8 to the first byte in the config-block for blkID [[Config_Savegame|0x00160000]].<br />
|-<br />
| 0x00080080<br />
| [[7.0.0-13]]<br />
| [[Cfg:TranslateCountryInfo|TranslateCountryInfo]]<br />
|-<br />
| 0x00090040<br />
| [[7.0.0-13]]<br />
| [[Cfg:GetCountryCodeString|GetCountryCodeString]]<br />
|-<br />
| 0x000A0040<br />
| [[7.0.0-13]]<br />
| [[Cfg:GetCountryCodeID|GetCountryCodeID]]<br />
|-<br />
| 0x000B0000<br />
| [[9.3.0-21|9.3.0-X]]<br />
| IsFangateSupported<br />
|}<br />
<br />
= Config service "cfg:u" =<br />
This service provides no new commands in addition to the common ones.<br />
<br />
= Config service "cfg:s" =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Available since system version<br />
! Description<br />
|-<br />
| 0x00050000<br />
| <br />
| Same as cfg:u 0x00050000 cmd?<br />
|-<br />
| 0x04010082<br />
| <br />
| [[CfgS:GetConfigInfoBlk8|GetConfigInfoBlk8]]<br />
|-<br />
| 0x04020082<br />
| <br />
| [[CfgS:SetConfigInfoBlk4|SetConfigInfoBlk4]]<br />
|-<br />
| 0x04030000<br />
| <br />
| [[Cfg:UpdateConfigNANDSavegame|UpdateConfigNANDSavegame]]<br />
|-<br />
| 0x04040042<br />
| <br />
| [[Cfg:GetLocalFriendCodeSeedData|GetLocalFriendCodeSeedData]]<br />
|-<br />
| 0x04050000<br />
| <br />
| [[CfgS:GetLocalFriendCodeSeed|GetLocalFriendCodeSeed]]<br />
|-<br />
| 0x04060000<br />
| <br />
| [[Cfg:SecureInfoGetRegion|SecureInfoGetRegion]]<br />
|-<br />
| 0x04070000<br />
| <br />
| [[CfgS:SecureInfoGetByte101|SecureInfoGetByte101]]<br />
|-<br />
| 0x04080042<br />
| <br />
| [[CfgS:SecureInfoGetSerialNo|SecureInfoGetSerialNo]]<br />
|-<br />
| 0x04090000<br />
| <br />
| [[Cfg:UpdateConfigBlk00040003|UpdateConfigBlk00040003]]<br />
|-<br />
| 0x040A0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040B0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040C0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040D0040<br />
| ?<br />
| ?<br />
|-<br />
| 0x040E0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040F0000<br />
| <br />
| [[CfgS:ClearParentalControls|ClearParentalControls]]<br />
|}<br />
<br />
CfgS command 0x04060000(SecureInfoGetRegion) is used by NIM module to determine the SOAP RegionId, when sending SOAP requests. See [[Nandrw/sys/SecureInfo_A|here]].<br />
<br />
= Config service "cfg:i" =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Available since system version<br />
! Description<br />
|-<br />
| 0x04010082<br />
| <br />
| [[CfgS:GetConfigInfoBlk8|GetConfigInfoBlk8]]<br />
|-<br />
| 0x04020082<br />
| <br />
| [[CfgS:SetConfigInfoBlk4|SetConfigInfoBlk4]]<br />
|-<br />
| 0x04030000<br />
| <br />
| [[Cfg:UpdateConfigNANDSavegame|UpdateConfigNANDSavegame]]<br />
|-<br />
| 0x04040042<br />
| <br />
| [[Cfg:GetLocalFriendCodeSeedData|GetLocalFriendCodeSeedData]]<br />
|-<br />
| 0x04050000<br />
| <br />
| [[CfgS:GetLocalFriendCodeSeed|GetLocalFriendCodeSeed]]<br />
|-<br />
| 0x04060000<br />
| <br />
| [[Cfg:SecureInfoGetRegion|SecureInfoGetRegion]]<br />
|-<br />
| 0x04070000<br />
| <br />
| [[CfgS:SecureInfoGetByte101|SecureInfoGetByte101]]<br />
|-<br />
| 0x04080042<br />
| <br />
| [[CfgS:SecureInfoGetSerialNo|SecureInfoGetSerialNo]]<br />
|-<br />
| 0x04090000<br />
| <br />
| [[Cfg:UpdateConfigBlk00040003|UpdateConfigBlk00040003]]<br />
|-<br />
| 0x040A0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040B0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040C0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040D0040<br />
| ?<br />
| ?<br />
|-<br />
| 0x040E0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040F0000<br />
| <br />
| [[CfgS:ClearParentalControls|ClearParentalControls]]<br />
|-<br />
| 0x08010082<br />
| <br />
| [[CfgS:GetConfigInfoBlk8|GetConfigInfoBlk8]]<br />
|-<br />
| 0x08020082<br />
| <br />
| [[CfgS:SetConfigInfoBlk4|SetConfigInfoBlk4]]<br />
|-<br />
| 0x08030000<br />
| <br />
| [[Cfg:UpdateConfigNANDSavegame|UpdateConfigNANDSavegame]]<br />
|-<br />
| 0x080400C2<br />
| <br />
| [[CfgI:CreateConfigInfoBlk|CreateConfigInfoBlk]]<br />
|-<br />
| 0x08050000<br />
| <br />
| [[CfgI:DeleteConfigNANDSavefile|DeleteConfigNANDSavefile]]<br />
|-<br />
| 0x08060000<br />
| <br />
| [[CfgI:FormatConfig|FormatConfig]]<br />
|-<br />
| 0x08070000<br />
| <br />
| This basically just returns result-code value 0x0, due to code this eventually executes being NOPed out.<br />
|-<br />
| 0x08080000<br />
| <br />
| This updates the config blocks for blkIDs 0x0 and 0x20000. In certain cases this may call the code for [[CfgI:FormatConfig|FormatConfig]].<br />
|-<br />
| 0x08090000<br />
| <br />
| This updates the config block for blkID 0x60000.<br />
|-<br />
| 0x080A0000<br />
| <br />
| ResetAnalogStickCalibrationParam? This updates the config block for blkID 0x00040001.<br />
|-<br />
| 0x080B0082<br />
| <br />
| [[CfgI:SetGetLocalFriendCodeSeedData|SetGetLocalFriendCodeSeedData]]<br />
|-<br />
| 0x080C0042<br />
| <br />
| [[CfgI:SetLocalFriendCodeSeedSignature|SetLocalFriendCodeSeedSignature]]<br />
|-<br />
| 0x080D0000<br />
| <br />
| [[CfgI:DeleteCreateNANDLocalFriendCodeSeed|DeleteCreateNANDLocalFriendCodeSeed]]<br />
|-<br />
| 0x080E0000<br />
| <br />
| [[CfgI:VerifySigLocalFriendCodeSeed|VerifySigLocalFriendCodeSeed]] <br />
|-<br />
| 0x080F0042<br />
| <br />
| [[Cfg:GetLocalFriendCodeSeedData|GetLocalFriendCodeSeedData]]<br />
|-<br />
| 0x08100000<br />
| <br />
| [[CfgS:GetLocalFriendCodeSeed|GetLocalFriendCodeSeed]]<br />
|-<br />
| 0x08110084<br />
| <br />
| [[CfgI:SetSecureInfo|SetSecureInfo]]<br />
|-<br />
| 0x08120000<br />
| <br />
| [[CfgI:DeleteCreateNANDSecureInfo|DeleteCreateNANDSecureInfo]]<br />
|-<br />
| 0x08130000<br />
| <br />
| [[CfgI:VerifySigSecureInfo|VerifySigSecureInfo]]<br />
|-<br />
| 0x08140042<br />
| <br />
| [[CfgI:SecureInfoGetData|SecureInfoGetData]]<br />
|-<br />
| 0x08150042<br />
| <br />
| [[CfgI:SecureInfoGetSignature|SecureInfoGetSignature]]<br />
|-<br />
| 0x08160000<br />
| <br />
| [[Cfg:SecureInfoGetRegion|SecureInfoGetRegion]]<br />
|-<br />
| 0x08170000<br />
| <br />
| [[CfgS:SecureInfoGetByte101|SecureInfoGetByte101]]<br />
|-<br />
| 0x08180042<br />
| <br />
| [[CfgS:SecureInfoGetSerialNo|SecureInfoGetSerialNo]]<br />
|-<br />
| 0x0819....<br />
| ?<br />
| ?<br />
|-<br />
| 0x081A....<br />
| ?<br />
| ?<br />
|-<br />
| 0x081B....<br />
| ?<br />
| ?<br />
|-<br />
| 0x081C....<br />
| ?<br />
| ?<br />
|-<br />
| 0x081D....<br />
| ?<br />
| ?<br />
|-<br />
| 0x081E....<br />
| ?<br />
| ?<br />
|-<br />
| 0x081F....<br />
| ?<br />
| ?<br />
|-<br />
| 0x0820....<br />
| ?<br />
| ?<br />
|}<br />
<br />
= Config NVRAM service "cfg:nor" =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Description<br />
|-<br />
| 0x00010040<br />
| [[CfgNor:Initialize|Initialize]]<br />
|-<br />
| 0x00020000<br />
| [[CfgNor:Shutdown|Shutdown]]<br />
|-<br />
| 0x00030040<br />
| (u8 flag) Writes the input flag to state. Uses SPI service command [[SPI_Services|EnableSpiBus]].<br />
|-<br />
| 0x00040000<br />
| Writes the u8 from the state written by 0x00030040 to cmdreply[2].<br />
|-<br />
| 0x00050082<br />
| [[CfgNor:ReadData|ReadData]]<br />
|-<br />
| 0x00060082<br />
| [[CfgNor:WriteData|WriteData]]<br />
|-<br />
| 0x00070000<br />
| This just uses the WREN command.<br />
|-<br />
| 0x00080000<br />
| This just uses the WRDI command.<br />
|-<br />
| 0x00090000<br />
| [[CfgNor:ReadIdentification|ReadIdentification]]<br />
|-<br />
| 0x000A0000<br />
| This waits for the WIP bit in the status register to clear(wait for writing to finish).<br />
|-<br />
| 0x000B0000<br />
| This waits for the WEL bit in the status register to become set(write enabled).<br />
|-<br />
| 0x000C0000<br />
| This writes the value of the WIP bit in the status register to u8 cmdreply[2].<br />
|-<br />
| 0x000D0000<br />
| This writes the value of the WIP bit in the status register to u8 cmdreply[2].<br />
|-<br />
| 0x000E0000<br />
| [[CfgNor:ReadStatusRegister|ReadStatusRegister]]<br />
|-<br />
| 0x000F0082<br />
| [[CfgNor:ReadDataOther|ReadDataOther]]<br />
|-<br />
| 0x00100082<br />
| [[CfgNor:WriteDataOther|WriteDataOther]]<br />
|-<br />
| 0x00110040<br />
| (u32 offset) Uses command WREN then waits for WEL to become enabled. Sends command 0xDB to SPI followed by the specified flash offset.<br />
|-<br />
| 0x00120040<br />
| (u32 offset) Identical to 0x00110040 except this uses SPI-command 0xD8 instead("block erase").<br />
|-<br />
| 0x00130000<br />
| This uses SPI command 0xB9 for "Deep power down".<br />
|-<br />
| 0x00140000<br />
| This uses SPI command 0xAB for "Release from deep power down".<br />
|}<br />
This is an interface for the "SPI::NOR" service, for accessing the Wifi NVRAM/SPI Flash.</div>
Joel16
https://www.3dbrew.org/w/index.php?title=Config_Savegame&diff=20350
Config Savegame
2017-09-26T22:34:56Z
<p>Joel16: </p>
<hr />
<div>This page describes the format of the [[Config_Services|Cfg]] [[System_SaveData|NAND]] savegame. These blocks can be accessed with the Cfg service commands.<br />
<br />
==Structure of save-file "/config"==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset<br />
! Size<br />
! Description<br />
|-<br />
| 0x0<br />
| 0x2<br />
| Total entries<br />
|-<br />
| 0x2<br />
| 0x2<br />
| Data entries offset<br />
|-<br />
| 0x4<br />
| 0x4558<br />
| Block entries<br />
|-<br />
| 0x455C<br />
| <br />
| Data for the entries<br />
|}<br />
<br />
The filesize for this /config file is 0x8000-bytes.<br />
<br />
==Configuration block entry ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset<br />
! Size<br />
! Description<br />
|-<br />
| 0x0<br />
| 0x4<br />
| BlkID<br />
|-<br />
| 0x4<br />
| 0x4<br />
| Offset to the data for this block when size is >4, otherwise this word is the data for this block<br />
|-<br />
| 0x8<br />
| 0x2<br />
| Size<br />
|-<br />
| 0xA<br />
| 0x2<br />
| Flags<br />
|}<br />
<br />
==Configuration blocks==<br />
{| class="wikitable" border="1"<br />
|-<br />
! BlkID<br />
! Size<br />
! Flags<br />
! Description<br />
|-<br />
| 0x00000000<br />
| 0x2<br />
| 0xC<br />
| Config savegame version?<br />
|-<br />
| 0x00010000<br />
| 0x1<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00020000<br />
| 0x134<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00030000<br />
| 0x1<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00030001<br />
| 0x8<br />
| 0xE<br />
| User time offset (read by CECD)<br />
|-<br />
| 0x00030002<br />
| 0x8<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00040000<br />
| 0x10<br />
| 0xC<br />
| Touch callibration data (8x s16 values) (read by HID)<br />
|-<br />
| 0x00040001<br />
| 0x1C<br />
| 0xC<br />
| Analog Stick Calibration Param?(read by HID)<br />
|-<br />
| 0x00040002<br />
| 0x12<br />
| 0xC<br />
| ? (read by HID)<br />
|-<br />
| 0x00040003<br />
| 0xC<br />
| 0xC<br />
| ? (read by HID)<br />
|-<br />
| 0x00040004<br />
| 0x1C<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00050000<br />
| 0x2<br />
| 0xC<br />
| Upper/Lower screen flicker byte<br />
|-<br />
| 0x00050001<br />
| 0x2<br />
| 0xC<br />
| Backlight controls (u8 ABL_powersave_enable, u8 brightness_level) (read by GSP)<br />
|-<br />
| 0x00050002<br />
| 0x38<br />
| 0xC<br />
| ? (read by GSP)<br />
|-<br />
| 0x00050003<br />
| 0x20<br />
| 0xC<br />
| ? (read by GSP)<br />
|-<br />
| 0x00050004<br />
| 0x20<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00050005<br />
| 0x20<br />
| 0xE<br />
| Stereo display settings<br />
|-<br />
| 0x00050006<br />
| 0x2<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00050007<br />
| 0x4<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00050008<br />
| 0x10C<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00050009<br />
| 0x8<br />
| 0xC<br />
| new3DS only(?) backlight control (5th byte: auto-brightness enable)<br />
|-<br />
| 0x00060000<br />
| 0x96<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00070000<br />
| 0x214<br />
| 0xE<br />
| ?<br />
|-<br />
| 0x00070001<br />
| 0x1<br />
| 0xE<br />
| Sound output mode (mono=0, stereo=1, surround=2)<br />
|-<br />
| 0x00070002<br />
| 0x8<br />
| 0xE<br />
| ?<br />
|-<br />
| 0x00080000<br />
| 0xC00<br />
| 0xC<br />
| WiFi configuration slot 0<br />
|-<br />
| 0x00080001<br />
| 0xC00<br />
| 0xC<br />
| WiFi configuration slot 1<br />
|-<br />
| 0x00080002<br />
| 0xC00<br />
| 0xC<br />
| WiFi configuration slot 2<br />
|-<br />
| 0x00090000<br />
| 0x8<br />
| 0xE<br />
| This contains a u64 ID, used by processes using [[NWMUDS:InitializeWithVersion]]. The first word is the same as [[CfgS:GetLocalFriendCodeSeed|LocalFriendCodeSeed]], while the latter is a separate word.<br />
|-<br />
| 0x00090001<br />
| 0x8<br />
| 0xE<br />
| Same content as 0x0009000? This console-unique u64 is used by [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]]. It is generated by <code>((0x3FFFFFFFF) & LocalFriendCodeSeed) | (random16 << 48))</code>, where random16 is generated by [[PSPXI:GenerateRandomBytes|GenerateRandomBytes]]<br />
|-<br />
| 0x00090002<br />
| 0x4<br />
| 0xE<br />
| The first two bytes are the same random16 used in 0x00090001. The second two bytes are zeros.<br />
|-<br />
| 0x000A0000<br />
| 0x1C<br />
| 0xE<br />
| Username in UTF16<br />
|-<br />
| 0x000A0001<br />
| 0x2<br />
| 0xE<br />
| Birthday (u8 month, u8 day)<br />
|-<br />
| 0x000A0002<br />
| 0x1<br />
| 0xE<br />
| Language<br />
|-<br />
| 0x000B0000<br />
| 0x4<br />
| 0xE<br />
| CountryInfo<br />
|-<br />
| 0x000B0001<br />
| 0x800<br />
| 0xE<br />
| Country name in UTF-16, every 0x80-bytes is an entry for each language, in the order of the Language table below (not all entries are set)<br />
|-<br />
| 0x000B0002<br />
| 0x800<br />
| 0xE<br />
| State name in UTF-16, every 0x80-bytes is an entry for each language<br />
|-<br />
| 0x000B0003<br />
| 0x4<br />
| 0xE<br />
| Coordinates. A pair of s16 represents latitude and longitude, respectively. One need to multiply both value by 180/32768 to get coordinates in degrees<br />
<br />
|-<br />
| 0x000C0000<br />
| 0xC0<br />
| 0xE<br />
| Restricted photo exchange data, and other info (includes a mirror of Parental Restrictions PIN/Secret Answer)<br />
|-<br />
| 0x000C0001<br />
| 0x14<br />
| 0xE<br />
| COPPACS restriction data<br />
|-<br />
| 0x000C0002<br />
| 0x200<br />
| 0xE<br />
| ? Contains the email address set during Parental Restriction setup.<br />
|-<br />
| 0x000D0000<br />
| 0x4<br />
| 0xE<br />
| u16 at offset 0x0: [[SMDH#EULA_Version|EULA Version]] which was agreed to.<br />
|-<br />
| 0x000E0000<br />
| 0x1<br />
| 0xE<br />
| ?<br />
|-<br />
| 0x000F0000<br />
| 0x10<br />
| 0xC<br />
| Debug configuration, read by [[NS]] on dev-units: on startup, NS does <code>svcKernelSetState(6, 1, (u64)debug_flags & 1); <br />
svcKernelSetState(6, 2, (u64)debug_flags & 2);</code> (see [[SVC#KernelSetState|here]]) where <code>debug_flags</code> is the u32 located at offset 0xC in this struct. Then it compares the u32 from +8 in this config-block with the [[Configuration_Memory#APPMEMTYPE|APPMEMTYPE]]. When those don't match NS starts a FIRM-launch (with the same FIRM titleID as the currently running one) to boot into a FIRM with the APPMEMTYPE value from this config-block. The byte at offset 0x0 is related to the memtype as well.<br />
|-<br />
| 0x000F0001<br />
| 0x8<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x000F0003<br />
| 0x1<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x000F0004<br />
| 0x4<br />
| 0xC<br />
| The first u8 is the System-Model [[Cfg:GetSystemModel|value]], the last 3-bytes are unknown<br />
|-<br />
| 0x000F0005<br />
| 0x4<br />
| 0xC<br />
| The first u8 indicates whether network updates are enabled (however, NIM only checks this flag with developer [[Configuration_Memory#ENVINFO|ENVINFO]]).<br />
|-<br />
| 0x000F0006<br />
| 0x28<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00100000<br />
| 0x2<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00100001<br />
| 0x94<br />
| 0xC<br />
| Stores Parental Restrictions PIN/Secret Answer and other info<br />
|-<br />
| 0x00100002<br />
| 0x1<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00100003<br />
| 0x10<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00110000<br />
| 0x4<br />
| 0xC<br />
| The low u16 indicates whether the system setup is required, such as when the system is booted for the first time or after doing a [[System Settings|System Format]]: 0 = setup required, non-zero = no setup required<br />
|-<br />
| 0x00110001<br />
| 0x8<br />
| 0xC<br />
| TitleID of the menu to launch, used by [[NS]] on dev units (this block can be edited on dev units with [[3DS Development Unit Software#Config|Config]])<br />
|-<br />
| 0x00120000<br />
| 0x8<br />
| 0xC<br />
| ? (read by HID)<br />
|-<br />
| 0x00130000<br />
| 0x4<br />
| 0xE<br />
| If response is 0x100 then debug mode is enabled.<br />
|-<br />
| 0x00150000<br />
| 0x4<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00150001<br />
| 0x8<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00150002<br />
| 0x4<br />
| 0xE<br />
| ?<br />
|-<br />
| 0x00160000<br />
| 0x4<br />
| 0xE<br />
| Unknown, first byte is used by config service-cmd [[Config_Services|0x00070040]]. (Unknown whether the last 3-bytes are used)<br />
|-<br />
| 0x00170000<br />
| 0x4<br />
| 0xE<br />
| Miiverse (OLV) access key<br />
|-<br />
| 0x00180000<br />
| 0x4<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00180001<br />
| 0x18<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00190000<br />
| 0x1<br />
| 0xC<br />
| Unknown. NFC-module checks for value1/non-value1.<br />
|}<br />
<br />
The developer unit TID block only exists on developer units.<br />
<br />
===Stereo Display Settings===<br />
All values are hard-coded in cfg module.<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset<br />
! Size<br />
! Value<br />
! Description<br />
|-<br />
| 0x0<br />
| 4<br />
| 62.0f<br />
|assumed pupillary distance in mm?<br />
|-<br />
| 0x4<br />
| 4<br />
| 289.0f<br />
|assumed distance in mm between player's eyes and upper screen?<br />
|-<br />
| 0x8<br />
| 4<br />
| 76.80f<br />
|width in mm of (old) 3DS upper screen (doesn't vary for different models?)<br />
|-<br />
| 0xC<br />
| 4<br />
| 46.08f<br />
|height in mm of (old) 3DS upper screen (doesn't vary for different models?)<br />
|-<br />
| 0x10<br />
| 4<br />
| 10.0f<br />
|<br />
|-<br />
| 0x14<br />
| 4<br />
| 5.0f<br />
|<br />
|-<br />
| 0x18<br />
| 4<br />
| 55.58f<br />
|<br />
|-<br />
| 0x1C<br />
| 4<br />
| 21.57f<br />
|<br />
|}<br />
<br />
===Languages===<br />
{| class="wikitable" border="1"<br />
|-<br />
! ID<br />
! Description<br />
|-<br />
| 0<br />
| JP<br />
|-<br />
| 1<br />
| EN<br />
|-<br />
| 2<br />
| FR<br />
|-<br />
| 3<br />
| DE<br />
|-<br />
| 4<br />
| IT<br />
|-<br />
| 5<br />
| ES<br />
|-<br />
| 6<br />
| ZH<br />
|-<br />
| 7<br />
| KO<br />
|-<br />
| 8<br />
| NL<br />
|-<br />
| 9<br />
| PT<br />
|-<br />
| 10<br />
| RU<br />
|-<br />
| 11<br />
| TW<br />
|}<br />
<br />
===CountryInfo===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Byte<br />
! Description<br />
|-<br />
| 0<br />
|?<br />
|-<br />
| 1<br />
|?<br />
|-<br />
| 2<br />
| State/Province code.<br />
|-<br />
| 3<br />
| Country code, same as DSi/Wii country codes. Value 0xFF is invalid.<br />
|}<br />
<br />
===0x000A0000 Block===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Byte<br />
! Description<br />
|-<br />
| 0x0-0x13<br />
| UTF-16 username, with no NULL-terminator.<br />
|-<br />
| 0x14-17<br />
| Usually zero?<br />
|-<br />
| 0x18-0x1B<br />
| u32 NGWord version the username was last checked with. If this value is less than the u32 stored in the NGWord CFA "romfs:/version.dat", the system then checks the username string with the bad-word list CFA again, then updates this field with the value from the CFA<br />
|}<br />
<br />
<br />
<br />
===WiFi Slot Structure===<br />
<br />
====Network structure====<br />
This is used twice in the actual WiFi slot structure.<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset<br />
! Size<br />
! Description<br />
|-<br />
| 0x0<br />
| 0x1<br />
| Whether the network was set or not?<br />
|-<br />
| 0x1<br />
| 0x1<br />
| Whether to use this network strucutre to connect?<br />
|-<br />
| 0x2<br />
| 0x1<br />
| Whether this structure is the first (0) or the second (1) in the larger WiFi slot structure?<br />
|-<br />
| 0x3<br />
| 0x1<br />
| Padding ?<br />
|-<br />
| 0x4<br />
| 0x20<br />
| SSID of the network, without a trailing nullbyte.<br />
|-<br />
| 0x24<br />
| 0x1<br />
| Length of the SSID.<br />
|-<br />
| 0x25<br />
| 0x1<br />
| [[Nintendo_Zone#Beacon_payload_format|AP crypto key type]]<br />
|-<br />
| 0x26<br />
| 0x2<br />
| Padding ?<br />
|-<br />
| 0x28<br />
| 0x40<br />
| Plaintext of the passphrase of the network, without a trailing nullbyte.<br />
|-<br />
| 0x68<br />
| 0x20<br />
| PBKDF2 of the passphrase and SSID (http://jorisvr.nl/wpapsk.html).<br />
|-<br />
|}<br />
<br />
====Actual structure====<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset<br />
! Size<br />
! Description<br />
|-<br />
| 0x0<br />
| 0x2<br />
| ?<br />
|-<br />
| 0x2<br />
| 0x2<br />
| [https://github.com/lammertb/libcrc/blob/v2.0/src/crc16.c#L43-L76 CRC-16 checksum] of the next 0x410 bytes.<br />
|-<br />
| 0x4<br />
| 0x88<br />
| First network structure. Only set if the network was set "normally", or was the last to be set using WPS during the session.<br />
|-<br />
| 0x8C<br />
| 0x20<br />
| Padding.<br />
|-<br />
| 0xAC<br />
| 0x88<br />
| Second network structure. Only set if the network was set using WPS, otherwise 0-filled.<br />
|-<br />
| 0x134<br />
| 0x20C<br />
| Padding.<br />
|-<br />
| 0x340<br />
| 0x1<br />
| Whether to automatically get the IP address (use DHCP) or not, defaults to 1.<br />
|-<br />
| 0x341<br />
| 0x1<br />
| Whether to automatically get the DNS or not, defaults to 1.<br />
|-<br />
| 0x342<br />
| 0x2<br />
| Padding ?<br />
|-<br />
| 0x344<br />
| 0x4<br />
| IP address, to use if 0x340 is false.<br />
|-<br />
| 0x348<br />
| 0x4<br />
| IP address of the gateway, to use if 0x340 is false.<br />
|-<br />
| 0x34C<br />
| 0x4<br />
| Subnetwork mask, to use if 0x340 is false.<br />
|-<br />
| 0x350<br />
| 0x4<br />
| IP address of the primary DNS , to use if 0x341 is false.<br />
|-<br />
| 0x354<br />
| 0x4<br />
| IP address of the secondary DNS, to use if 0x341 is false.<br />
|-<br />
| 0x358<br />
| 0x4<br />
| Always 0x01050000 ? Only set if the network was the last to be set during the session.<br />
|-<br />
| 0x35C<br />
| 0x4<br />
| IP address to use. Only set if the network was the last to be set during the session.<br />
|-<br />
| 0x360<br />
| 0x6<br />
| MAC address of the AP. Only set if the network was the last to be set during the session.<br />
|-<br />
| 0x366<br />
| 0x1<br />
| Channel. Only set if the network was the last to be set during the session.<br />
|-<br />
| 0x367<br />
| 0x1<br />
| Padding ? Only set if the network was the last to be set during the session.<br />
|-<br />
| 0x368<br />
| 0x1<br />
| Whether to use a proxy or not, defaults to 0.<br />
|-<br />
| 0x369<br />
| 0x1<br />
| Whether to use a basic authentication for the proxy, defaults to 0.<br />
|-<br />
| 0x36A<br />
| 0x2<br />
| Port to use for the proxy, defaults to 1.<br />
|-<br />
| 0x36C<br />
| 0x30<br />
| URL/address of the proxy, including a trailing nullbyte.<br />
|-<br />
| 0x39C<br />
| 0x34<br />
| Padding.<br />
|-<br />
| 0x3D0<br />
| 0x20<br />
| Username to use for basic authentication, including a trailing nullbyte.<br />
|-<br />
| 0x3F0<br />
| 0x20<br />
| Password to use for basic authentication, including a trailing nullbyte.<br />
|-<br />
| 0x410<br />
| 0x2<br />
| Padding ?<br />
|-<br />
| 0x412<br />
| 0x2<br />
| MTU value, defaults to 1400 and ranges between 576 and 1500, inclusive.<br />
|-<br />
| 0x414<br />
| 0x7EC<br />
| Padding.<br />
|-<br />
|}<br />
<br />
===LCD display config===<br />
There seems to be some sort of LCD display configuration stored in this cfg. When using the cfg-save from an Old3DS on a New3DS without formatting the cfg first, the bottom-screen display is somewhat off(which is fixed by formatting the cfg-save).<br />
<br />
<br />
===Parental control Block 0x00100001===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Byte<br />
! Size in bytes<br />
! Description<br />
|-<br />
| 0x0<br />
| 0xD<br />
| Unknown.<br />
|-<br />
| 0xD<br />
| 0x4<br />
| PIN<br />
|-<br />
| 0x11<br />
| 0x20<br />
| Secret answer in UTF-16<br />
|}<br />
<br />
===Parental Control setting block 0xC0000===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset<br />
! Size<br />
! Description<br />
|-<br />
| 0x00<br />
| 0x04<br />
| [[#Parental Control restriction bitmask|Parental Control restriction bitmask]]<br />
|-<br />
| 0x0C<br />
| 0x04<br />
| Parental Controls PIN code<br />
|}<br />
<br />
====Parental Control restriction bitmask====<br />
{| class="wikitable" border="1"<br />
|-<br />
! Bit<br />
! Restriction name<br />
|-<br />
| 0<br />
| Global Parental Controls enable<br />
|-<br />
| 3<br />
| Sharing Images/Audio/Video/Long Text Data<br />
|-<br />
| 4<br />
| Internet Browser<br />
|-<br />
| 5<br />
| StreetPass<br />
|-<br />
| 6<br />
| Friend Registration<br />
|-<br />
| 8<br />
| eShop<br />
|-<br />
| 10<br />
| Miiverse (view)<br />
|-<br />
| 11<br />
| Miiverse (post)<br />
|-<br />
| 31<br />
| "Child Online Privacy Protection" (see [[Cfg:GetRegionCanadaUSA|CFG:IsCoppacsSupported]])<br />
|}</div>
Joel16
https://www.3dbrew.org/w/index.php?title=FRDU:GetMyFavoriteGame&diff=20291
FRDU:GetMyFavoriteGame
2017-09-07T15:03:19Z
<p>Joel16: </p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x000D0000]<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-3<br />
| u64, Application Title ID<br />
|}<br />
<br />
=Description=<br />
Obtains the favorite game set by the console.</div>
Joel16
https://www.3dbrew.org/w/index.php?title=User_talk:Wwylele&diff=20289
User talk:Wwylele
2017-09-06T04:39:20Z
<p>Joel16: Created page with "Yeah that was my bad, I totally missed that out. Also there's no need to label a couple as 'most'."</p>
<hr />
<div>Yeah that was my bad, I totally missed that out. Also there's no need to label a couple as 'most'.</div>
Joel16
https://www.3dbrew.org/w/index.php?title=FRDU:GetMyProfile&diff=20288
FRDU:GetMyProfile
2017-09-06T04:36:34Z
<p>Joel16: </p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x00070000]<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-3<br />
| Profile structure<br />
|}<br />
<br />
Profile Structure:<br />
{| class="wikitable" border="1"<br />
|-<br />
! Type<br />
! Name<br />
|-<br />
| u8<br />
| region<br />
|-<br />
| u8<br />
| country<br />
|-<br />
| u8<br />
| area<br />
|-<br />
| u8<br />
| language<br />
|-<br />
| u8<br />
| platform, always 2 (PLATFORM_CTR)<br />
|-<br />
| u8[3]<br />
| padding<br />
|}</div>
Joel16
https://www.3dbrew.org/w/index.php?title=FRDU:GetMyMii&diff=20280
FRDU:GetMyMii
2017-09-03T16:24:41Z
<p>Joel16: Created page with "=Request= {| class="wikitable" border="1" |- ! Index Word ! Description |- | 0 | Header code [0x000A0000] |} =Response= {| class="wikitable" border="1" |- ! Index Word !..."</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 />
| MiiStoreData structure<br />
|}<br />
<br />
MiiStoreData Structure:<br />
{| class="wikitable" border="1"<br />
|-<br />
| u8<br />
| data[0x60]<br />
|-<br />
| u32<br />
| value32[0x60/sizeof(u32)]<br />
|}</div>
Joel16
https://www.3dbrew.org/w/index.php?title=FRDU:GetMyFriendKey&diff=20275
FRDU:GetMyFriendKey
2017-09-02T18:05:10Z
<p>Joel16: Created page with "=Request= {| class="wikitable" border="1" |- ! Index Word ! Description |- | 0 | Header code [0x00050000] |} =Response= {| class="wikitable" border="1" |- ! Index Word !..."</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x00050000]<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 />
| FriendKey structure<br />
|}<br />
<br />
FriendKey Structure:<br />
{| class="wikitable" border="1"<br />
|-<br />
| u32<br />
| principalId<br />
|-<br />
| u64<br />
| localFriendCode<br />
|}</div>
Joel16
https://www.3dbrew.org/w/index.php?title=FRDU:GetMyProfile&diff=20274
FRDU:GetMyProfile
2017-09-02T18:02:49Z
<p>Joel16: </p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x00070000]<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 />
| Profile structure<br />
|}<br />
<br />
Profile Structure:<br />
{| class="wikitable" border="1"<br />
|-<br />
! Type<br />
! Name<br />
|-<br />
| u8<br />
| region<br />
|-<br />
| u8<br />
| country<br />
|-<br />
| u8<br />
| area<br />
|-<br />
| u8<br />
| language<br />
|-<br />
| u8<br />
| padding<br />
|}</div>
Joel16
https://www.3dbrew.org/w/index.php?title=FRDU:GetMyFavoriteGame&diff=20273
FRDU:GetMyFavoriteGame
2017-09-02T16:22:59Z
<p>Joel16: /* Request */</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x000D0000]<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 />
| u64 Title ID<br />
|}</div>
Joel16
https://www.3dbrew.org/w/index.php?title=FRDU:GetMyFavoriteGame&diff=20272
FRDU:GetMyFavoriteGame
2017-09-02T16:22:18Z
<p>Joel16: Created page with "=Request= {| class="wikitable" border="1" |- ! Index Word ! Description |- | 0 | Header code [0x000C0000] |} =Response= {| class="wikitable" border="1" |- ! Index Word !..."</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x000C0000]<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 />
| u64 Title ID<br />
|}</div>
Joel16
https://www.3dbrew.org/w/index.php?title=FRDU:GetMyPlayingGame&diff=20271
FRDU:GetMyPlayingGame
2017-09-02T16:19:11Z
<p>Joel16: Created page with "=Request= {| class="wikitable" border="1" |- ! Index Word ! Description |- | 0 | Header code [0x000C0000] |} =Response= {| class="wikitable" border="1" |- ! Index Word !..."</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x000C0000]<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 />
| u64 Title ID<br />
|}</div>
Joel16
https://www.3dbrew.org/w/index.php?title=FRDU:GetMyPreference&diff=20267
FRDU:GetMyPreference
2017-09-01T14:41:23Z
<p>Joel16: /* Response */</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x00060000]<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 />
| Public mode (byte, 0 = private, non-zero = public)<br />
|-<br />
| 3<br />
| Show current game (byte, 0 = don't show, non-zero = show)<br />
|-<br />
| 4<br />
| Show game history (byte, 0 = don't show, non-zero = show)<br />
|}</div>
Joel16
https://www.3dbrew.org/w/index.php?title=CfgS:ClearParentalControls&diff=20237
CfgS:ClearParentalControls
2017-08-16T06:00:50Z
<p>Joel16: Created page with "=Request= {| class="wikitable" border="1" |- ! Index Word ! Description |- | 0 | Header code [0x040F0000] |} =Response= {| class="wikitable" border="1" |- ! Index Word !..."</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x040F0000]<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 clears the parental controls option found in Settings. Although the parental controls are cleared, the secret answer and pin code are not cleared from config block 0x00100001. However the email stored in config block 0x000C0002 is cleared.</div>
Joel16
https://www.3dbrew.org/w/index.php?title=Config_Services&diff=20236
Config Services
2017-08-16T05:53:52Z
<p>Joel16: /* Config service "cfg:i" */</p>
<hr />
<div>[[Category:Services]]<br />
<br />
= Config Services =<br />
These commands are common to all Config services, except for "cfg:nor".<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Available since system version<br />
! Description<br />
|-<br />
| 0x00010082<br />
| <br />
| [[CfgS:GetConfigInfoBlk2|GetConfigInfoBlk2]]<br />
|-<br />
| 0x00020000<br />
| <br />
| [[Cfg:SecureInfoGetRegion|SecureInfoGetRegion]]<br />
|-<br />
| 0x00030040<br />
| <br />
| [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]]/GetTransferableId<br />
|-<br />
| 0x00040000<br />
| [[3.0.0-5]]<br />
| [[Cfg:GetRegionCanadaUSA|GetRegionCanadaUSA]]/IsCoppacsSupported<br />
|-<br />
| 0x00050000<br />
| [[5.0.0-11]]<br />
| [[Cfg:GetSystemModel|GetSystemModel]]<br />
|-<br />
| 0x00060000<br />
| [[6.0.0-11]]<br />
| [[Cfg:GetModelNintendo2DS|GetModelNintendo2DS]]<br />
|-<br />
| 0x00070040<br />
| [[7.0.0-13]]<br />
| (u8 val) This writes the input u8 to the first byte in the config-block for blkID [[Config_Savegame|0x00160000]].<br />
|-<br />
| 0x00080080<br />
| [[7.0.0-13]]<br />
| [[Cfg:TranslateCountryInfo|TranslateCountryInfo]]<br />
|-<br />
| 0x00090040<br />
| [[7.0.0-13]]<br />
| [[Cfg:GetCountryCodeString|GetCountryCodeString]]<br />
|-<br />
| 0x000A0040<br />
| [[7.0.0-13]]<br />
| [[Cfg:GetCountryCodeID|GetCountryCodeID]]<br />
|-<br />
| 0x000B0000<br />
| [[9.3.0-21|9.3.0-X]]<br />
| IsFangateSupported<br />
|}<br />
<br />
= Config service "cfg:u" =<br />
This service provides no new commands in addition to the common ones.<br />
<br />
= Config service "cfg:s" =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Available since system version<br />
! Description<br />
|-<br />
| 0x00050000<br />
| <br />
| Same as cfg:u 0x00050000 cmd?<br />
|-<br />
| 0x04010082<br />
| <br />
| [[CfgS:GetConfigInfoBlk8|GetConfigInfoBlk8]]<br />
|-<br />
| 0x04020082<br />
| <br />
| [[CfgS:SetConfigInfoBlk4|SetConfigInfoBlk4]]<br />
|-<br />
| 0x04030000<br />
| <br />
| [[Cfg:UpdateConfigNANDSavegame|UpdateConfigNANDSavegame]]<br />
|-<br />
| 0x04040042<br />
| <br />
| [[Cfg:GetLocalFriendCodeSeedData|GetLocalFriendCodeSeedData]]<br />
|-<br />
| 0x04050000<br />
| <br />
| [[CfgS:GetLocalFriendCodeSeed|GetLocalFriendCodeSeed]]<br />
|-<br />
| 0x04060000<br />
| <br />
| [[Cfg:SecureInfoGetRegion|SecureInfoGetRegion]]<br />
|-<br />
| 0x04070000<br />
| <br />
| [[CfgS:SecureInfoGetByte101|SecureInfoGetByte101]]<br />
|-<br />
| 0x04080042<br />
| <br />
| [[CfgS:SecureInfoGetSerialNo|SecureInfoGetSerialNo]]<br />
|-<br />
| 0x04090000<br />
| <br />
| [[Cfg:UpdateConfigBlk00040003|UpdateConfigBlk00040003]]<br />
|-<br />
| 0x040A0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040B0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040C0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040D0040<br />
| ?<br />
| ?<br />
|-<br />
| 0x040E0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040F0000<br />
| ?<br />
| ClearParentalControls<br />
|}<br />
<br />
CfgS command 0x04060000(SecureInfoGetRegion) is used by NIM module to determine the SOAP RegionId, when sending SOAP requests. See [[Nandrw/sys/SecureInfo_A|here]].<br />
<br />
= Config service "cfg:i" =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Available since system version<br />
! Description<br />
|-<br />
| 0x04010082<br />
| <br />
| [[CfgS:GetConfigInfoBlk8|GetConfigInfoBlk8]]<br />
|-<br />
| 0x04020082<br />
| <br />
| [[CfgS:SetConfigInfoBlk4|SetConfigInfoBlk4]]<br />
|-<br />
| 0x04030000<br />
| <br />
| [[Cfg:UpdateConfigNANDSavegame|UpdateConfigNANDSavegame]]<br />
|-<br />
| 0x04040042<br />
| <br />
| [[Cfg:GetLocalFriendCodeSeedData|GetLocalFriendCodeSeedData]]<br />
|-<br />
| 0x04050000<br />
| <br />
| [[CfgS:GetLocalFriendCodeSeed|GetLocalFriendCodeSeed]]<br />
|-<br />
| 0x04060000<br />
| <br />
| [[Cfg:SecureInfoGetRegion|SecureInfoGetRegion]]<br />
|-<br />
| 0x04070000<br />
| <br />
| [[CfgS:SecureInfoGetByte101|SecureInfoGetByte101]]<br />
|-<br />
| 0x04080042<br />
| <br />
| [[CfgS:SecureInfoGetSerialNo|SecureInfoGetSerialNo]]<br />
|-<br />
| 0x04090000<br />
| <br />
| [[Cfg:UpdateConfigBlk00040003|UpdateConfigBlk00040003]]<br />
|-<br />
| 0x040A0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040B0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040C0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040D0040<br />
| ?<br />
| ?<br />
|-<br />
| 0x040E0000<br />
| ?<br />
| ?<br />
|-<br />
| 0x040F0000<br />
| <br />
| [[CfgS:ClearParentalControls|ClearParentalControls]]<br />
|-<br />
| 0x08010082<br />
| <br />
| [[CfgS:GetConfigInfoBlk8|GetConfigInfoBlk8]]<br />
|-<br />
| 0x08020082<br />
| <br />
| [[CfgS:SetConfigInfoBlk4|SetConfigInfoBlk4]]<br />
|-<br />
| 0x08030000<br />
| <br />
| [[Cfg:UpdateConfigNANDSavegame|UpdateConfigNANDSavegame]]<br />
|-<br />
| 0x080400C2<br />
| <br />
| [[CfgI:CreateConfigInfoBlk|CreateConfigInfoBlk]]<br />
|-<br />
| 0x08050000<br />
| <br />
| [[CfgI:DeleteConfigNANDSavefile|DeleteConfigNANDSavefile]]<br />
|-<br />
| 0x08060000<br />
| <br />
| [[CfgI:FormatConfig|FormatConfig]]<br />
|-<br />
| 0x08070000<br />
| <br />
| This basically just returns result-code value 0x0, due to code this eventually executes being NOPed out.<br />
|-<br />
| 0x08080000<br />
| <br />
| This updates the config blocks for blkIDs 0x0 and 0x20000. In certain cases this may call the code for [[CfgI:FormatConfig|FormatConfig]].<br />
|-<br />
| 0x08090000<br />
| <br />
| This updates the config block for blkID 0x60000.<br />
|-<br />
| 0x080A0000<br />
| <br />
| ResetAnalogStickCalibrationParam? This updates the config block for blkID 0x00040001.<br />
|-<br />
| 0x080B0082<br />
| <br />
| [[CfgI:SetGetLocalFriendCodeSeedData|SetGetLocalFriendCodeSeedData]]<br />
|-<br />
| 0x080C0042<br />
| <br />
| [[CfgI:SetLocalFriendCodeSeedSignature|SetLocalFriendCodeSeedSignature]]<br />
|-<br />
| 0x080D0000<br />
| <br />
| [[CfgI:DeleteCreateNANDLocalFriendCodeSeed|DeleteCreateNANDLocalFriendCodeSeed]]<br />
|-<br />
| 0x080E0000<br />
| <br />
| [[CfgI:VerifySigLocalFriendCodeSeed|VerifySigLocalFriendCodeSeed]] <br />
|-<br />
| 0x080F0042<br />
| <br />
| [[Cfg:GetLocalFriendCodeSeedData|GetLocalFriendCodeSeedData]]<br />
|-<br />
| 0x08100000<br />
| <br />
| [[CfgS:GetLocalFriendCodeSeed|GetLocalFriendCodeSeed]]<br />
|-<br />
| 0x08110084<br />
| <br />
| [[CfgI:SetSecureInfo|SetSecureInfo]]<br />
|-<br />
| 0x08120000<br />
| <br />
| [[CfgI:DeleteCreateNANDSecureInfo|DeleteCreateNANDSecureInfo]]<br />
|-<br />
| 0x08130000<br />
| <br />
| [[CfgI:VerifySigSecureInfo|VerifySigSecureInfo]]<br />
|-<br />
| 0x08140042<br />
| <br />
| [[CfgI:SecureInfoGetData|SecureInfoGetData]]<br />
|-<br />
| 0x08150042<br />
| <br />
| [[CfgI:SecureInfoGetSignature|SecureInfoGetSignature]]<br />
|-<br />
| 0x08160000<br />
| <br />
| [[Cfg:SecureInfoGetRegion|SecureInfoGetRegion]]<br />
|-<br />
| 0x08170000<br />
| <br />
| [[CfgS:SecureInfoGetByte101|SecureInfoGetByte101]]<br />
|-<br />
| 0x08180042<br />
| <br />
| [[CfgS:SecureInfoGetSerialNo|SecureInfoGetSerialNo]]<br />
|-<br />
| 0x0819....<br />
| ?<br />
| ?<br />
|-<br />
| 0x081A....<br />
| ?<br />
| ?<br />
|-<br />
| 0x081B....<br />
| ?<br />
| ?<br />
|-<br />
| 0x081C....<br />
| ?<br />
| ?<br />
|-<br />
| 0x081D....<br />
| ?<br />
| ?<br />
|-<br />
| 0x081E....<br />
| ?<br />
| ?<br />
|-<br />
| 0x081F....<br />
| ?<br />
| ?<br />
|-<br />
| 0x0820....<br />
| ?<br />
| ?<br />
|}<br />
<br />
= Config NVRAM service "cfg:nor" =<br />
{| class="wikitable" border="1"<br />
|-<br />
! Command Header<br />
! Description<br />
|-<br />
| 0x00010040<br />
| [[CfgNor:Initialize|Initialize]]<br />
|-<br />
| 0x00020000<br />
| [[CfgNor:Shutdown|Shutdown]]<br />
|-<br />
| 0x00030040<br />
| (u8 flag) Writes the input flag to state. Uses SPI service command [[SPI_Services|EnableSpiBus]].<br />
|-<br />
| 0x00040000<br />
| Writes the u8 from the state written by 0x00030040 to cmdreply[2].<br />
|-<br />
| 0x00050082<br />
| [[CfgNor:ReadData|ReadData]]<br />
|-<br />
| 0x00060082<br />
| [[CfgNor:WriteData|WriteData]]<br />
|-<br />
| 0x00070000<br />
| This just uses the WREN command.<br />
|-<br />
| 0x00080000<br />
| This just uses the WRDI command.<br />
|-<br />
| 0x00090000<br />
| [[CfgNor:ReadIdentification|ReadIdentification]]<br />
|-<br />
| 0x000A0000<br />
| This waits for the WIP bit in the status register to clear(wait for writing to finish).<br />
|-<br />
| 0x000B0000<br />
| This waits for the WEL bit in the status register to become set(write enabled).<br />
|-<br />
| 0x000C0000<br />
| This writes the value of the WIP bit in the status register to u8 cmdreply[2].<br />
|-<br />
| 0x000D0000<br />
| This writes the value of the WIP bit in the status register to u8 cmdreply[2].<br />
|-<br />
| 0x000E0000<br />
| [[CfgNor:ReadStatusRegister|ReadStatusRegister]]<br />
|-<br />
| 0x000F0082<br />
| [[CfgNor:ReadDataOther|ReadDataOther]]<br />
|-<br />
| 0x00100082<br />
| [[CfgNor:WriteDataOther|WriteDataOther]]<br />
|-<br />
| 0x00110040<br />
| (u32 offset) Uses command WREN then waits for WEL to become enabled. Sends command 0xDB to SPI followed by the specified flash offset.<br />
|-<br />
| 0x00120040<br />
| (u32 offset) Identical to 0x00110040 except this uses SPI-command 0xD8 instead("block erase").<br />
|-<br />
| 0x00130000<br />
| This uses SPI command 0xB9 for "Deep power down".<br />
|-<br />
| 0x00140000<br />
| This uses SPI command 0xAB for "Release from deep power down".<br />
|}<br />
This is an interface for the "SPI::NOR" service, for accessing the Wifi NVRAM/SPI Flash.</div>
Joel16
https://www.3dbrew.org/w/index.php?title=Homebrew_Applications&diff=20190
Homebrew Applications
2017-07-24T23:13:41Z
<p>Joel16: /* Applications */</p>
<hr />
<div>== Installing ==<br />
Applications are installed by copying the necessary files directly to the <code>3ds/</code> folder in the root of the SD card, or in a subdirectory of <code>3ds/</code>, in which case said subfolder must be named identically to its executable. Most applications come with two files:<br />
* <code>[appname].3dsx</code>: The executable.<br />
* <code>[appname].smdh</code>: The icon/metadata. (Not required in any case, and may be integrated into the <code>.3dsx</code>)<br />
* <code>[appname].xml</code>: The list of supported targets, i.e. installed titles which the app supports replacing in memory at runtime, thus inheriting its permissions. (Optional)<br />
<br />
The [[Homebrew Launcher]] will scan the SD card for all <code>.3dsx</code> files, but will only display an icon for those who have one according to the format described above. Recent enough versions can freely navigate the filesystem to select an application.<br />
<br />
== List ==<br />
<br />
=== Launchers ===<br />
<br />
==== Official Launcher ====<br />
{| class="wikitable" border="1"<br />
! width="20%" | Name<br />
! width="50%" | Description<br />
! width="10%" | Author<br />
! width="10%" | Download<br />
! width="10%" | Open-Source<br />
|-<br />
| [https://github.com/smealum/3ds_hb_menu Homebrew Launcher]<br />
| Run homebrew on your 3DS!<br />
| [[User:smea|smea]]<br />
| [https://smealum.github.io/ninjhax2/boot.3dsx Here]<br />
| [https://github.com/smealum/3ds_hb_menu Yes]<br />
|-<br />
| [https://github.com/smealum/3ds_hb_menu Homebrew Starter Pack]<br />
| Everything to get you started.<br />
| [[User:smea|smea]]<br />
| [https://smealum.github.io/ninjhax2/starter.zip Here]<br />
| Yes<br />
|}<br />
<br />
==== Alternate Launchers ====<br />
{| class="wikitable" border="1"<br />
! width="20%" | Name<br />
! width="50%" | Description<br />
! width="10%" | Author<br />
! width="10%" | Install<br />
! width="5%" | Open-Source<br />
! width="15%" | Last Updated<br />
|-<br />
| [http://gbatemp.net/threads/release-homebrew-launcher-with-grid-layout.397527/ Mashers' HBL]<br />
| Homebrew Launcher with grid and folder support.<br />
| [[User:Mashers|Mashers]]<br />
| [https://github.com/mashers/3ds_hb_menu/wiki/Installation Here]<br />
| [https://github.com/mashers/3ds_hb_menu Yes]<br />
| 2016-02-25<br />
|}<br />
<br />
=== Applications ===<br />
{| class="wikitable" border="1"<br />
! width="20%" | Name<br />
! width="50%" | Description<br />
! width="10%" | Author<br />
! width="10%" | Download<br />
! width="5%" | Open-Source<br />
! width="15%" | Last Updated<br />
|-<br />
| [https://github.com/yellows8/3ds_homemenu_extdatatool 3DS HomeMenu extdata Tool]<br />
| Tool for accessing the SD extdata which Home Menu uses. This essentially allows writing custom themes to extdata which get loaded at Home Menu startup.<br />
| [[User:yellows8|yellows8]]<br />
| [https://github.com/yellows8/3ds_homemenu_extdatatool/releases Here]<br />
| Yes<br />
| 2015-08-17<br />
|-<br />
| [https://github.com/VideahGams/3dsfetch 3dsfetch]<br />
| Small 3DS version of a popular Linux ricing script called screenfetch.<br />
| [[User:VideahGams|VideahGams]]<br />
| [https://github.com/VideahGams/3dsfetch/tree/master Here]<br />
| Yes<br />
| 2015-09-17<br />
|-<br />
| [https://github.com/joel16/3DSident/ 3DSident]<br />
| Identity tool for the Nintendo 3DS heavily inspired by PSPident.<br />
| [[User:Joel16|Joel16]]<br />
| [https://github.com/joel16/3DSident/tree/master Here]<br />
| Yes<br />
| 2015-09-17<br />
|-<br />
| [https://github.com/plutooo/ctrrpc ctrrpc]<br />
| A small and easily extensible RPC server/client written in C/Python. Allows you to quickly poke service-commands and <code>syscall</code>s over Wi-Fi from a Python shell on your PC. Useful during reverse-engineering. ''No longer under (active) development?''<br />
| [[User:plutooo|plutoo]]<br />
| Build from [https://github.com/plutooo/ctrrpc repo]<br />
| Yes<br />
| 2014-11-10<br />
|-<br />
| [https://github.com/yellows8/ctr-streaming-server ctr-streaming-server]<br />
| A 3DS homebrew audio/video playback server. It can also send [[HID_Shared_Memory|HID]] state to the client (see the README) when enabled. The included <code>parse_hidstream</code> tool can be used to parse that HID data to simulate keyboard/mouse input events, via Linux <code>uinput</code>. ''No longer under (active) development?''<br />
| [[User:yellows8|yellows8]]<br />
| Build from [https://github.com/yellows8/ctr-streaming-server repo]<br />
| Yes<br />
| 2014-11-20<br />
|-<br />
| [https://github.com/Rinnegatamante/CHMM2 Custom Home Menu Manager 2]<br />
| Theme manager for Nintendo 3DS.<br />
| [[User:Rinnegatamante|Rinnegatamante]]<br />
| [http://rinnegatamante.it/CHMM2.rar Here]<br />
| Yes<br />
| 2016-07-04<br />
|-<br />
| [https://github.com/DownloadMii/DownloadMii-3DS DownloadMii]<br />
| A WIP repo-based online marketplace for homebrew applications & games.<br />
| [[User:filfat|filfat]]<br />
| Build from [https://github.com/DownloadMii/DownloadMii-3DS repo]<br />
| Yes<br />
| 2015-11-24<br />
|-<br />
| [https://github.com/zeta0134/3ds-homebrew-browser Homebrew Browser]<br />
| Download homebrew from the internet!<br />
| [[User:cromo|cromo]], [[User:zeta0134|zeta0134]]<br />
| [https://github.com/zeta0134/3ds-homebrew-browser/releases Here]<br />
| Yes<br />
| 2015-10-07<br />
|-<br />
| [https://github.com/linoma/fb43ds fb43ds]<br />
| A simple 3DS Facebook chat client<br />
| [[User:linoma|linoma]]<br />
| Build from [https://github.com/linoma/fb43ds repo]<br />
| Yes<br />
| 2015-04-07<br />
|-<br />
| [https://github.com/iamevn/for-anyone-who-walks-a-lot for-anyone-who-walks-a-lot]<br />
| Tool to get past the 10 coin per day limit on earning Play Coins by walking.<br />
| [[User:iamevn|iamevn]]<br />
| [https://github.com/iamevn/for-anyone-who-walks-a-lot/releases Here]<br />
| Yes<br />
| 2016-03-26<br />
|-<br />
| [https://github.com/MrJPGames/NFCReader NFCReader]<br />
| Allows you to use your 3DS as a NFC/RFID UID Scanner.<br />
| [[User:MrJPGames|Jasper Peters]]<br />
| [https://github.com/MrJPGames/NFCReader/releases Here]<br />
| Yes<br />
| 2017-01-21<br />
|-<br />
| [https://github.com/SciresM/ScreenInfo ScreenInfo]<br />
| Identify whether New 3DS LCD panels are TN or IPS.<br />
| [[User:SciresM|SciresM]]<br />
| [https://github.com/SciresM/ScreenInfo/releases Here]<br />
| Yes<br />
| 2016-09-04<br />
|}<br />
<br />
=== Game Engines ===<br />
{| class="wikitable" border="1"<br />
! width="20%" | Name<br />
! width="50%" | Description<br />
! width="10%" | Author<br />
! width="10%" | Download<br />
! width="5%" | Open-Source<br />
! width="15%" | Last Updated<br />
|-<br />
| [https://github.com/VideahGams/LovePotion LövePotion]<br />
| An unofficial WIP implementation of the [https://github.com/love2d-community/love-api LÖVE API] for 3DS Homebrew.<br />
| [[User:VideahGams|VideahGams]]<br />
| [https://github.com/VideahGams/LovePotion/releases Here]<br />
| Yes<br />
| 2016-09-12<br />
|-<br />
| [https://ctrulua.github.io/ ctrµLua]<br />
| A Lua interpreter for 3DS, brought to life by the remnants of the µLua community.<br />
| [[User:Firew0lf|Firew0lf]], Reuh, Negi<br />
| [https://github.com/ctruLua/ctruLua/releases Here]<br />
| Yes<br />
| 2016-06-27<br />
|-<br />
| [https://github.com/Rinnegatamante/lpp-3ds LuaPlayer+ 3DS]<br />
| First Lua interpreter 3DS homebrew, under Lua 5.3.1<br />
| [[User:Rinnegatamante|Rinnegatamante]]<br />
| [https://github.com/Rinnegatamante/lpp-3ds/releases Here]<br />
| Yes<br />
| 2016-09-21<br />
|-<br />
| [http://asie.pl/homebrew/#megazeux MegaZeux 3DS]<br />
| A port of the MegaZeux GCS to the 3DS.<br />
| asie<br />
| [http://asie.pl/homebrew/#megazeux Here]<br />
| [https://github.com/asiekierka/megazeux/tree/3ds Yes]<br />
| 2016-10-30<br />
|}<br />
<br />
=== Games ===<br />
{| class="wikitable" border="1"<br />
! width="20%" | Name<br />
! width="50%" | Description<br />
! width="10%" | Author<br />
! width="10%" | Download<br />
! width="5%" | Open-Source<br />
! width="15%" | Last Updated<br />
|-<br />
| [http://gbatemp.net/threads/release-100-boxes-2ds.384714/ 100 Boxes 2DS]<br />
| A remake of homebrew "100 Boxes puzzle" for DS and GBA.<br />
| [[User:Cid2mizard|Cid2mizard]]<br />
| [http://3ds.nintendomax.com/Homebrews/Jeux/100Boxes2DS/100_Boxes_2DS.rar Here]<br />
| No<br />
| 2015-11-11<br />
|-<br />
| [https://github.com/MrJPGames/2048-3D 2048-3D]<br />
| A port of the popular game 2048 for the 3DS.<br />
| [[User:MrJPGames|Jasper Peters]]<br />
| [https://github.com/MrJPGames/2048-3D/releases Here]<br />
| Yes<br />
| 2016-02-12<br />
|-<br />
| ''[https://github.com/smealum/3dscraft 3DSCraft]''<br />
| A Minecraft port for the 3DS. ''No longer under (active) development?''<br />
| [[User:smea|smea]]<br />
| Build from [https://github.com/smealum/3dscraft repo] (alt. [https://smealum.github.io/3dscraft/downloads/3dscraft_141120.zip here])<br />
| Yes<br />
| 2014-11-20<br />
|-<br />
| [https://github.com/markwinap/3DS_Nyan_Cat 3DS Nyan Cat]<br />
| A port of Nyan Cat for the 3DS, using <code>LIBSF2D</code>.<br />
| [[User:markwinap|markwinap]]<br />
| Build from [https://github.com/markwinap/3DS_Nyan_Cat repo] (alt. [https://www.dropbox.com/s/e400my3xm0zw74r/nyan_cat.zip?dl=0 here])<br />
| Yes<br />
| 2015-05-26<br />
|-<br />
| [https://gbatemp.net/threads/preview-ld-34-port-antibounce.406361 Antibounce]<br />
| "Move your player to bounce around and collect coins. Go between screens through the holes in the sides of the floor. 3D can also be enabled."<br />
| [[User:TurtleP|TurtleP]]<br />
| [https://github.com/TurtleP/Antibounce/releases Here]<br />
| Yes<br />
| 2015-12-23<br />
|-<br />
| ''[https://github.com/UnsureSherlock/checkers3ds checkers3ds]''<br />
| A checkers game in glorious ASCII. ''No longer under development.''<br />
| [[User:UnsureSherlock|UnsureSherlock]]<br />
| Build from [https://github.com/UnsureSherlock/checkers3ds repo]<br />
| Yes<br />
| 2016-02-25<br />
|-<br />
| [https://github.com/Kaisogen/CookieCollector-3DS- Cookie Collector]<br />
| A tiny adaptation of the popular [https://en.wikipedia.org/wiki/Cookie_Clicker Cookie Clicker] game for the 3DS.<br />
| [[User:Kaisogen|Kaisogen]]<br />
| [https://github.com/Kaisogen/CookieCollector-3DS-/releases Here]<br />
| Yes<br />
| 2017-06-04<br />
|-<br />
| [https://github.com/TheMachinumps/Cookie_Clicker_3DS Cookie Clicker 3DS]<br />
| A simple Cookie Clicker type of game inspired by [[User:Kaisogen|Kaisogen]]'s Cookie Collector<br />
| [[User:TheMachinumps|TheMachinumps]]<br />
| [https://github.com/TheMachinumps/Cookie_Clicker_3DS/releases Here]<br />
| Yes<br />
| 2016-08-27<br />
|-<br />
| [https://gbatemp.net/threads/release-drawattack-networked-drawing-game.402291/ DrawAttack]<br />
| Online multiplayer drawing game, like Pictionary.<br />
| [[User:Cruel|Cruel]]<br />
| [https://github.com/Cruel/DrawAttack/releases Here]<br />
| Yes<br />
| 2016-04-17<br />
|-<br />
| [https://github.com/masterfeizz/EDuke3D EDuke3D]<br />
| An unofficial port of EDuke32 for the 3DS.<br />
| [[User:MasterFeizz|MasterFeizz]]<br />
| [https://github.com/masterfeizz/EDuke3D/releases Here]<br />
| Yes<br />
| 2016-05-09<br />
|-<br />
| [https://gbatemp.net/threads/release-hamsters-2ds.383457/ Hamsters 2DS]<br />
| A text-based hamster breeding game.<br />
| [[User:Cid2mizard|Cid2mizard]]<br />
| [http://3ds.nintendomax.com/Homebrews/Jeux/Hamsters2DS/Hamsters_2DS.rar Here]<br />
| No<br />
| 2015-11-01<br />
|-<br />
| [https://github.com/BHSPitMonkey/Helii3DS Helii]<br />
| A port of [https://github.com/BHSPitMonkey/Helii3D Helii] for the 3DS.<br />
| [[User:BHSPitMonkey|BHSPitMonkey]]<br />
| [https://github.com/BHSPitMonkey/Helii3DS/releases Here]<br />
| Yes<br />
| 2015-09-18<br />
|-<br />
| [https://github.com/sgowen/insectoid-defense Insectoid Defense]<br />
| A Sci-Fi Tower Defense game.<br />
| [[User:Sgowen|sgowen]]<br />
| [https://github.com/sgowen/insectoid-defense/releases Here]<br />
| Yes<br />
| 2015-11-09<br />
|-<br />
| [https://github.com/VideahGams/NumberFucker3DS NumberFucker3DS]<br />
| Simple math game, originally used as a debug game for LövePotion.<br />
| [[User:VideahGams|VideahGams]]<br />
| [https://github.com/VideahGams/NumberFucker3DS Here]<br />
| Yes<br />
| 2015-09-19<br />
|-<br />
|[https://gbatemp.net/threads/release-zelda-roth-for-3ds.425503/ Zelda ROTH for 3DS]<br />
|A port of Legend of Zelda: Return of the Hylian, a Zelda fangame, to 3DS.<br />
|[[User:nop90|nop90]]<br />
|[https://github.com/nop90/ZeldaROTH/releases Here]<br />
|Yes<br />
|2016-09-11<br />
|-<br />
| [https://gbatemp.net/threads/release-mastermind-3ds.394710/ Mastermind 3DS]<br />
| A port of Mastermind for the 3DS.<br />
| [[User:MrJPGames|Jasper Peters]]<br />
| [https://github.com/MrJPGames/Mastermind-3DS/releases Here]<br />
| Yes<br />
| 2015-08-15<br />
|-<br />
| [http://gbatemp.net/threads/release-minesweeper-2ds.384185/ Minesweeper 2DS]<br />
| A port of Minesweeper for the 3DS.<br />
| [[User:Cid2mizard|Cid2mizard]]<br />
| [http://3ds.nintendomax.com/Homebrews/Jeux/Minesweeper2DS/Minesweeper_2DS.rar Here]<br />
| No<br />
| 2015-11-01<br />
|-<br />
| [https://pyug.at/PyWeek/2012-09 One Whale Trip]<br />
| Five-lane underwater whale swimming/pearl pickup adventure game in Python.<br />
| [[User:thp|thp]]<br />
| [https://bitbucket.org/pyugat/pyweek1209/downloads/OneWhaleTrip-2016-07-18-3DS.zip Here]<br />
| [https://bitbucket.org/pyugat/pyweek1209/src/bce5156dbee72f38c4fcf5d7b3df9cfb9ddd5b0a/3ds Yes]<br />
| 2016-10-02<br />
|-<br />
| [http://gbatemp.net/threads/release-paddle-puffle-3ds.392215/ Paddle Puffle 3DS]<br />
| A port of [http://puffles.gatuno.mx Paddle Puffle] for the 3DS.<br />
| [[User:Peanut42|Peanut42]]<br />
| [http://puffles.gatuno.mx/releases/paddlepuffle3ds.zip Here]<br />
| [https://github.com/gatuno/PaddlePuffle3DS Yes]<br />
| 2015-07-05<br />
|-<br />
| [http://david.dantoine.org/proyecto/26/ Pituka Classics]<br />
| Play CPC classics using [http://david.dantoine.org/proyecto/4/ Pituka Emulator-Core] on 3DS.<br />
| [[User:D_Skywalk|D_Skywalk]]<br />
| [http://david.dantoine.org/descargas/72 Rick Dangerous] [http://david.dantoine.org/descargas/2 Core]<br />
| [http://david.dantoine.org/descargas/4 Yes (core)]<br />
| 2016-02-26<br />
|-<br />
| [http://gbatemp.net/threads/release-pixel-shuffle-2ds.398540/ Pixel Shuffle 2DS]<br />
| An adaptation of the puzzle game [http://www.gimme5games.com/play-game/pixelshuffle Pixel Shuffle] for the 3DS.<br />
| [[User:Cid2mizard|Cid2mizard]]<br />
| [http://3ds.nintendomax.com/Homebrews/Jeux/PixelShuffle2DS/Pixel_Shuffle_2DS.rar Here]<br />
| No<br />
| 2015-11-01<br />
|-<br />
| [http://gbatemp.net/threads/release-pixel-swap-2ds.395749/ Pixel Swap 2DS]<br />
| An adaptation of puzzle games Pixel Swap 1 & 2 for the 3DS.<br />
| [[User:Cid2mizard|Cid2mizard]]<br />
| [http://3ds.nintendomax.com/Homebrews/Jeux/PixelSwap2DS/Pixel_Swap_2DS.rar Here]<br />
| No<br />
| 2015-11-01<br />
|-<br />
| [https://github.com/smealum/portal3DS Portal3DS]<br />
| An adaptation of [https://en.wikipedia.org/wiki/Portal_(video_game) Portal] for the 3DS.<br />
| [[User:smea|smea]]<br />
| Build from [https://github.com/smealum/portal3DS repo] (Decompiled [http://www.mediafire.com/file/yo463wt6y4tybch/portal3DS.rar here])<br />
| Yes<br />
| 2015-08-18<br />
|-<br />
| [https://github.com/masterfeizz/ctrQuake ctrQuake]<br />
| An unofficial port of Quake for the 3DS, fully playable.<br />
| [[User:MasterFeizz|MasterFeizz]]<br />
| [https://github.com/masterfeizz/ctrQuake/releases Here]<br />
| Yes<br />
| 2016-09-16<br />
|-<br />
| [https://gbatemp.net/threads/release-reversi-othello-for-3ds.395442/ Reversi]<br />
| [https://en.wikipedia.org/wiki/Reversi Reversi] for the 3DS.<br />
| [[User:MrJPGames|Jasper Peters]]<br />
| [https://github.com/MrJPGames/Othello-3DS/releases Here]<br />
| Yes<br />
| 2016-03-05<br />
|-<br />
| [https://github.com/landm2000/sokoban Sokoban]<br />
| An unofficial port of the puzzle game [https://en.wikipedia.org/wiki/Sokoban Sokoban] for the 3DS.<br />
| [[User:Landm|Landm]]<br />
| [https://github.com/landm2000/sokoban/tree/master Here]<br />
| Yes<br />
| 2016-03-14<br />
|-<br />
| [https://gbatemp.net/threads/release-space-fruit.399088/ Space Fruit]<br />
| Hackathon game by 4 friends ported to 3DS. Asteroids but with fruit.<br />
| [[User:TurtleP|TurtleP]]<br />
| [https://github.com/TurtleP/SpaceFruit/releases Here]<br />
| Yes<br />
| 2016-04-09<br />
|-<br />
| [https://github.com/sgowen/tappy-plane Tappy Plane]<br />
| A port of [https://en.wikipedia.org/wiki/Flappy_Bird Flappy Bird] for 3DS, but with a colorful plane.<br />
| [[User:Sgowen|sgowen]]<br />
| [https://github.com/sgowen/tappy-plane/releases Here]<br />
| Yes<br />
| 2015-11-09<br />
|-<br />
| [https://thp.itch.io/tetrepetete-3ds Tetrepetete 3DS]<br />
| A game with blocks.<br />
| [[User:thp|thp]]<br />
| [https://thp.itch.io/tetrepetete-3ds Here]<br />
| No<br />
| 2016-06-29<br />
|-<br />
| [http://gbatemp.net/threads/release-tilemap-2ds.386733/ TileMap 2DS]<br />
| An adaptation of the puzzle game TileMap for the 3DS.<br />
| [[User:Cid2mizard|Cid2mizard]]<br />
| [http://3ds.nintendomax.com/Homebrews/Jeux/TileMap2DS/TileMap_2DS.rar Here]<br />
| No<br />
| 2015-11-03<br />
|-<br />
| [http://gbatemp.net/threads/release-tiles-2ds.385796/ Tiles 2DS]<br />
| An adaptation of the puzzle game Lights Out for the 3DS.<br />
| [[User:Cid2mizard|Cid2mizard]]<br />
| [http://3ds.nintendomax.com/Homebrews/Jeux/Tiles2DS/Tiles_2DS.rar Here]<br />
| No<br />
| 2015-11-01<br />
|-<br />
| [https://thp.itch.io/that-rabbit-game-3ds That Rabbit Game 3DS]<br />
| Inverse duck hunt with accelerometer input and stereoscopic 3D.<br />
| [[User:thp|thp]]<br />
| [https://thp.itch.io/that-rabbit-game-3ds Here]<br />
| No<br />
| 2016-07-04<br />
|-<br />
| [http://gbatemp.net/threads/trucmuche-2ds-09.404859// Trucmuche 2DS 09]<br />
| An adaptation of the hidden objects game Trucmuche for the 3DS.<br />
| [[User:Cid2mizard|Cid2mizard]]<br />
| [http://3ds.nintendomax.com/Homebrews/Jeux/Trucmuche2DS09/Trucmuche_2DS_09.rar Here]<br />
| No<br />
| 2015-12-03<br />
|-<br />
| [https://github.com/Steveice10/WorldOf3DSand World of 3DSand]<br />
| A port of World of Sand for the 3DS.<br />
| [[User:Steveice10|Steveice10]]<br />
| [https://github.com/Steveice10/WorldOf3DSand/releases Here]<br />
| Yes<br />
| 2016-07-12<br />
|-<br />
| [https://github.com/smealum/yeti3DS Yeti3DS]<br />
| A quick and dirty port of Derek Evans' Yeti3D software rendering engine.<br />
| [[User:smea|smea]]<br />
| Build from [https://github.com/smealum/yeti3DS repo]<br />
| Yes<br />
| 2015-08-07<br />
|-<br />
|}<br />
<br />
=== Emulators ===<br />
{| class="wikitable" border="1"<br />
! width="20%" | Name<br />
! width="50%" | Description<br />
! width="10%" | Author<br />
! width="10%" | Download<br />
! width="5%" | Open-Source<br />
! width="15%" | Last Updated<br />
|-<br />
| ''[https://github.com/st4rk/3DNES 3DNES]''<br />
| A NES emulator, without sound support. ''No longer under development.''<br />
| st4rk, gdkChan<br />
| [https://github.com/St4rk/3DNES/raw/master/3DNES_old.3dsx Here]<br />
| Yes<br />
| 2015-03-28<br />
|-<br />
| [http://asie.pl/homebrew/#atari800 atari800-3DS]<br />
| An Atari 8-bit home computer emulator.<br />
| asie<br />
| [http://asie.pl/homebrew/#atari800 Here]<br />
| [https://github.com/asiekierka/atari800-3ds Yes]<br />
| 2016-10-29<br />
|-<br />
| [https://github.com/StapleButter/blargSnes blargSnes]<br />
| A Super Nintendo (SNES) emulator. A compatibility list can be found [http://wiki.gbatemp.net/wiki/BlargSnes_Compatibility_List here].<br />
| StapleButter<br />
| [http://blargsnes.kuribo64.net/download/blargSnes_1.3b.zip Here]<br />
| Yes<br />
| 2015-06-12<br />
|-<br />
| [https://github.com/xerpi/CHIP-3DS CHIP-3DS]<br />
| A simple and slow CHIP-8 emulator.<br />
| xerpi<br />
| Build from [https://github.com/xerpi/CHIP-3DS repo] (alt. [https://www.mediafire.com/?y94yjhzf70fsfsi here])<br />
| Yes<br />
| 2015-04-02<br />
|-<br />
| [https://gbatemp.net/threads/chip8-3ds.434425/ CHIP8-2DS]<br />
| CHIP-8 emulator with savestates and touch controls.<br />
| nopy4869<br />
| [https://github.com/nopy4869/CHIP8-2DS/releases Here]<br />
| Yes<br />
| 2016-07-20<br />
|-<br />
| [https://github.com/shinyquagsire23/gpsp CitrAGB]<br />
| Yet another GBA emulator for the 3DS.<br />
| [[User:shinyquagsire23|Shiny Quagsire]]<br />
| Build from [https://github.com/shinyquagsire23/gpsp/tree/master/3ds repo] (alt. [https://www.dropbox.com/s/sxb7x34u58g4zo2/3ds.3dsx?dl=0 here])<br />
| Yes<br />
| 2015-09-21<br />
|-<br />
| [https://easy-rpg.org/blog/2016/05/player-for-nintendo-3ds/ EasyRPG Player]<br />
| RPG Maker 2000/2003 interpreter<br />
| [[User:Rinnegatamante|Rinnegatamante]] & EasyRPG Team<br />
| [https://easyrpg.org/player/downloads/ Here]<br />
| [https://github.com/EasyRPG/Player Yes]<br />
| 2017-06-28<br />
|-<br />
| [https://github.com/Steveice10/GameYob GameYob]<br />
| A Game Boy (Color) emulator. A compatibility list can be found [http://wiki.gbatemp.net/wiki/GameYob_3DS_Compatibility_List here].<br />
| Drenn/Steveice10<br />
| [https://github.com/Steveice10/GameYob/releases Here]<br />
| Yes<br />
| 2016-07-17<br />
|-<br />
| [https://github.com/mgba-emu/mgba mGBA]<br />
| A GBA emulator that runs well without kernel hax.<br />
| endrift<br />
| [https://mgba.io/downloads.html Here]<br />
| Yes<br />
| 2016-10-13<br />
|-<br />
| [https://github.com/mrdanielps/r3Ddragon r3Ddragon]<br />
| A WIP Virtual Boy emulator for the 3DS based on Reality Boy / Red Dragon.<br />
| mrdanielps<br />
| [https://github.com/mrdanielps/r3Ddragon/releases Here]<br />
| Yes<br />
| 2016-08-16<br />
|-<br />
| [https://github.com/libretro/RetroArch RetroArch]<br />
| A multisystem emulator. (GB, GBA, SNES, Genesis, CPS1, CPS2, etc.)<br />
| libretro<br />
| [http://buildbot.libretro.com/nightly/nintendo/3ds/ Here]<br />
| Yes<br />
| Undergoing rapid development.<br />
|-<br />
| [https://github.com/bubble2k16/snes9x_3ds SNES9x for 3DS]<br />
| A SNES emulator for the old 3DS / 2DS. Optimised from Snes9x 1.43 and runs many games at full speed. Compatibility list [http://wiki.gbatemp.net/wiki/Snes9x_for_3DS here]<br />
| bubble2k16<br />
| [https://github.com/bubble2k16/snes9x_3ds/releases Here]<br />
| Yes<br />
| 2017-02-11<br />
|-<br />
| [https://github.com/bubble2k16/emus3ds_3ds VirtuaNES for 3DS]<br />
| A NES emulator for the old 3DS / 2DS. Optimised from VirtuaNES 0.9.7 and runs many games at full speed. ]<br />
| bubble2k16<br />
| [https://github.com/bubble2k16/emus3ds/releases Here]<br />
| Yes<br />
| 2017-03-23<br />
|-<br />
|}<br />
<br />
===Title managers===<br />
{| class="wikitable" border="1"<br />
! width="20%" | Name<br />
! width="50%" | Description<br />
! width="10%" | Author<br />
! width="10%" | Download<br />
! width="5%" | Open-Source<br />
! width="15%" | Last Updated<br />
|-<br />
| [https://github.com/Steveice10/FBI FBI]<br />
| Open source CIA (un)installer and launcher.<br />
| [[User:Steveice10|Steveice10]]<br />
| [https://github.com/Steveice10/FBI/releases?after=2.0.0 Here]<br />
| Yes<br />
| 2015-12-02<br />
|-<br />
| [https://github.com/Steveice10/FBI FBI 2]<br />
| Multipurpose file/title/ticket/save manager<br />
| [[User:Steveice10|Steveice10]]<br />
| [https://github.com/Steveice10/FBI/releases Here]<br />
| Yes<br />
| 2016-12-31<br />
|-<br />
| [https://gbatemp.net/threads/release-nasa-universal-cia-manager-for-fw-4-1-10-3.409806/ NASA]<br />
| Universal CIA Manager for FWs 4.1 - 10.7<br />
| [[User:Rinnegatamante|Rinnegatamante]]<br />
| [http://rinnegatamante.it/site/3ds_hbs.php Here]<br />
| No<br />
| 2016-04-13<br />
|}<br />
<br />
=== Save managers===<br />
{| class="wikitable" border="1"<br />
! width="20%" | Name<br />
! width="50%" | Description<br />
! width="10%" | Author<br />
! width="10%" | Download<br />
! width="5%" | Open-Source<br />
! width="15%" | Last Updated<br />
|-<br />
| [https://gbatemp.net/threads/save-data-manager-and-editor-for-firmware-up-to-9-9.396245/ save_manager]<br />
| Proof of concept save exporter/importer<br />
| [[User:profi200|profi200]]<br />
| [http://gbatemp.net/attachments/save_manager_-with_smdh-zip.24349/ Here]<br />
| [https://gist.github.com/profi200/d0d092c11d0eb0692748 Yes]<br />
| 2015-09-13<br />
|-<br />
| [https://github.com/meladroit/svdt svdt]<br />
| Save Data Explorer/Manager<br />
| [[User:meladroit|meladroit]]<br />
| [https://github.com/meladroit/svdt/releases Here]<br />
| Yes<br />
| 2015-10-16<br />
|-<br />
| [https://gbatemp.net/threads/release-jks-savemanager-homebrew-cia-save-manager.413143/ JK's Save Manager]<br />
| Save/Extdata Manager<br />
| JK_<br />
| [https://github.com/J-D-K/JKSM/releases Here]<br />
| Yes<br />
| 2016-09-29<br />
|-<br />
| [https://github.com/BernardoGiordano/PKSM PKSM]<br />
| Save editor for Pokèmon generations 4 to 7<br />
| Bernardo Giordano<br />
| [https://github.com/BernardoGiordano/PKSM/releases Here]<br />
| Yes<br />
| 2016-12-31<br />
|}<br />
<br />
=== File servers ===<br />
{| class="wikitable" border="1"<br />
! width="20%" | Name<br />
! width="50%" | Description<br />
! width="10%" | Author<br />
! width="10%" | Download<br />
! width="5%" | Open-Source<br />
! width="15%" | Last Updated<br />
|-<br />
| [https://github.com/mtheall/ftpd ftpd (ftBrony)]<br />
| A FTP server.<br />
| [https://github.com/mtheall mtheall]<br />
| [https://github.com/mtheall/ftpd/releases Here]<br />
| Yes<br />
| 2016-09-17<br />
|-<br />
| ''[https://github.com/iamevn/FTP-3DS FTP-3DS]''<br />
| Fork of ftBrony with a Nintendo theme. ''No longer under development and without repo.''<br />
| [[User:iamevn|iamevn]]<br />
| N/A<br />
| Yes (''No source officially available.'')<br />
| N/A<br />
|-<br />
| [https://github.com/FloatingStar/FTP-GMX FTP - Graphic ModifierX Edition]<br />
| Fork of ftpd with aesthetic modifications.<br />
| [[User:FloatingStar|FloatingStar]]<br />
| [https://github.com/FloatingStar/FTP-GMX/releases Here]<br />
| Yes<br />
| 2016-01-27<br />
|-<br />
| [https://github.com/smealum/ftpony ftpony]<br />
| A basic FTP server, useful for testing new homebrew versions without swapping the SD card. ''No longer under (active) development?''<br />
| [[User:smea|smea]]<br />
| Build from [https://github.com/smealum/ftpony repo] (alt. [https://mega.co.nz/#!nchBkL7B!T3vXnX4q8Uwp6APYYTDSZi2bkm25la-Qyz6j4CjsllI here])<br />
| Yes<br />
| 2014-11-24<br />
|}<br />
<br />
=== Icon Packs ===<br />
Icon Packs are <code>SMDH</code> Packs for homebrew apps.<br />
{| class="wikitable" border="1"<br />
! width="20%" | Name<br />
! width="50%" | Description<br />
! width="10%" | Author<br />
! width="10%" | Download<br />
! width="10%" | Last Updated<br />
|-<br />
| [https://gbatemp.net/threads/icon-pack-simplok-for-the-homebrew-launcher.396750/ Simplok]<br />
| The first 3DS Icon pack.<br />
| [[User:link6155|link6155]]<br />
| [http://1drv.ms/1EJCq2e Here]<br />
| 2015-09-12<br />
|-<br />
| ''[https://gbatemp.net/threads/1lp-icon-pack.402018/ 1LP]''<br />
| Another 3DS Icon pack. ''Repo is dead, no alternate downloads available.''<br />
| [[User:100pcrack|100pcrack]]<br />
| N/A<br />
| 2015-12-22<br />
|-<br />
| [https://gbatemp.net/threads/icon-pack-modern-ui.404366/ Modern UI]<br />
| A simple icon pack with a flat and minimalist design.<br />
| [[User:LouchDaishiteru|LouchDaishiteru]]<br />
| [https://gbatemp.net/threads/icon-pack-modern-ui.404366/ Here]<br />
| 2016-02-15<br />
|}<br />
<br />
=== Demos ===<br />
{| class="wikitable" border="1"<br />
! width="20%" | Name<br />
! width="50%" | Description<br />
! width="10%" | Author<br />
! width="10%" | Download<br />
! width="5%" | Open-Source<br />
! width="15%" | Last Updated<br />
|-<br />
| cubedemo<br />
| A short demo of Homebrew on the 3DS, with working sound.<br />
| [[User:plutoo|plutoo]]<br />
| [https://mega.co.nz/#!KUQFiQYA!pv8HDEyrmuX6Eyw2hW0opL7gf9Ztmjd9J5pPsvs_rD4 Here]<br />
| No<br />
| N/A<br />
|-<br />
| Spine 2D<br />
| Demo of [http://esotericsoftware.com/ Spine]'s 2D skeletal animations<br />
| [[User:Cruel|Cruel]]<br />
| [https://mega.nz/#!Xg411B5R!kcVHP69Ilggmjh4q5OYmr2cFvf5UGdHWA98-_VttDTo 3DSX]; [https://mega.nz/#!z8gxHSQb!H0as1A4wqYrdKBhXJwdYik7nPd_msXJhz5N1CeZm1Iw CIA]<br />
| No<br />
| N/A<br />
|-<br />
| [http://www.pouet.net/prod.php?which=66607 demo ou mourir]<br />
| Small demo for the 3DS with music and 2D effects<br />
| Desire<br />
| [http://mudlord.info/democrap/dsr_demooumourir.zip Here]<br />
| No<br />
| November 2015<br />
|}</div>
Joel16
https://www.3dbrew.org/w/index.php?title=Config_Savegame&diff=20178
Config Savegame
2017-07-20T05:51:58Z
<p>Joel16: /* Parental control Block 0x00100001 */</p>
<hr />
<div>This page describes the format of the [[Config_Services|Cfg]] [[System_SaveData|NAND]] savegame. These blocks can be accessed with the Cfg service commands.<br />
<br />
==Structure of save-file "/config"==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset<br />
! Size<br />
! Description<br />
|-<br />
| 0x0<br />
| 0x2<br />
| Total entries<br />
|-<br />
| 0x2<br />
| 0x2<br />
| Data entries offset<br />
|-<br />
| 0x4<br />
| 0x4558<br />
| Block entries<br />
|-<br />
| 0x455C<br />
| <br />
| Data for the entries<br />
|}<br />
<br />
The filesize for this /config file is 0x8000-bytes.<br />
<br />
==Configuration block entry ==<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset<br />
! Size<br />
! Description<br />
|-<br />
| 0x0<br />
| 0x4<br />
| BlkID<br />
|-<br />
| 0x4<br />
| 0x4<br />
| Offset to the data for this block when size is >4, otherwise this word is the data for this block<br />
|-<br />
| 0x8<br />
| 0x2<br />
| Size<br />
|-<br />
| 0xA<br />
| 0x2<br />
| Flags<br />
|}<br />
<br />
==Configuration blocks==<br />
{| class="wikitable" border="1"<br />
|-<br />
! BlkID<br />
! Size<br />
! Flags<br />
! Description<br />
|-<br />
| 0x00000000<br />
| 0x2<br />
| 0xC<br />
| Config savegame version?<br />
|-<br />
| 0x00010000<br />
| 0x1<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00020000<br />
| 0x134<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00030000<br />
| 0x1<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00030001<br />
| 0x8<br />
| 0xE<br />
| User time offset (read by CECD)<br />
|-<br />
| 0x00030002<br />
| 0x8<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00040000<br />
| 0x10<br />
| 0xC<br />
| ? (read by HID)<br />
|-<br />
| 0x00040001<br />
| 0x1C<br />
| 0xC<br />
| Analog Stick Calibration Param?(read by HID)<br />
|-<br />
| 0x00040002<br />
| 0x12<br />
| 0xC<br />
| ? (read by HID)<br />
|-<br />
| 0x00040003<br />
| 0xC<br />
| 0xC<br />
| ? (read by HID)<br />
|-<br />
| 0x00040004<br />
| 0x1C<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00050000<br />
| 0x2<br />
| 0xC<br />
| Upper/Lower screen flicker byte<br />
|-<br />
| 0x00050001<br />
| 0x2<br />
| 0xC<br />
| Backlight controls (u8 ABL_powersave_enable, u8 brightness_level) (read by GSP)<br />
|-<br />
| 0x00050002<br />
| 0x38<br />
| 0xC<br />
| ? (read by GSP)<br />
|-<br />
| 0x00050003<br />
| 0x20<br />
| 0xC<br />
| ? (read by GSP)<br />
|-<br />
| 0x00050004<br />
| 0x20<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00050005<br />
| 0x20<br />
| 0xE<br />
| Stereo display settings<br />
|-<br />
| 0x00050006<br />
| 0x2<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00050007<br />
| 0x4<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00050008<br />
| 0x10C<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00050009<br />
| 0x8<br />
| 0xC<br />
| new3DS only(?) backlight control (5th byte: backlight dimming enable)<br />
|-<br />
| 0x00060000<br />
| 0x96<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00070000<br />
| 0x214<br />
| 0xE<br />
| ?<br />
|-<br />
| 0x00070001<br />
| 0x1<br />
| 0xE<br />
| Sound output mode (mono/stereo/surround)?<br />
|-<br />
| 0x00070002<br />
| 0x8<br />
| 0xE<br />
| ?<br />
|-<br />
| 0x00080000<br />
| 0xC00<br />
| 0xC<br />
| WiFi configuration slot 0<br />
|-<br />
| 0x00080001<br />
| 0xC00<br />
| 0xC<br />
| WiFi configuration slot 1<br />
|-<br />
| 0x00080002<br />
| 0xC00<br />
| 0xC<br />
| WiFi configuration slot 2<br />
|-<br />
| 0x00090000<br />
| 0x8<br />
| 0xE<br />
| This contains a u64 ID, used by processes using [[NWMUDS:InitializeWithVersion]]. The first word is the same as [[CfgS:GetLocalFriendCodeSeed|LocalFriendCodeSeed]], while the latter is a separate word.<br />
|-<br />
| 0x00090001<br />
| 0x8<br />
| 0xE<br />
| Same content as 0x0009000? This console-unique u64 is used by [[Cfg:GenHashConsoleUnique|GenHashConsoleUnique]]. It is generated by <code>((0x3FFFFFFFF) & LocalFriendCodeSeed) | (random16 << 48))</code>, where random16 is generated by [[PSPXI:GenerateRandomBytes|GenerateRandomBytes]]<br />
|-<br />
| 0x00090002<br />
| 0x4<br />
| 0xE<br />
| The first two bytes are the same random16 used in 0x00090001. The second two bytes are zeros.<br />
|-<br />
| 0x000A0000<br />
| 0x1C<br />
| 0xE<br />
| Username in UTF16<br />
|-<br />
| 0x000A0001<br />
| 0x2<br />
| 0xE<br />
| Birthday (u8 month, u8 day)<br />
|-<br />
| 0x000A0002<br />
| 0x1<br />
| 0xE<br />
| Language<br />
|-<br />
| 0x000B0000<br />
| 0x4<br />
| 0xE<br />
| CountryInfo<br />
|-<br />
| 0x000B0001<br />
| 0x800<br />
| 0xE<br />
| Country name in UTF-16, every 0x80-bytes is an entry for each language, in the order of the Language table below (not all entries are set)<br />
|-<br />
| 0x000B0002<br />
| 0x800<br />
| 0xE<br />
| State name in UTF-16, every 0x80-bytes is an entry for each language<br />
|-<br />
| 0x000B0003<br />
| 0x4<br />
| 0xE<br />
| Coordinates. A pair of s16 represents latitude and longitude, respectively. One need to multiply both value by 180/32768 to get coordinates in degrees<br />
<br />
|-<br />
| 0x000C0000<br />
| 0xC0<br />
| 0xE<br />
| Restricted photo exchange data, and other info (includes a mirror of Parental Restrictions PIN/Secret Answer)<br />
|-<br />
| 0x000C0001<br />
| 0x14<br />
| 0xE<br />
| Same as above?<br />
|-<br />
| 0x000C0002<br />
| 0x200<br />
| 0xE<br />
| ? Contains the email address set during Parental Restriction setup.<br />
|-<br />
| 0x000D0000<br />
| 0x4<br />
| 0xE<br />
| u16 at offset 0x0: [[SMDH#EULA_Version|EULA Version]] which was agreed to.<br />
|-<br />
| 0x000E0000<br />
| 0x1<br />
| 0xE<br />
| ?<br />
|-<br />
| 0x000F0000<br />
| 0x10<br />
| 0xC<br />
| Debug configuration, read by [[NS]] on dev-units: on startup, NS does <code>svcKernelSetState(6, 1, (u64)debug_flags & 1); <br />
svcKernelSetState(6, 2, (u64)debug_flags & 2);</code> (see [[SVC#KernelSetState|here]]) where <code>debug_flags</code> is the u32 located at offset 0xC in this struct. Then it compares the u32 from +8 in this config-block with the [[Configuration_Memory#APPMEMTYPE|APPMEMTYPE]]. When those don't match NS starts a FIRM-launch (with the same FIRM titleID as the currently running one) to boot into a FIRM with the APPMEMTYPE value from this config-block. The byte at offset 0x0 is related to the memtype as well.<br />
|-<br />
| 0x000F0001<br />
| 0x8<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x000F0003<br />
| 0x1<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x000F0004<br />
| 0x4<br />
| 0xC<br />
| The first u8 is the System-Model [[Cfg:GetSystemModel|value]], the last 3-bytes are unknown<br />
|-<br />
| 0x000F0005<br />
| 0x4<br />
| 0xC<br />
| The first u8 indicates whether network updates are enabled (however, NIM only checks this flag with developer [[Configuration_Memory#ENVINFO|ENVINFO]]).<br />
|-<br />
| 0x000F0006<br />
| 0x28<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00100000<br />
| 0x2<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00100001<br />
| 0x94<br />
| 0xC<br />
| Stores Parental Restrictions PIN/Secret Answer and other info<br />
|-<br />
| 0x00100002<br />
| 0x1<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00100003<br />
| 0x10<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00110000<br />
| 0x4<br />
| 0xC<br />
| The low u16 indicates whether the system setup is required, such as when the system is booted for the first time or after doing a [[System Settings|System Format]]: 0 = setup required, non-zero = no setup required<br />
|-<br />
| 0x00110001<br />
| 0x8<br />
| 0xC<br />
| TitleID of the menu to launch, used by [[NS]] on dev units (this block can be edited on dev units with [[3DS Development Unit Software#Config|Config]])<br />
|-<br />
| 0x00120000<br />
| 0x8<br />
| 0xC<br />
| ? (read by HID)<br />
|-<br />
| 0x00130000<br />
| 0x4<br />
| 0xE<br />
| If response is 0x100 then debug mode is enabled.<br />
|-<br />
| 0x00150000<br />
| 0x4<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00150001<br />
| 0x8<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00150002<br />
| 0x4<br />
| 0xE<br />
| ?<br />
|-<br />
| 0x00160000<br />
| 0x4<br />
| 0xE<br />
| Unknown, first byte is used by config service-cmd [[Config_Services|0x00070040]]. (Unknown whether the last 3-bytes are used)<br />
|-<br />
| 0x00170000<br />
| 0x4<br />
| 0xE<br />
| ?<br />
|-<br />
| 0x00180000<br />
| 0x4<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00180001<br />
| 0x18<br />
| 0xC<br />
| ?<br />
|-<br />
| 0x00190000<br />
| 0x1<br />
| 0xC<br />
| Unknown. NFC-module checks for value1/non-value1.<br />
|}<br />
<br />
The developer unit TID block only exists on developer units.<br />
<br />
===Stereo Display Settings===<br />
All values are hard-coded in cfg module.<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset<br />
! Size<br />
! Value<br />
! Description<br />
|-<br />
| 0x0<br />
| 4<br />
| 62.0f<br />
|assumed pupillary distance in mm?<br />
|-<br />
| 0x4<br />
| 4<br />
| 289.0f<br />
|assumed distance in mm between player's eyes and upper screen?<br />
|-<br />
| 0x8<br />
| 4<br />
| 76.80f<br />
|width in mm of (old) 3DS upper screen (doesn't vary for different models?)<br />
|-<br />
| 0xC<br />
| 4<br />
| 46.08f<br />
|height in mm of (old) 3DS upper screen (doesn't vary for different models?)<br />
|-<br />
| 0x10<br />
| 4<br />
| 10.0f<br />
|<br />
|-<br />
| 0x14<br />
| 4<br />
| 5.0f<br />
|<br />
|-<br />
| 0x18<br />
| 4<br />
| 55.58f<br />
|<br />
|-<br />
| 0x1C<br />
| 4<br />
| 21.57f<br />
|<br />
|}<br />
<br />
===Languages===<br />
{| class="wikitable" border="1"<br />
|-<br />
! ID<br />
! Description<br />
|-<br />
| 0<br />
| JP<br />
|-<br />
| 1<br />
| EN<br />
|-<br />
| 2<br />
| FR<br />
|-<br />
| 3<br />
| DE<br />
|-<br />
| 4<br />
| IT<br />
|-<br />
| 5<br />
| ES<br />
|-<br />
| 6<br />
| ZH<br />
|-<br />
| 7<br />
| KO<br />
|-<br />
| 8<br />
| NL<br />
|-<br />
| 9<br />
| PT<br />
|-<br />
| 10<br />
| RU<br />
|-<br />
| 11<br />
| TW<br />
|}<br />
<br />
===CountryInfo===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Byte<br />
! Description<br />
|-<br />
| 0<br />
|?<br />
|-<br />
| 1<br />
|?<br />
|-<br />
| 2<br />
| State/Province code.<br />
|-<br />
| 3<br />
| Country code, same as DSi/Wii country codes. Value 0xFF is invalid.<br />
|}<br />
<br />
===0x000A0000 Block===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Byte<br />
! Description<br />
|-<br />
| 0x0-0x13<br />
| UTF-16 username, with no NULL-terminator.<br />
|-<br />
| 0x14-17<br />
| Usually zero?<br />
|-<br />
| 0x18-0x1B<br />
| u32 NGWord version the username was last checked with. If this value is less than the u32 stored in the NGWord CFA "romfs:/version.dat", the system then checks the username string with the bad-word list CFA again, then updates this field with the value from the CFA<br />
|}<br />
<br />
<br />
<br />
===WiFi Slot Structure===<br />
<br />
====Network structure====<br />
This is used twice in the actual WiFi slot structure.<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset<br />
! Size<br />
! Description<br />
|-<br />
| 0x0<br />
| 0x1<br />
| Whether the network was set or not?<br />
|-<br />
| 0x1<br />
| 0x1<br />
| Whether to use this network strucutre to connect?<br />
|-<br />
| 0x2<br />
| 0x1<br />
| Whether this structure is the first (0) or the second (1) in the larger WiFi slot structure?<br />
|-<br />
| 0x3<br />
| 0x1<br />
| Padding ?<br />
|-<br />
| 0x4<br />
| 0x20<br />
| SSID of the network, without a trailing nullbyte.<br />
|-<br />
| 0x24<br />
| 0x1<br />
| Length of the SSID.<br />
|-<br />
| 0x25<br />
| 0x1<br />
| [[Nintendo_Zone#Beacon_payload_format|AP crypto key type]]<br />
|-<br />
| 0x26<br />
| 0x2<br />
| Padding ?<br />
|-<br />
| 0x28<br />
| 0x40<br />
| Plaintext of the passphrase of the network, without a trailing nullbyte.<br />
|-<br />
| 0x68<br />
| 0x20<br />
| PBKDF2 of the passphrase and SSID (http://jorisvr.nl/wpapsk.html).<br />
|-<br />
|}<br />
<br />
====Actual structure====<br />
{| class="wikitable" border="1"<br />
|-<br />
! Offset<br />
! Size<br />
! Description<br />
|-<br />
| 0x0<br />
| 0x2<br />
| ?<br />
|-<br />
| 0x2<br />
| 0x2<br />
| [https://github.com/lammertb/libcrc/blob/v2.0/src/crc16.c#L43-L76 CRC-16 checksum] of the next 0x410 bytes.<br />
|-<br />
| 0x4<br />
| 0x88<br />
| First network structure. Only set if the network was set "normally", or was the last to be set using WPS during the session.<br />
|-<br />
| 0x8C<br />
| 0x20<br />
| Padding.<br />
|-<br />
| 0xAC<br />
| 0x88<br />
| Second network structure. Only set if the network was set using WPS, otherwise 0-filled.<br />
|-<br />
| 0x134<br />
| 0x20C<br />
| Padding.<br />
|-<br />
| 0x340<br />
| 0x1<br />
| Whether to automatically get the IP address (use DHCP) or not, defaults to 1.<br />
|-<br />
| 0x341<br />
| 0x1<br />
| Whether to automatically get the DNS or not, defaults to 1.<br />
|-<br />
| 0x342<br />
| 0x2<br />
| Padding ?<br />
|-<br />
| 0x344<br />
| 0x4<br />
| IP address, to use if 0x340 is false.<br />
|-<br />
| 0x348<br />
| 0x4<br />
| IP address of the gateway, to use if 0x340 is false.<br />
|-<br />
| 0x34C<br />
| 0x4<br />
| Subnetwork mask, to use if 0x340 is false.<br />
|-<br />
| 0x350<br />
| 0x4<br />
| IP address of the primary DNS , to use if 0x341 is false.<br />
|-<br />
| 0x354<br />
| 0x4<br />
| IP address of the secondary DNS, to use if 0x341 is false.<br />
|-<br />
| 0x358<br />
| 0x4<br />
| Always 0x01050000 ? Only set if the network was the last to be set during the session.<br />
|-<br />
| 0x35C<br />
| 0x4<br />
| IP address to use. Only set if the network was the last to be set during the session.<br />
|-<br />
| 0x360<br />
| 0x6<br />
| MAC address of the AP. Only set if the network was the last to be set during the session.<br />
|-<br />
| 0x366<br />
| 0x1<br />
| Channel. Only set if the network was the last to be set during the session.<br />
|-<br />
| 0x367<br />
| 0x1<br />
| Padding ? Only set if the network was the last to be set during the session.<br />
|-<br />
| 0x368<br />
| 0x1<br />
| Whether to use a proxy or not, defaults to 0.<br />
|-<br />
| 0x369<br />
| 0x1<br />
| Whether to use a basic authentication for the proxy, defaults to 0.<br />
|-<br />
| 0x36A<br />
| 0x2<br />
| Port to use for the proxy, defaults to 1.<br />
|-<br />
| 0x36C<br />
| 0x30<br />
| URL/address of the proxy, including a trailing nullbyte.<br />
|-<br />
| 0x39C<br />
| 0x34<br />
| Padding.<br />
|-<br />
| 0x3D0<br />
| 0x20<br />
| Username to use for basic authentication, including a trailing nullbyte.<br />
|-<br />
| 0x3F0<br />
| 0x20<br />
| Password to use for basic authentication, including a trailing nullbyte.<br />
|-<br />
| 0x410<br />
| 0x2<br />
| Padding ?<br />
|-<br />
| 0x412<br />
| 0x2<br />
| MTU value, defaults to 1400 and ranges between 576 and 1500, inclusive.<br />
|-<br />
| 0x414<br />
| 0x7EC<br />
| Padding.<br />
|-<br />
|}<br />
<br />
===LCD display config===<br />
There seems to be some sort of LCD display configuration stored in this cfg. When using the cfg-save from an Old3DS on a New3DS without formatting the cfg first, the bottom-screen display is somewhat off(which is fixed by formatting the cfg-save).<br />
<br />
<br />
===Parental control Block 0x00100001===<br />
{| class="wikitable" border="1"<br />
|-<br />
! Byte<br />
! Size in bytes<br />
! Description<br />
|-<br />
| 0x0<br />
| 0xD<br />
| Unknown.<br />
|-<br />
| 0xD<br />
| 0x4<br />
| PIN<br />
|-<br />
| 0x11<br />
| 0x20<br />
| Secret answer in UTF-16<br />
|}</div>
Joel16
https://www.3dbrew.org/w/index.php?title=ACTU:GetAccountDataBlock&diff=20177
ACTU:GetAccountDataBlock
2017-07-19T18:42:48Z
<p>Joel16: /* DataBlocks */</p>
<hr />
<div>=Request=<br />
{| class="wikitable" border="1"<br />
|-<br />
! Index Word<br />
! Description<br />
|-<br />
| 0<br />
| Header code [0x000600C2]<br />
|-<br />
| 1<br />
| u8 Unknown, usually 0xFE?<br />
|-<br />
| 2<br />
| Size<br />
|-<br />
| 3<br />
| BlkID<br />
|-<br />
| 4<br />
| (Size<<4) <nowiki>|</nowiki> 12<br />
|-<br />
| 5<br />
| Output buffer 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 returns NNID account info.<br />
<br />
=DataBlocks=<br />
<br />
(if not explicitly noted, all blocks below are accessible with param[1]=0xFE)<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! BlkID<br />
! Size<br />
! Description<br />
|-<br />
| 0x5<br />
| 0x4<br />
| Persistent ID<br />
|-<br />
| 0x6<br />
| 0x8<br />
| Transferable ID Base<br />
|-<br />
| 0x7<br />
| 0x60<br />
| [[Mii#Mii_format|Mii Data]]<br />
|-<br />
| 0x8<br />
| 0x11<br />
| ASCII NUL-terminated Nintendo Network ID<br />
|-<br />
| 0xA<br />
| 0x4<br />
| Birthday {u16 year; u8 month; u8 day;}<br />
|-<br />
| 0xB<br />
| 0x3<br />
| ASCII NUL-terminated Country Name<br />
|-<br />
| 0xC<br />
| 0x4<br />
| Principal ID<br />
|-<br />
| 0xE<br />
| 0x1<br />
| ?<br />
|-<br />
| 0xF<br />
| 0x1<br />
| ?<br />
|-<br />
| 0x11<br />
| 0xA0<br />
| struct{u32 PersistentID; u32 padding; u64 TransferableIDBase; u8[0x60] MiiData; char16_t[0xB] MachinUserName?; char[0x11] AccountID; u8 padding; struct{u16 year; u8 month; u8 day;}Birthday; u32 PrincipalID;}<br />
|-<br />
| 0x12<br />
| 0x4<br />
| ?<br />
|-<br />
| 0x13<br />
| 0x1<br />
| Gender<br />
|-<br />
| 0x14<br />
| 0x1<br />
| ?<br />
|-<br />
| 0x15<br />
| 0x11<br />
| ASCII NUL-terminated Nintendo Network ID<br />
|-<br />
| 0x16<br />
| 0x1<br />
| ?<br />
|-<br />
| 0x17<br />
| 0x4<br />
| ?<br />
|-<br />
| 0x19<br />
| 0x8<br />
| UTC offset<br />
|-<br />
| 0x1A<br />
| 0x1<br />
| ?<br />
|-<br />
| 0x1B<br />
| 0x16<br />
| (NUL-terminated?) UTF-16 mii name<br />
|-<br />
| 0x1C<br />
| 0x11<br />
| ASCII NUL-terminated Nintendo Network ID<br />
|-<br />
| 0x1D<br />
| 0x1<br />
| ?<br />
|-<br />
| 0x1E<br />
| 0x41<br />
| ASCII Time Zone Location<br />
|-<br />
| 0x1F<br />
| 0x1<br />
| ?<br />
|-<br />
| 0x20<br />
| 0x1<br />
| ?<br />
|-<br />
| 0x24<br />
| 0x1<br />
| ?<br />
|-<br />
| 0x25<br />
| 0x101<br />
| ASCII NUL-terminated URL to account mii image<br />
|-<br />
| 0x26<br />
| 0x4<br />
| Principle ID?<br />
|-<br />
| 0x27<br />
| 0x4<br />
| ?<br />
|-<br />
| 0x28<br />
| 0x24<br />
| ?<br />
|-<br />
| 0x2B<br />
| 0x1<br />
| ?<br />
|-<br />
| 0x2C<br />
| 0x2<br />
| Age (Not accessible with param[1] = 0xFE)<br />
|-<br />
| 0x2D<br />
| 0x1<br />
| ?<br />
|-<br />
| 0x2E<br />
| 0x1<br />
| ?<br />
|-<br />
| 0x2F<br />
| 0x4<br />
| [[Config_Savegame#CountryInfo|CountryInfo]]<br />
|}</div>
Joel16