As you may be able to tell from the title, this started as a fork from arm9select, so credits go to @FIX94 and whoever he credited. This also uses code from Decrypt9 for the password, so credits to @d0k3 and whoever I should credit too, but I have no idea who they are. You can PM me or post in the topic if you want to be credited. This is now a fork from BootCtr9 and here's the repo with releases.
https://github.com/Hayleia/arm9loaderhay/releases
Why another boot manager ?
Current boot managers are really convenient to the user. Some have a menu, others let you configure a key for each payload... But that might actually be too convenient. If you're a parent and want your kid to be able to play games without necessarily having access to GodMode9 for example, maybe you'd want them not to land there by accident just because they were pressing the L button by chance.
So how is it possible to prevent that ? Well, setting up more than one key for a payload (L+A is less likely to happen by accident than just L) or setting up a password for certain payloads maybe. Well that is possible with arm9loaderhay.
Please not that the whole purpose of this is to be less convenient than other boot managers, so if you're just looking for a way to manage your payloads, maybe that's not what you're looking for. Or maybe it is exactly what you need.
Wonderful, how do I use this ?
Like arm9select, this payload only looks at the contents of a specific folder, which is the "arm9select" folder for arm9select and the "arm9loaderhay" folder for arm9loaderhay.
Like arm9select, this folder can contain a default.bin payload and a default_bl file if the default payload needs backlight.
Now, things get different from arm9select.
In your "arm9loaderhay" folder, you can have subfolders. Each folder represents a payload that will be launched with a certain key combination.
I didn't test everything though, so I am not saying it works perfectly, and I warned you, so I can't be held responsible if your 3DS bricks from using this program (even though it shouldn't happen). For example, I can't test all existing passwords and all key combinations.
(And if you don't trust me because I never released anything, you can read this. Of course, it doesn't prove my program works (and maybe it doesn't, that's the first thing I compile for a 3DS) but at least I'm not a crook doing stuff that doesn't work on purpose).
https://github.com/Hayleia/arm9loaderhay/releases
Why another boot manager ?
Current boot managers are really convenient to the user. Some have a menu, others let you configure a key for each payload... But that might actually be too convenient. If you're a parent and want your kid to be able to play games without necessarily having access to GodMode9 for example, maybe you'd want them not to land there by accident just because they were pressing the L button by chance.
So how is it possible to prevent that ? Well, setting up more than one key for a payload (L+A is less likely to happen by accident than just L) or setting up a password for certain payloads maybe. Well that is possible with arm9loaderhay.
Please not that the whole purpose of this is to be less convenient than other boot managers, so if you're just looking for a way to manage your payloads, maybe that's not what you're looking for. Or maybe it is exactly what you need.
Wonderful, how do I use this ?
Like arm9select, this payload only looks at the contents of a specific folder, which is the "arm9select" folder for arm9select and the "arm9loaderhay" folder for arm9loaderhay.
Like arm9select, this folder can contain a default.bin payload and a default_bl file if the default payload needs backlight.
Now, things get different from arm9select.
In your "arm9loaderhay" folder, you can have subfolders. Each folder represents a payload that will be launched with a certain key combination.
- The name of the folder is YXLRdulrTEBA where you replace any character with "-" to describe keypresses. The meaning of YXLRBA is obvious. The D-Pad is represented with dulr (in lowercase to avoid conflict with LR) and TE is for START and SELECT (they both start with an S so they are described with their second letter).
For example, "----------BA" and "--L--u------" are valid names, describing "B+A" and "L+Up". - The folder needs an "arm9loaderhax.bin" payload, which will obviously be the payload launched when pressing the keys described by the folder's name
- The folder can contain a file named "backlight". Its presence tells that the payload here needs backlight when launched. This is basically only useful if your arm9loaderhax supports screen init and turns backlight off (like Fix94's arm9loaderhax, see the link for arm9select at the top of this post)
- The folder can contain a file named "password" that contains the password for the present payload. Use the same convention as for the folder's name. For example, if your password is Left,Right,L,START, write lrLT.
Notice that any password longer than 10 characters will be trimmed down to 10.
Also notice that any unrecognized character will mark the end or your password. "ABXYwatLR" for exemple is equivalent to "AXBY".
The last thing to notice is that you can't use the same key twice in a row, so ABA is valid but AAB isn't. - The folder can contain anything else, like a file named "CtrBootManager" if you want to say that the "arm9loaderhax.bin" payload present in that folder is CtrBootManager's
Code:
SD
├── arm9loaderhax.bin
└── arm9loaderhay/
├── default.bin
├── default_bl
├── ----------BA/
│ ├── arm9loaderhax.bin
│ ├── backlight
│ └── This_Is_CtrBootManager_On_A_B
└── ------l--T--/
├── arm9loaderhax.bin
├── backlight
├── password
└── This_Is_GodMode9_On_LEFT_SELECT
I didn't test everything though, so I am not saying it works perfectly, and I warned you, so I can't be held responsible if your 3DS bricks from using this program (even though it shouldn't happen). For example, I can't test all existing passwords and all key combinations.
(And if you don't trust me because I never released anything, you can read this. Of course, it doesn't prove my program works (and maybe it doesn't, that's the first thing I compile for a 3DS) but at least I'm not a crook doing stuff that doesn't work on purpose).
Last edited by Hayleia,