Tutorial  Updated

Setting up No$gba for DSiWare emulation

This is the first time for me trying to write some tutorial. As always when I have finished a text: I tried my best but I am no satisfied with my work. If there is something missing, wrong, can be done better…
Please tell me how I can improve this!

Why this tutorial?

I did not find anything like this online. 3DS emulation is quite easy to use for the end user. Install Citra → load ROM. DSiWare emulation seems to be not widely used and currently depends on having the complete DSi NAND image. For the few good titles it would be a real shame not to have them (optionally) on a big screen.

What this tutorial covers:
  • Setting up No$gba so that it boots to the DSi main menu (Launcher) instead of simply starting a ROM
  • Adding unlaunch to the emulated NAND.
  • Adding HiyaCFW/SDNAND and TWiLight Menu++ to the virtual SD
    • DSiWare can be either started from .nds files with TWiLight Menu++ … or …
    • Installed to the SDNAND following existing tutorials. I will link to those instead of just repeating or even plagiarizing.
  • Second method: Installing DSiWare on SysNAND / DSI-1.MMC (not finished yet – missing in this version)
    • Can be used on the emulator
    • Can be used on a real DSi as well; However… restoring NAND images to the actual DSi NAND chip is generally frowned upon. I will comment this a little in the next version when the section is finished.

Enough with the preface. Let’s get started.

What you will need:
  • A DSi NAND image. Use the guide https://dsi.cfw.guide/ in order to backup your NAND. If you don’t want to actually modify your DSi just stop following the guide after creating the backup. This is just reading from the NAND. Of course everything exists online. Linking it here is obviously against the rules as a NAND dump contains Nintendo copyrighted material. I highly recommend getting a DSi and obtaining the NAND dump legally.
  • DSi and DS Firmware Files. In fact not firmware… the files are DSIBIOS7.ROM, DSIBIOS9.ROM, biosnds7.rom and biosnds9.rom. But DSi Firmware Files” is a nice search term, don’t you think?
  • A Windows computer being able to run No$gba.
  • No$gba, Windows gaming version. I did not try the DOS version. Really should do this some time… Pentium 1 computer (or older) + FreeDOS + No$gba = ?
  • OSFMount because Windows does not seem to be able to mount virtual disk images on it’s own. My comment on this: HÄ?!
  • ninfs (only if you intend to modify the DSi NAND backup). Ninfs requires WinFsp. Everything for setting up ninfs is explained on the readme.md on Github.
  • A virtual SD card.I’ve attached a .zip file containing various sizes. These files just contain an empty(!) file system. No copyrighted material! The files are ready to be used with OSFMount.
  • DSiWare. Sadly the DSi Shop is no more… but many games are still available on the 3DS eShop. Dumping the titles can be easily done with GodMode9 on any 2|3DS system with Luma3DS.
  • Time and patience. Depending on where you have to start getting all prerequisites mentioned under “What you will need” is tedious.
Because of @ReyVGM suggestion I moved some not so important information into this spoiler to clear the main guide up a bit.
  • Seems it’s currently not possible to dump the complete DSi BIOS files with software only methods. Fwtool can dump the lower 32K of the 64K BIOS files. The upper half is zeroed out. No$gba crashes when trying to launch software with the incomplete BIOS files. I really would have preferred to provide a legal way to get these files – but unfortunately downloading the two files seems to be the only method at the moment. I have no idea how these files were obtained. Here is room for improvement! Any help and/or information about DSi BIOS dumping would be appreciated!
  • The DS BIOS file can be fully dumped with a DS-(Lite|Phat) and a flashcart using fwtool.
  • Normally I’m pure Linux user. For this experiment I went with Windows. appdb.winehq.org suggests the emulator somewhat works on Wine. However dealing with possible problems because of the Wine compatibility layer was out of scope for this project. No idea if Linux or MacOS are an option.
  • The virtual SD is just a file containing an MBR partition table and one FAT16 or FAT32 formatted partition. Just like a real SD.
    • For whatever reason I had to use Windows for creating the virtual SDs. No$gba did not like partitions created with Linux fdisk and RAW dumps of some real SDs. One of these real SDs is used on daily basis in a real DSi and has no problems working with unlaunch, HiyaCFW and TWilight Menu++. I was not able to pinpoint the issue.
    • The files in the attached zip (partitions created with Windows 8.1 diskpart) did work on a quick test but I can't guarantee they are perfectly compatible. I copied my setup into each one, started HiyaCFW and TWiLight Menu++ and one DSiWare game.
