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,022
Last edited by KleinesSinchen, , Reason: Clean up a little – still missing the major additon

spotanjo3

Well-Known Member
Member
Joined
Nov 6, 2002
Messages
11,145
Trophies
3
XP
6,191
Country
United States
Yeah, and NoCash only has Windows 98. So keep that in your head.


LOL! I already know that. I had been used no$gba since it was first released a long time ago... the version was 1.0 on 2002 (About 17 years ago). Limited support then released on 2.0g, released 2005 with lots of GBA supporting. See ? I was there every way into this year. I watched his news all my life. My first favourite gba emulator before and still today with more emulators to be choice. I still keep this emulator as my good memories!

Right now, I still keep my eyes on this one this time... for 3DS in it too.

Yeah.. Thank you very much. :creep::rofl2:
 
Last edited by spotanjo3,

Ryccardo

Penguin accelerator
Member
Joined
Feb 13, 2015
Messages
7,675
Trophies
1
Age
28
Location
Imola
XP
6,880
Country
Italy
Windows does not seem to be able to mount virtual disk images on it’s own
It does... as long as it's in VHD format ;)

Adding DSiWare to SysNAND has no benefits at all.
Uhh, it's the most accurate way possible (sure, if you're using NO$GBA, you're probably not too concerned with accuracy at least for now :P)
Feel free to borrow from my older guide in this section if you want to!

After turning off real time protection in Windows Defender
The best security software has always been the current year's version of Common Sense :)
 

Marinblue

New Member
Newbie
Joined
Jan 6, 2020
Messages
1
Trophies
0
Age
23
XP
33
Country
United States
Pardon, but could someone help me and a friend with something? He followed your instructions to a T and while the game ran the graphics were a glitched mess. Is there a known cause for this and if so is there a fix? Thank you in advance.
 

KleinesSinchen

GBAtemp's Backup Reminder + Fearless Testing Sina
OP
Member
GBAtemp Patron
Joined
Mar 28, 2018
Messages
4,384
Trophies
2
XP
14,764
Country
Germany
Pardon, but could someone help me and a friend with something? He followed your instructions to a T and while the game ran the graphics were a glitched mess. Is there a known cause for this and if so is there a fix? Thank you in advance.
Uhhh. "The game" is a little vague. Which game? I did not test many myself. But @ReyVGM did. See here.

This could have many reasons: Emulation issue (No$gba is fantastic but not yet perfect). Bad ROM.
If it happens with all games try a different computer to rule out (graphics) driver issues. If this is a general Windows problem I can't be of any help (pure Linux user – creating this small tutorial was the first time in years I used Windows for more than a few minutes).


================
I really have to finish the part about SysNAND. Took me way longer than expected to figure out some last puzzle pieces.
 

DustyHands

New Member
Newbie
Joined
Jan 6, 2020
Messages
1
Trophies
0
Age
25
XP
43
Country
United States
I'm the friend. I'm able to launch the game easy enough, and when I do the menu screen looks fine, but once I'm inside of the game the graphics are glitched. Picture attached.
 

Attachments

  • upload_2020-1-6_18-5-44.png
    upload_2020-1-6_18-5-44.png
    34.5 KB · Views: 255

KleinesSinchen

GBAtemp's Backup Reminder + Fearless Testing Sina
OP
Member
GBAtemp Patron
Joined
Mar 28, 2018
Messages
4,384
Trophies
2
XP
14,764
Country
Germany
I'm the friend. I'm able to launch the game easy enough, and when I do the menu screen looks fine, but once I'm inside of the game the graphics are glitched. Picture attached.
Now that is really garbage graphics, but I can't reproduce the problem and have no idea what is going on. Sorry!

EU version works for me loaded from virtual SD card with HiyaCFW/SDNAND as well as from TWiLight Menu++. I also tested the EU from SysNAND (I already have a license for that game so it is on my SysNAND).

I tried with this file, installed with tmfh in the emulator:
Legend of Zelda, The - Four Swords Anniversary Edition (Europe, Australia).nds CRC32 is d5b25cc5

