Homebrew Proposed SD directory restructuring for homebrew

TheCruel

Developer
OP
Banned
Joined
Dec 6, 2013
Messages
1,350
Trophies
2
XP
3,130
Country
United States
I've read people on gbatemp/IRC/reddit complaining about homebrew polluting their SD's root directory. This has become an issue because 3ds userland homebrew was initially designed to be in the 3dsx format, almost exclusively. However, many people do not want to use this format, and perhaps for good reasons which I won't describe here. And others simply will never be able to use this format because their homebrew isn't for userland.

Regardless, there have emerged many popular CIA-only homebrew and many homebrew apps that aren't in userland, and both of these types of homebrew face the problem of choosing where to save their data on the SD card. Most have resorted to merely making a directory/file on the SD root.

I propose the following simple restructuring:

sd:/3ds/apps/
This is similar to what the WiiU uses. This will be for 3dsx homebrew, essentially a renaming of sd:/3ds/ that currently exists. In the same fashion, all subdirectories will be 3dsx homebrew apps. And you can expect that removing sd:/3ds/apps/luma3ds, for example, will be removing a 3dsx luma launcher, and nothing more.

sd:/3ds/appdata/
This will be for data saved by homebrew, whether it be by 3dsx or CIA userland, or whether it by an arm9 bootloader needing to save a config file. It likewise would have subdirectories of homebrew names. The ideal behavior would be that removing directories here will not break their corresponding homebrew, and it will rather just deleting everything (data dumps, caches, config files, etc.) created by the homebrew. Of course, not all homebrew devs have made their homebrew self-contained to recreate config files and such, so therefore those files should be saved along with the app itself and not in this directory, otherwise deleting this subdirectory will make the app inoperable.

Benefits:
  • Will give 3ds homebrew devs more flexibility when putting stuff in sd:/3ds/ without the need to pollute the directories used by HBL or other derivative launchers. Perhaps devs could also use sd:/3ds/cfw/ or sd:/3ds/arm9/ too, so people won't have rxTools/Luma3ds/Decrypt9/etc. directories in their SD root.
  • Gives a proper separation of application and user data, similar to how PC environments operate.
  • SD root directory would only need a few files/directories for 3ds homebrew purposes, making it nicer to use for other purposes as well.
Negatives:
  • Requires a modification to HBL, albeit a simple one, using sd:/3ds/apps/ as the hb directory.
  • 3dsx devs have come to expect CWD to provide their data space, and many aren't comfortable with changing to a fixed directory naming convention. This directory change won't break their work, but they'll simply not be compliant, having their user data mixed with app data against what would be expected.
  • The current directory standard is so ubiquitous that changing it would break old tutorials (or confuse some end users). Some could perhaps consider it at a point of no return.


I would like feedback, primarily from homebrew devs. Is there anything else to be considered?
 
Last edited by TheCruel,

KapuDaKoopa

That One Splatoon Dataminer
Member
Joined
Mar 12, 2016
Messages
474
Trophies
0
XP
984
Country
United States
I'm no dev, but I for one can say that this would be a nice change, as I hate all these folders cluttering up my root. Having all the homebrew in a 3ds folder, then the actual 3dsx homebrew in an apps folder INSIDE the 3ds folder would clean up the root a fair amount.
I support this 100% if someone attempts to make a hbl-mod
I guess while we're talking about someone making a hbl-mod custom theme support would be nice too but this isn't really ontopic now is is it sorry :P
 
  • Like
Reactions: Deleted User

TurtleP

Well-Known Member
Member
Joined
Oct 7, 2015
Messages
140
Trophies
0
Age
28
Website
TurtleP.github.io
XP
308
Country
United States
I personally feel this is a good idea. Yeah it can break some homebrew projects, but it's a simple fix. I'm not sure how we could enforce it, but still I'd rather a clean SD (as many others would) than one cluttered with stuff. From what I can tell, however, 3dsx and cia save data tend to be something that does not differentiate unless you create extdata with ctrulib which is a pain to do. I think that it's just something that would need time to put into practice for many developers (even to update some homebrew applications for this).
 

TurtleP

Well-Known Member
Member
Joined
Oct 7, 2015
Messages
140
Trophies
0
Age
28
Website
TurtleP.github.io
XP
308
Country
United States
@Billy Acuña we kind of already have a 3DS folder, so it just clutters it up by having another folder on root. This is a simple structure that could be followed for less confusion where to put everything. Example: retroarch. You could easily put the cores and everything inside of sdmc:/3DS/appdata/RetroArch/ which otherwise tends to confuse many people I think.
 
  • Like
Reactions: KapuDaKoopa
A

a9lh-1user

Guest
What if you dont need that (or whant it?).
The Shadownand thread already shows that the Dev's are in a internal discussion for that.
But imho i dont need that!
If the Dev's decide to do that the consequence will be that we are FORCED to use it i think.
And i dont like that.

But let's see in what direction it will go.

Again I dont like the idea of changing the FHS :)
 

Ryccardo

Penguin accelerator
Member
Joined
Feb 13, 2015
Messages
7,689
Trophies
1
Age
28
Location
Imola
XP
6,904
Country
Italy
My second opinion is that, if devs were to implement format-specific features (ie: homebrew games compiled as cia/3ds should use romfs and the save system instead of loose files) this would be a non-issue for me and a good number of Others who don't use 3dsx anymore :)
 

Drakia

Well-Known Member
Member
Joined
Mar 15, 2008
Messages
1,644
Trophies
2
Age
36
XP
2,596
Country
Canada
I like this idea better than throwing yet another directory on the root like suggested elsewhere (/homebrew/3ds). Branching from the /3ds/ folder makes a lot of sense, and would keep the root clean instead of cluttering it more before anything gets better.

