Homebrew [Re-release] BootCtr - A simple boot manager for 3DS

  • Thread starter Thread starter m45t3r
  • Start date Start date
  • Views Views 78,811
  • Replies Replies 352
  • Likes Likes 33
Ok thanks you very much!

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

Excuse for the questions, but offset, payload, cfw_fix and debug are obligate in the document?
EDIT: I have my answer! Thanks for your homebrew
 
Last edited by nooby89,
I said yesterday that I hoped v1.5 would be the last version in a while. Well, here I am releasing a new version: v1.6

This version only adds a [GLOBAL] section, so you can override application defaults like you could do before version v1.5 in [DEFAULT] section. However, this is actually better since it will only override the defaults if you want, instead of always, and you can still use [DEFAULT] without any side effects.

Of course, I wouldn't release a new version with a change so boring. Well, because today I had the crazy idea of adding boot screen support in BootCtr, and a proof-of-concept is working in branch boot_screen.

For those who want to test this code now, in attachment there is a version with boot screen support. The boot screen is hardcoded for now (I did the boot screen in literally 5 minutes, and my drawing skills sucks, completely), however feel free to change the boot screen by simple creating a new PNG file of size 400x240 and putting in folder gfx, named boot_screen.png. Compile using devkitARM and it should work.

This release drop support for both cfw_fix and debug. I always print entry information in bottom screen so debug is useless, and to render a image in 3DS I had to use something similar to cfw_fix anyway, so it wouldn't make sense to disable it. The delay option is set by default to 2500 (2.5s), so you can actually see the boot screen.

Now, for this feature be merged in master, I need to do two things: first, make the support optional, customizable via boot_config.ini (ideally, it will be possible to set a different boot screen for each entry, and if you want to set globally you would set in [GLOBAL]). Secondly, I need to create a better default logo. However, I don't have the skills to do so.

