From GameBrew - a wiki dedicated to Video Game Homebrew.
BootCtr is a simple boot manager for 3DS.
It is based on 3DS Homebrew Launcher code by Smealum. The original version is from mashers. This version removed some unused code used by Homebrew Launcher that isn't necessary in a simple bootloader, and added some interesting new features.
- Supports both .3dsx files and binary payloads (for example, /Cakes.dat, /ReiNand.dat, /rxTools/sys/code.bin, etc).
- Supports advanced features in .3dsx files, like network support.
- Boot delay, to increase the boot rate chance of CFWs like rxTools and CakesFW.
- Allows up-to 16+1 (16 using keys plus 1 default) homebrews in O3DS, up-to 22+1 homebrews in N3DS.
- Support for boot screens, including an ASCII art (default) or custom images in BGR format.
Note: (Optional, but recommended) Install HomeMenuHax and set up autoboot.
Modify, according to your needs, the included boot_config.ini file.
Copy both boot.3dsx and boot_config.ini to the root of your SD card.
For splash screen, look inside splash folder for some ready to use .bin files (including source file/preview in .png format).
- Alternatively you can use the included img2bgr.sh script to convert your own images.
- Or convert them using the online tool.
Remember to edit boot_config.ini to include splash_file option in the desired entry.
How to use
Boot up your homebrew hax as usual.
If you do nothing, then boot_default.3dsx (or anything that you setup in [DEFAULT] section) will be launched.
If you want to load an alternative launcher, hold down a button (configured according your boot_config.ini) to boot it.
You can also set to display only top or bottom splash screens.
Covert image to BIN
You can use the following online tool to generate compatibile image format, 3DS Homebrew tool: image to BIN converter, which allows you to convert common image formats to BGR.
Remember that 3DS top screen has a resolution of 400x240, so you should convert any image to this resolution first.
BootCtr for 3DS with boot screen support (Thiago Kenji Okada)
- Modifies splash option to accept more parameters. Now you can pass 0 to disable splash screens, 1 to only enable top screen (splash image or ASCII art), 2 to enable only bottom screen (entry information) or 3 for both (the same as the old 1 option, and still the default).
- Adds support for boot screens. By default there is a nice ASCII boot screen that is embedded in the application, however there is support for external custom boot screens by passing a properly converted BGR image to the option splash_image.
- Drops support for both debug and cfw_fix options. With splash screen support, the bottom screen is used to show entry information, exactly like the debug option did, so it was removed. cfw_fix was doing something similar to rendering something in the 3DS screens already, so now it is actually rendering something useful in the screen, this option made no sense anymore. However, the benefits of cfw_fix are still there.
- Added [GLOBAL] section, a special section that takes the role of what [DEFAULT] done before v1.5. So, if you set any option in [GLOBAL], it will override the internal defaults from the application. This is useful, for example, to enable debug mode in every entry.
- Brings back the old homebrew boot method, fixing CTRXplorer boot (and maybe other homebrews out there).
- Fixes payload option too. It was always set to -1 even if you tried to force it to another value. This option is probably broken since its introduction, making this the first release that this option is working.
- Fixes support for DPAD was not working, and add support for Circle Pad too. However, you may need to update your boot_config.ini, since the name for direction sections changed (thanks MassExplosion213 for the reports above).
- A major rewrite in boot_config.ini. The objective is to make everything more user friendly, and reduce user confusion between options. Some early feedback seems to be so far good. Recommend every user to read the included boot_config.ini file in this release again.
- [DEFAULT] section does not override the internal default options anymore. This was a workaround because if the user pressed a button without a section, it would get the internal defaults instead of just booting whatever was in [DEFAULT]. However this workaround causes a whole another class of issues.
- Note: Without entering too much in the implementation details, it means that path option does not have an internal default anymore (it used to be set to boot_default.3dsx), so from this release you MUST have boot_config.ini file in your SD card (in previous releases it was optional, however BootCtr wouldn't be really useful without it) and each section MUST have at least path set (in previous releases, it was optional too, however it would get whatever was set in [DEFAULT]).
- Adds two new options for boot entries (see boot_config.ini file for the documentation of these new options):
- The first one is cfw_fix. This option increase boot rate in some CFWs (rxTools), making it similar to the boot rate from version 1.2.1. Since cfw_fix may have some side effects (like decreased boot rate in any other CFW that isn't rxTools), it can be disabled by passing cfw_fix = 0, however this is not recommended. The default for this option is on.
- The second new option is debug. This option prints the current entry to 3DS screen before running, waiting until the user press Start button to continue. While this is not exactly useful, it may help when while investigating in case of issues.
- Code cleanup since release v0.2(?).
- Various changes in the repository organization, and by consequence, Makefile. No more silly #include "very/long/path" too. While this does not change anything, it makes the repository much more organized, at the expense of having headers and source code files separated.
- Fixes binary payload loading on N3DS (thanks Aurora Wright from GBAtemp for the report).
- Brings changes to make BootCtr compatible with ctrulib 1.0. This should make it easier to build now (since you can simple install the official release of ctrulib X some random git version). This brings updates from CakeBrah and libkhax too (so they're compatible with ctrulib 1.0), so maybe there is more stability, maybe not.
- Uses mid-kid/CakeBrah itself instead of a fork. This brings some new fixes comming from upstream that may or not help in boot rate in some situations.
- Some smaller fixes.
- This project was renamed, since the old name (HBL-Emergency) was not appropriated anymore for the features that this project have. So decided to rename it to BootCtr.
- Bump the version number to 1.0. There isn't many exciting changes, however, mostly bug fixes in this release.