Homebrew [NDS] Yet Another nds-bootstrap Forwarder: more than 40 forwarders are now possible

lifehackerhansol

i write working(?) code
OP
Member
Joined
Oct 2, 2021
Messages
468
Trophies
0
XP
1,440
Country
Canada
I have created a fork of the GUI with sound support. A pull request is currently pending, but until it is approved/denied you can build it yourself from the 'sound' branch, or wait for me to upload packages later today

Currently it does not check to make sure the wav file is < 3 seconds, so make sure you dont use files that are too long

I cant upload links (new account), so github.eee /spitzeqc/YANBF-Generator-Sound-Support/tree/sound

EDIT:
Windows and Linux packages have been uploaded, but I have not been able to build for Mac
GitHub Actions can build it. I'll review it. Thank you!
 
v1.5.2

lifehackerhansol

i write working(?) code
OP
Member
Joined
Oct 2, 2021
Messages
468
Trophies
0
XP
1,440
Country
Canada

wrbx

New Member
Newbie
Joined
Apr 19, 2022
Messages
1
Trophies
0
Age
31
Location
Oslo
XP
32
Country
Norway
@MobileForce I found a way that works for me on Mac and you should be able to do the same in Windows using this guide:


Using the generator from the CLI (I'm not familiar with the GUI) you should be able to create a forwarder pointing it to the .nds in the mapped drive via ftp (using ftpd on the 3DS). The caveat is that it seems you need to manually specify an output for the cia on a local directory instead of letting it use its default directory. You can simply copy the cia over manually afterwards.


The command would be:

Code:
generator -o C:\localpath\game.cia -b banner.png -s sound.wav X:\remotepath\game.nds

The difference between what you were doing and this way is that the remote path is mapped to a local drive which means it'll appear as a local path which should successfully "trick" the generator. Replace the drive letters as appropriate for your machine of course.


Custom banner and sound are optional but might as well add them imo (remember the sound needs to be a 16 bit PCM wav maximum 3 seconds long and the banner a 256x128 png)

And yes to answer your question you can close the game pressing home at any moment, of course you will lose any unsaved progress.

Hi, would you be able to point me in a direction on how you got this to work on Mac ? Thanks!
 
  • Like
Reactions: Yrouel

MarioKartFan

Well-Known Member
Member
Joined
Aug 27, 2019
Messages
596
Trophies
0
XP
2,319
Country
Algeria
Just curious. Has anyone put together any good looking artwork for any of these forwarders? There are a couple of DS games (cough, Chrono Trigger, cough) that could pass for a 3DS game and it would be pretty cool to have forwarded artwork to boot.
 
  • Like
Reactions: Yrouel

Yrouel

Well-Known Member
Member
Joined
Apr 16, 2019
Messages
104
Trophies
0
Age
37
XP
468
Country
Italy
Hi, would you be able to point me in a direction on how you got this to work on Mac ? Thanks!
First things first you need ftpd on the 3DS, you can install it from Universal Updater. After you open it on the top you can see the ip of the console and the port to use.

Now in the Finder do Go -> Connect to Server (CMD-K) and as address put

Code:
ftp://anonymous:anonymous@IP:PORT

At this point it should connect and you should see it mounted like a normal drive.

Download latest YANBF and extract it wherever you want (mind you it's double zipped) then open Terminal and go in the folder where generator is (I hope you are at least a bit familiar with the unix shell).

The command to make it work is:

Code:
./generator -o /localpath/to/game.cia -b banner.png -s sound.wav /Volumes/IPofthe3DS/nds/game.nds

(you can also drag and drop the nds from the mounted remote drive to automatically get the path)

This should create your CIA which then you need to copy to the 3DS. At this point the FTP might crash or malfunction so close it and reopen it and then copy the .cia
 
  • Like
Reactions: wrbx

Yrouel

Well-Known Member
Member
Joined
Apr 16, 2019
Messages
104
Trophies
0
Age
37
XP
468
Country
Italy
Just curious. Has anyone put together any good looking artwork for any of these forwarders? There are a couple of DS games (cough, Chrono Trigger, cough) that could pass for a 3DS game and it would be pretty cool to have forwarded artwork to boot.
Hey I made a banner and sound exactly for Chrono Trigger, should recognize it automatically and use it on its own. You can see the files here:
https://github.com/YANBForwarder/assets/tree/main/assets/YQU

YQU.png


Also I can report that you can launch it in "Forced" widescreen mode and it looks pretty damn good (very minimal basically unnoticeable distortion).

If you don't have the "forced" option you need to replace the sdcard.nds with the one that was linked here few posts ago which is a newer build (hold Y while booting).
Also of course you need to have the widescreen patch going. I followed this guide but mind you that to use it with the forwarder the file needs to be at

Code:
sd:/_nds/ntr-forwarder/Widescreen.cxi

Let me know what you think. Of course you can replace either sound or image if you want.

Also if you tell me which other game you were thinking of I can likely whip up a banner quite quickly. It's the sound that's trickier...
 
Last edited by Yrouel,
  • Like
Reactions: MarioKartFan

PatrickK

New Member
Newbie
Joined
Apr 11, 2022
Messages
4
Trophies
0
Age
29
Location
Bonn
XP
34
Country
Germany
At First: Big BIG Thanks to @spitzeqc for tne new GUI with sound support :)

I have a question regarding YANBF:
Sometimes I use the NTR CFW (BootNTRSelector) to Stream the 3ds Display Content to my PC.
Unfortunetaly i had discoverd that this can't be done with DS games installed through the YANBF.

The Problem is quit "simple":
To get the Stream-to-PC to work you need to start the NTR Application on your 3DS first.
Than you can connet it on the PC-Side and start the Game.
Somehow the YANBF has an behavior that stops the NTR App (running in the background of the 3DS)
during the Start of a DS game.
When starting the DS game, which is installed through the YANBF, the Statup-Process is like following:
5sek 3DS Logo > ~20sek Blackscreen > ~20sek Whitescreen (nds-bootstrap loading)
After 40-60 seconds (depending on the game) the Game starts^^
Im totaly fine with this loading time. For me that is perfectly acceptable^^
But it looks like during this "20sek black" phase at the beginning, the YANBF is doing something that stops the NTR Application running in the Background (Like a restart of the Console).

I thought it would be the bests to ask here, if someone has a solution/workaround? Eighther to get the stream reconnected after the DS Game has started or to solve the problem in first place, so that the 3ds dosent lose the connection/close the NTR Application at all. Otherwise it would mean, that you never can stream DS-Games to your PC/Capture them, when they are installed throu the YANBF. Which would be fine ... but a bit pity^^

PS: If this question has already been asked, I apologize for wasting your time again.
 
Last edited by PatrickK,

Pk11

A catgirl with a DSi
Member
Joined
Jun 26, 2019
Messages
1,285
Trophies
1
Age
22
Location
米国
Website
pk11.us
XP
3,894
Country
United States
At First: Big BIG Thanks to @spitzeqc for tne new GUI with sound support :)

