Files
libretro/emulators/atari800.yml
T
Abdessamad Derraz 186ad0fafa fix: list the ROMs atari800 finds by checksum
atari800 scans the system folder and recognises each OS and BASIC ROM by CRC32 (sysrom.c:104, 317-420), whatever its name. RetroDECK's ROM_* names are those config keys. Eleven entries carry md5, crc32 and size, under the label altirra already uses for the same dump where one exists.
2026-10-20 14:26:24 +02:00

401 lines
16 KiB
YAML

emulator: Atari800
type: standalone + libretro
core_classification: official_port
source: "https://github.com/libretro/libretro-atari800"
upstream: "https://github.com/atari800/atari800"
profiled_date: "2026-03-23"
source_commit: "4e7fbc73765c1a9670c7506616046ad1d4ccda51"
core_version: "3.1.0"
display_name: "Atari - 400/800/600XL/800XL/130XE/5200 (Atari800)"
cores: [atari800]
systems: [atari-400-800, atari-5200, xegs]
# Atari800 emulates the Atari 8-bit family (400/800/XL/XE) and the 5200 console.
# All BIOS files are optional -- the core ships built-in Altirra OS replacements
# (altirraos_800, altirraos_xl, altirra_5200_os, altirra_basic) compiled into the
# binary. If real ROM files are found in the system directory they take priority.
#
# ROM discovery (sysrom.c SYSROM_FindInDir):
# 1. Scan system directory for files of valid size (0x800, 0x2000, 0x2800, 0x4000)
# 2. Match by CRC32 against known ROM revisions
# 3. If no CRC match, try case-insensitive filename match (MatchByName)
# 4. Results stored in .atari800.cfg (generated on first run)
#
# The core generates .atari800.cfg in the frontend home directory on first boot.
# Core option "atari800_system" selects the emulated machine type:
# 400/800, 800XL (64KB), 130XE (128KB), Modern XL/XE(320KB), Modern XL/XE(576KB),
# Modern XL/XE(1088KB), 5200
files:
# -- Atari 5200 BIOS --
# Original 5200 OS ($F800-$FFFF, 2 KB). Matched by CRC32: 0x4248d3e3 (orig)
# or 0xc2ba2613 (rev A). Altirra 5200 OS used as fallback.
# Filename match (case-insensitive): atari5200.rom, atar5200.rom, 5200.rom,
# 5200.bin, atari_5200.rom
- name: "5200.rom"
path: "5200.rom"
required: false
hle_fallback: true
size: 2048
md5: 281f20ea4320404ec820fb7ec0693b38
aliases: [atari5200.rom, atar5200.rom, 5200.bin, atari_5200.rom]
validation: [size]
note: >
Atari 5200 BIOS (original). Mapped at $F800-$FFFF.
Altirra 5200 OS is used when this file is absent.
source_ref: "source atari800/src/sysrom.c:103-104, source atari800/src/sysrom.c:290"
- name: "atari-5200-os-2port.rom"
path: "atari-5200-os-2port.rom"
aliases: [ROM_5200_A]
required: false
hle_fallback: true
size: 2048
crc32: "c2ba2613"
validation: [size, crc32]
note: >
Atari 5200 OS rev A, from the 2-port 5200. Any file name: every file
of the system directory of 2048 bytes whose CRC32 is c2ba2613 is taken
as SYSROM_5200A, and the automatic choice for the 5200 tries it after
the original OS and before the Altirra 5200 OS. ROM_5200_A is the
configuration key this ROM is stored under in .atari800.cfg.
source_ref: "source atari800/src/sysrom.c:104, source atari800/src/sysrom.c:139, source atari800/src/sysrom.c:317-420, source atari800/src/sysrom.c:473, source atari800/src/sysrom.c:674, source atari800/src/atari.c:537"
# -- Atari BASIC ROM --
# Atari BASIC interpreter (8 KB). Three known revisions:
# Rev A: CRC32 0x4bec4de2, Rev B: CRC32 0xf0202fb3, Rev C: CRC32 0x7d684184
# Auto-select prefers Rev C > B > A > custom > Altirra BASIC.
# Filename match: ataribasic.rom, ataribas.rom, basic.rom, atari_basic.rom
# Core option "atari800_opt2" enables BASIC (needed for some 400/800 software).
- name: "ATARIBAS.ROM"
path: "ATARIBAS.ROM"
required: false
hle_fallback: true
size: 8192
md5: 0bac0c6a50104045d902df4503a4c30b
aliases: [ataribasic.rom, basic.rom, atari_basic.rom]
validation: [size]
note: >
Atari BASIC Rev C. Required for 400/800 software that needs BASIC.
Altirra BASIC is used as fallback. Enable via core option atari800_opt2.
source_ref: "source atari800/src/sysrom.c:105-107, source atari800/src/sysrom.c:292"
# -- Atari 400/800 OS A --
# Original Atari 400/800 OS (10 KB). Two known CRC32 values:
# NTSC: 0xc1b3bb02, PAL: 0x72b3fed4
# Filename match: atariosa.rom, atari_osa.rom, atari_os_a.rom
- name: "ATARIOSA.ROM"
path: "ATARIOSA.ROM"
required: false
hle_fallback: true
size: 10240
md5: eb1f32f5d9f382db1bbfb8d7f9cb343a
aliases: [atari_osa.rom, atari_os_a.rom]
validation: [size]
note: >
Atari 400/800 OS Rev A. Altirra OS 800 is used as fallback.
Auto-select order: OS B NTSC, OS A NTSC, OS A PAL, custom, Altirra.
source_ref: "source atari800/src/sysrom.c:89-90, source atari800/src/sysrom.c:285"
# -- Atari 400/800 OS B --
# OS revision B (10 KB), NTSC: CRC32 0x0e86d61d
# Filename match: atariosb.rom, atari_osb.rom, atari_os_b.rom
- name: "ATARIOSB.ROM"
path: "ATARIOSB.ROM"
required: false
hle_fallback: true
size: 10240
md5: 4177f386a3bac989a981d3fe3388cb6c
crc32: 0e86d61d
aliases: [atari_osb.rom, atari_os_b.rom]
validation: [size]
note: >
Atari 400/800 OS Rev B (NTSC). CRC32 0x0e86d61d matches sysrom.c
SYSROM_B_NTSC. Preferred over Rev A for 400/800 mode.
Note: .info lists md5 a3e8d617c95d08031fe1b20d541434b2 which is a
different dump (crc32 3e28a1fe) -- both in repo, the CRC32-matched
version is the one sysrom.c auto-detects.
source_ref: "source atari800/src/sysrom.c:91, source atari800/src/sysrom.c:286"
# -- Atari XL/XE OS --
# XL/XE OS (16 KB). Many revisions known by CRC32 in sysrom.c:
# BB01R2 (800XL stock): 0x1f9cd270
# CC01R4: 0x0e000b99
# BB01R4: 0x1eaf4002
# Auto-select prefers BB01R2 for 800XL, BB01R3 for XE, BB01R4 for XEGS.
# Filename match: atarixlxe.rom, atarixl.rom, atari_xlxe.rom, atari_xl_xe.rom
- name: "ATARIXL.ROM"
path: "ATARIXL.ROM"
required: false
hle_fallback: true
size: 16384
md5: 06daac977823773a3eea3422fd26a703
aliases: [atarixlxe.rom, atari_xlxe.rom, atari_xl_xe.rom]
validation: [size]
note: >
Atari XL/XE OS. Used for 800XL, 130XE, and XEGS modes.
Altirra XL OS is used as fallback.
source_ref: "source atari800/src/sysrom.c:92-101, source atari800/src/sysrom.c:288"
# -- Atari XL/XE/XEGS OS v4 (BB01R4) --
# XEGS-specific OS revision BB01R4 (16 KB), CRC32: 0x1eaf4002
# Preferred for XEGS machine mode. Same filename matching as ATARIXL above.
- name: "BB01R4_OS.ROM"
path: "BB01R4_OS.ROM"
required: false
hle_fallback: true
size: 16384
md5: b7a2a04677d34f069eeb643d5238bf86
crc32: "1eaf4002"
validation: [size, crc32]
note: >
Atari XEGS OS Rev 4 (BB01R4). Preferred OS for XEGS machine mode.
source_ref: "source atari800/src/sysrom.c:100"
# -- XEGS Missile Command built-in game --
# The XEGS had Missile Command in ROM (8 KB), CRC32: 0xbdca01fb
# No filename auto-match -- must be set via config or detected by CRC.
- name: "XEGAME.ROM"
path: "XEGAME.ROM"
required: false
size: 8192
md5: d7eb37aec6960cba36bc500e0e5d00bc
crc32: "bdca01fb"
validation: [size, crc32]
note: >
XEGS built-in Missile Command ROM. Only used in XEGS machine mode.
No built-in replacement exists for this ROM.
source_ref: "source atari800/src/sysrom.c:108"
# -- Further revisions identified by CRC32 in the system directory scan --
- name: "atari-800-os-a-ntsc.rom"
path: "atari-800-os-a-ntsc.rom"
aliases: [ROM_OS_A_NTSC]
required: false
hle_fallback: true
size: 10240
md5: a3c1585b5d19719f8acfa2b093bea75f
crc32: "c1b3bb02"
validation: [size, crc32]
note: >
Atari 400/800 OS rev A, NTSC (SYSROM_A_NTSC). Any file name: a file of the system directory of
10240 bytes whose CRC32 is c1b3bb02 is taken for this slot.
ROM_OS_A_NTSC is the configuration key this ROM is stored under
in .atari800.cfg.
source_ref: "source atari800/src/sysrom.c:89, source atari800/src/sysrom.c:124, source atari800/src/sysrom.c:317-427, source atari800/src/atari.c:537"
- name: "atari-1200xl-os-rev-10.rom"
path: "atari-1200xl-os-rev-10.rom"
aliases: [ROM_OS_AA00R10]
required: false
hle_fallback: true
size: 16384
md5: e3e8c74bfe1dcd6b56af50bd9a82dc15
crc32: "c5c11546"
validation: [size, crc32]
note: >
Atari 1200XL OS rev 10 (SYSROM_AA00R10). Any file name: a file of the system directory of
16384 bytes whose CRC32 is c5c11546 is taken for this slot.
ROM_OS_AA00R10 is the configuration key this ROM is stored under
in .atari800.cfg.
source_ref: "source atari800/src/sysrom.c:92, source atari800/src/sysrom.c:127, source atari800/src/sysrom.c:317-427, source atari800/src/atari.c:537"
- name: "atari-1200xl-os-rev-11.rom"
path: "atari-1200xl-os-rev-11.rom"
aliases: [ROM_OS_AA00R11]
required: false
hle_fallback: true
size: 16384
md5: eacb8069c45e2ec4e0a19978bf2fc334
crc32: "1a1d7b1b"
validation: [size, crc32]
note: >
Atari 1200XL OS rev 11 (SYSROM_AA01R11). Any file name: a file of the system directory of
16384 bytes whose CRC32 is 1a1d7b1b is taken for this slot.
ROM_OS_AA00R11 is the configuration key this ROM is stored under
in .atari800.cfg.
source_ref: "source atari800/src/sysrom.c:93, source atari800/src/sysrom.c:128, source atari800/src/sysrom.c:317-427, source atari800/src/atari.c:537"
- name: "atari-xl-os-ver-1.rom"
path: "atari-xl-os-ver-1.rom"
aliases: [ROM_OS_BB00R1]
required: false
hle_fallback: true
size: 16384
md5: 9aea45e724d2588fbbeda658c7dc53ee
crc32: "643bcc98"
validation: [size, crc32]
note: >
Atari 600XL OS (SYSROM_BB00R1). Any file name: a file of the system directory of
16384 bytes whose CRC32 is 643bcc98 is taken for this slot.
ROM_OS_BB00R1 is the configuration key this ROM is stored under
in .atari800.cfg.
source_ref: "source atari800/src/sysrom.c:94, source atari800/src/sysrom.c:129, source atari800/src/sysrom.c:317-427, source atari800/src/atari.c:537"
- name: "ROM_OS_BB02R3V4"
path: "ROM_OS_BB02R3V4"
required: false
hle_fallback: true
size: 16384
md5: 9f5449c881475a5cca40849c743205f8
crc32: "d425a9cf"
validation: [size, crc32]
note: >
Atari XL/XE OS BB02R3V4 (SYSROM_BB02R3V4). Any file name: a file of the system directory of
16384 bytes whose CRC32 is d425a9cf is taken for this slot.
The name is the configuration key this ROM is stored under in
.atari800.cfg.
source_ref: "source atari800/src/sysrom.c:97, source atari800/src/sysrom.c:132, source atari800/src/sysrom.c:317-427, source atari800/src/atari.c:537"
- name: "ROM_OS_CC01R4"
path: "ROM_OS_CC01R4"
required: false
hle_fallback: true
size: 16384
md5: 65020266380e33cce50ebf8b9d91122a
crc32: "0e000b99"
validation: [size, crc32]
note: >
Atari XL/XE OS CC01R4 (SYSROM_CC01R4). Any file name: a file of the system directory of
16384 bytes whose CRC32 is 0e000b99 is taken for this slot.
The name is the configuration key this ROM is stored under in
.atari800.cfg.
source_ref: "source atari800/src/sysrom.c:98, source atari800/src/sysrom.c:133, source atari800/src/sysrom.c:317-427, source atari800/src/atari.c:537"
- name: "atari-xl-os-ver-3.rom"
path: "atari-xl-os-ver-3.rom"
aliases: [ROM_OS_BB01R3]
required: false
hle_fallback: true
size: 16384
md5: 54e704558a6aedfc45cebf8f8ac9c312
crc32: "29f133f7"
validation: [size, crc32]
note: >
Atari 65XE/130XE OS (SYSROM_BB01R3). Any file name: a file of the system directory of
16384 bytes whose CRC32 is 29f133f7 is taken for this slot.
ROM_OS_BB01R3 is the configuration key this ROM is stored under
in .atari800.cfg.
source_ref: "source atari800/src/sysrom.c:99, source atari800/src/sysrom.c:134, source atari800/src/sysrom.c:317-427, source atari800/src/atari.c:537"
- name: "ROM_OS_BB01R59"
path: "ROM_OS_BB01R59"
required: false
hle_fallback: true
size: 16384
md5: d467f55fb7643553b69b34bf7e805b7d
crc32: "45f47988"
validation: [size, crc32]
note: >
Atari XL/XE OS BB01R59 (SYSROM_BB01R59). Any file name: a file of the system directory of
16384 bytes whose CRC32 is 45f47988 is taken for this slot.
The name is the configuration key this ROM is stored under in
.atari800.cfg.
source_ref: "source atari800/src/sysrom.c:101, source atari800/src/sysrom.c:136, source atari800/src/sysrom.c:317-427, source atari800/src/atari.c:537"
- name: "ROM_OS_BB01R59A"
path: "ROM_OS_BB01R59A"
required: false
hle_fallback: true
size: 16384
md5: 69396860e53f58d798421d06d766c3ba
crc32: "f0a236d3"
validation: [size, crc32]
note: >
Atari XL/XE OS BB01R59A (SYSROM_BB01R59A). Any file name: a file of the system directory of
16384 bytes whose CRC32 is f0a236d3 is taken for this slot.
The name is the configuration key this ROM is stored under in
.atari800.cfg.
source_ref: "source atari800/src/sysrom.c:102, source atari800/src/sysrom.c:137, source atari800/src/sysrom.c:317-427, source atari800/src/atari.c:537"
- name: "atari-basic-rev-a.rom"
path: "atari-basic-rev-a.rom"
aliases: [ROM_BASIC_A]
required: false
hle_fallback: true
size: 8192
md5: a4dc52536d526ecc51ea857b9fa2b90f
crc32: "4bec4de2"
validation: [size, crc32]
note: >
Atari BASIC rev A (SYSROM_BASIC_A). Any file name: a file of the system directory of
8192 bytes whose CRC32 is 4bec4de2 is taken for this slot.
ROM_BASIC_A is the configuration key this ROM is stored under
in .atari800.cfg.
source_ref: "source atari800/src/sysrom.c:105, source atari800/src/sysrom.c:140, source atari800/src/sysrom.c:317-427, source atari800/src/atari.c:537"
- name: "atari-basic-rev-b.rom"
path: "atari-basic-rev-b.rom"
aliases: [ROM_BASIC_B]
required: false
hle_fallback: true
size: 8192
md5: 04ea6a4e386601445ca5bfc8e37fb620
crc32: "f0202fb3"
validation: [size, crc32]
note: >
Atari BASIC rev B (SYSROM_BASIC_B). Any file name: a file of the system directory of
8192 bytes whose CRC32 is f0202fb3 is taken for this slot.
ROM_BASIC_B is the configuration key this ROM is stored under
in .atari800.cfg.
source_ref: "source atari800/src/sysrom.c:106, source atari800/src/sysrom.c:141, source atari800/src/sysrom.c:317-427, source atari800/src/atari.c:537"
# Known ROM revisions from sysrom.c (CRC32 identifiers):
#
# 400/800 OS:
# SYSROM_A_NTSC 0xc1b3bb02 10 KB OS Rev A (NTSC)
# SYSROM_A_PAL 0x72b3fed4 10 KB OS Rev A (PAL)
# SYSROM_B_NTSC 0x0e86d61d 10 KB OS Rev B (NTSC)
#
# XL/XE OS (all 16 KB):
# SYSROM_AA00R10 0xc5c11546 1200XL first rev
# SYSROM_AA01R11 0x1a1d7b1b 1200XL second rev
# SYSROM_BB00R1 0x643bcc98 600XL stock
# SYSROM_BB01R2 0x1f9cd270 800XL stock
# SYSROM_BB02R3 0x0d477aa1 XL/XE rev 3a
# SYSROM_BB02R3V4 0xd425a9cf XL/XE rev 3b
# SYSROM_CC01R4 0x0e000b99 XL/XE rev 5
# SYSROM_BB01R3 0x29f133f7 XE stock
# SYSROM_BB01R4 0x1eaf4002 XEGS stock
# SYSROM_BB01R59 0x45f47988 XL/XE rev 59
# SYSROM_BB01R59A 0xf0a236d3 XL/XE rev 59a
#
# 5200 OS (2 KB):
# SYSROM_5200 0x4248d3e3 Original
# SYSROM_5200A 0xc2ba2613 Rev A
#
# BASIC (8 KB):
# SYSROM_BASIC_A 0x4bec4de2 Rev A
# SYSROM_BASIC_B 0xf0202fb3 Rev B
# SYSROM_BASIC_C 0x7d684184 Rev C
#
# XEGAME (8 KB):
# SYSROM_XEGAME 0xbdca01fb Missile Command
#
# Built-in Altirra replacements (no file needed):
# altirraos_800 10 KB 400/800 OS replacement
# altirraos_xl 16 KB XL/XE OS replacement
# altirra_5200_os 2 KB 5200 OS replacement
# altirra_basic 8 KB BASIC replacement
notes:
altirra_note: >
The Altirra OS/BASIC replacements are open-source alternatives compiled
directly into the core binary (roms/ directory in source). They provide
good compatibility for most software but real ROMs give better accuracy.
cfg_note: >
On first boot the core creates .atari800.cfg in the frontend home directory.
It scans the system directory for ROM files by CRC32 first, then by filename.
The core option atari800_opt1 controls whether this legacy config is loaded.
machine_selection: >
Core option atari800_system selects the emulated machine. Each machine type
has its own preferred OS ROM auto-select order defined in sysrom.c.