Files
libretro/emulators/mgba.yml
T
Abdessamad Derraz e7aa9e870b fix: state libretro core versions from their code
Each libretro profile records version_basis and core_version is read
there at its pin. snes9x states 1.63 in snes9x.h, nestopia 2.0.0, mgba
0.11.0, vice 3.10, atari800's libretro tree 7.0.0. Cores whose build
takes its version from git carry the nearest tag in describe form
(flycast v2.7-90-ge88b0ce, ppsspp, duckstation, gearcoleco), placeholders
copied from .info files (Git, SVN) are replaced by the code's statement,
and a code that states none is null with kind none.
2026-10-27 19:21:27 +01:00

144 lines
5.9 KiB
YAML

emulator: mGBA
type: libretro
core_classification: official_port
source: "https://github.com/libretro/mgba"
upstream: "https://github.com/mgba-emu/mgba"
logo: "https://raw.githubusercontent.com/mgba-emu/mgba/master/res/mgba-256.png"
profiled_date: "2026-03-24"
source_commit: "7a12d6d4b9acb14c0ae62c9166b6a2f3d08007f6"
upstream_commit: "669817d03e4858e65d0b992bcd96d3009236cc1e"
core_version: "0.11.0"
version_basis:
kind: file
path: "version.cmake"
pattern: 'set\(LIB_VERSION_MAJOR (\d+)\)\s*\nset\(LIB_VERSION_MINOR (\d+)\)\s*\nset\(LIB_VERSION_PATCH (\d+)\)'
format: "{1}.{2}.{3}"
display_name: "Nintendo - Game Boy Advance (mGBA)"
cores:
- mgba
- mgba_fork
systems:
- nintendo-gba
- nintendo-gb
- nintendo-gbc
- nintendo-sgb
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.
files:
# -------------------------------------------------------
# Game Boy Advance - BIOS (optional, HLE fallback)
# -------------------------------------------------------
- name: gba_bios.bin
system: nintendo-gba
required: false
hle_fallback: true
size: 16384 # 16 KB (0x4000, GBA_SIZE_BIOS)
validation: [size]
note: "GBA BIOS. HLE replacement built in. Real BIOS adds boot logo and full SWI accuracy."
source_ref: "source src/platform/libretro/libretro.c:2068"
# -------------------------------------------------------
# Game Boy - boot ROM (optional, skip fallback)
# -------------------------------------------------------
- name: gb_bios.bin
system: nintendo-gb
required: false
size: 256 # 256 B (0x100)
crc32: ["59c8598e", "c2f5cc97", "e6920754", "ec8a83b9", "53d0dd63", "66cc6d94", "908ba8de", "783e69c2"]
validation: [crc32]
note: "DMG/MGB boot ROM. Scrolling Nintendo logo. Skipped if absent."
source_ref: "source src/platform/libretro/libretro.c:2104, source src/platform/libretro/libretro.c:2111-2116, source src/gb/gb.c:50-63, source src/gb/gb.c:605-628, source src/gb/gb.c:661-665"
# -------------------------------------------------------
# Game Boy Color - boot ROM (optional, skip fallback)
# -------------------------------------------------------
- name: gbc_bios.bin
system: nintendo-gbc
required: false
size: 2304 # 2304 B (0x900)
crc32: ["41884e46", "e8ef5318", "e95dc95d", "ffd6b0f1", "570337ea", "69236128"]
validation: [crc32]
note: "CGB boot ROM. Used for CGB, AGB (GBA in GB mode), and SCGB models."
source_ref: "source src/platform/libretro/libretro.c:2097, source src/platform/libretro/libretro.c:2111-2116, source src/gb/gb.c:50-63, source src/gb/gb.c:605-628, source src/gb/gb.c:661-665"
# -------------------------------------------------------
# Super Game Boy - boot ROM (optional, skip fallback)
# -------------------------------------------------------
- name: sgb_bios.bin
system: nintendo-sgb
required: false
size: 256 # 256 B (0x100)
crc32: ["ec8a83b9", "53d0dd63", "59c8598e", "c2f5cc97", "e6920754", "66cc6d94", "908ba8de", "783e69c2"]
validation: [crc32]
note: "SGB boot ROM. SGB2 maps here in standalone (src/gb/core.c:655) but falls to gb_bios.bin in libretro."
source_ref: "source src/platform/libretro/libretro.c:2100, source src/platform/libretro/libretro.c:2111-2116, source src/gb/gb.c:50-63, source src/gb/gb.c:605-628, source src/gb/gb.c:661-665"
platform_details:
gba:
bios_size: 16384 # 16 KB
hle_bios: true
source_ref: "source src/gba/hle-bios.c, 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 # 256 B
hle_bios: false
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 # 2304 B (0x900)
hle_bios: false
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 # 256 B
hle_bios: false
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.