ROM Hack [Tutorial] Updated Guide to Editing the Home Menu

TheCyberQuake

Certified Geek
OP
Member
Joined
Dec 2, 2014
Messages
5,012
Trophies
1
Age
28
Location
Las Vegas, Nevada
XP
4,432
Country
United States
You may ask, "Don't we already have a guide to editing the home menu"
Yes we do, but it's severely outdated at this point and there are much better methods and software to do this.
I created this guide to use those updated methods, as well as include better batch scripts that prevent problems that occured on the previous guide (ie hardcoding the SystemApp)
It also avoids using 3DNUS so we don't have to constantly know what the current version of Home Menu is. We just pull the cia straight from the 3ds instead using automated gm9 scripts
Finally, instead of installing the cia with something like FBI, we instead just replace the .app of home menu.

MenuDump is a pack developed by @SkyQueen, and now includes my latest work to make what is currently the best and easiest solution for home menu modification (at least that I know of)
As of such, this guide now uses the MenuDump pack!

Prerequisites:

- 3DS with B9S installed and latest Godmode9

1) Download and extract the MenuDump pack: https://github.com/Arch9SK7/MenuDump/releases

2) Copy Mod_HomeMenu.gm9 form the zip onto your 3ds SD card in the gm9/scripts folder

3) Place your SD back into your 3ds, and boot into godmode9

4) Once godemode9 boots, press the home button, go to scripts, and run Mod_HomeMenu

5) When prompted, select "Grab CIA"

6) godmode9 will work it's magic, and create HomeMenu.cia in gm9/out on your SD

7)
power off your 3ds, and insert your SD into your computer (or boot into SD management or FTP homebrew)

8) Copy the HomeMenu.cia from your SD card (gm9/out) to the HomeMenuEdition folder inside the pack you extracted from the zip earlier

9) Open the HomeMenuEdition in the pack, run Home Menu Tool.bat, and use option 7 to extract the CIA and decompress all of the files.

10) Once it completes, you should see a message saying to do your edits

Now you do your edits.

For sleep_LZ color edits (the power off screen) you can simply use the SleepLZColorEditor Tool found within the MenuDump pack.
You can set your own colors, or use either one of the two provided example color theme files or another color theme file you find online

For text edits, You can use MSBT Editor, which is also included in the MenuDump pack.
The file you'll want to open is menu_msbt.LZ, found in the ExtractedRomFS/message/(your language) folder.
for the sleep menu (the power off screen we color edit above) You'll want to edit the lau_press_pow* strings

With all your edits complete, it's time to put everything back together and install!

11) Go back to your home menu tool prompt that is still running, and press any key to continue

12) The files will get recompressed, and rebuilt back into a CIA, and then automatically copied to your 3ds SD card if it's still in the computer

13) If it doesn't automatically copy, then manually copy the HomeMenu_edited.cia into the gm9/out folder on your SD card.

14) Boot into Godmode9. Press the home button, then select scripts, and run Mod_HomeMenu

15) When prompted, select "Install", and then select the home menu cia you wish to install. It will ask if you want to create a sysNAND backup first. I recommend doing this the first time you run the script.

16) Once the script completes, you can reboot

17) Done!

If your console successfully boots, then congrats! You now have a custom home menu!

If you console doesn't boot, then don't worry! I've designed this process to be as safe as possible, and we have a contingency plan for this! Continue on to step 18 to remove your edit!

Restoing home menu:
18)
Boot into godmode9, press home button, select scripts, and run Mod_HomeMenu. Select Restore when prompted

That's it! Now your home menu should be back to it's original version (or whatever version it was when you first ran the install_homemenu script).
You can also use this step to remove your edits at any point if you want to.

FAQ:
Q:
Can I...
A: I probably don't know. I only really know about sleep_LZ.bin editing and modifying some text

Updates:
1.0.1:
Accidentally forgot a "/" in the EUR home menu location for the gm9 scripts. which would cause them to completely not work on EUR consoles. Whoops! Fixed that up.
1.2.0:
Condense scripts to one single script, automatically detect console region
1.2.1:
Backup home menu to both SD and NAND, to prevent accidental deletion from SD
Now uses a pack that uses works by both @SkyQueen and I to greatly simplify the home menu modding process!
 
