3DS HomeMenu extdata Tool 3DS

From GameBrew

3DS homemenu ext data Tool
Last Updated2015/07/09
TypeSystem Tools

3DS HomeMenu extdata Tool is a Nintendo 3DS homebrew tool for accessing the Home Menu SD extdata, this is usable from Ninjhax. This allows reading/writing the home-menu SD extdata SaveData.dat, and the extdata theme-cache.

This essentially allows user to write custom themes to SD extdata, which home-menu will automatically load at Home Menu process next startup.



Available as 3DSX/SMDH.


This requires the latest ctrulib from git.

If you build a CXI/CIA for this, the accessinfo must have bitmask 0x01 set (in the RSF that's FileSystemAccess with field - CategorySystemApplication).

User guide

Before modifying

Backing up extdata before modifying is recommended.

You can copy the data from sdmc:/Nintendo 3DS/{ID0}/{ID1}/extdata/00000000/{extdataIDlow}/ to elsewhere, where extdataIDlow is the extdataIDs for home-menu extdata and theme extdata.


The data this app reads/writes to/from sdmc is located in the same directory that the app runs from (SD root for CXI/CIA). The theme-data this app uses on sdmc is the following.


  • Copied from extdata to sdmc.
  • This can be copied to extdata from sdmc, if it doesn't exist on sdmc for that then data is generated for it then writen to extdata.

BodyCache.bin, body_LZ.bin:

  • The former is copied from extdata to sdmc.
  • When copying from sdmc to extdata, the app will first attempt to use BodyCache.bin, then body_LZ.bin.
  • When ThemeManage.bin exists on sdmc with sdmc->extdata, this body-data is only copied when the size field in ThemeManage.bin for this is non-zero.
  • When copying to extdata, the filesize must be smaller than or exactly 0x150000-bytes.

BgmCache.bin, bgm.bcstm:

  • Handled basically the same way as the body-data, except with the bgm sizes.
  • When copying to extdata, the filesize must be smaller than or exactly 0x337000-bytes.
  • When writing BGM to extdata, Home Menu must not be already using any BGM from the theme-cache (prior to when this tool wrote anything to extdata).

Main menu

  • Copy extdata SaveData.dat to sd - Option to backup your SaveData.dat to SD (this contains the current theme settings and other things).
  • Copy SaveData.dat from sd to extdata - Option to restore your SaveData.dat from SD.
  • Enable normal theme-cache - Enable using the theme-data from SD. Do not use this if you don't have any theme DLC installed, use the below menu option instead.
  • Enable persistent theme-cache - Same as above except the custom themes are persistent even without any theme DLC installed.
  • Copy theme-data from extdata to sd - Option to backup the theme-data stored in extdata.
  • Copy theme-data from sd to extdata - Option to write a custom theme to extdata.

How to import custom theme

Place your edited body_LZ.bin from Theme Customisation Tools in sd:\3ds\3ds_homemenu_extdatatool or wherever your theme folder is.

If you have a custom BCSTM file, rename it to BGM.bcstm and place it in the same folder. Then open 3ds_homemenu_extdatatool, enable theme cache and import theme cache from SD to ExtData.

Disable theme-cache

To disable using the theme-cache, you can:

  • Either enter home-menu theme-settings then select none, restore a backup of SaveData.dat with this tool, restore the entire home-menu and/or theme extdata with the above backup.
  • Or delete the homemenu and/or theme extdata.


D-Pad/C-Pad - Select a menu entry

A - Enter a menu

B - Return to the hbmenu

Known issues

Please refer to reported issues.


v1.1.1 2015/07/09

  • Updated for latest ctrulib+devkitARM.
  • Set the icon strings to proper values.
  • Replaced the 5-second-delay with a press-button-wait.

v1.1 2015/01/06

  • Custom theme persistence even without any theme DLC installed, and other minor fixes/changes.

v1.0 2014/12/31

  • Initial release. Extract this to the root of your SD for use with ninjhax.

External links