{
  "commit": "d38cd580364b2c788e633b9e51c15e1668f726c0",
  "count": 1,
  "generated_at": "2026-11-03T13:36:34Z",
  "items": [
    {
      "id": "hatari2014",
      "profile": {
        "core_classification": "frozen_snapshot",
        "core_version": "v1.8.0",
        "cores": [
          "hatari2014"
        ],
        "display_name": "Atari - ST/STE/TT/Falcon (Hatari 2014)",
        "emulator": "Hatari 2014",
        "files": [
          {
            "description": "Atari TOS ROM image",
            "max_size": 1048576,
            "name": "tos.img",
            "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.\n",
            "path": "tos.img",
            "required": true,
            "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",
            "validation": [
              "size"
            ]
          },
          {
            "config_key": "szCartridgeImageFileName",
            "description": "Atari ST cartridge image loaded at 0xFA0000",
            "max_size": 131076,
            "min_size": 40,
            "name": "cartridge ROM",
            "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.\n",
            "path": null,
            "required": false,
            "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",
            "validation": [
              "size"
            ]
          },
          {
            "description": "Boot floppy inserted with GEMDOS hard disk folders",
            "name": "BOOT.ST",
            "note": "Added as the first disk when the content is a .gem file.",
            "path": "hatari/BOOT.ST",
            "required": false,
            "source_ref": "source libretro/libretro.c:1673-1681"
          },
          {
            "description": "Floppy drive seek sample, signed 16-bit little-endian stereo at 44100 Hz, no header",
            "has_builtin": true,
            "name": "floppy.raw",
            "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.\n",
            "path": "floppy.raw",
            "required": false,
            "source_ref": "source libretro/floppy_sound.c:118-170, source libretro/libretro.c:844-852, source libretro/libretro.c:1389",
            "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"
          },
          {
            "description": "Hatari configuration file",
            "name": "hatari.cfg",
            "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.\n",
            "path": "hatari/hatari.cfg",
            "required": false,
            "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",
            "storage": "user_provided",
            "unsourceable": "user settings in Hatari's INI format, with no canonical contents"
          },
          {
            "config_key": "szMappingFileName",
            "description": "Keyboard remap table, one PC key code and ST scan code pair per line",
            "name": "keymap file",
            "note": "Empty by default. Loaded at Keymap_Init and on configuration change when the path is set.",
            "path": null,
            "required": false,
            "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",
            "storage": "user_provided",
            "unsourceable": "user-written mapping in the doc/keymap-sample.txt format, with no canonical contents"
          },
          {
            "description": "TT and Falcon NVRAM contents, 50 bytes",
            "has_builtin": true,
            "min_size": 50,
            "name": "hatari.nvram",
            "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.\n",
            "path": null,
            "required": false,
            "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",
            "unsourceable": "machine state the emulator writes itself at exit, with no canonical contents",
            "validation": [
              "size"
            ]
          }
        ],
        "notes": "Hatari 2014 is the libretro port of Hatari 1.8.0 (src/includes/version.h:16),\nthe July 2014 release, kept on the hitari2014-mercurial branch of\nlibretro/hatari after the main branch moved to a new port. The branch\ncarries the Mercurial history up to the 1.8.0 release commit plus the\nport commits started in November 2014. It builds as hatari2014\n(Makefile.libretro:22, .gitlab-ci-libretro.yml:12) and reports\nlibrary_name Hatari2014, version 1.8 (libretro/libretro.c:1476-1478).\nNo hatari2014 .info exists in libretro-core-info yet.\n\nDirectory layout under the libretro system directory: the Hatari working\nand data directories are <system>/hatari (src/paths.c:324-325, or the\nsystem directory itself on Vita and PS3, src/paths.c:314-320), the\ndefault TOS is <system>/tos.img, extra TOS images go in\n<system>/hatari/tos, BOOT.ST in <system>/hatari, floppy.raw and the\nglobal hatari.cfg in <system> and <system>/hatari. The Hatari home\ndirectory, which holds the user hatari.cfg and hatari.nvram, is\n$HOME/.hatari on desktop builds (src/paths.c:41, src/paths.c:284-285),\n<system>/hatari on Wii U and Vita (src/paths.c:210-213,\nsrc/paths.c:224-226), the system directory itself on PS3\n(src/paths.c:238-240).\n\nTOS selection: retro_set_environment lists <system>/tos.img and every\nentry of <system>/hatari/tos (libretro/libretro.c:393-411). The\nhatari_tosimage option offers those ending in img\n(libretro/libretro.c:270-299) and the choice becomes RETRO_TOS\n(libretro/libretro.c:640-649). retro_load_game refuses content when that\npath does not exist (libretro/libretro.c:1612-1617) and hmain writes it\ninto szTosImageFileName after the configuration files, so hatari.cfg\ncannot override it (src/main.c:914-916). TOS_LoadImage reads the file\nwhole, strips the 256-byte (or 34-byte for 4.92) loader of a RAM TOS,\ndetects EmuTOS by ETOS at offset 0x2c, and rejects an image whose version\nword is outside 0x100-0x4FF, whose load address is neither 0xE00000 nor\n0xFC0000, or which exceeds 1 MB. A 16 KB image with version 0 is the TOS\n0.00 boot loader (src/tos.c:575-651). Machine type and CPU are coerced to\nthe TOS version unless the image is EmuTOS (src/tos.c:459-566), and ROM\npatches are applied for TOS 1.00, 1.02, 1.04, 1.06, 1.62, 2.05, 2.06,\n3.06, 4.00 to 4.04 and 4.92 (src/tos.c:146-220). HFile_Read also accepts\n.img, .rom and .tos as fallback extensions and reads the first member of\na .zip or a .gz (src/file.c:217-244, libretro/include/config.h:20), which\nonly matters for a path picked in the in-core ROM dialog\n(libretro/gui-retro/dlgRom.c:69-76). EmuTOS is not embedded.\n\nThe cartridge slot is empty by default (src/configuration.c:592) and is\nfilled through hatari.cfg or the in-core ROM dialog\n(libretro/gui-retro/dlgRom.c:82-89). Cart_ResetImage installs the\nbuilt-in GEMDOS trampoline instead of the external image whenever GEMDOS\nhard disk emulation, extended VDI or OS tracing is on (src/cart.c:121-133).\n\nFloppy, ACSI, IDE and GEMDOS images are content. When a .gem folder is\nloaded, <system>/hatari/BOOT.ST is inserted into drive A so TOS boots\nwith the GEMDOS drive (libretro/libretro.c:1673-1681). Memory snapshots\nfor retro_serialize stay in memory (libretro/libretro.c:1778-1803), and\nhatari.sav, auto.sav, hatari.prn, hatari.wav and hatari.avi are output\nnames under <system>/hatari. DESKTOP.INF and NEWDESK.INF are created or\nrewritten inside the emulated C: directory when extended VDI is on\n(src/vdi.c:955-988).\n",
        "profiled_date": "2026-09-03",
        "source": "https://github.com/libretro/hatari",
        "source_branch": "hitari2014-mercurial",
        "source_commit": "ab55c3ed0e620c91e7f059a6d3fbef7acf9bfca8",
        "systems": [
          "atari-st",
          "atari-ste",
          "atari-tt",
          "atari-falcon"
        ],
        "type": "libretro",
        "upstream": "https://github.com/hatari/hatari",
        "upstream_commit": "c1a5c88bc06e56778b6b7f8483becfd58a7da2b4",
        "version_basis": {
          "distance": 0,
          "kind": "tag",
          "repo": "upstream",
          "tag": "v1.8.0"
        }
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
