diff --git a/emulators/flycast-dojo.yml b/emulators/flycast-dojo.yml index b72fca33..125257a1 100644 --- a/emulators/flycast-dojo.yml +++ b/emulators/flycast-dojo.yml @@ -3,11 +3,12 @@ type: standalone core_classification: enhanced_fork source: "https://github.com/blueminder/flycast-dojo" upstream: "https://github.com/flyinghead/flycast" -source_commit: "d0e47e572b1e7b355e88bda8308c89d0c5156cbf" -upstream_commit: "a172e0001351dfbc49b86860a13d5390b1c493fe" +source_branch: "dojo" +source_commit: "745815c929fca4a893be28c99351b44d984b6642" +upstream_commit: "f13d7ad2dcf141f59a999090dbc0f78be196e665" logo: "https://raw.githubusercontent.com/blueminder/flycast-dojo/master/shell/linux/flycast-dojo.png" -profiled_date: "2026-08-08" -core_version: "dojo-7-preview4" +profiled_date: "2026-10-23" +core_version: "dojo-7.8" display_name: "Sega - Dreamcast/Naomi (Flycast Dojo)" cores: - flycast-dojo @@ -17,70 +18,78 @@ systems: - sega-naomi - sega-naomi2 - sega-atomiswave + - sega-systemsp mode: standalone verification: existence notes: | Fork of Flycast adding rollback and delay netplay, a lobby, spectating, - replay recording and a training mode. + replay recording and a training mode. The Dojo 7 releases are tagged on the + dojo branch, which carries flyinghead/flycast up to f13d7ad of 2024-05-11 + with the Dojo commits on top. The master branch is the older Dojo 6 line. + The build names itself with git describe, so the version string is the tag. + ref: .github/workflows/build-and-release.yml:4-6, .github/workflows/build-and-release.yml:27 Every file below is read from the data directory, flat, with no subfolder. - The directory is /data on Windows, $XDG_DATA_HOME/flycast-dojo or - $HOME/.local/share/flycast-dojo on Linux, /flycast-dojo/data on Switch. - $FLYCAST_ROOT overrides the root, $FLYCAST_BIOS_PATH adds search paths, - and ContentPath entries are searched after the data directory. - ref: core/linux-dist/main.cpp:157-365, core/windows/winmain.cpp:245-266, - core/stdclass.cpp:78-97 + The user data directory is /data on Windows, + $XDG_DATA_HOME/flycast-dojo or $HOME/.local/share/flycast-dojo on Linux, + the data/ folder of $HOME/.flycast or ~/Library/Application Support/Flycast + on macOS, and /flycast-dojo/data on Switch. A missing file is then looked up + in the system data directories (on Linux $XDG_DATA_DIRS or /usr/local/share + and /usr/share, each with flycast-dojo appended, every $FLYCAST_BIOS_PATH + entry, ./ and data/), then in the directory of the loaded game. Boot ROMs, + flash and arcade BIOS archives are also searched in every ContentPath entry. + ref: core/linux-dist/main.cpp:148-178, 255-296, 337-344, + core/windows/winmain.cpp:77-97, + shell/apple/emulator-osx/emulator-osx/osx-main.mm:108-137, + core/stdclass.cpp:83-105, core/oslib/oslib.cpp:52-81, 88-103 - The boot ROM prefix follows the platform (core/hw/holly/sb_mem.cpp:27-42): + The boot ROM prefix follows the platform (core/hw/flashrom/nvmem.cpp:35-50): Dreamcast -> dc_ NAOMI -> naomi_ NAOMI 2 -> naomi2_ Atomiswave -> aw_ - Boot ROM search pattern (sb_mem.cpp:254,269): + System SP -> no prefix + Boot ROM search pattern (core/hw/flashrom/nvmem.cpp:256-272): {prefix}boot.bin, {prefix}boot.bin.bin, {prefix}bios.bin, {prefix}bios.bin.bin - Flash search takes a single name, {prefix}nvmem.bin (sb_mem.cpp:214), or - {prefix}nvmem.bin.net once Dojo mode is on (sb_mem.cpp:195). - The aw_ prefix never reaches a filename: sb_mem.cpp:267 skips the boot ROM - search on Atomiswave, whose BIOS comes from awbios.zip, and its flash - follows the per-game arcade path (sb_mem.cpp:216). + Flash search takes a single name, {prefix}nvmem.bin, on Dreamcast only. The + arcade platforms keep their flash under the per-game save path, and when it + is absent the NAOMI and Atomiswave defaults compiled into the binary are + used for the games that have one (core/hw/flashrom/nvmem.cpp:214-254). + The aw_ prefix never reaches a filename: the boot ROM search is skipped on + Atomiswave, whose BIOS comes from awbios.zip. Arcade BIOS archives are opened as .zip, then .7z - (core/hw/naomi/naomi_cart.cpp:69-71). Each ROM inside is looked up by CRC - then by filename. The crc field of every BIOS blob is left at zero, so the - filename decides. No hash is checked on an archive. + (core/hw/naomi/naomi_cart.cpp:57-75). Each ROM is looked up by CRC32 in + the game archive, its parent and the BIOS archive, then by file name in + the same order, and the blob of the configured region is taken, else the + first one listed. awbios declares no CRC32, so its member is found by name. + No hash is checked on an archive. A game with no bios field reads naomi.zip + and runs from the flat naomi_boot.bin when the archive is missing. A game + that names a BIOS aborts without it (core/hw/naomi/naomi_cart.cpp:190-206). - NAOMI 2 is a platform of its own here: naomi_cart_GetPlatform returns - DC_PLATFORM_NAOMI2 for any game whose bios field is naomi2 - (naomi_cart.cpp:646-657), which selects the naomi2_ prefix and naomi2.zip. + NAOMI 2 and System SP are platforms of their own: naomi_cart_GetPlatform + returns DC_PLATFORM_NAOMI2 for a game whose bios field is naomi2 and + DC_PLATFORM_SYSTEMSP for segasp (core/hw/naomi/naomi_cart.cpp:785-806). - Under netplay, match playback or match recording the Dreamcast boot ROM is - skipped and reios is forced, so both sides start from the same state. - Product numbers T0019M and T-31101N are the two exceptions that keep the - real BIOS (sb_mem.cpp:237-259). + UseReios defaults to on, so the Dreamcast boots through reios and reads + dc_boot.bin only when HLE BIOS is turned off, to start the BIOS menu + without a disc, or for the product ids that force the real BIOS + (core/cfg/option.cpp:127, core/emulator.cpp:262-279, 502-526). - BIOS[] also declares airlbios and naomigd. No entry of Games[] carries - either name in its bios field and loadBios is only ever called with that - field or the literal naomi, so neither archive is opened. The Airline - Pilots sets use the naomi BIOS (naomi_roms.cpp:821-828,854-862). + The release archives hold the binary and its libraries alone. The default + arcade flash images, the on-screen button sheet and the reios font are + compiled in as resources. + ref: CMakeLists.txt:966-1001, .github/workflows/build-and-release.yml:56, + .github/workflows/build-and-release.yml:71-72 - flycast_roms.json ships beside the binary and lists an md5 for naomi.zip, - naomi2.zip and awbios.zip. The only function reading them, CompareBIOS, - has no live caller (DojoFile.cpp:228-242, DojoGui.cpp:1314,1369). - - Distributed with the emulator and fetched at build time: data/default.zip - and the per-game .nvmem/.eeprom/.nvmem2 netplay files from - flycast-netplay-nvmem, data/game_values/*.json from - flycast-dojo-game-values, training/*.lua from flycast-dojo-training, and - flycast_roms.json. - ref: CMakeLists.txt:1787-1834, .github/workflows/c-cpp.yml:171-192, - shell/linux/make-appimage.sh:136-149 - - Also read but never user supplied: buttons.png overrides an on-screen - button sheet compiled into the binary (core/rend/osd.cpp:152-171), - mappings/*.cfg are written by the input configuration screen - (core/input/mapping.cpp:382-445), and flycast.lua is a user script - (core/lua/lua.cpp:746-761). + Also read but never user supplied: buttons.png overrides the compiled in + button sheet (core/rend/osd.cpp:155-174), mappings/*.cfg are written by the + input configuration screen (core/input/mapping.cpp:401, 461-463), + flycast.lua is a user script (core/lua/lua.cpp:750-760), and the training + mode runs training/cvs2.lua or training/mvsc2.lua from the config directory + for those two games, otherwise training/.lua from the data directory + (core/dojo/dojo.cpp:287-319). files: # ------------------------------------------------------- @@ -93,30 +102,16 @@ files: hle_fallback: true min_size: 2097152 validation: [size] - note: "Boot ROM. reios takes over when it is absent, and is forced under netplay, match playback and match recording. Read fails below 2 MB." - source_ref: "source core/hw/holly/sb_mem.cpp:269, source core/emulator.cpp:566-569, source core/hw/flashrom/flashrom.cpp:23-33" + note: "Boot ROM. reios runs by default and when it is absent. Read when HLE BIOS is off, for the product ids that force the real BIOS, and to boot the BIOS menu without a disc, which fails without it. Read fails below 2 MB." + source_ref: "source core/hw/flashrom/nvmem.cpp:256-272, source core/emulator.cpp:502-526, source core/hw/flashrom/flashrom.cpp:21-33" - name: dc_nvmem.bin system: sega-dreamcast required: false min_size: 131072 validation: [size] - note: "Flash memory. Created and filled with factory settings when absent." - source_ref: "source core/hw/holly/sb_mem.cpp:214, source core/hw/holly/sb_mem.cpp:111-187" - - - name: dc_nvmem.bin.net - system: sega-dreamcast - required: false - min_size: 131072 - validation: [size] - note: "Flash memory used once Dojo mode is enabled, keeping netplay settings apart from local ones. Absent, the emulator logs that the flash is missing and creates it: the factory partition is rewritten, the user partition erased and ISP blocks and a random console id seeded (core/hw/flashrom/flashrom.h:494-524). Nothing distributed seeds it, and SaveRomFiles writes dc_nvmem.bin, never this name (core/hw/holly/sb_mem.cpp:279-286)." - source_ref: "source core/hw/holly/sb_mem.cpp:189-230" - - - name: font.bin - system: sega-dreamcast - required: false - note: "System font served by the reios font syscall. A built-in font is used when absent." - source_ref: "source core/reios/reios.cpp:741-764, source core/oslib/oslib.cpp:195-198" + note: "Flash memory. Created and filled with factory settings when absent, and written back under this name." + source_ref: "source core/hw/flashrom/nvmem.cpp:214-222, source core/hw/flashrom/nvmem.cpp:120-197, source core/hw/flashrom/nvmem.cpp:274-284" # ------------------------------------------------------- # Sega NAOMI @@ -128,78 +123,123 @@ files: min_size: 2097152 validation: [size] note: "Flat boot ROM. Games whose bios field is null run from it when naomi.zip is missing." - source_ref: "source core/hw/holly/sb_mem.cpp:269, source core/hw/naomi/naomi_cart.cpp:202-207" + source_ref: "source core/hw/flashrom/nvmem.cpp:256-272, source core/hw/naomi/naomi_cart.cpp:190-206" - name: naomi.zip system: sega-naomi required: true category: bios_zip - note: "System BIOS archive. 89 game entries name it and abort without it." - source_ref: "source core/hw/naomi/naomi_roms.cpp:84-140, upstream core/hw/naomi/naomi_cart.cpp:194-208" + note: "System BIOS archive. 102 game entries name it and abort without it, and the 131 entries with no bios field read it too." + source_ref: "source core/hw/naomi/naomi_roms.cpp:83-141, source core/hw/naomi/naomi_cart.cpp:190-206" contents: - name: epr-21576h.ic27 description: Japan size: 2097152 - - name: epr-21577h.ic27 - description: USA + crc32: "d4895685" + - name: epr-21576g.ic27 + description: Japan size: 2097152 + crc32: "d2a1c6bf" - name: epr-21578h.ic27 description: Export size: 2097152 + crc32: "7b452946" + - name: epr-21578g.ic27 + description: Export + size: 2097152 + crc32: "55413214" + - name: epr-21577h.ic27 + description: USA + size: 2097152 + crc32: "fdf17452" + - name: epr-21577g.ic27 + description: USA + size: 2097152 + crc32: "25f64af7" - name: epr-21579d.ic27 description: Korea size: 2097152 + crc32: "33513691" + - name: epr-21576h_multi.ic27 + description: "Multi-region, listed for the Korea region" + size: 2097152 + crc32: "cce01f1f" + + - name: airlbios.zip + system: sega-naomi + required: false + category: bios_zip + note: "Airline Pilots Deluxe. Required by alpilot and alpilotj." + source_ref: "source core/hw/naomi/naomi_roms.cpp:29-37, source core/hw/naomi/naomi_roms.cpp:932, 964" + contents: + - name: epr-21802.ic27 + description: Export + size: 2097152 + crc32: "a77c6b1c" + - name: epr-21801.ic27 + description: USA + size: 2097152 + crc32: "a21bef24" - name: f355bios.zip system: sega-naomi required: false category: bios_zip note: "Ferrari F355 Challenge twin. Required by f355twin, f355twinp and f355twn2." - source_ref: "source core/hw/naomi/naomi_roms.cpp:47-54, source core/hw/naomi/naomi_roms.cpp:1689, 1725, 1761" + source_ref: "source core/hw/naomi/naomi_roms.cpp:46-56, source core/hw/naomi/naomi_roms.cpp:1843, 1883, 1923" contents: - - name: epr-22849.ic27 - description: Japan - size: 2097152 - - name: epr-22850.ic27 - description: USA - size: 2097152 - name: epr-22851.ic27 description: Export size: 2097152 + crc32: "62483677" + - name: epr-22850.ic27 + description: USA + size: 2097152 + crc32: "28aa539d" + - name: epr-22849.ic27 + description: Japan + size: 2097152 + crc32: "121e009c" - name: f355dlx.zip system: sega-naomi required: false category: bios_zip note: "Ferrari F355 Challenge deluxe. Required by f355." - source_ref: "source core/hw/naomi/naomi_roms.cpp:56-70, source core/hw/naomi/naomi_roms.cpp:1645" + source_ref: "source core/hw/naomi/naomi_roms.cpp:57-71, source core/hw/naomi/naomi_roms.cpp:1797" contents: - - name: epr-21862.ic27 - description: Japan - size: 2097152 - - name: epr-21863.ic27 - description: USA - size: 2097152 - name: epr-21864.ic27 description: Export size: 2097152 + crc32: "12ed7c66" + - name: epr-21863.ic27 + description: USA + size: 2097152 + crc32: "0615a4d1" + - name: epr-21862.ic27 + description: Japan + size: 2097152 + crc32: "1f630716" - name: hod2bios.zip system: sega-naomi required: false category: bios_zip note: "House of the Dead 2. Required by hotd2, hotd2o, hotd2e and hotd2p." - source_ref: "source core/hw/naomi/naomi_roms.cpp:72-82, source core/hw/naomi/naomi_roms.cpp:2003, 2042, 2081, 2120" + source_ref: "source core/hw/naomi/naomi_roms.cpp:72-82, source core/hw/naomi/naomi_roms.cpp:2170, 2209, 2248, 2287" contents: - - name: epr-21329.ic27 - description: Japan - size: 2097152 - - name: epr-21330.ic27 - description: USA - size: 2097152 - name: epr-21331.ic27 description: Export size: 2097152 + crc32: "065f8500" + - name: epr-21330.ic27 + description: USA + size: 2097152 + crc32: "9e3bfa1b" + - name: epr-21329.ic27 + description: Japan + size: 2097152 + crc32: "d99e5b9b" # ------------------------------------------------------- # Sega NAOMI 2 @@ -210,25 +250,48 @@ files: required: false min_size: 2097152 validation: [size] - note: "Flat boot ROM for the NAOMI 2 platform." - source_ref: "source core/hw/holly/sb_mem.cpp:35-36, 269" + note: "Flat boot ROM for the NAOMI 2 platform. Every NAOMI 2 game names naomi2 in its bios field, so naomi2.zip is still required and replaces it." + source_ref: "source core/hw/flashrom/nvmem.cpp:43-44, 256-272" - name: naomi2.zip system: sega-naomi2 required: true category: bios_zip - note: "System BIOS archive. All 43 NAOMI 2 game entries name it and abort without it." - source_ref: "source core/hw/naomi/naomi_roms.cpp:166-172, source core/hw/naomi/naomi_cart.cpp:646-657" + note: "System BIOS archive. All 45 NAOMI 2 game entries name it and abort without it." + source_ref: "source core/hw/naomi/naomi_roms.cpp:142-162, source core/hw/naomi/naomi_cart.cpp:785-806" contents: - name: epr-23605c.ic27 description: Japan size: 2097152 + crc32: "297ea6ed" + - name: epr-23605b.ic27 + description: Japan + size: 2097152 + crc32: "3a3242d4" - name: epr-23607c.ic27 description: USA size: 2097152 + crc32: "750e254b" + - name: epr-23607b.ic27 + description: USA + size: 2097152 + crc32: "f308c5e9" - name: epr-23608c.ic27 description: Export size: 2097152 + crc32: "6ef1dd8e" + - name: epr-23608b.ic27 + description: Export + size: 2097152 + crc32: "a554b1e3" + - name: epr-23609b.ic27 + description: Korea + size: 2097152 + crc32: "99e3751f" + - name: epr-23605c_multi.ic27 + description: "Multi-region, listed for the Korea region" + size: 2097152 + crc32: "353fdbcd" # ------------------------------------------------------- # Sammy Atomiswave @@ -238,11 +301,32 @@ files: required: true category: bios_zip note: "System BIOS archive. All 34 Atomiswave game entries name it and abort without it." - source_ref: "source core/hw/naomi/naomi_roms.cpp:38-45, source core/hw/naomi/naomi_cart.cpp:194-208" + source_ref: "source core/hw/naomi/naomi_roms.cpp:38-45, source core/hw/naomi/naomi_cart.cpp:190-206" contents: - name: bios0.ic23 size: 131072 + # ------------------------------------------------------- + # Sega System SP + # ------------------------------------------------------- + - name: segasp.zip + system: sega-systemsp + required: true + category: bios_zip + note: "System BIOS archive. All 26 System SP game entries name it and abort without it. The USA and Export regions also take their default motherboard EEPROM from it." + source_ref: "source core/hw/naomi/naomi_roms.cpp:163-178, source core/hw/naomi/naomi_cart.cpp:124-137, source core/hw/naomi/naomi_cart.cpp:785-806" + contents: + - name: epr-24328a.ic50 + description: "Boot ROM 2.01, all regions" + size: 2097152 + crc32: "03ec3805" + - name: mb_eeprom_us.ic54s + description: USA + crc32: "4186d7ab" + - name: mb_eeprom_exp.ic54s + description: Export + crc32: "947ddfad" + # ------------------------------------------------------- # Input # ------------------------------------------------------- @@ -250,7 +334,7 @@ files: required: false category: game_data note: "SDL controller mapping database, read from the data directory then the config directory. Not part of the release archive. SDL built-in mappings are used when absent." - source_ref: "source core/sdl/sdl.cpp:183-191" + source_ref: "source core/sdl/sdl.cpp:185-191" platform_details: dreamcast: @@ -258,14 +342,14 @@ platform_details: flash_size: 131072 ram_size: 16777216 hle_available: true - source_ref: "core/emulator.cpp:436-442" + source_ref: "core/emulator.cpp:368-374" naomi: bios_size: 2097152 sram_size: 32768 ram_size: 33554432 hle_available: false - source_ref: "core/emulator.cpp:443-449" + source_ref: "core/emulator.cpp:375-381" naomi2: bios_size: 2097152 @@ -273,11 +357,18 @@ platform_details: ram_size: 33554432 eram_size: 33554432 hle_available: false - source_ref: "core/emulator.cpp:450-458" + source_ref: "core/emulator.cpp:382-389" atomiswave: bios_size: 131072 sram_size: 131072 ram_size: 16777216 hle_available: false - source_ref: "core/emulator.cpp:459-465" + source_ref: "core/emulator.cpp:390-396" + + systemsp: + bios_size: 2097152 + sram_size: 131072 + ram_size: 33554432 + hle_available: false + source_ref: "core/emulator.cpp:397-403"