Tutorial
Updated
Customize your System Settings app
(10th August 2018: If you are interested in doing this for the Switch you may contact Traiver.)
Some useful information:
The first version gbatemp version of this guide was written by Samplasion with information by derberg (Discord names); now derberg is maintaining changes.
(Click for our Documentation)
(Click forDiscord discussion)
It is somewhat similar to the Home Menu costumizing process described on dungeonfire.tk (if you want to help the customizing community you can also find a Discord link there).
Also a note by derberg: (removed now, cause confirmed in post #7)
Also note that there is still no full customization. You can only change visual parts of what is already there: You can hex edit positions of elements and change their look (after this tutorial you will be able to do something of this by using our linked docs) or replace images with tools like png2bclim or Kuriimu or change Text with e.g. the reloaded MSBT Editor or Kuriimu. But we still don't know how we can replace what elements do on a click and we can't add completly new things.
Actual start of the tutorial:
(after setting it up editing & testing a change may take less than a minute (if you use luma), cause you can restart at Macrostep 3 point 6 then)
DISCLAIMER: I am not responsible if your console bricks. You assume your responsibilities by following this guide.
This guide is about how to edit the System Settings (mset) app.
Thanks to https://gbatemp.net/threads/title-dumping-and-file-extraction-using-godmode9-1-0.465427/
Eix's New Years Waifu
the file is already decrypted in your output directory so copy the edited binary then find where that file begins in the decrypted file aslong as it isnt bigger or smaller than the unedited .bin file you can inject it decrypted .cxi files have 0 fragmentation so its byte to byte in the hex editor just grab the offset and inject the file there or if your feeling like you want to inject a bigger or smaller file you can do it line by line in ctrxplorer
then ofcourse reencrypt it
derberg
So if I get this right after injecting the edited base_LZ.bin back into the .cxi (and maybe reencrypting) do I have to select the modified .cxi then and choose "Build CIA from file"? Btw. the CIA would be much smaller then the original CIA of system settings cause system settings has two .app files.
Eix's New Years Waifu
yeah thats right to fix the cia size you can start out by building a decrypted cia from the tmd then following the normal steps
Eix's New Years Waifu-heute um 21:35 Uhr
cia files are normally never ment to be edited so the files are just listed inside 0 fragmentation
(Of course you just need one tool for decompression and one for compression. Just listed a few ones after someone had problems with DarcTool3DS, which is the fastest one of those. Also I have only looked wether the alternative tools change the size of base_LZ.bin to 158KB, so I don't know wether they decompress correctly. So at first try it with DarcTool3DS)
Edit the decompressed base_LZ.bin with an hex editor. (Click for our Documentation)
(make a backup before you compress if you want to edit more later, cause multiple compression & decompression of one file may not work)
Also feel free to recommend me any other method/tool (+example, please) which could replace the tools mentioned in this tutorial or which may be helpful for editing things (for real, yesterday I messed with so many (outdated) tools and I don't want to mess with any more without knowing that there is a high success chance with it...).
For historical reasons something which isn't handled in this guide, but I think Kuriimu helps there now. Also you can always ask us.
Did this back when HANS was completly new at the 3rd of November 2015 after smea wanted "[...] to see my avatar in there somewhere" (he meant in the system settings app) with braindump, BatchLZ77, png2clim (which had a renaming bug), I think with LITTOMA's version of darctool (it had a bug cause of it's recursive path "feature" - System settings app has multiple folders with the same names..) and HANS:
Some useful information:
The first version gbatemp version of this guide was written by Samplasion with information by derberg (Discord names); now derberg is maintaining changes.
(Click for our Documentation)
(Click for
It is somewhat similar to the Home Menu costumizing process described on dungeonfire.tk (if you want to help the customizing community you can also find a Discord link there).
Also a note by derberg: (removed now, cause confirmed in post #7)
Also note that there is still no full customization. You can only change visual parts of what is already there: You can hex edit positions of elements and change their look (after this tutorial you will be able to do something of this by using our linked docs) or replace images with tools like png2bclim or Kuriimu or change Text with e.g. the reloaded MSBT Editor or Kuriimu. But we still don't know how we can replace what elements do on a click and we can't add completly new things.
Actual start of the tutorial:
(after setting it up editing & testing a change may take less than a minute (if you use luma), cause you can restart at Macrostep 3 point 6 then)
DISCLAIMER: I am not responsible if your console bricks. You assume your responsibilities by following this guide.
This guide is about how to edit the System Settings (mset) app.
Requirements
- A 3ds with GodMode9
- The Low TID of the System Settings app corresponding to your region
- Asia81's HackingToolkit9DS (curently V11) (If you take Macrostep 1a you don't need it; or if you like it hard take the not fully documented 1b)
- A Hex editor (Samplasion recommends HxD; derberg uses
Hex-Editor MXHex Workshop; feel free to recommend us better ones) - DarcTool3DS 5.5 or DSDecmp(GUI version included in 3DSExplorer) or maybe nlzss (untested yet) or EveryFileExplorer (only for decompression, so you need a plugin for EFE or a second tool for compression)(I recommend DarcTool3DS, but please recommend us a better alternative for those tools; it works, but yeah.. Hope GodMode9 will implement LZ11 decompression and luma will implement LZ11 compression, cause this would save time..)
- A computer
- A functional brain (according to DeKay)
Macrostep 0: enabling Luma's Game Patching
- Boot your 3DS while holding Select to open Luma's Config Menu
- Enable "Enable game patching"
- Press Start to save
- Turn your 3DS off
Macrostep 1: dumping the System Settings app
- Boot your device and enter GodMode9 by holding Start
- Navigate to [1:] SYSNAND CTRNAND
- Navigate to title
- Navigate to 00040010
- Navigate to the folder corresponding to the System Settings app Low TID you took earlier
- Navigate to content
- Press (A) on the .tmd file → TMD file options... → Build CIA (standard)
- Turn your 3DS off and go to Macrostep 2 (or go to Macrostep 1a instead which is faster for Luma users!)
Exporting a binary directly from the CIA (example with base_LZ)
Thanks to https://gbatemp.net/threads/title-dumping-and-file-extraction-using-godmode9-1-0.465427/
- In GodMode9 navigate to [0:] SYSNAND CTRNAND
- Navigate to gm9out
- Press (A) on 00040010[LowTID] System Settings (CTRN-HASP) ([REGION]).cia → CIA image options... → Mount image to drive
- Go into 0000.000000[XX] (the folder which has much more content; for me XX is 3D, for you it may be something other..)
- Get into romfs
- Select a binary like base_LZ.bin and press (A) → Copy to 0:/gm9out
- Skip Macrostep 2 & 2a and go directly to Macrostep 3.
(WIP:) Decrypting an .app and exporting a binary from that (example with base_LZ)
- Press (A) on the smaller .app (XX is variable) named like 000000[XX] → NCCH image options... → Decrypt file (...) → Decrypt to (0:/gm9out)
- Go into (the folder which has much more content; for me XX is 3D, for you it may be something other..)
- In GodMode9 navigate to [0:] SYSNAND CTRNAND
- Navigate to gm9out
- Press (A) on 00040010[LowTID] .000000[XX] System Settings (CTR...([REGION]).cxi → NCCH image options... → Mount image to drive
- Get into romfs
- Select a binary like base_LZ.bin and press (A) → Copy to 0:/gm9out
Eix's New Years Waifu
the file is already decrypted in your output directory so copy the edited binary then find where that file begins in the decrypted file aslong as it isnt bigger or smaller than the unedited .bin file you can inject it decrypted .cxi files have 0 fragmentation so its byte to byte in the hex editor just grab the offset and inject the file there or if your feeling like you want to inject a bigger or smaller file you can do it line by line in ctrxplorer
then ofcourse reencrypt it
derberg
So if I get this right after injecting the edited base_LZ.bin back into the .cxi (and maybe reencrypting) do I have to select the modified .cxi then and choose "Build CIA from file"? Btw. the CIA would be much smaller then the original CIA of system settings cause system settings has two .app files.
Eix's New Years Waifu
yeah thats right to fix the cia size you can start out by building a decrypted cia from the tmd then following the normal steps
Eix's New Years Waifu-heute um 21:35 Uhr
cia files are normally never ment to be edited so the files are just listed inside 0 fragmentation
Macrostep 2: extracting the RomFS
- Insert the SD of the 3ds into your computer
- Extract HackingToolkit9DS.zip on your computer
- Navigate to gm9/out/
- Copy the 00040010[LowTID].cia file to the /PackEnglishV11/PackHack/ folder
- Rename the .cia with something short, like mset.cia
- Run the SetupUS.exe file
- Run the HackingToolkit9DS.exe file
- Type CE and press Enter
- Type the name you used in step 5 without extention (.cia)
- Wait some seconds and press a key
- Go to the ExtractedRomFS folder (if you don't have it, go to macrostep 2a)
Macrostep 2a: encrypting the .cia
- Boot your device and enter GodMode9 by holding Start
- Navigate to gm9
- Navigate to out
- Press (A) on the .cia file → CIA file options... → Encrypt CIA... → Encrypt Inplace
- Turn your 3DS off
- Insert the SD of the 3ds into your computer
- Run /PackEnglishV11/PackHack/CleanTool9.exe
- Copy the .cia file to the /PackEnglishV11/PackHack/ folder
- Repeat Macrostep 2 from step 7
Macrostep 3: editing base_LZ.bin (or any other binary from System Settings)
(Of course you just need one tool for decompression and one for compression. Just listed a few ones after someone had problems with DarcTool3DS, which is the fastest one of those. Also I have only looked wether the alternative tools change the size of base_LZ.bin to 158KB, so I don't know wether they decompress correctly. So at first try it with DarcTool3DS)
- Extract DarkTool3DS.zip on your computer
- Copy base_LZ.bin from SD:/gm9out/ (if you took Macrostep 1a) or from /PackEnglishV11/PackHack /ExtractedRomFS (if you did not took Macrostep 1a) into DarcTool3ds/DarcTool3ds/, next to the .bat file
- Run DarcTool3DS.bat
- Choose option 2 by pressing 2 on your numpad and then the Enter/Return key (it won't give you big feedback, so look wether file size changed; bigger)
- Close DarcTool3DS.bat
- Extract 3dsexplorer_v1.5.3.zip on your computer
- Run 3DSExplorer.exe
- Ignore the warning and click the Button that stands for "continue" in your language
- Click on "Tools" which you can find in the menu bar
- Click on "DSDecmp GUI"
- "Browse..." for base_LZ.bin
- "Decompress" with Algorithm: "LZ11" and choose a new file name ending .bin
- Extract EveryFileExplorer_lwyx2016_Nov-9-2017.rar on your computer
- Run EveryFileExplorer.exe
- Click on "Tools" which you can find in the menu bar
- Click on "Compression" → Common Compressors Plugin → LZ11 → Decompress...
- Open your base_LZ.bin
- Save your decompressed binary with the new file dialog which just opened itself
(make a backup before you compress if you want to edit more later, cause multiple compression & decompression of one file may not work)
- Run DarcTool3DS.bat
- Choose option 4 by pressing 4 on your numpad and then the Enter/Return key (it won't give you big feedback, so look wether file size changed; smaller)
- Close DarcTool3DS.bat
- Run 3DSExplorer.exe
- Ignore the warning and click the Button that stands for "continue" in your language
- Click on "Tools" which you can find in the menu bar
- Click on "DSDecmp GUI"
- "Browse..." for your edited binary
- "Compress" with Algorithm: "LZ11" and choose a new file name ending .bin
Macrostep 4: loading the custom .bin with Luma
- Navigate to SD:/luma
- Create a new folder called titles
- Create a new folder called 00040010[LowTID]
- Create a folder called romfs
- Copy the base_LZ.bin file to the newly created romfs folder
- DONE! Now you can show us your modifications. (I want New Year themed ones, please.)
Credits
- derberg on Discord at Custom 3DS Assets (formelery known as Home Menu Asset Discussion): writing a basic guide
- Samplasion: Improving the guide for GBATemp & writing a troubleshoot (macrostep 2a)
- Eix: For pointing out a way where luma isn't needed (see macrostep 1b)(but it's damn long)
- Alerdy, Traiver, Dungeonfire & DeKay: for their Home Menu stuff, which is somewhat similar and helped a lot
Also feel free to recommend me any other method/tool (+example, please) which could replace the tools mentioned in this tutorial or which may be helpful for editing things (for real, yesterday I messed with so many (outdated) tools and I don't want to mess with any more without knowing that there is a high success chance with it...).

For historical reasons something which isn't handled in this guide, but I think Kuriimu helps there now. Also you can always ask us.
Did this back when HANS was completly new at the 3rd of November 2015 after smea wanted "[...] to see my avatar in there somewhere" (he meant in the system settings app) with braindump, BatchLZ77, png2clim (which had a renaming bug), I think with LITTOMA's version of darctool (it had a bug cause of it's recursive path "feature" - System settings app has multiple folders with the same names..) and HANS:

Last edited by schrmh,