From 0b43402a0ce77a7dbeedfe60346fc1a550f5d277 Mon Sep 17 00:00:00 2001 From: Christian Brunschen <6741909+cbrunschen@users.noreply.github.com> Date: Thu, 27 Nov 2025 07:54:11 +0000 Subject: [PATCH] sd1 (21 voice) BIOS 4.xx now correctly detects speed. This allows the 4.xx BIOS to correctly configure the emulated sd1 for 21 voices and thus play at the correct pitch. Thus the SD-1 Sequencer OS 4.xx floppies now also apply to the SD-1. So this also consolidates the `sd1_flop` and `sd132_flop` software lists into a single `sd1_flop` list - but still keeps the `vfxsd_flop` list separate because that is still sufficiently different. The consolidated `sd1_flop` software list uses `` to allow the different sd1 versions to show only those floppies that apply, respectively: The sd132 does not show the Sequencer OS 3.00 floppy; the sd1 does not show the demo disks. Arguably this is not quite right because all the demos would at least technically work even on the 21-voice SD-1, in particular those for other keyboards (SQ and KS series) which only use the SD-1's sequencer; but any SD-1/32 demos would run out of voices and thus sound worse than they should if played on an SD-1 (21-voice), so it seems a safer bet to make those only available on the SD-1/32. --- hash/sd132_flop.xml | 80 --------------------- hash/sd1_flop.xml | 131 ++++++++++++++++++++++++++++++++++- src/mame/ensoniq/esq5505.cpp | 16 +++-- 3 files changed, 140 insertions(+), 87 deletions(-) delete mode 100644 hash/sd132_flop.xml diff --git a/hash/sd132_flop.xml b/hash/sd132_flop.xml deleted file mode 100644 index 72bff3bff66c9..0000000000000 --- a/hash/sd132_flop.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - SD-1 Sequencer OS version 4.00 - 1991 - Ensoniq - - - - - - - - - - SD-1 Sequencer OS version 4.10 - 1992 - Ensoniq - - - - - - - - - - SD-1 32 Voice Demo Disk #1 - 1992 - Ensoniq - - - - - - - - - - Multi-Product Demo Disk #1 - 1992 - Ensoniq - - - - - - - - - - Multi-Product Demo Disk #2 - 1993 - Ensoniq - - - - - - - - - - SQ 32 Voice Demo Disk #2 - 1993 - Ensoniq - - - - - - - - - diff --git a/hash/sd1_flop.xml b/hash/sd1_flop.xml index afd02e11e6db9..a40f090af2ca1 100644 --- a/hash/sd1_flop.xml +++ b/hash/sd1_flop.xml @@ -5,10 +5,55 @@ license:CC0-1.0 --> - - SD-1 Sequencer OS version 3.0 + + SD-1 Sequencer OS version 4.10 + 1992 + Ensoniq + + + + + + + + + + + + SD-1 Sequencer OS version 4.00 + 1991 + Ensoniq + + + + + + + + + + + + SD-1 Sequencer OS version 3.00 1990 Ensoniq + @@ -17,4 +62,86 @@ license:CC0-1.0 + + SD-1 32 Voice Demo Disk #1 + 1992 + Ensoniq + + + + + + + + + + + + Multi-Product Demo Disk #1 + 1992 + Ensoniq + + + + + + + + + + + + Multi-Product Demo Disk #2 + 1993 + Ensoniq + + + + + + + + + + + + SQ 32 Voice Demo Disk #1 + 1993 + Ensoniq + + + + + + + + + + diff --git a/src/mame/ensoniq/esq5505.cpp b/src/mame/ensoniq/esq5505.cpp index 93178cfdb9b7e..3803b2c108177 100644 --- a/src/mame/ensoniq/esq5505.cpp +++ b/src/mame/ensoniq/esq5505.cpp @@ -864,7 +864,7 @@ void esq5505_state::sd1(machine_config &config, int panel_type) vfxsd(config, panel_type); // software list - SOFTWARE_LIST(config, "sd1_flop").set_original("sd1_flop"); + SOFTWARE_LIST(config, "sd1_flop").set_original("sd1_flop").set_filter("sd1"); } // Like the sd1, but with some clock speeds faster. @@ -881,7 +881,7 @@ void esq5505_state::sd132(machine_config &config, int panel_type) m_pump->set_clock(clock); // software list - SOFTWARE_LIST(config, "sd132_flop").set_original("sd132_flop"); + SOFTWARE_LIST(config.replace(), "sd1_flop").set_original("sd1_flop").set_filter("sd132"); } // 32-voice machines with the VFX-SD type config @@ -1095,8 +1095,15 @@ ROM_END ROM_START( sd1 ) ROM_REGION16_BE(0x40000, "osrom", 0) - ROM_LOAD16_BYTE( "sd1_21_300b_lower.bin", 0x000001, 0x020000, CRC(a1358a0c) SHA1(64ac5358aa46da37ca4195002cf358554e00878a) ) - ROM_LOAD16_BYTE( "sd1_21_300b_upper.bin", 0x000000, 0x010000, CRC(465ba463) SHA1(899b0e83d0788c8d49c7b09ccf0b4a92b528c6e9) ) + ROM_SYSTEM_BIOS(0, "410", "SD-1 v4.10") + ROM_LOAD16_BYTE_BIOS(0, "sd1_410_lo.bin", 0x000001, 0x020000, CRC(faa613a6) SHA1(60066765cddfa9d3b5d09057d8f83fb120f4e65e) ) + ROM_LOAD16_BYTE_BIOS(0, "sd1_410_hi.bin", 0x000000, 0x010000, CRC(618c0aa8) SHA1(74acf458aa1d04a0a7a0cd5855c49e6855dbd301) ) + ROM_SYSTEM_BIOS(1, "402", "SD-1 v4.02") + ROM_LOAD16_BYTE_BIOS(1, "sd1_32_402_lo.bin", 0x000001, 0x020000, CRC(5da2572b) SHA1(cb6ddd637ed13bfeb40a99df56000479e63fc8ec) ) + ROM_LOAD16_BYTE_BIOS(1, "sd1_32_402_hi.bin", 0x000000, 0x010000, CRC(fc45c210) SHA1(23b81ebd9176112e6eae0c7c75b39fcb1656c953) ) + ROM_SYSTEM_BIOS(2, "300", "SD-1 v3.00") + ROM_LOAD16_BYTE_BIOS(2, "sd1_21_300b_lower.bin", 0x000001, 0x020000, CRC(a1358a0c) SHA1(64ac5358aa46da37ca4195002cf358554e00878a) ) + ROM_LOAD16_BYTE_BIOS(2, "sd1_21_300b_upper.bin", 0x000000, 0x010000, CRC(465ba463) SHA1(899b0e83d0788c8d49c7b09ccf0b4a92b528c6e9) ) ROM_REGION(0x200000, "waverom", ROMREGION_ERASE00) // BS=0 region (12-bit) ROM_LOAD16_BYTE( "u34.bin", 0x000001, 0x080000, CRC(85592299) SHA1(1aa7cf612f91972baeba15991d9686ccde01599c) ) @@ -1110,7 +1117,6 @@ ROM_START( sd1 ) ROM_LOAD( "u36.bin", 0x000000, 0x080000, CRC(c3ddaf95) SHA1(44a7bd89cd7e82952cc5100479e110c385246559) ) ROM_END -// note: all known 4.xx BIOSes are for the 32-voice SD-1 and play out of tune on 21-voice h/w ROM_START( sd132 ) ROM_REGION16_BE(0x40000, "osrom", 0) ROM_SYSTEM_BIOS(0, "410", "SD-1 v4.10")