Skip to content

Hatari 2014

Hatari 2014 emulates Atari ST, Atari STE, Atari TT and Atari Falcon. It reads 7 files, 1 of them required: without a required file it does not start games. A required file is needed only by the machines that use it. Each file below cites the line of source code that reads it.

About this profile
Detail Value
Type libretro
Classification Frozen snapshot
Source https://github.com/libretro/hatari
Upstream https://github.com/hatari/hatari
Version v1.8.0, the tag at this revision
Revision libretro/hatari@ab55c3ed0e62, hatari/hatari@c1a5c88bc06e, branch hitari2014-mercurial
Profiled 2026-09-03
Profile YAML, JSON
Cores hatari2014
Systems Atari ST, Atari STE, Atari TT, Atari Falcon
Install this emulator's files

The installer finds your setup and its BIOS folder, then downloads only the files this emulator reads there and checks each one.

Open the Start menu. Type PowerShell and open it. Paste the line. Press Enter.

PowerShell
&([scriptblock]::Create((irm https://abdess.github.io/retrobios/i.ps1))) --emulator hatari2014
Technical 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).

7 files: 1 required, 6 optional.

In this collection: 2 in repo, 1 missing and 4 unsourceable.

FileStatus

tos.img

Atari TOS ROM image

  • 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.
Validation and source
in repo
FileStatus

cartridge ROM

Atari ST cartridge image loaded at 0xFA0000

  • 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.
  • Size: min 40 B, max 128.0 KB
Validation, source and config key
  • Config key: szCartridgeImageFileName
missing

BOOT.ST

Boot floppy inserted with GEMDOS hard disk folders

  • Path: hatari/BOOT.ST
  • Added as the first disk when the content is a .gem file.
Source
in repo

floppy.raw

Floppy drive seek sample, signed 16-bit little-endian stereo at 44100 Hz, no header

  • 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.

  • Not collectable: any headerless s16le stereo 44100 Hz sample the user records, with no name or version the code expects beyond the filename (acknowledged gaps)

Source
unsourceable user_provided built-in fallback

hatari.cfg

Hatari configuration file

  • Path: hatari/hatari.cfg

  • 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.

  • Not collectable: user settings in Hatari's INI format, with no canonical contents (acknowledged gaps)

Source
unsourceable user_provided

keymap file

Keyboard remap table, one PC key code and ST scan code pair per line

  • Empty by default. Loaded at Keymap_Init and on configuration change when the path is set.
  • Not collectable: user-written mapping in the doc/keymap-sample.txt format, with no canonical contents (acknowledged gaps)
Source and config key
  • Config key: szMappingFileName
unsourceable user_provided

hatari.nvram

TT and Falcon NVRAM contents, 50 bytes

  • 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.

  • Not collectable: machine state the emulator writes itself at exit, with no canonical contents (acknowledged gaps)

  • Size: min 50 B
Validation and source
unsourceable built-in fallback
.