My second opinion is that, if devs were to implement format-specific features (ie: homebrew games compiled as cia/3ds should use romfs and the save system instead of loose files) this would be a non-issue for me and a good number of Others who don't use 3dsx anymore :)
RomFS for assets is fine, save files for anything is a bad idea. Users can't directly access a save file to, say, change a broken config, or copy a config for their friend.
 
  • Like
Reactions: oiie

Sono

cripple piss
Developer
Joined
Oct 16, 2015
Messages
2,820
Trophies
2
Location
home
XP
9,305
Country
Hungary
If I remember correctly, the CWD is set by NH2.x on launching, so the apps wouldn't need to care about hardcoding their paths. I'm gonna test this out after I post this :P

Okay, to be fair, if you're using FSUSER functions, then you need to hardcode your paths, but if you were to use standard C functions, then you wouln't have this issue.

I wasn't really convinced about this issue, but I'll look into it, I think there should be a non-standard-C function to get the CWD, I'll look into it.
 

Ryccardo

Penguin accelerator
Member
Joined
Feb 13, 2015
Messages
7,689
Trophies
1
Age
28
Location
Imola
XP
6,904
Country
Italy
Being able to import/export a save file doesn't easily allow people to share portions of a config, hand-modify a config when there's no UI in the homebrew, etc.
Why not? Once a save is extracted, the individual files inside are perfectly accessible...
 

Drakia

Well-Known Member
Member
Joined
Mar 15, 2008
Messages
1,644
Trophies
2
Age
36
XP
2,596
Country
Canada
With that argument, wouldn't it then be logical to use the "Nintendo 3DS" directory that already exists instead of "3ds"?
Because the community standard right now is to have a "3ds" folder, not to put homebrew in the "Nintendo 3DS" folder. This is discussion about an evolution of the current community-accepted "3ds" folder standard.
 
D

Deleted User

Guest
Because the community standard right now is to have a "3ds" folder, not to put homebrew in the "Nintendo 3DS" folder. This is discussion about an evolution of the current community-accepted "3ds" folder standard.
Except one of the main ideas behind it seems to be eliminating clutter in the SD root, and what better way to do that than have even fewer folders?
 

Drakia

Well-Known Member
Member
Joined
Mar 15, 2008
Messages
1,644
Trophies
2
Age
36
XP
2,596
Country
Canada
Why not? Once a save is extracted, the individual files inside are perfectly accessible...
So, a save extracted with something like JKSM will just output a bunch of individual files? Also, what's the size limit on a savf? Will it be usable for something like a 2MB cache file?
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • Maximumbeans @ Maximumbeans:
    I can't believe you got me with that
    +1
  • SylverReZ @ SylverReZ:
    I haven't been gaming for such a long time. Been mostly busy with sleep, hardware tinkering and checking GBAtemp frequently.
  • SylverReZ @ SylverReZ:
    Hope you've had a good morning.
  • Maximumbeans @ Maximumbeans:
    It's going alright thanks :) I know what you mean with gaming time. It's precious where I can get it these days.
    +1
  • Maximumbeans @ Maximumbeans:
    I think that's why I focus on just enjoying single player experiences that aren't too competitive
  • Maximumbeans @ Maximumbeans:
    How are you doing?
  • SylverReZ @ SylverReZ:
    There's also this thing where I'm hyperfocused at night and cannot get to sleep.
  • SylverReZ @ SylverReZ:
    @Maximumbeans, I'm doing alright, thanks.
    +1
  • Maximumbeans @ Maximumbeans:
    That must be rough. Productive I'm sure but hard to balance with daily life
    +1
  • SylverReZ @ SylverReZ:
    @Maximumbeans, Indeed. I've been working on getting this Infecutus chip to work on my PS2. But after soldering, I realised that a plastic piece was missing from the power ribbon cable to the power and eject buttons.
  • SylverReZ @ SylverReZ:
    Now I could go with soldering the contacts from the cable to the connector on the mobo, but doesn't sound like a good permanent solution.
  • Maximumbeans @ Maximumbeans:
    Man, that's beyond my brain :rofl: I'm no good with hardware for now. I'd like to get into hardmods in future though
  • SylverReZ @ SylverReZ:
    @Maximumbeans, Maybe start practice soldering. Get a cheap-ass soldering iron and follow some good YouTube tutorials.
    +1
  • SylverReZ @ SylverReZ:
    Least my experience has gotten better than over a decade ago. My iron would constantly bump into components and break them.
  • Maximumbeans @ Maximumbeans:
    Sounds good. I actually did soldering but like 16 years ago for school so uuuuh probably rusty haha
  • SylverReZ @ SylverReZ:
    @Maximumbeans, Same here. I did soldering at school from a teacher who I honestly liked since he had plenty of good electronics experience.
    +1
  • Maximumbeans @ Maximumbeans:
    I wish I could play chess well
    +1
  • Maximumbeans @ Maximumbeans:
    Useless but a true art
    +1
  • SylverReZ @ SylverReZ:
    @Maximumbeans, I had a friend who had a glass chess set for their birthday.
  • SylverReZ @ SylverReZ:
    It was like all clear and fancy. Tbf I'm not too experienced with chess, but would like to learn someday.
  • Maximumbeans @ Maximumbeans:
    That sounds really cool
  • Maximumbeans @ Maximumbeans:
    I know the basics but no strategy at all :rofl:
    Maximumbeans @ Maximumbeans: I know the basics but no strategy at all :rofl: