Hacking Sky3DS DiskWriter Unlimited - Beta

VeryCrushed

Devious Prorammer
OP
Member
Joined
Dec 26, 2014
Messages
451
Trophies
0
Location
The Programmers Den
XP
453
Country
United States
Hey VC,
Is there a way to get DIskwriter to read Eshop games?


Ill have to take a look at things, its gonna make it hard not having a 3DS for a while cause im returning it in exchange for a N3DS. Im about to get some sleep, ill be working on it more tomorrow. I will keep everyone up to date.
 

c4388354

Well-Known Member
Member
Joined
Jan 23, 2015
Messages
142
Trophies
0
XP
623
Country
United States
edit: seems the microSD layout was covered a while ago, more info here:
http://github.com/lukas2511/sky3ds.py/wiki/Disk-Layout

---

The limit of 31 games is because of the way the app writes the rom index to the SD card on sector 0

Each game is stored using TWO 32bit values, one is the start sector of the rom
and the other is the length of the rom in sectors (both appear to be in little endian)
(I have no idea how/where/what offset saves are stored at, I don't have my Sky3DS yet so can't test)

At offset 0x100 is the value 524F4D53 (ROMS) which is used to check if the SD card is formatted for Sky3DS.
(If this offset isn't 524F4D53 then the sky3DS app will say this card isn't formatted)

