Files
libretro/emulators/bsnes.yml
T
Abdessamad Derraz 11da070128 chore: recale the profile refs onto their pins
Upstream moved under 145 profiles: 679 refs shifted and 452 followed a
renamed file, against 6,483 that still anchor where they were written.
The recale rewrites the located ranges only, keeping the annotations and
the sentences that carry them, and 106 pins advance in the same commit
because refs and source_commit name one revision or the profile
describes two at once.

Nothing here was guessed. The 183 refs that are CHANGED, GONE or
AMBIGUOUS are untouched, and the 57 profiles holding them keep their old
pin until someone reads the diff: profile_sync refuses to recale a
profile while any of its refs needs a re-read. trident kept its pin too,
its annotated ref being one the writer will not rewrite.
2026-09-04 14:41:44 +02:00

249 lines
9.5 KiB
YAML

emulator: bsnes
type: libretro
core_classification: official_port
source: "https://github.com/libretro/bsnes-libretro"
upstream: "https://github.com/bsnes-emu/bsnes"
logo: "https://raw.githubusercontent.com/bsnes-emu/bsnes/master/bsnes/target-bsnes/resource/bsnes.svg"
profiled_date: "2026-04-05"
source_commit: "6d19eef5835a792e241e33194b4c1e9b75405b88"
core_version: "115"
display_name: "Nintendo - SNES / SFC (bsnes)"
cores: [bsnes]
systems: [nintendo-snes, nintendo-super-game-boy, nintendo-satellaview]
# bsnes supports HLE for DSP1/DSP1B/DSP2/DSP4, ST010, and Cx4.
# When HLE is enabled (core option bsnes_coprocessor_prefer_hle) or
# when LLE firmware files are missing, bsnes falls back to HLE automatically.
# DSP3 and ST011 have no HLE fallback - LLE firmware is required.
# SGB boot ROMs are embedded in the core (icd/boot-roms.cpp), but the SGB
# cartridge ROM (SGB1.sfc / SGB2.sfc) must be provided for Game Boy support.
# All coprocessor firmware loaded via system directory lookup:
# RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY -> "{sysdir}/{identifier}.{type}.rom"
# SGB BIOS loaded from: "{sysdir}/{SGB1.sfc|SGB2.sfc}" (core option bsnes_sgb_bios)
# BS-X BIOS loaded from: "{sysdir}/BS-X.bin"
files:
# -- NEC uPD7725 coprocessor (DSP1, DSP1B, DSP2, DSP3, DSP4) --
# Used by: Pilotwings (DSP1), Super Mario Kart (DSP1B), Dungeon Master (DSP2),
# SD Gundam GX (DSP3), Top Gear 3000 / Planets Champ TG3000 (DSP4)
# program ROM: 2048 x 24-bit words, data ROM: 1024 x 16-bit words
- name: "dsp1.program.rom"
system: nintendo-snes
size: 6144
validation: [size]
required: false
hle_fallback: true
note: "NEC uPD7725 program ROM for DSP1"
source_ref: "bsnes/sfc/cartridge/load.cpp:490-494, bsnes/heuristics/super-famicom.cpp:601"
- name: "dsp1.data.rom"
system: nintendo-snes
size: 2048
validation: [size]
required: false
hle_fallback: true
note: "NEC uPD7725 data ROM for DSP1"
source_ref: "bsnes/sfc/cartridge/load.cpp:498-503"
- name: "dsp1b.program.rom"
system: nintendo-snes
size: 6144
validation: [size]
required: false
hle_fallback: true
note: "NEC uPD7725 program ROM for DSP1B (default NEC identifier)"
source_ref: "bsnes/heuristics/super-famicom.cpp:606"
- name: "dsp1b.data.rom"
system: nintendo-snes
size: 2048
validation: [size]
required: false
hle_fallback: true
note: "NEC uPD7725 data ROM for DSP1B"
source_ref: "bsnes/heuristics/super-famicom.cpp:606"
- name: "dsp2.program.rom"
system: nintendo-snes
size: 6144
validation: [size]
required: false
hle_fallback: true
note: "NEC uPD7725 program ROM for DSP2 (Dungeon Master)"
source_ref: "bsnes/sfc/cartridge/load.cpp:515-520, bsnes/heuristics/super-famicom.cpp:602"
- name: "dsp2.data.rom"
system: nintendo-snes
size: 2048
validation: [size]
required: false
hle_fallback: true
note: "NEC uPD7725 data ROM for DSP2"
source_ref: "bsnes/sfc/cartridge/load.cpp:498-503"
- name: "dsp3.program.rom"
system: nintendo-snes
size: 6144
validation: [size]
required: true
note: "NEC uPD7725 program ROM for DSP3 (SD Gundam GX). No HLE fallback"
source_ref: "bsnes/sfc/cartridge/load.cpp:531-534"
- name: "dsp3.data.rom"
system: nintendo-snes
size: 2048
validation: [size]
required: true
note: "NEC uPD7725 data ROM for DSP3. No HLE fallback"
source_ref: "bsnes/sfc/cartridge/load.cpp:531-534"
- name: "dsp4.program.rom"
system: nintendo-snes
size: 6144
validation: [size]
required: false
hle_fallback: true
note: "NEC uPD7725 program ROM for DSP4 (Top Gear 3000)"
source_ref: "bsnes/sfc/cartridge/load.cpp:522-528, bsnes/heuristics/super-famicom.cpp:604-605"
- name: "dsp4.data.rom"
system: nintendo-snes
size: 2048
validation: [size]
required: false
hle_fallback: true
note: "NEC uPD7725 data ROM for DSP4"
source_ref: "bsnes/sfc/cartridge/load.cpp:498-503"
# -- NEC uPD96050 coprocessor (ST010, ST011) --
# Used by: Exhaust Heat 2 / F1 ROC II (ST010), 2dan Morita Shougi (ST011)
# program ROM: 16384 x 24-bit words, data ROM: 2048 x 16-bit words
- name: "st010.program.rom"
system: nintendo-snes
size: 49152
validation: [size]
required: false
hle_fallback: true
note: "NEC uPD96050 program ROM for ST010"
source_ref: "bsnes/sfc/cartridge/load.cpp:570-574, bsnes/heuristics/super-famicom.cpp:583-587"
- name: "st010.data.rom"
system: nintendo-snes
size: 4096
validation: [size]
required: false
hle_fallback: true
note: "NEC uPD96050 data ROM for ST010"
source_ref: "bsnes/sfc/cartridge/load.cpp:578-583"
- name: "st011.program.rom"
system: nintendo-snes
size: 49152
validation: [size]
required: true
note: "NEC uPD96050 program ROM for ST011 (2dan Morita Shougi). No HLE fallback"
source_ref: "bsnes/sfc/cartridge/load.cpp:599-601, bsnes/heuristics/super-famicom.cpp:586"
- name: "st011.data.rom"
system: nintendo-snes
size: 4096
validation: [size]
required: true
note: "NEC uPD96050 data ROM for ST011. No HLE fallback"
source_ref: "bsnes/sfc/cartridge/load.cpp:599-601"
# -- SETA ST018 (ARM6 coprocessor) --
# Used by: Hayazashi Nidan Morita Shougi
# No HLE fallback exists
- name: "st018.program.rom"
system: nintendo-snes
size: 131072
validation: [size]
required: true
note: "ARM6 program ROM for ST018 (Hayazashi Nidan Morita Shougi). No HLE fallback"
source_ref: "bsnes/sfc/cartridge/load.cpp:379-385, bsnes/sfc/coprocessor/armdsp/armdsp.hpp:31, bsnes/heuristics/super-famicom.cpp:580"
- name: "st018.data.rom"
system: nintendo-snes
size: 32768
validation: [size]
required: true
note: "ARM6 data ROM for ST018. No HLE fallback"
source_ref: "bsnes/sfc/cartridge/load.cpp:387-393, bsnes/sfc/coprocessor/armdsp/armdsp.hpp:32"
# -- Hitachi HG51BS169 (Cx4 coprocessor) --
# Used by: Mega Man X2, Mega Man X3
# HLE fallback available (configuration.hacks.coprocessor.preferHLE)
# Built-in staticDataROM fallback also present for LLE when file missing
- name: "cx4.data.rom"
system: nintendo-snes
size: 3072
sha1: a002f4efba42775a31185d443f3ed1790b0e949a
md5: 037ac4296b6b6a5c47c440188d3c72e3
crc32: b6e76a6a
validation: [size]
required: false
hle_fallback: true
note: "Hitachi HG51BS169 data ROM for Cx4 (Mega Man X2/X3). HLE fallback and built-in static ROM available"
source_ref: "bsnes/sfc/cartridge/load.cpp:444-456, bsnes/sfc/coprocessor/hitachidsp/hitachidsp.hpp:49, bsnes/heuristics/super-famicom.cpp:597, bsnes/sfc/coprocessor/hitachidsp/data-rom.cpp:3 (staticDataROM[3072])"
# -- Super Game Boy cartridge ROM --
# The SGB boot ROMs (256 bytes each) are embedded in icd/boot-roms.cpp.
# But the actual SGB cartridge ROM must be supplied for Game Boy game support.
# Core option bsnes_sgb_bios selects between SGB1.sfc and SGB2.sfc.
- name: "SGB1.sfc"
system: nintendo-super-game-boy
required: false
note: "Super Game Boy 1 cartridge ROM, loaded when playing .gb/.gbc via SGB mode"
source_ref: "bsnes/target-libretro/libretro.cpp:937-946 (system_dir + sgb_bios), bsnes/target-libretro/libretro.cpp:393 (core option bsnes_sgb_bios)"
- name: "SGB2.sfc"
system: nintendo-super-game-boy
required: false
note: "Super Game Boy 2 cartridge ROM, uses dedicated oscillator for accurate GB speed"
source_ref: "bsnes/target-libretro/libretro.cpp:937-946 (system_dir + sgb_bios), bsnes/target-libretro/libretro.cpp:393 (core option bsnes_sgb_bios)"
# -- BS-X Satellaview BIOS --
# Required for loading .bs (BS Memory) format games.
# Hardcoded filename in libretro.cpp.
- name: "BS-X.bin"
system: nintendo-satellaview
required: true
note: "BS-X Satellaview BIOS ROM, loaded from system_dir when running .bs games"
source_ref: "bsnes/target-libretro/libretro.cpp:955-962 (system_dir + BS-X.bin hardcoded, .bs extension branch)"
notes:
hle_available: true
hle_note: >
bsnes provides HLE for DSP1, DSP1B, DSP2, DSP4, ST010, and Cx4.
Controlled by core option bsnes_coprocessor_prefer_hle (default ON).
DSP3, ST011, and ST018 have no HLE - LLE firmware files are mandatory
for the few games that use them.
sgb_note: >
SGB boot ROMs (256 bytes each for SGB1/SGB2) are compiled into the core
at icd/boot-roms.cpp. The SGB cartridge ROM (SGB1.sfc or SGB2.sfc) is a
separate requirement. Core option bsnes_sgb_bios selects which one to use
(default SGB1.sfc). Loading .gb/.gbc files auto-loads the selected SGB ROM.
firmware_resolution: >
Firmware filenames are derived from the game manifest identifier field
(lowercased) plus ".program.rom" or ".data.rom" suffix. The mapping is:
NEC uPD7725 -> dsp1/dsp1b/dsp2/dsp3/dsp4, NEC uPD96050 -> st010/st011,
ARM6 -> st018, HG51BS169 -> cx4. Firmware can also be appended directly
to the ROM image (auto-detected by firmwareRomSize heuristic).
embedded_firmware: >
If firmware data is appended to the game ROM, bsnes splits it automatically
based on firmwareRomSize() detection. Sizes: uPD7725=0x2000, uPD96050=0xD000,
ARM6=0x28000, HG51BS169=0xC00. This eliminates the need for separate files
when using combined ROM+firmware dumps.
cx4_static_fallback: >
The Cx4 (HG51BS169) has a compiled-in static data ROM (hitachidsp/staticDataROM)
as fallback when cx4.data.rom is missing and HLE is disabled. This means
Mega Man X2/X3 work in all configurations without user-supplied firmware.