Last updated: September 2026

The Game Boy family is the one system where “do I need the BIOS?” has a different answer for every emulator. mGBA runs without it. gpSP, the core every cheap Linux handheld ships for GBA, wants the real thing. Gambatte only uses it to draw the Nintendo logo. So people copy one file in, see it work in one place and fail in another, and conclude the file is broken. It usually is not.

This is the Game Boy half of my RetroArch BIOS reference. Four files, their hashes, which core cares about each one, where the folder is on PC, Steam Deck, Android and the Linux handhelds, and the two ways to dump the GBA BIOS from a console you own.


The Four Files

FileSystemSizeMD5
gba_bios.binGame Boy Advance16,384 bytesa860e8c0b6d573d191e4ec7db1b1e4f6
gb_bios.binGame Boy (DMG)256 bytes32fbbd84168d3482956eb3c5051637f5
gbc_bios.binGame Boy Color2,304 bytesdbfce9db9deaa2567f6a84fde55f9680
sgb_bios.binSuper Game Boy256 bytesd574d4f9c12f305074798f54c091a8b4

The GBA file is the one that matters. The other three are boot ROMs: they draw the scrolling logo and the “ding”, then hand off to the game. Every core has a built-in replacement for those, so the only thing you gain from the real ones is the authentic boot animation.

gba_bios.bin is different. It is not a boot logo; it is a 16 KB chunk of code that games call into for sound mixing, decompression, and the software interrupt table. A replacement BIOS has to reimplement all of that, and the replacements are good but not perfect.

SameBoy uses its own names for the Game Boy boot ROMs, dmg_boot.bin and cgb_boot.bin, and they are the same files as gb_bios.bin and gbc_bios.bin with the same hashes.

The second real hash that fails every check

There are two genuine GBA BIOS images in the wild. The one in the table is from a Game Boy Advance, GBA SP or Game Boy Micro. A BIOS dumped from the GBA mode of a Nintendo DS, DS Lite or 3DS is a real dump too, and its MD5 is 1c0d67db9e1208b95a1506b1688a0ad6. Emulators only list the first hash. If you dumped from a DS and RetroArch’s core information screen says “Missing” or “Bad hash” next to a file that is exactly 16,384 bytes, that is why. The DS-family dump runs games fine in mGBA; it just fails the checksum. For a clean match, dump from a GBA.


Which Cores Need It

EmulatorGBA BIOSWhat changes with the real file
mGBA (RetroArch and standalone)OptionalBoot logo, and exact behaviour in the handful of games that lean on BIOS quirks. Core option Use BIOS file if found must be On.
gpSPOptional in name, required in practiceShips an open-source replacement, and the gpSP developers themselves recommend the original. OnionOS lists it as necessary for lr-gpsp.
VBA NextOptionalUse bios if available must be On.
VBA-MOptionalUse BIOS file if found is On by default.
Gambatte (GB/GBC)OptionalBoot logo only, via Use official bootloader. Needs a core restart.
SameBoy (GB/GBC)Not neededHas reverse-engineered boot ROMs baked in; real files only override them.

The practical rule: mGBA on anything with a decent CPU, and the file is a nicety. gpSP on a budget Linux handheld like the RG35XX H or a Miyoo Mini Plus, and the file is the difference between a clean run and glitches in games that hit the BIOS routines hard. Those devices run gpSP because mGBA is too heavy for their chips at full speed, so the BIOS matters most exactly where people skip it.


Where the Files Go

No subfolders. Every emulator on this page wants the files at the root of its BIOS directory, and Linux filesystems are case sensitive, so GBA_BIOS.BIN is not gba_bios.bin.

RetroArch

PlatformSystem directory
WindowsRetroArch\system\
Linux~/.config/retroarch/system/
macOS~/Library/Application Support/RetroArch/system/
Android/storage/emulated/0/RetroArch/system/
Steam Deck (Flatpak)~/.var/app/org.libretro.RetroArch/config/retroarch/system/

Check the path under Settings > Directory > System/BIOS. After loading a Game Boy core, Quick Menu > Information > Core Information lists each BIOS file as Present or Missing with the expected hash. That screen is the fastest way to find out whether you have the GBA-family dump or the DS-family one.

Standalone mGBA

mGBA does not have a fixed folder. Point it at the file from the settings dialog under the BIOS tab, and it remembers the path. It boots without one, so the only sign it is not loaded is the missing logo.

EmuDeck on Steam Deck

Emulation/bios/ on whichever drive you chose, files at the root. EmuDeck’s own cheat sheet marks GB, GBC and GBA as “Not Required” because it defaults to mGBA, and its BIOS checker will not complain if they are missing. Put them in anyway; it costs nothing.

