mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-21 11:19:11 -05:00
Profiles that read two repositories, a libretro port and its upstream, now prefix each citation with source or upstream, decided by which tree carries the cited value at its pin. The emulator pages use the word to tell libretro glue, emulator code as the port carries it, and the upstream emulator apart.
138 lines
5.6 KiB
YAML
138 lines
5.6 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"
|
|
core_version: "0.10-dev"
|
|
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.
|