Hacking [RELEASE] 3DS Multi EmuNAND Creator

Arithmatics

I'll be holding on to you. ;}
Member
Joined
Jan 29, 2009
Messages
1,162
Trophies
1
Age
30
XP
1,052
Country
Malaysia
So I just found this thread and I must say it's very impressive work. I just have a few questions though. Would this work with 2 Gateway Emunands OR 1 Gateway and 1 CFW and how would I go about choosing which emunand to boot? i noticed there was a frontend created but I believe that's for O3DS only and I'm looking for a solution for N3DS/LL.
 

DarkMatterCore

Finding my light.
OP
Developer
Joined
May 30, 2009
Messages
1,292
Trophies
1
Age
28
Location
Madrid, Spain
Website
github.com
XP
2,606
Country
Spain
So I just found this thread and I must say it's very impressive work. I just have a few questions though. Would this work with 2 Gateway Emunands OR 1 Gateway and 1 CFW and how would I go about choosing which emunand to boot? i noticed there was a frontend created but I believe that's for O3DS only and I'm looking for a solution for N3DS/LL.

It should be able to work with two GW EmuNANDs, but first, proper multi EmuNAND support would have to be added to current CFWs. I created this tool back when the Palantine CFW was still used, and after nop90 discovered that it was possible to change the RedNAND (NAND format used by Palantine) boot sector by modifying the boot.bin file. This made possible to use both a GW EmuNAND and a Palatine CFW RedNAND on the same SD card.

Nonetheless, the program is able to write more than one GW EmuNAND. Really, it's just a matter of modifying the available CFWs.
 

Arithmatics

I'll be holding on to you. ;}
Member
Joined
Jan 29, 2009
Messages
1,162
Trophies
1
Age
30
XP
1,052
Country
Malaysia
Question! Is it possible to have two SD Cards, each with emuNAND?
You can have 1 with linked emunand and the other unlinked if you wanted. Format emunand for SD #1 like normal then take it out of 3DS and format sysnand to unlink it, then insert SD #2 and format emunand on it. That way anything you install to sysnand will automatically be on SD #2 Emunand just incase you wanted the ability to do so


It should be able to work with two GW EmuNANDs, but first, proper multi EmuNAND support would have to be added to current CFWs. I created this tool back when the Palantine CFW was still used, and after nop90 discovered that it was possible to change the RedNAND (NAND format used by Palantine) boot sector by modifying the boot.bin file. This made possible to use both a GW EmuNAND and a Palatine CFW RedNAND on the same SD card.

Nonetheless, the program is able to write more than one GW EmuNAND. Really, it's just a matter of modifying the available CFWs.
Yeah. I tried it and it worked with writing more than one GW emunand but I got stuck with booting. Do you happen to know where to start looking besides the boot method because I understand that you're busy with other projects and I'd like to delve into development anyways.
 
Last edited by Arithmatics,

DarkMatterCore

Finding my light.
OP
Developer
Joined
May 30, 2009
Messages
1,292
Trophies
1
Age
28
Location
Madrid, Spain
Website
github.com
XP
2,606
Country
Spain
Github source pl0x

GitHub source to what? I have a DS flashcard, but I don't have a GW.

Yeah. I tried it and it worked with writing more than one GW emunand but I got stuck with booting. Do you happen to know where to start looking besides the boot method because I understand that you're busy with other projects and I'd like to delve into development anyways.

rxTools source code would be a good starting point, specially this: https://github.com/roxas75/rxTools/blob/master/rxtools/source/lib/nand.c#L76.
 
  • Like
Reactions: Arithmatics

robb4

Member
Newcomer
Joined
Sep 14, 2015
Messages
23
Trophies
0
XP
93
Country
Romania
Thanks @Dean_ !
But before I try this and brick my n3DS, should this work on an n3DS? Looking over the 3DS-multi-emunand source I think the emunand sizes are different for the old and the new 3DS, so if you hardcoded some offsets I don't think it should work.
 

Dean_

Well-Known Member
Member
Joined
Sep 11, 2014
Messages
684
Trophies
0
XP
712
Country
Thanks @Dean_ !
But before I try this and brick my n3DS, should this work on an n3DS? Looking over the 3DS-multi-emunand source I think the emunand sizes are different for the old and the new 3DS, so if you hardcoded some offsets I don't think it should work.
I think it would not work on N3DS. I hardcoded the offset for O3DS.
It would be quite hard to make second emunand without hardcoding some offsets.

Since I don't own an N3DS, I don't have information how much space gateway launcher allocates during formatting emunand.
 

DarkMatterCore

Finding my light.
OP
Developer
Joined
May 30, 2009
Messages
1,292
Trophies
1
Age
28
Location
Madrid, Spain
Website
github.com
XP
2,606
Country
Spain
Thanks @Dean_ !
But before I try this and brick my n3DS, should this work on an n3DS? Looking over the 3DS-multi-emunand source I think the emunand sizes are different for the old and the new 3DS, so if you hardcoded some offsets I don't think it should work.

