Files
libretro/emulators/xroar.yml
Abdessamad Derraz 73ccb216f5 feat: align gap analysis coherence, add 7 BIOS files, unsourceable field
cross_reference.py: add bios_mode/agnostic/load_from filters, archive
grouping, unsourceable field support. verify.py: case-insensitive
by_name lookup, storage:release in_repo, unsourceable skip, trailing
slash fix. generate_site.py: enriched all_declared, platform-relevant
profile filtering, proper in_repo resolution on emulator pages,
acknowledged gaps section.

New BIOS: delta2.rom (XRoar), tilekey.dat + sprites.sif (NXEngine),
Gram Kracker.ctg + cf7+.ctg + ti-pcard.ctg (ti99sim), desc.dat
(SDLPAL). Profiles: hle_fallback on tilekey.dat/key.txt, unsourceable
on 7 files with source-verified reasons.
2026-04-02 15:35:24 +02:00

403 lines
14 KiB
YAML

emulator: XRoar
type: standalone
source: "https://www.6809.org.uk/git/xroar.git"
upstream: "https://www.6809.org.uk/xroar/"
profiled_date: "2026-03-26"
core_version: "1.10"
display_name: "Dragon / CoCo / MC-10 (XRoar)"
cores:
- xroar
systems:
- dragon32
- dragon64
- coco
- coco3
- mc10
notes: |
XRoar by Ciaran Anscomb emulates Dragon 32/64, Tandy CoCo 1/2/3,
MC-10, Alice, and clones (MX-1600, CP-400, Dragon 200-E, Deluxe CoCo).
ROM files are searched in a configurable rompath directory with automatic
extension appending (.rom, .ROM, .dgn, .DGN). Batocera sets rompath to
/userdata/bios/xroar/.
The romlist mechanism defines fallback filenames per ROM slot. Each machine
type has a default romlist that tries filenames in priority order. CRC32 is
computed for loaded ROMs and matched against known-good values for breakpoint
and feature detection, but mismatches do not prevent loading.
Machine selection: Batocera maps system names to default machines via
xroarGenerator.py (mc10 -> mc10, dragon64 -> dragon64, others -> coco2bus).
files:
# ---- Dragon 32 ----
- name: "d32.rom"
system: dragon32
description: "Dragon 32 BASIC ROM"
required: true
size: 16384
crc32: "e3879310"
validation: [crc32]
aliases: [dragon32, d32rom, "Dragon Data Ltd - Dragon 32 - IC17"]
source_ref: "xroar.c:643 (romlist d32), dragon.c:792,798-803,820-821 (load + CRC)"
note: "Combined 16K ROM. Loaded into a single 16384-byte rombank slot."
# ---- Dragon 64 ----
- name: "d64_1.rom"
system: dragon64
description: "Dragon 64 32K mode BASIC ROM"
required: true
size: 16384
crc32: "84f68bf9"
validation: [crc32]
aliases: [d64rom1, dragrom, "Dragon Data Ltd - Dragon 64 - IC17", "Dragon Data Ltd - TANO IC18", "Eurohard S.A. - Dragon 200 IC18"]
source_ref: "xroar.c:641 (romlist d64_1), xroar.c:647 (romlist dragon64), dragon64.c:138-141,155-157 (load + CRC)"
note: "IC17 ROM. Required for the machine to start."
- name: "d64_2.rom"
system: dragon64
description: "Dragon 64 64K mode BASIC ROM"
required: false
size: 16384
crc32: "17893a42"
validation: [crc32]
aliases: [d64rom2, "Dragon Data Ltd - Dragon 64 - IC18", "Dragon Data Ltd - TANO IC17", "Eurohard S.A. - Dragon 200 IC17"]
source_ref: "xroar.c:642 (romlist d64_2), xroar.c:648 (romlist dragon64_alt), dragon64.c:146-152,160-162 (load + CRC)"
note: "IC18 ROM. 64K mode alternate BASIC. Machine starts without it (32K mode only)."
# ---- Dragon 200-E ----
- name: "d200e_1.rom"
system: dragon64
description: "Dragon 200-E BASIC IC18 (Spanish)"
required: true
size: 16384
crc32: "95af0a0a"
validation: [crc32]
aliases: [d200e_rom1, ic18_v1.4e.ic34]
source_ref: "xroar.c:644 (romlist d200e_1), xroar.c:650 (romlist dragon200e), xroar.c:735 (crclist)"
note: "Required for Dragon 200-E. Falls back to d64_1 then generic dragon if not found."
- name: "d200e_2.rom"
system: dragon64
description: "Dragon 200-E BASIC IC17 (Spanish)"
required: false
size: 16384
aliases: [d200e_rom2, ic17_v1.4e.ic37]
source_ref: "xroar.c:645 (romlist d200e_2), xroar.c:651 (romlist dragon200e_alt)"
note: "64K mode alternate. Falls back to d64_2 if not found."
- name: "d200e_26.rom"
system: dragon64
description: "Dragon 200-E external character generator ROM"
required: false
size: 4096
aliases: [rom26.ic1]
source_ref: "xroar.c:652 (romlist dragon200e_charset), dragon.c:523-539 (ext_charset load)"
note: "Spanish character set. Loaded into a 4096-byte rombank. Machine works without it (uses standard charset)."
# ---- Dragon Professional (Alpha) ----
- name: "alpha-boot-v1.0.rom"
system: dragon64
description: "Dragon Professional (Alpha) boot ROM v1.0"
required: true
crc32: "d6172b56"
validation: [crc32]
aliases: [alpha_bt_10, "Dragon Data Ltd - Dragon Alpha Boot v1.0 150584"]
source_ref: "xroar.c:654 (romlist dragonpro_boot), xroar.c:741 (crclist), dragonpro.c:231-234 (load)"
note: "Required for Dragon Professional machine. Loaded as extbas_rom (boot ROM)."
- name: "alpha-basic.rom"
system: dragon64
description: "Dragon Professional (Alpha) BASIC ROM"
required: true
aliases: [alpha_ba, "Dragon Data Ltd - Dragon Alpga Basic"]
source_ref: "xroar.c:655 (romlist dragonpro_basic), dragonpro.c:240-243 (load)"
note: "Loaded as altbas_rom. Falls back to d64_1 if not found."
# ---- Tandy CoCo (Colour BASIC) ----
- name: "bas13.rom"
system: coco
description: "Tandy CoCo Colour BASIC 1.3"
required: true
size: 8192
crc32: "d8f4d15e"
validation: [crc32]
source_ref: "xroar.c:657 (romlist coco), xroar.c:747 (crclist bas13), dragon.c:807-812,824-826 (load + CRC)"
note: "Default Colour BASIC. First tried in the @coco romlist. 8K ROM loaded into slot 1 of a 2-slot rombank."
- name: "bas12.rom"
system: coco
description: "Tandy CoCo Colour BASIC 1.2"
required: false
size: 8192
crc32: "54368805"
validation: [crc32]
aliases: ["Color Basic v1.2 (1982)(Tandy)"]
source_ref: "xroar.c:657 (romlist coco), xroar.c:746 (crclist bas12)"
note: "Alternative to bas13. Second in fallback order."
- name: "bas11.rom"
system: coco
description: "Tandy CoCo Colour BASIC 1.1"
required: false
size: 8192
crc32: "6270955a"
validation: [crc32]
source_ref: "xroar.c:657 (romlist coco), xroar.c:745 (crclist bas11)"
note: "Used by CoCo 1E. Third in fallback order."
- name: "bas10.rom"
system: coco
description: "Tandy CoCo Colour BASIC 1.0"
required: false
size: 8192
crc32: "00b50aaa"
validation: [crc32]
source_ref: "xroar.c:657 (romlist coco), xroar.c:744 (crclist bas10)"
note: "Earliest version. Used by original CoCo 1. Last in fallback order."
# ---- Tandy CoCo (Extended Colour BASIC) ----
- name: "extbas11.rom"
system: coco
description: "Tandy CoCo Extended Colour BASIC 1.1"
required: true
size: 8192
crc32: "a82a6254"
validation: [crc32]
source_ref: "xroar.c:658 (romlist coco_ext), xroar.c:752 (crclist extbas11), dragon.c:798-803,828-829 (load + CRC)"
note: "Default Extended BASIC. 8K ROM loaded into slot 0 of a 2-slot rombank."
- name: "extbas10.rom"
system: coco
description: "Tandy CoCo Extended Colour BASIC 1.0"
required: false
size: 8192
crc32: "e031d076"
validation: [crc32]
source_ref: "xroar.c:658 (romlist coco_ext), xroar.c:751 (crclist extbas10)"
note: "Earlier version. Second in fallback order."
# ---- Tandy CoCo 3 ----
- name: "coco3.rom"
system: coco3
description: "CoCo 3 Super Extended Colour BASIC (NTSC)"
required: true
size: 32768
crc32: "b4c88d6c"
validation: [crc32]
source_ref: "xroar.c:688 (romlist coco3), xroar.c:762 (crclist coco3), coco3.c:254-256,512-526 (load + CRC)"
note: "32K combined ROM. Single required ROM for CoCo 3 NTSC."
- name: "coco3p.rom"
system: coco3
description: "CoCo 3 Super Extended Colour BASIC (PAL)"
required: true
size: 32768
source_ref: "xroar.c:689 (romlist coco3p), xroar.c:505,514 (machine config), coco3.c:254-256"
note: "PAL variant of the CoCo 3 ROM. Required for PAL CoCo 3 machines."
# ---- Tandy MC-10 ----
- name: "mc10.rom"
system: mc10
description: "Tandy MC-10 Microcolour BASIC"
required: true
size: 8192
crc32: "11fda97e"
validation: [crc32]
source_ref: "xroar.c:695 (romlist mc10), xroar.c:767 (crclist mc10), mc10.c:157-158,397-407 (load + CRC)"
note: "Single required ROM for MC-10."
- name: "alice.rom"
system: mc10
description: "Matra & Hachette Alice Microcolour BASIC"
required: true
size: 8192
crc32: "f876abe9"
validation: [crc32]
source_ref: "xroar.c:697 (romlist alice), xroar.c:769 (crclist alice), mc10.c:157-158"
note: "French Alice variant. Required for Alice machine. MC-10 compatible."
# ---- Deluxe CoCo (prototype) ----
- name: "deluxe.rom"
system: coco
description: "Tandy Deluxe CoCo Advanced BASIC (bank 0)"
required: true
crc32: "1cce231e"
validation: [crc32]
aliases: [adv070_u24]
source_ref: "xroar.c:673 (romlist deluxecoco), xroar.c:757 (crclist), deluxecoco.c:191-194 (load)"
note: "Primary ROM for the Deluxe CoCo prototype. Loaded as extbas_rom."
- name: "adv071_u24.rom"
system: coco
description: "Tandy Deluxe CoCo ROM bank 1"
required: false
source_ref: "xroar.c:675 (romlist deluxecoco1), deluxecoco.c:201-204 (load)"
- name: "adv072_u24.rom"
system: coco
description: "Tandy Deluxe CoCo ROM bank 2"
required: false
source_ref: "xroar.c:676 (romlist deluxecoco2), deluxecoco.c:208-211 (load)"
- name: "adv073-2_u24.rom"
system: coco
description: "Tandy Deluxe CoCo ROM bank 3"
required: false
aliases: [adv073_u24]
source_ref: "xroar.c:677 (romlist deluxecoco3), deluxecoco.c:215-218 (load)"
# ---- Dynacom MX-1600 (Brazilian clone) ----
- name: "mx1600bas.rom"
system: coco
description: "Dynacom MX-1600 Colour BASIC"
required: true
crc32: "d918156e"
validation: [crc32]
aliases: [mx1600bas_zephyr]
source_ref: "xroar.c:679 (romlist mx1600), xroar.c:748 (crclist mx1600)"
note: "Required for MX-1600. Zephyr-patched variant (CRC32 d11b1c96) is an alias."
- name: "mx1600extbas.rom"
system: coco
description: "Dynacom MX-1600 Extended Colour BASIC"
required: true
crc32: "322a3d58"
validation: [crc32]
source_ref: "xroar.c:680 (romlist mx1600ext), xroar.c:753 (crclist mx1600ext)"
# ---- Prologica CP-400 (Brazilian clone) ----
- name: "cp400bas.rom"
system: coco
description: "Prologica CP-400 Colour BASIC"
required: true
crc32: "0b2903d4"
validation: [crc32]
source_ref: "xroar.c:682 (romlist cp400), xroar.c:749 (crclist cp400)"
- name: "cp400ext.rom"
system: coco
description: "Prologica CP-400 Extended Colour BASIC"
required: true
crc32: "114accbc"
validation: [crc32]
source_ref: "xroar.c:683 (romlist cp400ext), xroar.c:754 (crclist cp400ext)"
# ---- DOS cartridge ROMs (all optional) ----
- name: "disk11.rom"
system: coco
description: "Tandy RS-DOS 1.1 (CoCo floppy disk controller)"
required: false
source_ref: "xroar.c:708 (romlist rsdos), rsdos.c:176 (default @rsdos)"
note: "Primary CoCo disk controller ROM. disk10.rom (RS-DOS 1.0) is an earlier version used as fallback."
- name: "hdbdw3bck.rom"
system: coco
description: "RS-DOS with Becker port (DriveWire)"
required: false
source_ref: "xroar.c:718 (romlist rsdos_becker), xroar.c:572-574 (cart becker)"
note: "For CoCo with Becker port hardware. Enables DriveWire connectivity."
- name: "ddos12a.rom"
system: dragon64
description: "DragonDOS 1.2a (Dragon floppy disk controller)"
required: false
source_ref: "xroar.c:702 (romlist dragondos), dragondos.c:173 (default @dragondos_compat)"
note: "Latest DragonDOS version. Fallback chain tries DOSPlus -> SuperDOS -> DragonDOS -> Cumana. Older versions: ddos12, ddos40, ddos15, ddos10."
- name: "dplus49b.rom"
system: dragon64
description: "DOSPlus 4.9b (Dragon compatible DOS)"
required: false
source_ref: "xroar.c:703 (romlist dosplus)"
note: "First tried in DragonDOS-compatible cartridge. Enhanced Dragon DOS. Older version: dplus48 (alias: dosplus-4.8, DOSPLUS)."
- name: "sdose6.rom"
system: dragon64
description: "SuperDOS E6 (Dragon compatible DOS)"
required: false
aliases: ["PNP - SuperDOS E6"]
source_ref: "xroar.c:704 (romlist superdos)"
note: "Latest SuperDOS. Older versions: sdose5, sdose4."
- name: "cdos20.rom"
system: dragon64
description: "Cumana DOS 2.0 (Dragon compatible DOS)"
required: false
aliases: [CDOS20, "CumanaDOSv2.0"]
source_ref: "xroar.c:705 (romlist cumana)"
- name: "delta2.rom"
system: dragon64
description: "Delta System 2 (Premier Microsystems disk controller)"
required: false
aliases: ["Premier Micros - DeltaDOS"]
source_ref: "xroar.c:711 (romlist delta), deltados.c:160 (default @delta)"
note: "Latest Delta version. Older versions: delta1a, delta19, delta, deltados."
- name: "cp450dsk.rom"
system: coco
description: "Prologica CP-450 DOS cartridge"
required: false
source_ref: "xroar.c:709 (romlist cp450)"
note: "Falls back to RS-DOS if not found."
# ---- Other cartridge ROMs (all optional) ----
- name: "orch90.rom"
system: coco
description: "Orchestra-90 CC sound cartridge ROM"
required: false
source_ref: "orch90.c:122 (default rom = orch90)"
note: "Sound synthesis cartridge. Loaded directly (no romlist fallback)."
- name: "mcx128.rom"
system: mc10
description: "MCX128 memory expansion BASIC ROM"
required: false
aliases: [MCX_Basic_21]
source_ref: "xroar.c:724 (romlist mcx128), mcx128.c:208 (default @mcx128)"
note: "128K memory expansion for MC-10. Adds enhanced BASIC."
- name: "mcx128a.rom"
system: mc10
description: "MCX128 memory expansion BASIC ROM (AZERTY)"
required: false
aliases: [MCX_Basic_21_AZERTY]
source_ref: "xroar.c:725 (romlist mcx128_azerty), xroar.c:632-633 (cart mcx128a)"
note: "AZERTY keyboard variant for Alice. Same MCX128 hardware."
- name: "yados.rom"
system: coco
description: "YADOS (Glenside IDE interface ROM)"
required: false
source_ref: "xroar.c:690 (romlist glenside_ide), idecart.c:204 (default @glenside_ide)"
note: "IDE hard disk interface. Fallback: hdblba.rom (alternative IDE ROM)."
- name: "sdbdos.rom"
system: dragon64
description: "SDBDOS (MOOH memory cartridge ROM)"
required: false
source_ref: "mooh.c:254 (default rom = sdbdos)"
note: "SD card boot DOS for MOOH cartridge. Loaded directly."
- name: "dragonfly-2.3.rom"
system: dragon64
description: "Ikon Ultra Drive Dragonfly ROM 2.3"
required: false
unsourceable: "not yet dumped, only v1.3 publicly available, XRoar support is experimental (#ifdef WANT_EXPERIMENTAL)"
source_ref: "xroar.c:715 (romlist ikon), ikon.c:151 (default @ikon)"
note: "Experimental. Ikon Ultra Drive storage interface. Older version: dragonfly-1.3."