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")