Homebrew Proposed SD directory restructuring for homebrew

  • Thread starter Thread starter TheCruel
  • Start date Start date
  • Views Views 25,045
  • Replies Replies 243
  • Likes Likes 54
I wasn't implying JK_ thought it was a bad location, but that users were unhappy because it was a bad location. That should be considered when trying to come up with a solution that end users will accept.
He was kind enough to ask me before reverting the change, and I love him for it. He made it very clear that it wasn't the path that was the issue, it was the change.

@Shadowhand I dunno. It just seems very repetitive to have /3DS/ inside of /Homebrew/ and then the application's name. You could also argue /3DS/ is repetitive for the /Nintendo 3DS/ folder existing, but. . it's a lengthy debate.
Tell that to @Gelex
 
@Shadowhand I like the idea of having a "root" directory for 3ds-related stuff, but I think this can be accomplished by just moving homebrew to "/3ds/apps/" and using "/3ds/" as the root directory, which imo is less confusing than moving everything to a "/homebrew/3ds/" folder.
 
  1. /homebrew/ is a good idea(TM) because /3ds/ is a bit ambiguous to users, doubly so with /Nintendo 3DS/ being already in use by the 3DS itself.
  2. /homebrew/3ds/ is a very good idea if this convention is carried to other platforms. I share my SD card across three different platforms, we'd just move the clutter elsewhere instead.
 
  • Like
Reactions: Shadowhand
@Shadowhand I like the idea of having a "root" directory for 3ds-related stuff, but I think this can be accomplished by just moving homebrew to "/3ds/apps/" and using "/3ds/" as the root directory, which imo is less confusing than moving everything to a "/homebrew/3ds/" folder.
As I said, I think /homebrew/ is a better folder than /3ds/ because if people use--

  1. /homebrew/ is a good idea(TM) because /3ds/ is a bit ambiguous to users, doubly so with /Nintendo 3DS/ being already in use by the 3DS itself.
  2. /homebrew/3ds/ is a very good idea if this convention is carried to other platforms. I share my SD card across three different platforms, we'd just move the clutter elsewhere instead.

This guy literally explained my point.
 
  1. /homebrew/ is a good idea(TM) because /3ds/ is a bit ambiguous to users, doubly so with /Nintendo 3DS/ being already in use by the 3DS itself.
  2. /homebrew/3ds/ is a very good idea if this convention is carried to other platforms. I share my SD card across three different platforms, we'd just move the clutter elsewhere instead.
1. How is "3ds" ambiguous when it's what people *already use*, and the name clearly suggests "3DS stuff is in here"?
2. How do you plan to carry this over to other platforms, when they've already standardized on having system directories in the root for years?
 
However, I don't think a lot of people do share their SD cards across systems. That's just taboo because it's more of a cluster than just handling one SD per system.
 
I think this is a great idea, but there's one teeny tiny problem: you're assuming all devs would want to follow the standard.

I feel xkcd is perfect for this moment
standards.png

Especially with ARM9 homebrew, given how every single chainloader and such has a different configuration format and directories.
 
Last edited by Wolfvak,
  1. /homebrew/ is a good idea(TM) because /3ds/ is a bit ambiguous to users, doubly so with /Nintendo 3DS/ being already in use by the 3DS itself.
  2. /homebrew/3ds/ is a very good idea if this convention is carried to other platforms. I share my SD card across three different platforms, we'd just move the clutter elsewhere instead.
ambiguous? The 3ds homebrew scene has been using that directory for homebrew since Nov. 2014!
And I like it because it starts with a "3", putting it at the top of my sd's directories list. Makes it easy to find.
 
  • Like
Reactions: klear
It's weird. My version of hblauncher doesn't set the current working directory correctly, so `getcwd` returns "/", but if I launch the 3dsx normally, it's set to "sdmc:/3ds/", which is correct (considering the 3dsx is directly in /3ds/.

But otherwise, since Ninjhax2.x, something (most possibly the homebrew launcher) sets the current working directory to the directory the 3dsx file is in, so I don't get why some people still hardcode their paths.

Okay, to be fair, you OBVIOUSLY won't get "sdmc:/3ds/" as your working directory if the homebrew is installed as a .cia, but c'mon, it's like a feature that only a few select people know about (and even less use it):P
 
