diff --git a/database.json b/database.json index 2d8f8651..47a794b7 100644 --- a/database.json +++ b/database.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-03-23T09:52:45Z", + "generated_at": "2026-03-23T11:37:13Z", "total_files": 6733, "total_size": 5288642642, "files": { diff --git a/emulators/clownmdemu.yml b/emulators/clownmdemu.yml index 152bdea1..9410100c 100644 --- a/emulators/clownmdemu.yml +++ b/emulators/clownmdemu.yml @@ -1,8 +1,9 @@ emulator: ClownMDEmu type: standalone + libretro +core_classification: official_port source: "https://github.com/Clownacy/clownmdemu-libretro" upstream: "https://github.com/Clownacy/clownmdemu" -profiled_date: "2026-03-18" +profiled_date: "2026-03-23" core_version: "Git" display_name: "Sega - MD/CD (ClownMDEmu)" cores: @@ -12,43 +13,17 @@ systems: - sega-megacd notes: | - ClownMDEmu is a Sega Mega Drive/Genesis and Mega CD emulator by Clownacy. - Supports cartridge (bin/md/gen) and CD (cue/iso/chd) formats, plus a - subsystem for cartridge+CD combo (Mega CD Mode 1). - - The core has NO external BIOS file requirements. firmware_count = 0 in the - libretro .info file confirms this. - - Mega CD boot ROM: a custom open-source replacement boot ROM is compiled - directly into the binary as a 16384-entry uint16 array - (mega-cd-boot-rom.c included into bus-main-m68k.c:19-21). Source at - https://github.com/Clownacy/clownmdemu-mcd-boot. No external CD BIOS - files (bios_CD_E.bin, bios_CD_U.bin, bios_CD_J.bin) are needed or loaded. - - TMSS (Trademark Security System): not implemented at all. No TMSS ROM is - loaded or checked. The core boots games directly without the "Produced by - or under license from Sega" screen. - - The system directory (RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY) is only used - as a fallback path for Backup RAM (BuRAM) save files, not for BIOS loading. - - CD add-on can be enabled for cartridge games via the "clownmdemu_cd_addon" - core option to allow CD music features, but this uses the built-in boot - ROM, not an external BIOS. - - The core implements its own Mega CD BIOS call handler (MegaCDBIOSCall in - bus-sub-m68k.c) via HLE (high-level emulation) of Sub-CPU BIOS functions - including CDBIOS, CDCTRN, FDRSET, FDRCHG, DRVINIT, CDCSTOP, CDCSTAT, - CDCREAD, and others. + Mega Drive/Genesis and Mega CD emulator by Clownacy. Supports cartridge + (bin/md/gen) and CD (cue/iso/chd) formats, plus a subsystem for + cartridge+CD combo (Mega CD Mode 1). Mega CD boot ROM is an open-source + replacement compiled into the binary (mega-cd-boot-rom.c, 32 KB). Sub-CPU + BIOS calls handled via HLE. TMSS not implemented. No external files needed. files: [] analysis: tmss: supported: false - notes: | - TMSS is not implemented. No ROM loaded, no "Produced by Sega" check. - No references to TMSS exist anywhere in the codebase. megacd_bios: external_required: false @@ -56,10 +31,6 @@ analysis: boot_rom_source: "https://github.com/Clownacy/clownmdemu-mcd-boot" boot_rom_location: "source/mega-cd-boot-rom.c (16384 uint16 entries = 32 KB)" bus_mapping: "0x400000-0x41FFFF (address & 0x20000 == 0)" - source_ref: "bus-main-m68k.c:19-21, bus-main-m68k.c:484-494" + source_ref: "bus-main-m68k.c:19-21, bus-main-m68k.c:501-513" bios_hle: true hle_source_ref: "bus-sub-m68k.c:64 (MegaCDBIOSCall)" - notes: | - The Mega CD boot ROM is an open-source replacement compiled into the - binary. Sub-CPU BIOS calls are handled via HLE. No external Sega CD - BIOS files (bios_CD_E/U/J.bin) are needed. diff --git a/emulators/craft.yml b/emulators/craft.yml index 359c0970..984184c6 100644 --- a/emulators/craft.yml +++ b/emulators/craft.yml @@ -1,7 +1,9 @@ emulator: Craft type: game +core_classification: pure_libretro source: "https://github.com/libretro/Craft" -profiled_date: "2026-03-18" +upstream: "https://github.com/fogleman/Craft" +profiled_date: "2026-03-23" core_version: "v1" display_name: "Minecraft (Craft)" cores: [craft] @@ -9,6 +11,8 @@ systems: [] files: [] notes: > Libretro port of Craft, a simple Minecraft clone by Michael Fogleman. - Procedurally generates a voxel world with basic block placement and removal. - All textures and shaders are compiled into the binary. - No content file, BIOS, or system directory files required. + All textures, fonts, and shaders are embedded in the binary (header arrays). + Upstream loads textures from external PNG files; libretro port compiles them in. + Uses system directory only for craft.db/auth.db (core-generated save data). + Source has zero fopen calls. .info declares no firmware. +source_ref: "libretro/libretro.c, src/main.c:2680-2698, src/main.c:3315-3345" diff --git a/emulators/crocods.yml b/emulators/crocods.yml index 9b09562e..b098dee1 100644 --- a/emulators/crocods.yml +++ b/emulators/crocods.yml @@ -1,7 +1,9 @@ emulator: CrocoDS type: libretro +core_classification: official_port source: "https://github.com/libretro/libretro-crocods" -profiled_date: "2026-03-18" +upstream: "https://github.com/redbug26/crocods-core" +profiled_date: "2026-03-23" core_version: "v1" display_name: "Amstrad - CPC (CrocoDS)" cores: diff --git a/emulators/cruzes.yml b/emulators/cruzes.yml index c0e35c96..ea676d7c 100644 --- a/emulators/cruzes.yml +++ b/emulators/cruzes.yml @@ -1,8 +1,9 @@ emulator: Cruzes type: libretro +core_classification: pure_libretro source: "https://github.com/libretro/libretro-samples/tree/master/tests/cruzes" -profiled_date: "2026-03-18" -core_version: "v1.0" +profiled_date: "2026-03-23" +core_version: "0.1" display_name: "Cruzes" cores: - cruzes @@ -10,25 +11,22 @@ systems: - game notes: | - Cruzes is an unfinished Picross puzzle game implemented as a libretro core, - part of the libretro-samples repository. It is not an emulator -- it is a - standalone game that runs directly within RetroArch. + Unfinished Picross puzzle game, part of the libretro-samples repository. + No separate upstream -- written directly for the libretro API. - The core sets supports_no_game to true (cruzes.c:772) and valid_extensions - to an empty string (cruzes.c:749). The puzzle grid is hardcoded in - retro_init (cruzes.c:706-717) via a string literal passed to load_challenge. + supports_no_game true (cruzes.c:772), valid_extensions "" (cruzes.c:749). + Puzzle grid hardcoded in retro_init (cruzes.c:706-717) via load_challenge. + retro_load_game (cruzes.c:728-732) sets pixel format and returns true. + No file I/O, no RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY call. - retro_load_game (cruzes.c:728-732) only sets the pixel format to RGB565 - and returns true. It never reads from the game_info pointer, never calls - RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, and never opens any file from disk. - - The font data (Carlito-Regular.ttf) is converted to C header files at build - time by the ttf2c tool (font10.h, font16.h, font24.h) and compiled in. - - No external BIOS, firmware, or system files are needed. + Font data (Carlito-Regular.ttf) compiled in via ttf2c (font10.h, font16.h, + font24.h). files: [] +exclusion_note: > + Game core with no external file dependencies. All assets compiled in. + analysis: file_loading: none system_directory_used: false diff --git a/emulators/daphne.yml b/emulators/daphne.yml index 2b911513..827c74f2 100644 --- a/emulators/daphne.yml +++ b/emulators/daphne.yml @@ -1,60 +1,28 @@ emulator: Daphne type: standalone + libretro +core_classification: community_fork source: "https://github.com/libretro/daphne" -upstream: "https://github.com/DirtBagXon/hypseus-singe" -profiled_date: "2026-03-18" +upstream: "https://github.com/mirror/daphne-emu" +profiled_date: "2026-03-23" core_version: "Git" display_name: "Arcade (Daphne)" +cores: + - daphne systems: - arcade-laserdisc notes: | - Daphne is a LaserDisc arcade game emulator ported to libretro. It emulates - classic full-motion video arcade games like Dragon's Lair, Space Ace, - Cliff Hanger, and others that used LaserDisc players for video output. - - The core does NOT require any shared system BIOS or firmware files. - The libretro-core-info file (daphne_libretro.info) declares no firmware. - + LaserDisc arcade game emulator. Port of Daphne 1.0 (Matt Ownby) to libretro. Each game loads its own arcade ROM set from a ZIP file named after the game - short name (e.g. lair.zip, cliff.zip, bega.zip). ROM files are individual - arcade chip dumps loaded via the rom_def struct in each game class - (daphne-1.0-src/game/*.cpp). CRC32 verification is performed at load time - (game.cpp:769-778). - - Content loading path (libretro.cpp:546-637): - 1. User points RetroArch to a .zip file (e.g. /Daphne/roms/lair.zip) - 2. The core strips the path to derive: - - rom_name: game short name (e.g. "lair"), lowercased - - rom_path: parent directory - 3. A home_dir is set to rom_path/.. (one level up from roms/) - 4. Additional data is expected relative to home_dir: - - roms/ -> game ROM ZIPs - - framefile/ -> frame description files (.txt) - - sound/ -> sound samples - - ram/ -> SRAM saves - - pics/ -> overlay graphics - - Expected directory layout: - Daphne/ - roms/lair.zip - roms/cliff.zip - framefile/lair.txt - framefile/cliff.txt - sound/lair/ (optional, game-specific samples) - - Supported games include (from README.md and libretro.cpp): - lair (Dragon's Lair), ace (Space Ace), cliff (Cliff Hanger), - bega (Bega's Battle), badlands (Badlands), esh (Esh's Aurunmilla), - interstellar, mach3, sdq (Super Don Quix-ote), tq (Thayer's Quest), - astron, galaxy, cobra, roadblaster, gpworld, lair2 (Dragon's Lair II), - and many ROM revision variants. - - The core is marked experimental. Savestates, cheats, and disk control are - not supported. Requires full file path (retro_load_game uses path, not - data buffer). + (e.g. lair.zip). ROMs are loaded from a content-relative directory structure + (homedir/roms/) with CRC32 verification (game.cpp:767-781). The core never + accesses the RetroArch system directory. Additional per-game data (framefiles, + sound samples, overlay BMPs) is also loaded relative to the content directory. files: [] - # No shared BIOS or firmware files. All ROMs are per-game arcade chip - # dumps distributed inside game-named ZIP archives. These are game content, - # not system files managed by retroarch_system. + +exclusion_note: > + .info declares no firmware (firmware_count absent). Code confirmed: the core + never calls RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. All files (ROM ZIPs, + framefiles, sound, pics) load from the content directory via g_homedir + (libretro.cpp:1153, set to rom_path/..). No shared system BIOS or firmware. diff --git a/emulators/desmume2015.yml b/emulators/desmume2015.yml index 55b20148..778683cb 100644 --- a/emulators/desmume2015.yml +++ b/emulators/desmume2015.yml @@ -1,17 +1,20 @@ emulator: DeSmuME 2015 type: libretro +core_classification: frozen_snapshot source: "https://github.com/libretro/desmume2015" -profiled_date: "2026-03-19" +upstream: "https://github.com/TASEmulators/desmume" +profiled_date: "2026-03-23" core_version: "SVN (2015 snapshot)" display_name: "Nintendo - DS (DeSmuME 2015)" cores: [desmume2015] systems: [nintendo-ds] -exclusion_note: ".info declares firmware_count=3 but code never loads external BIOS (desmume_use_external_bios absent)" +exclusion_note: ".info declares firmware_count=3 but libretro frontend never enables external BIOS loading (UseExtBIOS defaults false in NDSSystem.h:497, never set in libretro.cpp)" notes: | - Frozen 2015 snapshot of DeSmuME. The external BIOS loading feature - (desmume_use_external_bios) does NOT exist in this version. - Verified: libretro.cpp has no bios7/bios9/firmware path construction. - ref: desmume2015/desmume/src/frontend/libretro/libretro.cpp + Frozen 2015 snapshot of DeSmuME. The core emulator code supports external + BIOS/firmware (PrepareBiosARM7/ARM9 in NDSSystem.cpp:1974-2050), but + UseExtBIOS defaults to false (NDSSystem.h:497) and the libretro frontend + never sets it — no desmume_use_external_bios core option exists in this + version. Uses HLE BIOS stubs when external BIOS not loaded. files: [] diff --git a/emulators/dice.yml b/emulators/dice.yml index 703b369f..f473c0f7 100644 --- a/emulators/dice.yml +++ b/emulators/dice.yml @@ -1,7 +1,9 @@ emulator: DICE type: libretro +core_classification: community_fork source: "https://github.com/mittonk/dice-libretro" -profiled_date: "2026-03-18" +upstream: "https://sourceforge.net/projects/dice/" +profiled_date: "2026-03-23" core_version: "v0.4.2" display_name: "Arcade (DICE)" cores: @@ -10,50 +12,14 @@ systems: - discrete-arcade notes: | - DICE (Discrete Integrated Circuit Emulator) emulates early arcade hardware - built entirely from discrete logic components, with no CPU. dice-libretro is - a libretro port by Ken Mitton, based on upstream DICE by Adam B. + Discrete Integrated Circuit Emulator. Emulates early arcade hardware built + from discrete logic components with no CPU. Libretro port by Ken Mitton, + based on upstream DICE by Adam B. - No BIOS or firmware files required. The .info file declares firmware_count = 0. - - Games fall into two categories: - - ROM-based: shipped as MAME-style ZIP archives (filename matters). - The core loads the ZIP passed by the frontend and matches individual ROM - chips by CRC32 (chips/rom.cpp:41-218, RomDesc::get_data). If a chip's - CRC does not match, the core walks all entries in the archive looking for - a CRC match or alt_crc match. - - ROM-less: games like Pong, Breakout, Rebound whose original PCBs had no - ROM at all. These use .dmy dummy launcher files (empty placeholders) to - tell RetroArch which game to start. - - retro_get_system_info (libretro.cpp:122-137) sets need_fullpath = true, - block_extract = true, valid_extensions = "zip|dmy|k1|a1|6c|c6|d2|s1|f4|a4| - 1da|da1|C4|4c|4d|d7|d4". The unusual extensions are raw ROM chip dumps for - individual games (e.g. .k1 for antiaircraft, .a1 for attack). - - dice.cpp:42-66 strips any "#inner.rom" suffix from the path (for ROM - managers that expose zip contents) and passes the zip path to - RomDesc::set_zip_filename. - - retro_init (libretro.cpp:50-63) retrieves RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY - but uses it only for the retro_base_directory variable, not for loading any - system files. - - Games with ROMs (10 titles): - antiaircraft.zip - 1 ROM chip (k1) - attack.zip - 6 ROM chips (a1, b1, c1, d1, j6, k6), each with alt_crc - cleansweep.zip - 3 ROM chips (6c, d7, k3) - crashnscore.zip - 6 ROM chips (d2, e2, f6, f7, p6, p7) - indy4.zip - 4 ROM chips (s1, s2, c1, c2) - jetfighter.zip - 6 ROM chips (a4, j1, j5, k5, m1, r5) - sharkjaws.zip - 2 ROM chips (1da/da1, 1db/db1) - steeplechase.zip - 2 ROM chips (C4, D4); bugle ROM c8 dump missing - stuntcycle.zip - 2 ROM chips (4d, 1fh) - wipeout.zip - 2 ROM chips (d4, g7) - - ROM-less games (11 titles, use .dmy dummy files): - breakout, crossfire, gotcha, hiway, pinpong, pong, pongdoubles, - quadrapong, rebound, spacerace, tvbasketball + Games load as MAME-style ZIP archives matched by CRC32 per ROM chip + (chips/rom.cpp:41-218). ROM-less games (Pong, Breakout, etc.) use .dmy + dummy launcher files. The system directory is retrieved but never used + for file loading (libretro.cpp:60-62). files: [] diff --git a/emulators/dinothawr.yml b/emulators/dinothawr.yml index ad05b950..81c66f3a 100644 --- a/emulators/dinothawr.yml +++ b/emulators/dinothawr.yml @@ -1,7 +1,9 @@ emulator: Dinothawr type: game +core_classification: game_engine source: "https://github.com/libretro/Dinothawr" -profiled_date: "2026-03-18" +upstream: "https://github.com/libretro/Dinothawr" +profiled_date: "2026-03-23" core_version: "v1.0" display_name: "Dinothawr" cores: [dinothawr] diff --git a/emulators/directxbox.yml b/emulators/directxbox.yml index 39ff5e3f..07a96570 100644 --- a/emulators/directxbox.yml +++ b/emulators/directxbox.yml @@ -1,7 +1,8 @@ emulator: DirectXBox type: libretro +core_classification: pure_libretro source: "https://github.com/libretro/libretro-directxbox" -profiled_date: "2026-03-18" +profiled_date: "2026-03-23" core_version: "alpha" display_name: "Microsoft - Xbox (DirectXbox)" cores: @@ -41,16 +42,18 @@ files: - name: "mcpx_1.0.bin" path: "mcpx_1.0.bin" size: 512 + validation: [size] required: true note: > Xbox MCPX ROM (secret boot ROM on the southbridge). Contains the initial boot vector that loads the flash BIOS. Overlaid at the last 512 bytes of the 16 MB flash region (0xFFFFFE00-0xFFFFFFFF). Only needed for retail machine types; Debug and Chihiro skip this file. - source_ref: "src/xbox.cpp:186-206, src/libretro/libretro.cpp:202" + source_ref: "src/xbox.cpp:186-207, src/libretro/libretro.cpp:202" - name: "cromwell_1024.bin" path: "cromwell_1024.bin" + validation: [size] required: true note: > Cromwell open-source Xbox BIOS (1024 KB variant). Loaded as the flash ROM @@ -58,7 +61,7 @@ files: multiple of 0x10000. This is the only BIOS that currently boots in the emulator. The Microsoft retail BIOS (xbox-3944.bin) is referenced in commented-out code but does not work yet. - source_ref: "src/xbox.cpp:143-178, src/libretro/libretro.cpp:203-204" + source_ref: "src/xbox.cpp:143-178, src/libretro/libretro.cpp:203" notes: status: > diff --git a/emulators/dirksimple.yml b/emulators/dirksimple.yml index 780b84c4..bb253c20 100644 --- a/emulators/dirksimple.yml +++ b/emulators/dirksimple.yml @@ -1,8 +1,9 @@ emulator: DirkSimple type: standalone + libretro +core_classification: official_port source: "https://github.com/icculus/DirkSimple" upstream: "https://github.com/icculus/DirkSimple" -profiled_date: "2026-03-19" +profiled_date: "2026-03-23" core_version: "0.2" display_name: "Laserdisc arcade game (DirkSimple)" cores: [dirksimple] @@ -11,30 +12,29 @@ systems: notes: | DirkSimple by Ryan C. Gordon (icculus). Plays laserdisc arcade games - via Lua scripts + Ogg Theora video. NOT related to Daphne — completely - different architecture. + via Lua scripts + Ogg Theora video. Same author wrote both standalone + and libretro backends (source == upstream). Libretro port loads from system_dir/DirkSimple/. - ref: dirksimple_libretro.c:782,795 — + ref: dirksimple_libretro.c:782,794 — sysdir from RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY basedir = sysdir + "/DirkSimple/" - DirkSimple_startup(basedir, info->path, ...) at line 798 + DirkSimple_startup(basedir, info->path, ...) at line 799 - Standalone loads from data/ in the binary's directory. - ref: README.md — "data directory must be included in same directory as binary" + Standalone loads from SDL_GetBasePath() + data/. + ref: dirksimple_sdl.c:575-577 Game data in data/games//game.lua + assets (PNG, WAV). User provides the OGV laserdisc video as content. Supported games: Dragon's Lair (lair), Cliff Hanger (cliff). - 10 data files in the repo (game.lua scripts, sprites, sounds). + 10 data files in the repo (game.lua scripts, sprites, sounds, icons). Buildbot provides DirkSimple.zip via Core System Files Downloader. - ref: buildbot.libretro.com/assets/system/DirkSimple.zip data_directories: - ref: dirksimple - source_ref: "dirksimple_libretro.c:795" + source_ref: "dirksimple_libretro.c:794" files: [] # no BIOS/firmware — game data via data_directories diff --git a/emulators/dolphin_launcher.yml b/emulators/dolphin_launcher.yml index 4b0ceda8..99af30cd 100644 --- a/emulators/dolphin_launcher.yml +++ b/emulators/dolphin_launcher.yml @@ -1,8 +1,10 @@ emulator: "Dolphin Launcher" type: launcher +core_classification: launcher exclusion_note: "stub core calls standalone Dolphin — all BIOS in Dolphin's own directory" source: "https://github.com/RobLoach/libretro-dolphin-launcher" -profiled_date: "2026-03-18" +upstream: "https://github.com/dolphin-emu/dolphin" +profiled_date: "2026-03-23" core_version: "1.2.0" display_name: "Nintendo - GameCube / Wii (Dolphin Launcher)" cores: @@ -10,15 +12,10 @@ cores: systems: [nintendo-gamecube, nintendo-wii] notes: | - Launcher stub that passes games to standalone Dolphin (dolphin-emu-nogui, - dolphin-emu, or Flatpak org.DolphinEmu.dolphin-emu). The core itself does - no emulation - it calls system() with the game path, waits for Dolphin to - exit, then signals RETRO_ENVIRONMENT_SHUTDOWN. - - Requires Dolphin installed separately on the host. All BIOS/firmware files - (IPL.bin, DSP ROMs, fonts, Wii NAND) are managed by the standalone Dolphin - install, not by RetroArch system/. See dolphin.yml for those files. - - No system files, BIOS, or firmware required by this core. + Launcher stub that passes games to standalone Dolphin via system() calls. + Tries dolphin-emu-nogui, falls back to dolphin-emu, then Flatpak + org.DolphinEmu.dolphin-emu. Waits for Dolphin to exit, then signals + RETRO_ENVIRONMENT_SHUTDOWN. Requires Dolphin installed on the host. + All BIOS/firmware files are managed by the standalone Dolphin install. files: [] diff --git a/emulators/dosbox_core.yml b/emulators/dosbox_core.yml index 7a329442..6b46a142 100644 --- a/emulators/dosbox_core.yml +++ b/emulators/dosbox_core.yml @@ -1,5 +1,6 @@ emulator: DOSBox-core type: standalone + libretro +core_classification: community_fork source: "https://github.com/libretro/dosbox-core" upstream: "https://github.com/dosbox-staging/dosbox-staging" profiled_date: "2026-03-19"