Files
libretro/emulators/xroar.yml
T

437 lines
16 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)"
region: [spain]
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)"
region: [spain]
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"
region: [spain]
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
size: 8192
crc32: "c3dab585"
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:226 (BOOT bank 8192), dragonpro.c:231-234 (load), dragonpro.c:249 (0xc3dab585 = Dragon Pro BOOT 1.0)"
note: >-
Required for Dragon Professional machine. Loaded as extbas_rom into the
BOOT bank. rombank_verify_crc accepts any member of @dragonpro_boot,
which also holds 0xd6172b56 for the v0.4 slot.
- name: "alpha-boot-v0.4.rom"
system: dragon64
description: "Dragon Professional (Alpha) boot ROM v0.4"
required: false
size: 8192
aliases: [alpha_bt_04]
source_ref: "xroar.c:654 (romlist dragonpro_boot), xroar.c:741 (crclist), dragonpro.c:226 (BOOT bank 8192)"
note: >-
Fourth and fifth candidates of the dragonpro_boot romlist, tried when no
v1.0 image is found. The crclist carries 0xd6172b56 next to the v1.0
value, but the source labels only the latter, so no crc32 is declared here.
- name: "alpha-basic.rom"
system: dragon64
description: "Dragon Professional (Alpha) BASIC ROM"
required: true
size: 16384
crc32: "84f68bf9"
validation: [crc32]
aliases: [alpha_ba, "Dragon Data Ltd - Dragon Alpga Basic"]
source_ref: "xroar.c:655 (romlist dragonpro_basic), xroar.c:742 (crclist = @d64_1), dragonpro.c:227 (ROM0 bank 16384), dragonpro.c:240-243 (load), dragonpro.c:254 (0x84f68bf9 = Dragon 64 32K mode BASIC)"
note: "Loaded as altbas_rom into the 32K BASIC bank. 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"
region: [france]
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. First candidate of the ikon romlist."
- name: "dragonfly-1.3.rom"
system: dragon64
description: "Ikon Ultra Drive Dragonfly ROM 1.3"
required: false
source_ref: "xroar.c:715 (romlist ikon), ikon.c:151 (default @ikon), romlist.c:46-48 (extensions tried)"
note: >-
Experimental. Second candidate of the ikon romlist, loaded when
dragonfly-2.3 is absent. romlist_find appends the extensions "",
.rom, .ROM, .dgn, .DGN in that order. ikon.c loads the bank through
cart_rom_init and checks nothing: no crclist entry names this ROM.