emulator: VBA-Next type: libretro core_classification: frozen_snapshot source: "https://github.com/libretro/vba-next" upstream: "https://github.com/visualboyadvance-m/visualboyadvance-m" profiled_date: "2026-03-25" core_version: "SVN" display_name: "Nintendo - Game Boy Advance (VBA Next)" cores: - vba_next systems: - nintendo-gba notes: | Frozen snapshot of VBA-M circa 2011, optimized for libretro by Squarepusher. Built-in HLE BIOS (myROM array, src/gba.cpp:8423) handles all standard SWI calls. No external BIOS file needed for most games. BIOS loading gated by HAVE_HLE_BIOS (build/Makefile.common:3) and core option vbanext_bios (default: enabled). When enabled, retro_init resolves gba_bios.bin in system_dir (libretro/libretro.cpp:198-202). CPUInit loads via utilLoad(), validates size == 0x4000, sets useBios = true (src/gba.cpp:12430-12438). On failure, myROM is memcpy'd as HLE fallback (src/gba.cpp:12443). With real BIOS, execution starts at 0x00000000 (BIOS entry point). Without, jumps to 0x08000000 (ROM entry), skipping boot animation (src/gba.cpp:12657-12675). CPUIsGBABios accepts extensions: .gba, .agb, .bin, .bios, .rom (src/gba.cpp:8851-8873). Upstream VBA-M CPUInit (src/core/gba/gba.cpp:3674-3702) is functionally identical. No divergences in BIOS handling. files: - name: gba_bios.bin system: nintendo-gba required: false hle_fallback: true size: 16384 validation: [size] description: "GBA BIOS" note: "Optional. HLE replacement handles all standard SWI calls. Real BIOS adds startup logo and may improve edge-case accuracy." source_ref: "libretro/libretro.cpp:198-202, src/gba.cpp:12430-12438"