Skip to content

hatariB - RetroBIOS

Type libretro
Classification Community forks
Source https://github.com/bbbradsmith/hatariB
Upstream https://github.com/hatari/hatari
Version 0.5
Profiled 2026-09-03
Cores hatarib
Systems atari-st, atari-ste, atari-tt, atari-falcon
Technical notes

hatariB carries Hatari 2.6.1 in its hatari/ directory, every change fenced by LIBRETRO (DEVELOP.md:7-14, DEVELOP.md:44-48), and builds as hatarib (makefile.libretro:1-3, core/core.c:1134); the upstream_commit is the v2.6.1 tag the tree was taken from. The core reads and writes through core_file.c, using the libretro VFS when the frontend offers version 3 (core/core_file.c:747-790). Hatari's own directory strings are replaced by (hatari/src/paths.c:339-350), hatari.cfg is never read because Main_LoadInitialConfig calls core_config_init instead (hatari/src/main.c:984-1012, core/core_config.c:1421-1426), and printer, RS232 and keymap file settings keep their disabled defaults with no option to change them (hatari/src/configuration.c:728, hatari/src/keymap.c:63, hatari/src/keymap.c:699-718).

At retro_set_environment the core looks for /tos.img and lists every entry of /hatarib/, up to 128 files and 16 directories (core/core_file.c:13-14, core/core_file.c:791-851). Those lists fill the hatarib_tos, hatarib_cartridge and hatarib_hardimg options, 100 values each: TOS candidates end in .img, .rom, .bin or .tos, cartridges in .img, .rom, .bin or .cart, hard disks are any file or subdirectory (core/core_config.c:11, core/core_config.c:1299-1366). The TOS option defaults to when the file exists and to EmuTOS 192uk otherwise (core/core_config.c:68-92, core/core_config.c:1306-1321); the four special values select tos.img or one of the built-in images, any other value is a path under the system directory (core/core_config.c:1094-1117). TOS_LoadImage copies the built-in image or reads the file with core_read_file_system and caches it (hatari/src/tos.c:45-63, hatari/src/tos.c:1028-1078); a failed load raises a notification and halts the CPU instead of leaving (hatari/src/tos.c:1080-1086, hatari/src/tos.c:1250-1262, core/core.c:419-433, hatari/src/main.c:903-922). Validation is upstream's (hatari/src/tos.c:1114-1160), but TOS_CheckSysConfig only warns and never switches machine or CPU (hatari/src/tos.c:859-1000). The hatarib_emutos_region and hatarib_emutos_framerate options rewrite the OS header word of an EmuTOS image (hatari/src/tos.c:1351-1365, core/core_config.c:1163-1169). Symbols_LoadTOS still runs (hatari/src/tos.c:1193) but resolves .sym against the process working directory, so nothing is read from the system directory.

The three EmuTOS images are EmuTOS 1.4 built from the hatarib-custom-140 branch of bbbradsmith/emutos, which lets DESKTOP.INF and NEWDESK.INF be loaded, and are compiled in through emutos/bin_to_h.py (DEVELOP.md:10, README.md:305-307).

A cartridge is read with core_read_file_system from the option value (hatari/src/cart.c:40, hatari/src/cart.c:57-100) and disabled with GEMDOS hard disk emulation, extended VDI or OS tracing (hatari/src/cart.c:108-147). A permanent hard disk comes from system/hatarib through hatarib_hardimg and hatarib_hardtype, GEMDOS folder, ACSI, SCSI or IDE (core/core_config.c:186-233, core/core_config.c:1000-1057, core/core_config.c:1151-1162); temporary ones are content with an .acsi, .ahd, .vhd, .scsi, .shd, .ide or .gem extension or lines of an M3U (core/core_disk.c:16-23, core/core_disk.c:676-713, core/core_disk.c:782-785, core/core_config.c:1059-1087). Images open through core_file_open_hard (hatari/src/hdc.c:903, hatari/src/hdc.c:961-963, hatari/src/ide.c:663-666) and GEMDOS folders through core_scandir_hard (hatari/src/gemdos.c:663, hatari/src/gemdos.c:761, hatari/src/gemdos.c:1321); hard disks are write protected by default (hatari/src/configuration.c:918). Floppy content is ST, MSA, DIM, STX, IPF or CTR, also inside a ZIP, ZST or GZ, or an M3U or M3U8 list with #BOOTA, #BOOTB, #AUTO and #RES directives (core/core_disk.c:14-24, core/core_disk.c:202-384, core/core_disk.c:444-559, core/core_disk.c:621-670). Before the original image the core takes a same-named copy from the save directory and, for STX, a .wd1772 overlay there (core/core_disk.c:787-814); modified disks are written back to the save directory (core/core_disk.c:1154-1226, hatari/src/st.c:93, hatari/src/msa.c:417, hatari/src/floppy_stx.c:451). #AUTO and #RES write a virtual INF file to system/hatarib.tmp (hatari/src/inffile.c:761) and, when booting from a GEMDOS C: folder, read the DESKTOP.INF, NEWDESK.INF or EMUDESK.INF found there (hatari/src/inffile.c:598-667). MIDI goes through the libretro MIDI interface (core/core.c:485-545, hatari/src/midi.c:593-700); Midi_Host_Open no longer opens files (hatari/src/midi.c:346-424).