The actual guide:

Part 1: Getting the emulator to boot the DSi Home Menu (“Launcher”)
1. Download and unpack No$GBA to an empty directory.
2. Copy the BIOS files into the same directory.
3. Put your NAND backup there as well. The NAND image has to be renamed to DSI-1.MMC for the emulator to use it.
4. Any commercial DS(i) ROM or homebrew app. I used UNLAUNCH.DSI (reason: see later)

Your directory should look like this:
01_folder.png
5. Start the emulator and set it to DSi emulation:
  • Open Options, Emulation Setup (F11)
  • Reset/Startup Entrypoint → GBA/NDS BIOS (Nintendo logo)
  • NDS Mode/Colors → DSi (retail/16MB)
  • Save Now
02_emulation_settings.png
6. File, Cartridge Menu (FileName) (F12)
  • Select your ROM file
  • The emulator should boot your NAND with the selected ROM in the virtual cartridge slot.
At this point you can play the DSiWare titles that are already installed on your NAND image. It is also possible to start DSiWare in .nds format by selecting them as ROM for the cartridge slot. However DSiWare started this way is unable to save. This means we are not done yet.

03_Launcher.png
04_Installed_DSiWare_a.png
04_Installed_DSiWare_b.png
Part 2: Adding more DSiWare.
There two options to get additional DSiWare into your emulated DSi. I recommend the first one. The second is more complicated and limited to 40 titles at a time and to the small size of the main partition on the NAND.

A) Using HiyaCFW/SDNAND and/or TWiLight Menu++ on a virtual SD
1. Download the .zip file attached to this tutorial and choose one of the virtual SDs inside. DSiWare is not very big so a smaller size might be okay. Unpack the desired virtual SD size and rename it to DSI-1.SD. Now put the DSI-1.SD inside file in your No$gba directory. Let me emphasize this once again: The files inside the attached zip do not contain an SDNAND – no Nintendo stuff included!
2. Install OSFMount on your Windows computer.
3. Open OSFMount and mount the virtual SD (in this example the small one that comes with the emulator):
05_Mount_a.png 05_Mount_b.png 05_Mount_c.png 05_Mount_d.png
4. Install HiyaCFW and/or TWiLight Menu++ on this virtual SD using HiyaCFW helper.
  • I will not do a step-by-step guide here – this would be just repeating existing guides.
  • I will also not provide detailed information about “How to configure and use unlaunch?” and “How to configure and use TWiLight Menu++").
  • https://dsi.cfw.guide/ is the best source if you are completely new to DSi homebrew / custom firmware.
  • If your SysNAND image does not already have unlaunch installed you can install it by starting UNLAUNCH.DSI as “cartridge”. This is why I chose it as a ROM in the first part. (Thanks to @edo9000 for this idea! I assumed this was impossible because cartridges normally don’t have NAND and/or SD access on a real DSi.)
  • In case you have an existing HiyaCFW and/or TWiLight Menu++ setup on your real SD you can just copy the contents to the virtual SD. Don’t copy your non-DSiWare ROMs (or only some for testing). I could not get nds-bootstrap to work. But I did not really try anyway. Maybe somebody else has more luck. Having a large number of cartridge based DS games on the virtual SD is a waste of space because No$gba can simply load them from anywhere on your computer without nds-bootstrap.
Once HiyaCFW is on your virtual SD you will find it in unlaunch:

06_unlaunch_Hiya_on_virtual_SD.png
5. Adding DSiWare for TWiLight Menu++ is just copy and paste .nds ROMs on the virtual SD – like on a real SD/DSi.
6. Adding DSiWare to HiyaCFW/SDNAND without TWilight Menu++ can be done by existing guides (The “40 titles at a time” limit applies to the “Launcher” on SDNAND as well) :