Last edited by TheCyberQuake,

bungboi

Well-Known Member
Member
Joined
Oct 31, 2017
Messages
100
Trophies
0
Age
29
XP
349
Country
United States
Side note: If you get an error in Part2.bat saying you don't have the common key, then you are going to have to encrypt your edited CIA with Decrypt9 before installing.
 

TheCyberQuake

Certified Geek
OP
Member
Joined
Dec 2, 2014
Messages
5,012
Trophies
1
Age
28
Location
Las Vegas, Nevada
XP
4,432
Country
United States
I've got a secret project in the works that will help with part of home menu modification (like the acutal customization part I haven't really gone over yet). Hoping to have a beta version to release by the end of the week, but no guarantees. It will also be more of a PoC, and hopefully another better dev can recreate the idea in a better language.
For now I've got most of the main parts of it done, it's mostly just copy/paste to add every part that needs to be edited.
 

TheCyberQuake

Certified Geek
OP
Member
Joined
Dec 2, 2014
Messages
5,012
Trophies
1
Age
28
Location
Las Vegas, Nevada
XP
4,432
Country
United States
Ended blasting thorugh the code and can release a beta of sleep_LZ Color Editor today!
AASNr33.png

6G9BlJl.jpg
https://github.com/TheCyberQuake/SleepLZColorEditor/releases
 
Last edited by TheCyberQuake,

YoshiOG1

Well-Known Member
Newcomer
Joined
Apr 15, 2016
Messages
52
Trophies
0
Age
28
XP
302
Country
United States
Ended blasting thorugh the code and can release a beta of sleep_LZ Color Editor today!
AASNr33.png

6G9BlJl.jpg
https://mega.nz/#!hEUk1CRQ!nY6t0DmcNwsOc0wXoXCLa6KI9OcMKiiptXOF6KXqDgs

I get an error when trying to open the sleep_LZ.bin file I dumped using GM9:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.Exception: #FFFFFFFFFFFFFFFFFFFFFFFF is not a valid value for Int32. ---> System.OverflowException: Value was either too large or too small for a UInt32.
at System.ParseNumbers.StringToInt(String s, Int32 radix, Int32 flags, Int32* currPos)
at System.Convert.ToInt32(String value, Int32 fromBase)
at System.ComponentModel.Int32Converter.FromString(String value, Int32 radix)
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
--- End of inner exception stack trace ---
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at System.Drawing.ColorConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at System.Drawing.ColorTranslator.FromHtml(String htmlColor)
at HexEdit.Form1.StrToClr(String theColor)
at HexEdit.Form1.Button2_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2633.0 built by: NET471REL1LAST_C
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
sleep_LZ Color Editor
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///D:/GitHub/sleep_LZ%20Color%20Editor.exe
----------------------------------------
Microsoft.VisualBasic
Assembly Version: 10.0.0.0
Win32 Version: 14.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2633.0 built by: NET471REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2612.0 built by: NET471REL1LAST_B
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Runtime.Remoting
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

P.S.: I have a method of using Luma's LayeredFS with system titles such as the Home Menu, but it requires enabling "loading external FIRMS and modules" from Luma's config menu.
 

TheCyberQuake

