mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-11 14:03:23 -05:00
227 lines
10 KiB
YAML
227 lines
10 KiB
YAML
emulator: "higan (SFC Accuracy)"
|
|
type: libretro
|
|
core_classification: frozen_snapshot
|
|
source: "https://gitlab.com/higan/higan"
|
|
source_branch: libretro
|
|
upstream: "https://gitlab.com/higan/higan"
|
|
profiled_date: "2026-09-17"
|
|
source_commit: "d3f592013a27cb78f17d84f90a6be6cf6f6af1d1"
|
|
core_version: "106"
|
|
display_name: "Nintendo - SNES / Famicom (higan Accuracy)"
|
|
cores:
|
|
- higan_sfc
|
|
systems:
|
|
- nintendo-snes
|
|
- nintendo-sgb
|
|
|
|
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; 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.
|
|
|
|
files:
|
|
# NEC uPD7725 (DSP1, DSP1B, DSP2, DSP3, DSP4): 2048 x 24-bit program words,
|
|
# 1024 x 16-bit data words
|
|
- name: "dsp1.program.rom"
|
|
system: nintendo-snes
|
|
size: 6144
|
|
required: false
|
|
note: "Named for the Campus Challenge '92 and Powerfest '94 cartridges and by the icarus database; other DSP1 games use dsp1b.program.rom."
|
|
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:416, icarus/heuristics/super-famicom.cpp:437"
|
|
|
|
- name: "dsp1.data.rom"
|
|
system: nintendo-snes
|
|
size: 2048
|
|
required: false
|
|
note: "Named for the Campus Challenge '92 and Powerfest '94 cartridges and by the icarus database; other DSP1 games use dsp1b.data.rom."
|
|
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:417, icarus/heuristics/super-famicom.cpp:438"
|
|
|
|
- name: "dsp1b.program.rom"
|
|
system: nintendo-snes
|
|
size: 6144
|
|
required: false
|
|
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:482, icarus/heuristics/super-famicom.cpp:712-720"
|
|
|
|
- name: "dsp1b.data.rom"
|
|
system: nintendo-snes
|
|
size: 2048
|
|
required: false
|
|
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:483, icarus/heuristics/super-famicom.cpp:712-720"
|
|
|
|
- name: "dsp2.program.rom"
|
|
system: nintendo-snes
|
|
size: 6144
|
|
required: false
|
|
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:492, icarus/heuristics/super-famicom.cpp:734"
|
|
|
|
- name: "dsp2.data.rom"
|
|
system: nintendo-snes
|
|
size: 2048
|
|
required: false
|
|
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:493, icarus/heuristics/super-famicom.cpp:734"
|
|
|
|
- name: "dsp3.program.rom"
|
|
system: nintendo-snes
|
|
size: 6144
|
|
required: false
|
|
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:502, icarus/heuristics/super-famicom.cpp:738"
|
|
|
|
- name: "dsp3.data.rom"
|
|
system: nintendo-snes
|
|
size: 2048
|
|
required: false
|
|
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:503, icarus/heuristics/super-famicom.cpp:738"
|
|
|
|
- name: "dsp4.program.rom"
|
|
system: nintendo-snes
|
|
size: 6144
|
|
required: false
|
|
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:512, icarus/heuristics/super-famicom.cpp:742"
|
|
|
|
- name: "dsp4.data.rom"
|
|
system: nintendo-snes
|
|
size: 2048
|
|
required: false
|
|
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:513, icarus/heuristics/super-famicom.cpp:742"
|
|
|
|
# Hitachi HG51B169 (Cx4): 1024 x 24-bit data words
|
|
- name: "cx4.data.rom"
|
|
system: nintendo-snes
|
|
size: 3072
|
|
required: false
|
|
source_ref: "higan/sfc/cartridge/load.cpp:201-225, icarus/heuristics/super-famicom.cpp:255, icarus/heuristics/super-famicom.cpp:708"
|
|
|
|
# NEC uPD96050 (ST010, ST011): 16384 x 24-bit program words,
|
|
# 2048 x 16-bit data words
|
|
- name: "st010.program.rom"
|
|
system: nintendo-snes
|
|
size: 49152
|
|
required: false
|
|
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:522, icarus/heuristics/super-famicom.cpp:750"
|
|
|
|
- name: "st010.data.rom"
|
|
system: nintendo-snes
|
|
size: 4096
|
|
required: false
|
|
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:523, icarus/heuristics/super-famicom.cpp:750"
|
|
|
|
- name: "st011.program.rom"
|
|
system: nintendo-snes
|
|
size: 49152
|
|
required: false
|
|
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:533, icarus/heuristics/super-famicom.cpp:754"
|
|
|
|
- name: "st011.data.rom"
|
|
system: nintendo-snes
|
|
size: 4096
|
|
required: false
|
|
source_ref: "higan/sfc/cartridge/load.cpp:227-257, icarus/heuristics/super-famicom.cpp:534, icarus/heuristics/super-famicom.cpp:754"
|
|
|
|
# SETA ARM6 (ST018): 128 KiB program, 32 KiB data
|
|
- name: "st018.program.rom"
|
|
system: nintendo-snes
|
|
size: 131072
|
|
required: false
|
|
source_ref: "higan/sfc/cartridge/load.cpp:185-199, icarus/heuristics/super-famicom.cpp:544, icarus/heuristics/super-famicom.cpp:758"
|
|
|
|
- name: "st018.data.rom"
|
|
system: nintendo-snes
|
|
size: 32768
|
|
required: false
|
|
source_ref: "higan/sfc/cartridge/load.cpp:185-199, icarus/heuristics/super-famicom.cpp:545, icarus/heuristics/super-famicom.cpp:758"
|
|
|
|
# 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: "higan/target-libretro/libretro-sfc.cpp:202-243, higan/sfc/cartridge/load.cpp:77-80"
|
|
|
|
- name: "sgb1.boot.rom"
|
|
path: "SGB1.sfc/sgb1.boot.rom"
|
|
system: nintendo-sgb
|
|
aliases:
|
|
- "sgb.boot.rom"
|
|
size: 256
|
|
required: false
|
|
note: "Falls back to sgb1.boot.rom at the system directory root. Named sgb.boot.rom by the icarus database entry for the cartridge."
|
|
source_ref: "higan/gb/system/system.cpp:54-65, icarus/heuristics/super-famicom.cpp:232, icarus/heuristics/super-famicom.cpp:619, icarus/core/super-famicom.cpp:17-24"
|
|
|
|
- name: "program.rom"
|
|
path: "SGB2.sfc/program.rom"
|
|
system: nintendo-sgb
|
|
required: false
|
|
note: "Selected by the higan_sfc_sgb_bios option."
|
|
source_ref: "higan/target-libretro/libretro-sfc.cpp:202-243, higan/sfc/cartridge/load.cpp:77-80"
|
|
|
|
- name: "sgb2.boot.rom"
|
|
path: "SGB2.sfc/sgb2.boot.rom"
|
|
system: nintendo-sgb
|
|
size: 256
|
|
required: false
|
|
note: "Falls back to sgb2.boot.rom at the system directory root."
|
|
source_ref: "higan/gb/system/system.cpp:54-65, icarus/heuristics/super-famicom.cpp:243, icarus/heuristics/super-famicom.cpp:614"
|