There can only be 31 games stored, the last offset at 0xF8+0xFC is FF which is
probably needed so Sky3DS card knows when to loop back to the first rom on the card.
(edit: so when Sky3DS reads the offset and size, if both are all FF's, then it loops back to the first entry on the microSD?)

Here is sector 0 hexdump of a MicroSD formatted with 2 test games written to a 16gb microSD.
(Game sizes are 128mb + 256mb see image below)

Code:
Offset(h) 00 04 08 0C
000000000 00000100 00000400 00000500 00000800 ................
000000010 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000020 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000030 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000040 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000050 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000060 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000070 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000080 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000090 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000000A0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000000B0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000000C0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000000D0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000000E0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000000F0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000100 524F4D53 FFFFFFFF FFFFFFFF FFFFFFFF ROMSÿÿÿÿÿÿÿÿÿÿÿÿ
000000110 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000120 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000130 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000140 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000150 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000160 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000170 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000180 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000190 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000001A0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000001B0 FFFFFFFF FFFFFFFF FFFFFFFF FFFF8000 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€.
0000001C0 00000CFF FFFF4000 00000004 00000000 ...ÿÿÿ@.........
0000001D0 00000000 00000000 00000000 00000000 ................
0000001E0 00000000 00000000 00000000 00000000 ................
0000001F0 00000000 00000000 00000000 000055AA ..............Uª

UOmrpUl.png


Offset 0x00 + 0x04 = Game 1 - Offset (00 01 00 00) + Size (00 04 00 00)
Offset 0x08 + 0x0C = Game 2 - Offset (00 05 00 00) + Size (00 08 00 00)
Offset 0x10 + 0x14 = Game 3
Offset 0x18 + 0x1C = Game 4 etc
Offset 0xF0 + 0xF4 = Game 31
Offset 0xF8 + 0xFC = Game 32

Having 33 games on your microSD would overwrite the offset at 0x100 which will make
DiskWriter think your MicroSD card isn't formatted the next time you start it up?

The 16 bytes from Offset 0x1BC is a partition entry (1 of 4)
(appears to be for a partition with the setup.zip containing the DiskWriter App)
and the offset 0x1FE+0x1FF is the Boot Sector Signature (0x55 0xAA)

***

edit: The extra header data (from the template) is stored at the rom offset + 0x1400 to 0x15FF.
(e.g sector 0x00010000 x 0x200 (sector size) = offset 0x02000000+0x1400 = 0x02001400)
 

VeryCrushed

Devious Prorammer
OP
Member
Joined
Dec 26, 2014
Messages
451
Trophies
0
Location
The Programmers Den
XP
453
Country
United States
The limit of 31 games is because of the way the app writes the rom index to the SD card on sector 0

Each game is stored using TWO 32bit values, one is the start sector of the rom
and the other is the length of the rom in sectors (both appear to be in little endian)
(I have no idea how/where/what offset saves are stored at, I don't have my Sky3DS yet so can't test)

At offset 0x100 is the value 524F4D53 (ROMS) which is used to check if the SD card is formatted for Sky3DS.
(If this offset isn't 524F4D53 then the sky3DS app will say this card isn't formatted)

There can only be 31 games stored, the last offset at 0xF8+0xFC is FF which is
probably needed so Sky3DS card knows when to loop back to the first rom on the card.

Here is sector 0 hexdump of a MicroSD formatted with 2 test games written to a 16gb microSD.
(Game sizes are 128mb + 256mb see image below)

Code:
Offset(h) 00 04 08 0C
000000000 00000100 00000400 00000500 00000800 ................
000000010 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000020 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000030 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000040 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000050 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000060 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000070 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000080 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000090 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000000A0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000000B0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000000C0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000000D0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000000E0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000000F0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000100 524F4D53 FFFFFFFF FFFFFFFF FFFFFFFF ROMSÿÿÿÿÿÿÿÿÿÿÿÿ
000000110 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000120 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000130 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000140 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000150 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000160 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000170 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000180 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000000190 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000001A0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0000001B0 FFFFFFFF FFFFFFFF FFFFFFFF FFFF8000 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€.
0000001C0 00000CFF FFFF4000 00000004 00000000 ...ÿÿÿ@.........
0000001D0 00000000 00000000 00000000 00000000 ................
0000001E0 00000000 00000000 00000000 00000000 ................
0000001F0 00000000 00000000 00000000 000055AA ..............Uª

UOmrpUl.png


Offset 0x00 + 0x04 = Game 1 - Offset (00 01 00 00) + Size (00 04 00 00)
Offset 0x08 + 0x0C = Game 2 - Offset (00 05 00 00) + Size (00 08 00 00)
Offset 0x10 + 0x14 = Game 3
Offset 0x18 + 0x1C = Game 4 etc
Game 31 would be Offset 0xF0+0xF4
Game 32 would beOffset 0xF8+0xFC

Having 33 games on your microSD will overwrite the offset at 0x100 which will make
DiskWriter think your MicroSD card isn't formatted the next time you start it up.

The 16 bytes from Offset 0x1BC is a partition entry (1 of 4)
(appears to be for a partition with the setup.zip containing the DiskWriter App)
and the offset 0x1FE+0x1FF is the Boot Sector Signature (0x55 0xAA)



I am looking to create a completely new diskwriter from mostly scratch, it will be open source as to allow for people to contribute. This will provide both better game support as well as a better implementation. Thank you for the research.
 

Arras

Well-Known Member
Member
Joined
Sep 14, 2010
Messages
6,318
Trophies
2
XP
5,407
Country
Netherlands
Hey VC,
Is there a way to get DIskwriter to read Eshop games?

Even if you could, the 3DS probably won't run them, so I doubt it's all that useful.
I am looking to create a completely new diskwriter from mostly scratch, it will be open source as to allow for people to contribute. This will provide both better game support as well as a better implementation. Thank you for the research.

While that would be awesome, wouldn't changing how the data is stored break compatibility with the actual sky3DS card? I assume it just checks the same data as the diskwriter does, so I'm not sure if there's any way to get around the game limit without an actual update/modification to the sky3DS card itself.
 

VeryCrushed

Devious Prorammer
OP
Member
Joined
Dec 26, 2014
Messages
451
Trophies
0
Location
The Programmers Den
XP
453
Country
United States
While that would be awesome, wouldn't changing how the data is stored break compatibility with the actual sky3DS card? I assume it just checks the same data as the diskwriter does, so I'm not sure if there's any way to get around the game limit without an actual update/modification to the sky3DS card itself.


I am looking at all options including mods to the cart itself. Ill have more things to say when i awake in the morning, seriously going to sleep now though...
 
  • Like
Reactions: Margen67

cearp

瓜老外
Developer
Joined
May 26, 2008
Messages
8,725
Trophies
2
XP
8,509
Country
Tuvalu
update the op to say that it doesn't work, right :) but good work, although let's just hope sky3ds update like they say they would, i think?
(i don't even have a sky3ds, but, sure it's a nice product)
 

Multiboy2k

Well-Known Member
Member
Joined
Dec 12, 2014
Messages
140
Trophies
0
Location
Las Vegas
XP
224
Country
United States
update the op to say that it doesn't work, right :) but good work, although let's just hope sky3ds update like they say they would, i think?
(i don't even have a sky3ds, but, sure it's a nice product)
I did. I PM'd him to let him know the specifics. But, I think the problem may have actually been on my end. Im using a 64gb sd card and I attempted to fill it completely.
There may not be a problem with this writer. I think my card ran out of space and the card itself needs enough memory to change games. If someone on here who has a 128gb or larger card could test this,
that would be helpful. Im going to test this again later with smaller sized games. Right now I was just using mostly large games that also use alot of ram as well as sd card space. But, VC's writer definitely lifted the imposed limit. Thanks again for your work on this, VC.

UPDATE:
Please see my last post on this.
Tldr: DONT use this writer for now.
 

Multiboy2k

Well-Known Member
Member
Joined
Dec 12, 2014
Messages
140
Trophies
0
Location
Las Vegas
XP
224
Country
United States
Even if you could, the 3DS probably won't run them, so I doubt it's all that useful.


While that would be awesome, wouldn't changing how the data is stored break compatibility with the actual sky3DS card? I assume it just checks the same data as the diskwriter does, so I'm not sure if there's any way to get around the game limit without an actual update/modification to the sky3DS card itself.

Hey Guys,
After further research on this matter, I found that C438 and Arras are correct in their assessment.

VC, Thank you for your work on this but if users use this modified writer, it will 'break' their card. I know this to be true because when I over loaded the card, it refused to work until I reformatted the card. I then had to rewrite the entire image I already had backed up to the card to get it working. Once I reinserted the card back into my NN3DS i got the very scary 'Game Removed Error shut down...blablah'. I turned the unit off completely and tried it again and my card was working perfectly again.

At this juncture, i cannot recommend anyone using this modified release as adding more games will break your card. But, I am very impressed with how sturdy and reliable this Sky3DS cart is. So far, I would highly recommend this cart to everyone. It just simply works. Even when you try to break it, it still just works!
 

tony_2018

Well-Known Member
Member
Joined
Jan 3, 2014
Messages
3,107
Trophies
0
XP
1,012
Country
United States
I am looking to create a completely new diskwriter from mostly scratch, it will be open source as to allow for people to contribute. This will provide both better game support as well as a better implementation. Thank you for the research.


Just make sure those douchebags give credit where it deserves to be. Fuckin tired of idiots doing shit like that.

Nice work btw. Go get some rest bro.
 

tony_2018

Well-Known Member
Member
Joined
Jan 3, 2014
Messages
3,107
Trophies
0
XP
1,012
Country
United States
Hey Guys,
After further research on this matter, I found that C438 and Arras are correct in their assessment.

VC, Thank you for your work on this but if users use this modified writer, it will 'break' their card. I know this to be true because when I over loaded the card, it refused to work until I reformatted the card. I then had to rewrite the entire image I already had backed up to the card to get it working. Once I reinserted the card back into my NN3DS i got the very scary 'Game Removed Error shut down...blablah'. I turned the unit off completely and tried it again and my card was working perfectly again.

At this juncture, i cannot recommend anyone using this modified release as adding more games will break your card. But, I am very impressed with how sturdy and reliable this Sky3DS cart is. So far, I would highly recommend this cart to everyone. It just simply works. Even when you try to break it, it still just works!


You mean to tell me you tried to smash it with a hammer and it rebounded? I want a video.
 
  • Like
Reactions: Multiboy2k

mrolive

Well-Known Member
Member
Joined
Jul 14, 2014
Messages
547
Trophies
0
Age
41
XP
462
Country
Canada
Ill have to take a look at things, its gonna make it hard not having a 3DS for a while cause im returning it in exchange for a N3DS. Im about to get some sleep, ill be working on it more tomorrow. I will keep everyone up to date.

Thanks! I hope there is a way!
 

VeryCrushed

Devious Prorammer
OP
Member
Joined
Dec 26, 2014
Messages
451
Trophies
0
Location
The Programmers Den
XP
453
Country
United States
Hey Guys,
After further research on this matter, I found that C438 and Arras are correct in their assessment.

VC, Thank you for your work on this but if users use this modified writer, it will 'break' their card. I know this to be true because when I over loaded the card, it refused to work until I reformatted the card. I then had to rewrite the entire image I already had backed up to the card to get it working. Once I reinserted the card back into my NN3DS i got the very scary 'Game Removed Error shut down...blablah'. I turned the unit off completely and tried it again and my card was working perfectly again.

At this juncture, i cannot recommend anyone using this modified release as adding more games will break your card. But, I am very impressed with how sturdy and reliable this Sky3DS cart is. So far, I would highly recommend this cart to everyone. It just simply works. Even when you try to break it, it still just works!
I will be modifying the OP shortly, I am just about to jump onto my laptop to do it. The link will be removed, I will still keep updating the thread with news/progression.
 

lukas_2511

Well-Known Member
Member
Joined
Jan 4, 2015
Messages
126
Trophies
0
Age
31
XP
409
Country
Gambia, The
I extended https://github.com/lukas2511/sky3ds.py/wiki/Disk-Layout with some information on why it won't be possible to add more than 31 (working) games. You can in fact add game 32, but as soon as Sky3DS jumps from the 32nd to the 1st game it will overwrite the first 1MB of game data of the first rom. You can work around this with a custom DiskWriter, but it still would only allow the addition of a 32nd game, and it's really really ugly.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: aeiou