The result in HiyaCFW/SDNAND:

07_New_DSiWare_on_SDNAND_a.png
07_New_DSiWare_on_SDNAND_b.png
07_New_DSiWare_on_SDNAND_c.png
The result in TWiLight Menu++

08_DSiWare_with_TWiLight_Menu++.png
B) Adding DSiWare right to your DSI-1.MMC using ninfs
(Second method not done yet – will edit this post in a few days)
[…]​


  1. Touch input may be a little bit off when booting your NAND the first time in the emulator. Running the calibration tool in System Settings fixes this. Thanks @Trash_Bandatcoot for this information. You might have to adjust touch settings two times – for SysNAND and for SDNAND
  2. Touch input may not work when booting straight to TWiLight Menu++. Workarounds:
    • Start to Launcher either SysNAND or SDNAND first and then reset the emulator without closing it. Touchscreen should work in TWiLight Menu++ now
    • Do not start TWiLight Menu++ from unlaunch but HiyaCFW and set it to "autoboot title". Loading TWiLight Menu++ through HiyaCFW takes slightly longer but has no touch issues.
      Boot_Hiya.png
      Autoboot_title.png
Last comments:
  • Using Windows is hard for me. I don't really know how to use it and don't understand it. Sometimes the emulator slowed down extremely. For example when using Title Manager for HiyaCFW. Windows Task manager showed one of my CPU cores used a 100% by Microsoft Antimalware Service or something. After turning off real time protection in Windows Defender (Windows 8.1) the slowdowns stopped… Hä?!
  • Not all DSiWare works on the emulator. "A Little Bit of Brain Training – Arts Edition" crashes the emulator with "notyet16"


A big “Thank you!!” to:

@ReyVGM for asking me about this topic. → A fine question that lead to many interesting things to learn. I had thought about this topic before but never got to looking into it.
@edo9300 for adding some very valuable pieces of information. → I still feel terribly dumb for not figuring these things out. I could not have done this without your help.
@alexander1970 for reading through this tutorial in advance and enduring my frustration in PMs about this (and totally different topics) for the last few days.

NoCash for emulator and unlaunch. This emulator is some fine piece of software. The .exe file has only about 220KB. That’s what I call efficient!
@Robz8 and everybody involved in creating HiyaCFW (Helper) and TWiLight Menu++
@ihaveamac → For the awesome ninfs.
@shutterbug2000 → For the Memory Pit exploit allowing me to get CFW on my DSi [as well as @zoogie who provided Memory Pit for different regions/versions]

I have deep respect for all homebrew developers investing their free time into making our consoles more versatile. I’m not a coder and not capable of developing useful software… but I hope this tutorial may be useful for someone.
 

Attachments

  • VirtualSDs.7z
    2.3 MB · Views: 1,027
Last edited by KleinesSinchen, , Reason: Clean up a little – still missing the major additon

ReyVGM

Game Endings Master
Member
Joined
Oct 26, 2002
Messages
699
Trophies
2
Website
www.vgmuseum.com
XP
684
Country
Great write up, but I think it's still pretty confusing for a newcomer. I already did all that (except the dumping my own files part) and I still find it a bit convoluted reading it all in one go.

Some suggestions:
-Mention that HiyaCFW allows you to add games to the regular menu, while TwlightMenu allows you to replace the menu with a custom one. I didn't know the difference, and I would have actually used HiyaCFW (even if it's more limiting) because I like to keep things as close to original as possible.
-I think you can remove ninfs from the list. It is not really needed, and if someone does want to modify the NAND itself, then they can just ask for more info about that. But no need to bloat the guide with a much harder method. Or at least add that guide as a second separate post.
 

MaxiBash

