Files
libretro/emulators/dosbox-x.yml
T

462 lines
18 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: "6cad735d685406bd4ef2a0b60a4613569e211fd8"
profiled_date: "2026-08-08"
core_version: "2026.08.02"
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: dosbox.cpp:1526-1562
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, 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 $XDG_DATA_HOME/dosbox-x,
then /usr/local/share/dosbox-x, then /usr/share/dosbox-x. Windows uses
C:\DOSBox-X.
ref: int10.cpp:1442-1485, cross.cpp:120-167
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: midi_mt32.h:74-109, c_interface.cpp:442-462, 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: midi_mt32.h:246-275, dosbox.cpp:3571-3576
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: 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: 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: 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: int_dosv.cpp:654-749, 1631-1710, dosbox.cpp:2533-2568
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: dos_programs.cpp:2244-2332
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: dos_programs.cpp:3581-3640, bios.cpp:13142-13215
Glide passthrough loads glide2x.dll, libglide2x.so or libglide2x.dylib.
ref: glide.cpp:353-359, dosbox.cpp:3471-3473
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: 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: bios.cpp:11389-11398, sdlmain.cpp:7001-7008,
dos.cpp:4397-4420, dos_keyboard_layout.cpp:300-340,
render.cpp:1538-1545, messages.cpp:294-320
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: "General MIDI SoundFont"
required: false
aliases:
- "FluidR3_GM.sf2"
- "GeneralUser_GS.sf2"
note: >
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-384, src/gui/midi_synth.h:462-473, src/dosbox.cpp:3710"
# -- 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:2477-2478"
- 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:2481-2484"
- 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:4597"
- 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:4597"
- 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:4597"
- 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:4597"
- 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:4597"
# -- 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:2378-2386"
# -- 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:938-982, src/dosbox.cpp:2745-2757"
- name: "TRIO64 (Ver. 1.5-07) [VGA] (S3 Incorporated).bin"
description: "S3 Trio64 video BIOS"
required: false
min_size: 1024
max_size: 65536
validation: [size]
note: "default file name for machine = svga_s3"
source_ref: "src/dosbox.cpp:943-945, src/dosbox.cpp:2745-2757"
- name: "Video BIOS option ROM"
description: "Option ROM image mapped at C000:0 and initialised"
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:3523-3549, src/dos/dos_programs.cpp:3560-3565"
# -- IBM ROM BASIC --
- name: "IBMROMBASIC-F6000h-1982-10-27.ROM"
description: "IBM 5150 Cassette BASIC ROM"
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:13074-13094, src/dos/dos_programs.cpp:3550-3554, src/dosbox.cpp:1931-1933"
# -- PCjr --
- name: "system.rom"
description: "IBM PCjr system ROM"
required: false
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:3061-3070"
# -- 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:2244-2293"
- 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:2295-2326"