Last edited by Sono,
No :( `getcwd` returns "/" :( I thought the current working directory is set to /3ds/appname :cry:
That doesn't seem right. Unless something was changed recently in HBL, it should definitely be /3ds/<app>, I know WinterMute was sure strongly in favor of that being the expected state.

Regardless, the apps will still work even if devs don't want to use any appdata directory. So there will be little in terms of transition pains.

--------------------- MERGED ---------------------------

But otherwise, since Ninjhax2.x, something (most possibly the homebrew launcher) sets the current working directory to the directory the 3dsx file is in, so I don't get why some people still hardcode their paths.
I know I do because I release homebrew as both 3dsx and CIA (when possible).
 
  • Like
Reactions: Drakia
What makes "/homebrew/" any better than the SD root for these directories? Also, considering both the Wii and Wii U scene currently put their system directories in the root, you'll have a difficult time getting everybody to change over.
Except that they don't. Wii folders go in the root, WiiU folders go under /wiiu, showing there's some need for namespacing.

However, I don't think a lot of people do share their SD cards across systems. That's just taboo because it's more of a cluster than just handling one SD per system.
What about people who've hacked their Wii U and its virtual Wii? They pretty much have to.

I think this is a great idea, but there's one teeny tiny problem: you're assuming all devs would want to follow the standard.
It could be a standard for going forward with.
 
I have so much random and ambiguously named files on my sd card's root directory that may or may not even be necessary, this would be a most welcome change!
 
Except that they don't. Wii folders go in the root, WiiU folders go under /wiiu, showing there's some need for namespacing.
...ah. I thought Wii homebrew used "/wii/", but it looks like I was mistaken. Either way, "/homebrew/" is unnecessarily verbose, and the Wii U Homebrew Launcher directory structure is a good example.
 
I use the FS functions for easy UTF16 support. It's either that or corrupted folders for japanese games again.

Ye, I use FS functions too, but I don't think there's a real way other than `getcwd` to get the working directory only in homebrew environment.


The only useful and real stuff I can think about which doesn't fuck up everything is to move the *application data* to a different folder, not the 3dsx, either in /3ds/appdata/<appname>, or just simply /3ds/<appname>/random files the app generates, but since the /3ds folder is "cluttered" with the /3ds/<appname>/<appname>.3dsx format, the app data could be stored in /3ds/_appdata_/<appname> for both 3dsx and cia, and the filename won't be cared about, so if I were to rename FBI.3dsx to NetInstaller.3dsx, it would still use the /3ds/_appdata_/FBI/ folder for its data.
In my personal opinion this is the most sophisticated way of handling this stuff (while still being clear as possible, and being able to hardcode paths).
 
Last edited by Sono,
I think this is a great idea, but there's one teeny tiny problem: you're assuming all devs would want to follow the standard.

I feel xkcd is perfect for this moment
standards.png

Especially with ARM9 homebrew, given how every single chainloader and such has a different configuration format and directories.
Well, if they followed Smea's "3ds/[homebrew-name]" standard, I dunno why they don't follow a standard proposed by the community.
 
Well, if they followed Smea's "3ds/[homebrew-name]" standard, I dunno why they don't follow a standard proposed by the community.
Because the HBL "standard" is kind of forced, only applies to old versions, and even then homebrew apps had their files all over the place, especially those that use save games or store their files somewhere other than RomFS
 
  • Like
Reactions: Gray_Jack
...ah. I thought Wii homebrew used "/wii/", but it looks like I was mistaken. Either way, "/homebrew/" is unnecessarily verbose, and the Wii U Homebrew Launcher directory structure is a good example.
I agree. And most importantly, I think it's a change less devs would want to use, and it's hard enough to get anyone to change as it is.

It's not like people are saving a bunch of non-homebrew 3DS and WiiU files anyways.

And iirc, wii uses sd:/apps/ lol, so it's in a worse state. But the scene is so old, nothing will change that.
I think this is a great idea, but there's one teeny tiny problem: you're assuming all devs would want to follow the standard.

I feel xkcd is perfect for this moment
standards.png

Especially with ARM9 homebrew, given how every single chainloader and such has a different configuration format and directories.
Yeah, this is a problem. I think it's best to therefore make it less competing and more compatible with current structure.

Using subdirectories in /3ds/ would be compatible with HBL currently in the starter pack (which will remain the most used for a while). There will simply be an apps directory in their HBL until they upgrade HBL to one with the necessary changes and move their games into /3ds/apps/

Additionally, homebrew devs can still refuse to use any separate /appdata/ subdir without anything breaking, and estbalishing a standard like that would actually not be competing since there is no standard (which is why everyone is saving their shit in root). If someone wants to make arm9 software, they likely just make a new root dir, and if someone is making userland homebrew that's both 3dsx and CIA compatible, they likely choose to hardcode path to /3ds/<game> and pollute their HBL (if ppl use CIA and not 3dsx). For freeShop, I was going to use /3ds/freeShop/ but since I decide to make it CIA-only, I chose to make a directory on root to avoid polluting HBL, no other established place for it.

I think arm9 devs could see the benefits of using something like /3ds/arm9/<app>, but the current /3ds/ destination just isn't inviting for any non-3dsx devs. In fact, this was almost by design. The devs of the 3dsx launcher/format were largely anti-CFW and really didn't want people using CIA or arm9 software. This should come to no surprise to anyone aware of all the private work that was kept from the public.
 
Last edited by TheCruel,

Site & Scene News

Popular threads in this forum