Hacking Custom Boot Logo for Switch

mikefor20

Well-Known Member
Member
Joined
Jan 12, 2009
Messages
1,924
Trophies
2
Location
Mushroom Kingdom ( o Y o )
XP
3,836
Country
United States
You tried backing up the old Atmosphere files and done a clean install?
Unnecessary .

which folder? Boots folder where all the custom boot logos are?
Its one of the files in sd:/atmosphere/contents ill go look for the number on it.
Post automatically merged:

Delete SD:/atmosphere/ contents/0100000001000/
 
  • Like
Reactions: impeeza and laz305

laz305

Well-Known Member
Member
Joined
Jul 31, 2008
Messages
879
Trophies
1
XP
1,688
Country
United States
You tried backing up the old Atmosphere files and done a clean install?
ok no choice. I deleted atmos and bootloader, config folders and did a fresh install. I was only able to get in from payloads loading fusee.bin file. in Launch cfw emu it is empty
Post automatically merged:

Unnecessary .


Its one of the files in sd:/atmosphere/contents ill go look for the number on it.
Post automatically merged:

Delete SD:/atmosphere/ contents/0100000001000/
Thanks man, well i saw this late so I deleted that folder from my backup. Safe to say I can now put my backup back onto my sdcard. I've already updated to 16.1 and put old hekate.ipl.ini so Launch now shows icons again.
 
Last edited by laz305,
  • Like
Reactions: SylverReZ

impeeza

¡Kabito!
Member
Joined
Apr 5, 2011
Messages
6,461
Trophies
3
Age
46
Location
At my chair.
XP
19,187
Country
Colombia
I just wanted to say I'm sorry for this horrendous boot logo that I made.
View attachment 387392
It's beautifull.
Post automatically merged:

Hi I'm on 14.0 with a custom boot logo and went to update to 16.1 but once I select cfw emu in hekate it boots to a black screen. how do I turn the custom boot logo off? or make it compatible with 16.1
Wait, stop for a minute.

if you are/was on 14.0 and updated to 16.1 you need to update also:
  • Atmosphère to 1.5.5.
  • Hekate, if you use it to 6.0.6.
  • Very important to remove themes if you have them, deleting the next folders from you SD Card (make a backup):
    • SD:/atmosphere/contents/0100000000001000
    • SD:/atmosphere/contents/0100000000001007
    • SD:/atmosphere/contents/0100000000001013
  • Update your Sigpatches and/or install SYS-Patch
If you are getting a black screen is probably you are using the wrong payload, may be on your injector or on the root of your SD card or the one you ModChip uses.

Its probably your boot logo folder do not have the IPS file for the new firmware, you will need to generate the IPS file for that FW and copy to the folder where you put your BootLogo files normally is:

SD:/atmosphere/exefs_patches/Boot_Logo/
 
Last edited by impeeza,

laz305

Well-Known Member
Member
Joined
Jul 31, 2008
Messages
879
Trophies
1
XP
1,688
Country
United States
Did you update your hekate_ipl.ini?
Yes thanks I put my backup of it back after updating everything. The Launch in Hekate now has all the icons back so I can boot into CFW. Now what’s best way to update OFW cuz I’m still on 13.2 there
 

mikefor20

Well-Known Member
Member
Joined
Jan 12, 2009
Messages
1,924
Trophies
2
Location
Mushroom Kingdom ( o Y o )
XP
3,836
Country
United States
Yes. Kinda.
SysNAND = your internal NAND. It's the actual physical NAND.

EmuNAND = a copy of your SysNAND on your SD. While using the EmuNAND the internal SydNAND chip is deactivated and all instructions are rerouted to the SD. Your SysNAND is not used at all when running EmuNAND.

What happens in EmuNAND stays in EmuNAND

While running SysNAND or EmuNAND in atmosphere the system runs atmosphere and not horizon (the official Os)

Stock means SysNAND with Horizon. No CFW, no hacks at all. Stock. Like an unhacked Switch. You cant run homebrew on stock. It's unhacked.

MMC and NAND is the same for all intents and purposes

