From fcfc10b9851fa59d03bdd820a6fb88acab6ab064 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Tue, 20 Oct 2026 04:46:46 +0200 Subject: [PATCH] chore: re-profile XRoar 1.12.1 Refs moved to the 1.12.1 tree and its src/ layout. The new rom.c table names the crc32 of nine ROMs, two of which the code checks. --- emulators/xroar.yml | 114 ++++++++++++++++++++++++++------------------ 1 file changed, 67 insertions(+), 47 deletions(-) diff --git a/emulators/xroar.yml b/emulators/xroar.yml index 66132312..1bc54802 100644 --- a/emulators/xroar.yml +++ b/emulators/xroar.yml @@ -5,8 +5,8 @@ upstream: "https://www.6809.org.uk/xroar/" version_source: url: "https://www.6809.org.uk/xroar/" pattern: 'version\s*([0-9.]+), released' -profiled_date: "2026-03-26" -core_version: "1.10" +profiled_date: "2026-10-20" +core_version: "1.12.1" display_name: "Dragon / CoCo / MC-10 (XRoar)" cores: - xroar @@ -27,7 +27,10 @@ notes: | 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. + and feature detection, but mismatches do not prevent loading. A + ROM metadata table (src/rom.c) maps CRC32 and size to a description, the + debugger symbol table and, for a file inserted as a cartridge, the cartridge + type. It names images, it does not accept or reject them. Machine selection: Batocera maps system names to default machines via xroarGenerator.py (mc10 -> mc10, dragon64 -> dragon64, others -> coco2bus). @@ -43,7 +46,7 @@ files: 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)" + source_ref: "src/xroar.c:649 (romlist d32), src/dragon/dragon32.c:40 (default @dragon32), src/dragon/dragon32.c:107,110-116,131-132 (load + CRC)" note: "Combined 16K ROM. Loaded into a single 16384-byte rombank slot." # ---- Dragon 64 ---- @@ -56,7 +59,7 @@ files: 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)" + source_ref: "src/xroar.c:647 (romlist d64_1), src/xroar.c:653 (romlist dragon64), src/dragon/dragon64.c:151-157,169-171 (load + CRC)" note: "IC17 ROM. Required for the machine to start." - name: "d64_2.rom" @@ -67,7 +70,7 @@ files: 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)" + source_ref: "src/xroar.c:648 (romlist d64_2), src/xroar.c:654 (romlist dragon64_alt), src/dragon/dragon64.c:160-166,174-176 (load + CRC)" note: "IC18 ROM. 64K mode alternate BASIC. Machine starts without it (32K mode only)." # ---- Dragon 200-E ---- @@ -81,7 +84,7 @@ files: 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)" + source_ref: "src/xroar.c:650 (romlist d200e_1), src/xroar.c:656 (romlist dragon200e), src/xroar.c:741 (crclist)" note: "Required for Dragon 200-E. Falls back to d64_1 then generic dragon if not found." - name: "d200e_2.rom" @@ -90,8 +93,9 @@ files: region: [spain] required: false size: 16384 + crc32: "48b985df" aliases: [d200e_rom2, ic17_v1.4e.ic37] - source_ref: "xroar.c:645 (romlist d200e_2), xroar.c:651 (romlist dragon200e_alt)" + source_ref: "src/xroar.c:651 (romlist d200e_2), src/xroar.c:657 (romlist dragon200e_alt), src/rom.c:91 (0x48b985df = Dragon 200-E 64K BASIC)" note: "64K mode alternate. Falls back to d64_2 if not found." - name: "d200e_26.rom" @@ -100,8 +104,9 @@ files: region: [spain] required: false size: 4096 + crc32: "565724bc" aliases: [rom26.ic1] - source_ref: "xroar.c:652 (romlist dragon200e_charset), dragon.c:523-539 (ext_charset load)" + source_ref: "src/xroar.c:658 (romlist dragon200e_charset), src/dragon/dragon.c:430-447 (ext_charset load), src/rom.c:92 (0x565724bc = Dragon 200-E Character Set)" note: "Spanish character set. Loaded into a 4096-byte rombank. Machine works without it (uses standard charset)." # ---- Dragon Professional (Alpha) ---- @@ -114,7 +119,7 @@ files: 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)" + source_ref: "src/xroar.c:660 (romlist dragonpro_boot), src/xroar.c:747 (crclist), src/dragon/dragonpro.c:246 (BOOT bank 8192), src/dragon/dragonpro.c:251-254 (load), src/dragon/dragonpro.c:269 (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, @@ -125,12 +130,15 @@ files: description: "Dragon Professional (Alpha) boot ROM v0.4" required: false size: 8192 + crc32: "d6172b56" + validation: [crc32] aliases: [alpha_bt_04] - source_ref: "xroar.c:654 (romlist dragonpro_boot), xroar.c:741 (crclist), dragonpro.c:226 (BOOT bank 8192)" + source_ref: "src/xroar.c:660 (romlist dragonpro_boot), src/xroar.c:747 (crclist), src/dragon/dragonpro.c:246 (BOOT bank 8192), src/rom.c:93 (0xd6172b56 = Dragon Professional Boot 0.4)" 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. + v1.0 image is found. The dragonpro_boot crclist carries 0xd6172b56 next + to the v1.0 value, and the ROM metadata table names it Dragon + Professional Boot 0.4. - name: "alpha-basic.rom" system: dragon64 @@ -140,7 +148,7 @@ files: 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)" + source_ref: "src/xroar.c:661 (romlist dragonpro_basic), src/xroar.c:748 (crclist = @d64_1), src/dragon/dragonpro.c:247 (ROM0 bank 16384), src/dragon/dragonpro.c:260-263 (load), src/dragon/dragonpro.c:274 (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) ---- @@ -152,7 +160,7 @@ files: 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)" + source_ref: "src/xroar.c:663 (romlist coco), src/xroar.c:753 (crclist bas13), src/dragon/coco.c:154-160,166-168 (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" @@ -163,7 +171,7 @@ files: crc32: "54368805" validation: [crc32] aliases: ["Color Basic v1.2 (1982)(Tandy)"] - source_ref: "xroar.c:657 (romlist coco), xroar.c:746 (crclist bas12)" + source_ref: "src/xroar.c:663 (romlist coco), src/xroar.c:752 (crclist bas12)" note: "Alternative to bas13. Second in fallback order." - name: "bas11.rom" @@ -173,7 +181,7 @@ files: size: 8192 crc32: "6270955a" validation: [crc32] - source_ref: "xroar.c:657 (romlist coco), xroar.c:745 (crclist bas11)" + source_ref: "src/xroar.c:663 (romlist coco), src/xroar.c:751 (crclist bas11)" note: "Used by CoCo 1E. Third in fallback order." - name: "bas10.rom" @@ -183,7 +191,7 @@ files: size: 8192 crc32: "00b50aaa" validation: [crc32] - source_ref: "xroar.c:657 (romlist coco), xroar.c:744 (crclist bas10)" + source_ref: "src/xroar.c:663 (romlist coco), src/xroar.c:750 (crclist bas10)" note: "Earliest version. Used by original CoCo 1. Last in fallback order." # ---- Tandy CoCo (Extended Colour BASIC) ---- @@ -195,7 +203,7 @@ files: 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)" + source_ref: "src/xroar.c:664 (romlist coco_ext), src/xroar.c:758 (crclist extbas11), src/dragon/coco.c:145-151,170-171 (load + CRC)" note: "Default Extended BASIC. 8K ROM loaded into slot 0 of a 2-slot rombank." - name: "extbas10.rom" @@ -205,7 +213,7 @@ files: size: 8192 crc32: "e031d076" validation: [crc32] - source_ref: "xroar.c:658 (romlist coco_ext), xroar.c:751 (crclist extbas10)" + source_ref: "src/xroar.c:664 (romlist coco_ext), src/xroar.c:757 (crclist extbas10)" note: "Earlier version. Second in fallback order." # ---- Tandy CoCo 3 ---- @@ -217,7 +225,7 @@ files: 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)" + source_ref: "src/xroar.c:694 (romlist coco3), src/xroar.c:768 (crclist coco3), src/coco3.c:258-260,535-549 (load + CRC)" note: "32K combined ROM. Single required ROM for CoCo 3 NTSC." - name: "coco3p.rom" @@ -225,7 +233,9 @@ files: 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" + crc32: "ff050d80" + validation: [crc32] + source_ref: "src/xroar.c:695 (romlist coco3p), src/xroar.c:510,519 (machine config), src/xroar.c:768 (crclist coco3), src/coco3.c:535-549, src/rom.c:119 (0xff050d80 = Super Extended Colour BASIC PAL)" note: "PAL variant of the CoCo 3 ROM. Required for PAL CoCo 3 machines." # ---- Tandy MC-10 ---- @@ -237,7 +247,7 @@ files: 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)" + source_ref: "src/xroar.c:701 (romlist mc10), src/xroar.c:773 (crclist mc10), src/mc10.c:169-171,423-434 (load + CRC)" note: "Single required ROM for MC-10." - name: "alice.rom" @@ -248,7 +258,7 @@ files: size: 8192 crc32: "f876abe9" validation: [crc32] - source_ref: "xroar.c:697 (romlist alice), xroar.c:769 (crclist alice), mc10.c:157-158" + source_ref: "src/xroar.c:703 (romlist alice), src/xroar.c:775 (crclist alice), src/mc10.c:169-171" note: "French Alice variant. Required for Alice machine. MC-10 compatible." # ---- Deluxe CoCo (prototype) ---- @@ -260,27 +270,27 @@ files: crc32: "1cce231e" validation: [crc32] aliases: [adv070_u24] - source_ref: "xroar.c:673 (romlist deluxecoco), xroar.c:757 (crclist), deluxecoco.c:191-194 (load)" + source_ref: "src/xroar.c:679 (romlist deluxecoco), src/xroar.c:763 (crclist), src/dragon/deluxecoco.c:213-216 (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)" + source_ref: "src/xroar.c:681 (romlist deluxecoco1), src/dragon/deluxecoco.c:223-226 (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)" + source_ref: "src/xroar.c:682 (romlist deluxecoco2), src/dragon/deluxecoco.c:230-233 (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)" + source_ref: "src/xroar.c:683 (romlist deluxecoco3), src/dragon/deluxecoco.c:237-240 (load)" # ---- Dynacom MX-1600 (Brazilian clone) ---- @@ -291,7 +301,7 @@ files: crc32: "d918156e" validation: [crc32] aliases: [mx1600bas_zephyr] - source_ref: "xroar.c:679 (romlist mx1600), xroar.c:748 (crclist mx1600)" + source_ref: "src/xroar.c:685 (romlist mx1600), src/xroar.c:754 (crclist mx1600)" note: "Required for MX-1600. Zephyr-patched variant (CRC32 d11b1c96) is an alias." - name: "mx1600extbas.rom" @@ -300,7 +310,7 @@ files: required: true crc32: "322a3d58" validation: [crc32] - source_ref: "xroar.c:680 (romlist mx1600ext), xroar.c:753 (crclist mx1600ext)" + source_ref: "src/xroar.c:686 (romlist mx1600ext), src/xroar.c:759 (crclist mx1600ext)" # ---- Prologica CP-400 (Brazilian clone) ---- @@ -310,7 +320,7 @@ files: required: true crc32: "0b2903d4" validation: [crc32] - source_ref: "xroar.c:682 (romlist cp400), xroar.c:749 (crclist cp400)" + source_ref: "src/xroar.c:688 (romlist cp400), src/xroar.c:755 (crclist cp400)" - name: "cp400ext.rom" system: coco @@ -318,7 +328,7 @@ files: required: true crc32: "114accbc" validation: [crc32] - source_ref: "xroar.c:683 (romlist cp400ext), xroar.c:754 (crclist cp400ext)" + source_ref: "src/xroar.c:689 (romlist cp400ext), src/xroar.c:760 (crclist cp400ext)" # ---- DOS cartridge ROMs (all optional) ---- @@ -326,36 +336,42 @@ files: 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)" + size: 8192 + crc32: "0b9c5415" + source_ref: "src/xroar.c:714 (romlist rsdos), src/rsdos.c:176 (default @rsdos), src/rom.c:150 (0x0b9c5415 = Disk Extended Colour BASIC 1.1)" 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)" + source_ref: "src/xroar.c:724 (romlist rsdos_becker), src/xroar.c:578-580 (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)" + source_ref: "src/xroar.c:708 (romlist dragondos), src/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)" + size: 8192 + crc32: "7c6dfca8" + source_ref: "src/xroar.c:709 (romlist dosplus), src/rom.c:138 (0x7c6dfca8 = DOSplus 4.9B)" 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 + size: 8192 + crc32: "8c1d6c45" aliases: ["PNP - SuperDOS E6"] - source_ref: "xroar.c:704 (romlist superdos)" + source_ref: "src/xroar.c:710 (romlist superdos), src/rom.c:141 (0x8c1d6c45 = SuperDOS E6)" note: "Latest SuperDOS. Older versions: sdose5, sdose4." - name: "cdos20.rom" @@ -363,21 +379,23 @@ files: description: "Cumana DOS 2.0 (Dragon compatible DOS)" required: false aliases: [CDOS20, "CumanaDOSv2.0"] - source_ref: "xroar.c:705 (romlist cumana)" + source_ref: "src/xroar.c:711 (romlist cumana)" - name: "delta2.rom" system: dragon64 description: "Delta System 2 (Premier Microsystems disk controller)" required: false + size: 8192 + crc32: "307fb37c" aliases: ["Premier Micros - DeltaDOS"] - source_ref: "xroar.c:711 (romlist delta), deltados.c:160 (default @delta)" + source_ref: "src/xroar.c:717 (romlist delta), src/deltados.c:160 (default @delta), src/rom.c:146 (0x307fb37c = Delta System 2.0)" 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)" + source_ref: "src/xroar.c:715 (romlist cp450)" note: "Falls back to RS-DOS if not found." # ---- Other cartridge ROMs (all optional) ---- @@ -386,7 +404,9 @@ files: system: coco description: "Orchestra-90 CC sound cartridge ROM" required: false - source_ref: "orch90.c:122 (default rom = orch90)" + size: 8192 + crc32: "15fb39af" + source_ref: "src/orch90.c:122 (default rom = orch90), src/rom.c:313 (0x15fb39af = Orchestra-90/CC)" note: "Sound synthesis cartridge. Loaded directly (no romlist fallback)." - name: "mcx128.rom" @@ -394,7 +414,7 @@ files: description: "MCX128 memory expansion BASIC ROM" required: false aliases: [MCX_Basic_21] - source_ref: "xroar.c:724 (romlist mcx128), mcx128.c:208 (default @mcx128)" + source_ref: "src/xroar.c:730 (romlist mcx128), src/mcx128.c:208 (default @mcx128)" note: "128K memory expansion for MC-10. Adds enhanced BASIC." - name: "mcx128a.rom" @@ -402,35 +422,35 @@ files: 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)" + source_ref: "src/xroar.c:731 (romlist mcx128_azerty), src/xroar.c:638-639 (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)" + source_ref: "src/xroar.c:696 (romlist glenside_ide), src/idecart.c:208 (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)" + source_ref: "src/mooh.c:259 (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 - source_ref: "src/xroar.c:715 (romlist ikon), src/ikon.c:151 (default @ikon), src/ikon.c:26 (WANT_EXPERIMENTAL)" + source_ref: "src/xroar.c:721 (romlist ikon), src/ikon.c:151 (default @ikon), src/ikon.c:26 (WANT_EXPERIMENTAL)" note: "Experimental, compiled only with WANT_EXPERIMENTAL. Ikon Ultra Drive storage interface. First candidate of the ikon romlist. No crclist entry names it." - 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)" + source_ref: "src/xroar.c:721 (romlist ikon), src/ikon.c:151 (default @ikon), src/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 "",