DOSBox-X - RetroBIOS¶
Technical 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
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
34 files | 0 required, 34 optional | 25 in repo, 9 missing | 5 with HLE fallback
MT32_CONTROL.ROM optional in repo
MT-32 Control v1.04
- Size: 64.0 KB
- SHA1:
5a5cb5a77d7d... - Aliases:
CM32L_CONTROL.ROM - Validation: sha1, size
- Source:
src/gui/midi_mt32.h:81-89,src/libs/mt32/ROMInfo.cpp:59,src/libs/mt32/ROMInfo.cpp:89 - Platforms: batocera, lakka, recalbox, retroarch, retrobat, retropie
MT32_CONTROL.ROM optional in repo
MT-32 Control v1.05
- Size: 64.0 KB
- SHA1:
e17a3a6d265b... - Aliases:
CM32L_CONTROL.ROM - Validation: sha1, size
- Source:
src/gui/midi_mt32.h:81-89,src/libs/mt32/ROMInfo.cpp:62,src/libs/mt32/ROMInfo.cpp:92 - Platforms: batocera, lakka, recalbox, retroarch, retrobat, retropie
MT32_CONTROL.ROM optional in repo
MT-32 Control v1.06
- Size: 64.0 KB
- SHA1:
a553481f4e27... - Aliases:
CM32L_CONTROL.ROM - Validation: sha1, size
- Source:
src/gui/midi_mt32.h:81-89,src/libs/mt32/ROMInfo.cpp:65,src/libs/mt32/ROMInfo.cpp:95 - Platforms: batocera, lakka, recalbox, retroarch, retrobat, retropie
MT32_CONTROL.ROM optional in repo
MT-32 Control v1.07
- Size: 64.0 KB
- SHA1:
b083518fffb7... - Aliases:
CM32L_CONTROL.ROM - Validation: sha1, size
- Source:
src/gui/midi_mt32.h:81-89,src/libs/mt32/ROMInfo.cpp:68,src/libs/mt32/ROMInfo.cpp:98 - Platforms: batocera, lakka, recalbox, retroarch, retrobat, retropie
MT32_CONTROL.ROM optional in repo
MT-32 Control BlueRidge
- Size: 64.0 KB
- SHA1:
7b8c2a5ddb42... - Aliases:
CM32L_CONTROL.ROM - Validation: sha1, size
- Source:
src/gui/midi_mt32.h:81-89,src/libs/mt32/ROMInfo.cpp:71,src/libs/mt32/ROMInfo.cpp:101 - Platforms: batocera, lakka, recalbox, retroarch, retrobat, retropie
MT32_CONTROL.ROM optional in repo
MT-32 Control v2.03
- Size: 128.0 KB
- SHA1:
5837064c9df4... - Aliases:
CM32L_CONTROL.ROM - Validation: sha1, size
- Source:
src/gui/midi_mt32.h:81-89,src/libs/mt32/ROMInfo.cpp:73,src/libs/mt32/ROMInfo.cpp:103 - Platforms: batocera, lakka, recalbox, retroarch, retrobat, retropie
MT32_CONTROL.ROM optional in repo
MT-32 Control v2.04
- Size: 128.0 KB
- SHA1:
2c16432b6c73... - Aliases:
CM32L_CONTROL.ROM - Validation: sha1, size
- Source:
src/gui/midi_mt32.h:81-89,src/libs/mt32/ROMInfo.cpp:74,src/libs/mt32/ROMInfo.cpp:104 - Platforms: batocera, lakka, recalbox, retroarch, retrobat, retropie
MT32_CONTROL.ROM optional in repo
MT-32 Control v2.06
- Size: 128.0 KB
- SHA1:
2869cf4c235d... - Aliases:
CM32L_CONTROL.ROM - Validation: sha1, size
- Source:
src/gui/midi_mt32.h:81-89,src/libs/mt32/ROMInfo.cpp:75,src/libs/mt32/ROMInfo.cpp:105 - Platforms: batocera, lakka, recalbox, retroarch, retrobat, retropie
MT32_CONTROL.ROM optional in repo
MT-32 Control v2.07
- Size: 128.0 KB
- SHA1:
47b52adefeda... - Aliases:
CM32L_CONTROL.ROM - Validation: sha1, size
- Source:
src/gui/midi_mt32.h:81-89,src/libs/mt32/ROMInfo.cpp:76,src/libs/mt32/ROMInfo.cpp:106 - Platforms: batocera, lakka, recalbox, retroarch, retrobat, retropie
CM32L_CONTROL.ROM optional in repo
CM-32L/LAPC-I Control v1.00
- Size: 64.0 KB
- SHA1:
73683d585cd6... - Aliases:
MT32_CONTROL.ROM - Validation: sha1, size
- Source:
src/gui/midi_mt32.h:81-89,src/libs/mt32/ROMInfo.cpp:77,src/libs/mt32/ROMInfo.cpp:107 - Platforms: lakka, retroarch, retropie
CM32L_CONTROL.ROM optional in repo
CM-32L/LAPC-I Control v1.02
- Size: 64.0 KB
- SHA1:
a439fbb390da... - Aliases:
MT32_CONTROL.ROM - Validation: sha1, size
- Source:
src/gui/midi_mt32.h:81-89,src/libs/mt32/ROMInfo.cpp:78,src/libs/mt32/ROMInfo.cpp:108 - Platforms: lakka, retroarch, retropie
CM32L_CONTROL.ROM optional in repo
CM-32LN/CM-500/LAPC-N Control v1.00
- Size: 64.0 KB
- SHA1:
dc1c5b1b90a4... - Aliases:
MT32_CONTROL.ROM - Validation: sha1, size
- Source:
src/gui/midi_mt32.h:81-89,src/libs/mt32/ROMInfo.cpp:79,src/libs/mt32/ROMInfo.cpp:109 - Platforms: lakka, retroarch, retropie
MT32_PCM.ROM optional in repo
MT-32 PCM ROM
- Size: 512.0 KB
- SHA1:
f6b1eebc4b2d... - Aliases:
CM32L_PCM.ROM - Validation: sha1, size
- Source:
src/gui/midi_mt32.h:93-105,src/libs/mt32/ROMInfo.cpp:83,src/libs/mt32/ROMInfo.cpp:113 - Platforms: batocera, lakka, recalbox, retroarch, retrobat, retropie
CM32L_PCM.ROM optional in repo
CM-32L/CM-64/LAPC-I PCM ROM
- Size: 1.0 MB
- SHA1:
289cc298ad53... - Aliases:
MT32_PCM.ROM - Validation: sha1, size
- Source:
src/gui/midi_mt32.h:93-105,src/libs/mt32/ROMInfo.cpp:85,src/libs/mt32/ROMInfo.cpp:117 - Platforms: lakka, retroarch, retropie
default.sf2 optional in repo
General MIDI SoundFont
- Aliases:
FluidR3_GM.sf2,GeneralUser_GS.sf2 - Source:
src/gui/midi_synth.h:346-384,src/gui/midi_synth.h:462-473,src/dosbox.cpp:3710 - Platforms: batocera
- any SF2 or SF3 file loads; fluid.soundfont names it and fluid_synth_sfload is the only check
FONT.ROM optional in repo HLE fallback
PC-98 character generator ROM, T98Tools layout
- Size: 282.0 KB
- Validation: size
- Source:
src/ints/int10.cpp:1487-1549,src/dosbox.cpp:2477-2478 - Platforms: batocera, lakka, retroarch, retrobat, retrodeck, retropie
- 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
ANEX86.BMP optional in repo HLE fallback
PC-98 character generator, Anex86 bitmap
- Source:
src/ints/int10.cpp:1555-1647,src/dosbox.cpp:2481-2484 - 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
FREECG98.BMP optional in repo HLE fallback
PC-98 character generator, free generated bitmap
- Source:
src/ints/int10.cpp:1577-1580,src/Makefile.am:17 - same bitmap layout as ANEX86.BMP and tried after it; ships in the resource directory
wqy_12pt.bdf optional in repo
WenQuanYi 16-pixel bitmap font
- Aliases:
wqy_12pt.pcf - Source:
src/ints/int_dosv.cpp:1197-1218,src/Makefile.am:19 - ships in the resource directory
wqy_11pt.bdf optional in repo
WenQuanYi 14-pixel bitmap font
- Aliases:
wqy_11pt.pcf - Source:
src/ints/int_dosv.cpp:1296-1316,src/Makefile.am:18 - ships in the resource directory
SarasaGothicFixed.ttf optional in repo HLE fallback
CJK fixed-width TrueType font
- Source:
src/output/output_ttf.cpp:655-668,src/hardware/parport/printer.cpp:354-380,src/Makefile.am:21 - 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
roman.ttf optional missing
Printer Roman typeface
- Path:
FONTS/roman.ttf - Source:
src/hardware/parport/printer.cpp:320-321,src/hardware/parport/printer.cpp:336-337,src/dosbox.cpp:4597 - also the fallback typeface for any unmapped LQ selection
sansserif.ttf optional missing
Printer Sans Serif typeface
- Path:
FONTS/sansserif.ttf - Source:
src/hardware/parport/printer.cpp:323-324,src/dosbox.cpp:4597
courier.ttf optional missing
Printer Courier typeface
- Path:
FONTS/courier.ttf - Source:
src/hardware/parport/printer.cpp:326-327,src/dosbox.cpp:4597
script.ttf optional missing
Printer Script typeface
- Path:
FONTS/script.ttf - Source:
src/hardware/parport/printer.cpp:329-330,src/dosbox.cpp:4597
ocra.ttf optional missing
Printer OCR-A typeface
- Path:
FONTS/ocra.ttf - Source:
src/hardware/parport/printer.cpp:332-334,src/dosbox.cpp:4597 - serves both the OCR-A and OCR-B selections
SOUND.ROM optional in repo HLE fallback
PC-9801-26K/86 FM board BIOS
- Size: min 16.0 KB
- Validation: size
- Source:
src/hardware/pc98_fm.cpp:367-385,src/dosbox.cpp:2378-2386 - Platforms: batocera, retrobat
- 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
et4000.bin optional in repo
Tseng ET4000 video BIOS
- Size: min 1.0 KB, max 64.0 KB
- Validation: size
- Source:
src/dosbox.cpp:938-982,src/dosbox.cpp:2745-2757 - default file name for machine = svga_et4000
TRIO64 (Ver. 1.5-07) [VGA] (S3 Incorporated).bin optional missing
S3 Trio64 video BIOS
- Size: min 1.0 KB, max 64.0 KB
- Validation: size
- Source:
src/dosbox.cpp:943-945,src/dosbox.cpp:2745-2757 - default file name for machine = svga_s3
Video BIOS option ROM optional missing
Option ROM image mapped at C000:0 and initialised
- Size: min 16.0 KB, max 32.0 KB
- Validation: size
- Source:
src/dos/dos_programs.cpp:3523-3549,src/dos/dos_programs.cpp:3560-3565 - 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
IBMROMBASIC-F6000h-1982-10-27.ROM optional in repo
IBM 5150 Cassette BASIC ROM
- Size: min 32.0 KB, max 64.0 KB
- Validation: size
- Source:
src/ints/bios.cpp:13074-13094,src/dos/dos_programs.cpp:3550-3554,src/dosbox.cpp:1931-1933 - 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
system.rom optional missing
IBM PCjr system ROM
- Size: min 56.0 KB
- Validation: size
- Source:
src/dos/dos_programs.cpp:3061-3070 - 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
System BIOS image optional missing
PC/AT or PC-98 BIOS ROM image booted by BOOT -bios
- Source:
src/dos/dos_programs.cpp:2244-2293 - 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
ITF.ROM optional in repo
PC-98 Initial Firmware Test BIOS
- Size: max 32.0 KB
- Validation: size
- Source:
src/dos/dos_programs.cpp:2295-2326 - Platforms: batocera, retrobat
- served through the port 43Dh bank switch alongside a BOOT -bios image;
.itf.rom is tried before the bare name so one directory can hold several
Generated on 2026-08-23T16:12:06Z