feat: re-profile 30 emulators, beetle to parallel_n64

source-verified: mesen FdsBios.bin→alias, MesenDB.txt phantom (embedded).
mupen64plus 64DD_IPL.bin→IPL.n64 (code path fix). neocd 000-lo.lo/ng-lo.rom
phantoms (algorithmically generated). new profiles: mesen-s, mupen64plus
next develop/gles2/gles3. regenerate database.
This commit is contained in:
Abdessamad Derraz
2026-03-24 14:06:20 +01:00
parent cda012b10a
commit 69987cc0bb
31 changed files with 836 additions and 646 deletions
+13 -39
View File
@@ -1,7 +1,9 @@
emulator: Meteor GBA
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/meteor-libretro"
profiled_date: "2026-03-18"
upstream: "https://github.com/blastrock/meteor"
profiled_date: "2026-03-24"
core_version: "v1.4"
display_name: "Nintendo - Game Boy Advance (Meteor)"
cores:
@@ -10,49 +12,21 @@ systems:
- nintendo-gba
notes: |
Meteor is a Game Boy Advance emulator by Philippe Daouadi (2009-2011).
The libretro port does NOT load or use any external BIOS file. The core has
a complete HLE BIOS implementation (ameteor/source/bios.cpp) that handles
GBA SWI calls directly in C++. When no real BIOS is loaded (HasBios() returns
false), Cpu::SoftwareInterrupt() dispatches SWI calls to the HLE handlers
instead of executing the BIOS ROM (ameteor/source/cpu.cpp:244-311).
The standalone frontends (GTK, text) expose LoadBios() for optional real BIOS
loading, but the libretro port (libretro/libretro.cpp) never calls LoadBios()
and never queries RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. The retro_load_game()
function only loads the ROM via LoadRom().
HLE SWI coverage: SoftReset (0x00), RegisterRamReset (0x01), Halt (0x02),
IntrWait (0x04), VBlankIntrWait (0x05), Div (0x06), DivArm (0x07),
Sqrt (0x08), ArcTan (0x09), ArcTan2 (0x0A), CpuSet (0x0B),
CpuFastSet (0x0C), BgAffineSet (0x0E), ObjAffineSet (0x0F),
LZ77UnCompWram (0x11), LZ77UnCompVram (0x12), HuffUnComp (0x13),
RLUnCompWram (0x14), RLUnCompVram (0x15).
Missing from HLE: Stop (0x03), BitUnPack (0x10), Diff8bitUnFilter (0x16-0x17),
Diff16bitUnFilter (0x18), SoundBias (0x19), SoundDriverInit (0x1A-0x1F),
MidiKey2Freq (0x1F), SoundDriverVSyncOff/On (0x28-0x29), GetBiosChecksum (0x0D).
The BIOS memory region (0x00000000-0x00003FFF, 16 KB) is allocated only if
LoadBios() is called. Memory reads to this region return BIOS protection values
(0x0E for 8-bit, 0xF00E for 16-bit, 0xE1B0F00E for 32-bit) when no BIOS is
loaded and PC is outside the BIOS area.
Bios000h() (entry point) initializes stack pointers and jumps to 0x08000004,
matching real GBA hardware boot sequence. In the libretro port, retro_reset()
resets all units except BIOS and ROM memory.
GBA emulator by Philippe Daouadi (2009-2011), libretro port by
Hans-Kristian Arntzen. HLE BIOS in ameteor/source/bios.cpp handles
SWI calls via Cpu::SoftwareInterrupt() when HasBios() is false
(ameteor/source/cpu.cpp:245-311). The libretro port never calls
LoadBios() and never queries RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY.
Standalone frontends (GTK, text) support optional real BIOS loading.
files: []
platform_details:
gba:
bios_size: 16384 # 0x4000
bios_size: 16384
hle_bios: true
source_ref: "ameteor/source/bios.cpp, ameteor/source/cpu.cpp:244-311"
source_ref: "ameteor/source/bios.cpp, ameteor/source/cpu.cpp:245-311"
notes: |
Full HLE BIOS. The libretro port never loads an external BIOS file.
Cpu::SoftwareInterrupt() checks HasBios() -- if false (always in libretro),
SWI calls are routed to C++ reimplementations. If a real BIOS were loaded
(standalone only), execution would go through the actual BIOS ROM code via
SoftwareInterrupt() -> branch to 0x08.
Cpu::SoftwareInterrupt() checks HasBios() if false (always in
libretro), SWI calls are routed to C++ reimplementations.