What are you trying to update? Your SysNAND or EmuNAND?
Post automatically merged:

The stock firmware. You know when I turn it on normally without using CFW. Is that called sysnand?
Boot into SysNAND. Use Daybreak
 
  • Like
Reactions: laz305

laz305

Well-Known Member
Member
Joined
Jul 31, 2008
Messages
879
Trophies
1
XP
1,688
Country
United States
Yes. Kinda.
SysNAND = your internal NAND. It's the actual physical NAND.

EmuNAND = a copy of your SysNAND on your SD. While using the EmuNAND the internal SydNAND chip is deactivated and all instructions are rerouted to the SD. Your SysNAND is not used at all when running EmuNAND.

What happens in EmuNAND stays in EmuNAND

While running SysNAND or EmuNAND in atmosphere the system runs atmosphere and not horizon (the official Os)

Stock means SysNAND with Horizon. No CFW, no hacks at all. Stock. Like an unhacked Switch

MMC and NAND is the same for all intents and purposes

What are you trying to update? Your SysNAND or EmuNAND?
Post automatically merged:


Boot into SysNAND. Use Daybreak
Thanks for that info. I already updated my emuNAND so I want to do sysnand next then.
 

mikefor20

Well-Known Member
Member
Joined
Jan 12, 2009
Messages
1,924
Trophies
2
Location
Mushroom Kingdom ( o Y o )
XP
3,836
Country
United States
Thanks for that info. I already updated my emuNAND so I want to do sysnand next then.
Yes if you want. You dont need to unless you use the SysNAND. You can stay in EmuNAND forever. I had my SysNAND on 4.0 for years so I could use fake news. No reason to run SysNAND really unless it's clean and you use it to go online. I wouldn't update it.

Pm me. There's a thousand threads on this and this thread isn't one of them. I'll help in private to avoid clogging this thread.
Post automatically merged:

In general, you never update SysNAND unless you use it online. All CFW stuff should be done in EmuNAND
 
Last edited by mikefor20,
  • Like
Reactions: laz305

impeeza

¡Kabito!
Member
Joined
Apr 5, 2011
Messages
6,461
Trophies
3
Age
46
Location
At my chair.
XP
19,187
Country
Colombia
Yes thanks I put my backup of it back after updating everything. The Launch in Hekate now has all the icons back so I can boot into CFW. Now what’s best way to update OFW cuz I’m still on 13.2 there
you need to:

It's beautifull.
Post automatically merged:


Wait, stop for a minute.

if you are/was on 14.0 and updated to 16.1 you need to update also:
  • Atmosphère to 1.5.5.
  • Hekate, if you use it to 6.0.6.
  • Very important to remove themes if you have them, deleting the next folders from you SD Card (make a backup):
    • SD:/atmosphere/contents/0100000000001000
    • SD:/atmosphere/contents/0100000000001007
    • SD:/atmosphere/contents/0100000000001013
  • Update your Sigpatches and/or install SYS-Patch
If you are getting a black screen is probably you are using the wrong payload, may be on your injector or on the root of your SD card or the one you ModChip uses.

Its probably your boot logo folder do not have the IPS file for the new firmware, you will need to generate the IPS file for that FW and copy to the folder where you put your BootLogo files normally is:

SD:/atmosphere/exefs_patches/Boot_Logo/

and then you use daybreak to upgrade the firmware, daybreak is a homebrew, and the firmware files you can look for them on a good search engine.
 
  • Like
Reactions: laz305

laz305

Well-Known Member
Member
Joined
Jul 31, 2008
Messages
879
Trophies
1
XP
1,688
Country
United States
ok I am all updated and to anyone that wants an exclusive boot logo here you go

Logo1.png
 
  • Love
Reactions: impeeza

Flasheure

Active Member
Newcomer
Joined
Dec 19, 2020
Messages
31
Trophies
0
Age
65
XP
138
Country
France
hi
To change the Boot logo
my gen_patches.py logo Flasheure.png command does not work.
I am in 16.1.0 - AMS 1.5.5 + HEKATE 6.0.6
I’m on Python 3.12

Thx
 

