Skip to content

DOSBox Staging - RetroBIOS

Type standalone
Classification Enhanced forks
Source https://github.com/dosbox-staging/dosbox-staging
Version 0.84.0-alpha
Profiled 2026-08-08
Cores dosbox-staging, dosbox_staging
Systems dos, ibm-pc, ibm-pcjr, tandy-1000
Technical notes

Continuation of DOSBox on a C++23 codebase, SDL3, libmt32emu and FluidSynth from vcpkg. The machine setting selects a video adapter (hercules, cga, cga_mono, ega, svga_s3, svga_et3000, svga_et4000, svga_paradise, vesa_nolfb, vesa_oldvbe) or a machine (pcjr, tandy). ref: src/dosbox.cpp:1317-1329, vcpkg.json

No system BIOS: the PC BIOS, video BIOS fonts, keyboard layouts and codepage tables are implemented in code. ref: int10_memory.cpp:160, dos_keyboard_layout_data.h

MIDI devices that need external data are mt32, soundcanvas and fluidsynth. A device that fails to initialise throws, MIDI_Init warns and retries with mididevice = port, then disables MIDI output. Emulation continues either way. ref: midi.cpp:794-850

MT-32/CM-32L: libmt32emu identifies every candidate by file size then SHA1, so file names carry no meaning; a directory scan caches which ROM ids each directory holds and logs anything unrecognised. ref: mt32_lasynth_model.cpp:36-97, munt ROMInfo.cpp:206-213 A model needs one control ROM and one PCM ROM, supplied either as a full image (addROMFile) or as the two chip dumps merged in memory (mergeAndAddROMFiles): control halves are byte-interleaved, PCM halves are concatenated. ref: mt32_lasynth_model.cpp:114-151, munt ROMInfo.cpp:312-331 model = auto resolves the first available of cm32l_102, cm32l_100, cm32ln_100, mt32_107, mt32_106, mt32_105, mt32_104, mt32_bluer, mt32_207, mt32_206, mt32_204, mt32_203; the aliases cm32l, mt32, mt32_old and mt32_new restrict that list. MIXER /LISTMIDI prints what was found. ref: mt32.cpp:278-331, 504-557 Search order is romdir, then mt32-roms in the configuration directory, then the platform locations (C:\mt32-rom-data on Windows; ~/Library/Audio/Sounds/MT32-Roms and /usr/{local/,}share/mt32-rom-data on macOS; $XDG_DATA_HOME/dosbox/mt32-roms, $XDG_DATA_HOME/mt32-rom-data, $XDG_DATA_DIRS/mt32-rom-data and $XDG_CONFIG_HOME/dosbox/mt32-roms on Linux). A relative romdir resolves against the working directory, so a game folder can carry its own set. ref: mt32.cpp:385-396, 416-485

Sound Canvas: the SC-55 is emulated by the Nuked SC55 CLAP plugin, loaded from a plugins directory next to the executable, in the configuration directory or under the XDG data directories. DOSBox Staging resolves the ROM directory candidates, canonicalises the ones that exist and exports them as SOUNDCANVAS_ROM_PATH; the plugin appends the per-model subdirectory, hashes every file under 4 MB it finds there and matches SHA256 against its table. ref: soundcanvas.cpp:326-373, support.cpp:351-379, Nuked-SC55-CLAP nuked_sc55.cpp:117-215, Nuked-SC55-CLAP rom_loader.cpp:32-63, Nuked-SC55-CLAP rom_io.cpp:271-564 soundcanvas_model = auto resolves sc55_121, sc55_120, sc55_110, sc55_100, sc55_200, sc55mk2_101, sc55mk2_100 in that order by matching plugin names. The plugin publishes six descriptors: SC-55 v1.00, v1.10, v1.20, v1.21, v2.00 and SC-55mk2 v1.01. ref: soundcanvas.cpp:55-71, 80-147, Nuked-SC55-CLAP plugin.cpp:23-90

FluidSynth: the soundfont setting names a file, tried as given and with .sf2 appended, in soundfont_dir, then soundfonts in the configuration directory, then the platform locations. fluid_synth_sfload is the only check. The SoundFont name from the RIFF INFO chunk and the file stem select reverb, chorus and filter presets for four known banks. ref: fluidsynth.cpp:107-230, 672-689, 816-883, 1229-1252