I have a question regarding YANBF:
Sometimes I use the NTR CFW (BootNTRSelector) to Stream the 3ds Display Content to my PC.
Unfortunetaly i had discoverd that this can't be done with DS games installed through the YANBF.

The Problem is quit "simple":
To get the Stream-to-PC to work you need to start the NTR Application on your 3DS first.
Than you can connet it on the PC-Side and start the Game.
Somehow the YANBF has an behavior that stops the NTR App (running in the background of the 3DS)
during the Start of a DS game.
When starting the DS game, which is installed through the YANBF, the Statup-Process is like following:
5sek 3DS Logo > ~20sek Blackscreen > ~20sek Whitescreen (nds-bootstrap loading)
After 40-60 seconds (depending on the game) the Game starts^^
Im totaly fine with this loading time. For me that is perfectly acceptable^^
But it looks like during this "20sek black" phase at the beginning, the YANBF is doing something that stops the NTR Application running in the Background (Like a restart of the Console).

I thought it would be the bests to ask here, if someone has a solution/workaround? Eighther to get the stream reconnected after the DS Game has started or to solve the problem in first place, so that the 3ds dosent lose the connection/close the NTR Application at all. Otherwise it would mean, that you never can stream DS-Games to your PC/Capture them, when they are installed throu the YANBF. Which would be fine ... but a bit pity^^

