Files
libretro/emulators/supersnes9x.yml
T
Abdessamad Derraz d9c74888e8 feat: list rocknix cores per device
ROCKNIX builds a different emulator set per SoC, and without a target
list an H700 handheld received the PS2, PS3 and GameCube firmware of
emulators its image lacks. The new target scraper reads the emulators
metapackage per device; seven cores ROCKNIX ships get profiles and the
Super Famicom Box ROMs one of them needs are collected.
2026-10-17 15:38:07 +02:00

134 lines
5.6 KiB
YAML

emulator: "SuperSnes9x"
type: libretro
core_classification: enhanced_fork
source: "https://github.com/shanytc/snes9x"
upstream: "https://github.com/snes9xgit/snes9x"
profiled_date: "2026-10-17"
source_commit: "691e47b40fb38fa522a5471462344a2f0206b7a8"
pin_frozen: "ROCKNIX 20261001 builds this revision. Later commits on shanytc/snes9x rework the Super Famicom Box loader and are not part of that build."
core_version: "1.63.29"
display_name: "Nintendo - SNES / SFC / SGB / GB / GBC (SuperSnes9x)"
cores:
- "supersnes9x"
systems:
- nintendo-snes
- nintendo-satellaview
- nintendo-sufami-turbo
- nintendo-sfcbox
- nintendo-sgb
- nintendo-gb
- nintendo-gbc
notes: |
Snes9x fork that adds a Game Boy core behind a Super Game Boy subsystem, the
Super Famicom Box (HD64180 supervisor) and other boards. The libretro build
compiles sfcbox.cpp, hd64180.cpp and the sgb/ tree.
ref: snes9x.h:11-13, libretro/Makefile.common:53-69
BIOS_DIR is the frontend's system directory. LoadBIOS, used for BS-X.bin and
STBIOS.bin, tries the content directory first and requires the read to fill
the whole buffer it is given.
ref: libretro/libretro.cpp:2320-2326, libretro/libretro.cpp:1145-1176
Game Boy content: with the snes9x_sgb_bios option at its default (auto) the
core looks for an SGB2 BIOS, then an SGB1 BIOS, in the content directory,
BIOS_DIR, then the working directory. A candidate is accepted only when its
header at 0x7FC0 reads "Super GAMEBOY", the next byte deciding SGB2. Without
one the built-in BIOS-less Game Boy core runs the cart. In BIOS mode a
256-byte GB-side boot ROM is read too, and used only when it contains the
3E F1 handshake sequence; otherwise an embedded SGB boot ROM is used.
ref: libretro/libretro.cpp:657-671, memmap.cpp:1088-1155,
memmap.cpp:1165-1213, memmap.cpp:1655-1686, memmap.cpp:1858-1883
Satellaview: a BS-X cart loads only with BS-X.bin (1 MB). The BS-X slot code
reads BS-X.bin or BS-X.bios from BIOS_DIR.
ref: libretro/libretro.cpp:1308-1311, bsx.cpp:1204-1235, bsx.cpp:1301-1307
Sufami Turbo: a cart loads only with STBIOS.bin (256 KB). The Sufami Turbo
subsystem asks LoadBIOS for 0x100000 bytes, so a 256 KB STBIOS.bin fails that
path; the plain content path and the two-cart path ask for 0x40000.
ref: libretro/libretro.cpp:1302-1305, libretro/libretro.cpp:1413-1425,
libretro/libretro.cpp:1445-1455
Super Famicom Box: the supervisor ROM is looked for in BIOS_DIR, the content
directory, its BIOS and ../BIOS subfolders, then the directory of the loaded
file. Without it the image is refused. The OSD font is optional.
ref: sfcbox.cpp:1350-1407, memmap.cpp:2561-2562
files:
- name: "BS-X.bin"
aliases: ["BS-X.bios"]
system: nintendo-satellaview
required: true
min_size: 1048576
validation: [size]
description: "Satellaview BS-X BIOS"
note: "Required for BS-X carts. BS-X.bios is accepted by the slot code in bsx.cpp only."
source_ref: "libretro/libretro.cpp:1145-1176, libretro/libretro.cpp:1308-1311, bsx.cpp:1204-1235"
- name: "STBIOS.bin"
system: nintendo-sufami-turbo
required: true
min_size: 262144
validation: [size]
description: "Sufami Turbo BIOS"
note: "Required for Sufami Turbo carts. The Sufami Turbo subsystem reads 1 MB and rejects a 256 KB file."
source_ref: "libretro/libretro.cpp:1145-1176, libretro/libretro.cpp:1302-1305, libretro/libretro.cpp:1445-1455"
- name: "sgb2.sfc"
aliases: ["SGB2.sfc", "Super Game Boy 2 (Japan).sfc"]
system: nintendo-sgb
required: false
description: "Super Game Boy 2 SNES BIOS"
note: "Preferred over sgb.sfc in auto mode. Header at 0x7FC0 must read \"Super GAMEBOY2\". Without an SGB BIOS, GB content runs on the BIOS-less core."
source_ref: "memmap.cpp:1088-1155, memmap.cpp:1655-1665"
- name: "sgb.sfc"
aliases: ["SGB.sfc", "sgb1.sfc", "SGB1.sfc", "Super Game Boy (World).sfc"]
system: nintendo-sgb
required: false
description: "Super Game Boy SNES BIOS"
note: "Used when no SGB2 BIOS is found, or alone with the option set to sgb1. Header at 0x7FC0 must read \"Super GAMEBOY\" not followed by '2'."
source_ref: "memmap.cpp:1088-1155, memmap.cpp:1655-1665"
- name: "sgb2.boot.rom"
aliases: ["sgb2_bios.bin"]
system: nintendo-sgb
required: false
hle_fallback: true
size: 256
validation: [size]
description: "Super Game Boy 2 GB-side boot ROM"
note: "Read in SGB2 BIOS mode; used only when it contains the 3E F1 handshake bytes, else the embedded boot ROM runs."
source_ref: "memmap.cpp:1165-1213, memmap.cpp:1858-1883"
- name: "sgb.boot.rom"
aliases: ["sgb1.boot.rom", "sgb_bios.bin"]
system: nintendo-sgb
required: false
hle_fallback: true
size: 256
validation: [size]
description: "Super Game Boy GB-side boot ROM"
note: "Read in SGB1 BIOS mode; used only when it contains the 3E F1 handshake bytes, else the embedded boot ROM runs."
source_ref: "memmap.cpp:1165-1213, memmap.cpp:1858-1883"
- name: "KROM1.BIN"
aliases: ["KROM.BIN", "krom1.bin"]
system: nintendo-sfcbox
required: true
min_size: 65536
validation: [size]
description: "Super Famicom Box supervisor ROM (HD64180)"
note: "Required for Super Famicom Box images: LoadSFCBox returns false without it."
source_ref: "sfcbox.cpp:1350-1398, sfcbox.h:20, memmap.cpp:2561-2562"
- name: "MB90082.BIN"
system: nintendo-sfcbox
required: false
min_size: 9216
validation: [size]
description: "Super Famicom Box OSD character ROM"
note: "Absent, the supervisor overlay is not drawn."
source_ref: "sfcbox.cpp:1400-1403, sfcbox.h:25"