More actions
No edit summary |
m (Text replacement - "|discussion=" to "|donation=") |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{Infobox 3DS Homebrews | {{Infobox 3DS Homebrews | ||
|title=GBA Net Boot | |title=GBA Net Boot | ||
|image= | |image=Gbanetboot3ds2.png | ||
|description=A tool to make GBA homebrew testing more convenient. | |description=A tool to make GBA homebrew testing more convenient. | ||
|author=joshbackstein | |author=joshbackstein | ||
Line 11: | Line 11: | ||
|website=https://www.reddit.com/r/3dshacks/comments/12blrok/gba_net_boot_a_tool_to_make_gba_homebrew_testing/ | |website=https://www.reddit.com/r/3dshacks/comments/12blrok/gba_net_boot_a_tool_to_make_gba_homebrew_testing/ | ||
|source=https://github.com/joshbackstein/gba-net-boot | |source=https://github.com/joshbackstein/gba-net-boot | ||
| | |donation= | ||
}} | }} | ||
GBA Net Boot is a tool for wirelessly receiving and booting GBA homebrew on your 3DS using its built-in GBA hardware. Using [ | GBA Net Boot is a tool for wirelessly receiving and booting GBA homebrew on your 3DS using its built-in GBA hardware. Using [[GBA Net Send 3DS|GBA Net Send]], you can send GBA homebrew ROMs from your computer to your 3DS over a wifi network. GBA Net Boot will receive your ROM, store it to the SD card, and boot into open_agb_firm for you to run your ROM in native GBA mode on your 3DS. | ||
This is meant to make testing GBA homebrew on official hardware as seamless and painless as possible. | This is meant to make testing GBA homebrew on official hardware as seamless and painless as possible. | ||
Line 20: | Line 20: | ||
==Installation== | ==Installation== | ||
=== | ===Initial setup=== | ||
First, install [[Luma3DS]] and [[Boot9strap 3DS|Boot9strap]] using [https://3ds.hacks.guide/ this guide]. | First, install [[Luma3DS]] and [[Boot9strap 3DS|Boot9strap]] using [https://3ds.hacks.guide/ this guide]. | ||
Line 29: | Line 29: | ||
Looking at the bottom screen, go down to <code>Boot setup</code> and press A, then go down to <code>Enable FCRAM Boot</code> and press A to enable it. If done correctly, you should see a check mark next to that option. Now press B, then go up to <code>Continue boot</code> and press A. | Looking at the bottom screen, go down to <code>Boot setup</code> and press A, then go down to <code>Enable FCRAM Boot</code> and press A to enable it. If done correctly, you should see a check mark next to that option. Now press B, then go up to <code>Continue boot</code> and press A. | ||
(Optional) If you want to use the default Luma3DS chainloader instead of [[GodMode9 3DS|GodMode9]], go to <code>Boot setup</code> in the fastboot3DS menu, select <code>Setup [slot 1]</code>, then highlight | (Optional) If you want to use the default Luma3DS chainloader instead of [[GodMode9 3DS|GodMode9]], go to <code>Boot setup</code> in the fastboot3DS menu, select <code>Setup [slot 1]</code>, then highlight <code>Disable [slot 2]</code> and press A. Keep pressing B until you reach the main menu, and choose <code>Continue boot</code>. Holding Start on boot should now allow you to use the Luma3DS chainloader. | ||
=== | ===Installing gba-net-boot=== | ||
Create a new directory called | Create a new directory called <code>gba-net-boot</code> in the 3ds directory on your SD card. Copy the gba-net-boot.3dsx file into this directory. | ||
To use gba-net-boot, you must also copy [[open agb firm 3DS|open_agb_firm]] to your SD card. For gba-net-boot to work properly, you need to copy the open_agb_firm.firm file to one of two directories on your SD card: | To use gba-net-boot, you must also copy [[open agb firm 3DS|open_agb_firm]] to your SD card. For gba-net-boot to work properly, you need to copy the open_agb_firm.firm file to one of two directories on your SD card: | ||
*/3ds/gba-net-boot | *<code>/3ds/gba-net-boot</code> | ||
*/luma/payloads | *<code>/luma/payloads</code> | ||
If you want to use the Luma3DS chainloader to load open_agb_firm, use the /luma/payloads directory. If you want to set up a slot in fastboot3DS, it doesn't matter which directory you choose. | If you want to use the Luma3DS chainloader to load open_agb_firm, use the <code>/luma/payloads</code> directory. If you want to set up a slot in fastboot3DS, it doesn't matter which directory you choose. | ||
If you want gba-net-boot to use a different open_agb_firm from what Luma3DS or fastboot3DS use, you can copy one version of open_agb_firm into gba-net-boot's directory for gba-net-boot to use and another version in the appropriate directory for Luma3DS or fastboot3DS to use. | If you want gba-net-boot to use a different open_agb_firm from what Luma3DS or fastboot3DS use, you can copy one version of open_agb_firm into gba-net-boot's directory for gba-net-boot to use and another version in the appropriate directory for Luma3DS or fastboot3DS to use. | ||
Line 52: | Line 52: | ||
Make sure you have wifi enabled and connected on your 3DS, then launch gba-net-boot. If wifi hasn't been set up yet, gba-net-boot will wait for your 3DS to connect to wifi. | Make sure you have wifi enabled and connected on your 3DS, then launch gba-net-boot. If wifi hasn't been set up yet, gba-net-boot will wait for your 3DS to connect to wifi. | ||
After your 3DS is connected to wifi, gba-net-boot will wait for you to use the [https://github.com/joshbackstein/gba-net-send gba-net-send] tool to send your ROM to your 3DS over the network. Your ROM will be saved to the root of your SD card as | After your 3DS is connected to wifi, gba-net-boot will wait for you to use the [https://github.com/joshbackstein/gba-net-send gba-net-send] tool to send your ROM to your 3DS over the network. Your ROM will be saved to the root of your SD card as <code>rom.gba</code>. | ||
When the transfer has completed and your ROM is saved to your SD card, gba-net-boot will automatically boot into open_agb_firm. From here, you can navigate to | When the transfer has completed and your ROM is saved to your SD card, gba-net-boot will automatically boot into open_agb_firm. From here, you can navigate to <code>rom.gba</code> on the root of your SD card and press A to launch it. | ||
===Booting directly into the Homebrew Launcher=== | ===Booting directly into the Homebrew Launcher=== | ||
To make things more convenient, you can set your 3DS to automatically boot directly into the Homebrew Launcher. This is only possible if you're using [[Luma3DS]] v12.0 or later. To enable this feature, hold down the Select button while turning on your 3DS. | To make things more convenient, you can set your 3DS to automatically boot directly into the Homebrew Launcher. This is only possible if you're using [[Luma3DS]] v12.0 or later. To enable this feature, hold down the Select button while turning on your 3DS. | ||
Once in the Luma3DS configuration menu, navigate to either the | Once in the Luma3DS configuration menu, navigate to either the <code>Homebrew autoboot</code> or <code>Hbmenu autoboot</code> option, depending on your Luma3DS version. Then select <code>3DS</code> and press Start to save your changes and continue booting. | ||
Your 3DS will skip the 3DS Home Menu and automatically launch the Homebrew Launcher each time you turn it on, until you disable this option by switching it back to <code>Off</code>. | |||
===Booting directly into gba-net-boot=== | ===Booting directly into gba-net-boot=== | ||
If you installed the [[Homebrew Launcher Wrapper 3DS|Homebrew Launcher Wrapper]], you can skip the 3DS Home Menu and the Homebrew Launcher and boot straight into gba-net-boot. However, there are some limitations to this method: | If you installed the [[Homebrew Launcher Wrapper 3DS|Homebrew Launcher Wrapper]] following the [https://3ds.hacks.guide/ guide], you can skip the 3DS Home Menu and the Homebrew Launcher and boot straight into gba-net-boot. However, there are some limitations to this method: | ||
* Pressing Start to exit gba-net-boot will only restart gba-net-boot instead of taking you back to the Homebrew Launcher or 3DS Home Menu. But you can still return to the 3DS Home Menu by pressing the Home button. | * Pressing Start to exit gba-net-boot will only restart gba-net-boot instead of taking you back to the Homebrew Launcher or 3DS Home Menu. But you can still return to the 3DS Home Menu by pressing the Home button. | ||
Line 68: | Line 70: | ||
* This will remove your ability to load the Homebrew Launcher at all unless you have a second wrapper installed for it, which you might need to build yourself. | * This will remove your ability to load the Homebrew Launcher at all unless you have a second wrapper installed for it, which you might need to build yourself. | ||
If you still want to use this method, you will first need to get your 3DS set up to boot directly into the Homebrew Launcher as described above. Next, make a backup of the boot.3dsx file on your SD card, then copy gba-net-boot.3dsx to the root of your SD card and rename it to | If you still want to use this method, you will first need to get your 3DS set up to boot directly into the Homebrew Launcher as described above. Next, make a backup of the <code>boot.3dsx</code> file on your SD card, then copy gba-net-boot.3dsx to the root of your SD card and rename it to <code>boot.3dsx</code>. If you were keeping <code>open_agb_firm</code> in the same directory as gba-net-boot, you will also need to copy <code>open_agb_firm.firm</code> to the root of your SD card. | ||
To restore the Homebrew Launcher, simply replace the modified boot.3dsx file with the backup you made. You can also remove the copy of open_agb_firm.firm. | To restore the Homebrew Launcher, simply replace the modified <code>boot.3dsx</code> file with the backup you made. You can also remove the copy of <code>open_agb_firm.firm</code>. | ||
The limitations mentioned above exist because Luma3DS boots directly into the Homebrew Launcher by referencing the Title ID for the Homebrew Launcher Wrapper installed on your 3DS Home Menu. The wrapper looks for boot.3dsx on the root of your SD card and runs it, which is the Homebrew Launcher used to launch other .3dsx homebrew. By replacing boot.3dsx with gba-net-boot, the Homebrew Launcher Wrapper will run gba-net-boot instead, and you will lose the entry point to the Homebrew Launcher. | The limitations mentioned above exist because Luma3DS boots directly into the Homebrew Launcher by referencing the Title ID for the Homebrew Launcher Wrapper installed on your 3DS Home Menu. The wrapper looks for <code>boot.3dsx</code> on the root of your SD card and runs it, which is the Homebrew Launcher used to launch other <code>.3dsx</code> homebrew. By replacing <code>boot.3dsx</code> with gba-net-boot, the Homebrew Launcher Wrapper will run gba-net-boot instead, and you will lose the entry point to the Homebrew Launcher. | ||
===How it works=== | ===How it works=== | ||
When you run [https://github.com/joshbackstein/gba-net-send gba-net-send], it sends a UDP broadcast, which gba-net-boot listens for and responds to. When gba-net-send receives a response from gba-net-boot, gba-net-send establishes a TCP connection to gba-net-send to transfer your ROM. The ROM is saved to the root of your SD card as rom.gba. | When you run [https://github.com/joshbackstein/gba-net-send gba-net-send], it sends a UDP broadcast, which gba-net-boot listens for and responds to. When gba-net-send receives a response from gba-net-boot, gba-net-send establishes a TCP connection to gba-net-send to transfer your ROM. The ROM is saved to the root of your SD card as <code>rom.gba</code>. | ||
After the transfer is completed and your ROM is saved, gba-net-boot copies open_agb_firm into a specific location in FCRAM and reboots the 3DS. Because we configured fastboot3DS to check for it and the FCRAM hasn't been cleared during the reboot, fastboot3DS sees that a firm (open_agb_firm in this case) has been loaded at this location and automatically boots into it. | After the transfer is completed and your ROM is saved, gba-net-boot copies open_agb_firm into a specific location in FCRAM and reboots the 3DS. Because we configured fastboot3DS to check for it and the FCRAM hasn't been cleared during the reboot, fastboot3DS sees that a firm (open_agb_firm in this case) has been loaded at this location and automatically boots into it. |
Latest revision as of 00:47, 14 August 2023
GBA Net Boot | |
---|---|
General | |
Author | joshbackstein |
Type | Utilities |
Version | 0.0.2 |
License | GPL-3.0 |
Last Updated | 2023/04/11 |
Links | |
Download | |
Website | |
Source | |
GBA Net Boot is a tool for wirelessly receiving and booting GBA homebrew on your 3DS using its built-in GBA hardware. Using GBA Net Send, you can send GBA homebrew ROMs from your computer to your 3DS over a wifi network. GBA Net Boot will receive your ROM, store it to the SD card, and boot into open_agb_firm for you to run your ROM in native GBA mode on your 3DS.
This is meant to make testing GBA homebrew on official hardware as seamless and painless as possible.
Note: This software has been tested many time without encountering any issues, however, there is always a risk something might cause damage to your system or cause corruption or loss of data. Multiple parts of this process deal with lower levels of the system, especially the custom firmware and bootloader. The author takes no responsibility for any damage to or destruction of your system, your data, or anything else.
Installation
Initial setup
First, install Luma3DS and Boot9strap using this guide.
Then install fastboot3DS using OpenFirmInstaller.
After you have installed fastboot3DS, turn off your 3DS, then turn it back on while holding the Home button. This should show you the fastboot3DS splash screen and bring you to its menu.
Looking at the bottom screen, go down to Boot setup
and press A, then go down to Enable FCRAM Boot
and press A to enable it. If done correctly, you should see a check mark next to that option. Now press B, then go up to Continue boot
and press A.
(Optional) If you want to use the default Luma3DS chainloader instead of GodMode9, go to Boot setup
in the fastboot3DS menu, select Setup [slot 1]
, then highlight Disable [slot 2]
and press A. Keep pressing B until you reach the main menu, and choose Continue boot
. Holding Start on boot should now allow you to use the Luma3DS chainloader.
Installing gba-net-boot
Create a new directory called gba-net-boot
in the 3ds directory on your SD card. Copy the gba-net-boot.3dsx file into this directory.
To use gba-net-boot, you must also copy open_agb_firm to your SD card. For gba-net-boot to work properly, you need to copy the open_agb_firm.firm file to one of two directories on your SD card:
/3ds/gba-net-boot
/luma/payloads
If you want to use the Luma3DS chainloader to load open_agb_firm, use the /luma/payloads
directory. If you want to set up a slot in fastboot3DS, it doesn't matter which directory you choose.
If you want gba-net-boot to use a different open_agb_firm from what Luma3DS or fastboot3DS use, you can copy one version of open_agb_firm into gba-net-boot's directory for gba-net-boot to use and another version in the appropriate directory for Luma3DS or fastboot3DS to use.
Finally, make sure your 3DS has wifi enabled and is connected to the same network as the computer you will be sending your ROM from.
To launch gba-net-boot, go to the 3DS Home Menu and launch the Homebrew Launcher, then find gba-net-boot and launch it. Refer to the other section for instructions on how to use it.
User guide
How to use
First, make sure you have gone through the setup.
Make sure you have wifi enabled and connected on your 3DS, then launch gba-net-boot. If wifi hasn't been set up yet, gba-net-boot will wait for your 3DS to connect to wifi.
After your 3DS is connected to wifi, gba-net-boot will wait for you to use the gba-net-send tool to send your ROM to your 3DS over the network. Your ROM will be saved to the root of your SD card as rom.gba
.
When the transfer has completed and your ROM is saved to your SD card, gba-net-boot will automatically boot into open_agb_firm. From here, you can navigate to rom.gba
on the root of your SD card and press A to launch it.
Booting directly into the Homebrew Launcher
To make things more convenient, you can set your 3DS to automatically boot directly into the Homebrew Launcher. This is only possible if you're using Luma3DS v12.0 or later. To enable this feature, hold down the Select button while turning on your 3DS.
Once in the Luma3DS configuration menu, navigate to either the Homebrew autoboot
or Hbmenu autoboot
option, depending on your Luma3DS version. Then select 3DS
and press Start to save your changes and continue booting.
Your 3DS will skip the 3DS Home Menu and automatically launch the Homebrew Launcher each time you turn it on, until you disable this option by switching it back to Off
.
Booting directly into gba-net-boot
If you installed the Homebrew Launcher Wrapper following the guide, you can skip the 3DS Home Menu and the Homebrew Launcher and boot straight into gba-net-boot. However, there are some limitations to this method:
- Pressing Start to exit gba-net-boot will only restart gba-net-boot instead of taking you back to the Homebrew Launcher or 3DS Home Menu. But you can still return to the 3DS Home Menu by pressing the Home button.
- If you try to launch the Homebrew Launcher from the 3DS Home Menu, it will instead launch gba-net-boot.
- This will remove your ability to load the Homebrew Launcher at all unless you have a second wrapper installed for it, which you might need to build yourself.
If you still want to use this method, you will first need to get your 3DS set up to boot directly into the Homebrew Launcher as described above. Next, make a backup of the boot.3dsx
file on your SD card, then copy gba-net-boot.3dsx to the root of your SD card and rename it to boot.3dsx
. If you were keeping open_agb_firm
in the same directory as gba-net-boot, you will also need to copy open_agb_firm.firm
to the root of your SD card.
To restore the Homebrew Launcher, simply replace the modified boot.3dsx
file with the backup you made. You can also remove the copy of open_agb_firm.firm
.
The limitations mentioned above exist because Luma3DS boots directly into the Homebrew Launcher by referencing the Title ID for the Homebrew Launcher Wrapper installed on your 3DS Home Menu. The wrapper looks for boot.3dsx
on the root of your SD card and runs it, which is the Homebrew Launcher used to launch other .3dsx
homebrew. By replacing boot.3dsx
with gba-net-boot, the Homebrew Launcher Wrapper will run gba-net-boot instead, and you will lose the entry point to the Homebrew Launcher.
How it works
When you run gba-net-send, it sends a UDP broadcast, which gba-net-boot listens for and responds to. When gba-net-send receives a response from gba-net-boot, gba-net-send establishes a TCP connection to gba-net-send to transfer your ROM. The ROM is saved to the root of your SD card as rom.gba
.
After the transfer is completed and your ROM is saved, gba-net-boot copies open_agb_firm into a specific location in FCRAM and reboots the 3DS. Because we configured fastboot3DS to check for it and the FCRAM hasn't been cleared during the reboot, fastboot3DS sees that a firm (open_agb_firm in this case) has been loaded at this location and automatically boots into it.
Known issues
- If a transfer is interrupted, it will assume the transfer has completed successfully. File size needs to be communicated and checked.
- Sometimes the UDP broadcast or ack is dropped. If this happens, try sending the ROM again.
- Nothing is configurable right now. Configuration options are planned for the future.
Changelog
v0.0.2 Beta
- Fixed a bug causing the ROM to be replaced by an empty file if no file transfer was performed.
v0.0.1 Beta
- First Release.
Credits
Thanks:
- A9NC - ARM9 Netload Companion devs - code referenced for info on FCRAM firm boot
- That-Shortcut-Thingy devs - code referenced for info on FCRAM firm boot
- SciresM - clarification that
GSPGPU_FlushDataCache()
flushes CPU cache to RAM - TuxSH - clarification that
GSPGPU_FlushDataCache()
flushes CPU cache to RAM - Luma3DS devs
- fastboot3DS devs
- libctru devs
- devkitPro contributors
- 3dbrew.org contributors
- Everyone who has contributed to the homebrew scene