summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/cubeqst.cpp
diff options
context:
space:
mode:
author smf- <smf-@users.noreply.github.com>2016-10-17 16:03:29 +0100
committer smf- <smf-@users.noreply.github.com>2016-10-17 16:04:02 +0100
commit36944269bd6fe1fb47822a2112c524b13c4b27f2 (patch)
treec1b29a760bb9a1e222a9390fbc34fe09d407ae91 /src/mame/drivers/cubeqst.cpp
parent8676fc0d8dd0c3ccf2925075d86338da099ce148 (diff)
DAC WIP, started documenting the DACs in use. [smf]
ataxx: Fixed missing sound channel caused by one dac not being hooked up and one dac being hooked up to two addresses. bestbest: Fixed high pitch screech caused by incorrect addressing (two dacs weren't hooked up and two were hooked up to two addresses). cchasm: Fixed static noise generation caused by feeding the same bit to both dacs. cheekyms: Slightly improved sound by implementing sound triggers as 8 x 1 bit dacs instead of 1 x 8 bit dac. galeb: Fixed sound by implementing it according to http://www.deltasoft.com.hr/retro/galebemu.htm & implemented enough of LOAD/SAVE to stop it hanging. hard drivin: (all games in driver) Improved 12 bit controls, although centre still goes out of sync. mea8000: Converted to a sound device. megaphx: Fixed noisy samples due to wrong format. microvsn: Fixed sound pitch caused by incorrect usage of write_signed8(). seicross: Changed to a 4 bit dac as samples are packed nibble. spaceg: Preliminary sound using space invaders samples. suna8: Changed to a 4 bit dac as samples are packed nibble. vcombat: Fixed static during machine gun fire due to incorrect dc offset removal. vectrex: Fixed noisy samples due to wrong format. wheelfir: Fixed sound, eeprom & analogue steering wheel and brake pedal.
Diffstat (limited to 'src/mame/drivers/cubeqst.cpp')
-rw-r--r--src/mame/drivers/cubeqst.cpp98
1 files changed, 51 insertions, 47 deletions
diff --git a/src/mame/drivers/cubeqst.cpp b/src/mame/drivers/cubeqst.cpp
index 6c084f3b897..4f72111642b 100644
--- a/src/mame/drivers/cubeqst.cpp
+++ b/src/mame/drivers/cubeqst.cpp
@@ -20,12 +20,12 @@
****************************************************************************/
#include "emu.h"
-#include "cpu/m68000/m68000.h"
#include "cpu/cubeqcpu/cubeqcpu.h"
-#include "sound/dac.h"
+#include "cpu/m68000/m68000.h"
#include "machine/ldpr8210.h"
#include "machine/nvram.h"
-
+#include "sound/dac.h"
+#include "sound/volt_reg.h"
class cubeqst_state : public driver_device
{
@@ -37,6 +37,16 @@ public:
m_linecpu(*this, "line_cpu"),
m_soundcpu(*this, "sound_cpu"),
m_screen(*this, "screen"),
+ m_dacs(*this, {
+ "rdac0", "ldac0",
+ "rdac1", "ldac1",
+ "rdac2", "ldac2",
+ "rdac3", "ldac3",
+ "rdac4", "ldac4",
+ "rdac5", "ldac5",
+ "rdac6", "ldac6",
+ "rdac7", "ldac7"
+ }),
m_generic_paletteram_16(*this, "paletteram") { }
std::unique_ptr<UINT8[]> m_depth_buffer;
@@ -48,6 +58,7 @@ public:
required_device<cquestlin_cpu_device> m_linecpu;
required_device<cquestsnd_cpu_device> m_soundcpu;
required_device<screen_device> m_screen;
+ required_device_array<dac_word_interface, 16> m_dacs;
required_shared_ptr<UINT16> m_generic_paletteram_16;
std::unique_ptr<rgb_t[]> m_colormap;
DECLARE_WRITE16_MEMBER(palette_w);
@@ -485,18 +496,10 @@ void cubeqst_state::machine_reset()
/* Called by the sound CPU emulation */
WRITE16_MEMBER( cubeqst_state::sound_dac_w )
{
- static const char *const dacs[] =
- {
- "rdac0", "ldac0",
- "rdac1", "ldac1",
- "rdac2", "ldac2",
- "rdac3", "ldac3",
- "rdac4", "ldac4",
- "rdac5", "ldac5",
- "rdac6", "ldac6",
- "rdac7", "ldac7"
- };
- machine().device<dac_device>(dacs[data & 15])->write_signed16((data & 0xfff0) ^ 0x8000);
+ /// d0 selects between 4051.1d (right, d0=1) and 4051.3d (left, d0=0)
+ /// d1-d3 select the channel
+ /// d4-d11 are sent to the 7521 dac, d11 is inverted
+ m_dacs[data & 15]->write((data >> 4) ^ 0x800);
}
@@ -542,38 +545,39 @@ static MACHINE_CONFIG_START( cubeqst, cubeqst_state )
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
- MCFG_DAC_ADD("rdac0")
- MCFG_SOUND_ROUTE(0, "rspeaker", 0.125)
- MCFG_DAC_ADD("ldac0")
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.125)
- MCFG_DAC_ADD("rdac1")
- MCFG_SOUND_ROUTE(0, "rspeaker", 0.125)
- MCFG_DAC_ADD("ldac1")
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.125)
- MCFG_DAC_ADD("rdac2")
- MCFG_SOUND_ROUTE(0, "rspeaker", 0.125)
- MCFG_DAC_ADD("ldac2")
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.125)
- MCFG_DAC_ADD("rdac3")
- MCFG_SOUND_ROUTE(0, "rspeaker", 0.125)
- MCFG_DAC_ADD("ldac3")
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.125)
- MCFG_DAC_ADD("rdac4")
- MCFG_SOUND_ROUTE(0, "rspeaker", 0.125)
- MCFG_DAC_ADD("ldac4")
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.125)
- MCFG_DAC_ADD("rdac5")
- MCFG_SOUND_ROUTE(0, "rspeaker", 0.125)
- MCFG_DAC_ADD("ldac5")
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.125)
- MCFG_DAC_ADD("rdac6")
- MCFG_SOUND_ROUTE(0, "rspeaker", 0.125)
- MCFG_DAC_ADD("ldac6")
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.125)
- MCFG_DAC_ADD("rdac7")
- MCFG_SOUND_ROUTE(0, "rspeaker", 0.125)
- MCFG_DAC_ADD("ldac7")
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.125)
+ MCFG_SOUND_ADD("rdac0", AD7521, 0) MCFG_SOUND_ROUTE(0, "rspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.1d (24) + 1500pf.c22 (34) + tl074cn.1b (53) + r10k.rn1 (30)
+ MCFG_SOUND_ADD("ldac0", AD7521, 0) MCFG_SOUND_ROUTE(0, "lspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.3d (24) + 1500pf.c13 (34) + tl074cn.3b (53) + r10k.rn3 (30)
+ MCFG_SOUND_ADD("rdac1", AD7521, 0) MCFG_SOUND_ROUTE(0, "rspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.1d (24) + 1500pf.c21 (34) + tl074cn.1c (53) + r10k.rn2 (30)
+ MCFG_SOUND_ADD("ldac1", AD7521, 0) MCFG_SOUND_ROUTE(0, "lspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.3d (24) + 1500pf.c12 (34) + tl074cn.3c (53) + r10k.rn4 (30)
+ MCFG_SOUND_ADD("rdac2", AD7521, 0) MCFG_SOUND_ROUTE(0, "rspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.1d (24) + 1500pf.c20 (34) + tl074cn.1c (53) + r10k.rn2 (30)
+ MCFG_SOUND_ADD("ldac2", AD7521, 0) MCFG_SOUND_ROUTE(0, "lspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.3d (24) + 1500pf.c11 (34) + tl074cn.3c (53) + r10k.rn4 (30)
+ MCFG_SOUND_ADD("rdac3", AD7521, 0) MCFG_SOUND_ROUTE(0, "rspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.1d (24) + 1500pf.c19 (34) + tl074cn.1b (53) + r10k.rn1 (30)
+ MCFG_SOUND_ADD("ldac3", AD7521, 0) MCFG_SOUND_ROUTE(0, "lspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.3d (24) + 1500pf.c10 (34) + tl074cn.3b (53) + r10k.rn3 (30)
+ MCFG_SOUND_ADD("rdac4", AD7521, 0) MCFG_SOUND_ROUTE(0, "rspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.1d (24) + 1500pf.c18 (34) + tl074cn.1c (53) + r10k.rn2 (30)
+ MCFG_SOUND_ADD("ldac4", AD7521, 0) MCFG_SOUND_ROUTE(0, "lspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.3d (24) + 1500pf.c9 (34) + tl074cn.3c (53) + r10k.rn4 (30)
+ MCFG_SOUND_ADD("rdac5", AD7521, 0) MCFG_SOUND_ROUTE(0, "rspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.1d (24) + 1500pf.c17 (34) + tl074cn.1b (53) + r10k.rn1 (30)
+ MCFG_SOUND_ADD("ldac5", AD7521, 0) MCFG_SOUND_ROUTE(0, "lspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.3d (24) + 1500pf.c8 (34) + tl074cn.3b (53) + r10k.rn3 (30)
+ MCFG_SOUND_ADD("rdac6", AD7521, 0) MCFG_SOUND_ROUTE(0, "rspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.1d (24) + 1500pf.c16 (34) + tl074cn.1c (53) + r10k.rn2 (30)
+ MCFG_SOUND_ADD("ldac6", AD7521, 0) MCFG_SOUND_ROUTE(0, "lspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.3d (24) + 1500pf.c7 (34) + tl074cn.3c (53) + r10k.rn4 (30)
+ MCFG_SOUND_ADD("rdac7", AD7521, 0) MCFG_SOUND_ROUTE(0, "rspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.1d (24) + 1500pf.c15 (34) + tl074cn.1b (53) + r10k.rn1 (30)
+ MCFG_SOUND_ADD("ldac7", AD7521, 0) MCFG_SOUND_ROUTE(0, "lspeaker", 0.125) // ad7521jn.2d (59) + cd4051be.3d (24) + 1500pf.c6 (34) + tl074cn.3b (53) + r10k.rn3 (30)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE_EX(0, "rdac0", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac0", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "ldac0", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac0", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "rdac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "ldac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac1", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "rdac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac2", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "ldac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac2", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "rdac3", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac3", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "ldac3", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac3", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "rdac4", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac4", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "ldac4", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac4", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "rdac5", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac5", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "ldac5", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac5", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "rdac6", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac6", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "ldac6", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac6", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "rdac7", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac7", -1.0, DAC_VREF_NEG_INPUT)
+ MCFG_SOUND_ROUTE_EX(0, "ldac7", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "ldac7", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END