Tutorial  Updated

How to change your R4's icon and label

!!!!!ONLY WORKS WITH DS/DSLITE AND MODDED DSI/3DS!!!!!
!!!!!WILL CRASH ON UNMODDED 3DS/DSI!!!!!

(In the middle of re-writing the guide to make it slightly more comprehensible)
(Edited and hopefully improved some parts of the guide in the year of our lord, 2024. Apologies for any fluctuations in writing quality.)

I never liked the fact that my R4 has some random game’s icon. I’ve been searching for a way to change it, but all I could find was posts from the past 15 years asking the same thing, only to be told it’s impossible.

I’m here to change that.

You need:
-an R4 card (obviously)
-a homebrewed 3DS (or 2DS, 3DS XL, New 3DS, New 3DS XL, New 2DS XL, Newer 4DS XXL, etc)
-NTRboot Flasher
-a PC/Laptop (All the programs here are on Windows, some also have a Mac or Linux version, but I don’t guarantee that those that don’t will work with Wine.)
-a DS or DS Lite (if you use an R4 with a DSi or a 3DS, what’s wrong with you? Just use TWLmenu like a normal person.)
-a Hex editor (I use HxD)
-NSMBEditor (from New Super Mario Bros. Hacking Domain)
-Any image editor, I prefer Aseprite.
-A way to transfer data between your PC and 2/3DS (SD card adapter or FTPD)
-GameHeader (from Romhacking dot net)
-A ROM of the game from your R4’s icon (mine is the Korean version of Bomberman Land Touch!) (I’m not telling you where to get it. I mean, I wish I could, but the rules don’t allow me to.)

If you want to test the icon in an emulator:
-DeSmuME or MelonDS
-A dump of the DS BIOS

First things first, BACK UP YOUR CARD.

Open NTRboot Flasher (Shut down your 3DS, hold Start while turning it back on, select NTRboot Flasher then press A to continue).
R7xen9DZWVWWqPl9Wm4AtUtJYlGygNJQ0VgrJkbWaQ9w031RH9Lo1yZM_FaW-DO1OR4_PUTGw7v5qfqYLn7KHmUCJmLktfGmXyjqYlmBx-mnKt-6O9mojEk_gxNoAejhLOH2WNtN9hE1LcNHNf0_yw

Write down (or just remember) the site written on your card’s sticker.
Insert the card into the console.
(WATCH OUT) Select your card from the list (Don’t look at the name on the list. Look at the site on the bottom screen. Mine is an R4 SDHC Dual-Core but I have to select “R4iSDHC Family” because it has “r4isdhc.com” written on it)
xIxY_xiMrYvyqT624j9pK-djvecBI3O8M1Od1U1pnadrdiatGd0Rv6XZcMdgrWVha83vowbImTh_bcSo6mz_GIpZLme4--bPbwR2pk75yRQzqxwbTlf4EKTNE__72zxsj-hFzm-3OjNWhxFoceL0Xw

