Skip to content

mGBA emulates Nintendo Game Boy Advance, Nintendo Game Boy, Nintendo Game Boy Color and Nintendo Super Game Boy. It reads 4 files, none of them required: it starts games without them.

About this profile
Detail Value
Type libretro
Classification Official port
Source https://github.com/libretro/mgba
Upstream https://github.com/mgba-emu/mgba
Version 0.11.0, stated in version.cmake
Revision libretro/mgba@7a12d6d4b9ac, mgba-emu/mgba@669817d03e48
Profiled 2026-03-24
Profile YAML, JSON
Cores mgba, mgba_fork
Systems Nintendo Game Boy Advance, Nintendo Game Boy, Nintendo Game Boy Color, Nintendo Super Game Boy
Install this emulator's files

The installer finds your setup and its BIOS folder, then downloads only the files this emulator reads there and checks each one.

Open the Start menu. Type PowerShell and open it. Paste the line. Press Enter.

PowerShell
&([scriptblock]::Create((irm https://abdess.github.io/retrobios/i.ps1))) --emulator mgba
Platform details
  • gba:

    • bios_size: 16384
    • hle_bios: yes
    • source_ref: src/gba/hle-bios.c (emulator code, libretro port), src/gba/gba.c:513-552
    • note: GBALoadBIOS() validates size (must be exactly 0x4000) then computes an internal checksum. Two official checksums are recognized: GBA_BIOS_CHECKSUM = 0xBAAE187F (standard GBA) GBA_DS_BIOS_CHECKSUM = 0xBAAE1880 (DS GBA mode) Other checksums trigger a warning but the file is still loaded.
  • gb:

    • bios_size: 256
    • hle_bios: no
    • source_ref: src/gb/gb.c:570-605
    • note: GBIsBIOS() validates by CRC32. Accepted DMG-family checksums: DMG0 = 0xC2F5CC97, DMG = 0x59C8598E, MGB = 0xE6920754 Files not matching any known checksum are rejected.
  • gbc:

    • bios_size: 2304
    • hle_bios: no
    • source_ref: src/gb/gb.c:570-605
    • note: Accepted CGB-family CRC32 checksums: CGB = 0x41884E46, CGB0 = 0xE8EF5318, CGBE = 0xE95DC95D AGB = 0xFFD6B0F1, AGB0 = 0x570337EA
  • sgb:

    • bios_size: 256
    • hle_bios: no
    • source_ref: src/gb/gb.c:570-605, src/gb/core.c:654-656
    • note: Accepted SGB CRC32 checksums: SGB = 0xEC8A83B9, SGB2 = 0x53D0DD63 SGB2 maps here in standalone (marked TODO upstream). Libretro port omits SGB2 case, falls to gb_bios.bin.
Technical notes

mGBA is a Game Boy Advance emulator with Game Boy, Game Boy Color, and Super Game Boy support.

All BIOS files are optional. mGBA ships a built-in HLE BIOS for GBA (src/gba/hle-bios.c) that covers most software. The real BIOS improves accuracy (startup logo, some edge-case SWI behavior). There is no HLE BIOS for GB/GBC/SGB -- those rely on GBSkipBIOS() if no file is found.

BIOS loading is controlled by two core options: mgba_use_bios (default ON) - whether to look for BIOS files at all mgba_skip_bios (default OFF) - skip the boot animation even if loaded

The libretro port resolves BIOS filenames in retro_load_game() (src/platform/libretro/libretro.c:2060-2118). It picks the filename based on detected model: GBA -> gba_bios.bin GB (DMG/MGB) -> gb_bios.bin GBC (CGB/AGB) -> gbc_bios.bin SGB -> sgb_bios.bin SGB2 -> gb_bios.bin (falls to default, missing case)

The standalone core (src/gb/core.c:649-696) correctly maps SGB2 to sgb_bios.bin (marked TODO for a dedicated file). The libretro port omits GB_MODEL_SGB2 from its switch, so SGB2 falls to default.

GBIsBIOS() in src/gb/gb.c validates BIOS files by CRC32 checksum. Accepted checksums cover DMG, DMG0, MGB, SGB, SGB2, CGB, CGB0, CGBE, AGB, and AGB0 revisions.

4 files: 0 required, 4 optional. 1 has an HLE fallback.

In this collection: 4 in repo and 0 missing.

gba_bios.bin optional in repo HLE fallback

Validation and source

gb_bios.bin optional in repo

  • System: Nintendo Game Boy
  • DMG/MGB boot ROM. Scrolling Nintendo logo. Skipped if absent.
Hashes, validation and source

gbc_bios.bin optional in repo

Hashes, validation and source

sgb_bios.bin optional in repo

  • System: Nintendo Super Game Boy
  • SGB boot ROM. SGB2 maps here in standalone (src/gb/core.c:655) but falls to gb_bios.bin in libretro.
Hashes, validation and source
.