So if any of you want this feature with official support, I request help in creating a decent boot screen for BootCtr. Just create a PNG image with size 400x240 and post here. I would prefer an image without any copyright, however any decent image may do the trick (don't think anyone will try to shut down my project just because of a small image). If no one helps, this feature will probably die in branch boot_screen, not that it would really be that bad since anyone that would want this could simple compile the source from this branch. However, the tendency of code in branches not used is to bit rot.
 

Attachments

  • Like
Reactions: ronildo66
How about just making it where a boot screen is optional and add support where each boot option has its own image.

Example:
Make it with a single boot screen built in that can be disabled in config. But also have it where you can replace each boot sequence with its own boot screen.
 
How about just making it where a boot screen is optional and add support where each boot option has its own image.

Example:
Make it with a single boot screen built in that can be disabled in config. But also have it where you can replace each boot sequence with its own boot screen.
This is exactly what I said in the post above:
Now, for this feature be merged in master, I need to do two things: first, make the support optional, customizable via boot_config.ini (ideally, it will be possible to set a different boot screen for each entry, and if you want to set globally you would set in [GLOBAL]). Secondly, I need to create a better default logo. However, I don't have the skills to do so.
Anyway, I still want a nice boot screen by default, so I would like someone with better design skills to do it.
 
I said yesterday that I hoped v1.5 would be the last version in a while. Well, here I am releasing a new version: v1.6

This version only adds a [GLOBAL] section, so you can override application defaults like you could do before version v1.5 in [DEFAULT] section. However, this is actually better since it will only override the defaults if you want, instead of always, and you can still use [DEFAULT] without any side effects.

Of course, I wouldn't release a new version with a change so boring. Well, because today I had the crazy idea of adding boot screen support in BootCtr, and a proof-of-concept is working in branch boot_screen.

For those who want to test this code now, in attachment there is a version with boot screen support. The boot screen is hardcoded for now (I did the boot screen in literally 5 minutes, and my drawing skills sucks, completely), however feel free to change the boot screen by simple creating a new PNG file of size 400x240 and putting in folder gfx, named boot_screen.png. Compile using devkitARM and it should work.

This release drop support for both cfw_fix and debug. I always print entry information in bottom screen so debug is useless, and to render a image in 3DS I had to use something similar to cfw_fix anyway, so it wouldn't make sense to disable it. The delay option is set by default to 2500 (2.5s), so you can actually see the boot screen.

Now, for this feature be merged in master, I need to do two things: first, make the support optional, customizable via boot_config.ini (ideally, it will be possible to set a different boot screen for each entry, and if you want to set globally you would set in [GLOBAL]). Secondly, I need to create a better default logo. However, I don't have the skills to do so.

So if any of you want this feature with official support, I request help in creating a decent boot screen for BootCtr. Just create a PNG image with size 400x240 and post here. I would prefer an image without any copyright, however any decent image may do the trick (don't think anyone will try to shut down my project just because of a small image). If no one helps, this feature will probably die in branch boot_screen, not that it would really be that bad since anyone that would want this could simple compile the source from this branch. However, the tendency of code in branches not used is to bit rot.


so for this new version 1.6 it means GLOBAL doesnt contain a "path" cuz it already handle the all of the rest of the path on boot ini file...
for example

[GLOBAL]
delay = 1500
offset = 0x12000
payload = -1
cfw_fix = 1
debug = 0

[DEFAULT]
path = /rxtools_xmple.3dsx

[KEY_A]
path = /psta_xmple.3dsx

[KEY_B]
path = /reinand_xmple.3dsx

so this means rxtools, psta, reinand will going to use its setting on the global area? am i right... so the [DEFAULT] here is overriden by [global] setting... am i right? or the [default] still handles internal command (has its own power to maintain its defaultness) regardless with or without global?
 
so for this new version 1.6 it means GLOBAL doesnt contain a "path" cuz it already handle the all of the rest of the path on boot ini file...
for example

[GLOBAL]
delay = 1500
offset = 0x12000
payload = -1
cfw_fix = 1
debug = 0

[DEFAULT]
path = /rxtools_xmple.3dsx

[KEY_A]
path = /psta_xmple.3dsx

[KEY_B]
path = /reinand_xmple.3dsx

so this means rxtools, psta, reinand will going to use its setting on the global area? am i right... so the [DEFAULT] here is overriden by [global] setting... am i right? or the [default] still handles internal command (has its own power to maintain its defaultness) regardless with or without global?
Yeah, everything is correct. However you are setting in [GLOBAL] with the values used by default already, so why don't you just remove your [GLOBAL] section? [GLOBAL] is actually for special purposes only (like if you want to globally enable debug to test something).

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

And in attachment is another version pre-2.0. This time, instead of messing with a boot image, I decided to make a boot screen only using ASCII art.

I think the result is quite nice. At least it is much better than the my first attempt at a boot screen. This one may be more likely to what I would do in BootCtr too, since it is very simple code wise.

This doesn't mean that I gave up of putting images as a boot screen, however I don't know if someone is really that interested in having custom boot images anyway. I am waiting your feedback.
 

Attachments

Yeah, everything is correct. However you are setting in [GLOBAL] with the values used by default already, so why don't you just remove your [GLOBAL] section? [GLOBAL] is actually for special purposes only (like if you want to globally enable debug to test something).

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

And in attachment is another version pre-2.0. This time, instead of messing with a boot image, I decided to make a boot screen only using ASCII art.

I think the result is quite nice. At least it is much better than the my first attempt at a boot screen. This one may be more likely to what I would do in BootCtr too, since it is very simple code wise.

This doesn't mean that I gave up of putting images as a boot screen, however I don't know if someone is really that interested in having custom boot images anyway. I am waiting your feedback.

hope that it will be possible to set a different boot screen for each entry/section :-)
 
Yeah, everything is correct. However you are setting in [GLOBAL] with the values used by default already, so why don't you just remove your [GLOBAL] section? [GLOBAL] is actually for special purposes only (like if you want to globally enable debug to test something).

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

And in attachment is another version pre-2.0. This time, instead of messing with a boot image, I decided to make a boot screen only using ASCII art.

I think the result is quite nice. At least it is much better than the my first attempt at a boot screen. This one may be more likely to what I would do in BootCtr too, since it is very simple code wise.

This doesn't mean that I gave up of putting images as a boot screen, however I don't know if someone is really that interested in having custom boot images anyway. I am waiting your feedback.

The ASCII looks cool but because of the loss of voodoo powers, there's the return of screen garbage before loading homebrew menu and cfw.

Build 1.6 Seems solid, if anything I'd hardcode the cfw-fix, reducing clutter in the boot config file (since people are already confused about it even though you've written it all out a thousand times).

As for people wanting separate boot images for each program?! Why? You see it for a second and it loads your desired program. BootCtr is the simple fast clean loader. Ideally we want the fastest most OEM looking loader with reliable use.

Right now running ReiNand 3.2b with no splash screen, and BootCtr 1.6 I get a nice fast clean looking boot. If I could get it to compile properly I would even edit the menuhax payloads to have no debug screen/color flashes. If things do not boot within 25 seconds it's screwed up lol that's all there is to it.

Keep it simple @m45t3r if anything make an official fork with all the bells and whistles but keep the original quick and clean =D
 
The ASCII looks cool but because of the loss of voodoo powers, there's the return of screen garbage before loading homebrew menu and cfw.

Build 1.6 Seems solid, if anything I'd hardcode the cfw-fix, reducing clutter in the boot config file (since people are already confused about it even though you've written it all out a thousand times).