Select “Dump Flash” (This will make a backup of it)
The file’s kernel will be exported to ntrboot/*whatever*-backup.bin on the root of your 3DS’ SD card. (*whatever* will be your card’s name)
Wait ‘till it’s done and you’ll see “Dump Complete!” in green text. Press B to return to the main menu, then “Poweroff”.
Now, you can either take the SD card out of your 3DS and put it into your computer, or turn on your console, open FTPD and transfer the file there.
TQ_JYRftw6evw8Az9KKAcRFN3wylAYXtwVKA6hyvWZjpphx-w4GY-opbEMQNA8peZzx5Wi-MM0CjZTOR5IoTJIrKJuZIiY0u73e5TQBX5BoZutBqp_Zv8P2hpDzlS4teVIhbbgBm9RUn80bfvlDxcw

That’s the file you need.
COPY IT SOMEWHERE SAFE! IF YOU LOSE IT THERE'S NO GUARANTEE YOU'LL FIND IT ONLINE!
Next, obtain a ROM (I'm not gonna tell you how) of the game the icon is from. (IT HAS TO BE THE SAME REGION AND VERSION AS THE LOGO)

vefNZEjWgWdvbU7DJSSW-v_D8vW6S85hJs66C8-z3lhCxBwIGYkv0x7eUtU53_LEyFVr2FtY_mNGK6zP0V6vKoLUSnRNzedhAaEWa46A6ilaS2iRZPBKm03uyXFDfheAzsAcCwL2yflTndv4SazegCk

For example, my R4 took its icon from the Korean version of Touch! Bomberman Land.

Qleyrtzoj56EDsPoiLz-6ehKvoNoDQBPFNysbZVa1fFe3XfS7RnuA4TsmswkThCQgkfhAtSQMvlcvWNOkjS7xFlbE9OYDO4oDJ9KvknNRK7eFqvoIyjr5Cs-d7FIKkJ7KQmLk2ErW6-EYAGMnzJV42Y

Back this up as well.
Make a copy of both the rom and the NTRboot backup.
JEMXTK8kBHq-de22v5gfabfPRcoD7jTE5L54g__xlHBgFNVZqPJugFkILeL8ZTPdpEL6A_qK8ss_MvM1PyW06R15nvQpSt2Gqz1LQa5J4b6LNbArSlBD9FxBM4_T5zPR0hWzM62e7heaF5kNUooDtgs

Now, the fun part begins.

Get whatever image you want to make your icon.
If you already have a 32x32 icon, you can skip this part.

For this guide, I'll be using the '90s "Jazz" disposable cup design:
1713177676321.png

(pretend this image was always here)

Next, open your image in your preferred image editor (again, I'm using Aseprite).
Crop or stretch the image into a square (I prefer cropping it, but you do you).
1713177756203.png


Resize your image to 32x32 pixels, then save/export it as a bitmap (bmp) file.
1713179400065.png

(i know it doesn't look very good, these tend to do that)

And that's your icon.
You can close your image editor now, if you want.

Open NSMBEditor and select the rom you want to edit, then double-click “banner.bin”.
1713180403587.png


A sprite editor will open but you will notice it shows a pink rectangle instead of the icon.

ZVIWwTyyf6eQfmggVnI_d9cjQqMhLzxyWyzJF19p8Fz13fT44yUy0x-6_TzPDilosNLjAp5EuR-BUFQkFfMJa0gnjjXtrc4kIdVTCzDbFz_Ebo8wJnS8KveDi781xqYkFTlRvRUxXgoph4j-aD0actU

To show the icon properly, pick the “View in 4pbb format” checkbox near the bottom-left and the ROM’s icon should appear.
Now, select “import this bitmap and recreate palette”, then select your image. This will import the image and limit its colours.
1713180586492.png

Save the file then close NSMBedit.

If you want, check if the icon shows up on the DS menu.
1713182759529.png

The icon should be changed and the text should stay the same.

Now it's time to change the title.

First, open the rom in GameHeader and look for the Icon Address.
View attachment 431848

Then open the ROM in a hex editor and go to that address.View attachment 431849
This is the "header" containing the icon and the title/text.

######COPY-PASTING A CHUNK FROM THE OLD VERSION OF THE GUIDE, GONNA REWRITE IT LATER######

Now, a bit of bit info.

2iNND5B67-ZKaHzkU7LBzmLP7jBz64jZ3vYRIlPZ3A1IYN6cp_U6DPI1CmgJ1dLu5nKcK3cA8MK1B2LaV8MP6tKpYEBe2n1sANd0tbCq21h4PHz0Ylrw26qbQFpk0TDHaSL42XfQcY5s3qZdeL8hZPA


The icon header (?) starts after those Y’s. The first two rows are important, remember them. The third and fourth characters are important (the ones highlighted in the image). They are the expected CRC16 test value that the DS expects from the icon and name. Basically, the DS runs an algorithm to see if anyone’s tampered with the ROM. (which is exactly what we’re doing, so we need to bypass that).
Let’s go back to the l a b e l. You can do whatever you want with it (you have so much space that if you fill it it’ll go off screen. I mean, you’re not gonna write the Bee Movie script aren’t you?) as long as every character is separated by a 00 and the top and bottom lines are separated by a 0A.
You need to write the title like this:

ccDi4VDEl7cErl08eAuTgNPWyq8laxIxCK8w08IZCpakZjaExe3LNfojclSk7k69ZkP2bPumZSdP4buMD2AbDvTZcsFuMOX_n45wiA074CVYW8V4lkadLZO3vbG4RDtaTHLPwBIEUHRaxdgkngliiOI


You need to replace it 6 times: for Japanese, English, French, Italian, German, Spanish.
If you don’t care about leaving the other languages like before, then just change the second entry.
Save the file, and let’s see in DeSmuME.

tP7PJ4TuLXYGrwAycbEoQQsFnYJQNdz6iBdOFMtznlNVxVtyUST-c4EkNLVJnppPtcJGa8i1P-nXnlQ5BQCpK2vD2Cx5j9g5dn4Ul6bl6ryxtsoUhzEzLzpMqY3-lpim389-0kZVBq20Z1OVA1q_J6M


What’s this? They’re gone?
Yeah. The checksum I mentioned earlier failed.
Don’t worry though, as you can see the (virtual) console detects the game, but can’t verify the title.
This is where YET ANOTHER PROGRAM comes into play.
GameHeader.


zjdEpRQENFwfhFBruoRS8vudGty6Vjzj7ZVR3kEknH55SJsOymBYBimTiXWsAU_5H0BKcxeb96H7cbBR5PAu2CLES_Kqf1e615ppq4Egf8o6zk3qQVxNQf99vjTuvky1-9aVOYqPwaghseWn_WJnlBo


As I said, the CRC16 failed. The expected response is stored semi-backwards, so where the Program says 0x7EDE it’s stored as DE7E. The output is 0xC4F4 so we need to replace DE7E with F4C4.

Now it's time to copy the header to the flashcart.

select and copy the bytes of the title (a bit further down)

View attachment 431843

then open your r4 backup, click CTRL+F to open the Search window, then go to "Hex-values" and paste the bytes in.
(make sure to set the search direction to 'All'!)
View attachment 431844
Hopefully this'll take you to the header inside the backup.

The header doesn't begin right at the title, though.
In both files, it starts a bit higher, at the previously specified address, right after the ÿ(FF)s.
View attachment 431846

In the rom, select the whole header from there, right up until the next big chunk of FFs:
View attachment 431850

then overwrite paste it (CTRL+B) over the header in the backup.
View attachment 431851

Make sure it's in the right place, then save it.
Copy the file to the NTRboot/ folder on your 3DS’ SD card, replace the original backup with it, then open NTRboot Flasher. Select your card. Select “Restore” and wait until it’s finished.
If you did this correctly, then the “Writing sectors” part should be done almost instantly. Now pop the R4 card in your DS and you can see it’s done.
-MJ6xK4b4cmACnlkmNK1W5oLfCip3K0qBf8hBhbpT0CS6AIvHPK_70ZT53mSLg_UcsguTxtAuNl8jm3l9xCQDol-OCeFMuD6PPY9Wb7IEr3BqmxASd3kVngbj0t5PC5sBN9LJn7Fn1LUfsHpW4MvbHQ

If you put it in your 3DS, you’ll notice it didn’t work and it’s the same as before. Well, not really. If you open the “Titles” section in FBI it’ll have the correct name and icon.
62vMF3ugmnKF1yzowqgAvo_6jdEoVUb3-YNKfIYnIiWDCfjMV0fhDKj6DRT7E-bnzWZanBntyqswv-JGG2BHmZVEtVfMf1R6jkb5rkCsl88AgbzQV8dqdFFR2GwVOj2zsPMRVxnTZhQrjPeh-0OF71M

The home menu remembers the icon, so it doesn’t read it again, so it has no idea we changed it. But the cart is changed. So the cart’s icon change only affects the DS and the DS Lite. (I don’t have a DSi, can anyone with one try this and check if it works there?)
So yeah, that’s the tutorial, and now you can ignore all the posts from the past 15 years saying that it’s impossible. Because it’s not. I have no idea what I’m doing and I have zero experience doing this kinda stuff, and I somehow did "the impossible". The only reason it was impossible is because nobody tried it.
P.S. i just realized that’s a fish not a frog


UPDATE: HOW TO FIX THE ICON AND TITLE FOR THE DSI AND 3DS

The title is stored 8 times after the icon. Highlight starting from the icon, ending on the last row before the 7th title.
View attachment 323771
View attachment 323773Be sure to select from the left side.
Copy all that.
Then go to https://crccalc.com and paste it there,
Set Input and Output to HEX and select CRC-16.
View attachment 323774

Find the one in the MODBUS row.
View attachment 323775
It's 8A5B so I have to type it semi-backwards (5B8A).
1661197888638.png

Now select from before the 8th entry, paste and then enter in the NEXT TWO slots.
1661197872326.png

And now from after the 8th entry, before the 10 billion FF FF FF FF FF FF (YY YY YY YY) rows.
1661197824706.png

And then paste it again, in the NEXT TWO.
1661197929816.png

Now flash the NTRboot backup.
And yes, I changed my icon before I edited the guide to add the last part.
1661199629242.png
 
Last edited by Hoap,

KleinesSinchen

GBAtemp's Backup Reminder + Fearless Testing Sina
Member
GBAtemp Patron
Joined
Mar 28, 2018
Messages
4,433
Trophies
2
XP
14,885
Country
Germany
Sounds interesting.

With the picture and/or game name changed, this will most likely not pass the whitelist/signature check on unmodified DSi and/or 2|3DS consoles.

Did you verify there are no bad side effects? I never understood why the fixed (faked) game logo bothers some people.
 
  • Like
Reactions: elCerebrain

Hoap

Active Member
OP
Newcomer
Joined
Aug 21, 2022
Messages
43
Trophies
0
Age
17
Location
Romania
XP
210
Country
United Kingdom
Sounds interesting.

With the picture and/or game name changed, this will most likely not pass the whitelist/signature check on unmodified DSi and/or 2|3DS consoles.

Did you verify there are no bad side effects? I never understood why the fixed (faked) game logo bothers some people.
The cart itself plays perfectly on everything, and the logo and label show up on my DS Lite. The 3DS doesn't detect the new icon until I delete the icon cache, and after that it just appears as a DS cart with a blank icon and name, but I can boot into it and it works perfectly. Haven't noticed any other side effects.
 

KleinesSinchen

GBAtemp's Backup Reminder + Fearless Testing Sina
Member
GBAtemp Patron
Joined
Mar 28, 2018
Messages
4,433
Trophies
2
XP
14,885
Country
Germany
The cart itself plays perfectly on everything, and the logo and label show up on my DS Lite. The 3DS doesn't detect the new icon until I delete the icon cache, and after that it just appears as a DS cart with a blank icon and name, but I can boot into it and it works perfectly. Haven't noticed any other side effects.
Do you have an unmodified 2|3DS console to test? I suspect it to not boot without patches.
 

KleinesSinchen

GBAtemp's Backup Reminder + Fearless Testing Sina
Member
GBAtemp Patron
Joined
Mar 28, 2018
Messages
4,433
Trophies
2
XP
14,885
Country
Germany
Please wait and refresh the page in a few minutes. I'll try something.


Please try this:
Download safety_test.gm9 mentioned in the uninstall page https://3ds.hacks.guide/uninstall-cfw and run the script from GodMode9. It will boot into Home Menu without having Luma3DS loaded. Try booting the modified R4 and see if it starts or gets the generic "An error has occurred"-screen.

Verified to not load an Acekard 2i this way (error without Luma3DS).

:!: Do not run a system update when having stock firmware booted. B9S will get overwritten. :!:
After a reboot Luma3DS should be loaded again: Verify by opening Rosalina menu.
 
Last edited by KleinesSinchen,
  • Like
Reactions: jeffyTheHomebrewer

Hoap

Active Member
OP
Newcomer
Joined
Aug 21, 2022
Messages
43
Trophies
0
Age
17
Location
Romania
XP
210
Country
United Kingdom
Please wait and refresh the page in a few minutes. I'll try something.


Please try this:
Download safety_test.gm9 mentioned in the uninstall page https://3ds.hacks.guide/uninstall-cfw and run the script from GodMode9. It will boot into Home Menu without having Luma3DS loaded. Try booting the modified R4 and see if it starts or gets the generic "An error has occurred"-screen.

Verified to not load an Acekard 2i this way (error without Luma3DS).

:!: Do not run a system update when having stock firmware booted. B9S will get overwritten. :!:
After a reboot Luma3DS should be loaded again: Verify by opening Rosalina menu.
Huh. The icon flashes in and out of existence for a split second. No error message or anything. Can't even select it with like frame-perfect timing.
Either way, this requires custom firmware so there's no way someone would use this on an unmodded 3ds. (and even if it's on a modded 3ds or dsi, why use an r4 when you have twlmenu?)
 

Pk11

A catgirl with a DSi
Member
Joined
Jun 26, 2019
Messages
1,285
Trophies
1
Age
22
Location
米国
Website
pk11.us
XP
3,897
Country
United States
FYI there are a few tools specifically for making DS banners, much simpler than making the icon with the NSMB tool and hex editing the titles and checksum manually:
  • NDS Banner Editor – This will let you create/edit a banner from image files easily
  • ntrbootbanner.py – This extracts/injects banners from supported ntrboot backups easily]

  • dsibanner.py – Simple Python script I made that can generate any type of banner, however it's CLI only so some people may find it trickier to use
  • MessAnimDSIco – I believe this should work for this and it's a GUI so it's simpler to use, but it's a bit of a pain to get running since it's JavaFX

That's quite odd that it's not working on 3DS for you as I've seen people do this before and it's worked fine on 3DS... You mention that it's based on a Korean ROM, did you fix all three checksums? The DS/DS Lite only use the first one, but DSi and 3DS will use all three (original, Chinese, and Korean, there's also a fourth for the animated icon in DSi type banners)

(relevant GBATEK page: https://problemkaputt.de/gbatek-ds-cartridge-icon-title.htm)

Edit: Also yes I can confirm this 100% requires CFW on 3DS or post-1.4 DSi. That's actually why all the sudden flashcards started switching from their custom icons to the games they're spoofing after 1.4, 1.4.1 made it actually check the banner against a checksum in the header where 1.4 and before didn't.

Edit 2023-03-18: I've updated the top of this post a little to better represent the current state of tools for this
 
Last edited by Pk11,

Hoap

Active Member
OP
Newcomer
Joined
Aug 21, 2022
Messages
43
Trophies
0
Age
17
Location
Romania
XP
210
Country
United Kingdom
FYI there are a few tools specifically for making DS banners, much simpler than making the icon with the NSMB tool and hex editing the titles and checksum manually:
  • dsibanner.py – Simple Python script I made that can generate any type of banner, however it's CLI only so some people may find it trickier to use
  • MessAnimDSIco – I believe this should work for this and it's a GUI so it's simpler to use, but it's a bit of a pain to get running since it's JavaFX
  • NDS Banner Editor – It may be possible to use the output of this, however it's only capable of making DSi type banners (with Chinese/Korean and animated icons) which may cause issues since those are probably never used in flashcards so there won't be enough room for the full new banner, you'll have to just copy part of it and that may cause issues

That's quite odd that it's not working on 3DS for you as I've seen people do this before and it's worked fine on 3DS... You mention that it's based on a Korean ROM, did you fix all three checksums? The DS/DS Lite only use the first one, but DSi and 3DS will use all three (original, Chinese, and Korean, there's also a fourth for the animated icon in DSi type banners)

(relevant GBATEK page: https://problemkaputt.de/gbatek-ds-cartridge-icon-title.htm)

Edit: Also yes I can confirm this 100% requires CFW on 3DS or post-1.4 DSi. That's actually why all the sudden flashcards started switching from their custom icons to the games they're spoofing after 1.4, 1.4.1 made it actually check the banner against a hash in the header where 1.4 and before didn't.
I tried to do it but then one of the CRC checks started changing based on itself so I just gave up since it was just gonna be a(n unwinnable) cat and mouse game, and I also noticed I only needed to change the header check for it to work.
 

Pk11

A catgirl with a DSi
Member
Joined
Jun 26, 2019
Messages
1,285
Trophies
1
Age
22
Location
米国
Website
pk11.us
XP
3,897
Country
United States
I tried to do it but then one of the CRC checks started changing based on itself so I just gave up since it was just gonna be a(n unwinnable) cat and mouse game, and I also noticed I only needed to change the header check for it to work.
The CRCs are not based on themselves at all... No clue why it would do that, not sure what you mean 'change the header check'
 

Hoap

Active Member
OP
Newcomer
Joined
Aug 21, 2022
Messages
43
Trophies
0
Age
17
Location
Romania
XP
210
Country
United Kingdom
The CRCs are not based on themselves at all... No clue why it would do that, not sure what you mean 'change the header check'
i don't even know what im saying rn i just did what i thought of and it mostly works lol
 

Hoap

Active Member
OP
Newcomer
Joined
Aug 21, 2022
Messages
43
Trophies
0
Age
17
Location
Romania
XP
210
Country
United Kingdom
FYI there are a few tools specifically for making DS banners, much simpler than making the icon with the NSMB tool and hex editing the titles and checksum manually:
  • dsibanner.py – Simple Python script I made that can generate any type of banner, however it's CLI only so some people may find it trickier to use
  • MessAnimDSIco – I believe this should work for this and it's a GUI so it's simpler to use, but it's a bit of a pain to get running since it's JavaFX
  • NDS Banner Editor – It may be possible to use the output of this, however it's only capable of making DSi type banners (with Chinese/Korean and animated icons) which may cause issues since those are probably never used in flashcards so there won't be enough room for the full new banner, you'll have to just copy part of it and that may cause issues

That's quite odd that it's not working on 3DS for you as I've seen people do this before and it's worked fine on 3DS... You mention that it's based on a Korean ROM, did you fix all three checksums? The DS/DS Lite only use the first one, but DSi and 3DS will use all three (original, Chinese, and Korean, there's also a fourth for the animated icon in DSi type banners)

(relevant GBATEK page: https://problemkaputt.de/gbatek-ds-cartridge-icon-title.htm)

Edit: Also yes I can confirm this 100% requires CFW on 3DS or post-1.4 DSi. That's actually why all the sudden flashcards started switching from their custom icons to the games they're spoofing after 1.4, 1.4.1 made it actually check the banner against a checksum in the header where 1.4 and before didn't.
also, thanks for the gbatek link. i didnt even know that the version is a thing
 

Hoap

Active Member
OP
Newcomer
Joined
Aug 21, 2022
Messages
43
Trophies
0
Age
17
Location
Romania
XP
210
Country
United Kingdom
Turns out, I forgot to change the Korean title. And TIL that the additional checks were added as far back as iQue DS, where it doesn't show any icon but it still works.
I'm not done, but I think I'm taking steps in the right direction.
 

Pk11

A catgirl with a DSi
Member
Joined
Jun 26, 2019
Messages
1,285
Trophies
1
Age
22
Location
米国
Website
pk11.us
XP
3,897
Country
United States
Turns out, I forgot to change the Korean title. And TIL that the additional checks were added as far back as iQue DS, where it doesn't show any icon but it still works.
I'm not done, but I think I'm taking steps in the right direction.
As I said, just use one of the dedicated banner makers and it'll be a lot simpler :P
 

Pk11

A catgirl with a DSi
Member
Joined
Jun 26, 2019
Messages
1,285
Trophies
1
Age
22
Location
米国
Website
pk11.us
XP
3,897
Country
United States
Oh, I completely forgot, I also made a Python script in the past specifically for the purpose of extracting/injecting ntrboot backup banners: https://gist.github.com/Epicpkmn11/dfd6b31b7d207a5e2308852afba64c9b

You can use that to skip the hex editing entirely, I made that last time someone was wanting to do this since I couldn't be bothered to explain hex editing to the person :rofl2:
 

Hoap

Active Member
OP
Newcomer
Joined
Aug 21, 2022
Messages
43
Trophies
0
Age
17
Location
Romania
XP
210
Country
United Kingdom
Oh, I completely forgot, I also made a Python script in the past specifically for the purpose of extracting/injecting ntrboot backup banners: https://gist.github.com/Epicpkmn11/dfd6b31b7d207a5e2308852afba64c9b

You can use that to skip the hex editing entirely, I made that last time someone was wanting to do this since I couldn't be bothered to explain hex editing to the person :rofl2:
Tried to use that but it gave me errors... I wanna do this by myself with the hex editor as some kinda puzzle and so far it's pretty fun.
 

Hoap

Active Member
OP
Newcomer
Joined
Aug 21, 2022
Messages
43
Trophies
0
Age
17
Location
Romania
XP
210
Country
United Kingdom
I'm pretty sure I went WAY too far so I think I'm gonna start over lol. It happened like the first two times I tried this.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    BakerMan @ BakerMan: @salazarcosplay yeah cod's still up