Linux handhelds

FirmwareBIOS folderDefault GBA core
OnionOS (Miyoo Mini)BIOS/ at the root of the SD cardgpSP, so the file is needed
muOSMUOS/bios/ on the OS cardgpSP by default
Knulli/userdata/bios/ (the bios network share)mGBA or gpSP depending on device
ROCKNIX / ArkOSroms/bios/ on the games cardmGBA on capable chips, gpSP on weaker ones
GarlicOSBIOS/ at the root of the games cardgpSP
Stock Anbernic LinuxBIOS/ at the root of the games cardgpSP

Knulli has a missing-BIOS report under Start > Game Settings that names the file and the hash it wants. OnionOS reads filenames case sensitively, which catches people who dumped on Windows.


How to Verify

Windows PowerShell:

Get-FileHash .\gba_bios.bin -Algorithm MD5

Linux, macOS, Steam Deck:

md5sum gba_bios.bin

Two checks before you hash anything: the GBA file is exactly 16,384 bytes, and the filename ends in .bin once. A file that is 16,384 bytes with the 1c0d... hash is the DS-family dump, not a corrupt one.


How to Dump the GBA BIOS

The GBA refuses to let software read its own BIOS directly; every dumper works around that with a trick. Two projects do it cleanly.

From a GBA, GBA SP or Micro with a flash cart

The mgba-emu/bios-dump homebrew, from the mGBA developers, jumps into a BIOS routine that copies memory without checking where it is reading from, and writes the 16 KB image into the flash cart’s save RAM. Put the .gba on your cart, run it, copy the .sav off the cart, and the BIOS is inside it. The project is on GitHub with the expected checksums.

The older Bios_Dumper.gba from the DS homebrew community does the same job on the same hardware, and its companion Bios_Shrinker.py script trims the save file down to the 16,384-byte image. That route is documented on the DS-Homebrew wiki.

From a 3DS with custom firmware

If you have a hacked 3DS and no flash cart, open_agb_firm runs GBA homebrew natively. Drop open_agb_firm.firm in SD:/luma/payloads, launch it, run Bios_Dumper, wait for the screen to go from red to green, power off, and the save is at /3ds/open_agb_firm/saves/Bios_Dumper.sav. Shrink it with the script. This produces the DS-family image with the 1c0d... hash, so expect the checksum mismatch described above.

Game Boy and Game Boy Color boot ROMs

These live inside the CPU die and were extracted by decapping, not by software. Nobody dumps them at home. The emulators’ built-in replacements are bit-accurate for everything a game can observe, which is why SameBoy does not even offer a BIOS option.


Common Problems

No Nintendo logo on boot. The core is not using the file. mGBA and VBA-M need Use BIOS file if found on; Gambatte needs Use official bootloader and a restart. Standalone mGBA has a skip-intro option that hides the logo even with the file loaded.

RetroArch says the file is missing but it is right there. Subfolder, wrong case, double extension, or the DS-family hash. Core Information shows the hash it expects.

gpSP glitches in a game that runs fine in mGBA. Real BIOS not found, so gpSP is on its replacement. Check the folder for that firmware in the table above, then confirm the filename is lowercase.

Sound is wrong or missing in specific games on gpSP. Same cause. The GBA BIOS handles the sound mixing routines those games call.


The GBA BIOS is Nintendo’s copyrighted code, and it is 16 KB that takes fifteen minutes to dump from a $30 console with a flash cart you would want anyway. The “GBA BIOS download” sites bundle it with adware and, more often than you would think, with the wrong file. Dump your own, hash it, keep a backup.


FAQ

Does mGBA need a BIOS?

No. mGBA has a built-in BIOS that runs the library. The real file adds the boot logo and fixes the few games that depend on exact BIOS timing.

Does gpSP need a BIOS?

It runs without one, but the developers recommend the original and the stock firmwares on Miyoo and Anbernic handhelds treat it as required. Use the real file.

Where does gba_bios.bin go on OnionOS?

BIOS/ at the root of the SD card, lowercase filename.

My gba_bios.bin has a different MD5. Is it bad?

If the hash is 1c0d67db9e1208b95a1506b1688a0ad6 and the size is 16,384 bytes, it is a real dump from a DS-family console. It works; it just fails the checksum. Any other hash, or any other size, is a bad file.

Do I need gb_bios.bin and gbc_bios.bin?

Only for the authentic boot animation. Every Game Boy core replaces them internally.


mGBA | mGBA core docs | gpSP core docs | mgba-emu/bios-dump


Last verified: September 2026