Things you could try:
  • Different virtual SD
  • Starting the game from the NAND image that can be found online easily (don't ask)
    • The person who uploaded this image claims that it contains some of the best DSiWare and I guess the Zelda game is on it.
  • Other games
    • It would be really interesting to know if other games work for you.
 
  • Like
Reactions: Alexander1970

Solid One

Well-Known Member
Newcomer
Joined
Aug 6, 2013
Messages
57
Trophies
0
Age
37
XP
841
Country
Brazil
Thanks for the tutorial. It was really useful for configuring No$GBA in order to run DSiWare games.

I grabbed latest version of No$GBA (3.02), got all DSi bioses, obtained a NAND backup with some games and got a 512mb virtual SD from your attached file. Then I followed your tutorial, put hiyaCFW on the virtual SD and inserted some DSi roms in the virtual SD through OSFMount.

The games that were already on NAND backup worked fine, although I still haven't figured out how to add / replace games on the NAND. The games I've added on the virtual SD also worked through hiyaCFW, however I'm getting issues on some of them.

One game I'm having issues is Shantae - Risky's Revenge. I have it both on NAND and on the Virtual SD. If ran on NAND, the game works fine:

ATLU8b6.png


However, if I try running the same game on Virtual SD, all game texts are replaced by <Localization not found>:

YXtESsk.png


Is there a way of fixing this on the Virtual SD through HiyaCFW, so I can do some romhacking tests on this game?

EDIT: Turns out that it happened because I was using American version, and probably was a bad dump. After testing with the European version, all texts showed just fine on No$GBA.
 
Last edited by Solid One,
  • Like
Reactions: Gamerulez

slowbro

New Member
Newbie
Joined
Jun 14, 2021
Messages
1
Trophies
0
Age
46
XP
32
Country
United States
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.

Thank you very much for this tip. After getting everything set up, this was the last bit I needed to get my DSiWare game up and running.
 

Alzter

Member
Newcomer
Joined
Apr 4, 2014
Messages
14
Trophies
0
Age
43
XP
145
Country
United States
Hi, I'm needing some help. I've gotten No$GBA running with the DSi BIOS installed, now I'm trying to do a homebrew exploit but the SD card isn't working. When I try launching DSi Camera and tapping the SD Card option, it tells me the SD Card is locked.

I'm using the SD card files provided in the ZIP that came with No$GBA, mounted using OFSMount, but No$GBA doesn't seem to recognise it as an SD card. Any advice?

EDIT: It turns out you have to unmount the Virtual SD card from OSFMount before it's able to be used by the DSi. Now the SD card reads!

New problem though, when I try to launch the memory pit exploit by going to clicking SD Card > Album on DSi Camera, the screen goes white and nothing happens.

EDIT 2: It turns out you don't need to perform Memory Pit at all to get access to Homebrew on No$GBA. You can literally just run Unlaunch as the ROM from No$GBA, install unlaunch, then run whatever ROM you want on the SD card.
 
Last edited by Alzter,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • Veho @ Veho:
    The fuuuuu---
  • Veho @ Veho:
    I thought it was an actual xBox at that price.
  • Sicklyboy @ Sicklyboy:
    I wanna grab a 360 Slim and a 360 E one of these days. Missed the boat of getting them at their lowest though, once they were discontinued. Could've got them for cheap back when I was a broke 20 something working at Target, but then again, I was a broke 20 something working at Target
  • Veho @ Veho:
    Being broke is no fun.
  • K3Nv2 @ K3Nv2:
    @Sicklyboy, $150 isn't that bad for a jtag slim on ebay
  • Veho @ Veho:
    I only wish it was actually playable.
  • Veho @ Veho:
    There's a guy on the Tube of You that makes playable mechanical arcade games out of Lego. This could work on the same principle.
  • Veho @ Veho:
    Just a couple of guys taking their manatee out for some fresh air, why you have to molest them?
  • Veho @ Veho:
    Stupid Chinese shop switched their shipping company and this one is slooooooow.
  • LeoTCK @ LeoTCK:
    STOP BUYING CHINESE CRAP THEN
  • LeoTCK @ LeoTCK:
    SUPPORT LOCAL PRODUCTS, MAKE REVOLUTION
  • LeoTCK @ LeoTCK:
    THEY KEEP REMOVING LOCAL SHIt AND REPLACING WItH INFERIOR CHINESE CRAP
  • LeoTCK @ LeoTCK:
    THATS WHY MY PARTNER CANT GET A GOOTWEAR HIS SIZE ANYMORE
  • LeoTCK @ LeoTCK:
    HE HAS BIG FOOT AND BIG DUCK
  • LeoTCK @ LeoTCK:
    d*ck i mean*
  • LeoTCK @ LeoTCK:
    lol
  • Veho @ Veho:
    Mkay.
  • Veho @ Veho:
    I just ordered another package from China just to spite you.
  • SylverReZ @ SylverReZ:
    Communism lol
  • SylverReZ @ SylverReZ:
    OUR products
  • The Real Jdbye @ The Real Jdbye:
    @LeoTCK actually good quality products are dying out because they can't compete with dropshipped chinese crap
    +1
    The Real Jdbye @ The Real Jdbye: @LeoTCK actually good quality products are dying out because they can't compete with dropshipped... +1