Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

3DS HomeMenu extdata Tool 3DS: Difference between revisions

From GameBrew
No edit summary
No edit summary
Line 26: Line 26:
==User guide==
==User guide==
===Before modifying===
===Before modifying===
Backing up [http://3dbrew.org/wiki/Extdata extdata] before modifying it at all is recommended:
Backing up [http://3dbrew.org/wiki/Extdata extdata] before modifying is recommended.


You can copy the data from <code>sdmc:/Nintendo 3DS/{ID0}/{ID1}/extdata/00000000/{extdataIDlow}/</code> to elsewhere, where extdataIDlow is the extdataIDs for home-menu extdata and theme extdata.
You can copy the data from <code>sdmc:/Nintendo 3DS/{ID0}/{ID1}/extdata/00000000/{extdataIDlow}/</code> to elsewhere, where extdataIDlow is the extdataIDs for home-menu extdata and theme extdata.
Line 32: Line 32:
===Theme-data===
===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.
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.
'''ThemeManage.bin''' - Copied from extdata to sdmc.  
* '''BodyCache.bin and body_LZ.bin''' - The former is 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.
** 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.  
'''BodyCache.bin and body_LZ.bin''' - The former is copied from extdata to sdmc.  
** When copying to extdata, the filesize must be smaller than or exactly 0x150000-bytes.
* When copying from sdmc to extdata, the app will first attempt to use BodyCache.bin, then body_LZ.bin.  
* '''BgmCache.bin and bgm.bcstm''' - Handled basically the same way as the body-data, except with the bgm sizes.  
* 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 0x337000-bytes.  
* When copying to extdata, the filesize must be smaller than or exactly 0x150000-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).
 
'''BgmCache.bin and 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===
===Main menu===
Line 50: Line 53:
* Copy theme-data from sd to extdata - Option to write a custom theme to extdata.
* Copy theme-data from sd to extdata - Option to write a custom theme to extdata.


==How to import custom theme===
===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.  
Place your edited body_LZ.bin from Theme Customisation Tools in sd:\3ds\3ds_homemenu_extdatatool or wherever your theme folder is.  



Revision as of 07:33, 7 July 2021

Template:Infobox 3DS homebrew

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

Latest release contains .3dsx and .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 and 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 and 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 - 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

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

v1.1 6 Jan 2015

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

v1.0 31 Dec 2014

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

External links

Advertising: