Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

GBA Net Boot 3DS: Difference between revisions

From GameBrew
No edit summary
No edit summary
Line 20: Line 20:
}}
}}
The GBA Net Boot is a wireless tool that allows you to receive and boot GBA homebrew on your 3DS using its built-in GBA hardware. With GBA Net Send, you can transmit GBA homebrew ROMs from your computer to your 3DS over a wifi network. After receiving your ROM, GBA Net Boot saves it to the SD card and automatically launches open_agb_firm to enable you to run your ROM in native GBA mode on your 3DS. The primary purpose of this tool is to simplify and streamline the process of testing GBA homebrew on official hardware.
The GBA Net Boot is a wireless tool that allows you to receive and boot GBA homebrew on your 3DS using its built-in GBA hardware. With GBA Net Send, you can transmit GBA homebrew ROMs from your computer to your 3DS over a wifi network. After receiving your ROM, GBA Net Boot saves it to the SD card and automatically launches open_agb_firm to enable you to run your ROM in native GBA mode on your 3DS. The primary purpose of this tool is to simplify and streamline the process of testing GBA homebrew on official hardware.
==How it works==
When you execute gba-net-send, it initiates a UDP broadcast that gba-net-boot receives and replies to. Once gba-net-send obtains a response from gba-net-boot, it creates a TCP connection to gba-net-send for the transmission of your ROM. The transferred ROM is then stored in the root directory of your SD card as rom.gba.
Once the ROM transfer is complete and saved, gba-net-boot copies open_agb_firm to a particular location in FCRAM, and then restarts the 3DS. fastboot3DS, which we have configured to verify it, detects that a firm (in this case, open_agb_firm) has been loaded at this location, and since the FCRAM has not been erased during the reboot, it automatically boots into it.


