mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-01 15:43:45 -06:00
Each standalone profile records where its version is read: the source at its pin (clk 2026-07-23-136-g9020107, shadps4 0.20.1 WIP, eden v0.2.0-401-g26a03d2), the APK, binary or archive read (kind package), or, where no reading can be made, kind unverified with the reason: a host the tools cannot read, a forge gone or not answering, no build recorded as read, a pin on another branch. Those keep their value, unconfirmed.
227 lines
9.6 KiB
YAML
227 lines
9.6 KiB
YAML
emulator: no$gba
|
|
type: standalone
|
|
core_classification: embedded_hle
|
|
source: "https://problemkaputt.de/gba.htm"
|
|
upstream: "https://problemkaputt.de/gba.htm"
|
|
version_source:
|
|
url: "https://problemkaputt.de/gba.htm"
|
|
pattern: 'no\$gba v(\d+(?:\.\d+)+)'
|
|
profiled_date: "2026-10-24"
|
|
core_version: "3.06"
|
|
version_basis:
|
|
kind: package
|
|
url: "https://problemkaputt.de/gba.htm"
|
|
artifact: "no$gba-w.zip, release v3.06 of 14 Apr 2025 on the download page"
|
|
display_name: "Nintendo - GBA/DS/DSi (no$gba)"
|
|
cores:
|
|
- nosgba
|
|
systems:
|
|
- nintendo-gba
|
|
- nintendo-ds
|
|
- nintendo-dsi
|
|
- sony-pocketstation
|
|
mode: standalone
|
|
|
|
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. Everything below is read from the
|
|
NO$GBA.EXE of no$gba-w.zip v3.06, 14 Apr 2025 (224175 bytes, sha1
|
|
a167242d3800ccc0ac7e5b42e8d6f3f150ed6283), after removing its UPX layer.
|
|
Addresses are virtual addresses of the unpacked image (base 0x400000). The
|
|
nosgba package RetroBat installs, stable and beta alike, still carries the
|
|
v3.04 executable of 23 Mar 2021 (220079 bytes, sha1
|
|
935b857bc1249479124247612755eeb2a247f23c). Its boot ROM table, loader,
|
|
checksum pairs, firmware and wifi reads, DSi image naming and Atheros ROM
|
|
reads are the same instructions at other addresses, and its 236-byte GBA
|
|
stub is the same bytes. The official zip also carries DSI-SD.ZIP, which
|
|
RetroBat leaves out.
|
|
|
|
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
|
|
(0x432515, 0x4324be), so all of them sit next to NO$GBA.EXE.
|
|
|
|
The boot ROMs come from one table of six slots (0x472ff5-0x4730f4), loaded
|
|
by one routine (0x436604-0x4366df). 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 (0x4366a8-0x4366d8, 0x43672e-0x43675c). 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
|
|
(0x4365ca-0x436603) 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 (0x43658e-0x4365af). 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" (0x439a47-0x439a8a). 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.
|
|
|
|
files:
|
|
- name: BIOSGBA.ROM
|
|
aliases: ["GBA.ROM"]
|
|
system: nintendo-gba
|
|
required: false
|
|
hle_fallback: true
|
|
size: 16384
|
|
md5: "a860e8c0b6d573d191e4ec7db1b1e4f6"
|
|
sha1: "300c20df6731a33952ded8c436f7f186d25d3492"
|
|
on_mismatch: warn
|
|
description: "Game Boy Advance BIOS"
|
|
note: >
|
|
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.
|
|
source_ref: "NO$GBA.EXE v3.06 0x472ff5-0x473020 (slot), 0x436604-0x4366d8 (load and checksum), 0x4365ca-0x436603 (stub when absent)"
|
|
|
|
- name: BIOSNDS7.ROM
|
|
system: nintendo-ds
|
|
required: false
|
|
hle_fallback: true
|
|
size: 16384
|
|
md5: "df692a80a5b1bc90728bc3dfc76cd948"
|
|
sha1: "24f67bdea115a2c847c8813a262502ee1607b7df"
|
|
on_mismatch: warn
|
|
description: "Nintendo DS ARM7 BIOS"
|
|
note: >
|
|
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.
|
|
source_ref: "NO$GBA.EXE v3.06 0x473025-0x473050 (slot), 0x436604-0x4366d8 (load and checksum)"
|
|
|
|
- name: BIOSNDS9.ROM
|
|
system: nintendo-ds
|
|
required: false
|
|
hle_fallback: true
|
|
size: 4096
|
|
md5: "a392174eb3e572fed6447e956bde4b25"
|
|
sha1: "bfaac75f101c135e32e2aaf541de6b1be4c8c62d"
|
|
on_mismatch: warn
|
|
description: "Nintendo DS ARM9 BIOS"
|
|
note: >
|
|
Tried after NO$GBA.ROM at 0x8000 and BIOSNDS.ROM at 0x4000. Expected
|
|
checksum pair 0xbb212bf7, 0x1bec1d77.
|
|
source_ref: "NO$GBA.EXE v3.06 0x473055-0x473080 (slot), 0x436604-0x4366d8 (load and checksum)"
|
|
|
|
- name: FIRMWARE.BIN
|
|
system: nintendo-ds
|
|
required: false
|
|
hle_fallback: true
|
|
max_size: 524288
|
|
description: "Nintendo DS firmware flash"
|
|
note: >
|
|
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.
|
|
source_ref: "NO$GBA.EXE v3.06 0x4364e6-0x436526 (load), 0x4366e0-0x436711 (buffer size), 0x435777 (error)"
|
|
|
|
- name: BIOSDSI7.ROM
|
|
system: nintendo-dsi
|
|
required: false
|
|
size: 65536
|
|
description: "Nintendo DSi ARM7 BIOS"
|
|
note: >
|
|
Tried after BIOSDSI.ROM at 0. No checksum. DSi mode stops without it
|
|
since it holds the RSA keys.
|
|
source_ref: "NO$GBA.EXE v3.06 0x473085-0x4730ac (slot), 0x436604-0x436640 (load)"
|
|
|
|
- name: BIOSDSI9.ROM
|
|
system: nintendo-dsi
|
|
required: false
|
|
size: 65536
|
|
description: "Nintendo DSi ARM9 BIOS"
|
|
note: "Tried after BIOSDSI.ROM at 0x10000. No checksum."
|
|
source_ref: "NO$GBA.EXE v3.06 0x4730ad-0x4730d4 (slot), 0x436604-0x436640 (load)"
|
|
|
|
- name: WIFI-DSI.BIN
|
|
system: nintendo-dsi
|
|
required: false
|
|
hle_fallback: true
|
|
description: "DSi wifi firmware flash"
|
|
note: >
|
|
Read whole. Absent, a 128 KiB buffer stands in. No hash is checked.
|
|
source_ref: "NO$GBA.EXE v3.06 0x43653f-0x43657f (load), 0x436712-0x43672d (buffer)"
|
|
|
|
- name: AR6002G.ROM
|
|
system: nintendo-dsi
|
|
required: false
|
|
description: "Atheros AR6002 wifi chip ROM"
|
|
note: >
|
|
Read for a DSi when the byte at firmware offset 0x1fd is not 2. Absent,
|
|
the ROM area is filled with 0x55.
|
|
source_ref: "NO$GBA.EXE v3.06 0x460d54-0x460dc5"
|
|
|
|
- name: AR6013G.ROM
|
|
system: nintendo-dsi
|
|
required: false
|
|
description: "Atheros AR6013 wifi chip ROM"
|
|
note: "Read for a DSi when the byte at firmware offset 0x1fd is 2. Absent, the ROM area is filled with 0x55."
|
|
source_ref: "NO$GBA.EXE v3.06 0x460d54-0x460dc5"
|
|
|
|
- name: DSi-1.mmc
|
|
system: nintendo-dsi
|
|
required: false
|
|
description: "DSi eMMC image with nocash footer"
|
|
note: >
|
|
eMMC of the first emulated DSi. The footer has to carry the CID and the
|
|
console ID. No hash or size is checked.
|
|
source_ref: "NO$GBA.EXE v3.06 0x439a47-0x439ac2"
|
|
|
|
- name: DSi-1.sd
|
|
system: nintendo-dsi
|
|
required: false
|
|
size: 125698048
|
|
md5: "a5feb3d3fc0cdf0f663ef1a80ba39e72"
|
|
sha1: "b473e101c7d22c15272f3cfce7c30b01f67839b4"
|
|
description: "DSi SD card image"
|
|
note: >
|
|
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.
|
|
source_ref: "NO$GBA.EXE v3.06 0x439a47-0x439ac2"
|
|
|
|
- name: POCKSTAT.ROM
|
|
system: sony-pocketstation
|
|
required: false
|
|
hle_fallback: true
|
|
size: 16384
|
|
md5: "3bcdcef3d9aa7af85cd45e29986d11c8"
|
|
sha1: "6ae880493ddde880827d1e9f08e9cb2c38f9f2ec"
|
|
on_mismatch: warn
|
|
description: "PocketStation BIOS"
|
|
note: >
|
|
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.
|
|
source_ref: "NO$GBA.EXE v3.06 0x4730d5-0x4730f4 (slot), 0x436669-0x4366a1 (variant tests), 0x43658e-0x4365af (clone)"
|