Certified Geek
OP
Member
Joined
Dec 2, 2014
Messages
5,012
Trophies
1
Age
28
Location
Las Vegas, Nevada
XP
4,432
Country
United States
I get an error when trying to open the sleep_LZ.bin file I dumped using GM9:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.Exception: #FFFFFFFFFFFFFFFFFFFFFFFF is not a valid value for Int32. ---> System.OverflowException: Value was either too large or too small for a UInt32.
at System.ParseNumbers.StringToInt(String s, Int32 radix, Int32 flags, Int32* currPos)
at System.Convert.ToInt32(String value, Int32 fromBase)
at System.ComponentModel.Int32Converter.FromString(String value, Int32 radix)
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
--- End of inner exception stack trace ---
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at System.Drawing.ColorConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at System.Drawing.ColorTranslator.FromHtml(String htmlColor)
at HexEdit.Form1.StrToClr(String theColor)
at HexEdit.Form1.Button2_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2633.0 built by: NET471REL1LAST_C
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
sleep_LZ Color Editor
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///D:/GitHub/sleep_LZ%20Color%20Editor.exe
----------------------------------------
Microsoft.VisualBasic
Assembly Version: 10.0.0.0
Win32 Version: 14.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2633.0 built by: NET471REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2612.0 built by: NET471REL1LAST_B
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Runtime.Remoting
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

P.S.: I have a method of using Luma's LayeredFS with system titles such as the Home Menu, but it requires enabling "loading external FIRMS and modules" from Luma's config menu.
You need to lz11 decompress the file with Msby editor reloaded
 
  • Like
Reactions: YoshiOG1

TheCyberQuake

Certified Geek
OP
Member
Joined
Dec 2, 2014
Messages
5,012
Trophies
1
Age
28
Location
Las Vegas, Nevada
XP
4,432
Country
United States
I get an error when trying to open the sleep_LZ.bin file I dumped using GM9:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.Exception: #FFFFFFFFFFFFFFFFFFFFFFFF is not a valid value for Int32. ---> System.OverflowException: Value was either too large or too small for a UInt32.
at System.ParseNumbers.StringToInt(String s, Int32 radix, Int32 flags, Int32* currPos)
at System.Convert.ToInt32(String value, Int32 fromBase)
at System.ComponentModel.Int32Converter.FromString(String value, Int32 radix)
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
--- End of inner exception stack trace ---
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at System.Drawing.ColorConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at System.Drawing.ColorTranslator.FromHtml(String htmlColor)
at HexEdit.Form1.StrToClr(String theColor)
at HexEdit.Form1.Button2_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2633.0 built by: NET471REL1LAST_C
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
sleep_LZ Color Editor
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///D:/GitHub/sleep_LZ%20Color%20Editor.exe
----------------------------------------
Microsoft.VisualBasic
Assembly Version: 10.0.0.0
Win32 Version: 14.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2633.0 built by: NET471REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2612.0 built by: NET471REL1LAST_B
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Runtime.Remoting
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

P.S.: I have a method of using Luma's LayeredFS with system titles such as the Home Menu, but it requires enabling "loading external FIRMS and modules" from Luma's config menu.
Use this github to download the latest version
https://github.com/TheCyberQuake/SleepLZColorEditor/releases
Lots of changes were made, so I would see if the problem persists on the latest version. I'll also be introducing some changes to handle using a compressed sleep_LZ.bin and throw an error rather than just crashing.
 

OblivionReign

Developer
Developer
Joined
Apr 23, 2016
Messages
2,542
Trophies
2
XP
7,715
Country
Japan
I get an error when trying to open the sleep_LZ.bin file I dumped using GM9:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.Exception: #FFFFFFFFFFFFFFFFFFFFFFFF is not a valid value for Int32. ---> System.OverflowException: Value was either too large or too small for a UInt32.
at System.ParseNumbers.StringToInt(String s, Int32 radix, Int32 flags, Int32* currPos)
at System.Convert.ToInt32(String value, Int32 fromBase)
at System.ComponentModel.Int32Converter.FromString(String value, Int32 radix)
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
--- End of inner exception stack trace ---
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at System.Drawing.ColorConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at System.Drawing.ColorTranslator.FromHtml(String htmlColor)
at HexEdit.Form1.StrToClr(String theColor)
at HexEdit.Form1.Button2_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2633.0 built by: NET471REL1LAST_C
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
sleep_LZ Color Editor
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///D:/GitHub/sleep_LZ%20Color%20Editor.exe
----------------------------------------
Microsoft.VisualBasic
Assembly Version: 10.0.0.0
Win32 Version: 14.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2633.0 built by: NET471REL1LAST_C
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2612.0 built by: NET471REL1LAST_B
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Runtime.Remoting
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2556.0 built by: NET471REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

