'''BAX''' is a homebrew program for the Nintendo 3DS (compatible with all models) that allows you to display video streams on load. Thanks to boot-time entrypoints, this can be done on boot, giving a similar impression to the loading animation of a PC or a mobile smartphone. Please note that while it's designed to boot another program, it does not allow both itself and the other to run concurrently, but rather sequentially. Therefore, any time that is "taken" by loading/playing the animation file will not be somehow "given" to the next program - having BAX installed will always increase the boot time by the length of the video.
'''BAX''' is a homebrew program for the Nintendo 3DS (compatible with all models) that allows you to display video streams on load. Thanks to boot-time entrypoints, this can be done on boot, giving a similar impression to the loading animation of a PC or a mobile smartphone.
Please note that while it's designed to boot into another payload (usually Luma3DS) after running, per design it will not load the second payload alongside itself, but rather sequentially - the time to boot will always be extended by exactly the length of the video. It is also not feasible (though it is possible in theory) to have BAX start loading the HOME Menu while playing the video due to how NATIVE_FIRM handles GPU initialization.
==Important Notes==
==Important Notes==
* BAX can not be booted from NAND, a FIRM partition, or an NTRBoot flashcart. Trying will only cause problems.
* BAX can only be booted from the SD card. Attempting to boot from elsewhere (CTRNAND, FIRM0/1 or an NTRBoot cartridge) will only cause problems.
* Due to how Horizon/NATIVE_FIRM works, if you reboot from AGB_FIRM (GBA Virtual Console) the save game will not be saved until you reboot back into it again.
* Because of how NATIVE_FIRM works, if you reboot into the HOME Menu from AGB_FIRM (the GBA Virtual Console) while BAX is installed, the GBA save game will not be saved until you boot AGB_FIRM again.
* BAX performs no GPU initialization, only register tweaks, and assumes the GPU has already been initialized by the time it boots. Any B9S-compatible loaders should do this, given the proper bit is set in the FIRM (it certainly is in BAX), but it can not realistically provide support for every existing loader out there.
* BAX performs no GPU initialization, only register tweaks, and assumes the GPU has already been initialized by the time it boots. As a result, only B9S-compatible bootloaders are guaranteed to support BAX - but you should only be using [[3DS:Boot9strap|boot9strap]] or [[3DS:fastboot3DS|fastboot3DS]] anyway, both of which are compatible.
* As BAX loads before [[3DS:Luma3DS|Luma3DS]], it creates an extra 'grace period' before the START/SELECT button menus can open, similar to placing a [[3DS:Splash_screens#Enabling_splash_screens|splash before payloads]].
* To create animation files for BAX, see [[3DS:BAX/makebax#Creating_.BAX_Animations|here.]]
* To create animation files for BAX, see [[3DS:BAX/makebax#Creating_.BAX_Animations|here.]]
==Installation==
==Installation==
{{info|As having BAX installed under boot9strap will allow programs like Universal Updater to overwrite BAX with Luma, it is recommended to use an alternate setup under [[3DS:fastboot3DS|fastboot3DS]] instead.}}
<tabber>
<tabber>
|-|I use boot9strap=
|-|I use fastboot3DS=
{{info|text=Following these instructions will move your Luma3DS firmware file to <code>sdmc:/bax/boot.firm</code>, with <code>sdmc:/boot.firm</code> being the BAX payload instead. Please keep this in mind when updating Luma3DS in the future so you don't accidentally overwrite BAX.}}
<ol>
<li>Download the latest release of BAX from its {{GitLab|Wolfvak/BAX/-/releases|GitLab page}} (The <code>release.zip</code> file)</li>
# Download and the latest release of BAX from its {{GitLab|Wolfvak/BAX/-/releases|GitLab page}} (The <code>release.zip</code> file)
<li>Insert your console's SD card into your computer</li>
# Insert your console's SD card into your computer
<li>Create a folder named <code>bax</code> on the SD root</li>
# Create a folder named <code>bax</code> on the SD root
<li>Copy <code>BAX.firm</code> from the <code>release.zip</code> and your BAX animation files into the <code>bax</code> folder</li>
# Move your existing <code>boot.firm</code> file into the <code>bax</code> folder
<li>Create a file named <code>boot.txt</code> inside the <code>bax</code> folder and put the text '''sdmc:/boot.firm''' inside of it</li>
# Copy <code>BAX.firm</code> from <code>release.zip</code> into the root of your SD card
<li>Boot into the fastboot3DS configuration menu by holding {{B|HOME}} while powering on</li>
# Rename the <code>BAX.firm</code> you copied to <code>boot.firm</code>
<li>Go to <code>Boot setup...</code> and select the first slot, then choose <code>Select [slot 1] firm</code> and pick the SD file <code>sd:/bax/BAX.firm</code></li>
# Copy your BAX animation files to <code>sdmc:/bax/</code>
<li>Once selected, ensure <code>Set [slot 1] autoboot</code> is checked and back out to the main menu</li>
# Your SD card should now look something like this:
<li>To test, go into <code>Boot menu...</code> and select <code>Boot [slot 1]</code>; your animation should load, then the system should load normally</li>
<li>Your SD card layout should now include this:</li>
{{success|text=BAX is now installed! It will randomly choose an animation to play at boot, then continue to Luma3DS.}}
|-|I use boot9strap=
|-|I use fastboot3DS=
{{info|text=Following these instructions will move your Luma3DS firmware file to <code>sdmc:/bax/boot.firm</code>, with <code>sdmc:/boot.firm</code> being the BAX payload instead. Please keep this in mind when updating Luma3DS in the future so you don't accidentally overwrite BAX.}}
{{info|text=Following these instructions will move your Luma3DS firmware file to <code>sdmc:/bax/boot.firm</code>, and may move other files elsewhere depending on your setup. Please keep these new locations in mind when updating files in the future, or else the updated file may not be the one that's loaded into use.}}
# Download and the latest release of BAX from its {{GitLab|Wolfvak/BAX/-/releases|GitLab page}} (The <code>release.zip</code> file)
<ol>
# Insert your console's SD card into your computer
<li>Download and the latest release of BAX from its {{GitLab|Wolfvak/BAX/-/releases|GitLab page}} (The <code>release.zip</code> file)</li>
# Create a folder named <code>bax</code> on the SD root
<li>Insert your console's SD card into your computer</li>
# Move your existing <code>boot.firm</code> into the <code>bax</code> folder
<li>Create a folder named <code>bax</code> on the SD root</li>
# Copy <code>BAX.firm</code> from the <code>release.zip</code> to a place of your choosing, such as inside a folder on the SD root named <code>firm</code>
<li>Move your existing <code>boot.firm</code> file into the <code>bax</code> folder</li>
# Copy your BAX animation files to <code>sdmc:/bax/</code>
<li>Copy <code>BAX.firm</code> from <code>release.zip</code> into the root of your SD card</li>
# Boot into the fastboot3DS configuration menu by holding {{B|HOME}} while powering on
<li>Rename the <code>BAX.firm</code> you copied to <code>boot.firm</code></li>
# Go to <code>Boot setup...</code> and select the first slot, then select <code>Select [slot 1] firm</code> and navigate to where you put <code>BAX.firm</code> on the SD card
<li>Copy your BAX animation files to <code>sdmc:/bax/</code></li>
# Once selected, ensure <code>Set [slot 1] autoboot</code> is checked and back out to the main menu
<li>Your SD card layout should now include this:</li>
# To test, go into <code>Boot menu...</code> and select <code>Boot [slot 1]</code>; your animation should load, then the system should load normally
</ol>
# Your SD card layout may vary, but if you followed the instructions' suggestion, it will look like this:
{{success|text=BAX is now installed! It will choose a random animation to play at boot, then continue to Luma3DS.}}
==Configuration==
==Configuration==
If you create a text file, <code>sdmc:/bax/boot.txt</code>, that only contains a plaintext file path to a <code>.firm</code> file (such as <code>sdmc:/firm/Luma3DS.firm</code>, then when <code>BAX.firm</code> boots it will boot that file instead of <code>sdmc:/bax/boot.firm</code>.
If you create a text file, <code>sdmc:/bax/boot.txt</code>, that only contains a plaintext file path to a <code>.firm</code> file (such as <code>sdmc:/firm/Luma3DS.firm</code>), then when <code>BAX.firm</code> boots it will boot that file instead of <code>sdmc:/bax/boot.firm</code>.
BAX is a homebrew program for the Nintendo 3DS (compatible with all models) that allows you to display video streams on load. Thanks to boot-time entrypoints, this can be done on boot, giving a similar impression to the loading animation of a PC or a mobile smartphone.
Please note that while it's designed to boot into another payload (usually Luma3DS) after running, per design it will not load the second payload alongside itself, but rather sequentially - the time to boot will always be extended by exactly the length of the video. It is also not feasible (though it is possible in theory) to have BAX start loading the HOME Menu while playing the video due to how NATIVE_FIRM handles GPU initialization.
Important Notes
BAX can only be booted from the SD card. Attempting to boot from elsewhere (CTRNAND, FIRM0/1 or an NTRBoot cartridge) will only cause problems.
Because of how NATIVE_FIRM works, if you reboot into the HOME Menu from AGB_FIRM (the GBA Virtual Console) while BAX is installed, the GBA save game will not be saved until you boot AGB_FIRM again.
BAX performs no GPU initialization, only register tweaks, and assumes the GPU has already been initialized by the time it boots. As a result, only B9S-compatible bootloaders are guaranteed to support BAX - but you should only be using boot9strap or fastboot3DS anyway, both of which are compatible.
As BAX loads before Luma3DS, it creates an extra 'grace period' before the START/SELECT button menus can open, similar to placing a splash before payloads.
As having BAX installed under boot9strap will allow programs like Universal Updater to overwrite BAX with Luma, it is recommended to use an alternate setup under fastboot3DS instead.
Download the latest release of BAX from its GitLab page (The release.zip file)
Insert your console's SD card into your computer
Create a folder named bax on the SD root
Copy BAX.firm from the release.zip and your BAX animation files into the bax folder
Create a file named boot.txt inside the bax folder and put the text sdmc:/boot.firm inside of it
Boot into the fastboot3DS configuration menu by holding HOME while powering on
Go to Boot setup... and select the first slot, then choose Select [slot 1] firm and pick the SD file sd:/bax/BAX.firm
Once selected, ensure Set [slot 1] autoboot is checked and back out to the main menu
To test, go into Boot menu... and select Boot [slot 1]; your animation should load, then the system should load normally
Your SD card layout should now include this:
(root)
bax
BAX.firm (the file in the first boot slot of fastboot3DS)
boot.txt
my_animation_1.bax
my_animation_2.bax
my_animation_3.bax
boot.firm (Your existing Luma3DS file)
boot.3dsx
Following these instructions will move your Luma3DS firmware file to sdmc:/bax/boot.firm, with sdmc:/boot.firm being the BAX payload instead. Please keep this in mind when updating Luma3DS in the future so you don't accidentally overwrite BAX.
Download and the latest release of BAX from its GitLab page (The release.zip file)
Insert your console's SD card into your computer
Create a folder named bax on the SD root
Move your existing boot.firm file into the bax folder
Copy BAX.firm from release.zip into the root of your SD card
Rename the BAX.firm you copied to boot.firm
Copy your BAX animation files to sdmc:/bax/
Your SD card layout should now include this:
(root)
bax
boot.firm (Your existing Luma3DS file)
my_animation_1.bax
my_animation_2.bax
my_animation_3.bax
boot.3dsx
boot.firm (Used to be named BAX.firm)
BAX is now installed! It will choose a random animation to play at boot, then continue to Luma3DS.
Configuration
If you create a text file, sdmc:/bax/boot.txt, that only contains a plaintext file path to a .firm file (such as sdmc:/firm/Luma3DS.firm), then when BAX.firm boots it will boot that file instead of sdmc:/bax/boot.firm.