Bundled data ships with the program and is read from the resources directory next to the executable: FreeDOS codepages and keyboard layouts, translations, shaders and shader presets, CGA colour presets, drive noise samples, the mounted Y: drive utilities, the web interface and the manual pages. ref: support.cpp:300-320, dos_code_page.cpp:1828, dos_keyboard_layout.cpp:70, messages.cpp:1073, shader_manager.cpp:236,404, int10_modes.cpp:2302, disk_noise.cpp:187, autoexec.cpp:759

BIOSTEST.COM loads an arbitrary BIOS image at F000:0 and is compiled only when the debugger is enabled, which is off by default. ref: src/dos/CMakeLists.txt:81-83, biostest.h

54 files | 0 required, 54 optional | 51 in repo, 3 missing

ctrl_mt32_1_04.rom optional in repo
MT-32 Control v1.04

ctrl_mt32_1_05.rom optional in repo
MT-32 Control v1.05

ctrl_mt32_1_06.rom optional in repo
MT-32 Control v1.06

ctrl_mt32_1_07.rom optional in repo
MT-32 Control v1.07

ctrl_mt32_bluer.rom optional in repo
MT-32 Control BlueRidge

ctrl_mt32_2_03.rom optional in repo
MT-32 Control v2.03

ctrl_mt32_2_04.rom optional in repo
MT-32 Control v2.04

ctrl_mt32_2_06.rom optional in repo
MT-32 Control v2.06

ctrl_mt32_2_07.rom optional in repo
MT-32 Control v2.07

ctrl_cm32l_1_00.rom optional in repo
CM-32L/LAPC-I Control v1.00

ctrl_cm32l_1_02.rom optional in repo
CM-32L/LAPC-I Control v1.02

ctrl_cm32ln_1_00.rom optional in repo
CM-32LN/CM-500/LAPC-N Control v1.00

ctrl_mt32_1_04_a.rom optional in repo
MT-32 Control v1.04, even bytes

ctrl_mt32_1_04_b.rom optional in repo
MT-32 Control v1.04, odd bytes

ctrl_mt32_1_05_a.rom optional in repo
MT-32 Control v1.05, even bytes

ctrl_mt32_1_05_b.rom optional in repo
MT-32 Control v1.05, odd bytes

ctrl_mt32_1_06_a.rom optional in repo
MT-32 Control v1.06, even bytes

ctrl_mt32_1_06_b.rom optional in repo
MT-32 Control v1.06, odd bytes

ctrl_mt32_1_07_a.rom optional in repo
MT-32 Control v1.07, even bytes

ctrl_mt32_1_07_b.rom optional in repo
MT-32 Control v1.07, odd bytes

ctrl_mt32_bluer_a.rom optional in repo
MT-32 Control BlueRidge, even bytes

ctrl_mt32_bluer_b.rom optional in repo
MT-32 Control BlueRidge, odd bytes

pcm_mt32.rom optional in repo
MT-32 PCM ROM

  • Path: mt32-roms/pcm_mt32.rom
  • Size: 512.0 KB
  • SHA1: f6b1eebc4b2d...
  • Validation: sha1, size
  • Source: src/midi/mt32.cpp:138, src/midi/mt32.cpp:151, munt ROMInfo.cpp:83, munt ROMInfo.cpp:113, munt ROMInfo.cpp:115
  • also serves as the first half of the CM-32L PCM ROM, paired with pcm_cm32l_h.rom

pcm_mt32_l.rom optional in repo
MT-32 PCM ROM, first half

  • Path: mt32-roms/pcm_mt32_l.rom
  • Size: 256.0 KB
  • SHA1: 3a1e19b0cd40...
  • Validation: sha1, size
  • Source: src/midi/mt32.cpp:139, munt ROMInfo.cpp:81, munt ROMInfo.cpp:111

pcm_mt32_h.rom optional in repo
MT-32 PCM ROM, second half

  • Path: mt32-roms/pcm_mt32_h.rom
  • Size: 256.0 KB
  • SHA1: 2cadb99d21a6...
  • Validation: sha1, size
  • Source: src/midi/mt32.cpp:140, munt ROMInfo.cpp:82, munt ROMInfo.cpp:112