Your Local Random Internet Geek
Member
Joined
Jul 14, 2018
Messages
1,284
Trophies
1
Website
trashbandatcootofficial.cardd.co
XP
5,002
Country
Netherlands
Great tutorial, but I will give a small tip:
If you get "An error has ocurred." when you try to open a newly installed DSiWare application, use "maketad" and obtain a DSi devnand. Though, that's copyrighted material and you'll have to do some deep searching. But when you find this kind of setup, installing DSiWare should be a no-brainer.

And another small tip, the cursor is slightly off from your regular stylus, so I recommend calibrating before trying to play any DSiWare that requires you to touch things on the screen.
 

ReyVGM

Game Endings Master
Member
Joined
Oct 26, 2002
Messages
699
Trophies
2
Website
www.vgmuseum.com
XP
684
Country
Great tutorial, but I will give a small tip:
If you get "An error has ocurred." when you try to open a newly installed DSiWare application, use "maketad" and obtain a DSi devnand. Though, that's copyrighted material and you'll have to do some deep searching. But when you find this kind of setup, installing DSiWare should be a no-brainer.

And another small tip, the cursor is slightly off from your regular stylus, so I recommend calibrating before trying to play any DSiWare that requires you to touch things on the screen.

1) I have not encountered "An error has ocurred" message and I have tried over 30 games with No$gba.
2) I noticed that yes, but how do you calibrate the touchscreen with no$gba?

Another thing if you're using TwilightMenu: if you boot the emulator and load directly to the Twilight menu, games won't have the touchscreen calibrated and the "pointer" will be stuck in the top-left. To fix that, you first need to boot the emulator to the original DSi menu, then reset the emulator, and boot the Twilight menu. My guess is some kind of no$gba touchscreen calibration happens when booting the original DSi menu that doesn't happen with the custom menu.
 

KleinesSinchen

GBAtemp's Backup Reminder + Fearless Testing Sina
OP
Member
GBAtemp Patron
Joined
Mar 28, 2018
Messages
4,418
Trophies
2
XP
14,853
Country
Germany
Great write up, but I think it's still pretty confusing for a newcomer. I already did all that (except the dumping my own files part) and I still find it a bit convoluted reading it all in one go.
Yeah… but how could I make it any easier and/or shorter?

Some suggestions:
-Mention that HiyaCFW allows you to add games to the regular menu, while TwlightMenu allows you to replace the menu with a custom one. I didn't know the difference, and I would have actually used HiyaCFW (even if it's more limiting) because I like to keep things as close to original as possible.
Good point. This is a thing I took for granted. After having played around with Hiya and TWL Menu++ for some months now this became basic knowledge. Will add this with the first edit.

-I think you can remove ninfs from the list. It is not really needed, and if someone does want to modify the NAND itself, then they can just ask for more info about that. But no need to bloat the guide with a much harder method. Or at least add that guide as a second separate post.
Awww. But I like playing around with ninfs. You are probably right about this. Adding DSiWare to SysNAND has no benefits at all. Since I already did everything, I see no reason for not including it for the sake of completeness. I will put the majority of this will into a spoiler to keep it from cluttering up the first post.
=================

Great tutorial, but I will give a small tip:
If you get "An error has ocurred." when you try to open a newly installed DSiWare application, use "maketad" and obtain a DSi devnand. Though, that's copyrighted material and you'll have to do some deep searching. But when you find this kind of setup, installing DSiWare should be a no-brainer.
In what case does the error occur? Did not see any error – but I don’t have many DSiWare titles left to test. The few I have did work without this error message.
And another small tip, the cursor is slightly off from your regular stylus, so I recommend calibrating before trying to play any DSiWare that requires you to touch things on the screen.
Thanks. Will add this with the first edit as well. It is very noticeable when typing on the virtual keyboard.
 
Last edited by KleinesSinchen,

ReyVGM

Game Endings Master
Member
Joined
Oct 26, 2002
Messages
699
Trophies
2
Website
www.vgmuseum.com
XP
684
Country
Yeah… but how could I make it any easier and/or shorter?