As for people wanting separate boot images for each program?! Why? You see it for a second and it loads your desired program. BootCtr is the simple fast clean loader. Ideally we want the fastest most OEM looking loader with reliable use.

Right now running ReiNand 3.2b with no splash screen, and BootCtr 1.6 I get a nice fast clean looking boot. If I could get it to compile properly I would even edit the menuhax payloads to have no debug screen/color flashes. If things do not boot within 25 seconds it's screwed up lol that's all there is to it.

Keep it simple @m45t3r if anything make an official fork with all the bells and whistles but keep the original quick and clean =D

Actually, you don't loose voodoo powers. I just removed the option to disable it, since voodo fix are actually quite similar to what is necessary to render something on screen. However, I did not notice the garbage screen, thanks for report, I will try something to remove it again (note that it may be impossible to do it with boot screen, since the no garbage screen thing was actually quite a luck shot).

Well, v1.6 was released exactly for this motive: I wanted one last version without big changes before starting to play with boot screen. So for everyone that don't want any bells and whistles v1.6 is definitely the way to go.

There is some user cases that may be interesting to have custom boot images for each program. I think if the option exist it would be cool, the difference between allowing only one global custom image and custom image per entries (with the option to a global custom one too) is minimal, thanks to the way I designed the code. The real challenge is supporting custom images without bloating the application too much (i.e. I don't want to include a .PNG decoder in BootCtr, this would be overkill).

For sure, I did not like the idea of boot screen myself untill I played with one just for fun (the first experiment with image support). There is some added value of using a boot screen, the best is the fact that this increase user feedback. This is important because, even if you could wait 25 seconds untill you realize something is screwed up, it would be much better to realize this in a split second, and a boot screen helps that (i.e. the boot screen did not appear, something is wrong).
 
Last edited by m45t3r,
Here we go, the new v2.0.0 release.

This release includes support for boot screens, both the ASCII art (that is used by default) and image support by using the BGR image format. You can convert common image files to BGR by using this website: https://xem.github.io/3DShomebrew/tools/image-to-bin.html

This release drops support for both debug and cfw_fix options, since splash support substitute both. For those who don't like splash screen can disable it by passing splash = 0 in [GLOBAL] section in boot_config.ini file. This will bring the benefits of using cfw_fix = 1 in the older versions of BootCtr, that means no garbage screens in HBL (however, the improved CFW boot rate is used nonetheless).
 
Last edited by m45t3r,
Here we go, the new v2.0.0 release.

This release includes support for boot screens, both the ASCII art (that is used by default) and image support by using the BGR image format. You can convert common image files to BGR by using this website: https://xem.github.io/3DShomebrew/tools/image-to-bin.html

This release drops support for both debug and cfw_fix options, since splash support substitute both. For those who don't like splash screen can disable it by passing splash = 0 in [GLOBAL] section in boot_config.ini file. This will bring the benefits of using cfw_fix = 1 in the older versions of BootCtr, that means no garbage screens in HBL (however, the improved CFW boot rate is used nonetheless).

does this support each program to hve different boot screen?
and bout cfw fix... even if its already droped in this release... the default is enable am i right?
 
does this support each program to hve different boot screen?

Yeah, just set a different splash_image to each entry. For example:
Code:
[DEFAULT]
path = /Cakes.dat
splash_image = /splash/cakes.bin

[KEY_A]
path = /rxTools/sys/code.bin
splash_image = /splash/rxtools.bin

You can even set a splash_image in [GLOBAL] and set a particular entry with another splash_image. In this case, the entries that you don't set splash_screen option will simple use what you set in [GLOBAL]. For example:
Code:
[GLOBAL]
splash_image = /splash/global.bin

[DEFAULT]
path = /Cakes.dat
splash_image = /splash/cakes.bin ;CakesFW will use cakes.bin splash screen

[KEY_A]
path = /rxTools/sys/code.bin
splash_image = /splash/rxtools.bin ;RxTools will use rxtools.bin splash screen

[KEY_B]
path = /hbl.3dsx ;no splash_screen is set, will use global.bin from [GLOBAL] section

and bout cfw fix... even if its already droped in this release... the default is enable am i right?

Yeah, I just removed the option to disable it since you can't really disable it anymore (because the splash screens are a kind of cfw_fix already). Another reason is because cfw_fix just works and there is no real reason to disable it.
 
Last edited by m45t3r,
  • Like
Reactions: noctis90210
i don't know who or where to ask this but is it possible to use menuhax autoboot to boot rxtools with linked nands without bootloop?
i have a friend who refuses to unlink nands and for some reason also can't manage to hold down a button at the right time.
i just wanted to double check somewhere before giving up on him.
 

Site & Scene News

Popular threads in this forum