pcm_cm32l.rom optional in repo
CM-32L/CM-64/LAPC-I PCM ROM

pcm_cm32l_h.rom optional in repo
CM-32L/CM-64/LAPC-I PCM ROM, second half

  • Path: mt32-roms/pcm_cm32l_h.rom
  • Size: 512.0 KB
  • SHA1: 3ad889fde5db...
  • Validation: sha1, size
  • Source: src/midi/mt32.cpp:148, munt ROMInfo.cpp:84, munt ROMInfo.cpp:116

sc55_waverom1.bin optional in repo
SC-55 wave ROM A (R15209276)

  • Path: soundcanvas-roms/SC-55-v1.21/sc55_waverom1.bin
  • Size: max 2.0 MB
  • SHA256: 5655509a5318...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:340, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP pcm.h:83

sc55_waverom2.bin optional in repo
SC-55 wave ROM B (R15209277)

  • Path: soundcanvas-roms/SC-55-v1.21/sc55_waverom2.bin
  • Size: max 2.0 MB
  • SHA256: c655b159792d...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:342, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP pcm.h:84

sc55_waverom3.bin optional in repo
SC-55 wave ROM C (R15209281)

  • Path: soundcanvas-roms/SC-55-v1.21/sc55_waverom3.bin
  • Size: max 1.0 MB
  • SHA256: 334b2d16be3c...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:344, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP pcm.h:85

sc55_rom1.bin optional in repo
SC-55 v1.00 MCU ROM (R15199748)

  • Path: soundcanvas-roms/SC-55-v1.00/sc55_rom1.bin
  • Size: max 32.0 KB
  • SHA256: b4ecf44bc052...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:336, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP mcu.h:216

sc55_rom2.bin optional in repo
SC-55 v1.00 program ROM (R15449258)

  • Path: soundcanvas-roms/SC-55-v1.00/sc55_rom2.bin
  • Size: max 512.0 KB
  • SHA256: 014e2e21ea30...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:338, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217

sc55_rom1.bin optional in repo
SC-55 v1.10 MCU ROM (R15199736)

  • Path: soundcanvas-roms/SC-55-v1.10/sc55_rom1.bin
  • Size: max 32.0 KB
  • SHA256: 2fe88ec39f3e...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:351, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP mcu.h:216

sc55_rom2.bin optional in repo
SC-55 v1.10 program ROM (R15209275)

  • Path: soundcanvas-roms/SC-55-v1.10/sc55_rom2.bin
  • Size: max 512.0 KB
  • SHA256: ec064d6c4fc7...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:353, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217

sc55_rom1.bin optional in repo
SC-55 v1.20 and v1.21 MCU ROM (R15199778)

  • Path: soundcanvas-roms/SC-55-v1.20/sc55_rom1.bin
  • Size: max 32.0 KB
  • SHA256: 7e1bacd1d7c6...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:366, Nuked-SC55-CLAP 381, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP mcu.h:216
  • same dump in the SC-55-v1.20 and SC-55-v1.21 directories

sc55_rom2.bin optional in repo
SC-55 v1.20 program ROM (R15209337)

  • Path: soundcanvas-roms/SC-55-v1.20/sc55_rom2.bin
  • Size: max 512.0 KB
  • SHA256: 22ce6ca59e63...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:368, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217

sc55_rom2.bin optional in repo
SC-55 v1.21 program ROM (R15209363)

  • Path: soundcanvas-roms/SC-55-v1.21/sc55_rom2.bin
  • Size: max 512.0 KB
  • SHA256: effc6132d68f...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:383, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217

sc55_rom1.bin optional in repo
SC-55 v2.00 MCU ROM (R15199799)

  • Path: soundcanvas-roms/SC-55-v2.00/sc55_rom1.bin
  • Size: max 32.0 KB
  • SHA256: 24a65c97cdba...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:396, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP mcu.h:216

sc55_rom2.bin optional in repo
SC-55 v2.00 program ROM (R15209387)

  • Path: soundcanvas-roms/SC-55-v2.00/sc55_rom2.bin
  • Size: max 512.0 KB
  • SHA256: f5dac35d450a...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:398, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217