PS: If this question has already been asked, I apologize for wasting your time again.
Unfortunately, it's not possible. NTR simply doesn't work in DS mode so as soon as the 3DS reboots into DS mode (regardless of if you're using YANBF, TWiLight Menu++, real carts, etc) it'll kill NTR and there's (at least currently) no way around that.
 

spitzeqc

Member
Newcomer
Joined
Apr 18, 2022
Messages
23
Trophies
0
Location
Earth
XP
121
Country
United States
I do not believe it is possible to use wireless capture to stream regular ds games. My understanding is the wireless capture software runs in 3ds mode, while the ds game runs in separate ds mode (think vwii mode on wiiu). As you have noted, the "black phase" looks like the console is rebooting, and it basically is (again, think vwii/wiiu) which is why ntr stops running.

As for "work arounds," I can think of 2 solutions, one practical and one theoretical. The practical solution would be to emulate the game on your computer, and then use some program (like CTurt's 3DSController) to send button inputs from the 3ds to the computer. This would be the most "natural" way to use the touchscreen on games that require it. For any games that dont require touch screen, just using a standard controller may be good enough. The theoretical way would be for someone to develop a ds emulator to run in 3ds mode, which would prevent the console from rebooting to ds mode and killing ntr (though i wouldnt hold out much hope for this one happening).

If you absolutely must stream ds games, you will need a hardware capture card of some sort. Unfortunately capture cards are being produced anymore (there was some work done for an open-source card for the 3ds, but i dont think anything came from that) so you may need to pay a premium to get one.
 
  • Like
Reactions: Pk11

NitroHedgehog

Well-Known Member
Newcomer
Joined
Sep 11, 2017
Messages
52
Trophies
0
XP
224
Country
Canada
Sorry if I'm late to the party, but the forwarder doesn't allow me to use custom 16-bit WAV files, claiming the CWAV converter is missing... am I doing something wrong? I used Audacity to crop the sounds to 2 seconds or less and convert them to 16-Bit.
 

spitzeqc

Member
Newcomer
Joined
Apr 18, 2022
Messages
23
Trophies
0
Location
Earth
XP
121
Country
United States
Sorry if I'm late to the party, but the forwarder doesn't allow me to use custom 16-bit WAV files, claiming the CWAV converter is missing... am I doing something wrong? I used Audacity to crop the sounds to 2 seconds or less and convert them to 16-Bit.
Assuming you are using the gui, is YANBF-GUI in the same directory as bannertool, generator, and makerom?
Also, (assuming the sound you are using is not copyrighted and its not against the ToS) could you upload your wav so others can test it?
 

MarioKartFan

Well-Known Member
Member
Joined
Aug 27, 2019
Messages
596
Trophies
0
XP
2,319
Country
Algeria
Hey I made a banner and sound exactly for Chrono Trigger, should recognize it automatically and use it on its own. You can see the files here:
https://github.com/YANBForwarder/assets/tree/main/assets/YQU

View attachment 306708

Also I can report that you can launch it in "Forced" widescreen mode and it looks pretty damn good (very minimal basically unnoticeable distortion).

If you don't have the "forced" option you need to replace the sdcard.nds with the one that was linked here few posts ago which is a newer build (hold Y while booting).
Also of course you need to have the widescreen patch going. I followed this guide but mind you that to use it with the forwarder the file needs to be at

Code:
sd:/_nds/ntr-forwarder/Widescreen.cxi

Let me know what you think. Of course you can replace either sound or image if you want.

Also if you tell me which other game you were thinking of I can likely whip up a banner quite quickly. It's the sound that's trickier...
This is very cool. Would you consider doing something for Tetris DS? It's another one that could almost pass for a 3DS game.
 
  • Like
Reactions: Yrouel

Yrouel

Well-Known Member
Member
Joined
Apr 16, 2019
Messages
104
Trophies
0
Age
37
XP
468
Country
Italy
This is very cool. Would you consider doing something for Tetris DS? It's another one that could almost pass for a 3DS game.
There you go (for the sound I used the first few seconds of the main title theme):

EDIT: I boosted the volume a bit because I realized it was annoyingly low compared to the other apps. I'm attaching the new wav file

tetrisds.png
 

Attachments

  • tetrisds.zip
    388.4 KB · Views: 50
  • ATR.wav.zip
    415.8 KB · Views: 55
Last edited by Yrouel,

Yrouel

Well-Known Member
Member
Joined
Apr 16, 2019
Messages
104
Trophies
0
Age
37
XP
468
Country
Italy
@lifehackerhansol @Pk11 I don't know which piece of the puzzle this problem is related to but I can't open the per-game settings with this new Tetris DS cia I made (to test the assets and also I wanted to test fullscreen) while I still can open it with Chrono Trigger.
It also seems it doesn't recognize a manually created ini file for Tetris.
The forwarder besides this issue works.

I used latest version of the generator for Tetris DS but I don't remember which version I had used for Chrono Trigger. On the 3DS I have latest luma, latest nds-bootstrap and the modified sdcard.nds for the forced widescreen, while I don't recall which bootstrap.cia I have installed (is there a way to check?)


I'm attaching both cias and here's what they forward to:

Chrono Trigger: sd://nds/3351 - Chrono Trigger (Europe) (En,Fr).nds
Tetris DS: sd://nds/0413 Tetris DS (EU)(M5).nds


EDIT: I remade the forwarder and it now works. The only difference is that I remade it "the proper way" moving the microsd instead of using the workaround of mounting the volume as a local drive to do it remotely.
 
Last edited by Yrouel,

NitroHedgehog

Well-Known Member
Newcomer
Joined
Sep 11, 2017
Messages
52
Trophies
0
XP
224
Country
Canada
Assuming you are using the gui, is YANBF-GUI in the same directory as bannertool, generator, and makerom?
Also, (assuming the sound you are using is not copyrighted and its not against the ToS) could you upload your wav so others can test it?
Everything is fine now. The .wav sound was merely my dog barking, and Audacity wasn't exporting the files properly. I wanted to have the Nintendogs DS games as forwarders (I own them in retail carts, but my dad forgot where he put them when we moved not so long ago...) But all of them have the Title ID 000000, which means I can only install ONE of them at the same time. Is it possible to change the TitleID of a forwarder?
 

lifehackerhansol

i write working(?) code
OP
Member
Joined
Oct 2, 2021
Messages
468
Trophies
0
XP
1,440
Country
Canada
The TitleID thing has been happening more than once now, I think there is a legitimate issue. I'll look into it later this week but I am also recovering from a surgery so I won't be on top of it.
 
  • Like
Reactions: Yrouel

Yrouel

Well-Known Member
Member
Joined
Apr 16, 2019
Messages
104
Trophies
0
Age
37
XP
468
Country
Italy
But all of them have the Title ID 000000, which means I can only install ONE of them at the same time. Is it possible to change the TitleID of a forwarder?

I encountered the same issue. I don't know if the GUI has the option, but from command line the generator has a randomize option that should produce different IDs (and hopefully also still not hit already installed titles...).

By the way, consider posting a request here with the exact game titles and I'll make custom banners if you want.

@lifehackerhansol take care!

The issue is two fold by the way:
The one I opened an issue for where it will create a forwarder with the same ID of one already installed and the fact that it will create forwarders with the same ID when you make a batch of them.


I wonder if you could solve the issue at the root by implementing (or lifting from somewhere....) some kind of hashing function that based on the header of the rom (meaning not just the ID but the name too which will account for romhacks that customize it) creates a unique TitleID for its forwarder.
That will kinda nuke the possibility of having different forwarders for the same rom "for free" but there is still the randomizer option.

This should still work in conjunction with a collision detection just in case but primarily it should solve the issue of having forwarders with same ID (unless if for the same exact nds)
 
Last edited by Yrouel,

lifehackerhansol

i write working(?) code
OP
Member
Joined
Oct 2, 2021
Messages
468
Trophies
0
XP
1,440
Country
Canada
I wonder if you could solve the issue at the root by implementing (or lifting from somewhere....) some kind of hashing function that based on the header of the rom (meaning not just the ID but the name too which will account for romhacks that customize it) creates a unique TitleID for its forwarder.
I've been thinking about how to implement this for a while.

Pk11 and I were theorizing how we could use existing dbs of TitleIDs, and then just fit the games in unused slots. Or to use a range of presumably unused UniqueID ranges.

Option 1 is to check against https://3dsdb.com and https://github.com/hax0kartik/3dsdb and read off its respective XML files. There will be some performance cost here but who cares, you only generate the forwarders once LOL.

Option 2 is to use the 0xF8000-0xFF7FF range (source: https://www.3dbrew.org/wiki/Titles#Title_IDs, basically anything except System and Application) and then try to get the XOR to fit in there. Or just randomize. Probably randomize.

Option 2.1 is to use option 2 while maintaining a local counter of all forwarders made so far. I gave up trying to make it so that a new forwarder icon replaces the older one long ago. One would generally expect that making a new icon installs a separate icon, so this is increasingly sounding like a good idea. Plus, with a range of 30719 possible UniqueIDs, it's impossible to loop back without accidentally hitting the limit unless you're beta testing.

I'm thinking of going option 2.1 here, and then blacklist UniqueIDs as I go because some homebrew apps live in this UniqueID area. The homebrew community has never had a successful attempt at maintaining a homebrew UniqueID database so I prefer to just guesstimate.

Option 2.1 probably also breaks developer consoles, but I know nothing about them. I asked someone more knowledgeable on this on Discord.

I'll put together something later in the week.
 
  • Like
Reactions: Yrouel

three-dee-ess

Member
Newcomer
Joined
May 3, 2022
Messages
6
Trophies
0
Age
22
Location
Southwest
XP
300
Country
United States
Hi, first of all I just want to say thank you so much for this! Not having to adhere to the 40 title ds limit is amazing and the forwarders work great and now they're super easy to set up as well. The only thing is I can't seem to get any YANBF forwarders to keep track of play time in the 3DS's activity log--when I use a forwarder it says I've only played for a minute regardless of how long I've actually played. I wanted to ask if this just an inherent side effect of this particular forwarder structure or if I'm doing something wrong. Thanks for your time!
 

lifehackerhansol

i write working(?) code
OP
Member
Joined
Oct 2, 2021
Messages
468
Trophies
0
XP
1,440
Country
Canada
Hi, first of all I just want to say thank you so much for this! Not having to adhere to the 40 title ds limit is amazing and the forwarders work great and now they're super easy to set up as well. The only thing is I can't seem to get any YANBF forwarders to keep track of play time in the 3DS's activity log--when I use a forwarder it says I've only played for a minute regardless of how long I've actually played. I wanted to ask if this just an inherent side effect of this particular forwarder structure or if I'm doing something wrong. Thanks for your time!
I didn't actually test this. The goal has been to simply be able to have more than 40 icons, and that was all I focused on.

It's entirely plausible that this is indeed a side effect. Theoretically, the only length of time that the 3DS-side has been played is less than 4 seconds, so Activity Log showing only one minute makes sense, regardless of how long you've played the actual game behind it.

I think this is just one of those things you're going to have to deal with as a consequence of having more than 40.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    Xdqwerty @ Xdqwerty: sbeve