P.S.: I have a method of using Luma's LayeredFS with system titles such as the Home Menu, but it requires enabling "loading external FIRMS and modules" from Luma's config menu.

Here i have a mini batch program from some months ago i set up to do this and it auto extracts the cia and decompresses and recompresses all the LZ files and rebuilds the cia for you with the option you pick its quick :)

To use the decompressed sleep.LZ file it leaves you with just rename the entire thing (extension included) to sleep_LZ.bin.bin to use with Quakes Colour editor. otherwise as soon as you have used my program to decompress all this just drag it the menu file into MSBT editor and edit away.

just rename the sleep_LZ.bin.bin back to sleep.LZ before compressing again or it will fail :D https://github.com/Arch9SK7/MenuDump/releases/tag/v3.0.0

--------------------- MERGED ---------------------------

You may ask, "Don't we already have a guide to editing the home menu"
Yes we do, but it's severely outdated at this point and there are much better methods and software to do this.
I created this guide to use those updated methods, as well as include better batch scripts that prevent problems that occured on the previous guide (ie hardcoding the SystemApp)
It also avoids using 3DNUS so we don't have to constantly know what the current version of Home Menu is. We just pull the cia straight from the 3ds instead using automated gm9 scripts
Finally, instead of installing the cia with something like FBI, we instead just replace the .app of home menu.


Prerequisites:

- 3DS with B9S installed and latest Godmode9
- MSBT Editor Reloaded: https://github.com/IcySon55/3DLandMSBTeditor/releases
- HxD or other hex editor

1) Download and extract this pack: https://mega.nz/#!ZVtX3aZb!UELlMSXGxEf7ECbn1HoqFV9lv2dndP8mjmiRsIPrHmw

2) Copy Mod_HomeMenu.gm9 form the zip onto your 3ds SD card in the gm9/scripts folder

3) Place your SD back into your 3ds, and boot into godmode9

4) Once godemode9 boots, press the home button, go to scripts, and run Mod_HomeMenu

5) When prompted, select "Grab CIA"

6) godmode9 will work it's magic, and create HomeMenu.cia in gm9/out on your SD

7)
power off your 3ds, and insert your SD into your computer (or boot into SD management or FTP homebrew)

8) Copy the HomeMenu.cia from your SD card (gm9/out) to the homemenuedition folder you extracted from the zip earlier

9) Run Part1.bat to start unpacking the home menu files

10) Once it completes, you should now have a bunch of decrypted files extracted from the CIA

Now you do your edits.
I won't go over exactly what to do (at least for now).
Almost every file is LZ11 compressed, so any file you want to modify (mostly sleep_LZ.bin right now) will need to be decompressed. Open MSBT Editor Reloaded, and use Tools>LZ11>decompress to decompress what file you want to work on.
The decompressed file will be the .bin.bin (ie sleep_LZ.bin becomes sleep_LZ.bin.bin).
Open your decompressed file in either a hex editor (for color edits) or MSBT Editor Reloaded (for text edits)
More details to come about what files to edit to do different things.
Once your edits are done, you need to compress the images. Use Tools>LZ11>compress, and select your .bin.bin file (sleep_LZ.bin.bin for example). Once that is done. Go to where the file is located.
Delete the .bin and the .bin.bin of your file, and then rename the .bin.bin.lz to .bin (delete sleep_LZ.bin and sleep_LZ.bin.bin, rename sleep_LZ.bin.bin.lz to sleep_LZ.bin)

With all your edits complete, it's time to put everything back together and install!

11) Run Part2.bat. It will repack everything into a CIA, which will have the same name as your previous CIA but with "Edited_" on the front, ie HomeMenu.cia becomes Edited_HomeMenu.cia

12) You can go ahead and rename your edited CIA to anything you want (example GreenHomeMenu.cia) to better keep track of multiple versions

13) Copy your edited cia back onto your SD card in the gm9/out folder, and place your SD back into the 3ds

14) Boot into Godmode9. Press the home button, then select scripts, and run Mod_HomeMenu

