Files
libretro/emulators/higan_sfc_balanced.yml
T
Abdessamad Derraz 4231902a6c docs: write prose without dashes or semicolons
Profiles, the wiki, comments, docstrings, command output and schema descriptions carried em-dashes, clause-joining semicolons, unicode arrows, box-drawing banners and check-mark glyphs. Each sentence was rewritten rather than having its character swapped. Hashes, paths, source_ref values and every cited file:line are unchanged, which a comparison of each parsed profile against the previous revision confirms.

validate_pr comments now say PASS and FAIL in words, and source_ref values in a profile's structured blocks render as code. test_prose_style fails if any of these comes back, in tracked files or in the generated site.
2026-10-19 06:47:31 +02:00

224 lines
10 KiB
YAML

emulator: "nSide (SFC Balanced)"
type: libretro
core_classification: enhanced_fork
source: "https://github.com/libretro/nSide"
upstream: "https://gitlab.com/higan/higan"
profiled_date: "2026-09-17"
source_commit: "5b2b5da3a9654d88b2e51fb7a1637808ac601a18"
upstream_commit: "3353efd3a1087f4d16d9b9fd2a8e465087ab8ec0"
core_version: "106.25"
display_name: "Nintendo - SNES / SFC (nSide Balanced)"
cores:
- nside_sfc_balanced
- higan_sfc_balanced
systems:
- nintendo-snes
- nintendo-sgb
exclusion_note: >
The .info declares SGB1.sfc/sgb1.boot.rom and SGB2.sfc/sgb2.boot.rom. The
core opens the boot ROM under the name the manifest derives from the
architecture, lr35902.boot.rom, in the selected SGB folder
(nSide/gb/system/system.cpp:60-61, nSide/emulator/game.hpp:101-104). A
sgb1.boot.rom or sgb2.boot.rom is only looked up, at the system directory
root, when the Super Game Boy cartridge is itself imported as an SFC game
(icarus/core/super-famicom.cpp:49-54), a load that ends on the Game Boy
cartridge manifest the libretro target cannot provide
(nSide/target-libretro/libretro.cpp:284-287).
notes: |
Fork of higan by hex_usr (nSide v009r16, README.txt:1-4), synchronised with
higan v106r25: Emulator::Version is "106.25" (nSide/emulator/emulator.hpp:16)
and retro_get_system_info announces it as library_version under the name
"higan (Super Famicom Balanced)" (nSide/target-libretro/libretro.cpp:87-93,
nSide/target-libretro/libretro-sfc.cpp:486). The balanced profile keeps a
scanline-based PPU, and the accuracy profile is refused at build time
(nSide/target-libretro/GNUmakefile:1-2, nSide/target-libretro/libretro.cpp:38-39).
The library is named nside_$(corename)_libretro with corename sfc_balanced
(nSide/target-libretro/GNUmakefile:4-13, nSide/target-libretro/GNUmakefile:18-23),
which the GitLab CI publishes as nside_sfc_balanced (.gitlab-ci.yml:15,
.gitlab-ci.yml:53-54). The core options keep the higan_sfc_ prefix so the
settings are shared with higan's core (nSide/target-libretro/libretro-sfc.cpp:321-329).
System files manifest.bml, boards.bml and ipl.rom are compiled into the
binary and served from memory (nSide/target-libretro/libretro-sfc.cpp:335-341,
nSide/target-libretro/resource/sfc.bml:1-4, nSide/sfc-balanced/smp/smp.cpp:25-33).
Coprocessor firmware. A ROM is imported through icarus, whose manifest names
each firmware memory by architecture and identifier
(icarus/heuristics/super-famicom.cpp:90-115). When the image does not carry
the firmware appended (icarus/heuristics/super-famicom.cpp:406-414), the
importer reports {identifier}.{content}.rom as missing
(icarus/core/super-famicom.cpp:46-57) and the libretro target reads that
name through locate_libretro, appends it to the image and imports again
(nSide/target-libretro/icarus.cpp:111-142). locate_libretro tries the system
directory, then higan/ and nSide/ under the user's config and data
directories (nSide/target-libretro/libretro.cpp:3-31). Identifiers come from
the cartridge label: DSP1 for PILOTWINGS, DSP2 for DUNGEON MASTER, DSP3 for
SD Gundam GX, DSP4 for TOP GEAR 3000 and PLANETS CHAMP TG3000, DSP1B
otherwise. ST011 is used for 2DAN MORITA SHOUGI, ST010 otherwise, and ST018
and Cx4 have a single revision (icarus/heuristics/super-famicom.cpp:512-541).
No hash is checked, and a file shorter than the size the manifest declares leaves the
second import short and the load fails. The sizes below are those declared
by the heuristics.
Super Game Boy. Loading a .gb or .gbc file selects the folder named by the
higan_sfc_sgb_bios option, SGB1.sfc/ by default or SGB2.sfc/
(nSide/target-libretro/libretro-sfc.cpp:142-145,
nSide/target-libretro/libretro-sfc.cpp:326). program.rom is looked up in
that folder, then in SGB.sfc/ and Super GameBoy.sfc/, and the folder's
manifest is generated from its program.rom and *.boot.rom files
(nSide/target-libretro/libretro-sfc.cpp:179-215,
icarus/core/super-famicom.cpp:1-11). The Game Boy system then opens the boot
ROM the manifest names, lr35902.boot.rom, from the folder first and from the
system directory root as a fallback (nSide/gb/system/system.cpp:54-65,
nSide/target-libretro/program.cpp:19-81). Once a Game Boy image is loaded
both files are mandatory: a missing one sets the failure flag and
retro_load_game returns false
(nSide/target-libretro/program.cpp:75-78, nSide/target-libretro/libretro.cpp:286).
The SHA-1 values on the boot ROMs and on cx4.data.rom are those of the copies
the source tree ships in icarus/firmware/.
files:
# NEC uPD7725 (DSP1, DSP1B, DSP2, DSP3, DSP4): 2048 x 24-bit program words,
# 1024 x 16-bit data words
- name: "dsp1.data.rom"
system: nintendo-snes
size: 2048
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:115, icarus/heuristics/super-famicom.cpp:534"
- name: "dsp1.program.rom"
system: nintendo-snes
size: 6144
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:114, icarus/heuristics/super-famicom.cpp:534"
- name: "dsp1b.data.rom"
system: nintendo-snes
size: 2048
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:115, icarus/heuristics/super-famicom.cpp:539"
- name: "dsp1b.program.rom"
system: nintendo-snes
size: 6144
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:114, icarus/heuristics/super-famicom.cpp:539"
- name: "dsp2.data.rom"
system: nintendo-snes
size: 2048
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:115, icarus/heuristics/super-famicom.cpp:535"
- name: "dsp2.program.rom"
system: nintendo-snes
size: 6144
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:114, icarus/heuristics/super-famicom.cpp:535"
- name: "dsp3.data.rom"
system: nintendo-snes
size: 2048
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:115, icarus/heuristics/super-famicom.cpp:536"
- name: "dsp3.program.rom"
system: nintendo-snes
size: 6144
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:114, icarus/heuristics/super-famicom.cpp:536"
- name: "dsp4.data.rom"
system: nintendo-snes
size: 2048
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:115, icarus/heuristics/super-famicom.cpp:537-538"
- name: "dsp4.program.rom"
system: nintendo-snes
size: 6144
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:457-501, icarus/heuristics/super-famicom.cpp:114, icarus/heuristics/super-famicom.cpp:537-538"
# Hitachi HG51BS169 (Cx4): 1024 x 24-bit data words
- name: "cx4.data.rom"
system: nintendo-snes
size: 3072
sha1: "a002f4efba42775a31185d443f3ed1790b0e949a"
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:405-454, icarus/heuristics/super-famicom.cpp:110, icarus/heuristics/super-famicom.cpp:529-531"
# NEC uPD96050 (ST010, ST011): 16384 x 24-bit program words,
# 2048 x 16-bit data words
- name: "st010.data.rom"
system: nintendo-snes
size: 4096
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:504-548, icarus/heuristics/super-famicom.cpp:99, icarus/heuristics/super-famicom.cpp:516-521"
- name: "st010.program.rom"
system: nintendo-snes
size: 49152
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:504-548, icarus/heuristics/super-famicom.cpp:98, icarus/heuristics/super-famicom.cpp:516-521"
- name: "st011.data.rom"
system: nintendo-snes
size: 4096
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:504-548, icarus/heuristics/super-famicom.cpp:99, icarus/heuristics/super-famicom.cpp:519"
- name: "st011.program.rom"
system: nintendo-snes
size: 49152
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:504-548, icarus/heuristics/super-famicom.cpp:98, icarus/heuristics/super-famicom.cpp:519"
# SETA ARM6 (ST018): 128 KiB program, 32 KiB data
- name: "st018.data.rom"
system: nintendo-snes
size: 32768
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:362-402, icarus/heuristics/super-famicom.cpp:92, icarus/heuristics/super-famicom.cpp:512-514"
- name: "st018.program.rom"
system: nintendo-snes
size: 131072
required: false
source_ref: "nSide/sfc-balanced/cartridge/load.cpp:362-402, icarus/heuristics/super-famicom.cpp:91, icarus/heuristics/super-famicom.cpp:512-514"
# Super Game Boy: cartridge ROM and boot ROM per folder
- name: "program.rom"
path: "SGB1.sfc/program.rom"
system: nintendo-sgb
required: false
note: "Also looked up as SGB.sfc/program.rom and Super GameBoy.sfc/program.rom."
source_ref: "nSide/target-libretro/libretro-sfc.cpp:179-215, nSide/sfc-balanced/cartridge/load.cpp:159-162"
- name: "lr35902.boot.rom"
path: "SGB1.sfc/lr35902.boot.rom"
system: nintendo-sgb
size: 256
sha1: "aa2f50a77dfb4823da96ba99309085a3c6278515"
required: false
note: "Falls back to lr35902.boot.rom at the system directory root."
source_ref: "nSide/gb/system/system.cpp:54-65, nSide/emulator/game.hpp:101-104, icarus/heuristics/super-famicom.cpp:103, icarus/heuristics/super-famicom.cpp:523-527"
- name: "program.rom"
path: "SGB2.sfc/program.rom"
system: nintendo-sgb
required: false
note: "Selected by the higan_sfc_sgb_bios option."
source_ref: "nSide/target-libretro/libretro-sfc.cpp:179-215, nSide/sfc-balanced/cartridge/load.cpp:159-162"
- name: "lr35902.boot.rom"
path: "SGB2.sfc/lr35902.boot.rom"
system: nintendo-sgb
size: 256
sha1: "93407ea10d2f30ab96a314d8eca44fe160aea734"
required: false
note: "Falls back to lr35902.boot.rom at the system directory root."
source_ref: "nSide/gb/system/system.cpp:54-65, nSide/emulator/game.hpp:101-104, icarus/heuristics/super-famicom.cpp:103, icarus/heuristics/super-famicom.cpp:523-527"