rom1.bin optional in repo
SC-55mk2 v1.01 MCU ROM (R15199858)

  • Path: soundcanvas-roms/SC-55mk2-v1.01/rom1.bin
  • Size: max 32.0 KB
  • SHA256: 8a1eb33c7599...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:295, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP mcu.h:216

rom2.bin optional in repo
SC-55mk2 v1.01 program ROM (R00233567)

  • Path: soundcanvas-roms/SC-55mk2-v1.01/rom2.bin
  • Size: max 512.0 KB
  • SHA256: a4c9fd821059...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:297, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217

rom_sm.bin optional in repo
SC-55mk2 v1.01 sub-MCU ROM (R15199880)

  • Path: soundcanvas-roms/SC-55mk2-v1.01/rom_sm.bin
  • Size: max 4.0 KB
  • SHA256: b0b5f865a403...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:299, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP submcu.h:62

waverom1.bin optional in repo
SC-55mk2 wave ROM 16M (R15209359)

  • Path: soundcanvas-roms/SC-55mk2-v1.01/waverom1.bin
  • Size: max 2.0 MB
  • SHA256: c6429e21b9b3...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:301, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP pcm.h:83

waverom2.bin optional in repo
SC-55mk2 wave ROM 8M (R15279813)

  • Path: soundcanvas-roms/SC-55mk2-v1.01/waverom2.bin
  • Size: max 2.0 MB
  • SHA256: 5b753f6cef4c...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:303, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP pcm.h:84

rom2.bin optional in repo
SC-55mk2 program ROM, strict SC-55 tones, SC-55 v1.21 drums

  • Path: soundcanvas-roms/SC-55mk2-v1.01/rom2.bin
  • Size: max 512.0 KB
  • SHA256: 64f8c9daf102...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:553

rom2.bin optional in repo
SC-55mk2 program ROM, strict SC-55 tones, SC-55 v2.00 drums

  • Path: soundcanvas-roms/SC-55mk2-v1.01/rom2.bin
  • Size: max 512.0 KB
  • SHA256: 14d14778caf4...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:555

rom2.bin optional in repo
SC-55mk2 program ROM, SC-55 tones, SC-55 v1.21 drums

  • Path: soundcanvas-roms/SC-55mk2-v1.01/rom2.bin
  • Size: max 512.0 KB
  • SHA256: 10b3f09485a7...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:557

rom2.bin optional in repo
SC-55mk2 program ROM, SC-55 tones, SC-55 v2.00 drums

  • Path: soundcanvas-roms/SC-55mk2-v1.01/rom2.bin
  • Size: max 512.0 KB
  • SHA256: a2c720be1ab9...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:559

rom2.bin optional in repo
SC-55mk2 program ROM, SC-55mkII tones, SC-55 v1.21 drums

  • Path: soundcanvas-roms/SC-55mk2-v1.01/rom2.bin
  • Size: max 512.0 KB
  • SHA256: 16cec615da10...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:561

rom2.bin optional in repo
SC-55mk2 program ROM, SC-55mkII tones, SC-55 v2.00 drums

  • Path: soundcanvas-roms/SC-55mk2-v1.01/rom2.bin
  • Size: max 512.0 KB
  • SHA256: c22bf7d34a34...
  • Validation: sha256, size
  • Source: Nuked-SC55-CLAP rom_io.cpp:563

default.sf2 optional in repo
General MIDI SoundFont

system.rom optional missing
IBM PCjr system ROM

  • Size: min 56.0 KB
  • Validation: size
  • Source: src/dos/programs/boot.cpp:379-397, src/dos/programs/boot.cpp:83-124
  • read during PCjr cartridge boot from the current DOS drive, then from the host working directory; bytes 0x3000 to 0xDFFF are copied to physical F3000. A short read leaves the region untouched and the cartridge still boots

IBM PC Cassette BASIC ROM optional missing
IBM BASIC ROM image mapped at F600:0

Video BIOS ROM optional missing
Option ROM image mapped at C000:0 and initialised

Generated on 2026-08-23T16:12:06Z