8 files | 0 required, 8 optional | 6 in repo, 2 missing

tos.img optional in repo built-in fallback
Atari TOS ROM image, default when present

  • Size: max 1.0 MB
  • Validation: size
  • Source: core/core_file.c:791-851, core/core_config.c:68-92, core/core_config.c:1094-1117, core/core_config.c:1306-1321, hatari/src/tos.c:1028-1160
  • Platforms: batocera, lakka, recalbox, retroarch, retrobat, retrodeck, retropie, romm
  • Any TOS 1.00 to 4.04, TOS 0.00, a RAM TOS or EmuTOS. Further images go in system/hatarib/ with an .img, .rom, .bin or .tos extension and are selected with the hatarib_tos option; without tos.img the built-in EmuTOS 192uk is the default.

etos1024k.img optional in repo embedded
EmuTOS 1.4 1024 KB image, all machine types

  • Size: 1.0 MB
  • SHA1: 38dc8baf5224...
  • MD5: 1cb3775c4775...
  • CRC32: 118b35b4
  • SHA256: 757c571b98b9...
  • Source: emutos/bin_to_h.py:1-30, hatari/src/tos.c:45-63, hatari/src/tos.c:1038-1046, core/core_config.c:76, core/core_config.c:1096-1116
  • Compiled into the core from emutos/etos1024k.img and never opened at run time. Built from the hatarib-custom-140 branch of bbbradsmith/emutos; hashes are of the file in the repository.

etos192uk.img optional in repo embedded
EmuTOS 1.4 192 KB UK image, 50 Hz, default TOS

  • Size: 192.0 KB
  • SHA1: ef3a3ccffcb3...
  • MD5: 5f5730d9b557...
  • CRC32: fe4c3ff1
  • SHA256: 5c679e6b1b8e...
  • Source: emutos/bin_to_h.py:1-30, hatari/src/tos.c:45-63, hatari/src/tos.c:1038-1046, core/core_config.c:77, core/core_config.c:91, core/core_config.c:1096-1116
  • Compiled into the core from emutos/etos192uk.img and never opened at run time. Selected when no tos.img exists and no other image is chosen. Built from the hatarib-custom-140 branch of bbbradsmith/emutos; hashes are of the file in the repository.

etos192us.img optional in repo embedded
EmuTOS 1.4 192 KB US image, 60 Hz

  • Size: 192.0 KB
  • SHA1: bb98cd8a50df...
  • MD5: 796f62574413...
  • CRC32: 18030f9a
  • SHA256: ccccc4209080...
  • Source: emutos/bin_to_h.py:1-30, hatari/src/tos.c:45-63, hatari/src/tos.c:1038-1046, core/core_config.c:78, core/core_config.c:1096-1116
  • Compiled into the core from emutos/etos192us.img and never opened at run time. Built from the hatarib-custom-140 branch of bbbradsmith/emutos; hashes are of the file in the repository.

cartridge ROM optional missing
Atari ST cartridge image loaded at 0xFA0000

  • Size: min 40 B, max 128.0 KB
  • Validation: size
  • Source: core/core_config.c:166-185, core/core_config.c:1145-1149, core/core_config.c:1332-1344, core/core_file.c:256-259, hatari/src/cart.c:40, hatari/src/cart.c:57-100, hatari/src/cart.c:108-147
  • Config key: hatarib_cartridge
  • Any file of system/hatarib/ with an .img, .rom, .bin or .cart extension. Raw images up to 0x20000 bytes or .stc images of exactly 0x20004 bytes whose 4-byte header is skipped. Replaced by the built-in GEMDOS trampoline whenever GEMDOS hard disk emulation, extended VDI or OS tracing is on.

hatarib.nvram optional missing user_provided built-in fallback
TT and Falcon NVRAM contents, 50 bytes

capsimg.so optional in repo
CAPSImage 5.1 shared library for IPF and CTR floppy images, Linux, macOS, Android and Raspberry Pi builds

capsimg.dll optional in repo
CAPSImage 5.1 shared library for IPF and CTR floppy images, Windows build

Generated on 2026-09-14T09:03:09Z