Files
libretro/emulators/dosbox-x.yml
T

505 lines
21 KiB
YAML

emulator: DOSBox-X
type: standalone
core_classification: enhanced_fork
source: "https://github.com/joncampbell123/dosbox-x"
upstream: "https://github.com/joncampbell123/dosbox-x"
source_commit: "e013b8bf8e27ef878a646049bf5b2e732878d616"
profiled_date: "2026-09-17"
core_version: "2026.08.31"
display_name: "DOS (DOSBox-X)"
cores:
- dosbox-x
- dosboxx
systems:
- dos
- ibm-pc
- ibm-pcjr
- tandy-1000
- pc-98
mode: standalone
notes: |
Fork of DOSBox SVN with its own DOS kernel. The machine setting picks the
emulated hardware: mda, cga and its composite variants, hercules,
hercules_plus, hercules_incolor, hercules_color, tandy, pcjr, amstrad,
olivetti/m24/att6300, pc3270, ega, ega200, jega, mcga, vgaonly, the S3,
Tseng, Paradise and ATI SVGA cards, the vesa variants, and pc98/pc9801/pc9821.
fm_towns is marked STUB in the same list.
ref: src/dosbox.cpp:1537-1577
No system BIOS: the PC BIOS, VGA BIOS, video fonts, keyboard layouts, codepage
tables, the Z: drive utilities including GLIDE2X.OVL, and the TTF text font are
compiled in.
ref: int10_memory.cpp, dos_keyboard_layout_data.h, dos_codepages.h,
src/builtin/glide2x.cpp:2861, src/output/output_ttf.cpp:664
Files named without a directory are searched in the working directory, the
program directory, the user configuration directory and the resource
directory. On Linux the configuration directory is $XDG_CONFIG_HOME/dosbox-x
or ~/.config/dosbox-x, and the resource directory is $APPDIR/usr/share/dosbox-x
inside an AppImage, otherwise $XDG_DATA_HOME/dosbox-x, then
/usr/local/share/dosbox-x, then /usr/share/dosbox-x. Windows uses C:\DOSBox-X.
ref: src/ints/int10.cpp:1442-1485, src/misc/cross.cpp:129-190, 193-226
Configuration: -conf and -userconf name the files to read. Otherwise
dosbox-x.conf then dosbox.conf is tried in the working directory, then in the
program directory, then in the configuration directory, which is last tried
for dosbox-x-<version>.conf; that file is written with the defaults when it
does not exist.
ref: src/gui/sdlmain.cpp:8667-8743, src/misc/cross.cpp:229-245
MT-32: libmt32emu is built from src/libs/mt32. Only four file names are ever
opened, and each candidate is identified by exact file size then SHA1, so the
name says nothing about the contents. addROMFile matches against the full
image list only, which rejects the interleaved chip dumps.
ref: src/gui/midi_mt32.h:74-109, src/libs/mt32/c_interface/c_interface.cpp:442-462, src/libs/mt32/ROMInfo.cpp:206-215
mt32.model = auto opens CM32L_CONTROL.ROM then MT32_CONTROL.ROM, and
CM32L_PCM.ROM then MT32_PCM.ROM; cm32l keeps only the CM32L names, mt32 only
the MT32 names. The directory is mt32.romdir, then the working directory, then
the resource directory, then the configuration directory. A missing pair logs
the accepted file names and disables the device.
ref: src/gui/midi_mt32.h:246-275, src/dosbox.cpp:3607-3617
FluidSynth reads fluid.soundfont; fluid_synth_sfload is the only check. With
the setting empty it probes /usr/share/soundfonts/default.sf2,
/usr/share/sounds/sf2/FluidR3_GM.sf2 and GeneralUser_GS.sf2 on Linux, and
C:\soundfonts\default.sf2 then the two same names under C:\DOSBox-X on Windows.
ref: src/gui/midi_synth.h:342-384, 462-480
PC-98 character generator, tried in order: FONT.ROM as generated by T98Tools,
then the FONTX2 files named by pc-98 fontx sbcs and pc-98 fontx dbcs, then the
file named by pc-98 anex86 font or ANEX86.BMP followed by FREECG98.BMP, then
the built-in FREECG single-byte font and the built-in Japanese double-byte
font. Each stage fills only what the previous one left empty.
ref: src/ints/int10.cpp:1882-1893, 1652-1675
PC-98 sound board BIOS: with pc-98 sound bios set, SOUND.ROM is read from the
working directory into CC000h. Without it a callback Sound BIOS is installed
at CEE0:0000 answering INT D2h.
ref: src/hardware/pc98_fm.cpp:367-385, 416-434
DOS/V and CJK text: fontxsbcs, fontxsbcs16, fontxsbcs24, fontxdbcs,
fontxdbcs14 and fontxdbcs24 name font files. LoadFontxFile reads a FONTX2
header, otherwise tries BDF and PCF, otherwise accepts a raw bitmap font
identified by its size, which covers ASC16 and ASCFONT.15 from UCDOS and ETen
Chinese DOS, ASC24, HZK14, HZK16, HZK24 and STDFONT.15 and STDFONT.24.
Unset settings fall back to the built-in font data.
ref: src/ints/int_dosv.cpp:654-749, 1631-1710, src/dosbox.cpp:2550-2583
BOOT -bios loads a BIOS image at the top of the first megabyte, truncated to
128 KB, or 96 KB on PC-98 where it also looks for <image>.itf.rom, <image>.ITF.ROM,
itf.rom and ITF.ROM to serve the bank switched Initial Firmware Test region
through port 43Dh.
ref: src/dos/dos_programs.cpp:2227-2228, 2261-2350
BIOSTEST.COM loads an image of up to 64 KB at F000:0 and restarts the CPU at
the reset vector; it is compiled only when the debugger is enabled. The
settings call binary on reset and call binary on boot load blobs of up to
128 KB into the ROM BIOS area for CPU testing.
ref: src/dos/dos_programs.cpp:3666-3719, src/ints/bios.cpp:13298-13374
A build configured with --enable-dosbox_agent reads the key=value file named
by -agent-config to start the RPC debugger agent; the file names the
transport and endpoint, nothing else is read from disk.
ref: configure.ac:1441-1448, src/gui/sdlmain.cpp:8490-8496, src/agent/protocol/agent_protocol.cpp:477-632
Glide passthrough loads glide2x.dll, libglide2x.so or libglide2x.dylib.
ref: src/hardware/glide.cpp:353-359, src/dosbox.cpp:3507-3509
ttf.font, ttf.fontbold, ttf.fontital and ttf.fontboit name a TTF, OTF, FON or
TTC font resolved through the same search order plus the system font
directories. Unset, the TTF output uses the built-in font, except on PC-98 or
a double-byte code page where SarasaGothicFixed.ttf is tried first.
ref: src/output/output_ttf.cpp:318-473, 653-668
Shipped in the resource directory: FREECG98.BMP, wqy_11pt.bdf, wqy_12pt.bdf,
Nouveau_IBM.ttf, SarasaGothicFixed.ttf and the two reference configuration
files.
ref: src/Makefile.am:14-22
Overrides for data that is compiled in: the boot logo PNG, the mapper file,
the customcodepage translation table, .kl layout files and the KEYBOARD.SYS
to KEYBRD4.SYS libraries read from a mounted drive, the glshaders directory
and the .lng translations.
ref: src/ints/bios.cpp:11466-11475, src/gui/sdlmain.cpp:968-970, 7012-7020,
src/gui/sdl_mapper.cpp:5731-5787, src/dos/dos.cpp:4402-4437,
src/dos/dos_keyboard_layout.cpp:300-340, src/gui/render.cpp:1547-1554,
src/misc/messages.cpp:300-326
files:
# -- MT-32 and CM-32L control ROMs --
# Read through addROMFile from mt32.romdir, the working directory, the
# resource directory or the configuration directory. Both control file names
# are opened in mt32.model = auto, so either name carries any of these images.
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.04"
required: false
size: 65536
sha1: "5a5cb5a77d7d55ee69657c2f870416daed52dea7"
validation: [sha1, size]
aliases: ["CM32L_CONTROL.ROM"]
source_ref: "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:59, src/libs/mt32/ROMInfo.cpp:89"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.05"
required: false
size: 65536
sha1: "e17a3a6d265bf1fa150312061134293d2b58288c"
validation: [sha1, size]
aliases: ["CM32L_CONTROL.ROM"]
source_ref: "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:62, src/libs/mt32/ROMInfo.cpp:92"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.06"
required: false
size: 65536
sha1: "a553481f4e2794c10cfe597fef154eef0d8257de"
validation: [sha1, size]
aliases: ["CM32L_CONTROL.ROM"]
source_ref: "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:65, src/libs/mt32/ROMInfo.cpp:95"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v1.07"
required: false
size: 65536
sha1: "b083518fffb7f66b03c23b7eb4f868e62dc5a987"
validation: [sha1, size]
aliases: ["CM32L_CONTROL.ROM"]
source_ref: "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:68, src/libs/mt32/ROMInfo.cpp:98"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control BlueRidge"
required: false
size: 65536
sha1: "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92"
validation: [sha1, size]
aliases: ["CM32L_CONTROL.ROM"]
source_ref: "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:71, src/libs/mt32/ROMInfo.cpp:101"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.03"
required: false
size: 131072
sha1: "5837064c9df4741a55f7c4d8787ac158dff2d3ce"
validation: [sha1, size]
aliases: ["CM32L_CONTROL.ROM"]
source_ref: "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:73, src/libs/mt32/ROMInfo.cpp:103"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.04"
required: false
size: 131072
sha1: "2c16432b6c73dd2a3947cba950a0f4c19d6180eb"
validation: [sha1, size]
aliases: ["CM32L_CONTROL.ROM"]
source_ref: "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:74, src/libs/mt32/ROMInfo.cpp:104"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.06"
required: false
size: 131072
sha1: "2869cf4c235d671668cfcb62415e2ce8323ad4ed"
validation: [sha1, size]
aliases: ["CM32L_CONTROL.ROM"]
source_ref: "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:75, src/libs/mt32/ROMInfo.cpp:105"
- name: "MT32_CONTROL.ROM"
description: "MT-32 Control v2.07"
required: false
size: 131072
sha1: "47b52adefedaec475c925e54340e37673c11707c"
validation: [sha1, size]
aliases: ["CM32L_CONTROL.ROM"]
source_ref: "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:76, src/libs/mt32/ROMInfo.cpp:106"
- name: "CM32L_CONTROL.ROM"
description: "CM-32L/LAPC-I Control v1.00"
required: false
size: 65536
sha1: "73683d585cd6948cc19547942ca0e14a0319456d"
validation: [sha1, size]
aliases: ["MT32_CONTROL.ROM"]
source_ref: "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:77, src/libs/mt32/ROMInfo.cpp:107"
- name: "CM32L_CONTROL.ROM"
description: "CM-32L/LAPC-I Control v1.02"
required: false
size: 65536
sha1: "a439fbb390da38cada95a7cbb1d6ca199cd66ef8"
validation: [sha1, size]
aliases: ["MT32_CONTROL.ROM"]
source_ref: "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:78, src/libs/mt32/ROMInfo.cpp:108"
- name: "CM32L_CONTROL.ROM"
description: "CM-32LN/CM-500/LAPC-N Control v1.00"
required: false
size: 65536
sha1: "dc1c5b1b90a4646d00f7daf3679733c7badc7077"
validation: [sha1, size]
aliases: ["MT32_CONTROL.ROM"]
source_ref: "src/gui/midi_mt32.h:81-89, src/libs/mt32/ROMInfo.cpp:79, src/libs/mt32/ROMInfo.cpp:109"
# -- MT-32 and CM-32L PCM ROMs --
# Every MT-32 control ROM pairs with the MT-32 PCM ROM, every CM-32L family
# control ROM with the 1 MB image.
- name: "MT32_PCM.ROM"
description: "MT-32 PCM ROM"
required: false
size: 524288
sha1: "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252"
validation: [sha1, size]
aliases: ["CM32L_PCM.ROM"]
source_ref: "src/gui/midi_mt32.h:93-105, src/libs/mt32/ROMInfo.cpp:83, src/libs/mt32/ROMInfo.cpp:113"
- name: "CM32L_PCM.ROM"
description: "CM-32L/CM-64/LAPC-I PCM ROM"
required: false
size: 1048576
sha1: "289cc298ad532b702461bfc738009d9ebe8025ea"
validation: [sha1, size]
aliases: ["MT32_PCM.ROM"]
source_ref: "src/gui/midi_mt32.h:93-105, src/libs/mt32/ROMInfo.cpp:85, src/libs/mt32/ROMInfo.cpp:117"
# -- FluidSynth SoundFont --
- name: "default.sf2"
description: "SoundFont the operating system installs as FluidSynth default"
required: false
unsourceable: "a link the operating system creates to the SoundFont it installs as default, FluidR3_GM.sf2 on Fedora; no file of this name is distributed, and a same-named file of another program must not stand in"
note: >
first probe when fluid.soundfont is empty:
/usr/share/soundfonts/default.sf2, or C:\soundfonts\default.sf2 on
Windows. The source marks the first path as the Red Hat and Fedora
one, where the name links to FluidR3_GM.sf2, the file of the second
probe. Any SF2 or SF3 file loads; fluid.soundfont names it and
fluid_synth_sfload is the only check
source_ref: "src/gui/midi_synth.h:346-352, src/gui/midi_synth.h:364-368, src/gui/midi_synth.h:381-384, src/gui/midi_synth.h:462-473, src/dosbox.cpp:3746-3747"
- name: "FluidR3_GM.sf2"
description: "Fluid R3 GM SoundFont by Frank Wen"
required: false
note: >
second probe when fluid.soundfont is empty:
/usr/share/sounds/sf2/FluidR3_GM.sf2, or C:\DOSBox-X\FluidR3_GM.sf2 on
Windows. Elsewhere the file loads when fluid.soundfont gives its path.
The synth device probes the same paths
source_ref: "src/gui/midi_synth.h:353-355, src/gui/midi_synth.h:370-372, src/gui/midi_synth.h:176-178, src/gui/midi_synth.h:193-195"
- name: "GeneralUser_GS.sf2"
description: "GeneralUser GS SoundFont by S. Christian Collins"
required: false
note: >
third probe when fluid.soundfont is empty:
/usr/share/sounds/sf2/GeneralUser_GS.sf2, or
C:\DOSBox-X\GeneralUser_GS.sf2 on Windows. Elsewhere the file loads
when fluid.soundfont gives its path; the setting's help text names this
file as its example. The synth device probes the same paths
source_ref: "src/gui/midi_synth.h:356-358, src/gui/midi_synth.h:373-375, src/gui/midi_synth.h:179-181, src/gui/midi_synth.h:196-198, src/dosbox.cpp:3747"
# -- PC-98 character generator --
- name: "FONT.ROM"
description: "PC-98 character generator ROM, T98Tools layout"
required: false
hle_fallback: true
size: 288768
validation: [size]
note: >
256 8x8 cells at 0x0, 256 8x16 cells at 0x800, 96 by 92 16x16 cells at
0x1800; a file of any other length is rejected. Enabled by
pc-98 try font rom, on by default
source_ref: "src/ints/int10.cpp:1487-1549, src/dosbox.cpp:2494-2495"
- name: "ANEX86.BMP"
description: "PC-98 character generator, Anex86 bitmap"
required: false
hle_fallback: true
note: >
2048 by 2048 monochrome Windows bitmap, biSize 40, one plane, one bit per
pixel, no compression, inverse colour scheme; the first row is the 8x16
single-width set and the rest is 16x16 full-width. Also reachable through
the pc-98 anex86 font setting, which is tried before FONT.ROM
source_ref: "src/ints/int10.cpp:1555-1647, src/dosbox.cpp:2498-2501"
- name: "FREECG98.BMP"
description: "PC-98 character generator, free generated bitmap"
required: false
hle_fallback: true
note: >
same bitmap layout as ANEX86.BMP and tried after it; ships in the resource
directory
source_ref: "src/ints/int10.cpp:1577-1580, src/Makefile.am:17"
# -- CJK bitmap fonts --
# Read when the guest code page is 936, 949, 950 or 951 and a character has no
# equivalent in the built-in Japanese font. The .pcf form of each name is
# tried after the .bdf form.
- name: "wqy_12pt.bdf"
description: "WenQuanYi 16-pixel bitmap font"
required: false
aliases: ["wqy_12pt.pcf"]
note: "ships in the resource directory"
source_ref: "src/ints/int_dosv.cpp:1197-1218, src/Makefile.am:19"
- name: "wqy_11pt.bdf"
description: "WenQuanYi 14-pixel bitmap font"
required: false
aliases: ["wqy_11pt.pcf"]
note: "ships in the resource directory"
source_ref: "src/ints/int_dosv.cpp:1296-1316, src/Makefile.am:18"
- name: "SarasaGothicFixed.ttf"
description: "CJK fixed-width TrueType font"
required: false
hle_fallback: true
note: >
tried by the TTF output on PC-98 and on double-byte code pages when
ttf.font is unset, and by the printer when the selected typeface file is
missing; ships in the resource directory
source_ref: "src/output/output_ttf.cpp:655-668, src/hardware/parport/printer.cpp:354-380, src/Makefile.am:21"
# -- Printer typefaces --
# Read from the directory named by the printer fontpath setting, default
# FONTS, then from the configuration, resource and program directories.
# FT_New_Face is the only check.
- name: "roman.ttf"
path: "FONTS/roman.ttf"
description: "Printer Roman typeface"
required: false
note: "also the fallback typeface for any unmapped LQ selection"
source_ref: "src/hardware/parport/printer.cpp:320-321, src/hardware/parport/printer.cpp:336-337, src/dosbox.cpp:4691-4693"
- name: "sansserif.ttf"
path: "FONTS/sansserif.ttf"
description: "Printer Sans Serif typeface"
required: false
source_ref: "src/hardware/parport/printer.cpp:323-324, src/dosbox.cpp:4691-4693"
- name: "courier.ttf"
path: "FONTS/courier.ttf"
description: "Printer Courier typeface"
required: false
source_ref: "src/hardware/parport/printer.cpp:326-327, src/dosbox.cpp:4691-4693"
- name: "script.ttf"
path: "FONTS/script.ttf"
description: "Printer Script typeface"
required: false
source_ref: "src/hardware/parport/printer.cpp:329-330, src/dosbox.cpp:4691-4693"
- name: "ocra.ttf"
path: "FONTS/ocra.ttf"
description: "Printer OCR-A typeface"
required: false
note: "serves both the OCR-A and OCR-B selections"
source_ref: "src/hardware/parport/printer.cpp:332-334, src/dosbox.cpp:4691-4693"
# -- PC-98 sound board BIOS --
- name: "SOUND.ROM"
description: "PC-9801-26K/86 FM board BIOS"
required: false
hle_fallback: true
min_size: 16384
validation: [size]
note: >
16 KB read into CC000h from the working directory only, when
pc-98 sound bios and pc-98 load sound bios rom file are both set
source_ref: "src/hardware/pc98_fm.cpp:367-385, src/dosbox.cpp:2395-2402"
# -- Video BIOS ROM images --
# Loaded in place of the built-in INT 10h when vga bios use rom image is set.
# The name comes from vga bios rom image, or from the machine type when that
# setting is empty.
- name: "et4000.bin"
description: "Tseng ET4000 video BIOS"
required: false
min_size: 1024
max_size: 65536
validation: [size]
note: "default file name for machine = svga_et4000"
source_ref: "src/dosbox.cpp:943-994, src/dosbox.cpp:2762-2773"
- name: "TRIO64 (Ver. 1.5-07) [VGA] (S3 Incorporated).bin"
description: "S3 Trio64 video BIOS"
sha1: "a308b15f93da34961c0141ec95b98c211557e2d5"
required: false
aliases: ["86c764x1.bin"]
min_size: 1024
max_size: 65536
validation: [size]
note: "default file name for machine = svga_s3"
source_ref: "src/dosbox.cpp:951-953, src/dosbox.cpp:2762-2773"
- name: "ibm-vga.bin"
description: "IBM VGA option ROM of 10/27/86, laid out as mapped at C000:0"
sha1: "dce6491424f1726203776dfae9a967a98a4ba7b5"
required: false
min_size: 16384
max_size: 32768
validation: [size]
note: >
read by LOADROM.COM from a mounted local drive; accepted when the file
starts with 55 AA, byte 3 masked with 0xFC equals 0xE8 and the string IBM
appears at offset 0x1E, and the machine is EGA or better
source_ref: "src/dos/dos_programs.cpp:3606-3632, src/dos/dos_programs.cpp:3643-3649"
# -- IBM ROM BASIC --
- name: "IBMROMBASIC-F6000h-1982-10-27.ROM"
description: "IBM 5150 Cassette BASIC ROM"
aliases: ["ibm-basic-1.10.rom"]
sha1: "07449ebca18f979b9ab748582b736e402f2bf940"
required: false
min_size: 32768
max_size: 65536
validation: [size]
note: >
the ibm rom basic setting maps it just below the ROM BIOS and accepts
32 KB to 64 KB in 4 KB steps; LOADROM.COM maps the same image at F600:0
when it is exactly 32768 bytes, starts with E9 8F 7E and carries the
string IBM at offset 0x4CD4
source_ref: "src/ints/bios.cpp:13230-13250, src/dos/dos_programs.cpp:3633-3637, src/dosbox.cpp:1948-1950"
# -- PCjr --
- name: "system.rom"
description: "IBM PCjr system ROM"
sha1: "1f5f7013f18c08ff50d7942e76c4fbd782412414"
required: false
aliases: ["bios.rom"]
min_size: 57344
validation: [size]
note: >
read during PCjr cartridge boot; bytes 0x3000 to 0xDFFF are copied to
physical F3000. A short read leaves the region untouched and the cartridge
still boots
source_ref: "src/dos/dos_programs.cpp:3079-3088"
# -- Whole system BIOS images --
- name: "System BIOS image"
description: "PC/AT or PC-98 BIOS ROM image booted by BOOT -bios"
required: false
note: >
loaded at the top of the first megabyte, rounded up to a paragraph and
truncated to 128 KB, or to 96 KB on PC-98; a larger image is clamped
rather than rejected
source_ref: "src/dos/dos_programs.cpp:2261-2311"
- name: "ITF.ROM"
description: "PC-98 Initial Firmware Test BIOS"
required: false
max_size: 32768
validation: [size]
note: >
served through the port 43Dh bank switch alongside a BOOT -bios image;
<image>.itf.rom is tried before the bare name so one directory can hold
several
source_ref: "src/dos/dos_programs.cpp:2313-2344"