More actions
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.
Installation
Installing
Available as 3DSX/SMDH.
Compiling
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.
Theme-data
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.
- ThemeManage.bin:
- 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).
- 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 - Ooption to 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.
Controls
D-Pad/C-Pad - Select a menu entry
A - Enter a menu
B - Return to the hbmenu
Known issues
Please refer to reported issues.
Changelog
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.