15) When prompted, select "Install", and then select the home menu cia you wish to install. It will ask if you want to create a sysNAND backup first. I recommend doing this the first time you run the script.

16) Once the script completes, you can reboot

17) Done!

If your console successfully boots, then congrats! You now have a custom home menu!

If you console doesn't boot, then don't worry! I've designed this process to be as safe as possible, and we have a contingency plan for this! Continue on to step 18 to remove your edit!

Restoing home menu:
18)
Boot into godmode9, press home button, select scripts, and run Mod_HomeMenu. Select Restore when prompted

That's it! Now your home menu should be back to it's original version (or whatever version it was when you first ran the install_homemenu script).
You can also use this step to remove your edits at any point if you want to.

FAQ:
Q:
Can I...
A: I probably don't know. I only really know about sleep_LZ.bin editing and modifying some text

Other Notes:
Part1.bat is designed to accept drag and drop cia files, and will relay what you dropped onto Part2.bat. Meaning you can use the Clean.bat to clean the previous work, and then take something like GreenHomeMenu.cia and drag it onto Part1.bat to remodify and change something. Part2.bat will then repack everything as Edited_GreenHomeMenu.cia. I designed it this way to be much more convenient to modify previous edits or keep track of multiple versions of edits.

Updates:
1.0.1:
Accidentally forgot a "/" in the EUR home menu location for the gm9 scripts. which would cause them to completely not work on EUR consoles. Whoops! Fixed that up.
1.2.0:
Condense scripts to one single script, automatically detect console region

Also Quake i appreciate you totally crediting me for using my HomeMenuEdition folder of tools you used here but it's fine. Anyways your Script throws up an error here on my New 2DS XL USA region Firm 11.6 Arch3DS CFW ( i tried other customs on the ds and it didnt resolve)

When i run the Mod_HomeMenu.gm9 script from its obvious placement it throws up
0:/gm9/scripts/Mod_HomeMenu.gm9
line 6: too many arguments
if chk $[REGION] "USA"

Just thought i would let ya know.
 

TheCyberQuake

Certified Geek
OP
Member
Joined
Dec 2, 2014
Messages
5,012
Trophies
1
Age
28
Location
Las Vegas, Nevada
XP
4,432
Country
United States
Here i have a mini batch program from some months ago i set up to do this and it auto extracts the cia and decompresses and recompresses all the LZ files and rebuilds the cia for you with the option you pick its quick :)

To use the decompressed sleep.LZ file it leaves you with just rename the entire thing (extension included) to sleep_LZ.bin.bin to use with Quakes Colour editor. otherwise as soon as you have used my program to decompress all this just drag it the menu file into MSBT editor and edit away.

just rename the sleep_LZ.bin.bin back to sleep.LZ before compressing again or it will fail :D https://github.com/Arch9SK7/MenuDump/releases/tag/v3.0.0

--------------------- MERGED ---------------------------



Also Quake i appreciate you totally crediting me for using my HomeMenuEdition folder of tools you used here but it's fine. Anyways your Script throws up an error here on my New 2DS XL USA region Firm 11.6 Arch3DS CFW ( i tried other customs on the ds and it didnt resolve)

When i run the Mod_HomeMenu.gm9 script from its obvious placement it throws up
0:/gm9/scripts/Mod_HomeMenu.gm9
line 6: too many arguments
if chk $[REGION] "USA"

Just thought i would let ya know.
Firstly, I used the homemenuedition folder linked by Asia81, who didn't seem to have credited anyone so I didn't know who to credit.
And secondly, is your godmode9 updated?
 

OblivionReign

Developer
Developer
Joined
Apr 23, 2016
Messages
2,542
Trophies
2
XP
7,715
Country
Japan
Firstly, I used the homemenuedition folder linked by Asia81, who didn't seem to have credited anyone so I didn't know who to credit.
And secondly, is your godmode9 updated?
Not sure. Let me check.

--------------------- MERGED ---------------------------

