Yet Another nds-bootstrap Forwarder 3DS

From GameBrew

Revision as of 03:29, 18 September 2022 by HydeWing (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Last Updated2022/09/17
TypeForwarders and Virtual Console Injectors

YANBF, or Yet Another nds-bootstrap Forwarder, is a forwarder structure for nds-bootstrap. This NDS forwarder launches from 3DS-mode, meaning you can install as many icons as you want until you max out all 300 Home Menu icon space.

The other implementation uses a DSiWare template and is limited to 40 titles.



  • Install Python 3.
  • From YANBF, copy bootstrap.cia to your SD card root.
  • Download the DS Forwarder Pack. Copy everything in the for SD card root folder to your SD card root.
  • Download the latest TWiLight Menu++ version. Only get the 3DS.7z file.
    • In the 7z file, go to _nds, TWiLightMenu, and extras.
    • Drag the apfix.pck and widescreen.pck file to sd:/_nds/ntr-forwarder/.
  • Open a terminal or command prompt.
    • cd inside the generator folder.
    • Run pip install -r requirements.txt

User guide

How to use

  • Run YANBF GUI. This may require some tinkering for macOS and Linux users, as they are provided in .dmg and AppImages. Please install accordingly.
  • Select your ROM in the app, then press the Download icon. This rom must be on your SD card. The forwarder will look in the wrong place otherwise.
  • An output folder will be generated, and your new CIA file will be there. Copy this to your SD card.
  • Boot your 3DS and install both CIAs using FBI.
  • To create more forwarders, you can run the YANBF GUI application again to generate more CIAs. For now, bootstrap.cia will only need to be installed once.


  • There is no way to build on-console at this time.
  • The generator get the boxart from GameTDB, specifically this part of the code is what downloads it.
  • The DS Forwarder Pack now supports cheat, simply put a usrcheat.dat at sdmc:/_nds/ntr-forwarder/usrcheat.dat or sdmc:/_nds/TWiLightMenu/extras/usrcheat.dat and it should work.





v1.6.2: This is why reading is important


  • Another debugging string has been added to the log.
  • The program will now fail if the ROM is detected to not be on the SD card, or if a custom path is not set.
    • Before this, it would silently succeed with the wrong path, or with the / character removed. This is no longer an issue and forces people to read the instructions on why it broke.

Known issues

  • DSiWare is not supported, as GameTDB does not provide box art for them (of course they don't, they don't come in a box.)


What's new?

  • @spitzeqc: added custom path support to the GUI.
    • SD card dependency is now fully removed.

Bug fix:

  • @Epicpkmn11: fixed unicode paths for bannertool.
  • Fixed an exception where converting images would write nowhere

Known issues:

  • DSiWare is not supported, as GameTDB does not provide box art for them (of course they don't, they don't come in a box.)


What's new?

  • SD card dependency has been removed. (CLI only)
    • You can now apply a custom ROM path that is different from the input ROM using -p <ROM path>
      • This path must follow POSIX standards. This may be improved in the future.
  • Unique ID is no longer based on the title's gamecode.
    • Unique ID 0xFF400-0xFF7FF is allocated for YANBF.
    • A new id.txt file is created and is used as a counter for Unique IDs.
      • Should this file be lost, you may potentially start replacing older forwarders. Which isn't a huge loss, but annoying nonetheless.


  • Some reworking of the code. Not visible to the end user, just made the thing more maintainable really.
  • libscrc has been replaced with a custom CRC16 function
    • GBATEK swiCRC16 pseudocode provided by nocash. Thanks nocash!

Bug fix:

  • The GameTDB access will ping the EN endpoint if the album artwork is not found on the correct region.
    • Apparently this is intended behaviour. Weird but oh well, another ping isn't taxing.

Known issues:

  • As is standard for YANBF releases, the GUI is always one step behind in functionality. So passing a custom ROM path will not work for now.
  • DSiWare is not supported, as GameTDB does not provide box art for them (of course they don't, they don't come in a box.)


What's new?

  • All repositories are consolidated to a YANBForwarder repository on GitHub.
  • @spitzeqc: added sound support to the GUI.

Bug fix:

  • Fixed an issue where the Linux release was mistakenly named macOS.


Bug fix

  • Attempted to fix Windows distribution being flagged as a virus.
    • cx_Freeze is used in place of PyInstaller.
  • Apps are now properly chmod +x'd.
    • Linux and macOS releases are now double-zipped.


What's new?

  • A repository for community-provided custom banners and sounds is now open!
    • As of this moment, only eCDP is provided. (Thanks Yrouel on GBAtemp!)
    • Now YOU can make your own and share it to everyone!
  • The program will search for a pre-existing custom banner beforehand, and default to the standard boxart if none are found.

Bug fix:

  • Fixed an issue where UniqueID incrementing was out of range.


What's new?

  • Python dependency is now gone. Life is easy!
  • A fork of the GUI was created to accomodate this release, for now. While the PR waits, anyway.

Bug fix:

  • Fixed UniqueID searching where it wrongly detects more than one ID0.
  • @Epicpkmn11: fixed bannergif module not properly detecting animated icons.

Known issues:

  • The GUI still does not have a randomizing function, though with the UniqueID collision checking this is largely unnecessary.


What's new?

  • UniqueID randomizing is here.
    • Not present in the GUI yet. You will need to do it via CLI.
    • Pass -r as an argument to randomize.
  • Launch splash has been changed from Homebrew to Nintendo 3DS.


  • UniqueID collision checking is now implemented.
    • This will require your Nintendo 3DS folder to be "clean". This means one ID0 folder and one ID1 folder only. If you have multiple, please clean them up.
    • This works by checking all TIDLOW values that are present on the SD card. If the UniqueID calculated by YANBF already exists on the SD card, it will simply increment the UniqueID by 1 until it no longer collides.
      • This may still collide with any titles that have not yet been installed. So this has a chance of potentially being replaced in the future by a retail game or some others homebrew app. There isn't a public database of this stuff or anything so unfortunately there is no guarantee.

Bug fix:

  • Fixed an issue where the 3DS-side app may display "Failed to launch CIA" error for a brief moment before actually launching.

Release notes.


External links