summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2015-05-29 17:27:21 -0400
committer R. Belmont <rb6502@users.noreply.github.com>2015-05-29 17:27:21 -0400
commit83e407f7bb1d4e27bd9adcc7aa4f044003068a40 (patch)
tree03e290b12d747ab7cad76a3d4c148393a3f357b7
parentf9eb5e92b85887cd34bb75db9fe3b70f4debde4e (diff)
parent595c60e1b8d0f2336cf5b2be7e87453e222bf39c (diff)
Merge pull request #193 from superctr/master
Add configurable clock dividers for Namco C352 [superctr]
-rw-r--r--src/emu/sound/c352.c29
-rw-r--r--src/emu/sound/c352.h25
-rw-r--r--src/mame/drivers/namcofl.c2
-rw-r--r--src/mame/drivers/namconb1.c4
-rw-r--r--src/mame/drivers/namcond1.c2
-rw-r--r--src/mame/drivers/namcos11.c2
-rw-r--r--src/mame/drivers/namcos12.c2
-rw-r--r--src/mame/drivers/namcos22.c4
-rw-r--r--src/mame/drivers/namcos23.c8
9 files changed, 61 insertions, 17 deletions
diff --git a/src/emu/sound/c352.c b/src/emu/sound/c352.c
index aab4fdbb3d3..c164bc53413 100644
--- a/src/emu/sound/c352.c
+++ b/src/emu/sound/c352.c
@@ -46,6 +46,17 @@ c352_device::c352_device(const machine_config &mconfig, const char *tag, device_
}
//-------------------------------------------------
+// static_set_dividder - configuration helper to
+// set the divider setting
+//-------------------------------------------------
+
+void c352_device::static_set_divider(device_t &device, int setting)
+{
+ c352_device &c352 = downcast<c352_device &>(device);
+ c352.m_divider = setting;
+}
+
+//-------------------------------------------------
// memory_space_config - return a description of
// any address spaces owned by this device
//-------------------------------------------------
@@ -457,7 +468,7 @@ void c352_device::write_reg16(unsigned long address, unsigned short val)
void c352_device::device_start()
{
- int i;
+ int i, divider;
double x_max = 32752.0;
double y_max = 127.0;
double u = 10.0;
@@ -465,7 +476,21 @@ void c352_device::device_start()
// find our direct access
m_direct = &space().direct();
- m_sample_rate_base = clock() / 288;
+ switch(m_divider)
+ {
+ case C352_DIVIDER_228:
+ divider=228;
+ break;
+ case C352_DIVIDER_288:
+ default:
+ divider=288;
+ break;
+ case C352_DIVIDER_332:
+ divider=332;
+ break;
+ }
+
+ m_sample_rate_base = clock() / divider;
m_stream = machine().sound().stream_alloc(*this, 0, 4, m_sample_rate_base);
diff --git a/src/emu/sound/c352.h b/src/emu/sound/c352.h
index e6998f81b9f..0717fd133df 100644
--- a/src/emu/sound/c352.h
+++ b/src/emu/sound/c352.h
@@ -6,12 +6,27 @@
#define __C352_H__
//**************************************************************************
+// CONSTANTS
+//**************************************************************************
+
+enum
+{
+ C352_DIVIDER_228 = 0,
+ C352_DIVIDER_288 = 1,
+ C352_DIVIDER_332 = 2
+};
+
+//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_C352_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, C352, _clock)
+#define MCFG_C352_ADD(_tag, _clock, _setting) \
+ MCFG_DEVICE_ADD(_tag, C352, _clock) \
+ MCFG_C352_DIVIDER(_setting)
+#define MCFG_C352_DIVIDER(_setting) \
+ c352_device::static_set_divider(*device, _setting);
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -26,6 +41,9 @@ public:
// construction/destruction
c352_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ // inline configuration helpers
+ static void static_set_divider(device_t &device, int setting);
+
DECLARE_READ16_MEMBER(read);
DECLARE_WRITE16_MEMBER(write);
@@ -89,7 +107,8 @@ private:
c352_ch_t m_c352_ch[32];
int m_sample_rate_base;
-
+ int m_divider;
+
long m_channel_l[2048*2];
long m_channel_r[2048*2];
long m_channel_l2[2048*2];
diff --git a/src/mame/drivers/namcofl.c b/src/mame/drivers/namcofl.c
index b2bf41f463a..7b0d437d82e 100644
--- a/src/mame/drivers/namcofl.c
+++ b/src/mame/drivers/namcofl.c
@@ -610,7 +610,7 @@ static MACHINE_CONFIG_START( namcofl, namcofl_state )
MCFG_VIDEO_START_OVERRIDE(namcofl_state,namcofl)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_C352_ADD("c352", 48384000/2)
+ MCFG_C352_ADD("c352", 48384000/2, C352_DIVIDER_288)
MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)
diff --git a/src/mame/drivers/namconb1.c b/src/mame/drivers/namconb1.c
index 1d4eaad65ed..0994ae17686 100644
--- a/src/mame/drivers/namconb1.c
+++ b/src/mame/drivers/namconb1.c
@@ -1126,7 +1126,7 @@ static MACHINE_CONFIG_START( namconb1, namconb1_state )
MCFG_VIDEO_START_OVERRIDE(namconb1_state,namconb1)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_C352_ADD("c352", MASTER_CLOCK/2)
+ MCFG_C352_ADD("c352", MASTER_CLOCK/2, C352_DIVIDER_288)
MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)
@@ -1163,7 +1163,7 @@ static MACHINE_CONFIG_START( namconb2, namconb1_state )
MCFG_VIDEO_START_OVERRIDE(namconb1_state,namconb2)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_C352_ADD("c352", MASTER_CLOCK/2)
+ MCFG_C352_ADD("c352", MASTER_CLOCK/2, C352_DIVIDER_288)
MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)
diff --git a/src/mame/drivers/namcond1.c b/src/mame/drivers/namcond1.c
index 6749c6b317f..bef6cecaaa7 100644
--- a/src/mame/drivers/namcond1.c
+++ b/src/mame/drivers/namcond1.c
@@ -319,7 +319,7 @@ static MACHINE_CONFIG_START( namcond1, namcond1_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_C352_ADD("c352", XTAL_49_152MHz/2)
+ MCFG_C352_ADD("c352", XTAL_49_152MHz/2, C352_DIVIDER_288)
MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)
diff --git a/src/mame/drivers/namcos11.c b/src/mame/drivers/namcos11.c
index 37c30be6df0..e6d53c00e6c 100644
--- a/src/mame/drivers/namcos11.c
+++ b/src/mame/drivers/namcos11.c
@@ -571,7 +571,7 @@ static MACHINE_CONFIG_START( coh110, namcos11_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_C352_ADD("c352", 16934400*1.5) // measured at 20MHz, but that's too lowpitched
+ MCFG_C352_ADD("c352", 20013200, C352_DIVIDER_228)
MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)
diff --git a/src/mame/drivers/namcos12.c b/src/mame/drivers/namcos12.c
index 627ee9b8a3d..d89c8a0c31c 100644
--- a/src/mame/drivers/namcos12.c
+++ b/src/mame/drivers/namcos12.c
@@ -1591,7 +1591,7 @@ static MACHINE_CONFIG_START( coh700, namcos12_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_C352_ADD("c352", 16737350*1.5) // measured at 29.168MHz, but that's too highpitched
+ MCFG_C352_ADD("c352", 29168000, C352_DIVIDER_332)
MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)
diff --git a/src/mame/drivers/namcos22.c b/src/mame/drivers/namcos22.c
index b15a3941e83..af329845cdb 100644
--- a/src/mame/drivers/namcos22.c
+++ b/src/mame/drivers/namcos22.c
@@ -3781,7 +3781,7 @@ static MACHINE_CONFIG_START( namcos22, namcos22_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_C352_ADD("c352", SS22_MASTER_CLOCK/2)
+ MCFG_C352_ADD("c352", SS22_MASTER_CLOCK/2, C352_DIVIDER_288)
MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)
@@ -3830,7 +3830,7 @@ static MACHINE_CONFIG_START( namcos22s, namcos22_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_C352_ADD("c352", SS22_MASTER_CLOCK/2)
+ MCFG_C352_ADD("c352", SS22_MASTER_CLOCK/2, C352_DIVIDER_288)
MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)
diff --git a/src/mame/drivers/namcos23.c b/src/mame/drivers/namcos23.c
index e9e72caa243..fd92dc91d8f 100644
--- a/src/mame/drivers/namcos23.c
+++ b/src/mame/drivers/namcos23.c
@@ -1247,7 +1247,7 @@ Notes:
#define JVSCLOCK (XTAL_14_7456MHz)
#define H8CLOCK (16737350) /* from 2061 */
#define BUSCLOCK (16737350*2) /* 33MHz CPU bus clock / input */
-#define C352CLOCK (16737350*1.5) /* measured at 25.992MHz from 2061 pin 9 (but that sounds too highpitched) */
+#define C352CLOCK (25992000) /* measured at 25.992MHz from 2061 pin 9 (System 12 uses a divider of 332) */
#define VSYNC1 (59.8824)
#define VSYNC2 (59.915)
#define HSYNC (16666150)
@@ -3320,7 +3320,7 @@ static MACHINE_CONFIG_START( gorgon, namcos23_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_C352_ADD("c352", C352CLOCK)
+ MCFG_C352_ADD("c352", C352CLOCK, C352_DIVIDER_332)
MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)
@@ -3389,7 +3389,7 @@ static MACHINE_CONFIG_START( s23, namcos23_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_C352_ADD("c352", C352CLOCK)
+ MCFG_C352_ADD("c352", C352CLOCK, C352_DIVIDER_332)
MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)
@@ -3469,7 +3469,7 @@ static MACHINE_CONFIG_START( ss23, namcos23_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_C352_ADD("c352", C352CLOCK)
+ MCFG_C352_ADD("c352", C352CLOCK, C352_DIVIDER_332)
MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)