Could I just compile stage 1 and stage 2 of Fix94's A9LH or can someone compile for me?
You could follow this and see where it gets you. https://gbatemp.net/threads/tutoria...payload_stage1-bin-payload_stage2-bin.420899/
Could I just compile stage 1 and stage 2 of Fix94's A9LH or can someone compile for me?
This is a payload manager such as the more convenient arm9select, CtrBootManager and friends.But what does this?
True this. But you can put comment files in your folders. Or read what I say belowDown side to this? I would have to write down what each button does.
I just tried the 2016/04/02 build on my N3DS XL and I still can launch it. Well, it says "KeyY not found" and "KeyX not found" then "Initialization failed" but that's my fault, at least the program seems to run fine.Could it just be a N3DS problem? I'll keep testing this out.
Not so sure. Because YBLd could also be described with LdBY and whatever other permutation you can think about. So there isn't any convenient way to check this. Because right now, all I do is check the current pad state, translate that into a unique folder name then check if that folder exists. But yeah, just think about it, if you have a YBLd and a LdBY folder in your SD card then (that's stupid but) what is arm9loaderhay supposed to do ? And even if you don't have a weird configuration, it will need the program to run the other way round, check all folders, translate their names into pad states and check if the pad states corresponds, which is probably doable but a lot more annoying to do.Also maybe someday instead of binary folders, you could actually use the same password combinations as folder combinations! So like you could use "YBLd" folder to hold The y, b, X, and down button
Maybe you could set parameters so that the letters HAVE to be in order and it'll just read the letters there on the folder. I'm not a great coder so I don't know if this would work.This is a payload manager such as the more convenient arm9select, CtrBootManager and friends.
But this one here is made less convenient on purpose so that the user can still launch what they want, but random people can't.
True this. But you can put comment files in your folders. Or read what I say below
I just tried the 2016/04/02 build on my N3DS XL and I still can launch it. Well, it says "KeyY not found" and "KeyX not found" then "Initialization failed" but that's my fault, at least the program seems to run fine.
Not so sure. Because YBLd could also be described with LdBY and whatever other permutation you can think about. So there isn't any convenient way to check this. Because right now, all I do is check the current pad state, translate that into a unique folder name then check if that folder exists. But yeah, just think about it, if you have a YBLd and a LdBY folder in your SD card then (that's stupid but) what is arm9loaderhay supposed to do ? And even if you don't have a weird configuration, it will need the program to run the other way round, check all folders, translate their names into pad states and check if the pad states corresponds, which is probably doable but a lot more annoying to do.
At worst, if readability is the main issue here, I guess I can do something weirder but probably already better like writing "______________BA" instead of "0000000000000011" ? That would be doable. Still needs the user to check the doc to create folders, but once they are created, their names make sense to both them and the program ?
Yeah, if the order is fixed, it solves the "unique name" problem. But then, it's also not so much more harder to read and write "______________BA" than "BA"Maybe you could set parameters so that the letters HAVE to be in order and it'll just read the letters there on the folder. I'm not a great coder so I don't know if this would work.
Yes I can. Basically any character that can be put in a folder name.instead of underscores, could you use these? "----" so we could count them easily?
Btw, I got Decrypt9 to work again, I just had a weird setup mixed with Aurora Wright's newestly compiled A9LH and AuReiNand's Bootloader. I just reinstalled FIX94's A9LH and got rid of the setupYes I can. Basically any character that can be put in a folder name.
Yes! Read the first post on how to set up the password and all that. You also need FIX94's A9LH here: https://gbatemp.net/attachments/a9lh-payloads-zip.44071/this is splendid for people like ,families , a guy having a lil sis/bro or basically for a parent having kids.
after all this is like booting it up but you needing to enter a password nay ?
Depends. If you specify a password then yes.this is splendid for people like ,families , a guy having a lil sis/bro or basically for a parent having kids.
after all this is like booting it up but you needing to enter a password nay ?
Love it! A little more Noob-Friendly now!Depends. If you specify a password then yes.
Also, I never tried that with the default.bin. I guess it should work with a "0000000000000000" folder and no default.bin but I never tried it... I was thinking that usually, the default boot is pretty safe and people want to add safety for more sensible payloads like ones that can erase your NAND and stuff.
And here is a test build. Instead of zeroes and ones, take this base name "----YXLRdulrTEBA" and replace whatever you want with "-" to have a valid name describing a key combination for your folder.
Tested on my N3DS XL with --------------BA and ----YX----------, worked.
Ok, but did it work for you ?Love it! A little more Noob-Friendly now!
Some might in the future. Adding ZL and ZR would make it more complete but if you don't want to add it then just get rid of it. Your callOk, but did it work for you ?
Also, should I get rid of the first four characters ? I mean, they are not used (the code just really can't put them at something else than "-"), and if they were, I guess from this that they would probably describe only ZL and ZR, but are people really going to use these in their combinations and passwords ? Well, Old 3DS users can already say "no", but even New 3DS users, are they going to use ZL and ZR ?
Why are there 4 ---- btw? ZL and ZR are only 2 buttons extraSome might in the future. Adding ZL and ZR would make it more complete but if you don't want to add it then just get rid of it. Your call
No idea. From hid.h in ctrulib, bits from 0 to 11 are the ones I use, bits 14 and 15 are ZL and ZR, then 12 and 13 are... useless ?? So this makes the "vector" 16 bits even though two bits are not used.Why are there 4 ---- btw? ZL and ZR are only 2 buttons extra
x and yNo idea. From hid.h in ctrulib, bits from 0 to 11 are the ones I use, bits 14 and 15 are ZL and ZR, then 12 and 13 are... useless ?? So this makes the "vector" 16 bits even though two bits are not used.
Then yeah, as usual, same as for removing "-", it is obviously possible to only use the 14 bits I want instead of 12 or 16 with two useless ones, but it adds code for no reason. I might end up doing it anyway since ZL and ZR can be funny to use (make a password using 4 keys that no one sees you press when you type it ) but thos two bits are bothering me.
The only problem I see is... what on earth do I use to describe ZL and ZR ? "L" and "R" are already taken for L and R, "l" and "r" are already taken for Left and Right, so what can be logical for ZL and ZR ??
Doesn't seem less logical than anything else I thought about but lol, the confusion that this will createx and y
I guess you could just get rid of itDoesn't seem less logical than anything else I thought about but lol, the confusion that this will create
Well, now that I think of it, if I the program takes at least bits 14 and 15 into account, they'll be at 1 for no reason all the time on Old 3DS (problem mentionned on the original first post and that post quoting the orignal first post too). So I'd need a way to make the difference between an O3DS and a N3DS or force O3DS users to specify both Z shoulders in every folder even though they don't (and can't) use them -.-I guess you could just get rid of it
That would be, that's ok thoughWell, now that I think of it, if I the program takes at least bits 14 and 15 into account, they'll be at 1 for no reason all the time on Old 3DS (problem mentionned on the original first post and that post quoting the orignal first post too). So I'd need a way to make the difference between an O3DS and a N3DS or force O3DS users to specify both Z shoulders in every folder even though they don't (and can't) use them -.-
Too bad, selecting payloads and typing a password using only shoulders would have been awesome.
SD
├── arm9loaderhax.bin
└── arm9loaderhay/
├── default.bin
├── default_bl
├── 0000000000000011/
│ ├── arm9loaderhax.bin
│ ├── backlight
│ └── This_Is_CtrBootManager_On_A_B
└── 0000000000100100/
├── arm9loaderhax.bin
├── backlight
├── password
└── This_Is_GodMode9_On_LEFT_SELECT
int main()
{
FATFS fs;
if(f_mount(&fs, "0:", 0) == FR_OK)
{
//Read pad state
u16 padInput = (~(*(u16*)0x10146000)) & 0x0FFF;
FIL f;
//Deduce base filename
u16 N = padInput;
char base[] = "/arm9loaderhay/0000000000000000/arm9loaderhax.bin";
char back[] = "/arm9loaderhay/0000000000000000/backlight";
char pass[] = "/arm9loaderhay/0000000000000000/password";
for (int i=0; i<16; i++) {
base[30-i] = '0' + (N%2);
back[30-i] = '0' + (N%2);
pass[30-i] = '0' + (N%2);
N = N/2;
}
//Password if needed
if (f_open(&f, pass, FA_READ | FA_OPEN_EXISTING) == FR_OK) {
//u32 password[] = {BUTTON_LEFT, BUTTON_RIGHT, BUTTON_DOWN, BUTTON_UP, BUTTON_A, 0};
u32 password[11]; //password can't be longer than 10, because a max is reasonably needed and no one will go over 10...
for (int i=0; i<11; i++) password[i] = 0;
char read[10];
UINT pass_length;
f_read(&f, read, 10, &pass_length);
f_close(&f);
//convert char like 'A' or 'B' into u32 like 0001 or 0010...
char ch[] = "ABETrludRLXY";
for (int i=0; i<pass_length; i++) {
char cur = read[i];
int index = -1;
for (int j=0; j<12; j++) if (cur == ch[j]) index = j;
if (index != -1) password[i] = 1<<index;
}
int n = 0;
int miss = 0;
u32 pad = 0;
u32 oldPad;
while (password[n] != 0) {
oldPad = pad;
while (pad == 0 || pad == oldPad) pad = InputWait() & 0x0FFF;
if (password[n] == pad) {
n++;
} else {
miss++;
n = 0;
}
}
}
if (tryLoadFile(base)) {
jumpAndTryEnableBL(back);
} else if (tryLoadFile("/arm9loaderhay/default.bin")) {
if(*(vu8*)CFG_BOOTENV == COLDBOOT) {
jumpAndTryEnableBL("/arm9loaderhay/default_bl");
} else { //dont enable backlight again on soft reset
jump();
}
}
}
i2cWriteRegister(I2C_DEV_MCU, 0x20, (u8)(1<<0));
return 0;
}