emulator: DOSBox Staging type: standalone core_classification: enhanced_fork source: "https://github.com/dosbox-staging/dosbox-staging" upstream: "https://github.com/dosbox-staging/dosbox-staging" source_commit: "639aba29163f5acff84774bf4397dcfe53a4986d" profiled_date: "2026-08-08" core_version: "0.84.0-alpha" display_name: "DOS (DOSBox Staging)" cores: - dosbox-staging - dosbox_staging systems: - dos - ibm-pc - ibm-pcjr - tandy-1000 mode: standalone 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: src/ints/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: src/midi/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: src/midi/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: src/midi/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: src/midi/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: src/midi/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: src/midi/soundcanvas.cpp:326-373, src/misc/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: src/midi/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: src/midi/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: src/misc/support.cpp:300-320, src/dos/dos_code_page.cpp:1828, src/dos/dos_keyboard_layout.cpp:70, src/misc/messages.cpp:1073, src/gui/render/shader_manager.cpp:236,404, src/ints/int10_modes.cpp:2302, src/audio/disk_noise.cpp:187, src/shell/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 files: # File names are documentation only: libmt32emu and the Sound Canvas plugin # scan their directory and identify every candidate by hash, so any name # works. The names used here are the ROM identifiers of libmt32emu and the # file names of the published Sound Canvas ROM pack. # -- MT-32 control ROMs, full images (65536 bytes) -- # Loaded through addROMFile. Interleaved chip dumps are listed below and # merged in memory when the full image is absent. - name: "ctrl_mt32_1_04.rom" path: "mt32-roms/ctrl_mt32_1_04.rom" description: "MT-32 Control v1.04" required: false size: 65536 sha1: "5a5cb5a77d7d55ee69657c2f870416daed52dea7" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:110, src/midi/mt32.cpp:154-160, munt ROMInfo.cpp:59, munt ROMInfo.cpp:89" - name: "ctrl_mt32_1_05.rom" path: "mt32-roms/ctrl_mt32_1_05.rom" description: "MT-32 Control v1.05" required: false size: 65536 sha1: "e17a3a6d265bf1fa150312061134293d2b58288c" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:114, src/midi/mt32.cpp:162-168, munt ROMInfo.cpp:62, munt ROMInfo.cpp:92" - name: "ctrl_mt32_1_06.rom" path: "mt32-roms/ctrl_mt32_1_06.rom" description: "MT-32 Control v1.06" required: false size: 65536 sha1: "a553481f4e2794c10cfe597fef154eef0d8257de" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:118, src/midi/mt32.cpp:170-176, munt ROMInfo.cpp:65, munt ROMInfo.cpp:95" - name: "ctrl_mt32_1_07.rom" path: "mt32-roms/ctrl_mt32_1_07.rom" description: "MT-32 Control v1.07" required: false size: 65536 sha1: "b083518fffb7f66b03c23b7eb4f868e62dc5a987" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:122, src/midi/mt32.cpp:178-184, munt ROMInfo.cpp:68, munt ROMInfo.cpp:98" - name: "ctrl_mt32_bluer.rom" path: "mt32-roms/ctrl_mt32_bluer.rom" description: "MT-32 Control BlueRidge" required: false size: 65536 sha1: "7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:126, src/midi/mt32.cpp:186-192, munt ROMInfo.cpp:71, munt ROMInfo.cpp:101" # -- MT-32 v2.x control ROMs, full images (131072 bytes) -- # MAME dumps mt32_2.0.3.ic28, mt32_2.0.4.ic28 and mt32_2.0.7.ic28. - name: "ctrl_mt32_2_03.rom" path: "mt32-roms/ctrl_mt32_2_03.rom" description: "MT-32 Control v2.03" required: false size: 131072 sha1: "5837064c9df4741a55f7c4d8787ac158dff2d3ce" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:130, src/midi/mt32.cpp:194-200, munt ROMInfo.cpp:73, munt ROMInfo.cpp:103" - name: "ctrl_mt32_2_04.rom" path: "mt32-roms/ctrl_mt32_2_04.rom" description: "MT-32 Control v2.04" required: false size: 131072 sha1: "2c16432b6c73dd2a3947cba950a0f4c19d6180eb" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:132, src/midi/mt32.cpp:202-208, munt ROMInfo.cpp:74, munt ROMInfo.cpp:104" - name: "ctrl_mt32_2_06.rom" path: "mt32-roms/ctrl_mt32_2_06.rom" description: "MT-32 Control v2.06" required: false size: 131072 sha1: "2869cf4c235d671668cfcb62415e2ce8323ad4ed" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:134, src/midi/mt32.cpp:210-216, munt ROMInfo.cpp:75, munt ROMInfo.cpp:105" - name: "ctrl_mt32_2_07.rom" path: "mt32-roms/ctrl_mt32_2_07.rom" description: "MT-32 Control v2.07" required: false size: 131072 sha1: "47b52adefedaec475c925e54340e37673c11707c" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:136, src/midi/mt32.cpp:218-224, munt ROMInfo.cpp:76, munt ROMInfo.cpp:106" # -- CM-32L family control ROMs, full images (65536 bytes) -- # MAME dumps lapc-i.v1.0.0.ic3.bin and cm32l_control.rom. - name: "ctrl_cm32l_1_00.rom" path: "mt32-roms/ctrl_cm32l_1_00.rom" description: "CM-32L/LAPC-I Control v1.00" required: false size: 65536 sha1: "73683d585cd6948cc19547942ca0e14a0319456d" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:143, src/midi/mt32.cpp:226-232, munt ROMInfo.cpp:77, munt ROMInfo.cpp:107" - name: "ctrl_cm32l_1_02.rom" path: "mt32-roms/ctrl_cm32l_1_02.rom" description: "CM-32L/LAPC-I Control v1.02" required: false size: 65536 sha1: "a439fbb390da38cada95a7cbb1d6ca199cd66ef8" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:144, src/midi/mt32.cpp:234-240, munt ROMInfo.cpp:78, munt ROMInfo.cpp:108" - name: "ctrl_cm32ln_1_00.rom" path: "mt32-roms/ctrl_cm32ln_1_00.rom" description: "CM-32LN/CM-500/LAPC-N Control v1.00" required: false size: 65536 sha1: "dc1c5b1b90a4646d00f7daf3679733c7badc7077" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:145, src/midi/mt32.cpp:242-248, munt ROMInfo.cpp:79, munt ROMInfo.cpp:109" # -- MT-32 control ROM chip dumps (32768 bytes each) -- # The _a dump holds the even bytes, the _b dump the odd ones; munt # interleaves the pair into the full 65536 byte image. # MAME dumps mt32_1.0.X.ic27.bin (_a) and mt32_1.0.X.ic26.bin (_b), # blue_ridge__mt32a.bin (_a) and blue_ridge__mt32b.bin (_b). - name: "ctrl_mt32_1_04_a.rom" path: "mt32-roms/ctrl_mt32_1_04_a.rom" description: "MT-32 Control v1.04, even bytes" required: false size: 32768 sha1: "9cd4858014c4e8a9dff96053f784bfaac1092a2e" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:111, src/midi/mt32.cpp:154-160, munt ROMInfo.cpp:57, munt ROMInfo.cpp:87" - name: "ctrl_mt32_1_04_b.rom" path: "mt32-roms/ctrl_mt32_1_04_b.rom" description: "MT-32 Control v1.04, odd bytes" required: false size: 32768 sha1: "fe8db469b5bfeb37edb269fd47e3ce6d91014652" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:112, src/midi/mt32.cpp:154-160, munt ROMInfo.cpp:58, munt ROMInfo.cpp:88" - name: "ctrl_mt32_1_05_a.rom" path: "mt32-roms/ctrl_mt32_1_05_a.rom" description: "MT-32 Control v1.05, even bytes" required: false size: 32768 sha1: "57a09d80d2f7ca5b9734edbe9645e6e700f83701" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:115, src/midi/mt32.cpp:162-168, munt ROMInfo.cpp:60, munt ROMInfo.cpp:90" - name: "ctrl_mt32_1_05_b.rom" path: "mt32-roms/ctrl_mt32_1_05_b.rom" description: "MT-32 Control v1.05, odd bytes" required: false size: 32768 sha1: "52e3c6666db9ef962591a8ee99be0cde17f3a6b6" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:116, src/midi/mt32.cpp:162-168, munt ROMInfo.cpp:61, munt ROMInfo.cpp:91" - name: "ctrl_mt32_1_06_a.rom" path: "mt32-roms/ctrl_mt32_1_06_a.rom" description: "MT-32 Control v1.06, even bytes" required: false size: 32768 sha1: "cc83bf23cee533097fb4c7e2c116e43b50ebacc8" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:119, src/midi/mt32.cpp:170-176, munt ROMInfo.cpp:63, munt ROMInfo.cpp:93" - name: "ctrl_mt32_1_06_b.rom" path: "mt32-roms/ctrl_mt32_1_06_b.rom" description: "MT-32 Control v1.06, odd bytes" required: false size: 32768 sha1: "bf4f15666bc46679579498386704893b630c1171" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:120, src/midi/mt32.cpp:170-176, munt ROMInfo.cpp:64, munt ROMInfo.cpp:94" - name: "ctrl_mt32_1_07_a.rom" path: "mt32-roms/ctrl_mt32_1_07_a.rom" description: "MT-32 Control v1.07, even bytes" required: false size: 32768 sha1: "13f06b38f0d9e0fc050b6503ab777bb938603260" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:123, src/midi/mt32.cpp:178-184, munt ROMInfo.cpp:66, munt ROMInfo.cpp:96" - name: "ctrl_mt32_1_07_b.rom" path: "mt32-roms/ctrl_mt32_1_07_b.rom" description: "MT-32 Control v1.07, odd bytes" required: false size: 32768 sha1: "c55e165487d71fa88bd8c5e9c083bc456c1a89aa" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:124, src/midi/mt32.cpp:178-184, munt ROMInfo.cpp:67, munt ROMInfo.cpp:97" - name: "ctrl_mt32_bluer_a.rom" path: "mt32-roms/ctrl_mt32_bluer_a.rom" description: "MT-32 Control BlueRidge, even bytes" required: false size: 32768 sha1: "11a6ae5d8b6ee328b371af7f1e40b82125aa6b4d" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:127, src/midi/mt32.cpp:186-192, munt ROMInfo.cpp:69, munt ROMInfo.cpp:99" - name: "ctrl_mt32_bluer_b.rom" path: "mt32-roms/ctrl_mt32_bluer_b.rom" description: "MT-32 Control BlueRidge, odd bytes" required: false size: 32768 sha1: "e0934320d7cbb5edfaa29e0d01ae835ef620085b" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:128, src/midi/mt32.cpp:186-192, munt ROMInfo.cpp:70, munt ROMInfo.cpp:100" # -- PCM ROMs -- # Every MT-32 model, v1.x and v2.x, pairs with the MT-32 PCM ROM. The CM-32L # models pair with the 1 MB image, whose first half is the MT-32 PCM ROM. # MAME dumps r15449121.ic37.bin (ic9 on CM-32L boards), r15179844.ic21.bin, # r15179845.ic22.bin and r15179945.ic8.bin. - name: "pcm_mt32.rom" path: "mt32-roms/pcm_mt32.rom" description: "MT-32 PCM ROM" required: false size: 524288 sha1: "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252" validation: [sha1, size] note: > also serves as the first half of the CM-32L PCM ROM, paired with pcm_cm32l_h.rom source_ref: "src/midi/mt32.cpp:138, src/midi/mt32.cpp:151, munt ROMInfo.cpp:83, munt ROMInfo.cpp:113, munt ROMInfo.cpp:115" - name: "pcm_mt32_l.rom" path: "mt32-roms/pcm_mt32_l.rom" description: "MT-32 PCM ROM, first half" required: false size: 262144 sha1: "3a1e19b0cd4036623fd1d1d11f5f25995585962b" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:139, munt ROMInfo.cpp:81, munt ROMInfo.cpp:111" - name: "pcm_mt32_h.rom" path: "mt32-roms/pcm_mt32_h.rom" description: "MT-32 PCM ROM, second half" required: false size: 262144 sha1: "2cadb99d21a6a4a6f5b61b6218d16e9b43f61d01" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:140, munt ROMInfo.cpp:82, munt ROMInfo.cpp:112" - name: "pcm_cm32l.rom" path: "mt32-roms/pcm_cm32l.rom" description: "CM-32L/CM-64/LAPC-I PCM ROM" required: false size: 1048576 sha1: "289cc298ad532b702461bfc738009d9ebe8025ea" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:147, src/midi/mt32.cpp:226-248, munt ROMInfo.cpp:85, munt ROMInfo.cpp:117" - name: "pcm_cm32l_h.rom" path: "mt32-roms/pcm_cm32l_h.rom" description: "CM-32L/CM-64/LAPC-I PCM ROM, second half" required: false size: 524288 sha1: "3ad889fde5db5b6437cbc2eb6e305312fec3df93" validation: [sha1, size] source_ref: "src/midi/mt32.cpp:148, munt ROMInfo.cpp:84, munt ROMInfo.cpp:116" # -- Roland SC-55 wave ROMs -- # Shared by every SC-55 firmware version. The plugin scans one model # directory at a time, so each SC-55-v* directory in use needs its own copy. - name: "sc55_waverom1.bin" path: "soundcanvas-roms/SC-55-v1.21/sc55_waverom1.bin" description: "SC-55 wave ROM A (R15209276)" required: false max_size: 2097152 sha256: "5655509a531804f97ea2d7ef05b8fec20ebf46216b389a84c44169257a4d2007" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:340, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP pcm.h:83" - name: "sc55_waverom2.bin" path: "soundcanvas-roms/SC-55-v1.21/sc55_waverom2.bin" description: "SC-55 wave ROM B (R15209277)" required: false max_size: 2097152 sha256: "c655b159792d999b90df9e4fa782cf56411ba1eaa0bb3ac2bdaf09e1391006b1" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:342, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP pcm.h:84" - name: "sc55_waverom3.bin" path: "soundcanvas-roms/SC-55-v1.21/sc55_waverom3.bin" description: "SC-55 wave ROM C (R15209281)" required: false max_size: 1048576 sha256: "334b2d16be3c2362210fdbec1c866ad58badeb0f84fd9bf5d0ac599baf077cc2" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:344, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP pcm.h:85" # -- Roland SC-55 MCU ROMs, one pair per firmware version -- - name: "sc55_rom1.bin" path: "soundcanvas-roms/SC-55-v1.00/sc55_rom1.bin" description: "SC-55 v1.00 MCU ROM (R15199748)" required: false max_size: 32768 sha256: "b4ecf44bc0520322b0d114d397951d3bf92ca6fa51d0d27b2407df58a6be2efe" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:336, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP mcu.h:216" - name: "sc55_rom2.bin" path: "soundcanvas-roms/SC-55-v1.00/sc55_rom2.bin" description: "SC-55 v1.00 program ROM (R15449258)" required: false max_size: 524288 sha256: "014e2e21ea30de7a1e4f1cdea14dd9a719960535e257a9e40e98dbb1a5870226" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:338, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217" - name: "sc55_rom1.bin" path: "soundcanvas-roms/SC-55-v1.10/sc55_rom1.bin" description: "SC-55 v1.10 MCU ROM (R15199736)" required: false max_size: 32768 sha256: "2fe88ec39f3ef4b1de8cdf74527419467975c47f7aacfcd07605e01d54bd89b5" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:351, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP mcu.h:216" - name: "sc55_rom2.bin" path: "soundcanvas-roms/SC-55-v1.10/sc55_rom2.bin" description: "SC-55 v1.10 program ROM (R15209275)" required: false max_size: 524288 sha256: "ec064d6c4fc70ec990911089d966043cb819fba0e26e6f6afdd0a05e5301b91b" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:353, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217" - name: "sc55_rom1.bin" path: "soundcanvas-roms/SC-55-v1.20/sc55_rom1.bin" description: "SC-55 v1.20 and v1.21 MCU ROM (R15199778)" required: false max_size: 32768 sha256: "7e1bacd1d7c62ed66e465ba05597dcd60dfc13fc23de0287fdbce6cf906c6544" validation: [sha256, size] note: "same dump in the SC-55-v1.20 and SC-55-v1.21 directories" source_ref: "Nuked-SC55-CLAP rom_io.cpp:366, Nuked-SC55-CLAP 381, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP mcu.h:216" - name: "sc55_rom2.bin" path: "soundcanvas-roms/SC-55-v1.20/sc55_rom2.bin" description: "SC-55 v1.20 program ROM (R15209337)" required: false max_size: 524288 sha256: "22ce6ca59e6332143b335525e81fab501ea6fccce4b7e2f3bfc2cc8bf6612ff6" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:368, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217" - name: "sc55_rom2.bin" path: "soundcanvas-roms/SC-55-v1.21/sc55_rom2.bin" description: "SC-55 v1.21 program ROM (R15209363)" required: false max_size: 524288 sha256: "effc6132d68f7e300aaef915ccdd08aba93606c22d23e580daf9ea6617913af1" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:383, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217" - name: "sc55_rom1.bin" path: "soundcanvas-roms/SC-55-v2.00/sc55_rom1.bin" description: "SC-55 v2.00 MCU ROM (R15199799)" required: false max_size: 32768 sha256: "24a65c97cdbaa847d6f59193523ce63c73394b4b693a6517ee79441f2fb8a3ee" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:396, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP mcu.h:216" - name: "sc55_rom2.bin" path: "soundcanvas-roms/SC-55-v2.00/sc55_rom2.bin" description: "SC-55 v2.00 program ROM (R15209387)" required: false max_size: 524288 sha256: "f5dac35d450ab986570a209dff3816eec75cee669e161f54b51224b467dd0bcc" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:398, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217" # -- Roland SC-55mk2 v1.01 -- - name: "rom1.bin" path: "soundcanvas-roms/SC-55mk2-v1.01/rom1.bin" description: "SC-55mk2 v1.01 MCU ROM (R15199858)" required: false max_size: 32768 sha256: "8a1eb33c7599b746c0c50283e4349a1bb1773b5c0ec0e9661219bf6c067d2042" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:295, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP mcu.h:216" - name: "rom2.bin" path: "soundcanvas-roms/SC-55mk2-v1.01/rom2.bin" description: "SC-55mk2 v1.01 program ROM (R00233567)" required: false max_size: 524288 sha256: "a4c9fd821059054c7e7681d61f49ce6f42ed2fe407a7ec1ba0dfdc9722582ce0" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:297, Nuked-SC55-CLAP emu.cpp:247-254, Nuked-SC55-CLAP mcu.h:217" - name: "rom_sm.bin" path: "soundcanvas-roms/SC-55mk2-v1.01/rom_sm.bin" description: "SC-55mk2 v1.01 sub-MCU ROM (R15199880)" required: false max_size: 4096 sha256: "b0b5f865a403f7308b4be8d0ed3ba2ed1c22db881b8a8326769dea222f6431d8" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:299, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP submcu.h:62" - name: "waverom1.bin" path: "soundcanvas-roms/SC-55mk2-v1.01/waverom1.bin" description: "SC-55mk2 wave ROM 16M (R15209359)" required: false max_size: 2097152 sha256: "c6429e21b9b3a02fbd68ef0b2053668433bee0bccd537a71841bc70b8874243b" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:301, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP pcm.h:83" - name: "waverom2.bin" path: "soundcanvas-roms/SC-55mk2-v1.01/waverom2.bin" description: "SC-55mk2 wave ROM 8M (R15279813)" required: false max_size: 2097152 sha256: "5b753f6cef4cfc7fcafe1430fecbb94a739b874e55356246a46abe24097ee491" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:303, Nuked-SC55-CLAP emu.cpp:238, Nuked-SC55-CLAP pcm.h:84" # -- SC-55mk2 program ROMs with Capital Tone Fallback restored -- # Accepted in place of the stock SC-55mk2 program ROM. - name: "rom2.bin" path: "soundcanvas-roms/SC-55mk2-v1.01/rom2.bin" description: "SC-55mk2 program ROM, strict SC-55 tones, SC-55 v1.21 drums" required: false max_size: 524288 sha256: "64f8c9daf1021cf86ea4ddf03a29b81b5ea0c18e74f462833023436388bb9dc4" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:553" - name: "rom2.bin" path: "soundcanvas-roms/SC-55mk2-v1.01/rom2.bin" description: "SC-55mk2 program ROM, strict SC-55 tones, SC-55 v2.00 drums" required: false max_size: 524288 sha256: "14d14778caf46ffa9e3d608aa8e9c1a60c32bd4a536c26af3b2e1d81784c60f9" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:555" - name: "rom2.bin" path: "soundcanvas-roms/SC-55mk2-v1.01/rom2.bin" description: "SC-55mk2 program ROM, SC-55 tones, SC-55 v1.21 drums" required: false max_size: 524288 sha256: "10b3f09485a74bb014f1a940d5c67f380c7979b62891d540d788154c83f17430" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:557" - name: "rom2.bin" path: "soundcanvas-roms/SC-55mk2-v1.01/rom2.bin" description: "SC-55mk2 program ROM, SC-55 tones, SC-55 v2.00 drums" required: false max_size: 524288 sha256: "a2c720be1ab9115930d27f821a413c0366b7bf0c4ddfe0dadc5086136a1a4345" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:559" - name: "rom2.bin" path: "soundcanvas-roms/SC-55mk2-v1.01/rom2.bin" description: "SC-55mk2 program ROM, SC-55mkII tones, SC-55 v1.21 drums" required: false max_size: 524288 sha256: "16cec615da10089beffe6de5129ba8ba33fa1bf017a5e6b78ad1d6d15cf4708e" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:561" - name: "rom2.bin" path: "soundcanvas-roms/SC-55mk2-v1.01/rom2.bin" description: "SC-55mk2 program ROM, SC-55mkII tones, SC-55 v2.00 drums" required: false max_size: 524288 sha256: "c22bf7d34a3406530924d750b007bbdb470f3216c65086edb6e53023383ee907" validation: [sha256, size] source_ref: "Nuked-SC55-CLAP rom_io.cpp:563" # -- FluidSynth SoundFont -- - name: "default.sf2" path: "soundfonts/default.sf2" description: "General MIDI SoundFont" required: false aliases: - "GeneralUser-GS.sf2" - "FluidR3_GM.sf2" - "Fluid_R3_GM_GS.sf2" - "4gmgsmt-sf2_04-compat.sf2" - "4GMGSMT.SF2" - "synthgs-sf2_04-compat.sf2" note: > any SoundFont loads; GeneralUser GS, Fluid R3, the AWE32 4MB GM/GS/MT bank and the Trevor0402 SC-55 SoundFont are recognised by filename or RIFF INFO name and get their own reverb, chorus and filter presets source_ref: "src/midi/fluidsynth.cpp:672-689, src/midi/fluidsynth.cpp:816-883, src/midi/fluidsynth.cpp:1229-1242" # -- PCjr system ROM -- - 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 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 source_ref: "src/dos/programs/boot.cpp:379-397, src/dos/programs/boot.cpp:83-124" # -- LOADROM images -- # Read from the mounted DOS drive under the name given on the command line # and identified by their contents. - name: "IBM PC Cassette BASIC ROM" description: "IBM BASIC ROM image mapped at F600:0" required: false aliases: ["ibm-basic-1.10.rom", "IBMROMBASIC-F6000h-1982-10-27.ROM"] sha1: "07449ebca18f979b9ab748582b736e402f2bf940" size: 32768 validation: [size] note: > accepted when the file is exactly 32768 bytes, starts with E9 8F 7E and carries the string IBM at offset 0x4CD4 source_ref: "src/dos/programs/loadrom.cpp:56-80, src/dos/programs/loadrom.cpp:95" - 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: > accepted when the file is 16384 bytes or larger, starts with 55 AA, has byte 3 masked to E8 and carries the string IBM at offset 0x1E; needs an EGA or better machine type source_ref: "src/dos/programs/loadrom.cpp:56-75, src/dos/programs/loadrom.cpp:88-93"