feat: document the jgenesis libretro build

This commit is contained in:
Abdessamad Derraz committed 2026-11-09 07:38:43 +01:00
1 parent 5ecf318c4a
commit daae431dd3
1 file changed
+74 -21
+74 -21
View File
@@ -1,15 +1,26 @@
emulator: jgenesis
type: standalone
type: standalone + libretro
core_classification: other
source: "https://github.com/jsgroth/jgenesis"
source:
standalone: "https://github.com/jsgroth/jgenesis"
libretro: "https://github.com/RobLoach/libretro-jgenesis"
upstream: "https://github.com/jsgroth/jgenesis"
profiled_date: "2026-08-08"
source_commit: "0a00c47ba7a16bd6e77ef7e0b6c8fab2fc603cba"
core_version: "0.14.1"
profiled_date: "2026-11-09"
source_commit:
standalone: "0a00c47ba7a16bd6e77ef7e0b6c8fab2fc603cba"
libretro: "c92ff9269594b44e2f9ecfca5ff943e5bea49fb7"
core_version:
standalone: "0.14.1"
libretro: "0.14.1"
version_basis:
kind: file
path: "Cargo.toml"
pattern: 'version\s+=\s+"([^"]+)'
standalone:
kind: file
path: "Cargo.toml"
pattern: 'version\s+=\s+"([^"]+)'
libretro:
kind: file
path: "Cargo.toml"
pattern: 'version\s+=\s+"([^"]+)'
display_name: "Multi-System (jgenesis)"
cores:
- jgenesis
@@ -27,7 +38,6 @@ systems:
- nintendo-gba
- nec-pc-engine
- nec-pc-engine-cd
mode: standalone
notes: |
Multi-system emulator written in Rust by James Groth. One binary covers
@@ -81,6 +91,20 @@ notes: |
tested for existence only, to keep the settings beside the executable
(frontend/jgenesis-native-config/src/paths.rs:57-64).
The libretro build is a separate frontend, libretro-jgenesis, that
builds the jgenesis backend crates at the same revision 0a00c47, the
rev its Cargo.toml pins for each of them. It opens fixed names in the
system directory, or beside the content when the frontend gives none:
bios_CD_U.bin, bios_CD_E.bin or bios_CD_J.bin by region, gba_bios.bin,
syscard3.pce and the seven SNES coprocessor ROMs. The Sega CD region is
the core option, else the disc header, else Americas. A missing BIOS
fails the load, except for a Mode 1 cartridge loaded alone, which
runs without the Sega CD. It never passes a Master System, Game Gear or Game Boy boot
ROM to the backend, and reads no palette file.
ref: src/load.rs:30-34, src/load.rs:48-56, src/load.rs:140-144,
src/load.rs:329-336, src/load.rs:386-400, src/load.rs:413,
src/load.rs:445
files:
# -------------------------------------------------------
# Sega CD
@@ -92,7 +116,9 @@ files:
required: true
size: 131072
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:43-53 (read), frontend/jgenesis-native-driver/src/mainloop/genesis.rs:234-240 (bios_path_for_region), backend/segacd-core/src/api.rs:77-79 (BIOS_LEN check)"
source_ref:
standalone: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:43-53 (read), frontend/jgenesis-native-driver/src/mainloop/genesis.rs:234-240 (bios_path_for_region), backend/segacd-core/src/api.rs:77-79 (BIOS_LEN check)"
libretro: "src/load.rs:30, src/load.rs:48-56, src/load.rs:329-349"
note: "Selected when the disc region is Americas, and for every region when per_region_bios is off."
- name: "bios_CD_E.bin"
@@ -102,7 +128,9 @@ files:
required: true
size: 131072
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:234-240 (eu_bios_path), backend/segacd-core/src/api.rs:77-79"
source_ref:
standalone: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:234-240 (eu_bios_path), backend/segacd-core/src/api.rs:77-79"
libretro: "src/load.rs:31, src/load.rs:48-56, src/load.rs:329-349"
note: "Selected when the header area at 0x1F0 holds E and not U or J, as Australian discs do (backend/genesis-components/src/cartridge.rs:362-377, backend/segacd-core/src/api.rs:339-369)."
- name: "bios_CD_J.bin"
@@ -112,7 +140,9 @@ files:
required: true
size: 131072
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:234-240 (jp_bios_path), backend/segacd-core/src/api.rs:77-79"
source_ref:
standalone: "frontend/jgenesis-native-driver/src/mainloop/genesis.rs:234-240 (jp_bios_path), backend/segacd-core/src/api.rs:77-79"
libretro: "src/load.rs:32, src/load.rs:48-56, src/load.rs:329-349"
# -------------------------------------------------------
# Game Boy Advance
@@ -123,7 +153,9 @@ files:
required: true
size: 16384
validation: [size]
source_ref: "frontend/jgenesis-native-driver/src/mainloop/gba.rs:32-36 (GbaNoBios), backend/gba-core/src/memory.rs:10, 102-107 (BIOS_ROM_LEN check)"
source_ref:
standalone: "frontend/jgenesis-native-driver/src/mainloop/gba.rs:32-36 (GbaNoBios), backend/gba-core/src/memory.rs:10, 102-107 (BIOS_ROM_LEN check)"
libretro: "src/load.rs:33, src/load.rs:48-56, src/load.rs:450"
note: "Every GBA load fails without it. skip_bios_animation only skips the intro, the BIOS is still mapped and read for SWI calls."
# -------------------------------------------------------
@@ -135,7 +167,9 @@ files:
description: "NEC uPD77C25 firmware for DSP-1"
required: true
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"
source_ref:
standalone: "backend/snes-core/src/memory/cartridge.rs:336-353 (MissingDsp1Rom), backend/snes-coprocessors/src/upd77c25.rs:28-31,35-38,382-390"
libretro: "src/load.rs:477-491"
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"
@@ -144,7 +178,9 @@ files:
description: "NEC uPD77C25 firmware for DSP-2"
required: true
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"
source_ref:
standalone: "backend/snes-core/src/memory/cartridge.rs:340-342 (MissingDsp2Rom), :929 (Dungeon Master CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
libretro: "src/load.rs:477-491"
- name: "dsp3.rom"
aliases: ["SNES_dsp3.rom"]
@@ -152,7 +188,9 @@ files:
description: "NEC uPD77C25 firmware for DSP-3"
required: true
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"
source_ref:
standalone: "backend/snes-core/src/memory/cartridge.rs:343-345 (MissingDsp3Rom), :931 (SD Gundam GX CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
libretro: "src/load.rs:477-491"
- name: "dsp4.rom"
aliases: ["SNES_dsp4.rom"]
@@ -160,7 +198,9 @@ files:
description: "NEC uPD77C25 firmware for DSP-4"
required: true
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"
source_ref:
standalone: "backend/snes-core/src/memory/cartridge.rs:346-348 (MissingDsp4Rom), :933 (Top Gear 3000 CRC32 match), backend/snes-coprocessors/src/upd77c25.rs:382-390"
libretro: "src/load.rs:477-491"
- name: "st010.rom"
aliases: ["SNES_st010.rom"]
@@ -168,7 +208,9 @@ files:
description: "NEC uPD96050 firmware for ST010"
required: true
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"
source_ref:
standalone: "backend/snes-core/src/memory/cartridge.rs:294-305 (MissingSt010Rom), :938-943 (variant detection), backend/snes-coprocessors/src/upd77c25.rs:28-31,35-38"
libretro: "src/load.rs:477-491"
note: "0xC000 program plus 0x1000 data. Used by F1 ROC II."
- name: "st011.rom"
@@ -177,7 +219,9 @@ files:
description: "NEC uPD96050 firmware for ST011"
required: true
size: 53248
source_ref: "backend/snes-core/src/memory/cartridge.rs:298-300 (MissingSt011Rom), :938-943 (Hayazashi Nidan Morita Shougi CRC32 match)"
source_ref:
standalone: "backend/snes-core/src/memory/cartridge.rs:298-300 (MissingSt011Rom), :938-943 (Hayazashi Nidan Morita Shougi CRC32 match)"
libretro: "src/load.rs:477-491"
- name: "st018.rom"
aliases: ["SNES_st018.rom"]
@@ -186,7 +230,9 @@ files:
required: true
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)"
source_ref:
standalone: "backend/snes-core/src/memory/cartridge.rs:310-320 (MissingSt018Rom), backend/snes-coprocessors/src/st018.rs:18-22,346-352 (TOTAL_ROM_LEN check)"
libretro: "src/load.rs:477-491"
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."
# -------------------------------------------------------
@@ -196,13 +242,16 @@ files:
system: nec-pc-engine-cd
description: "Super CD-ROM² System Card 3.0"
required: true
source_ref: "frontend/jgenesis-native-driver/src/mainloop/pce.rs:29-50 (PceCdNoBios), frontend/jgenesis-native-config/src/pce.rs:15, 44, backend/pce-core/src/cartridge.rs:84-101, config/pce-config/src/lib.rs:60-65"
source_ref:
standalone: "frontend/jgenesis-native-driver/src/mainloop/pce.rs:29-50 (PceCdNoBios), frontend/jgenesis-native-config/src/pce.rs:15, 44, backend/pce-core/src/cartridge.rs:84-101, config/pce-config/src/lib.rs:60-65"
libretro: "src/load.rs:34, src/load.rs:48-56, src/load.rs:317"
note: "Every disc fails to load without it. One slot accepts any System Card dump, no size or content check, but the default Arcade Card and the Super System Card need a v3.0 ROM. A file over 512 KiB is mapped as a plain HuCard."
# -------------------------------------------------------
# Master System / Game Gear
# -------------------------------------------------------
- name: "bios.sms"
mode: standalone
system: sega-mastersystem
description: "Master System BIOS"
required: false
@@ -210,6 +259,7 @@ files:
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"
mode: standalone
system: sega-gamegear
description: "Game Gear BIOS"
required: false
@@ -220,6 +270,7 @@ files:
# Game Boy / Game Boy Color
# -------------------------------------------------------
- name: "dmg_boot.bin"
mode: standalone
system: nintendo-gb
description: "Game Boy boot ROM"
required: false
@@ -229,6 +280,7 @@ files:
note: "Loaded only when dmg_boot_rom is enabled, off by default. Without it the CPU starts post-boot."
- name: "cgb_boot.bin"
mode: standalone
system: nintendo-gbc
description: "Game Boy Color boot ROM"
required: false
@@ -242,6 +294,7 @@ files:
# NES
# -------------------------------------------------------
- name: "nes.pal"
mode: standalone
aliases: ["nespalette.pal"]
system: nintendo-nes
description: "External NES color palette"