no$gba
no$gba emulates Nintendo Game Boy Advance, Nintendo DS, Nintendo DSi and Sony PocketStation. It reads 12 files, none of them required: it starts games without them.
About this profile
Install this emulator's files
With RetroBat: the installer finds RetroBat and its BIOS folder, then downloads only the files no$gba reads there and checks each one.
Open the Start menu. Type PowerShell and open it. Paste the line. Press Enter.
&([scriptblock]::Create((irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1))) --emulator nosgbaTechnical notes
Freeware gaming build of Martin Korth's Game Boy Advance, Nintendo DS and DSi emulator for Windows, closed source. RetroBat installs it as nosgba and starts NO$GBA.EXE with the ROM. Its NO$GBA.EXE (220079 bytes, sha1 935b857bc1249479124247612755eeb2a247f23c) is the one in no$gba-w.zip of v3.04, 23 Mar 2021, byte for byte. The official zip also carries DSI-SD.ZIP, which RetroBat leaves out. Everything below is read from that executable after removing its UPX layer. Addresses are virtual addresses of the unpacked image (base 0x400000).
Every file is opened by bare name. Before each open the program builds its own folder from the module path and makes it the current directory (0x431741, 0x4316ea), so all of them sit next to NO$GBA.EXE.
The boot ROMs come from one table of six slots (0x471a81-0x471b80), loaded by one routine (0x4357c6-0x4358a1). For each slot it clears the buffer, then tries a list of (file, offset) pairs in order. The first file that opens and is longer than its offset gives the bytes, read at that offset for the slot size. No size is checked beyond that. The lists: GBA, 16 KiB: NO$GBA.ROM at 0, BIOSGBA.ROM at 0, GBA.ROM at 0. NDS ARM7, 16 KiB: NO$GBA.ROM at 0x4000, BIOSNDS.ROM at 0, BIOSNDS7.ROM at 0. NDS ARM9, 4 KiB: NO$GBA.ROM at 0x8000, BIOSNDS.ROM at 0x4000, BIOSNDS9.ROM at 0. DSi ARM7, 64 KiB: BIOSDSI.ROM at 0, BIOSDSI7.ROM at 0. DSi ARM9, 64 KiB: BIOSDSI.ROM at 0x10000, BIOSDSI9.ROM at 0. PocketStation, 16 KiB: POCKSTAT.ROM at 0. NO$GBA.ROM, BIOSNDS.ROM and BIOSDSI.ROM are therefore concatenations of the single images, GBA then ARM7 then ARM9.
After a slot loads, two 32-bit words are computed over it: the sum of its dwords, and a value seeded with 0x42494f53 that takes each dword plus the count of dwords left, XORs it in and rotates right by one. The GBA, NDS ARM7, NDS ARM9 and PocketStation slots carry the expected pair, the DSi slots carry none. A mismatch only raises "Incorrect GBA/NDS BIOS version!" and the image stays in use (0x43586a-0x43589a, 0x4358f0-0x43591e). The md5 and sha1 given below are those of the dumps that produce the expected pair.
Without a GBA image the slot receives a 236-byte stub held in the executable (0x43578c-0x4357c5) and the BIOS calls run as x86 code, the default of the "Emulate BIOS Functions" option. Only the BIOS sound functions then stop with "Sorry, no$gba needs a copy of the original GBA BIOS". The NDS slots stay zero and the calls are emulated the same way. The ARM7 image is what decrypts the secure area of an encrypted cartridge dump and CodeBreaker codes ("Encrypted Cartridge, requires files BiosNds7.rom and BiosNds9.rom"). Without a PocketStation image a built-in clone named pockclon is expanded in its place (0x435750-0x435771). DSi mode needs the DSi images for their RSA keys and stops with "Missing DSi BIOS dump (need RSA keys)" without them.
The DSi eMMC and SD card are files named from the emulated unit number, 1 for the first machine: the name is written over a template as "DSi-", the digit, then "mmc" or "sd" (0x43acea-0x43ad2d). The eMMC image must carry the nocash footer with the CID and console ID ("Missing footer in .mmc file"). The template string itself reads New3DS-#.mmc, from the 3DS mode.
Written rather than obtained: NO$GBA.INI (generated config), NO$GBA.INP (key setup), saves under BATTERY, snapshots under SLOT, QUIKSAVE.SNA, and FIRMnnnn.BIN and BIOS dumps the xboo cable tools write. NO$GBA.CHT is a cheat list the user writes, help.htm and help.txt are documentation, and no$gba.key is the registration file of the debug version.
12 files: 0 required, 12 optional. 6 have an HLE fallback.
| File | Hash |
|---|---|
BIOSGBA.ROM |
MD5 a860e8c0b6d5 |
BIOSNDS7.ROM |
MD5 df692a80a5b1 |
BIOSNDS9.ROM |
MD5 a392174eb3e5 |
FIRMWARE.BIN |
- |
BIOSDSI7.ROM |
- |
BIOSDSI9.ROM |
- |
WIFI-DSI.BIN |
- |
AR6002G.ROM |
- |
AR6013G.ROM |
- |
DSi-1.mmc |
- |
DSi-1.sd |
MD5 a5feb3d3fc0c |
POCKSTAT.ROM |
MD5 3bcdcef3d9aa |
In this collection: 5 in repo and 7 missing.
Optional
Section titled “Optional”12 files
BIOSGBA.ROM optional in repo HLE fallback
Game Boy Advance BIOS
- System: Nintendo Game Boy Advance
- Size: 16.0 KB
- SHA1:
300c20df6731a33952ded8c436f7f186d25d3492 - MD5:
a860e8c0b6d573d191e4ec7db1b1e4f6
- Aliases:
GBA.ROM - On a failed check: warns and runs with the file
- Source: offset
0x471a81-0x471aacinNO$GBA.EXE v3.04, offset0x4357c6-0x43589ainNO$GBA.EXE v3.04, offset0x43578c-0x4357c5inNO$GBA.EXE v3.04 - Collection copy:
bios/Nintendo/ Game Boy Advance/ GBA_bios.rom - Platforms: AmberELEC:
bios/gba_bios.bin, Batocera:gba_bios.bin, BizHawk:GBA_bios.rom, EmuELEC:bios/gba_bios.bin, KNULLI:gba_bios.bin, Lakka:gba_bios.bin, MiSTer FPGA:GBA/boot.rom, Recalbox:gba/gba_bios.bin, RetroArch:gba_bios.bin, RetroBat:gba_bios.bin, RetroDECK:bios/gba_bios.bin, RetroPie:gba_bios.bin, ROCKNIX:gba_bios.bin, RomM:gba/gba_bios.bin
- Tried after NO$GBA.ROM and before GBA.ROM. Expected checksum pair 0xbaae187f, 0xc98cfa1d, which the retail GBA BIOS gives. Needed for the BIOS sound functions and the Nintendo logo boot.
BIOSNDS7.ROM optional in repo HLE fallback
Nintendo DS ARM7 BIOS
- System: Nintendo DS
- Size: 16.0 KB
- SHA1:
24f67bdea115a2c847c8813a262502ee1607b7df - MD5:
df692a80a5b1bc90728bc3dfc76cd948
- On a failed check: warns and runs with the file
- Source: offset
0x471ab1-0x471adcinNO$GBA.EXE v3.04, offset0x4357c6-0x43589ainNO$GBA.EXE v3.04 - Collection copy:
bios/Nintendo/ Nintendo DS/ NDS_Bios7.bin - Platforms: AmberELEC:
bios/bios7.bin, Batocera:bios7.bin, BizHawk:NDS_Bios7.bin, EmuDeck:bios7.bin, EmuELEC:bios/bios7.bin, KNULLI:bios7.bin, Lakka:bios7.bin,nds7.bin, Recalbox:nds/bios7.bin, RetroArch:bios7.bin,nds7.bin, RetroBat:bios7.bin, RetroDECK:bios/bios7.bin, RetroPie:bios7.bin,nds7.bin, ROCKNIX:bios7.bin, RomM:nds/bios7.bin
- Tried after NO$GBA.ROM at 0x4000 and BIOSNDS.ROM at 0. Expected checksum pair 0xbc180972, 0x36b3e1b2. Carries the key that decrypts encrypted cartridge secure areas and CodeBreaker codes.
BIOSNDS9.ROM optional in repo HLE fallback
Nintendo DS ARM9 BIOS
- System: Nintendo DS
- Size: 4.0 KB
- SHA1:
bfaac75f101c135e32e2aaf541de6b1be4c8c62d - MD5:
a392174eb3e572fed6447e956bde4b25
- On a failed check: warns and runs with the file
- Source: offset
0x471ae1-0x471b0cinNO$GBA.EXE v3.04, offset0x4357c6-0x43589ainNO$GBA.EXE v3.04 - Collection copy:
bios/Nintendo/ Nintendo DS/ NDS_Bios9.bin - Platforms: AmberELEC:
bios/bios9.bin, Batocera:bios9.bin, BizHawk:NDS_Bios9.bin, EmuDeck:bios9.bin, EmuELEC:bios/bios9.bin, KNULLI:bios9.bin, Lakka:bios9.bin,nds9.bin, Recalbox:nds/bios9.bin, RetroArch:bios9.bin,nds9.bin, RetroBat:bios9.bin, RetroDECK:bios/bios9.bin, RetroPie:bios9.bin,nds9.bin, ROCKNIX:bios9.bin, RomM:nds/bios9.bin
- Tried after NO$GBA.ROM at 0x8000 and BIOSNDS.ROM at 0x4000. Expected checksum pair 0xbb212bf7, 0x1bec1d77.
FIRMWARE.BIN optional in repo HLE fallback
Nintendo DS firmware flash
- System: Nintendo DS
- Size: max 512.0 KB
- Source: offset
0x4356a8-0x4356e8inNO$GBA.EXE v3.04, offset0x4358a2-0x4358d3inNO$GBA.EXE v3.04, offset0x4348fainNO$GBA.EXE v3.04 - Collection copy:
bios/Nintendo/ Nintendo DS/ firmware.bin - Platforms: Batocera:
firmware.bin, EmuDeck:firmware.bin, KNULLI:firmware.bin, Lakka:firmware.bin, RetroArch:firmware.bin, RetroBat:firmware.bin, RetroDECK:bios/firmware.bin, RetroPie:firmware.bin, RomM:nds/firmware.bin
- Read whole into a buffer of 256 KiB, or 512 KiB when the file is larger. A file over 512 KiB stops the program with "Unexpected Error". Absent, a 256 KiB buffer stands in. No hash is checked.
BIOSDSI7.ROM optional missing
Nintendo DSi ARM7 BIOS
- System: Nintendo DSi
- Size: 64.0 KB
- Source: offset
0x471b11-0x471b38inNO$GBA.EXE v3.04, offset0x4357c6-0x435802inNO$GBA.EXE v3.04
- Tried after BIOSDSI.ROM at 0. No checksum. DSi mode stops without it since it holds the RSA keys.
BIOSDSI9.ROM optional missing
Nintendo DSi ARM9 BIOS
- System: Nintendo DSi
- Size: 64.0 KB
- Source: offset
0x471b39-0x471b60inNO$GBA.EXE v3.04, offset0x4357c6-0x435802inNO$GBA.EXE v3.04
- Tried after BIOSDSI.ROM at 0x10000. No checksum.
WIFI-DSI.BIN optional missing HLE fallback
DSi wifi firmware flash
- System: Nintendo DSi
- Source: offset
0x435701-0x435741inNO$GBA.EXE v3.04, offset0x4358d4-0x4358efinNO$GBA.EXE v3.04
- Read whole. Absent, a 128 KiB buffer stands in. No hash is checked.
AR6002G.ROM optional missing
Atheros AR6002 wifi chip ROM
- System: Nintendo DSi
- Source: offset
0x46014c-0x4601bdinNO$GBA.EXE v3.04
- Read for a DSi when the byte at firmware offset 0x1fd is not 2. Absent, the ROM area is filled with 0x55.
AR6013G.ROM optional missing
Atheros AR6013 wifi chip ROM
- System: Nintendo DSi
- Source: offset
0x46014c-0x4601bdinNO$GBA.EXE v3.04
- Read for a DSi when the byte at firmware offset 0x1fd is 2. Absent, the ROM area is filled with 0x55.
DSi-1.mmc optional missing
DSi eMMC image with nocash footer
- System: Nintendo DSi
- Source: offset
0x43acea-0x43ad65inNO$GBA.EXE v3.04
- eMMC of the first emulated DSi. The footer has to carry the CID and the console ID. No hash or size is checked.
DSi-1.sd optional missing
DSi SD card image
- System: Nintendo DSi
- Size: 119.9 MB
- SHA1:
b473e101c7d22c15272f3cfce7c30b01f67839b4 - MD5:
a5feb3d3fc0cdf0f663ef1a80ba39e72 - Source: offset
0x43acea-0x43ad65inNO$GBA.EXE v3.04
- SD card of the first emulated DSi. The official zip ships a blank FAT16 one as DSI-1.SD inside DSI-SD.ZIP. The hashes are those of that file, the code checks none.
POCKSTAT.ROM optional in repo HLE fallback
PocketStation BIOS
- System: Sony PocketStation
- Size: 16.0 KB
- SHA1:
6ae880493ddde880827d1e9f08e9cb2c38f9f2ec - MD5:
3bcdcef3d9aa7af85cd45e29986d11c8
- On a failed check: warns and runs with the file
- Source: offset
0x471b61-0x471b80inNO$GBA.EXE v3.04, offset0x43582b-0x435863inNO$GBA.EXE v3.04, offset0x435750-0x435771inNO$GBA.EXE v3.04 - Collection copy:
bios/Sony/ PocketStation/ .variants/ pocketstation.bin.3bcdcef3
- Expected checksum pair 0x27e94c07, 0x63beca34, given by the image ending in J061. An image ending in J110 is checked against 0xb16ce96c, 0xbedf0d0f instead, and one with POCKBIOS at 0x40 is not checked. Absent, a built-in clone is used.
Next steps
Section titled “Next steps”- Get your files, for the setup you play on
- Every system, and the files each one needs
- When a game does not start