Attachments

  • error.jpg
    error.jpg
    72.8 KB · Views: 17

chronoss

Well-Known Member
OP
Member
Joined
May 26, 2015
Messages
3,010
Trophies
1
XP
4,914
Country
Congo, Republic of the
hi
To change the Boot logo
my gen_patches.py logo Flasheure.png command does not work.
I am in 16.1.0 - AMS 1.5.5 + HEKATE 6.0.6
I’m on Python 3.12

Thx

Code:
#!/usr/bin/env python3

import io
import ips
import argparse
from pathlib import Path
from PIL import Image

# Build Id: offset
patch_info = {
    # AM patches
    "C79F22F18169FCD3B3698A881394F6240385CDB1": 1668164,
    "01890C643E9D6E17B2CDA77A9749ECB9A4F676D6": 1962240,
    "C088ADC91417EBAE6ADBDF3E47946858CAFE1A82": 1962240,
    "3EC573CB22744A993DFE281701E9CBFE66C03ABD": 1716480,

    # Vi patches
    "7B4123290DE2A6F52DE4AB72BEA1A83D11214C71": 1831168,
    "723DF02F6955D903DF7134105A16D48F06012DB1": 1835264,
    "967F4C3DFC7B165E4F7981373EC1798ACA234A45": 1573120,
    "98446A07BC664573F1578F3745C928D05AB73349": 1589504,
    "0767302E1881700608344A3859BC57013150A375": 1593600,
    "7C5894688EDA24907BC9CE7013630F365B366E4A": 1593600,
    "7421EC6021AC73DD60A635BC2B3AD6FCAE2A6481": 1536256,
    "96529C3226BEE906EE651754C33FE3E24ECAE832": 1544448,
    "D689E9FAE7CAA4EC30B0CD9B419779F73ED3F88B": 1655040,
    "65A23B52FCF971400CAA4198656D73867D7F1F1D": 1655040,
    "B295D3A8F8ACF88CB0C5CE7C0488CC5511B9C389": 1696000,
    "82EE58BEAB54C1A9D4B3D9ED414E84E31502FAC6": 1708288,
    "AFEAACF3E88AB539574689D1458060657E81E088": 1716480,
    "7E9BB552AAEFF82363D1E8C97B5C6B95E3989E1A": 1704192,
    "BA15B407573B8CECF0FAE2B367D3103A2A1E821C": 2191616,
    "34D15383767E313EE76F1EE991CD00AD2BF8C62A": 2023680,
}

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("patches_dir", help="The directory where the generated patches will be dumped", type=Path)
    parser.add_argument("new_logo", help="The new logo image", type=Path)
    parser.add_argument("-o", "--old_logo", help="The original logo image", type=Path, default=None)
    args = parser.parse_args()

    if args.old_logo is None:
        new_logo = Image.open(args.new_logo).convert("RGBA")
        if new_logo.size != (308, 350):
            raise ValueError("Invalid size for the logo")

        new_f = io.BytesIO(new_logo.tobytes())
        new_f.seek(0, 2)
        new_len = new_f.tell()
        new_f.seek(0)

        base_patch = ips.Patch()
        while new_f.tell() < new_len:
            base_patch.add_record(new_f.tell(), new_f.read(0xFFFF))
    else:
        old_logo = Image.open(args.old_logo).convert("RGBA")
        new_logo = Image.open(args.new_logo).convert("RGBA")
        if old_logo.size != (308, 350) or new_logo.size != (308, 350):
            raise ValueError("Invalid size for the logo")

        base_patch = ips.Patch.create(old_logo.tobytes(), new_logo.tobytes())

    if not args.patches_dir.exists():
        args.patches_dir.mkdir(parents=True)

    for build_id, offset in patch_info.items():
        tmp_p = ips.Patch()

        for r in base_patch.records:
            tmp_p.add_record(r.offset + offset, r.content, r.rle_size)

        with Path(args.patches_dir, f"{build_id}.ips").open("wb") as f:
            f.write(bytes(tmp_p))
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    SylverReZ @ SylverReZ: https://www.youtube.com/watch?v=sGClRsx0x64