Files
libretro/emulators/hatari2014.yml
T
Abdessamad Derraz 8458e92281 chore: advance 135 profile pins to upstream HEAD
Every cited block was read again at HEAD: no ref left to review, no
file name or hash literal added to a cited file since the pin
(--detect-new-files --watch-hashes), refs recaled with their pins.
Profiles built by a platform at a fixed commit, or whose bump would
leave prose under an older pin, stay where they were.
2026-10-23 15:51:08 +02:00

159 lines
7.9 KiB
YAML

emulator: Hatari 2014
type: libretro
core_classification: frozen_snapshot
source: "https://github.com/libretro/hatari"
source_branch: hitari2014-mercurial
upstream: "https://github.com/hatari/hatari"
profiled_date: "2026-09-03"
source_commit: "ab55c3ed0e620c91e7f059a6d3fbef7acf9bfca8"
upstream_commit: "c1a5c88bc06e56778b6b7f8483becfd58a7da2b4"
core_version: "1.8.0"
display_name: "Atari - ST/STE/TT/Falcon (Hatari 2014)"
cores:
- hatari2014
systems:
- atari-st
- atari-ste
- atari-tt
- atari-falcon
notes: |
Hatari 2014 is the libretro port of Hatari 1.8.0 (src/includes/version.h:16),
the July 2014 release, kept on the hitari2014-mercurial branch of
libretro/hatari after the main branch moved to a new port. The branch
carries the Mercurial history up to the 1.8.0 release commit plus the
port commits started in November 2014. It builds as hatari2014
(Makefile.libretro:22, .gitlab-ci-libretro.yml:12) and reports
library_name Hatari2014, version 1.8 (libretro/libretro.c:1476-1478).
No hatari2014 .info exists in libretro-core-info yet.
Directory layout under the libretro system directory: the Hatari working
and data directories are <system>/hatari (src/paths.c:324-325, or the
system directory itself on Vita and PS3, src/paths.c:314-320), the
default TOS is <system>/tos.img, extra TOS images go in
<system>/hatari/tos, BOOT.ST in <system>/hatari, floppy.raw and the
global hatari.cfg in <system> and <system>/hatari. The Hatari home
directory, which holds the user hatari.cfg and hatari.nvram, is
$HOME/.hatari on desktop builds (src/paths.c:41, src/paths.c:284-285),
<system>/hatari on Wii U and Vita (src/paths.c:210-213,
src/paths.c:224-226), the system directory itself on PS3
(src/paths.c:238-240).
TOS selection: retro_set_environment lists <system>/tos.img and every
entry of <system>/hatari/tos (libretro/libretro.c:393-411). The
hatari_tosimage option offers those ending in img
(libretro/libretro.c:270-299) and the choice becomes RETRO_TOS
(libretro/libretro.c:640-649). retro_load_game refuses content when that
path does not exist (libretro/libretro.c:1612-1617) and hmain writes it
into szTosImageFileName after the configuration files, so hatari.cfg
cannot override it (src/main.c:914-916). TOS_LoadImage reads the file
whole, strips the 256-byte (or 34-byte for 4.92) loader of a RAM TOS,
detects EmuTOS by ETOS at offset 0x2c, and rejects an image whose version
word is outside 0x100-0x4FF, whose load address is neither 0xE00000 nor
0xFC0000, or which exceeds 1 MB. A 16 KB image with version 0 is the TOS
0.00 boot loader (src/tos.c:575-651). Machine type and CPU are coerced to
the TOS version unless the image is EmuTOS (src/tos.c:459-566), and ROM
patches are applied for TOS 1.00, 1.02, 1.04, 1.06, 1.62, 2.05, 2.06,
3.06, 4.00 to 4.04 and 4.92 (src/tos.c:146-220). HFile_Read also accepts
.img, .rom and .tos as fallback extensions and reads the first member of
a .zip or a .gz (src/file.c:217-244, libretro/include/config.h:20), which
only matters for a path picked in the in-core ROM dialog
(libretro/gui-retro/dlgRom.c:69-76). EmuTOS is not embedded.
The cartridge slot is empty by default (src/configuration.c:592) and is
filled through hatari.cfg or the in-core ROM dialog
(libretro/gui-retro/dlgRom.c:82-89). Cart_ResetImage installs the
built-in GEMDOS trampoline instead of the external image whenever GEMDOS
hard disk emulation, extended VDI or OS tracing is on (src/cart.c:121-133).
Floppy, ACSI, IDE and GEMDOS images are content. When a .gem folder is
loaded, <system>/hatari/BOOT.ST is inserted into drive A so TOS boots
with the GEMDOS drive (libretro/libretro.c:1673-1681). Memory snapshots
for retro_serialize stay in memory (libretro/libretro.c:1778-1803), and
hatari.sav, auto.sav, hatari.prn, hatari.wav and hatari.avi are output
names under <system>/hatari. DESKTOP.INF and NEWDESK.INF are created or
rewritten inside the emulated C: directory when extended VDI is on
(src/vdi.c:955-988).
files:
- name: "tos.img"
path: "tos.img"
description: "Atari TOS ROM image"
required: true
max_size: 1048576
validation: [size]
source_ref: "source libretro/libretro.c:393-411, source libretro/libretro.c:640-649, source libretro/libretro.c:1612-1617, source src/main.c:914-916, source src/tos.c:48-53, source src/tos.c:575-651"
note: >
Any TOS 1.00 to 4.04, TOS 0.00, a RAM TOS or EmuTOS. Additional images
are read from <system>/hatari/tos and selected with the hatari_tosimage
option. Only names ending in img are offered.
- name: "cartridge ROM"
path: null
config_key: "szCartridgeImageFileName"
description: "Atari ST cartridge image loaded at 0xFA0000"
required: false
min_size: 40
max_size: 131076
validation: [size]
source_ref: "source src/cart.c:40-46, source src/cart.c:53-88, source src/cart.c:121-133, source src/configuration.c:336, source src/configuration.c:592, source libretro/gui-retro/dlgRom.c:82-89"
note: >
Raw images up to 0x20000 bytes or .stc images of exactly 0x20004 bytes
whose 4-byte header is skipped. Any other size is refused. Extensions
.img, .rom and .stc are tried when the configured path is missing.
- name: "BOOT.ST"
path: "hatari/BOOT.ST"
description: "Boot floppy inserted with GEMDOS hard disk folders"
required: false
source_ref: "source libretro/libretro.c:1673-1681"
note: "Added as the first disk when the content is a .gem file."
- name: "floppy.raw"
path: "floppy.raw"
description: "Floppy drive seek sample, signed 16-bit little-endian stereo at 44100 Hz, no header"
required: false
has_builtin: true
storage: user_provided
unsourceable: "any headerless s16le stereo 44100 Hz sample the user records, with no name or version the code expects beyond the filename"
source_ref: "source libretro/floppy_sound.c:118-170, source libretro/libretro.c:844-852, source libretro/libretro.c:1389"
note: >
Read whole at retro_init. An empty or short read falls back to the
synthesised click (libretro/floppy_sound.c:31-95). Played on each drive
LED rising edge when hatari_floppy_sound is on.
- name: "hatari.cfg"
path: "hatari/hatari.cfg"
description: "Hatari configuration file"
required: false
storage: user_provided
unsourceable: "user settings in Hatari's INI format, with no canonical contents"
source_ref: "source libretro/libretro.c:945-951, source src/main.c:814-840, source src/main.c:901-903, source src/configuration.c:630-633, source src/configuration.c:768-777, source src/paths.c:284-285"
note: >
Read only when the hatari_autoload_config option is on (off by default):
<system>/hatari/hatari.cfg first, then hatari.cfg in the Hatari home
directory. Every section is applied except the TOS path.
- name: "keymap file"
path: null
config_key: "szMappingFileName"
description: "Keyboard remap table, one PC key code and ST scan code pair per line"
required: false
storage: user_provided
unsourceable: "user-written mapping in the doc/keymap-sample.txt format, with no canonical contents"
source_ref: "source src/keymap.c:53-59, source src/keymap.c:605-658, source src/change.c:359, source src/configuration.c:188, source src/configuration.c:504"
note: "Empty by default. Loaded at Keymap_Init and on configuration change when the path is set."
- name: "hatari.nvram"
path: null
description: "TT and Falcon NVRAM contents, 50 bytes"
required: false
has_builtin: true
min_size: 50
validation: [size]
unsourceable: "machine state the emulator writes itself at exit, with no canonical contents"
source_ref: "source src/falcon/nvram.c:63-85, source src/falcon/nvram.c:186-216, source src/falcon/nvram.c:223-226, source src/main.c:761, source src/paths.c:284-285"
note: >
Read from the Hatari home directory at NvRam_Init. A short read keeps
the built-in defaults adjusted to the monitor type. Saved back on exit.