==Disclaimer==
==Disclaimer==
Line 53: Line 58:
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'''.
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 followed the [[Homebrew Launcher Wrapper 3DS]] installation 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, effectively removing your ability to load the Homebrew Launcher unless you have another wrapper installed for it, which you may need to build yourself.
* If you still want to use this method, you need to set up your 3DS to boot directly into the Homebrew Launcher and then copy gba-net-boot.3dsx to the root of your SD card and rename it to boot.3dsx. You should also make a backup of the original boot.3dsx file and copy open_agb_firm.firm to the root of your SD card if you were keeping it in the same directory as gba-net-boot.
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 your access to the Homebrew Launcher.
== 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.
* This is my first C project, so I'm sure some (probably most) of the code is probably ugly and/or follows bad practices.


==Changelog==
==Changelog==
Line 60: Line 80:
'''v.0.0.1 Beta)'''
'''v.0.0.1 Beta)'''
* First Release.
* First Release.
==Thanks ==
* '''[https://github.com/d0k3/A9NC A9NC - ARM9 Netload Companion] devs''' - code referenced for info on FCRAM firm boot
* '''[https://github.com/SUOlivia/That-Shortcut-Thingy That-Shortcut-Thingy] devs''' - code referenced for info on FCRAM firm boot
* '''SciresM''' - clarification that <code>GSPGPU_FlushDataCache()</code> flushes CPU cache to RAM
* '''TuxSH''' - clarification that <code>GSPGPU_FlushDataCache()</code> flushes CPU cache to RAM
* '''[https://github.com/LumaTeam/Luma3DS Luma3DS] devs'''
* '''[https://github.com/derrekr/fastboot3DS fastboot3DS] devs'''
* '''[https://github.com/devkitPro/libctru libctru] devs'''
* '''[https://devkitpro.org/ devkitPro] contributors'''
* '''[https://www.3dbrew.org/ 3dbrew.org] contributors'''
* Everyone who has contributed to the homebrew scene


== External links ==
== External links ==
* Official Website - https://www.reddit.com/r/3dshacks/comments/12blrok/gba_net_boot_a_tool_to_make_gba_homebrew_testing/
* Official Website - https://www.reddit.com/r/3dshacks/comments/12blrok/gba_net_boot_a_tool_to_make_gba_homebrew_testing/
* Github - https://github.com/joshbackstein/gba-net-boot
* Github - https://github.com/joshbackstein/gba-net-boot

Revision as of 11:59, 13 April 2023

GBA Net Boot
File:Gbanetboot3ds.png
General
Authorjoshbackstein
TypeUtilities
Version0.0.2
LicenseGPL-3.0
Last Updated2023/04/11
Links
Download
Website
Source

The GBA Net Boot is a wireless tool that allows you to receive and boot GBA homebrew on your 3DS using its built-in GBA hardware. With GBA Net Send, you can transmit GBA homebrew ROMs from your computer to your 3DS over a wifi network. After receiving your ROM, GBA Net Boot saves it to the SD card and automatically launches open_agb_firm to enable you to run your ROM in native GBA mode on your 3DS. The primary purpose of this tool is to simplify and streamline the process of testing GBA homebrew on official hardware.

How it works

When you execute gba-net-send, it initiates a UDP broadcast that gba-net-boot receives and replies to. Once gba-net-send obtains a response from gba-net-boot, it creates a TCP connection to gba-net-send for the transmission of your ROM. The transferred ROM is then stored in the root directory of your SD card as rom.gba.

Once the ROM transfer is complete and saved, gba-net-boot copies open_agb_firm to a particular location in FCRAM, and then restarts the 3DS. fastboot3DS, which we have configured to verify it, detects that a firm (in this case, open_agb_firm) has been loaded at this location, and since the FCRAM has not been erased during the reboot, it automatically boots into it.

Disclaimer

Please note that while this software has been extensively tested without encountering any issues, there is always a chance that it could harm your system, corrupt your data, or result in data loss. Certain aspects of this process, particularly the custom firmware and bootloader, interact with lower levels of the system. It is important to understand that I am not liable for any damage or loss incurred as a result of using this software.

How To Use

Before starting, ensure that you have completed the setup process.

Make sure that the Wi-Fi on your 3DS is enabled and connected, and then open gba-net-boot. If Wi-Fi has not been configured yet, gba-net-boot will wait until your 3DS is connected to Wi-Fi.

Once your 3DS is connected to Wi-Fi, gba-net-boot will wait for you to use the gba-net-send tool to transfer your ROM over the network to your 3DS. The ROM will be saved to the root directory of your SD card as "rom.gba".

After the transfer is complete and your ROM is saved to your SD card, gba-net-boot will automatically launch open_agb_firm. From there, you can navigate to "rom.gba" on the root of your SD card and press the A button to launch it.

Setup

Begin by following the guide to install Luma3DS custom firmware, which will also guide you through the process of installing Boot9strap.

Once you have installed Luma3DS, use OpenFirmInstaller 3DS to install fastboot3DS.

Turn off your 3DS and turn it back on while holding the Home button to access the fastboot3DS menu. Navigate to Boot setup and select Enable FCRAM Boot to enable it. Once you see the check mark, go to Continue boot and press A to proceed.

Optionally, if you want to use the default Luma3DS chainloader instead of GodMode9 3DS, go to Boot setup in the fastboot3DS menu, select Setup [slot 1], and highlight Disable [slot 2] to disable GodMode9. Press B until you reach the main menu, and choose Continue boot. Now, holding the Start button on boot should use the Luma3DS chainloader.

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. Place the open_agb_firm.firm file in either the /3ds/gba-net-boot or /luma/payloads directory. 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 it to use and another version in the appropriate directory for Luma3DS or fastboot3DS to use.

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. Find gba-net-boot and launch it. Refer to the other section for instructions on how to use 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 followed the Homebrew Launcher Wrapper 3DS installation 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, effectively removing your ability to load the Homebrew Launcher unless you have another wrapper installed for it, which you may need to build yourself.
  • If you still want to use this method, you need to set up your 3DS to boot directly into the Homebrew Launcher and then copy gba-net-boot.3dsx to the root of your SD card and rename it to boot.3dsx. You should also make a backup of the original boot.3dsx file and copy open_agb_firm.firm to the root of your SD card if you were keeping it in the same directory as gba-net-boot.

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 your access to the Homebrew Launcher.

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.
  • This is my first C project, so I'm sure some (probably most) of the code is probably ugly and/or follows bad practices.

Changelog

v.0.0.2 Beta)

  • Fixed a bug causing the ROM to be replaced by an empty file if no file transfer was performed.

v.0.0.1 Beta)

  • First Release.

Thanks

External links

Advertising: