Introduction
Hi
For some time now I am developing an alternative to @cpasjuste's CtrBootManager. This is based in the original code from @mashers' HBL-Emergency (that itself is a modified version of @smealum's Homebrew Launcher), props to him. Look in the original topic for history of changes and some early discussion. I created this new topic to better organize OP, since new users would need to hunt this information in the topic itself. Now that I have control of the OP, I can maintain it with up-to-date information.
BootCtr is a boot manager. What it means is that it allows selecting arbitrary entries from a configuration file. The common user case for this homebrew is as an alternative for boot.3dsx file in HomeMenuHax. Traditionally, you use HomeMenuHax with Homebrew Launcher as your boot.3dsx file (this is what happens if you use Homebrew Launcher starter pack), so when HomeMenuHax boot you get Homebrew Launcher screen.
However, HomeMenuHax is very convenient since it supports autobooting (officially since version 2.0). What it means is, to load any hack with HomeMenuHax, you can simple turn on your console and wait for the magic to happen, no need to enter in Browser or DS Profile Settings or anything else. So people started to substitute boot.3dsx from Homebrew Launcher with other files, like rxTools.3dsx or Cakes.3dsx, so they would boot directly to they favorite CFW from boot.
This is very nice, however there is two problems: firstly, the boot rate for direct booting CFWs from boot.3dsx is kind low in some situations (I don't think someone knows what is the problem exactly); secondly, if you want, for example, boot a CFW by default and boot Homebrew Launcher in some situations, you could not. So you either would maintain Homebrew Launcher as your boot.3dsx file, booting CFW from Homebrew Launcher itself, and loosing the convenience of autobooting CFWs, or use some ugly hack to boot both (generally, involving hex editing themehax payload so it would point to other file instead boot.3dsx). This works, however it wouldn't solve the bad boot rate problem.
BootCtr solve both these problems: it is a boot manager, so it will boot a default entry if you don't press any button. If you put your favorite CFW as default entry, you don't need to do anything to boot it. However, if you want to boot something different, like Homebrew Launcher, you can too. Just add a entry for Homebrew Launcher, set a trigger button (like R), so when you boot your 3DS holding R, for example, it will boot in Homebrew Launcher instead of your CFW. All this configuration can be done editing the included boot_config.ini file.
To increase CFW boot rate, BootCtr implements a small delay when booting: delaying the boot for a couple of microseconds (1500ms, or 1.5s by default) seems to improve CFW booting a lot.
TL;DR: BootCtr is a substitute for boot.3dsx, aimed mainly for HomeMenuHax (autoboot) users, that allows multiple boot entries by holding keys, supports both .3dsx and binary payloads, increases boot rate of CFWs, and is customized using the included boot_config.ini file.
Features
Downloads
Hi
For some time now I am developing an alternative to @cpasjuste's CtrBootManager. This is based in the original code from @mashers' HBL-Emergency (that itself is a modified version of @smealum's Homebrew Launcher), props to him. Look in the original topic for history of changes and some early discussion. I created this new topic to better organize OP, since new users would need to hunt this information in the topic itself. Now that I have control of the OP, I can maintain it with up-to-date information.
BootCtr is a boot manager. What it means is that it allows selecting arbitrary entries from a configuration file. The common user case for this homebrew is as an alternative for boot.3dsx file in HomeMenuHax. Traditionally, you use HomeMenuHax with Homebrew Launcher as your boot.3dsx file (this is what happens if you use Homebrew Launcher starter pack), so when HomeMenuHax boot you get Homebrew Launcher screen.
However, HomeMenuHax is very convenient since it supports autobooting (officially since version 2.0). What it means is, to load any hack with HomeMenuHax, you can simple turn on your console and wait for the magic to happen, no need to enter in Browser or DS Profile Settings or anything else. So people started to substitute boot.3dsx from Homebrew Launcher with other files, like rxTools.3dsx or Cakes.3dsx, so they would boot directly to they favorite CFW from boot.
This is very nice, however there is two problems: firstly, the boot rate for direct booting CFWs from boot.3dsx is kind low in some situations (I don't think someone knows what is the problem exactly); secondly, if you want, for example, boot a CFW by default and boot Homebrew Launcher in some situations, you could not. So you either would maintain Homebrew Launcher as your boot.3dsx file, booting CFW from Homebrew Launcher itself, and loosing the convenience of autobooting CFWs, or use some ugly hack to boot both (generally, involving hex editing themehax payload so it would point to other file instead boot.3dsx). This works, however it wouldn't solve the bad boot rate problem.
BootCtr solve both these problems: it is a boot manager, so it will boot a default entry if you don't press any button. If you put your favorite CFW as default entry, you don't need to do anything to boot it. However, if you want to boot something different, like Homebrew Launcher, you can too. Just add a entry for Homebrew Launcher, set a trigger button (like R), so when you boot your 3DS holding R, for example, it will boot in Homebrew Launcher instead of your CFW. All this configuration can be done editing the included boot_config.ini file.
To increase CFW boot rate, BootCtr implements a small delay when booting: delaying the boot for a couple of microseconds (1500ms, or 1.5s by default) seems to improve CFW booting a lot.
TL;DR: BootCtr is a substitute for boot.3dsx, aimed mainly for HomeMenuHax (autoboot) users, that allows multiple boot entries by holding keys, supports both .3dsx and binary payloads, increases boot rate of CFWs, and is customized using the included boot_config.ini file.
Features
- Supports both .3dsx files and binary payloads (for example, /rxTools/sys/code.bin, /Cakes.dat, 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 and 1 default) homebrews in O3DS, up-to 22+1 homebrews in N3DS.
- (Optional, but recommended) Install HomeMenuHax and set up autoboot (not gonna link a tutorial here, since there is tons of them in GBAtemp).
- 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.
- 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.
- See example boot_config.ini below for documentation.
Code:
;Comments starts with ";" or "#", so you need to remove it first to the
;line actually do something.
;[DEFAULT] is the option that is used if you don't press anything, or press
;a button without configuration.
;The options below are the defaults used internally in the application
;if you don't override them first (with the exception of "path"). So even
;if you don't set those options in a section, the values below are used.
[DEFAULT]
path = /boot_default.3dsx
;delay = 2000
;offset = 0x12000
;payload = -1
;splash = 1
;splash_image =
;Each key can be defined using a section, like the example below. Section
;names must be ALL caps, and between "[]". Valid keys:
; * Common keys: KEY_A, KEY_B, KEY_X, KEY_Y, KEY_L, KEY_R, KEY_SELECT,
; KEY_START.
; * D-PAD: KEY_DUP, KEY_DDOWN, KEY_DLEFT, KEY_DRIGHT.
; * Circle pad: KEY_CPAD_UP, KEY_CPAD_DOWN, KEY_CPAD_LEFT, KEY_CPAD_RIGHT.
; * N3DS-only: KEY_ZL, KEY_ZR, KEY_CSTICK_RIGHT, KEY_CSTICK_LEFT,
; KEY_CSTICK_UP, KEY_CSTICK_DOWN.
;You MUST set at least "path" for each section, and it is the ONLY option you
;should set in the majority of cases.
;You may pass a .3dsx file or a .dat/.bin payload, the file type is detect
;automatically based on extension. Double check the path, since it must be
;correct (including caps).
;[KEY_CPAD_LEFT] ;MUST BE ALL CAPS
;path = /And/Respect_Caps_in_Path.3dsx
;Basic usage examples:
;Boot /boot_1.3dsx if R button is pressed.
[KEY_R]
path = /boot_1.3dsx
;Boot examples for almost every CFW out there.
;You can use both .3dsx files or binary (.bin, .dat) payloads
;[KEY_A]
;path = /rxTools/sys/code.bin
;[KEY_B]
;path = /Cakes.dat
;[KEY_X]
;path = /3ds/GW/GW.3dsx
;[KEY_Y]
;path = /ReiNand.dat
;An important remark: the majority of CFWs set L button to show menu instead
;of autobooting. So it is generally a bad idea to set L button to CFW boot,
;or the CFW menu will be shown instead of booting directly to CFW.
;[KEY_L]
;path = /rxTools/sys/code.bin ;BAD IDEA!!!
;################################IMPORTANT NOTE################################
;From here on, I will start explaining advanced options.
;THEY GENERALLY SHOULD NOT BE SET, except if something does not work.
;SO UNLESS SOMETHING IS BROKEN, set "path" option (as the examples above), and
;nothing else.
;If you have any issue, the first thing I will ask you is to remove any extra
;option set below. So instead of making me do extra work, just don't set the
;options below.
;##############################################################################
;The first advanced option is "delay". Delay is a number of microseconds to
;delay the application boot.
;Why this is important? It may improve the booting of some homebrews and CFWs.
;For example, O3DS autobooting with themehax, using either rxTools or
;CakesFW with Brahma2 loaders will have increased boot rate chance with 100
;ms of delay. For Homebrew Launcher (and other homebrews) the delay may be
;set to 0, unless your homebrew needs network connection during boot (such as
;FTBrony 1.x). In this case you may increase the delay (for example to 5000,
;or 5 seconds) to makes sure that you have a valid network connection.
;By default delay is set to 1500 (1.5s). This is a value that seems to work
;well with CFWs, without delaying the boot of homebrews by too much.
;[KEY_LEFT]
;path = /boot_hbl.3dsx
;delay = 0
;[KEY_RIGHT]
;path = /3ds/ftbrony/ftbrony.3dsx
;delay = 5000
;Instead of loading .3dsx files, you can use ARM9 payloads like rxTools'
;code.bin or CakesFW's Cakes.dat. By default it will try to detect if the
;file is a payload by checking the extension (.bin or .dat), however you can
;force by passing "payload = 1" (passing "payload = 0" forces homebrew mode,
;while "payload = -1" forces autodetect, the default).
;You may need to change the default payload offset depending of the binary
;you're loading. The values are generally in hexadecimal, so append "0x" in
;front of the number (however, decimal values are supported too).
;The default offset (0x12000) works in RxTools/CakesFW/ReiNand.
;Don't worry about setting offset option in .3dsx files, it is ignored.
;[KEY_START]
;path = /Decrypt9WIP.dat
;payload = 1
;offset = 0x12000
;Splash is a screen that shows while BootCtr is loading, showing information
;about the current entry in the bottom screen and a nice logo in ASCII art in
;top screen, or optionally any image converted in the BGR format.
;You can manually enable or disable top and bottom splash screens. Setting
;"splash = 0" disables both top and bottom screen. This may avoid garbage
;screens while booting in some cases (i.e. Homebrew Launcher). "splash = 1"
;enables only top screen, "splash = 2" enables only bottom screen, while
;"splash = 3" (default) enables both.
;WARNING: this option only controls the display of splash screen, however the
;actual duration of splash is controlled (indirectly) by "delay" option. If
;you want to increase the duration of splash, for example, set a higher delay.
;Setting "delay = 0" does not disable splash either, however it may be too
;fast to read the information.
;To use an image instead of the default ASCII art, you need to pass a converted
;BGR file to the "splash_image" option. Use the site below to convert files:
;https://xem.github.io/3DShomebrew/tools/image-to-bin.html
;A (ugly) splash screen example can be found in "splash" folder.
;[GLOBAL] is a special section that may be used to override the application
;defaults. For example, if you want to set a global "splash_image" to
;"/boot_splash.bin", instead of copying and pasting the same entry in every
;section, just set it one time in [GLOBAL].
;[GLOBAL] is the only section that you may not set "path" option, however you
;can. In this case, you will have a default path in every entry, that isn't
;exactly what you would want (unless you want to set booting to the same
;homebrew with different configurations).
;[GLOBAL]
;splash = 1
;splash_image = /boot_splash.bin
Downloads
- Current release: v2.1,0
- Releases: https://github.com/m45t3r/BootCtr/releases
- Source code: https://github.com/m45t3r/BootCtr
Last edited by m45t3r,