emulator: Flycast type: standalone + libretro core_classification: official_port source: "https://github.com/flyinghead/flycast" logo: "https://raw.githubusercontent.com/flyinghead/flycast/master/shell/linux/flycast.png" profiled_date: "2026-10-21" source_commit: "6d81b998169b916ad7d7d6f403f7dc2c18e2aea5" core_version: "Git" display_name: "Sega - Dreamcast/Naomi (Flycast)" cores: - flycast - flycast_dev - flycastvl - "flycast-next" - "flycastsa" - "flycast_32b" systems: - sega-dreamcast - sega-naomi - sega-naomi2 - sega-atomiswave - sega-systemsp standalone_directories: - "Dreamcast.BiosPath" - "find_user_data_dir" - "$XDG_DATA_HOME/flycast" - "$HOME/.local/share/flycast" - "FLYCAST_BIOS_PATH" data_root: android: path: "Android/data/com.flycast.emulator/files/data" source_ref: "shell/android-studio/flycast/src/main/java/com/flycast/emulator/BaseGLActivity.java:92-97,442-447, shell/android-studio/flycast/src/main/jni/src/Android.cpp:143-159, shell/android-studio/flycast/build.gradle.kts:21" note: "data/ under the home directory set in the app settings, getFilesDir() when no external storage is mounted" ios: path: "Documents" source_ref: "shell/apple/emulator-ios/emulator/FlycastViewController.mm:198-201" note: "the app's sandbox Documents folder, with no data/ subfolder" windows: path: "/data" source_ref: "core/windows/winmain.cpp:59-78" note: "the UWP build uses data/ under the app's LocalFolder (core/windows/winmain.cpp:80-89)" macos: path: "~/Library/Application Support/Flycast/data" source_ref: "shell/apple/emulator-osx/emulator-osx/osx-main.mm:78-102" note: "~/.flycast/data when ~/.flycast exists. A second running instance appends its number to the folder" linux: path: "$XDG_DATA_HOME/flycast, else ~/.local/share/flycast" source_ref: "core/linux-dist/main.cpp:74-99,247" notes: | The libretro core is built from flyinghead/flycast, the same tree as the standalone emulator: the wrapper lives in shell/libretro and is compiled with -DLIBRETRO=ON. Flycast has a built-in HLE BIOS (reios) for Dreamcast that boots most games without a real boot ROM. A short list of product ids forces the real BIOS (core/emulator.cpp:277-278) and is told "This game requires a real BIOS" when it is absent (core/emulator.cpp:616-621). Without content, the core boots the BIOS and fails when none is found (core/emulator.cpp:601-605). Arcade systems (NAOMI, NAOMI 2, Atomiswave, System SP) load MAME-format BIOS archives. The libretro port appends "dc/" to the system directory (shell/libretro/libretro.cpp:2252-2253). All files below are relative to system_dir/dc/. The standalone emulator looks for each file in the BIOS paths the user configures, then in its data directory, then in the system data directories, then in the content directories, and writes the flash back to the data directory (core/oslib/oslib.cpp:118-196, core/stdclass.cpp:95-125). The data directory, given per system in data_root, is the data/ folder of the configuration directory except on Linux and iOS. standalone_path is relative to it. The BIOS paths are the Dreamcast.BiosPath setting (core/cfg/option.cpp:144), the system data directories take $FLYCAST_BIOS_PATH (core/linux-dist/main.cpp:198-202), and find_user_data_dir() returns the data directory (core/linux-dist/main.cpp:74, core/linux-dist/main.cpp:247). Only the Dreamcast reads flat files. The prefix is dc_ for Dreamcast (core/hw/flashrom/nvmem.cpp:35-50), and the boot ROM is searched as {prefix}boot.bin then {prefix}bios.bin (core/hw/flashrom/nvmem.cpp:304). Flash is {prefix}nvmem.bin and is created when absent (core/hw/flashrom/nvmem.cpp:252-256). Arcade platforms return before the boot ROM search (core/hw/flashrom/nvmem.cpp:300-302), and their flash is a per-game save file. The system font is a resource compiled into the binary (core/reios/reios.cpp:761-764). Arcade BIOS archives are opened as .zip, then .7z (core/hw/naomi/naomi_cart.cpp:75-78), first in system_dir/dc, then in the content directory (shell/libretro/oslib.cpp:118-130). Each ROM inside is looked up by CRC, then by file name, in the game archive, its parent, then the BIOS archive (core/hw/naomi/naomi_cart.cpp:89-106). The blob of the configured region is mapped first, any region otherwise, and a game whose BIOS cannot be loaded aborts (core/hw/naomi/naomi_cart.cpp:196-207). Games whose bios field is naomi2 run as NAOMI 2 and those whose bios field is segasp as System SP (core/hw/naomi/naomi_cart.cpp:810-821). BIOS[] also declares naomidev and naomigd. No entry of Games[] carries either name in its bios field, so neither archive is opened. naomi-jp-d and naomi-ko-h read naomi.zip (core/hw/naomi/naomi_roms.cpp:219-242). files: # ------------------------------------------------------- # Sega Dreamcast # ------------------------------------------------------- - name: "dc_boot.bin" path: "dc/dc_boot.bin" standalone_path: "dc_boot.bin" aliases: ["dc_bios.bin"] system: sega-dreamcast required: false hle_fallback: true size: 2097152 note: "Dreamcast boot ROM. reios is used when it is absent, except for the product ids that force the real BIOS. Searched as dc_boot.bin then dc_bios.bin." source_ref: "core/hw/flashrom/nvmem.cpp:298-316, core/emulator.cpp:613-622" - name: "dc_nvmem.bin" path: "dc/dc_nvmem.bin" standalone_path: "dc_nvmem.bin" system: sega-dreamcast required: false hle_fallback: true size: 131072 note: "Dreamcast flash memory. Created with factory settings when absent, written back on exit." source_ref: "core/hw/flashrom/nvmem.cpp:252-256, core/hw/flashrom/nvmem.cpp:321-322" # ------------------------------------------------------- # Sega NAOMI # ------------------------------------------------------- - name: "naomi.zip" path: "dc/naomi.zip" standalone_path: "naomi.zip" system: sega-naomi required: true category: bios_zip note: "NAOMI system BIOS archive. Games with no bios field or with naomi, naomi-jp-d or naomi-ko-h read it and abort without it." source_ref: "core/hw/naomi/naomi_roms.cpp:86-144, core/hw/naomi/naomi_roms.cpp:219-242, core/hw/naomi/naomi_cart.cpp:196-207" contents: - name: "epr-21576h.ic27" description: Japan size: 2097152 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, the BIOS of naomi-ko-h" size: 2097152 crc32: "cce01f1f" - name: "epr-21576d.ic27" description: "Japan, the BIOS of naomi-jp-d" size: 2097152 crc32: "3b2afa7b" - name: "airlbios.zip" path: "dc/airlbios.zip" standalone_path: "airlbios.zip" system: sega-naomi required: false category: bios_zip note: "Airline Pilots Deluxe BIOS. Required by the two Airline Pilots entries." source_ref: "core/hw/naomi/naomi_roms.cpp:29-37, core/hw/naomi/naomi_roms.cpp:1000, core/hw/naomi/naomi_roms.cpp:1032" contents: - name: "epr-21802.ic27" description: Export size: 2097152 crc32: "a77c6b1c" - name: "epr-21801.ic27" description: USA size: 2097152 crc32: "a21bef24" - name: "f355bios.zip" path: "dc/f355bios.zip" standalone_path: "f355bios.zip" system: sega-naomi required: false category: bios_zip note: "Ferrari F355 Challenge twin BIOS. Required by the three twin entries." source_ref: "core/hw/naomi/naomi_roms.cpp:49-59, core/hw/naomi/naomi_roms.cpp:1887, core/hw/naomi/naomi_roms.cpp:1926, core/hw/naomi/naomi_roms.cpp:1965" contents: - 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" path: "dc/f355dlx.zip" standalone_path: "f355dlx.zip" system: sega-naomi required: false category: bios_zip note: "Ferrari F355 Challenge deluxe BIOS. Required by f355." source_ref: "core/hw/naomi/naomi_roms.cpp:60-74, core/hw/naomi/naomi_roms.cpp:1843" contents: - 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" path: "dc/hod2bios.zip" standalone_path: "hod2bios.zip" system: sega-naomi required: false category: bios_zip note: "The House of the Dead 2 BIOS. Required by the four hotd2 entries." source_ref: "core/hw/naomi/naomi_roms.cpp:75-85, core/hw/naomi/naomi_roms.cpp:2203, core/hw/naomi/naomi_roms.cpp:2241, core/hw/naomi/naomi_roms.cpp:2279, core/hw/naomi/naomi_roms.cpp:2317" contents: - 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 # ------------------------------------------------------- - name: "naomi2.zip" path: "dc/naomi2.zip" standalone_path: "naomi2.zip" system: sega-naomi2 required: true category: bios_zip note: "NAOMI 2 system BIOS archive. Every game whose bios field is naomi2 aborts without it." source_ref: "core/hw/naomi/naomi_roms.cpp:182-202, core/hw/naomi/naomi_cart.cpp:818-819, core/hw/naomi/naomi_cart.cpp:196-207" 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 size: 2097152 crc32: "353fdbcd" # ------------------------------------------------------- # Sega Atomiswave # ------------------------------------------------------- - name: "awbios.zip" path: "dc/awbios.zip" standalone_path: "awbios.zip" system: sega-atomiswave required: true category: bios_zip note: "Atomiswave system BIOS archive. The first 64 KB of bios0.ic23 are mapped. Every Atomiswave game aborts without it." source_ref: "core/hw/naomi/naomi_roms.cpp:38-48, core/hw/naomi/naomi_cart.cpp:196-207" contents: - name: "bios0.ic23" size: 131072 crc32: "719b2b0b" # ------------------------------------------------------- # Sega System SP # ------------------------------------------------------- - name: "segasp.zip" path: "dc/segasp.zip" standalone_path: "segasp.zip" system: sega-systemsp required: true category: bios_zip note: "System SP BIOS archive. The USA and Export regions also load a default motherboard EEPROM from it. Every game whose bios field is segasp aborts without it." source_ref: "core/hw/naomi/naomi_roms.cpp:203-218, core/hw/naomi/naomi_cart.cpp:820-821, core/hw/naomi/naomi_cart.cpp:126-139" contents: - name: "epr-24328a.ic50" size: 2097152 crc32: "03ec3805" - name: "mb_eeprom_us.ic54s" description: USA size: 128 crc32: "4186d7ab" - name: "mb_eeprom_exp.ic54s" description: Export size: 128 crc32: "947ddfad" platform_details: dreamcast: bios_size: 2097152 flash_size: 131072 ram_size: 16777216 hle_available: true source_ref: "core/emulator.cpp:456-462" naomi: bios_size: 2097152 sram_size: 32768 ram_size: 33554432 hle_available: false source_ref: "core/emulator.cpp:463-469" naomi2: bios_size: 2097152 sram_size: 32768 ram_size: 33554432 hle_available: false source_ref: "core/emulator.cpp:470-477" atomiswave: bios_size: 131072 sram_size: 131072 ram_size: 16777216 hle_available: false source_ref: "core/emulator.cpp:478-484" systemsp: bios_size: 2097152 sram_size: 131072 ram_size: 33554432 hle_available: false source_ref: "core/emulator.cpp:485-491"