From cd777848aa1fc5514e856f72afe507e1b9fd0483 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Tue, 20 Oct 2026 10:27:15 +0200 Subject: [PATCH] fix: profile BlastEm at its pin The pin (1e0de94d) already loads Sega CD, 32X, ColecoVision and LaserActive firmware from the system directory, and the profile still described the earlier core with no BIOS at all. Each file now carries its code reference, required flag and build. The LaserActive player firmware (uPD78237, 64 KiB) is collected from the dump its author published. --- .../LaserActive/laseractive_dyw_1322a.bin | Bin 0 -> 65536 bytes emulators/blastem.yml | 191 +++++++++++++++--- 2 files changed, 158 insertions(+), 33 deletions(-) create mode 100644 bios/Pioneer/LaserActive/laseractive_dyw_1322a.bin diff --git a/bios/Pioneer/LaserActive/laseractive_dyw_1322a.bin b/bios/Pioneer/LaserActive/laseractive_dyw_1322a.bin new file mode 100644 index 0000000000000000000000000000000000000000..cd14bd4b3e35b3da839fc10fd01fabee9a1205f2 GIT binary patch literal 65536 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 literal 0 HcmV?d00001 diff --git a/emulators/blastem.yml b/emulators/blastem.yml index 38250d96..5ee421e4 100644 --- a/emulators/blastem.yml +++ b/emulators/blastem.yml @@ -3,33 +3,50 @@ type: standalone + libretro core_classification: official_port source: "https://github.com/libretro/blastem" upstream: "https://www.retrodev.com/blastem/" -profiled_date: "2026-03-23" +profiled_date: "2026-10-20" source_commit: "1e0de94dc7e669c0925a22c0fccf6cdc837af0a0" -core_version: "v0.6.3-pre" +core_version: "1.0.1-pre" display_name: "Sega - Mega Drive - Genesis (BlastEm)" cores: - blastem systems: - sega-megadrive + - sega-megacd + - sega-32x - sega-mastersystem + - sega-gamegear + - sega-sg1000 + - sega-sc3000 + - sega-pico + - colecovision + - pioneer-laseractive notes: | - BlastEm is a cycle-accurate Sega Mega Drive/Genesis emulator with basic - Master System support. In standalone mode it supports TMSS ROM loading and - multiple hardware models (MD1 VA0 through MD3 VA2, Teradrive). The Jaguar - emulator (blastjag) is a separate standalone binary, not part of the - libretro core. + BlastEm emulates the Mega Drive/Genesis, Sega CD, 32X, Master System, Game + Gear, SG-1000, SC-3000, Pico, Copera, ColecoVision and the Pioneer LaserActive + player. The libretro port lives in libblastem.c and offers every machine the + standalone can force except the Jaguar (libblastem.c:20-44). - The libretro port (libblastem.c) does NOT expose any core options and - defaults to model md1va3 which has TMSS disabled. There is no way to - select a TMSS-enabled model through the libretro interface. + Each firmware path is a config key. The libretro core writes + / into those keys before any machine is built + (libblastem.c:497-530). The names are opened exactly as written, with no + hash or size check. - Even if a TMSS-enabled model were forced, read_bundled_file() in the - libretro build only serves rom.db and returns NULL for tmss.md, so TMSS - ROM loading would fail (fatal_error at genesis.c:3043). + The standalone build leaves the keys unset by default (default.cfg), so + each loader falls back to its own default name. The Sega CD BIOS, the + ColecoVision BIOS, the LaserActive firmware and the TMSS ROM are then read + beside the executable through read_bundled_file() (paths.c:596-631). The 32X + BIOS ROMs are opened by bare name, relative to the working directory + (32x.c:1072, 1417, 1449). - Sega CD / Mega CD is not supported (only a TODO comment in system.c:16). - No BIOS files are required or loaded by the libretro core. + A fatal error while a game loads unwinds to retro_load_game(), which reports + the failure to the frontend (libblastem.c:975-989, 1053-1058). Missing Sega + CD BIOS and missing TMSS ROM end there. + + The default Mega Drive model is md1va3, which has no TMSS + (libblastem.c:355-359, systems.cfg:12-20). md1va6, md2va1, md2va2, md3va1 + and md3va2 enable it (systems.cfg:23-75) and can be picked with the + blastem_model option (libblastem.c:185-187). files: # rom.db is embedded in the libretro binary (libblastem.c:1436-1455, @@ -48,10 +65,110 @@ files: md5: "48b457c7e2df6ec7c16ae34d8f24c4b6" hle_fallback: true note: "ROM feature database (game-specific mapper/save config). Shipped beside the executable in the 1.0.0 Windows and Linux archives, whose copy the hashes describe. The libretro core compiles it in and reads no external copy." - source_ref: "romdb.c:44-53 get_rom_db(), libblastem.c:1436-1455 read_bundled_file()" + source_ref: "source romdb.c:44-53, source libblastem.c:1436-1455" + + # ------------------------------------------------------- + # Sega CD / Mega CD BIOS + # ------------------------------------------------------- + - name: bios_CD_U.bin + system: sega-megacd + region: [north-america] + required: true + mode: libretro + note: "Sega CD BIOS for discs whose header allows the default region U, or that carry neither E nor J (segacd.c:1573-1593). An empty file counts as missing (segacd.c:1599-1602). Without it a CD image fails to load (segacd.c:1644-1647). A Mode 1 cartridge runs without it as a plain cartridge (genesis.c:3156-3162)." + source_ref: "source libblastem.c:501, source segacd.c:1573-1615" + + - name: bios_CD_E.bin + system: sega-megacd + region: [europe] + required: true + mode: libretro + note: "Mega CD BIOS for discs whose region resolves to E (segacd.c:1587-1588). Same load rules as bios_CD_U.bin." + source_ref: "source libblastem.c:502, source segacd.c:1573-1615" + + - name: bios_CD_J.bin + system: sega-megacd + region: [japan] + required: true + mode: libretro + note: "Mega CD BIOS for discs whose region resolves to J (segacd.c:1589-1590). Same load rules as bios_CD_U.bin." + source_ref: "source libblastem.c:503, source segacd.c:1573-1615" + + - name: cdbios.bin + system: sega-megacd + required: true + mode: standalone + unread_on: [retrobat] + note: "Default name of all three regional Sega CD BIOS keys when the config sets none. Read beside the executable, whatever the disc region. Without it a CD image stops with a fatal error (segacd.c:1644-1647). RetroBat writes absolute paths to bios_CD_U/E/J.bin into the config (emulatorlauncher Blastem.Generator.cs:256-269), so this name is never opened there." + source_ref: "source segacd.c:1594, source segacd.c:1607-1609" + + # ------------------------------------------------------- + # 32X BIOS + # ------------------------------------------------------- + - name: 32X_G_BIOS.bin + system: sega-32x + required: false + hle_fallback: true + note: "68K side BIOS. Only the first 0x100 bytes are read. Without it the core writes its own vector table and warns that some games need the real one (32x.c:1072-1086)." + source_ref: "source libblastem.c:508, source 32x.c:1072-1086" + + - name: 32X_M_BIOS.bin + system: sega-32x + required: true + note: "Master SH2 BIOS, read into the 16 KiB boot ROM area (32x.c:1399-1400, 1417-1425). The libretro core refuses a 32X load when the file is missing or its reset vector is zero (libblastem.c:998-1017, 1098-1104). The standalone runs the SH2 on zeroed ROM and stops at an unimplemented instruction." + source_ref: "source libblastem.c:509, source libblastem.c:1098-1104, source 32x.c:1417-1425" + + - name: 32X_S_BIOS.bin + system: sega-32x + required: true + note: "Slave SH2 BIOS, read into the 16 KiB boot ROM area (32x.c:1449-1457). Same refusal rule as 32X_M_BIOS.bin in the libretro core (libblastem.c:1098-1104)." + source_ref: "source libblastem.c:510, source libblastem.c:1098-1104, source 32x.c:1449-1457" + + # ------------------------------------------------------- + # ColecoVision BIOS + # ------------------------------------------------------- + - name: colecovision.rom + system: colecovision + required: true + mode: libretro + size: 8192 + note: "Read into the 8 KiB BIOS area mapped at 0x0000 (coleco.h:13, coleco.c:513). Without it the core only warns and runs a zeroed BIOS, so no game starts (coleco.c:485-492)." + source_ref: "source libblastem.c:504, source coleco.c:485-492" + + - name: colecovision_bios.col + system: colecovision + required: true + mode: standalone + unread_on: [retrobat] + size: 8192 + note: "Default name of the ColecoVision BIOS key when the config sets none. Read beside the executable, truncated to 8 KiB (coleco.c:496-505). RetroBat points the key at colecovision.rom (emulatorlauncher Blastem.Generator.cs:256-269)." + source_ref: "source coleco.c:485, source coleco.c:496-505" + + # ------------------------------------------------------- + # Pioneer LaserActive player firmware + # ------------------------------------------------------- + - name: laseractive_dyw_1322a.bin + system: pioneer-laseractive + required: true + size: 65536 + crc32: "3d6f6ed3" + md5: "d6ccd1da5c4a1b22c64e6eec899e0daf" + sha1: "b1e48d1f5e494a6cbece61cfca4469dea33fba4b" + sha256: "02a4a82c4f5abfe2c7e15d3682be9590be96607cb9213ce88e335f34db95d76f" + note: "uPD78237 mode controller ROM of the CLD-A100 player. Only the first 0xE000 bytes are mapped (laseractive.h:16, laseractive.c:533-534). Without it the core warns and the controller runs a zeroed ROM. The hashes describe the 64 KiB dump the BlastEm author published, whose last 8 KiB are 0xFF." + source_ref: "source libblastem.c:513, source laseractive.c:504-531" + + # ------------------------------------------------------- + # TMSS ROM + # ------------------------------------------------------- + - name: tmss.md + system: sega-megadrive + required: false + mode: libretro + aliases: [bios_MD.bin] + note: "Read only for a model with TMSS. tmss.md is tried first, then bios_MD.bin (libblastem.c:514-529). With a TMSS model selected and neither file present, the load fails (genesis.c:3036-3051). Any size is accepted and mirrored to fill the TMSS space (genesis.c:3054-3065)." + source_ref: "source libblastem.c:514-529, source genesis.c:3036-3065" - # TMSS ROM, only used in standalone mode with tmss-enabled model - # libretro build returns NULL for tmss.md (libblastem.c:541) - name: tmss.md system: sega-megadrive required: false @@ -61,31 +178,39 @@ files: sha1: "d0fd0c163b693d819fc907538fbdec76d7ec669d" md5: "1929426a8888785411d30f24bd0f8139" note: "TMSS startup ROM for models md1va6, md2va1 and later. The 1.0.0 Windows and Linux archives ship BlastEm's own replacement, built from tmss.s68, under this name. Any size is accepted: the image is padded and mirrored to fill the TMSS space." - source_ref: "genesis.c:3036-3065" + source_ref: "source genesis.c:3036-3065" analysis: tmss: - standalone_support: true - libretro_support: false default_model: md1va3 - default_tmss: "off" + tmss_models: [md1va6, md2va1, md2va2, md3va1, md3va2] rom_filename: tmss.md - rom_size: 2048 # 2 KB + libretro_fallback_name: bios_MD.bin config_path: "system\0tmss_path\0" - source_ref: "genesis.c:1919-1929" + source_ref: "source libblastem.c:355-359, source libblastem.c:514-529, source genesis.c:3036-3051" note: | - TMSS ROM is loaded from tmss.md (configurable via system/tmss_path). - Models with tmss=on: md1va6, md2va1, md2va2, md3va1, md3va2. - Models with tmss=off: md1va0, md1va3 (default), teradrive. - The libretro build uses md1va3 (tmss off) with no option to change. + The libretro core exposes the model as blastem_model and points + system/tmss_path at the system directory. The standalone falls back to + tmss.md beside the executable. sega_cd: - supported: false - source_ref: "system.c:16" - note: "TODO comment only: 'Differentiate between vanilla Genesis and Sega CD/32X games'" + region_keys: [scd_bios_us, scd_bios_eu, scd_bios_jp] + standalone_default: cdbios.bin + source_ref: "source segacd.c:1573-1615, source segacd.c:1644-1647" + note: | + The region comes from the disc header, or from the default region when + the header allows it. A Mode 1 cartridge that finds no BIOS runs without + the Sega CD (genesis.c:3156-3162). + + s32x: + source_ref: "source libblastem.c:998-1017, source libblastem.c:1098-1104" + note: | + The libretro core checks that both SH2 BIOS files exist and carry a + non-zero reset vector before it builds a 32X machine. jaguar_bios: libretro_relevant: false + source_ref: "source jaguar.c:571-575" note: | - blastjag (jaguar.c) is a separate standalone binary, not compiled - into the libretro core. Requires BIOS as first CLI argument. + blastjag is a separate standalone binary, not compiled into the + libretro core. It reads the BIOS from its first command line argument.