feat: re-profile 22 emulators, refactor validation to common.py

batch re-profiled nekop2 through pokemini. mupen64plus renamed to
mupen64plus_next. new profiles: nes, mupen64plus_next.
validation functions (_build_validation_index, check_file_validation)
consolidated in common.py — single source of truth for verify.py
and generate_pack.py. pipeline 100% consistent on all 6 platforms.
This commit is contained in:
Abdessamad Derraz
2026-03-24 22:31:22 +01:00
parent 94000bdaef
commit 0543165ed2
33 changed files with 1449 additions and 783 deletions

View File

@@ -1,9 +1,12 @@
emulator: PicoDrive
type: libretro
core_classification: official_port
source: "https://github.com/libretro/picodrive"
profiled_date: "2026-03-18"
upstream: "https://github.com/irixxxx/picodrive"
profiled_date: "2026-03-24"
core_version: "1.99"
display_name: "Sega - MS/GG/MD/CD/32X (PicoDrive)"
cores: [picodrive]
systems:
- sega-megadrive
- sega-genesis
@@ -13,33 +16,48 @@ systems:
- sega-mastersystem
- sega-gamegear
- sega-sg1000
- sega-sc3000
- sega-pico
notes: |
PicoDrive is a fast Mega Drive / Genesis emulator with Mega CD, 32X, Master
System, Game Gear, SG-1000 and Sega Pico support.
System, Game Gear, SG-1000, SC-3000 and Sega Pico support. The libretro port
is part of the PicoDrive source tree (platform/libretro/).
Mega CD / Sega CD games require a region-matching BIOS file. The core searches
the system directory for each name in order, trying .bin then .zip extension,
and uses the first file found. If no BIOS is found, CD games fail to load with
PM_BAD_CD_NO_BIOS. MSU-MD games can run without BIOS.
BIOS filename search order (platform/libretro/libretro.c:1265-1329):
BIOS filename search order (platform/libretro/libretro.c:1264-1328):
US: us_scd2_9306, SegaCDBIOS9303, us_scd1_9210, bios_CD_U
EU: eu_mcd2_9306, eu_mcd2_9303, eu_mcd1_9210, bios_CD_E
JP: jp_mcd2_921222, jp_mcd1_9112, jp_mcd1_9111, bios_CD_J
32X BIOS files (m68k, master SH2, slave SH2) are fully optional. The core
has built-in HLE that generates replacement code at startup when the external
BIOS pointers are NULL (pico/32x/memory.c:2200 get_bios(), pico/32x/32x.c:172).
The libretro frontend does not expose any 32X BIOS loading path. Only the
standalone platform code references 32X_M_BIOS.BIN / 32X_S_BIOS.BIN, and
that code is currently disabled (#if 0 in platform/common/emu.c:1529).
32X BIOS files (m68k, master SH2, slave SH2) are fully optional. The engine
has built-in HLE that generates replacement code at startup when the BIOS
pointers are NULL (pico/32x/memory.c:2199 get_bios(), pico/32x/32x.c:172).
No current frontend (libretro or standalone) loads these files; the standalone
loading code is disabled (#if 0 in platform/common/emu.c:1529).
Master System, Game Gear, SG-1000: no BIOS file loaded. The core initializes
VDP registers and RAM to simulate post-BIOS state (pico/sms.c:1080-1096).
carthw.cfg is a cartridge hardware database loaded from the system directory.
A built-in version is compiled into the core (pico/carthw_cfg.c). The external
file supplements or overrides game-specific hardware detection (SVP, EEPROM
types, special mappers, copy protection).
Master System, Game Gear, SG-1000, SC-3000: no BIOS file loaded. The core
initializes VDP registers and RAM to simulate post-BIOS state
(pico/sms.c:1080-1097).
files:
# -------------------------------------------------------
# Cartridge hardware database
# -------------------------------------------------------
- name: "carthw.cfg"
required: false
note: "Cartridge hardware database for special mapper and EEPROM detection. Built-in fallback compiled into the core."
source_ref: "platform/libretro/libretro.c:1619, pico/cart.c:1020-1022"
# -------------------------------------------------------
# Mega CD / Sega CD - US region
# -------------------------------------------------------
@@ -48,28 +66,28 @@ files:
required: true
size: 131072 # 128 KB (0x20000)
note: "US Sega CD Model 2 BIOS (September 1993). First in US search order."
source_ref: "platform/libretro/libretro.c:1266"
source_ref: "platform/libretro/libretro.c:1265"
- name: "SegaCDBIOS9303.bin"
system: sega-segacd
required: false
size: 131072
note: "US Sega CD BIOS (March 1993). Second in US search order."
source_ref: "platform/libretro/libretro.c:1266"
source_ref: "platform/libretro/libretro.c:1265"
- name: "us_scd1_9210.bin"
system: sega-segacd
required: false
size: 131072
note: "US Sega CD Model 1 BIOS (October 1992). Third in US search order."
source_ref: "platform/libretro/libretro.c:1266"
source_ref: "platform/libretro/libretro.c:1265"
- name: "bios_CD_U.bin"
system: sega-segacd
required: false
size: 131072
note: "US Sega CD BIOS (generic name). Last in US search order."
source_ref: "platform/libretro/libretro.c:1266"
source_ref: "platform/libretro/libretro.c:1265"
# -------------------------------------------------------
# Mega CD / Sega CD - EU region
@@ -79,28 +97,28 @@ files:
required: true
size: 131072
note: "EU Mega CD Model 2 BIOS (June 1993). First in EU search order."
source_ref: "platform/libretro/libretro.c:1269"
source_ref: "platform/libretro/libretro.c:1268"
- name: "eu_mcd2_9303.bin"
system: sega-megacd
required: false
size: 131072
note: "EU Mega CD Model 2 BIOS (March 1993). Second in EU search order."
source_ref: "platform/libretro/libretro.c:1269"
source_ref: "platform/libretro/libretro.c:1268"
- name: "eu_mcd1_9210.bin"
system: sega-megacd
required: false
size: 131072
note: "EU Mega CD Model 1 BIOS (October 1992). Third in EU search order."
source_ref: "platform/libretro/libretro.c:1269"
source_ref: "platform/libretro/libretro.c:1268"
- name: "bios_CD_E.bin"
system: sega-megacd
required: false
size: 131072
note: "EU Mega CD BIOS (generic name). Last in EU search order."
source_ref: "platform/libretro/libretro.c:1269"
source_ref: "platform/libretro/libretro.c:1268"
# -------------------------------------------------------
# Mega CD / Sega CD - JP region
@@ -110,31 +128,31 @@ files:
required: true
size: 131072
note: "JP Mega CD Model 2 BIOS (December 1992). First in JP search order."
source_ref: "platform/libretro/libretro.c:1272"
source_ref: "platform/libretro/libretro.c:1271"
- name: "jp_mcd1_9112.bin"
system: sega-megacd
required: false
size: 131072
note: "JP Mega CD Model 1 BIOS (December 1991). Second in JP search order."
source_ref: "platform/libretro/libretro.c:1272"
source_ref: "platform/libretro/libretro.c:1271"
- name: "jp_mcd1_9111.bin"
system: sega-megacd
required: false
size: 131072
note: "JP Mega CD Model 1 BIOS (November 1991). Third in JP search order."
source_ref: "platform/libretro/libretro.c:1272"
source_ref: "platform/libretro/libretro.c:1271"
- name: "bios_CD_J.bin"
system: sega-megacd
required: false
size: 131072
note: "JP Mega CD BIOS (generic name). Last in JP search order."
source_ref: "platform/libretro/libretro.c:1272"
source_ref: "platform/libretro/libretro.c:1271"
# -------------------------------------------------------
# Sega 32X - HLE available, not loaded by libretro frontend
# Sega 32X - HLE available, no frontend loads these
# -------------------------------------------------------
- name: "32X_G_BIOS.BIN"
system: sega-32x
@@ -142,7 +160,7 @@ files:
hle_fallback: true
size: 256 # 0x100
note: "32X 68K (Genesis-side) BIOS. HLE replacement generated when NULL."
source_ref: "pico/32x/memory.c:2207-2243"
source_ref: "pico/32x/memory.c:2206-2243"
- name: "32X_M_BIOS.BIN"
system: sega-32x
@@ -150,7 +168,7 @@ files:
hle_fallback: true
size: 2048 # 0x800
note: "32X Master SH2 BIOS. HLE replacement generated when NULL."
source_ref: "pico/32x/memory.c:2250-2277"
source_ref: "pico/32x/memory.c:2249-2276"
- name: "32X_S_BIOS.BIN"
system: sega-32x
@@ -158,7 +176,7 @@ files:
hle_fallback: true
size: 1024 # 0x400
note: "32X Slave SH2 BIOS. HLE replacement generated when NULL."
source_ref: "pico/32x/memory.c:2280-2298"
source_ref: "pico/32x/memory.c:2279-2297"
platform_details:
megacd:
@@ -166,16 +184,16 @@ platform_details:
hle_available: false
region_specific: true
extensions_tried: [".bin", ".zip"]
source_ref: "pico/pico_int.h:559, platform/libretro/libretro.c:1310-1318"
source_ref: "pico/pico_int.h:559, platform/libretro/libretro.c:1309-1317"
32x:
m68k_bios_size: 256 # 0x100
master_sh2_bios_size: 2048 # 0x800
slave_sh2_bios_size: 1024 # 0x400
hle_available: true
source_ref: "pico/pico.h:53-55, pico/pico_int.h:679-693"
source_ref: "pico/pico.h:54-55, pico/pico_int.h:679-693"
sms:
hle_available: true
note: "No BIOS file loaded. VDP/RAM initialized to post-BIOS state."
source_ref: "pico/sms.c:1080-1096"
source_ref: "pico/sms.c:1080-1097"