Skip to content

higan (SFC Accuracy)

Type libretro
Classification Frozen snapshots
Source https://gitlab.com/higan/higan
Version 106
Revision higan/higan@d3f592013a27, branch libretro
Profiled 2026-09-17
Profile YAML, JSON
Cores higan_sfc
Systems nintendo-snes, nintendo-sgb
Technical notes

The libretro target lives on the libretro branch of higan's own repository, merged with the v106 release: Emulator::Version is "106" (higan/emulator/emulator.hpp:15) and retro_get_system_info announces it as library_version under the name "higan (Super Famicom Accuracy)" (higan/target-libretro/libretro.cpp:405-412, higan/target-libretro/libretro-sfc.cpp:513). The buildbot recipe builds higan_sfc from that branch (libretro-super recipes/linux/cores-linux-x64-generic:71), whose last commit dates from 2017-11-19. The library is named higan_$(corename)_libretro with corename sfc (higan/target-libretro/GNUmakefile:1-11, higan/target-libretro/GNUmakefile:13-19). nSide, from which nside_sfc_balanced is built, refuses core=sfc at build time (nSide nSide/target-libretro/GNUmakefile:1-2).

The system manifest and the 64-byte SPC700 IPL ROM are compiled into the binary and served from memory (higan/target-libretro/libretro-sfc.cpp:364-396, higan/sfc/smp/smp.cpp:25-33).

Coprocessor firmware. A ROM is imported through icarus, whose heuristics detect the coprocessor from the cartridge header (icarus/heuristics/super-famicom.cpp:707-759) and write a manifest naming each firmware file with its size (icarus/heuristics/super-famicom.cpp:482-545). DSP1 games are given the DSP1B names, while dsp1.program.rom and dsp1.data.rom are named for the Campus Challenge '92 and Powerfest '94 cartridges (icarus/heuristics/super-famicom.cpp:623-640, icarus/heuristics/super-famicom.cpp:416-417, icarus/heuristics/super-famicom.cpp:437-438). When the image does not carry the firmware appended (icarus/heuristics/super-famicom.cpp:106-190), the importer reports the file as missing (icarus/core/super-famicom.cpp:64-71) and the target reads it through locate_libretro, appends it to the image and imports again (higan/target-libretro/libretro.cpp:105-141). locate_libretro tries the system directory, then higan/ under the user's config and data directories (higan/target-libretro/libretro.cpp:15-35). No hash is checked. The sizes below are those the manifest declares, and a shorter file leaves the second import short and the load fails.

The icarus database is read from Database/ next to the frontend executable or under the icarus config and data directories, and takes precedence over the heuristics when the image's SHA-256 is listed (icarus/core/core.cpp:1-16, icarus/icarus.cpp:7-15, icarus/core/super-famicom.cpp:17-24). It names dsp1.program.rom and dsp1.data.rom for several DSP1 titles and sgb.boot.rom for the Super Game Boy cartridge.

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/ (higan/target-libretro/libretro-sfc.cpp:154-156, higan/target-libretro/libretro-sfc.cpp:354). 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 (higan/target-libretro/libretro-sfc.cpp:202-243, icarus/core/super-famicom.cpp:1-11). The heuristics recognise the cartridge by its header and name the boot ROM sgb1.boot.rom or sgb2.boot.rom (icarus/heuristics/super-famicom.cpp:612-621, icarus/heuristics/super-famicom.cpp:225-245). The Game Boy system opens that name from the folder first and from the system directory root as a fallback (higan/gb/system/system.cpp:54-65, higan/sfc/coprocessor/icd2/icd2.cpp:34-38, higan/target-libretro/libretro.cpp:200-278). Once a Game Boy image is loaded both files are mandatory: a missing program.rom fails load_special_bios, a missing boot ROM sets the failure flag, and retro_load_game returns false (higan/target-libretro/libretro-sfc.cpp:223-227, higan/target-libretro/libretro.cpp:635-642). The source tree ships no copy of the boot ROMs or of the coprocessor firmware.

21 files | 0 required, 21 optional | 21 in repo, 0 missing

dsp1.program.rom optional in repo #

dsp1.data.rom optional in repo #

dsp1b.program.rom optional in repo #

dsp1b.data.rom optional in repo #

dsp2.program.rom optional in repo #

dsp2.data.rom optional in repo #

dsp3.program.rom optional in repo #

dsp3.data.rom optional in repo #

dsp4.program.rom optional in repo #

dsp4.data.rom optional in repo #

cx4.data.rom optional in repo #

st010.program.rom optional in repo #

st010.data.rom optional in repo #

st011.program.rom optional in repo #

st011.data.rom optional in repo #

st018.program.rom optional in repo #

st018.data.rom optional in repo #

program.rom optional in repo #

sgb1.boot.rom optional in repo #

program.rom optional in repo #

sgb2.boot.rom optional in repo #

Generated on 2026-10-20T03:49:41Z