Hartie95 / BootCtr9

3DS ARM9 code execution at boot
GNU General Public License v2.0
48 stars 4 forks source link

A9LH Netloader Companion support #4

Closed d0k3 closed 8 years ago

d0k3 commented 8 years ago

Take a look here: https://github.com/d0k3/A9LH-Netload-Companion

This is installable as a CIA, takes a payload over Wifi, verifies and stores it as "/arm9testpayload.bin" on the SD card, then reboots the console. On reboot, I'd use BootCTR9, with this .ini entry:

[KEY_X] path = /arm9testpayload.bin delay = 1000 offset = 0x0 payload = 1 screenEnabled = 1

This is the fastest way (for developers) to test an ARM9 payload right now, and works pretty similar to how Homebrew Menu does in conjunction with the netloader.

Now, to make this even more convenient, I suggest this addition to BootCTR9:

[COMPANION] path = /arm9testpayload.bin delay = 1000 offset = 0x0 payload = 1 screenEnabled = 1

... where, if the file "/arm9testpayload.bin" exists, it would be treated as default, renamed to something else ("/arm9testpayload.old", f.e.), then run. The rename is so that on the next boot the file won't be automatically run again. With this additional config tag, 'normal' users would not be afftected at all, and developers would have some freedom to change the run parameters.

I already took a look into your source, wondering if I could make that change myself, but as it is now, I am a little bit afraid of breaking stuff.

Anyways, what do you think about this?

Hartie95 commented 8 years ago

I will take a look at it, but it looks interesting. It could take some time for me to be able to implement it, because I have not much time atm to work at it. In theory there should not be much you could break, but there are some changes on my local drive, which will reorganize some stuff, that is not commited yet(because I want to get this arm11 thread detection working, but it crashes most of the time if I try to access memory I change from arm11 on arm9).

Hartie95 commented 8 years ago

I think I will add this in the next days and do a pre 1.0 release, after its working.

d0k3 commented 8 years ago

Alright, sounds good! Be sure to give me a quick note when you do, cause as of now, A9NC is pretty specialized to work with Luma3DS (cause that was for a long time the only thing that made sense).

https://github.com/d0k3/A9NC/releases

Hartie95 commented 8 years ago

Do you think it would be better to rename the payload or delete it after it got loaded?

d0k3 commented 8 years ago

I think renaming would be better. But, if the renamed one already exists, that should be overwritten with the newer one. Just my idea, it's your choice actually :)

Hartie95 commented 8 years ago

OK, I had time to work a bit on BootCTR9, and Companion support is now implemented. It has its own section with all payload configurations, and the payload is move to payloadname.old after loading, which will be replaced if it already exists. After I cleaned up the code I will push it and add the needed informations to the needed Informations to the wiki pages. I will also release the Pre 1.0 in the next time.

d0k3 commented 8 years ago

So, what filename, what folder does it use for the temporary payload (by default)? I'm asking because I will have to add it to the list of possible filenames. The way it works now is, after the ransfer is completed, the user has to push a button to write to a filename of choice and reboot the console.

Hartie95 commented 8 years ago

It uses a payload configuration section with an special name, so it is user defined. So, its totally free for you to select the preferred default filename and location for non luma bootloaders with support for your a9lh netloader companion.

d0k3 commented 8 years ago

Alright. Just so you know (if you want to add it to the sample config or anything like that), I will put in "/a9nc.bin" as possible output name. I'm open for other suggestions, too. "/arm9testpayload.bin" is no more in there, I guess it is too long, too.

Hartie95 commented 8 years ago

Added it to the example configuration in the wiki, and pushed the code. Now the a9lh net companion is officially supported by BootCTR9.