Well, it's your guide so I don't want to impose on you, but I would remove (or put in spoiler tags) any over-explanation. For example, on the bios/firmware entries, they are too long for something that people will honestly never dump themselves and just easily find online. And the SD Card entry, again, too long for something that already comes with no$gba or you can put the link for that 2GB version found in the other thread.
In the Part 1 steps, unlaunch doesn't need to be in the no$gba directory, that's something you need to hack the NAND to install TwilightMenu. But if you just want to boot your own NAND with your own games, then you don't need that. I think that should be moved.

There should be 3 main steps in my opinion:
1) How boot the NAND in no$gba (either your own dump or the one found online) and people can stop there if they don't want to add more games.
2) How to hack the NAND to be able to add more games (that's where unlaunch comes in).
3) How to add more games (either to the SD card, or DSi's menu with HiyaCFW).
 
Last edited by ReyVGM,

MaxiBash

Your Local Random Internet Geek
Member
Joined
Jul 14, 2018
Messages
1,284
Trophies
1
Website
trashbandatcootofficial.cardd.co
XP
5,002
Country
Netherlands
In what case does the error occur? Did not see any error – but I don’t have many DSiWare titles left to test. The few I have did work without this error message.

Well, back in 2018, with the methods I tried, it would say that an error has occured, and if I reset the emulator, the application was deleted, so it was probably an anti-piracy meassure in the DSi's System Menu.
Now that I come to think of it, HiyaCFW gets rid of this check, but back then, I didn't know any better.

And like in the case of maketad, it can be more of a pain. You have to find a leaked TWLSDK, find the correct DLL's, find a DSi devkit NAND (to my knowledge, only v1.4E_dev and v1.4J_dev have been dumped), but after that, you have a more user-friendly setup that doesn't require you to install Unlaunch or HiyaCFW at all.
 

ReyVGM

Game Endings Master
Member
Joined
Oct 26, 2002
Messages
699
Trophies
2
Website
www.vgmuseum.com
XP
684
Country
Well, back in 2018, with the methods I tried, it would say that an error has occured, and if I reset the emulator, the application was deleted, so it was probably an anti-piracy meassure in the DSi's System Menu.
Now that I come to think of it, HiyaCFW gets rid of this check, but back then, I didn't know any better.

And like in the case of maketad, it can be more of a pain. You have to find a leaked TWLSDK, find the correct DLL's, find a DSi devkit NAND (to my knowledge, only v1.4E_dev and v1.4J_dev have been dumped), but after that, you have a more user-friendly setup that doesn't require you to install Unlaunch or HiyaCFW at all.

How do you calibrate the touchscreen with the emulator?
 

ReyVGM

Game Endings Master
Member
Joined
Oct 26, 2002
Messages
699
Trophies
2
Website
www.vgmuseum.com
XP
684
Country
Go to the System Settings and select "Touch Calibration" (or "Screen Calibration", forgot what it was).

That fixed that problem! Thanks!

Do you know by any chance how to enable the microphone? There's a game that requires to blow air to extinguish a fire to advance, but even using an actual headset doesn't work.
I searched online and people mentioned a trick with Audacity, but I tried that and it didn't work. It's possible mic emulation is only enabled for regular DS and not DSi, though.
 
Last edited by ReyVGM,

MaxiBash

Your Local Random Internet Geek
Member
Joined
Jul 14, 2018
Messages
1,284
Trophies
1
Website
trashbandatcootofficial.cardd.co
XP
5,002
Country
Netherlands
Do you know by any chance how to enable the microphone? There's a game that requires to blow air to extinguish a fire to advance, but even using an actual headset doesn't work.
I searched online and people mentioned a trick with Audacity, but I tried that and it didn't work. It's possible mic emulation is only enabled for regular DS and not DSi, though.

Nope. No$GBA has no support for apps or games that require the microphone or camera, DSi Sound doesn't evem boot up at all because of it. However, NoCash has been hinting on camera support in v3.0.
 
  • Like
Reactions: ReyVGM

KleinesSinchen

GBAtemp's Backup Reminder + Fearless Testing Sina
OP
Member
GBAtemp Patron
Joined
Mar 28, 2018
Messages
4,418
Trophies
2
XP
14,853
Country
Germany
Well, it's your guide so I don't want to impose on you, but I would remove (or put in spoiler tags) any over-explanation. For example, on the bios/firmware entries, they are too long for something that people will honestly never dump themselves and just easily find online. And the SD Card entry, again, too long for something that already comes with no$gba or you can put the link for that 2GB version found in the other thread.
In the Part 1 steps, unlaunch doesn't need to be in the no$gba directory, that's something you need to hack the NAND to install TwilightMenu. But if you just want to boot your own NAND with your own games, then you don't need that. I think that should be moved.
Guilty. I have a tendency write too much like some background information and… sometimes I can’t resist to include personal comments as well.
  • The thing with the BIOS files can be moved into a spoiler, agreed.
  • The virtual SDs: I will keep my own file attached. Having more sizes to choose from is not bad.
  • I put UNLAUNCH.DSI into the demo directory because any DS(i) ROM file is needed and it can be used in case the NAND dump does not already have it installed.
Once I’m able to concentrate for a while I will try to improve the tutorial by moving some parts into spoilers (and including touchscreen calibration and broken touch input when directly booting to TWiLight Menu++ )

Do you know by any chance how to enable the microphone? There's a game that requires to blow air to extinguish a fire to advance, but even using an actual headset doesn't work.
No luck for me either. Microphone test in the settings does not record anything but silence. In DS mode the microphone works perfectly (even with speech recognition in Brain Age).
====

Well, back in 2018, with the methods I tried, it would say that an error has occured, and if I reset the emulator, the application was deleted, so it was probably an anti-piracy meassure in the DSi's System Menu.

Now that I come to think of it, HiyaCFW gets rid of this check, but back then, I didn't know any better.
Yes, of course! When doing the test with SysNAND I removed unlaunch and… BANG! “An error has occurred” for non-legit DSiWare. But it’s not an issue with unlaunch and HiyaCFW.
 

ReyVGM

Game Endings Master
Member
Joined
Oct 26, 2002
Messages
699
Trophies
2
Website
www.vgmuseum.com
XP
684
Country

KleinesSinchen

GBAtemp's Backup Reminder + Fearless Testing Sina
OP
Member
GBAtemp Patron
Joined
Mar 28, 2018
Messages
4,418
Trophies
2
XP
14,853
Country
Germany

KleinesSinchen

GBAtemp's Backup Reminder + Fearless Testing Sina
OP
Member
GBAtemp Patron
Joined
Mar 28, 2018
Messages
4,418
Trophies
2
XP
14,853
Country
Germany
Can I suggest you to put MD5 checksum for the files for people who might need to know? I don't need that but it is a highly recommend. And good guide.
Will add the checksums with the next (major) edit. Thank you. Good idea.
 

MaxiBash

Your Local Random Internet Geek
Member
Joined
Jul 14, 2018
Messages
1,284
Trophies
1
Website
trashbandatcootofficial.cardd.co
XP
5,002
Country
Netherlands
Im the only one that gets bad sound output when on system menu,settings and other system apps?
Yeah, this is because sound options like mono, stereo, headphones and surround aren't properly supported by no$GBA, it was a weird discovery I made when I was messing with NAND Sound Player, but it finally explained why that was the case.

--------------------- MERGED ---------------------------

Someone should contact NoCash about this though, I'm not even sure if he knows what the problem is.
 

spotanjo3

Well-Known Member
Member
Joined
Nov 6, 2002
Messages
11,145
Trophies
3
XP
6,205
Country
United States
Im the only one that gets bad sound output when on system menu,settings and other system apps?

The developer.. He is aware and it had been long time just like that. He is working on it but he is focus on something like 3DS in no$gba and others for now, I guess. Just be thankful that this emulator is only one that can run DSi games by an awesome one developer. Yes, not the team. He is a person doing his emulators by himself! :)
 
  • Like
Reactions: George35000vr

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    RedColoredStars @ RedColoredStars: https://gbatemp.net/threads/videos-not-working-on-certain-sites-w-ms-edge-browser.645937/