Firstly, I used the homemenuedition folder linked by Asia81, who didn't seem to have credited anyone so I didn't know who to credit.
And secondly, is your godmode9 updated?
Nope so ill give it a check. Forgot that Dok3 still works on it.
 

Cralex

Well-Known Member
Member
Joined
Jul 29, 2016
Messages
206
Trophies
0
Age
37
XP
1,296
Country
United States
Ok, so I messed up and now my N2DSXL won’t boot. (Kernel Panic) It’s completely my fault and, for reasons that I will explain shortly, I’m not expecting a perfect recovery. But I’m hoping someone can point me in the right direction to get me up and running with minimal loss.

I used this guide and the MenuMod tools to successfully modify my home menu while on the previous system version. In preparation to update to the new system and stop the nags, I wanted to go back to the stock home menu. I used the script (whichever version I had from when I first used it) to try the “restore” option. However, I still had the customized home menu when I booted out of GM9.

Here’s where I got stupid. I recalled being able to encrypt a home menu CIA and install it using FBI as part of an older guide. I found my unedited home menu in GM9 out and encrypted it. I tried installing it with FBI, but it gave an error about it already existing. Figuring that this hadn’t caused any harm, I decided to make a new NAND backup and see what would happen if I let it update itself with the edited home menu. So I went straight back into GM9, erased my KNOWN GOOD backups, made a new NAND backup, and rebooted. To my horror, the screen stayed dark. Attempting a hard shutdown resulted in the kernel panic error message. Apparently, trying to install the home menu with FBI bricked my system, and I was stupid enough to have my one remaining backup be AFTER doing this. I tried using the script to reinstall the edited home menu, but it didn’t work. I’m stuck.

Now, it just so happens that this bricked system (N2DSXL) was originally system-transferred from another system (N3DSXL). Following the transfer, the tickets for my injected games and such didn’t transfer over and I was having trouble installing the tickets on my N2DSXL manually. To remedy this, I performed a CTR-NAND transfer from N3DSXL to N2DSXL. I still have my N3DSXL, and it still has the same movable file. I could just perform another CTR-NAND transfer to fix my N2DSXL, but the two have different titles installed now and I’m worried about what it’ll take to get all my previously installed titles working... Or am I overthinking this?

I know I have options, I just want the least nuclear option possible as far as my installed titles and my saved data is concerned. I know for sure that my system was on the previous version when I broke it, if this helps. AllI know is that I’m out of my league here. Thanks for reading.

Edit: I was tired and frazzled when this all happened. I got things going again by backing up my tickets, performing a CTR-NAND transfer, and then restoring the tickets. The only thing I’m not understanding is why I couldn’t restore my stock home menu to begin with.
 
Last edited by Cralex,

schrmh

Well-Known Member
Newcomer
Joined
Jun 5, 2015
Messages
55
Trophies
0
XP
568
Country
Gambia, The
Ok basically the script just saves some time but dungeonfire's tutorial and the documention on Google Docs goes more deep.
The color editor is fine but I would rather see some editor that would display how it would look on the system. Also I think it's possible to move elements and the color editor just doesn't take care of that.
 
Last edited by schrmh,
  • Like
Reactions: rassular

Lakstava

New Member
Newbie
Joined
Sep 13, 2018
Messages
3
Trophies
0
Age
24
Location
Here
XP
57
Country
United States
I installed the cia, and when it boots it says, "An exception occurred"
I tried your method of removal, however, "originalhomemenu.app not found!" is all it says. I did not remove or delete this file. Is there any way to generate/create/download this file? Or was is specific to this device? In that case, what would be my best method of solution?
 

Lakstava

New Member
Newbie
Joined
Sep 13, 2018
Messages
3
Trophies
0
Age
24
Location
Here
XP
57
Country
United States
I installed the cia, and when it boots it says, "An exception occurred"
I tried your method of removal, however, "originalhomemenu.app not found!" is all it says. I did not remove or delete this file. Is there any way to generate/create/download this file? Or was is specific to this device? In that case, what would be my best method of solution?
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: https://www.youtube.com/watch?v=qyBmc3-J5AM