The program isn't going to let you write a New 3DS RedNAND, anyway. This is because the Palantine CFW was only compatible with the Old 3DS.

It would be better if the patch was tweaked to support a 2nd EmuNAND instead of a RedNAND.

I think it would not work on N3DS. I hardcoded the offset for O3DS.
It would be quite hard to make second emunand without hardcoding some offsets.

Since I don't own an N3DS, I don't have information how much space gateway launcher allocates during formatting emunand.

If you tell me how, I can help you create the patch, since the required offsets are already stored/calculated in my program.
 
Last edited by DarkMatterCore,
  • Like
Reactions: Arithmatics

DarkMatterCore

Finding my light.
OP
Developer
Joined
May 30, 2009
Messages
1,292
Trophies
1
Age
28
Location
Madrid, Spain
Website
github.com
XP
2,606
Country
Spain
Last edited by DarkMatterCore,

robb4

Member
Newcomer
Joined
Sep 14, 2015
Messages
23
Trophies
0
XP
93
Country
Romania
Assuming the code actually uses sector numbers instead of physical offsets, changing the orig_sector value from 0x00000000 to 0x00400000 (2 GiB / 512) will most likely work for New 3DS. If not, then just using 0x80000000 should suffice.

The GW Launcher allocates 2 GB for the New 3DS NAND dumps.

That is indeed correct, I have managed to boot into a second emunand using the 0x00400000 offset. However, as of right now, for some reason, I can't install cias to any of the nands (neither SysNAND nor EmuNAND). This is likely an issue on my end, but I'll post some files after I get this sorted out.
Edit: yup, I was using the 9.5 firmware file and cias don't work on that one. Switching to 9.2 does solve that problem, but that breaks EmuNAND support ...
 
Last edited by robb4,

Arithmatics

I'll be holding on to you. ;}
Member
Joined
Jan 29, 2009
Messages
1,162
Trophies
1
Age
30
XP
1,052
Country
Malaysia
That is indeed correct, I have managed to boot into a second emunand using the 0x00400000 offset. However, as of right now, for some reason, I can't install cias to any of the nands (neither SysNAND nor EmuNAND). This is likely an issue on my end, but I'll post some files after I get this sorted out.
Edit: yup, I was using the 9.5 firmware file and cias don't work on that one. Switching to 9.2 does solve that problem, but that breaks EmuNAND support ...
Are we a step closer to 2 emunands on N3DS?
 
  • Like
Reactions: DarkMatterCore

robb4

Member
Newcomer
Joined
Sep 14, 2015
Messages
23
Trophies
0
XP
93
Country
Romania
Are we a step closer to 2 emunands on N3DS?
Yes, I have successfully booted in 2 different EmuNANDs on the same SD card, but not being able to install cias is quite a major bummer for me.

Update: now that ReiNAND supports Ninjhax 2.x ( https://gbatemp.net/threads/source-code-reinand-with-brahma2loader-ninjhax-2-x-support-fw-9-2.399312 - thanks @d0k3 !) I wrote a small PoC patch for dual EmuNAND support, in which I hijacked the boot to SysNAND to start the second EmuNAND on the SD card.
I think it should work like this (I haven't tested it properly yet :sleep:): pressing Start boots second EmuNAND, Start + B boots first EmuNAND, and if no valid partition is found while booting it should default to SysNAND.
The patch is in a diff format, you'll have to apply it to @d0k3's ReiNAND sources and rebuild it.

Note: when creating the EmuNANDs with Multi EmuNAND Creator they will be linked, so you'll have to use the folder trick in order to differentiate them (I wasted quite a bit of time before realizing this, I kept changing themes :mellow:).
 

Attachments

  • patch.txt
    1.7 KB · Views: 294
Last edited by robb4,
  • Like
Reactions: Arithmatics

Arithmatics

I'll be holding on to you. ;}
Member
Joined
Jan 29, 2009
Messages
1,162
Trophies
1
Age
30
XP
1,052
Country
Malaysia
Yes, I have successfully booted in 2 different EmuNANDs on the same SD card, but not being able to install cias is quite a major bummer for me.

Update: now that ReiNAND supports Ninjhax 2.x ( https://gbatemp.net/threads/source-code-reinand-with-brahma2loader-ninjhax-2-x-support-fw-9-2.399312 - thanks @d0k3 !) I wrote a small PoC patch for dual EmuNAND support, in which I hijacked the boot to SysNAND to start the second EmuNAND on the SD card.
I think it should work like this (I haven't tested it properly yet :sleep:): pressing Start boots second EmuNAND, Start + B boots first EmuNAND, and if no valid partition is found while booting it should default to SysNAND.
The patch is in a diff format, you'll have to apply it to @d0k3's ReiNAND sources and rebuild it.

Note: when creating the EmuNANDs with Multi EmuNAND Creator they will be linked, so you'll have to use the folder trick in order to differentiate them (I wasted quite a bit of time before realizing this, I kept changing themes :mellow:).
Would you mind giving me an already built version via PM because I don't even know how to add and build things in github yet.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    K3Nv2 @ K3Nv2: Lmao that sold out fast