summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/sound/qsound.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/sound/qsound.cpp')
-rw-r--r--src/devices/sound/qsound.cpp50
1 files changed, 19 insertions, 31 deletions
diff --git a/src/devices/sound/qsound.cpp b/src/devices/sound/qsound.cpp
index 39fad698a72..d0c3852becf 100644
--- a/src/devices/sound/qsound.cpp
+++ b/src/devices/sound/qsound.cpp
@@ -2,8 +2,8 @@
// copyright-holders:Paul Leaman, Miguel Angel Horna
/***************************************************************************
- Capcom System QSound(tm)
- ========================
+ Capcom System QSoundâ„¢
+ =====================
Driver by Paul Leaman and Miguel Angel Horna
@@ -40,28 +40,13 @@ DEFINE_DEVICE_TYPE(QSOUND, qsound_device, "qsound", "Q-Sound")
// chip decapped by siliconpr0n clearly shows 3x as much ROM as that, a total
// of 12288 words of internal ROM.
// The older DSP16 non-a part has 2048 words of ROM.
-void qsound_device::dsp16_program_map(address_map &map)
-{
- map(0x0000, 0x2fff).rom();
-}
-
-// data map for the DSP16A; again, Western Electric/AT&T expanded the size of
-// the ram over time.
-// As originally released, the DSP16A had 1024 words of internal RAM,
-// but this was expanded to 2048 words in the DL-1425 decap.
-// The older DSP16 non-a part has 512 words of RAM.
-void qsound_device::dsp16_data_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x0000, 0x07ff).ram();
-}
-
-// ROM definition for the Qsound program ROM
+// DSP internal ROM region
ROM_START( qsound )
- ROM_REGION( 0x6000, "qsound", 0 )
- ROM_LOAD16_WORD( "dl-1425.bin", 0x0000, 0x6000, CRC(d6cf5ef5) SHA1(555f50fe5cdf127619da7d854c03f4a244a0c501) )
+ ROM_REGION( 0x2000, "dsp", 0 )
+ ROM_LOAD16_WORD_SWAP( "dl-1425.bin", 0x0000, 0x2000, CRC(d6cf5ef5) SHA1(555f50fe5cdf127619da7d854c03f4a244a0c501) )
+ ROM_IGNORE( 0x4000 )
ROM_END
@@ -74,12 +59,12 @@ ROM_END
//-------------------------------------------------
qsound_device::qsound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, QSOUND, tag, owner, clock),
- device_sound_interface(mconfig, *this),
- device_rom_interface(mconfig, *this, 24),
- m_cpu(*this, "qsound"),
- m_data(0),
- m_stream(nullptr)
+ : device_t(mconfig, QSOUND, tag, owner, clock)
+ , device_sound_interface(mconfig, *this)
+ , device_rom_interface(mconfig, *this, 24)
+ , m_dsp(*this, "dsp")
+ , m_stream(nullptr)
+ , m_data(0)
{
}
@@ -100,9 +85,8 @@ const tiny_rom_entry *qsound_device::device_rom_region() const
//-------------------------------------------------
MACHINE_CONFIG_START(qsound_device::device_add_mconfig)
- MCFG_CPU_ADD("qsound", DSP16, DERIVED_CLOCK(1, 1))
- MCFG_CPU_PROGRAM_MAP(dsp16_program_map)
- MCFG_CPU_DATA_MAP(dsp16_data_map)
+ MCFG_CPU_ADD("dsp", DSP16A, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_DISABLE()
MACHINE_CONFIG_END
@@ -122,7 +106,7 @@ void qsound_device::rom_bank_updated()
void qsound_device::device_start()
{
- m_stream = stream_alloc(0, 2, clock() / 166); // /166 clock divider?
+ m_stream = stream_alloc(0, 2, clock() / 15 / 166); // /166 clock divider?
// create pan table
for (int i = 0; i < 33; i++)
@@ -152,6 +136,10 @@ void qsound_device::device_start()
}
}
+void qsound_device::device_reset()
+{
+}
+
//-------------------------------------------------
// sound_stream_update - handle a stream update