feat: profile eleven standalone emulators

This commit is contained in:
Abdessamad Derraz committed 2026-08-08 11:17:29 +02:00
1 parent ec51a2d6da
commit 7bb9c61037
11 files changed
+8224

No files matched your search

File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+316
View File
@@ -0,0 +1,316 @@
emulator: izapple2
type: standalone
core_classification: embedded_hle
source: "https://github.com/ivanizag/izapple2"
upstream: "https://github.com/ivanizag/izapple2"
profiled_date: "2026-08-08"
source_commit: "01deea8a97b19ac782a1d11fe1e8d07f07b6c835"
core_version: "v2.4.0"
display_name: "Apple - Apple II (izapple2)"
cores:
- izapple2
systems:
- apple-ii
mode: standalone
notes: |
Apple II emulator written in Go by Ivan Izaguirre. Boards: Apple ][ and ][+
with 48 KB, Apple IIe and //e enhanced with 128 KB, and two clones, the Copam
Base 64A and the Basis 108 (setup.go:36-58).
Every ROM the machine needs is compiled into the binary. The whole resources
directory is embedded with //go:embed (resources.go:25-26) and the 17 machine
configs with //go:embed configs/*.cfg (configuration.go:51-52). LoadResource
routes a name by its prefix: <internal>/ reads the embedded filesystem,
http:// and https:// fetch over the network, anything else is a path on disk
(resources.go:55-88). The shipped configs name main ROM, character ROM and
boot diskette as <internal>/ paths, so the emulator starts into DOS 3.3 with
no file on disk. The base64a and basis108 configs set rom: <custom>, which
dispatches to loadMultiPageRom over six embedded PROM dumps each
(setup.go:189-199, boardBase64a.go:7-16, boardBasis108.go:28-37).
Two of the 27 registered cards name an image the emulator downloads instead
of carrying: prodosromdrive and prodosromcard3 (cardBuilder.go:85-86). Both
read the card slot ROM out of that image, so neither card has a boot ROM
without it. No shipped model uses either card, they are reached with -sN.
prodosnvramdrive is left out of the factory (cardBuilder.go:87).
-rom and -charrom replace the embedded main and character ROM with a file of
the user's choosing, and every disk, hard disk and cassette parameter takes
user media and defaults to empty.
Seven frontends besides the core: a2sdl, a2sdl3, a2fyne, a2ebiten, a2wasm,
console and headless. ES-DE runs a2sdl, built as izapple2sdl_linux_amd64 or
izapple2sdl_windows_amd64.exe, and passes the image as a positional argument.
The libretro core in frontend/a2libretro builds from source only, is absent
from the buildbot and the RetroArch online updater (doc/libretro.md), and its
izapple2_libretro.info declares firmware_count = 0. It exposes the machine as
a model option and no card configuration, so the two card images cannot be
reached through it.
files:
- name: "ProDOS_2.4.3_TJ.po"
required: false
description: "ProDOS ROM Drive card image, a 1 MB solid state disk by Terence Boldt"
source_ref: "cardProDOSRomDrive.go:31,39,46"
note: "Fetched from https://github.com/Alex-Kw/ProDOS-ROM-Drive-Images/raw/main/ProDOS_2.4.3_TJ.po when the card is added with no image parameter. The card slot ROM is read at offset 0x300. No size or hash check."
- name: "ProDOS-ROMCARD3_4MB_A2D.v1.4_v37.po"
required: false
size: 4194304
validation: [size]
description: "ProDOS ROM Card 3 image, a 4 MB ROM card by Ralle Palaveev"
source_ref: "cardProDOSRomCard3.go:29,37,42-44,48"
note: "Fetched from https://github.com/rallepalaveev/ProDOS-Romcard3/raw/main/ProDOS-ROMCARD3_4MB_A2D.v1.4_v37.po when the card is added with no image parameter. The card slot ROM is read at offset 0x200. Rejected unless exactly 4 MB."
analysis:
embedded_resources:
mechanism: "//go:embed resources, served by LoadResource on the <internal>/ prefix"
source_ref: "resources.go:25-26,55-70"
count: 59
main_roms:
- filename: "341-000x_integer.rom"
size: 8192
md5: 894e6980cadd7bb3178b1ac8a15798df
sha1: 102fbf7dea8b8d6de5de1c484ff45e7b5dfb28d5
- filename: Apple2_Plus.rom
size: 12288
md5: 572b3005a4fa49bc54917b069b82c1ab
sha1: 33a24f5489ba9195b44be77d9afb2252594cb5c7
- filename: Apple2e.rom
size: 16384
md5: 346bc782c6a08a531c460e33bc03daf4
sha1: 61fa9254628e5bb7236fb474006116d67684d747
- filename: Apple2e_Enhanced.rom
size: 16384
md5: 38063e08c778503fc03ecebb979769e9
sha1: b8ea90abe135a0031065e01697c4a3a20d51198b
- filename: wozaniam_integer.rom
size: 32768
md5: 2f52e3571b952c0c6a7111bbe7d40b06
sha1: 5f7b851dbcab1df8f1883d2112f6ab1d16109f24
main_roms_clones:
- filename: BASE64A_D0.BIN
size: 4096
md5: 3be17e122814854eef489aa18fb2a18b
sha1: bd68bc9144483faff473e66a12eddd31fe369b68
- filename: BASE64A_D8.BIN
size: 4096
md5: 85fe91818dc1a6104a632f667d5d50ae
sha1: 8f19accf1d531779940be3f3c12af8277a3c412f
- filename: BASE64A_E0.BIN
size: 4096
md5: 1713e0a1013ac7f219de68a03e24acb7
sha1: f698da38f4f48bb9db73a71f85e6e350eb645c51
- filename: BASE64A_E8.BIN
size: 4096
md5: 9fc4cef642511e173a85e155e0dd17a6
sha1: 9fbf0faf5df19d7d2e6bfd4bacd12eccc3fc4cf9
- filename: BASE64A_F0.BIN
size: 4096
md5: 620957f7d52e44dbc8cfe0432d1c75d6
sha1: e397c2c154917a62866059b9c54b2c7796463a12
- filename: BASE64A_F8.BIN
size: 8192
md5: 20cf7dcd355196f77c4e490cb27d7050
sha1: 6141c21c5d6a06729355083e3e36c6af72e534f2
- filename: Basis108_D83_D0.BIN
size: 4096
md5: 4324e16f31623b3d6b06b0e6509407cb
sha1: 7901203845adab588850ae35f81e4ee2a2248686
- filename: Basis108_D70_D8.BIN
size: 4096
md5: 64bd9f89b1aeb32de7783fb3f8f7466f
sha1: b2a418818e4130859afd6c08b5695328a3edd2c5
- filename: Basis108_D56_E0.BIN
size: 4096
md5: e376cc43d22035a851703163551d033d
sha1: 938884eb3ebd0870f99df33ee7a03e93cd625ab4
- filename: Basis108_D40_E8.BIN
size: 4096
md5: ca3491a23265be503eefd52dbf6debaa
sha1: 380ffcf0dba008f0bc43a483931e98034b1d0d52
- filename: Basis108_D39_F0.BIN
size: 4096
md5: ff63fbda7a4cccf29236d3255fbe8bd5
sha1: b5ffc9b3552b13b2f577a42196addae71289203d
- filename: Basis108_D25_F8.BIN
size: 4096
md5: 242d0c2562d280843a16ebc70a8b30bc
sha1: 66b7eadfdb938cda0de01dbeab1b74aa88bd096c
character_roms:
- filename: Apple2rev7CharGen.rom
size: 2048
md5: 9ac0dc8c4d0002eb45b0b84be0bde5ec
sha1: f9d312f128c9557d9d6ac03bfad6c3ddf83e5659
- filename: Apple IIe Video Unenhanced.bin
size: 4096
md5: 2fbc2be2a84ea742de37be9925c7d7cd
sha1: 58ad0008df72896a18601e090ee0d58155ffa5be
- filename: Apple IIe Video Enhanced.bin
size: 4096
md5: 9123fff3442c0e688cc6816be88dd4ab
sha1: b2b5d87f52693817fc747df087a4aa1ddcdb1f10
- filename: BASE64A_ROM7_CharGen.BIN
size: 4096
md5: 0b144915453e5fa9d1f4a4cb85438eb7
sha1: d3827e22f377b681de1f8b18d8e57c66ca85cf38
- filename: D29_basis_cg_2532.rom.BIN
size: 4096
md5: 37a23661f21e4945aef680ac94f4d435
sha1: e6e4e357b3834a143df9e5834abfb4a9139457d4
- filename: ROMXce Production 1Mb Text ROM V5.bin
size: 131072
md5: 3e9255b76fcd20a84d4a40e99904c15d
sha1: 12b5596ffeb3ee334d43c1d8031ea3c0b1e2429c
- filename: "80ColumnP109.BIN"
size: 1024
md5: e564b4bb5728cc7b5f2c4c56330f7ad5
sha1: b1fad3f20e84c3063f25ba66555a1624563fff6b
- filename: "80ColumnP110.BIN"
size: 2048
md5: ce6630f0a1f3ba08127a2e82facc7a25
sha1: aefae76fb07740d042cf294f01424efa7cc7a199
- filename: videx_ultraterm_chs_7859.bin
size: 4096
md5: 1d77cc5edd8ea1330745efbb9bb4c902
sha1: 3517fa9e7a39573f1cb159b3161d6939dec199ba
card_firmware:
- filename: Apple Disk II 16 Sector Interface Card ROM P5 - 341-0027.bin
size: 256
md5: 2020aa1413ff77fe29353f3ee72dc295
sha1: d4181c9f046aafc3fb326b381baac809d9e38d16
- filename: Apple Disk II 16 Sector Interface Card ROM P6 - 341-0028.bin
size: 256
md5: 5f1be0c1cdff26f5956eef9643911886
sha1: bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4
- filename: Apple Disk II 13 Sector Interface Card ROM P5 - 341-0009.bin
size: 256
md5: 4f80448507cf43ab40c17ac08d89e278
sha1: afd060e6f35faf3bb0146fa889fc787adf56330a
- filename: Apple Disk II 13 Sector Interface Card ROM P6 - 341-0010.bin
size: 256
md5: 897b0edef70b440133c99f65a507ebb6
sha1: e3d6d1c30653572b49ecc2dc54ce073978411a04
- filename: Apple II Parallel Printer Interface Card ROM fixed.bin
size: 256
md5: 275a06e8fec1e53a8315df54d1719822
sha1: 6392019fdb1498149d00a3cd98b1723b3f245847
- filename: Apple II Interface 341-0271-A ROM 2716 for 5MB Profile.bin
size: 2048
md5: 82015e7e3462116e2d1aa1d35d4f52b1
sha1: d9d4a7a2c14232c3872f9bbf55aff1b31f9a1cb5
- filename: Apple II Interface 341-0299-B ROM 2716 for 10MB Profile.bin
size: 2048
md5: e841f266fcc2e2452b26c73c4fb93eb0
sha1: 81750f023f964c2f3781d687cee5b1ea5b49d4ea
- filename: MemoryExpansionCard-341-0344a.bin
size: 4096
md5: a434738170b38589261bf93f3027a528
sha1: 6e823a1fa40ed37eeddcef23f5df24da2ea1463e
- filename: ramfactor_rom_14.bin
size: 8192
md5: e3f6a5c1ff75d278362a08403f8b1fec
sha1: 32cb02a6a915dd3962bfa1f0184a94253e03ba6b
- filename: ThunderclockPlusROM.bin
size: 2048
md5: 138b1f7e30953fcaa58fcbf562c15001
sha1: 60f434f5325899d7ea257a6e56e6f53eae65146a
- filename: Videx Videoterm ROM 2.4.bin
size: 1024
md5: acdb3732b38ddaee5ad357e08eea7676
sha1: bb653836e84850ce3197f461d4e19355f738cfbf
- filename: videx_ultraterm_frm_b537.bin
size: 4096
md5: 72972c464ecd229db27e03da1c92c332
sha1: b4acd1775c08ae43996ab4edf6d8e28f4736346b
- filename: SwyftCard ROM.bin
size: 16384
md5: 95a5579c1229944dd4841a1fb34e9e47
sha1: 1554bd03c536789f0ff7d1ef6c992265e311935d
- filename: ApplesoftInteger.BIN
size: 65536
md5: a7bae7a0a70cb4019c5145060e6a3451
sha1: b929f27b15de61391e28c18951e8d17dd8fd9435
- filename: MultiRom(SP boot)-Prog aid-28C256.BIN
size: 32768
md5: ecf5aa6f46a85ace61eb5cec505a908d
sha1: fb69c1f4551626749e7cfcfa5e2c27af7f195b8d
- filename: Apple2CardFirmware.bin
size: 512
md5: 76e795393f308a0788f2f95a67431b9a
sha1: b8b0458e8b0c3b406e03f5e8096cbc5cebd127b0
- filename: Apple2CardFirmwareImproved.bin
size: 512
md5: d2cf1b181b1934f9533c6d8b9d02f44c
sha1: 5e2737d233f5769df654d2d5aa96d24f2fd85671
diskettes:
- filename: dos33.dsk
size: 143360
md5: b13de32fd7a97d817744bf2dd71d5479
sha1: 63392d078a159342b12667d0fdfea7a01a961978
- filename: dos32.nib
size: 232960
md5: 082e79bb10fa5dcf07b2e49f689f5439
sha1: 3549a3a7d990d5b258f56fdc765258cb2ffb81ff
- filename: ProDOS_2_4_3.po
size: 143360
md5: 0577bdbb9c082787d00d50c830a75d67
sha1: 4bd80c2220b48cdcdcbe3876529a34b9a18efe5f
- filename: cpm_2.20B_56K.po
size: 143360
md5: c2c24f49d7c736e6317f6fe45d8f7468
sha1: cbd86f70ad822af826ae5039955997d722ae9d6a
- filename: CPM3.1_Disk_1.dsk
size: 143360
md5: e28e1efa972cf4789aec6f29e9e08013
sha1: 0305c74cf24b618b29047bf6b624e607071c954b
- filename: CPM3.1_Disk_2.dsk
size: 143360
md5: 5c5e948e7636c2b1e11735661788e24d
sha1: daecdcd23366029b066fc28694c924c958acab26
- filename: cpm65.po
size: 143360
md5: 685800279db9ee7131bb284061c8a007
sha1: 88fbea7f89ce2171afa10e86c825511913603ad7
- filename: A2DeskTop-1.4-en_800k.2mg
size: 819264
md5: 304a4585cefc808f9b7b9e585e6dc9c2
sha1: 88ccfe5fffbcc3d170d9c864cfcbbe9debc98cf7
- filename: Card Cat 1.7.dsk
size: 143360
md5: d9aeb6dcd25cbe06f1e0a5e39ae7d23f
sha1: 8dd11509479d37e9f46a29cb120eb0a1028b2c0d
- filename: Videx Ultraterm Utilities.dsk
size: 143360
md5: 81306cc573bf67153ca8d3f93a4528aa
sha1: 76f6d461e959f75be9cfcbbbf6479bdc8af6d176
- filename: SwyftWare_-_SwyftCard_Tutorial.woz
size: 101807
md5: 9ab515de46831b4b1274cae01c14b621
sha1: c27a1e4ad98be52ce6dbfef801d8083578084569
- filename: audit.dsk
size: 143360
md5: 917056239add083b76d5d72f8264cdda
sha1: 489cea555cdbe0957a9d31b7ae29b013a1a2525c
- filename: Apple II Pascal 1.3 APPLE0_ 680-0282-A.dsk
size: 143360
md5: 8f01fb2ab2826adf336061c102a7b94d
sha1: 58023a7e41623250213b9ab60b47798dcab00031
- filename: Apple II Pascal 1.3 APPLE1_ 680-0283-A.dsk
size: 143360
md5: 4f328d449cb9d34da866bfd9caad7efb
sha1: 8bbf47dce65ab672928ac16fe31e883afcf36f8a
- filename: Apple II Pascal 1.3 APPLE2_ 680-0284-A.dsk
size: 143360
md5: 41ed020ea6b1d4c682d9f92cf3b7c770
sha1: f46b04bda181cb0b6c79088d0f9efa8dd5b1db83
- filename: Apple II Pascal 1.3 APPLE3_ 680-0290-A.dsk
size: 143360
md5: 88c0f98953b4c7c1cb42ea1d745c518e
sha1: 10d2187111a1ccab8ed5b8141db81329e3e30768
+244
View File
@@ -0,0 +1,244 @@
emulator: jgenesis
type: standalone
core_classification: other
source: "https://github.com/jsgroth/jgenesis"
upstream: "https://github.com/jsgroth/jgenesis"
profiled_date: "2026-08-08"
source_commit: "aba5813336765825e3e96b3059cfe49173c4faa5"
core_version: "0.14.0"
display_name: "Multi-System (jgenesis)"
cores:
- jgenesis
systems:
- sega-megadrive
- sega-megacd
- sega-32x
- sega-mastersystem
- sega-gamegear
- sega-sg1000
- nintendo-nes
- nintendo-snes
- nintendo-gb
- nintendo-gbc
- nintendo-gba
- nec-pc-engine
mode: standalone
notes: |
Multi-system emulator written in Rust by James Groth. One binary covers
thirteen hardware modes: Master System, Game Gear, SG-1000, Genesis, Sega CD,
32X, Sega CD 32X, NES, SNES, Game Boy, Game Boy Color, Game Boy Advance and
PC Engine (frontend/jgenesis-native-driver/src/extensions.rs:172-186).
No path is hardcoded. Every BIOS, boot ROM and coprocessor ROM is an
Option<PathBuf> in the config, defaulting to None and set through a file
dialog or the TOML config file (frontend/jgenesis-native-driver/src/config.rs
:76-78,95-99,146-159,191-193,205). The emulator identifies these files by
size and layout, never by name or hash, so the names below are the ones the
dumps circulate under rather than strings read from the source. RetroBat
writes bios_CD_U/E/J.bin and gba_bios.bin into the TOML directly
(emulatorLauncher/Generators/Jgenesis.Generator.cs:226-229,283-294).
Sega CD selects the BIOS by disc region and per_region_bios defaults to true,
so the US, European and Japanese images are each reachable
(frontend/jgenesis-native-driver/src/mainloop/genesis.rs:233-262,
frontend/jgenesis-native-config/src/genesis.rs:115). Setting "Use US BIOS for
all regions" collapses all three onto the US slot.
SNES coprocessor ROMs use the merged layout, program ROM followed by data ROM
in one file, not the split .program.rom / .data.rom pair. Program ROM
endianness is auto-detected from the first four opcodes, so either byte order
of a given dump loads (backend/snes-coprocessors/src/upd77c25.rs:382-390,405-419).
There is one DSP slot for DSP-1: guess_dsp_variant only returns Dsp1, Dsp2,
Dsp3 or Dsp4, and DSP-1B titles fall through to the DSP-1 slot
(backend/snes-core/src/memory/cartridge.rs:926-936). None of the seven chips
has an HLE implementation, so an affected game refuses to load when its slot
is empty.
32X needs no user file. The two SH-2 boot ROMs and the 68000 vector table are
compiled into the binary (backend/s32x-core/src/bootrom.rs:3-6). A Sega CD
BIOS is only consulted when the hardware mode is Sega CD or Sega CD 32X.
NES, SG-1000 and PC Engine need no BIOS. PC Engine has no CD-ROM² support, so
no System Card is involved. CX4, SA-1, S-DD1, SPC7110, Super FX, OBC1 and the
S-RTC are emulated from cartridge data alone and take no firmware file.
Written by the emulator, not obtained: save files, save states, the per-game
cheats TOML in its own serde format (frontend/jgenesis-native-config/src/lib.rs
:215,244-275) and the config file itself. The GUI exports a palette to
nespalette.pal (frontend/jgenesis-gui/src/app/nes.rs:428-430). portable.txt is
tested for existence only, to keep the settings beside the executable
(frontend/jgenesis-native-config/src/paths.rs:57-64).
files:
# -------------------------------------------------------
# Sega CD
# -------------------------------------------------------
- name: "bios_CD_U.bin"
system: sega-megacd
description: "Sega CD BIOS (US)"
required: true
mode: standalone
size: 131072
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:41-51 (read), :256-262 (bios_path_for_region), backend/segacd-core/src/api.rs:77-79 (BIOS_LEN check)"
note: "Selected when the disc region is Americas, and for every region when per_region_bios is off."
- name: "bios_CD_E.bin"
system: sega-megacd
description: "Mega CD BIOS (Europe)"
required: true
mode: standalone
size: 131072
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:256-262 (eu_bios_path), backend/segacd-core/src/api.rs:77-79"
- name: "bios_CD_J.bin"
system: sega-megacd
description: "Mega CD BIOS (Japan)"
required: true
mode: standalone
size: 131072
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:256-262 (jp_bios_path), backend/segacd-core/src/api.rs:77-79"
# -------------------------------------------------------
# Game Boy Advance
# -------------------------------------------------------
- name: "gba_bios.bin"
system: nintendo-gba
description: "Game Boy Advance BIOS"
required: true
mode: standalone
size: 16384
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/gba.rs:29-33 (GbaNoBios), backend/gba-core/src/memory.rs:10,102-107 (BIOS_ROM_LEN check)"
note: "Every GBA load fails without it. skip_bios_animation only skips the intro, the BIOS is still mapped and read for SWI calls."
# -------------------------------------------------------
# SNES coprocessor firmware (merged program+data layout)
# -------------------------------------------------------
- name: "dsp1.rom"
aliases: ["SNES_dsp1.rom"]
system: nintendo-snes
description: "NEC uPD77C25 firmware for DSP-1"
required: true
mode: standalone
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:336-353 (MissingDsp1Rom), backend/snes-coprocessors/src/upd77c25.rs:28-31,35-38,382-390"
note: "0x1800 program plus 0x800 data. Also used by DSP-1B titles, which have no separate slot. Layout is sliced at a fixed offset, size is not checked."
- name: "dsp2.rom"
aliases: ["SNES_dsp2.rom"]
system: nintendo-snes
description: "NEC uPD77C25 firmware for DSP-2"
required: true
mode: standalone
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:340-342 (MissingDsp2Rom), :929 (Dungeon Master CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
- name: "dsp3.rom"
aliases: ["SNES_dsp3.rom"]
system: nintendo-snes
description: "NEC uPD77C25 firmware for DSP-3"
required: true
mode: standalone
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:343-345 (MissingDsp3Rom), :931 (SD Gundam GX CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
- name: "dsp4.rom"
aliases: ["SNES_dsp4.rom"]
system: nintendo-snes
description: "NEC uPD77C25 firmware for DSP-4"
required: true
mode: standalone
size: 8192
source_ref: "backend/snes-core/src/memory/cartridge.rs:346-348 (MissingDsp4Rom), :933 (Top Gear 3000 CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
- name: "st010.rom"
aliases: ["SNES_st010.rom"]
system: nintendo-snes
description: "NEC uPD96050 firmware for ST010"
required: true
mode: standalone
size: 53248
source_ref: "backend/snes-core/src/memory/cartridge.rs:294-305 (MissingSt010Rom), :938-943 (variant detection), backend/snes-coprocessors/src/upd77c25.rs:28-31,35-38"
note: "0xC000 program plus 0x1000 data. Used by F1 ROC II."
- name: "st011.rom"
aliases: ["SNES_st011.rom"]
system: nintendo-snes
description: "NEC uPD96050 firmware for ST011"
required: true
mode: standalone
size: 53248
source_ref: "backend/snes-core/src/memory/cartridge.rs:298-300 (MissingSt011Rom), :938-943 (Hayazashi Nidan Morita Shougi CRC32 match)"
- name: "st018.rom"
aliases: ["SNES_st018.rom"]
system: nintendo-snes
description: "ARM firmware for ST018"
required: true
mode: standalone
min_size: 163840
validation: [size]
source_ref: "backend/snes-core/src/memory/cartridge.rs:310-320 (MissingSt018Rom), backend/snes-coprocessors/src/st018.rs:18-22,346-352 (TOTAL_ROM_LEN check)"
note: "0x20000 program plus 0x8000 data. Used by Hayazashi Nidan Morita Shougi 2. Files larger than the expected length are accepted, shorter ones are rejected."
# -------------------------------------------------------
# Master System / Game Gear
# -------------------------------------------------------
- name: "bios.sms"
system: sega-mastersystem
description: "Master System BIOS"
required: false
mode: standalone
source_ref: "frontend/jgenesis-native-driver/src/mainloop/smsgg.rs:27-33,50-56,74-80,112-122, backend/smsgg-core/src/memory.rs:101-106,148-168"
note: "Read only when sms_boot_from_bios is enabled or the emulator runs without a cartridge, both off by default. One slot accepts any regional dump, no size or content check."
- name: "bios.gg"
system: sega-gamegear
description: "Game Gear BIOS"
required: false
mode: standalone
source_ref: "frontend/jgenesis-native-driver/src/mainloop/smsgg.rs:27-33,50-56,74-80,112-122"
note: "Read only when gg_boot_from_bios is enabled or the emulator runs without a cartridge, both off by default."
# -------------------------------------------------------
# Game Boy / Game Boy Color
# -------------------------------------------------------
- name: "dmg_boot.bin"
system: nintendo-gb
description: "Game Boy boot ROM"
required: false
mode: standalone
size: 256
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/gb.rs:29-33,77-89, backend/gb-core/src/memory.rs:9,45-63 (DMG_BOOT_ROM_LEN check)"
note: "Loaded only when dmg_boot_rom is enabled, off by default. Without it the CPU starts post-boot."
- name: "cgb_boot.bin"
system: nintendo-gbc
description: "Game Boy Color boot ROM"
required: false
mode: standalone
min_size: 2048
max_size: 2304
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/gb.rs:34-38,77-89, backend/gb-core/src/memory.rs:10,45-63,168 (CGB_BOOT_ROM_LEN check and pad_cgb_boot_rom)"
note: "Loaded only when cgb_boot_rom is enabled, off by default. 2304 bytes is taken as is, 2048 bytes gets the filler page inserted."
# -------------------------------------------------------
# NES
# -------------------------------------------------------
- name: "nes.pal"
aliases: ["nespalette.pal"]
system: nintendo-nes
description: "External NES color palette"
required: false
mode: standalone
min_size: 192
max_size: 1536
validation: [size]
source_ref: "config/nes-config/src/lib.rs:92-109 (NesPalette::read_from), frontend/jgenesis-gui/src/app/nes.rs:407-417"
note: "1536 bytes gives 512 colors, 192 bytes gives 64 colors extrapolated to 512. Smaller files are rejected and the built-in palette stays in use."
+81
View File
@@ -0,0 +1,81 @@
emulator: KEGS
type: standalone
core_classification: other
source: "https://kegs.sourceforge.net/"
upstream: "https://kegs.sourceforge.net/"
profiled_date: "2026-08-08"
core_version: "1.38"
display_name: "Apple - Apple IIGS (KEGS)"
cores:
- kegs
systems:
- apple-iigs
- apple-ii
mode: standalone
notes: |
Apple IIGS emulator by Kent Dickey, shipped as one zip holding the sources
and the KEGSMAC, kegswin.exe and xkegs binaries.
The system ROM is the only file needed to boot. config_load_roms takes the
first name that stats across g_kegs_default_paths (config.c:149-151), which
covers the current directory, $HOME, $HOME/Library/KEGS, the executable
directory and a Mac bundle Resources directory. g_cfg_rom_path is tried
first, then the fixed list (config.c:407-410,1105-1109). ROM size selects
the machine, 32 KB for an Apple //e, 128 KB for a ROM 01 IIGS and 256 KB
for a ROM 03 IIGS, and any other size is refused (config.c:1136-1153).
Without a ROM, KEGS raises its config panel instead of starting
(config.c:1110-1115).
Three ROMs are compiled in. Slot 7 gets the SmartPort PROM literal
g_rom_c700[] (config.c:463,1165-1169). Slot 6 gets a Disk II PROM rebuilt
at load time, XORed out of the IIGS ROM through g_rom_c600_rom01_diffs[]
(config.c:428,1177-1183) or copied from offset 0x600 of a //e ROM
(config.c:1172-1176); the IIGS control panel reaches it by setting slot 6
to "Your Card". Text uses g_font_array[] from kegsfont.h (video.c:272-273,
prepared at sim65816.c:667).
Slots 1 to 5 and slot 7 carry empty name lists (config.c:413-417,420), so
slot 6 is the only slot that reads a card ROM from disk.
config.kegs carries the disk assignments and the battery RAM, and KEGS
creates it when none is found (config.c:638-672).
files:
- name: ROM
aliases: [ROM.01, ROM.03, APPLE2GS.ROM, APPLE2GS.ROM2, xgs.rom, XGS.ROM, Rom03gd, 342-0077-b]
required: true
description: "Apple IIGS system ROM"
validation: [size]
source_ref: "config.c:135,407-410,1096-1161"
note: >
Accepted sizes are 32768 (Apple //e), 131072 (ROM 01) and 262144
(ROM 03). -rom on the command line and the g_cfg_rom_path config line
both replace the first search name (config.c:1465-1467). A 32 KB //e
ROM has to carry the Disk II PROM at offset 0x600, which KEGS reads
into slot 6.
- name: c600.rom
aliases: [controller.rom, disk.rom, DISK.ROM, diskII.prom]
required: false
hle_fallback: true
min_size: 256
validation: [size]
description: "Disk II controller PROM for slot 6"
source_ref: "config.c:418-419,1192-1224"
note: >
Replaces the built-in PROM. The first 256 bytes are read into slot 6
and a shorter file is rejected.
- name: "<charrom>"
required: false
hle_fallback: true
min_size: 4096
validation: [size]
description: "ROMX-compatible character ROM"
source_ref: "config.c:136-137,259-276,1070-1093"
note: >
Picked through the F4 config panel, which stores the path in
g_cfg_charrom_path; there is no default name. KEGS reads 4096 bytes at
0x1000 times the selected font number and replaces the built-in text
font with them. The 32 fonts it lists span a 131072-byte image.
+60
View File
@@ -0,0 +1,60 @@
emulator: lightspark
type: standalone
core_classification: game_engine
source: "https://github.com/lightspark/lightspark"
upstream: "https://github.com/lightspark/lightspark"
profiled_date: "2026-08-08"
source_commit: "d51ab60193b7baa56b2f6ec55f9a7789f99f6ee9"
core_version: "0.9.0"
display_name: "Adobe Flash (Lightspark)"
cores:
- lightspark
systems:
- flash
mode: standalone
notes: |
Open source implementation of the Flash player, playing SWF files of any
ActionScript version, as a standalone application or as a browser plugin. The
ActionScript built-in classes are implemented in C++ under src/scripting/flash,
so no external class library is read. ES-DE runs the binary as
`lightspark --fullscreen <rom>`, Batocera as
`lightspark -fs -s local-with-networking <rom>` off a 0.8.7 pin.
Startup reads nothing. The two GLSL shaders sit in the tree as
src/lightspark.frag and src/lightspark.vert but the preprocessor pulls them
into string literals, "directly include shader source to avoid filesystem
access" (src/backends/rendering.cpp:1042-1045,1062-1065), which is also how
0.8.7 builds them. The face given to nanoVG for text is Roboto Medium, decoded
at runtime from a base85 array in the binary (src/launcher.cpp:1567,
src/platforms/engineutils.cpp:500-502), and the launcher icon face is embedded
the same way (src/launcher.cpp:1094-1096,1333).
resources/openfonticons/OpenFontIcons.ttf and resources/ErrorConstants.xml are
build inputs, the second feeding the errorconstants.{h,cpp} generator
(tools/errorgen:20).
Fonts named by the content go through fontconfig, which answers with whatever
face the host has installed: FcFontMatch then FcPatternGetString(FC_FILE) hands
a path straight to nvgCreateFont (src/backends/cachedsurface.cpp:135-156). No
name, path, size or hash is fixed anywhere, README:27-30 marks fontconfig
itself optional, and an unmatched family leaves nanoVGFontID at -1 and falls
back to the embedded face.
dataFileRead is the only reader of LS_DATADIR and has no callers, at this
commit and at 0.8.7 (src/parsing/textfile.cpp:74-106). fontPath holds
"TimesNewRoman.ttf" on Windows (src/backends/rendering.cpp:102) but reaches
only cairo_select_font_face, which takes a family name rather than a path, and
only under ENABLE_CAIRO (src/backends/rendering.cpp:1277), left FALSE by
CMakeLists.txt.
Files the player writes rather than expects: lightspark.conf, an INI carrying
the cache directory and prefix whose absence leaves the hardcoded defaults
(src/backends/config.cpp:82-115), launcher.xml holding the recent entries
(src/launcher.cpp:1299-1310), and .sol SharedObjects under the data directory
(src/platforms/engineutils.cpp:849-914). application.xml, extension.xml and the
library.swf files under META-INF/AIR/extensions belong to the AIR package being
run (src/main.cpp:149, src/platforms/engineutils.cpp:785-800), and
crossdomain.xml is fetched from remote hosts
(src/backends/security.cpp:353,1025).
files: []
+113
View File
@@ -0,0 +1,113 @@
emulator: Lime3DS
type: standalone
core_classification: community_fork
source: "https://github.com/Lime3DS/lime3ds-archive"
upstream: "https://github.com/Lime3DS/lime3ds-archive"
profiled_date: "2026-08-08"
source_commit: "c9dbb5bb40d90dfa6a2b085d152ae6ecf915b2f9"
core_version: "2119.1"
display_name: "Nintendo - 3DS (Lime3DS)"
cores:
- lime3ds
- lime3ds-gui
- lime-qt
systems:
- nintendo-3ds
mode: standalone
notes: |
Fork of Citra, discontinued at 2119.1. Data dir: lime3ds-emu on Linux,
Lime3DS on Windows and macOS, with citra-emu and Citra kept as legacy
locations. External files live in sysdata/ and nand/.
ref: src/common/common_paths.h:18-32, src/common/file_util.cpp:834-835
InitKeys reads boot9.bin then aes_keys.txt. Encrypted content needs one of
the two files.
ref: src/core/hw/aes/key.cpp:313-322
System archives (shared font, Mii data, country list, bad word list) have
open-source replacements embedded in the binary.
ref: src/core/file_sys/archive_ncch.cpp:144-170
The embedded shared font only covers title low ID 0x00014002. CHN, KOR and
TWN resolve to 0x00014102, 0x00014202 and 0x00014302, which fall through to
shared_font.bin and then to ErrorSystemFiles.
ref: src/core/hle/service/apt/apt.cpp:213, src/core/hle/service/apt/apt.cpp:284-290
ClCertA is decrypted from the NAND archive with the KeySlot 0x0D normal key,
and HTTPS requests stay unauthenticated when either is unavailable.
ref: src/core/hle/service/http/http_c.cpp:1963-1999
System titles are downloaded and installed in-app from the Nintendo CDN, so
the NAND title tree is not user-supplied.
ref: src/core/nus_download.cpp:13, src/core/hle/service/am/am.cpp:536
DumpKeys.gm9, a GodMode9 script producing aes_keys.txt and seeddb.bin, ships
in the tree.
ref: dist/dumpkeys/README.md
sector0x96.bin is defined but read by no code path.
ref: src/common/common_paths.h:70
mcu.dat holds per-installation MCU state that the emulator writes itself when
the file is absent.
ref: src/core/hle/service/cfg/cfg.cpp:734-756
files:
- name: aes_keys.txt
path: sysdata/aes_keys.txt
system: nintendo-3ds
required: false
note: "key slots, common keys, DLP and NFC key Ys and NFC secrets, one per line"
source_ref: "src/core/hw/aes/key.cpp:206-309, src/common/common_paths.h:68"
- name: boot9.bin
path: sysdata/boot9.bin
system: nintendo-3ds
required: false
size: 65536
validation: [size]
note: "AES key section read at offset 55760, RSA modulus and exponent at 0xB3E0 and 0xB4E0"
source_ref: "src/core/hw/aes/key.cpp:135-204, src/core/hw/rsa/rsa.cpp:49-80"
- name: shared_font.bin
path: sysdata/shared_font.bin
system: nintendo-3ds
required: false
hle_fallback: true
note: "legacy path, tried after the shared font system archive; decompressed BCFNT with the 0x80 byte APT header"
source_ref: "src/core/hle/service/apt/apt.cpp:254-270, src/core/hle/service/apt/apt.cpp:276-291"
- name: seeddb.bin
path: sysdata/seeddb.bin
system: nintendo-3ds
required: false
note: "game seed database for 9.6+ titles; an empty database is written when the file is absent"
source_ref: "src/core/file_sys/seed_db.cpp:12-58"
- name: CTCert.bin
path: sysdata/CTCert.bin
system: nintendo-3ds
required: false
size: 384
validation: [size]
note: "console client certificate; signature type must be 0x010005 and the issuer one of the two Nintendo CA G3 strings"
source_ref: "src/core/hle/service/am/am.cpp:2427-2454, src/core/hle/service/am/am.cpp:83-93, src/core/hle/service/am/am.h:95"
- name: SecureInfo_A
path: nand/rw/sys/SecureInfo_A
system: nintendo-3ds
required: false
size: 273
validation: [size]
note: "console region and serial number; loaded on a size check alone"
source_ref: "src/core/hle/service/cfg/cfg.cpp:689-709, src/core/hle/service/cfg/cfg.h:180-186"
- name: LocalFriendCodeSeed_B
path: nand/rw/sys/LocalFriendCodeSeed_B
system: nintendo-3ds
required: false
size: 272
validation: [size]
note: "friend code generation seed; loaded on a size check alone"
source_ref: "src/core/hle/service/cfg/cfg.cpp:711-732, src/core/hle/service/cfg/cfg.h:188-193"
+255
View File
@@ -0,0 +1,255 @@
emulator: LinApple
type: standalone
core_classification: community_fork
source: "https://github.com/linappleii/linapple"
upstream: "https://github.com/AppleWin/AppleWin"
profiled_date: "2026-08-08"
source_commit: "b7a26b46773996130a602b9ac7ac2ebeae5c0b11"
core_version: "2.3.0"
display_name: "Apple - Apple II (LinApple)"
cores:
- linapple
systems:
- apple-ii
mode: standalone
notes: |
SDL port of AppleWin for Linux. The tree was taken off SourceForge by
maxolasersquad, forked further by several users, and now sits under the
linappleii namespace (README.md:8-22). Machine types are Apple ][,
Apple ][+, Apple //e and Enhanced Apple //e.
Every ROM is compiled into the binary as a C string literal. MemInitialize
picks one of four system ROM arrays by g_Apple2Type and copies it into
memrom, splitting off the first 4 KB as internal Cx ROM for the two //e
types (Memory.cpp:1012-1052). The four IDR_APPLE2*_ROM macros defined just
above that switch hold .rom filenames and are never referenced. Peripheral
firmware is embedded the same way and installed by MemInitialize: parallel
printer in slot 1, Super Serial Card in slot 2, mouse in slot 4, Disk II in
slot 6, hard disk in slot 7 (Memory.cpp:1057-1062). Slot 4 is filled only
when g_Slot4 is CT_MouseInterface, slot 7 only when the hard disk is
enabled (Harddisk.cpp:279-281).
Character generators are res/charset40*.png, converted to XPM arrays by the
Makefile and included at Video.cpp:43-47. One of five is chosen from the
machine type and g_KeyboardLanguage (Video.cpp:1264-1291). The window icon,
status font and splash screen are XPM arrays as well (asset.cpp:29-31,61-75).
Master.dsk is the only data file the emulator searches for. Path::FindDataFile
walks ~/.local/share/linapple, the XDG config directory, the executable
directory, the compiled-in ASSET_DIR and the two share paths
(Util_Path.h:43-68). ImageOpen rejects an image that no format detector
claims, and for a .dsk the detector that runs first is DoDetect, which gates
on file size (DiskImage.cpp:424-427,977-1034).
The debugger reads its symbol tables through g_sProgramDir, a buffer declared
empty at Applewin.cpp:87 and never assigned anywhere in the tree, so the
names resolve against the working directory. g_sFileNameSymbols lists nine
tables (Debugger_Symbols.cpp:48-58) and DebugInitialize preloads three with
missing-file reporting suppressed (Debug.cpp:8676-8696); the other six load
from the matching SYM command. A table that is absent leaves the debugger
running without its symbols (Debugger_Symbols.cpp:576-584).
linapple.conf carries preferences only, and is searched over ./, the XDG
config and data directories, every $XDG_CONFIG_DIRS entry and /etc
(Applewin.cpp:803-815). Each accessor returns a compiled-in default when a
key is missing (Registry.cpp:87-116), and Configuration::Save is compiled
out unless REGISTRY_WRITEABLE is defined (Registry.cpp:63-85).
files:
- name: Master.dsk
required: false
description: "Boot floppy inserted into slot 6 drive 1 at startup"
min_size: 143105
max_size: 143364
validation: [size]
source_ref: "asset.cpp:33,101-128; Applewin.cpp:626-633; DiskImage.cpp:424-427"
note: >
Inserted only when the Slot 6 Autoload preference is off; when it is on,
the two configured disk images are loaded instead. Asset_FindMasterDisk
prints a warning and returns 255 when no search path holds the file, and
the emulator starts with an empty drive. No hash or content check is
performed. DoDetect also accepts the discrete sizes 143403 and 143488 for
DOS-order images. LinApple and Batocera ship different images under this
name, both 143360 bytes.
- name: APPLE2E.SYM
required: false
description: "Debugger symbol table for the main ROM"
source_ref: "Debugger_Symbols.cpp:49,553-584,751-767; Debug.cpp:8679-8680"
note: >
Preloaded into the Main table when the debugger initialises. Parsed as
text lines of address and symbol name, with no size or hash check.
- name: A2_BASIC.SYM
required: false
description: "Debugger symbol table for Applesoft BASIC"
source_ref: "Debugger_Symbols.cpp:50,553-584,751-767; Debug.cpp:8682-8683"
note: >
Preloaded into the Basic table when the debugger initialises. Parsed as
text lines of address and symbol name, with no size or hash check.
analysis:
embedded_roms:
mechanism: "C string literals compiled into the binary, installed with memcpy"
extraction: "hashes computed from the decoded hex-escape literals"
system_roms:
- symbol: Apple2_rom
machine: "Apple ]["
machine_type: A2TYPE_APPLE2
source_ref: "inc/resource.h:3; Memory.cpp:1015-1018"
size: 12288
md5: 3c406514b9806a7c57ee65fb0b0c39b4
sha1: 09288be705464b608ff190519ab008d3dfcd1b05
- symbol: Apple2plus_rom
machine: "Apple ][+"
machine_type: A2TYPE_APPLE2PLUS
source_ref: "inc/resource.h:774; Memory.cpp:1019-1022"
size: 12288
md5: 572b3005a4fa49bc54917b069b82c1ab
sha1: 33a24f5489ba9195b44be77d9afb2252594cb5c7
- symbol: Apple2e_rom
machine: "Apple //e"
machine_type: A2TYPE_APPLE2E
source_ref: "inc/resource.h:1545; Memory.cpp:1023-1026"
size: 16384
md5: 346bc782c6a08a531c460e33bc03daf4
sha1: 61fa9254628e5bb7236fb474006116d67684d747
note: "First 4 KB loaded as internal Cx ROM, remaining 12 KB at $D000"
- symbol: Apple2eEnhanced_rom
machine: "Enhanced Apple //e"
machine_type: A2TYPE_APPLE2EEHANCED
source_ref: "inc/resource.h:2573; Memory.cpp:1027-1030"
size: 16384
md5: 38063e08c778503fc03ecebb979769e9
sha1: b8ea90abe135a0031065e01697c4a3a20d51198b
note: "First 4 KB loaded as internal Cx ROM, remaining 12 KB at $D000"
peripheral_firmware:
- symbol: Parallel_bin
device: "Parallel printer card"
slot: 1
source_ref: "src/ParallelPrinter.cpp:33,61-65"
size: 256
md5: 5902996f16dc78fc013f6e1db14805b3
sha1: c75c751589cbcc1ad4ab4f63676af7abadd86f5b
- symbol: SSC_rom
device: "Super Serial Card"
slot: 2
source_ref: "src/SerialComms.cpp:53,774-794"
size: 2048
md5: 67c0d61ab0911183faf05270f881a97e
sha1: 6dab633470c6bc4cb3e81d09fda46597caf8ee57
note: "Slot firmware taken from offset 0x700, full 2 KB kept as expansion ROM"
- symbol: MouseInterface_rom
device: "Mouse interface card"
slot: 4
source_ref: "src/MouseInterface.cpp:39,207-224"
size: 2048
md5: 22563ab338024dac7b03510371d49c57
sha1: 3a9d881a8a8d30f55b9719aceebbcf717f829d6f
note: "Installed only when g_Slot4 is CT_MouseInterface"
- symbol: Disk2_rom
device: "Disk II controller, 16 sector"
slot: 6
source_ref: "src/Disk.cpp:44,832-846"
size: 256
md5: 2020aa1413ff77fe29353f3ee72dc295
sha1: d4181c9f046aafc3fb326b381baac809d9e38d16
note: "Three bytes at $C64C are patched after the copy to drop a wait routine"
- symbol: Hddrvr_dat
device: "Hard disk controller"
slot: 7
source_ref: "src/Harddisk.cpp:108,279-288"
size: 256
md5: 9e5b56c2daf2a10bd8fd76db60273e08
sha1: b2430836d5fedb11ae9a680f14dedef0d41ed92e
note: "Installed only when the hard disk is enabled. Differs from the firmware carried by current AppleWin"
character_generators:
mechanism: "PNG converted to XPM by the Makefile, included at Video.cpp:43-47"
selection: "machine type, then g_KeyboardLanguage (Video.cpp:1264-1291)"
accepted_geometry: "128x128, or 128x256 for the Euro ROMs carrying a second language"
images:
- filename: charset40.png
used_for: "Apple //e and Enhanced //e, English (US)"
size: 2745
md5: c6029ef4d4fa272083769673bdcf2b6c
sha1: d79aa8af6446c3637401cb75ffdda92fdf7f3853
- filename: charset40_IIplus.png
used_for: "Apple ][ and Apple ][+"
size: 1956
md5: 2104f293d5df7137fdd579ea405da847
sha1: bc9aa5cbadfcffe82b5b20ce954555b9d07fa260
- filename: charset40_british.png
used_for: "English (UK)"
size: 5300
md5: aa001ec528e3c6c472d02cbb09c5b365
sha1: ac363e069b40658f86ccd1e2d57438db732dbc84
- filename: charset40_french.png
used_for: "French (FR)"
size: 5330
md5: f163ec67c91501b604ca349afef93fc3
sha1: 5b454a2e7194863df3a997cc21e7ea6d61eb61d7
- filename: charset40_german.png
used_for: "German (DE)"
size: 5290
md5: 4d8ab9d3f15ee19d9e62c1f163df7e48
sha1: f86bd5238604247e04d616850f244b489daef18d
symbol_tables:
source_ref: "src/Debugger/Debugger_Symbols.cpp:48-58"
lookup: "g_sProgramDir + filename, and g_sProgramDir is never assigned"
preloaded_at_init:
- APPLE2E.SYM
- A2_BASIC.SYM
- A2_USER1.SYM
loaded_on_command:
- A2_ASM.SYM
- A2_USER2.SYM
- A2_SRC1.SYM
- A2_SRC2.SYM
- A2_DOS33.SYM
- A2_PRODOS.SYM
note: >
Only APPLE2E.SYM and A2_BASIC.SYM are distributed with the emulator and
copied to the build output by the Makefile (:98-99,205-206). The user
slots and the remaining tables have no shipped counterpart.
debugger_scripts:
- filename: DebuggerAutoRun.txt
source_ref: "src/Debugger/Debug.cpp:8745-8755"
note: >
Run once through CmdOutputRun when the debugger first initialises, with
g_bReportMissingScripts cleared so absence is silent. Holds debugger
commands written by the user and has no counterpart in the source tree.
generated_files:
written_only:
- AppleWin.log
- Profile.txt
- Trace.txt
- AppleWin_Text40.txt
- AppleWin_Text80.txt
- "save states"
- "printer spool file"
- "FTP directory cache"
written_and_read_back:
- LinAppleDebugger.cfg
note: "Produced by the emulator, none is user-supplied"
unused_resources:
- filename: font.bmp
reason: "Asset_LoadBMP (asset.cpp:37-51) has no call sites and is not declared in asset.h"
- filename: icon.bmp
reason: "Asset_LoadBMP (asset.cpp:37-51) has no call sites and is not declared in asset.h"
- filename: fixedsys-excelsior-regular.ttf
reason: "no TTF symbol in the tree and no SDL_ttf in the Makefile link line"
+238
View File
@@ -0,0 +1,238 @@
emulator: Lindbergh Loader
type: standalone
core_classification: embedded_hle
source: "https://github.com/lindbergh-loader/lindbergh-loader"
upstream: "https://github.com/lindbergh-loader/lindbergh-loader"
source_commit: "0af606d845b70339c335785c0eba68b47b78df3c"
profiled_date: "2026-08-08"
core_version: "2.1.4"
display_name: "Sega - Lindbergh (Lindbergh Loader)"
cores:
- lindbergh-loader
systems:
- sega-lindbergh
mode: standalone
notes: |
Runs the original Sega Lindbergh game binaries on Linux, built and executed
as 32-bit x86. The launcher picks the game ELF, exports
LD_PRELOAD=lindbergh.so and an
LD_LIBRARY_PATH covering the loader directory, the original directory, the
game directory and ".:lib:../lib", then system()s the ELF
(lindbergh.c:315-378, 874-929). Platforms invoke it as lindbergh-loader
(Batocera package and generator, RetroBat, ES-DE find rule LINDBERGH-LOADER).
The Lindbergh hardware is emulated inside lindbergh.so with no external
firmware. Hooked open() and fopen() redirect /dev/lbb (baseboard), /dev/i2c/0
(eeprom), /dev/ttyS0 and /dev/ttyS1 (drive, ride, motion boards and card
reader), /proc/bus/pci/01/00.0 and /proc/bus/pci/00/1f.0 to /dev/zero and
answer from code (hook.c:43, 530-615, 641-853). The security board is DIP
switches and test/service lines computed in securityBoard.c:98-140, with no
keychip dump. eeprom.bin and sram.bin are created on first run and their
contents synthesised: eepromSettings.c builds every amSysDataRecord section
from constants and recomputes the CRCs (eeprom.c:33-48, baseBoard.c:60-74,
eepromSettings.c:24-120). Card_01.crd and Card_02.crd are written from a
56-byte header held in the binary (cardReader.c:227-247). lindbergh.ini and
controls.ini are optional; both fall back to compiled-in defaults and can be
emitted with --create (config.c:510-516, sdlInput.c:790-795).
The one hard external dependency is the NVIDIA Cg runtime. findLibCg() checks
LIBCG_PATH from the ini, then /app/lib32/libCg2.so, $APP_IMG_ROOT/usr/lib32/
libCg2.so, ./libCg.so and $LINDBERGH_LOADER_CURRENT_DIR/libCg.so, and exits
when none is present (shaderPatches.c:1028-1108). Cg 3.1 is a separate
requirement: the game ELFs link libCg.so and libCgGL.so, which upstream
vendors as libs/Cg-3.1.zip and installs into the runtime library directory
(scripts/appimage/make-appimage.sh,
scripts/flatpak/com.github.lindberghloader.yml:181-189, 242-245). Batocera
copies per-game Cg variants into the ROM directory
(lindberghGenerator.py:1027-1050).
Shaders come from the game dump, not from the loader. cacheModedShaderFiles()
reads ../fs/shader and /data/Shader relative to the ELF, patches the Cg
source and serves the result back through the fopen, fread and ftell hooks
(shaderCache.c:474-488, 555-678, hook.c:778-808, 1140-1212).
Boot logos and console fonts were user-supplied until 2.0.1, which added
built-in copies compiled into lindbergh.so and served from
resources/logo.h and resources/font.h. The originals are read only when
DISABLE_BUILTIN_LOGOS or DISABLE_BUILTIN_FONT is set, from the game
directory (hook.c:655-744, 874-926, fread hook at 1159-1181). Batocera
exposes both switches as ORIGINAL LOGOS and ORIGINAL FONTS.
Custom cursors and crosshairs load from arbitrary ini paths with no default
name and no built-in image (crossHair.c:142-186, customCursor.c:26-33).
files:
# -- NVIDIA Cg runtime --
- name: libCg2.so
system: sega-lindbergh
required: true
validation: [signature]
description: "NVIDIA Cg 2.0.0.12 runtime used to recompile the game shaders"
source_ref: "shaderPatches.c:1028-1108, 1110-1170"
note: >-
Searched at LIBCG_PATH, /app/lib32/libCg2.so, $APP_IMG_ROOT/usr/lib32/
libCg2.so, then ./libCg.so and $LINDBERGH_LOADER_CURRENT_DIR/libCg.so. The
loader reads 8 bytes at offset 0x226d84 and requires exactly "2.0.0.12";
a missing file, a different version string or a failed dlopen of
cgCreateContext, cgCreateProgram, cgGetProgramString, cgDestroyContext or
cgDestroyProgram each call exit(EXIT_FAILURE). Upstream vendors the build
as libs/libCg.so and both installers rename it to libCg2.so so it can sit
beside the Cg 3.1 library of the same original name that the games link.
- name: libCgGL.so
system: sega-lindbergh
required: true
description: "NVIDIA Cg 3.1 OpenGL runtime linked by the game binaries"
source_ref: "lindbergh.c:336-378, scripts/flatpak/com.github.lindberghloader.yml:181-189"
note: >-
Resolved by the dynamic linker for the game ELF through the
LD_LIBRARY_PATH the launcher builds, not opened by loader code. Upstream
takes it from Cg-3.1_April2012_x86.tgz and ships it in libs/Cg-3.1.zip.
Game dumps generally carry their own copy in the game directory, so the
Batocera generator only writes one when the file is absent or differs.
- name: libCg.so
system: sega-lindbergh
required: true
description: "NVIDIA Cg 3.1 runtime linked by the game binaries"
source_ref: "lindbergh.c:336-378, scripts/flatpak/com.github.lindberghloader.yml:181-189"
note: >-
Same origin and mechanism as libCgGL.so, and a different build from the
2.0.0.12 library the shader recompiler loads. Batocera keeps the two Cg
generations apart as libCg.so.harley and libCg.so.other and copies the
matching pair into the ROM directory per game, overwriting the dump's own
copy for the titles where it renders shadows and textures incorrectly.
# -- Lindbergh system libraries kept out of current distributions --
- name: libcrypto.so.0.9.7
system: sega-lindbergh
required: false
description: "OpenSSL 0.9.7 crypto library linked by the networked games"
source_ref: "lindbergh.c:336-378, scripts/flatpak/com.github.lindberghloader.yml:244"
note: >-
Vendored as libs/libcrypto.so.0.9.7 and installed into the runtime library
directory by both the AppImage and Flatpak builds. Resolved by the dynamic
linker for the game ELF.
- name: libssl.so.0.9.7
system: sega-lindbergh
required: false
description: "OpenSSL 0.9.7 TLS library linked by the networked games"
source_ref: "lindbergh.c:336-378, scripts/flatpak/com.github.lindberghloader.yml:245"
note: "Vendored as libs/libssl.so.0.9.7, paired with libcrypto.so.0.9.7."
- name: libopenal.so.0
system: sega-lindbergh
required: false
description: "OpenAL runtime preloaded for Quiz Answer x Answer"
source_ref: "lindbergh.c:22, 315-328, 882-890"
note: >-
When the ELF is q2satl_lind the launcher looks the file up through
findPreloadLibrary and appends it to LD_PRELOAD. Absence prints "You might
not get sound because libopenal.so.0 was not found" and the game still
runs. Vendored as libs/libopenal.so.0.
# -- Lindbergh boot program --
- name: segaboot
system: sega-lindbergh
required: false
crc32: "38d56318"
validation: [crc32]
description: "Sega Lindbergh boot and hardware check program, version 2.4"
source_ref: "lindbergh.c:696-698, 892-895, config.h:57-58, gameData.c:51-52"
note: >-
Run as "segaboot -t" under -s or --segaboot. detectGame() matches the
ELF CRC32 against the table, where 0x38d56318 is Segaboot 2.4 and
0xa518b18b the build carrying symbols. The comparison drives
identification only: an unknown CRC logs a warning and startup continues.
SEGABOOT 0x0027 and SEGABOOT_2_6 0x0030 in config.h are placeholders, not
checksums, and no table entry uses them.
# -- Lindbergh boot assets, replaced by built-in copies since 2.0.1 --
- name: logo.tga
system: sega-lindbergh
required: false
hle_fallback: true
description: "Lindbergh boot logo, read from /usr/lib/boot on the original system"
source_ref: "hook.c:655-667, 888-900"
note: >-
Read from the game directory only when DISABLE_BUILTIN_LOGOS is set.
Otherwise the logoLL array in resources/logo.h answers the read.
- name: logo_red.tga
system: sega-lindbergh
required: false
hle_fallback: true
description: "Lindbergh Red boot logo, read from /usr/lib/boot on the original system"
source_ref: "hook.c:669-681, 874-886"
note: >-
Read from the game directory only when DISABLE_BUILTIN_LOGOS is set.
Otherwise the logoLLRed array in resources/logo.h answers the read.
- name: SEGA_KakuGothic-DB-Roman_12.tga
system: sega-lindbergh
required: false
hle_fallback: true
description: "Sega Kaku Gothic console font texture"
source_ref: "hook.c:718-730, 902-914"
note: >-
Read from the game directory only when DISABLE_BUILTIN_FONT is set.
Otherwise the fontTGA array in resources/font.h answers the read.
- name: SEGA_KakuGothic-DB-Roman_12.abc
system: sega-lindbergh
required: false
hle_fallback: true
description: "Sega Kaku Gothic console font metrics"
source_ref: "hook.c:732-744, 916-928"
note: >-
Read from the game directory only when DISABLE_BUILTIN_FONT is set.
Otherwise the fontABC array in resources/font.h answers the read, with
ftell returning fontABClen.
- name: LucidaConsole_12.tga
system: sega-lindbergh
required: false
hle_fallback: true
description: "Lucida Console font texture"
source_ref: "hook.c:683-695"
note: >-
Read from the game directory only when DISABLE_BUILTIN_FONT is set.
Otherwise the fontTGA array in resources/font.h answers the read.
- name: LucidaConsole_12.abc
system: sega-lindbergh
required: false
hle_fallback: true
description: "Lucida Console font metrics"
source_ref: "hook.c:697-709"
note: >-
Read from the game directory only when DISABLE_BUILTIN_FONT is set.
Otherwise the fontABC array in resources/font.h answers the read.
# -- Lindbergh runtime configuration --
- name: lindbergrc
system: sega-lindbergh
required: false
description: "Lindbergh runtime configuration read by the games from /root"
source_ref: "hook.c:650-653"
note: >-
The fopen hook rewrites /root/lindbergrc to lindbergrc in the game
directory. The loader neither creates the file nor substitutes for it.
- name: gamecontrollerdb.txt
system: sega-lindbergh
category: game_data
required: false
description: "SDL gamepad mappings added on top of the built-in table"
source_ref: "lindbergh.c:415-430, 478, sdlInput.c:209-217"
note: >-
Loaded from the path given by -d or --controllerdb, passed through the
LINDBERGH_CONTROLS_DB_PATH environment variable. The built-in mappings in
gameControllerMappings.c load first and remain when no file is supplied.
+123
View File
@@ -0,0 +1,123 @@
emulator: Mandarine
type: standalone
core_classification: community_fork
source: "https://github.com/ptyfyre/mandarine-neo"
upstream: "https://github.com/ptyfyre/mandarine-neo"
profiled_date: "2026-08-08"
source_commit: "7f8ec960b6183be4350bca099d23ddd9fc7bcaa3"
core_version: "1.3.0"
display_name: "Nintendo - 3DS (Mandarine)"
cores:
- mandarine
- mandarine-qt
systems:
- nintendo-3ds
mode: standalone
notes: |
Citra fork, renamed Mandarine-Neo at release 1.3.0. External files live in
sysdata/ and nand/ under the user directory: user/ next to the executable when
that directory exists, otherwise Mandarine on Windows and macOS and
mandarine-emu on Linux, with Citra and citra-emu kept as legacy locations.
ref: src/common/common_paths.h:16-70, src/common/file_util.cpp:770-839
InitKeys reads boot9.bin then aes_keys.txt. Encrypted content needs one of the
two; a ROM without crypto reads neither.
ref: src/core/hw/aes/key.cpp:315-324, src/core/file_sys/ncch_container.cpp:200-210
Failure to derive a key or to find a seed marks the content undecryptable and
loading stops with ErrorEncrypted.
ref: src/core/file_sys/ncch_container.cpp:219-223, src/core/file_sys/ncch_container.cpp:236-280, src/core/file_sys/ncch_container.cpp:347-349
System archives resolve to the NAND title tree. Shared font, Mii data, country
list and bad word list fall back to open-source replacements built into the
binary when the title is absent.
ref: src/core/file_sys/archive_ncch.cpp:126-179, externals/open_source_archives/Readme.md
The embedded shared font only answers title low ID 0x00014002. CHN, KOR and TWN
resolve to 0x00014102, 0x00014202 and 0x00014302, which fall through to
shared_font.bin and then to ErrorSystemFiles, reported as recoverable.
ref: src/core/hle/service/apt/apt.cpp:195-213, src/core/hle/service/apt/apt.cpp:276-291, src/mandarine_qt/main.cpp:3209-3215
ClCertA is read from NAND title 0x0004001B00010002 and its ctr-common-1-cert.bin
and ctr-common-1-key.bin members are decrypted with the KeySlot 0x0D normal key.
Both the title and the key slot are needed for authenticated HTTPS.
ref: src/core/hle/service/http/http_c.cpp:1963-2036
System titles are downloaded and installed in-app from the Nintendo CDN, so the
NAND title tree is not user-supplied.
ref: src/mandarine_qt/configuration/configure_system.cpp:672-678, src/core/hle/service/am/am.cpp:536, src/core/nus_download.cpp:12-13
DumpKeys.gm9, a GodMode9 script producing aes_keys.txt and seeddb.bin, ships in
the tree and documents sysdata/ as their destination.
ref: dist/dumpkeys/README.md, dist/dumpkeys/DumpKeys.gm9
The plugin loader scans sdmc/luma/plugins/<title id>/ for any .3gx file and
falls back to sdmc/luma/plugins/default.3gx. Plugins carry no fixed identity.
ref: src/core/hle/service/plgldr/plgldr.cpp:112-146
mcu.dat holds per-installation MCU state that the emulator writes itself when
the file is absent or carries the wrong magic.
ref: src/core/hle/service/cfg/cfg.cpp:734-756, src/core/hle/service/cfg/cfg.h:425-439
sector0x96.bin is defined but read by no code path.
ref: src/common/common_paths.h:70
files:
- name: boot9.bin
path: sysdata/boot9.bin
system: nintendo-3ds
required: false
size: 65536
validation: [size]
note: "AES key section read at offset 55760, RSA modulus and exponent at 0xB3E0 and 0xB4E0"
source_ref: "src/core/hw/aes/key.cpp:137-206, src/core/hw/rsa/rsa.cpp:49-80, src/common/common_paths.h:69"
- name: aes_keys.txt
path: sysdata/aes_keys.txt
system: nintendo-3ds
required: false
note: "key slots, common keys, DLP and NFC key Ys and NFC secrets, one per line"
source_ref: "src/core/hw/aes/key.cpp:208-311, src/common/common_paths.h:68"
- name: seeddb.bin
path: sysdata/seeddb.bin
system: nintendo-3ds
required: false
note: "game seed database for 9.6+ titles; an empty database is written when the file is absent"
source_ref: "src/core/file_sys/seed_db.cpp:12-58"
- name: shared_font.bin
path: sysdata/shared_font.bin
system: nintendo-3ds
required: false
hle_fallback: true
note: "legacy path, tried after the shared font system archive; decompressed BCFNT with the 0x80 byte APT header"
source_ref: "src/core/hle/service/apt/apt.cpp:254-270, src/common/common_paths.h:67"
- name: CTCert.bin
path: sysdata/CTCert.bin
system: nintendo-3ds
required: false
size: 384
validation: [size]
note: "console client certificate; signature type must be 0x010005 and the issuer one of the two Nintendo CA G3 strings"
source_ref: "src/core/hle/service/am/am.cpp:2427-2454, src/core/hle/service/am/am.cpp:83-93, src/core/hle/service/am/am.h:95"
- name: SecureInfo_A
path: nand/rw/sys/SecureInfo_A
system: nintendo-3ds
required: false
size: 273
validation: [size]
note: "console region and serial number; loaded on a size check alone, and paired with LocalFriendCodeSeed_B"
source_ref: "src/core/hle/service/cfg/cfg.cpp:689-709, src/core/hle/service/cfg/cfg.h:180-186"
- name: LocalFriendCodeSeed_B
path: nand/rw/sys/LocalFriendCodeSeed_B
system: nintendo-3ds
required: false
size: 272
validation: [size]
note: "friend code generation seed; loaded on a size check alone, and paired with SecureInfo_A"
source_ref: "src/core/hle/service/cfg/cfg.cpp:711-732, src/core/hle/service/cfg/cfg.h:188-193"
+441
View File
@@ -0,0 +1,441 @@
emulator: Mednafen
type: standalone
core_classification: other
source: "https://mednafen.github.io/"
upstream: "https://mednafen.github.io/"
profiled_date: "2026-08-08"
core_version: "1.32.1"
display_name: "Mednafen"
cores: [mednafen]
mode: standalone
systems:
- apple-ii
- apple-iie
- atari-lynx
- bandai-wswan
- bandai-wswanc
- nec-pc-engine
- nec-pc-engine-cd
- nec-pcfx
- nec-supergrafx
- nintendo-fds
- nintendo-gb
- nintendo-gbc
- nintendo-gba
- nintendo-nes
- nintendo-snes
- nintendo-virtualboy
- sega-gamegear
- sega-mastersystem
- sega-megacd
- sega-megadrive
- sega-saturn
- sega-stv
- snk-ngp
- snk-ngpc
- sony-playstation
notes: |
Multi-system emulator by the Mednafen Team, the upstream of the beetle_* and
mednafen_* libretro cores, which are forks of individual modules. A module is
picked automatically from the file, or forced with -force_module <name>.
Every firmware file resolves to <base>/<filesys.path_firmware>/<name>, with
filesys.path_firmware defaulting to "firmware" and the base directory being
~/.mednafen on Unix. An absolute path in either the setting or the per-file
path setting bypasses that. A file placed directly in the base directory is
still found, as a pre-0.9.0 compatibility fallback.
ref: general.cpp:277-300, mednafen.cpp:124
Modules compiled by default that load no external file: gb, snes, snes_faust,
vb, wswan, ngp, sms, gg. The snes module (bsnes 0.059) has every coprocessor
ROM compiled in; snes_faust synthesises the DSP-1 and CX4 data ROMs
(cart/dsp1-datarom-synth.h, cart/cx4.cpp:58); ngp installs a reverse
engineered HLE BIOS (ngp/bios.cpp:182-239).
The nes_new module is declared but never built: configure.ac:392-393 keeps
both the AC_DEFINE and the AM_CONDITIONAL commented out.
cdplay (audio CD), ssfplay (Saturn SSF) and sasplay (Sega Model 2/3 SCSP
sound) are player modules, not system emulation. sasplay reads the board's
sound ROM set from the directory of the loaded file, never from the firmware
directory (sasplay.cpp:869-886), so those ROMs are game content.
Two settings name an external file that is not firmware data. wswan.excomm.path
("wonderfence") is an executable forked and execlp'd for link comms
(comm.cpp:56-65). Custom palettes resolve to <gamebase>.pal,
<gamebase>.<md5>.pal or <shortname>.pal (general.cpp:303-322) and are
user-authored.
ES-DE invokes the binary as %EMULATOR_MEDNAFEN% -force_module <module> %ROM%
and declares no BIOS of its own.
files:
# --- apple2 ---
# apple2.model defaults to "ii_ii+" (apple2.cpp:3137). Under that model the
# system firmware is Applesoft and the ROM card is Integer (apple2.cpp:1868-1870),
# but the ROM card is skipped while the language card is active, which 64 KiB
# of RAM enables (apple2.cpp:2238, 2362). Loading a DOS 3.2 disk forces RAM to
# 48 KiB and the Disk II firmware to 13-sector (apple2.cpp:2000-2006), which
# brings both the ROM card and the 13-sector pair into play with no user action.
- name: "apple2-asoft-auto.rom"
system: apple-ii
description: "Apple II+ AppleSoft BASIC and Autostart system ROMs, concatenated (341-0011, 341-0012, 341-0013, 341-0014, 341-0015, 341-0020)"
required: true
min_size: 12288
sha256: "fc3e9d41e9428534a883df5aa10eb55b73ea53d2fcbb3ee4f39bed1b07a82905"
validation: [size]
source_ref: "apple2/apple2.cpp:1342-1350, 1869, 2282, 1473-1476"
note: "System firmware for model ii+, ROM card for model ii. Read as 0x3000 bytes at $D000. The hash is in the ROMDB table and only labels the dump in the startup log; nothing rejects a mismatch."
- name: "apple2-int-auto.rom"
system: apple-ii
description: "Apple II Integer BASIC and Autostart system ROMs, concatenated (341-0001, 341-0002, 341-0003, 341-0020)"
required: true
min_size: 8192
sha256: "cb52b212a62f808c2f59600b2823491ee12bd91cab8e0260fe34b5f14c47552f"
validation: [size]
source_ref: "apple2/apple2.cpp:1352-1363, 1860, 2284, 2392, 1468-1471"
note: "System firmware for model ii, ROM card for model ii+. Read as 0x2000 bytes at $E000, the $D000-$DFFF window stays unmapped. Reached under the default model when a DOS 3.2 disk drops RAM to 48 KiB."
- name: "apple2e.rom"
system: apple-iie
description: "Apple IIe BASIC and system ROMs, concatenated (342-0135-A, 342-0134-A)"
required: true
min_size: 16384
sha256: "1fb812584c6633fa16b77b20915986ed1178d1e6fc07a647f7ee8d4e6ab9d40b"
validation: [size]
source_ref: "apple2/apple2.cpp:1320-1325, 2266, 1478-1481"
note: "Loaded unconditionally when apple2.model is iie. Read as 0x4000 bytes at $C000."
- name: "apple2e-video.rom"
system: apple-iie
description: "Apple IIe video (character generator) ROM, 342-0133-A"
required: true
min_size: 4096
sha256: "ed5bdd4afa509134e85f1d020685af7ff50e279226eb869a17825b471cc1634c"
validation: [size]
source_ref: "apple2/apple2.cpp:2299-2324, 1488-1491"
note: "Loading aborts on sha256 0d54ff735c060c55d54b8a22d0112af78a6465ce9c9aae4a865d207e5c8ff1e7, a known bad dump (apple2.cpp:2319-2320). No positive hash check."
- name: "apple2e-kb.rom"
system: apple-iie
description: "Apple IIe keyboard ASCII mapping ROM, 342-0132-B"
required: true
min_size: 2048
sha256: "68198ae95923926b0307893d03ec286f00822c93a0b6dabfca565f6718dd5a56"
validation: [size]
source_ref: "apple2/apple2.cpp:2331-2351, 1498-1506"
note: "The revised IIe dump 342-0132-C, sha256 fbb9620e01f4f728e5a8ba86544900978d7803f6a7d577d384e288dfed9a4907, is equally recognised at this filename. Read as 0x800 bytes."
- name: "apple2e-enh.rom"
system: apple-iie
description: "Enhanced Apple IIe BASIC and system ROMs, concatenated (342-0304-A, 342-0303-A, 342-0349-B)"
required: true
min_size: 16384
sha256: "aab38a03ca8deabbb2f868733148c2efd6f655a59cd9c5d058ef3e0b7aa86a1a"
validation: [size]
source_ref: "apple2/apple2.cpp:1327-1332, 2264, 1483-1486"
note: "Loaded unconditionally when apple2.model is iie_enh. Read as 0x4000 bytes at $C000."
- name: "apple2e-enh-video.rom"
system: apple-iie
description: "Enhanced Apple IIe video (character generator) ROM, 342-0265-A"
required: true
min_size: 4096
sha256: "52c3b87900ac939f6525402cab1ccfd8f8259290fc6df54da48fb4c98ae3ed0f"
validation: [size]
source_ref: "apple2/apple2.cpp:2299-2324, 1493-1496"
note: "Same bad-dump rejection as apple2e-video.rom."
- name: "apple2e-enh-kb.rom"
system: apple-iie
description: "Enhanced Apple IIe keyboard ASCII mapping ROM, 341-0132-D"
required: true
min_size: 2048
sha256: "a1989da84ea4381d309e7e08783771f884e913236b9bcc71c3d649aacf76537a"
validation: [size]
source_ref: "apple2/apple2.cpp:2331-2351, 1508-1511"
- name: "disk2-16boot.rom"
system: apple-ii
description: "Disk II interface 16-sector P5 boot ROM, 341-0027"
required: true
size: 256
sha256: "de1e3e035878bab43d0af8fe38f5839c527e9548647036598ee6fe7ec74d2a7d"
validation: [size, sha256]
source_ref: "apple2/apple2.cpp:2119, 2127-2137, 1620"
note: "Default Disk II firmware. The sha256 is enforced: a mismatch throws \"Firmware data ... is corrupt or otherwise wrong\"."
- name: "disk2-16seq.rom"
system: apple-ii
description: "Disk II interface 16-sector P6 sequencer ROM, 341-0028"
required: true
size: 256
sha256: "e5e30615040567c1e7a2d21599681f8dac820edbdcda177b816a64d74b3a12f2"
validation: [size, sha256]
source_ref: "apple2/apple2.cpp:2120, 2127-2137, 1620"
note: "P6 sequencer dumps taken linearly through the P5 socket must have A7 swapped with A5, D4 with D7 and D5 with D6 before Mednafen accepts them. P5 boot ROMs need no such rearranging."
- name: "disk2-13boot.rom"
system: apple-ii
description: "Disk II interface 13-sector P5 boot ROM, 341-0009"
required: true
size: 256
sha256: "2d2599521fc5763d4e8c308c2ee7c5c4d5c93785b8fb9a4f7d0381dfd5eb60b6"
validation: [size, sha256]
source_ref: "apple2/apple2.cpp:2113, 2127-2137, 2000-2006"
note: "Selected automatically for DOS 3.2 disks, or by disk2.firmware 13sec in a MAI file."
- name: "disk2-13seq.rom"
system: apple-ii
description: "Disk II interface 13-sector P6 sequencer ROM, 341-0010"
required: true
size: 256
sha256: "4234aed053c622b266014c4e06ab1ce9e0e085d94a28512aa4030462be0a3cb9"
validation: [size, sha256]
source_ref: "apple2/apple2.cpp:2114, 2127-2137, 2000-2006"
note: "Same P6 rearranging as disk2-16seq.rom. A linear P5-socket dump hashes to 383c55f5333cbfde39dd41528186631e5aca2eddfec30716344f03b6a4d44655 and is rejected."
# --- lynx ---
- name: "lynxboot.img"
system: atari-lynx
description: "Atari Lynx boot ROM"
required: true
min_size: 512
validation: [size]
source_ref: "lynx/system.cpp:101, lynx/rom.cpp:55-74"
note: "Loaded for every cartridge, before the cart itself. Throws if the file is under 512 bytes; the first 512 bytes are used. No hash check and no HLE fallback."
# --- nes ---
- name: "disksys.rom"
system: nintendo-fds
description: "Famicom Disk System BIOS"
required: true
min_size: 8192
validation: [size]
source_ref: "nes/fds.cpp:603-617"
note: "Read as 8192 bytes. An iNES header is detected and skipped, with a further 16384-byte skip when the header declares 2 PRG banks."
- name: "gg.rom"
system: nintendo-nes
description: "Game Genie ROM image"
required: false
min_size: 4352
source_ref: "nes/cart.cpp:570-597, nes/nes.cpp:298-299, nes/nes.cpp:454-455"
note: "Loaded only when nes.gg is enabled; that setting defaults to 0. Path comes from nes.ggrom. An iNES image is read as 4096 bytes of PRG plus 256 bytes of CHR taken 16384 bytes further in; a raw image is read as 4352 contiguous bytes."
# --- pce and pce_fast ---
- name: "syscard3.pce"
system: nec-pc-engine-cd
description: "CD-ROM System Card 3.0"
required: true
size: 262144
source_ref: "pce/pce.cpp:647-656, 1103, pce_fast/pce.cpp:480-487, 647"
note: "Default of both pce.cdbios and pce_fast.cdbios. The pce module imposes no size constraint, the file length drives the bank mapping (pce/huc.cpp:308-372). The pce_fast module reads exactly 262144 bytes and skips a 512-byte copier header when the file size has bit 9 set (pce_fast/huc.cpp:296-301). Arcade Card mode extends the same image, it does not need another file."
- name: "gecard.pce"
system: nec-pc-engine-cd
description: "Games Express CD Card BIOS"
required: false
size: 262144
source_ref: "pce/pce.cpp:514-550, 647-648, 1104"
note: "Default of pce.gecdbios, used instead of pce.cdbios when DetectGECD recognises the disc. The pce_fast module has no equivalent setting."
# --- pcfx ---
- name: "pcfx.rom"
system: nec-pcfx
description: "PC-FX BIOS"
required: true
size: 1048576
validation: [size]
source_ref: "pcfx/pcfx.cpp:605-618, 1115"
note: "Default of pcfx.bios. Must be exactly 1048576 bytes or loading throws. No hash check."
- name: "FX-SCSI ROM"
system: nec-pcfx
description: "PC-FX FX-SCSI expansion ROM"
required: false
min_size: 524288
source_ref: "pcfx/pcfx.cpp:620-632, 1116"
note: "Path comes from pcfx.fxscsi, which defaults to \"0\" and is skipped for the values 0, none and the empty string. Mednafen names no default file and opens the path with a bare FileStream, so it is not resolved under the firmware directory. Marked developer-only upstream. 524288 bytes are read and mapped at 0x80780000."
# --- psx ---
- name: "scph5500.bin"
system: sony-playstation
description: "SCPH-5500 / v3.0J BIOS"
region: [japan]
required: true
size: 524288
sha256: "9c0421858e217805f4abe18698afea8d5aa36ff0727eb8484944e00eb5e7eadb"
validation: [size, sha256]
source_ref: "psx/psx.cpp:1764-1769, 1773-1781, 2373, 251"
note: "Default of psx.bios_jp. Size must be exactly 524288. With psx.bios_sanity on, which is the default, a hash listed as a bad dump or as belonging to another region throws; an unknown hash only logs a warning."
- name: "scph5501.bin"
system: sony-playstation
description: "SCPH-5501 / v3.0A BIOS"
region: [north-america]
required: true
size: 524288
sha256: "11052b6499e466bbf0a709b1f9cb6834a9418e66680387912451e971cf8a1fef"
validation: [size, sha256]
source_ref: "psx/psx.cpp:1764-1769, 1773-1781, 2374, 252"
note: "Default of psx.bios_na. The BIOS table carries 24 recognised dumps in total, two of them flagged bad (psx.cpp:228-268)."
- name: "scph5502.bin"
system: sony-playstation
description: "SCPH-5502 / v3.0E BIOS"
region: [europe]
required: true
size: 524288
sha256: "1faaa18fa820a0225e488d9f086296b8e6c46df739666093987ff7d8fd352c09"
validation: [size, sha256]
source_ref: "psx/psx.cpp:1764-1769, 1773-1781, 2375, 253"
note: "Default of psx.bios_eu."
# --- ss (Saturn and ST-V) ---
# ss.bios_jp serves the JP and Asia NTSC areas, ss.bios_na_eu every other
# area (ss.cpp:1431-1434). With ss.bios_sanity on, which is the default, the
# five hashes below are checked three ways: a file carrying one of these
# names must hash to the matching digest, a recognised hash must belong to
# the area being emulated, and a Saturn hash is refused for ST-V and the
# reverse (ss.cpp:1447-1492).
- name: "sega_101.bin"
system: sega-saturn
description: "Saturn BIOS v1.01 (Japan)"
region: [japan, asia-ntsc]
required: true
size: 524288
sha256: "dcfef4b99605f872b6c3b6d05c045385cdea3d1b702906a0ed930df7bcb7deac"
validation: [size, sha256]
source_ref: "ss/ss.cpp:1431-1434, 1437-1445, 2441, 1459"
note: "Default of ss.bios_jp."
- name: "mpr-17933.bin"
system: sega-saturn
description: "Saturn BIOS (North America and Europe)"
region: [north-america, europe, south-korea, asia-pal, brazil, latin-america]
required: true
size: 524288
sha256: "96e106f740ab448cf89f0dd49dfbac7fe5391cb6bd6e14ad5e3061c13330266f"
validation: [size, sha256]
source_ref: "ss/ss.cpp:1431-1434, 1437-1445, 2442, 1461"
note: "Default of ss.bios_na_eu."
- name: "sega1003.bin"
system: sega-saturn
description: "Saturn BIOS v1.003 (Japan)"
region: [japan, asia-ntsc]
required: false
size: 524288
sha256: "cc1e1b7f88f1c6e6fc35994bae2c2292e06fdae258c79eb26a1f1391e72914a8"
validation: [size, sha256]
source_ref: "ss/ss.cpp:1457, 1447-1492"
note: "Recognised alternative for ss.bios_jp."
- name: "sega_100.bin"
system: sega-saturn
description: "Saturn BIOS v1.00 (Japan)"
region: [japan, asia-ntsc]
required: false
size: 524288
sha256: "ae4058627bb5db9be6d8d83c6be95a4aa981acc8a89042e517e73317886c8bc2"
validation: [size, sha256]
source_ref: "ss/ss.cpp:1458, 1447-1492"
note: "Recognised alternative for ss.bios_jp."
- name: "sega_100a.bin"
system: sega-saturn
description: "Saturn BIOS v1.00a (North America and Europe)"
region: [north-america, europe, south-korea, asia-pal, brazil, latin-america]
required: false
size: 524288
sha256: "87293093fad802fcff31fcab427a16caff1acbc5184899b8383b360fd58efb73"
validation: [size, sha256]
source_ref: "ss/ss.cpp:1460, 1447-1492"
note: "Recognised alternative for ss.bios_na_eu."
- name: "epr-20091.ic8"
system: sega-stv
description: "ST-V BIOS (Japan)"
region: [japan, asia-ntsc]
required: true
size: 524288
validation: [size]
source_ref: "ss/ss.cpp:1420-1428, 1437-1445, 2444"
note: "Default of ss.bios_stv_jp. ST-V dumps are absent from the sanity table, so only the 524288-byte size is enforced. Loaded byte-swapped the other way round from a Saturn BIOS (ss.cpp:1495-1499)."
- name: "epr-17952a.ic8"
system: sega-stv
description: "ST-V BIOS (North America)"
region: [north-america]
required: true
size: 524288
validation: [size]
source_ref: "ss/ss.cpp:1420-1428, 1437-1445, 2445"
note: "Default of ss.bios_stv_na, used for every area that is not Japan, Asia NTSC or PAL Europe."
- name: "epr-17954a.ic8"
system: sega-stv
description: "ST-V BIOS (Europe)"
region: [europe]
required: true
size: 524288
validation: [size]
source_ref: "ss/ss.cpp:1420-1428, 1437-1445, 2446"
note: "Default of ss.bios_stv_eu."
- name: "mpr-18811-mx.ic1"
system: sega-saturn
description: "King of Fighters '95 ROM cart"
required: false
min_size: 2097152
source_ref: "ss/ss.cpp:1332, 1389-1397, 2477, ss/cart/rom.cpp:37-48"
note: "Default of ss.cart.kof95_path. Loaded when the cart type resolves to KOF95, which ss.cart auto does from the internal game database. 0x200000 bytes are read and byte-swapped."
- name: "mpr-19367-mx.ic1"
system: sega-saturn
description: "Ultraman: Hikari no Kyojin Densetsu ROM cart"
required: false
min_size: 2097152
source_ref: "ss/ss.cpp:1333, 1389-1397, 2478, ss/cart/rom.cpp:37-48"
note: "Default of ss.cart.ultraman_path. Same loading path as the KoF 95 cart."
- name: "satar4mp.bin"
system: sega-saturn
description: "Action Replay 4M Plus firmware"
required: false
min_size: 262144
source_ref: "ss/ss.cpp:1334, 1389-1397, 2479, ss/cart/ar4mp.cpp:125-140"
note: "Default of ss.cart.satar4mp_path. 0x40000 bytes are read into the flash array and byte-swapped. The setting is hidden from the documentation and the cart is marked unfinished upstream, pending CPU UBC emulation (ar4mp.cpp:22-24)."
# --- md ---
- name: "us_scd1_9210.bin"
system: sega-megacd
description: "Sega CD BIOS"
required: true
size: 131072
validation: [size]
source_ref: "md/cd/cd.cpp:894-915, 971-989, md/system.cpp:630-641, 801, 755"
note: "Default of md.cdbios. LoadCD is wired into the module and reaches MDCD_Init, which throws unless the file is exactly 131072 bytes. The setting's own help text states that Sega CD emulation is currently nonfunctional."
# --- gba ---
- name: "GBA BIOS ROM image"
system: nintendo-gba
description: "Game Boy Advance BIOS"
required: false
hle_fallback: true
size: 16384
validation: [size]
source_ref: "gba/GBA.cpp:2470-2494, 3278, 772"
note: "Path comes from gba.bios, which defaults to the empty string and is skipped for the values 0, none and the empty string, so Mednafen names no default file. When set, the file must be exactly 16384 bytes. Otherwise the built-in HLE BIOS myROM is used, and the setting is ignored outright for GSF playback."