summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2008-01-15 09:31:57 +0000
committer Aaron Giles <aaron@aarongiles.com>2008-01-15 09:31:57 +0000
commita3f186b44b35a7dbcd9e969366f4ebd5d0d3fe86 (patch)
tree88dad5fcf691f8213c2ad9f6080a7130c4dbbf45
parentddca20f72ae92e539d2e94188a3b7ec5e66fc2fb (diff)
Added clocks to the MCR sound boards and some of the MCR games.
Added TMS5220 variants TMS5200 and TMS0285 as proper chips. Changed MCR squawk & talk to use the TMS5200 as documented.
-rw-r--r--src/emu/sndintrf.c8
-rw-r--r--src/emu/sndintrf.h2
-rw-r--r--src/emu/sound/5220intf.c29
-rw-r--r--src/emu/sound/sound.mak4
-rw-r--r--src/mame/audio/mcr.c22
-rw-r--r--src/mame/drivers/mcr3.c5
-rw-r--r--src/mame/drivers/mcr68.c2
-rw-r--r--src/mame/includes/mcr.h2
-rw-r--r--src/mame/machine/mcr.c2
-rw-r--r--src/mame/mame.mak2
10 files changed, 62 insertions, 16 deletions
diff --git a/src/emu/sndintrf.c b/src/emu/sndintrf.c
index f841e3dec3d..33215436560 100644
--- a/src/emu/sndintrf.c
+++ b/src/emu/sndintrf.c
@@ -108,6 +108,8 @@ void namcona_get_info(void *token, UINT32 state, sndinfo *info);
void tms36xx_get_info(void *token, UINT32 state, sndinfo *info);
void tms3615_get_info(void *token, UINT32 state, sndinfo *info);
void tms5110_get_info(void *token, UINT32 state, sndinfo *info);
+void tms0285_get_info(void *token, UINT32 state, sndinfo *info);
+void tms5200_get_info(void *token, UINT32 state, sndinfo *info);
void tms5220_get_info(void *token, UINT32 state, sndinfo *info);
void vlm5030_get_info(void *token, UINT32 state, sndinfo *info);
void adpcm_get_info(void *token, UINT32 state, sndinfo *info);
@@ -287,6 +289,12 @@ static const struct
#if (HAS_TMS5110)
{ SOUND_TMS5110, tms5110_get_info },
#endif
+#if (HAS_TMS0285)
+ { SOUND_TMS0285, tms0285_get_info },
+#endif
+#if (HAS_TMS5200)
+ { SOUND_TMS5200, tms5200_get_info },
+#endif
#if (HAS_TMS5220)
{ SOUND_TMS5220, tms5220_get_info },
#endif
diff --git a/src/emu/sndintrf.h b/src/emu/sndintrf.h
index d82728ebe02..3279075f954 100644
--- a/src/emu/sndintrf.h
+++ b/src/emu/sndintrf.h
@@ -73,6 +73,8 @@ enum _sound_type
SOUND_TMS36XX,
SOUND_TMS3615,
SOUND_TMS5110,
+ SOUND_TMS0285,
+ SOUND_TMS5200,
SOUND_TMS5220,
SOUND_VLM5030,
SOUND_OKIM6295,
diff --git a/src/emu/sound/5220intf.c b/src/emu/sound/5220intf.c
index 2f0c581f6f1..826febd6c6b 100644
--- a/src/emu/sound/5220intf.c
+++ b/src/emu/sound/5220intf.c
@@ -73,6 +73,14 @@ static void *tms5220_start(int sndindex, int clock, const void *config)
}
+static void *tms5200_start(int sndindex, int clock, const void *config)
+{
+ struct tms5220_info *info = tms5220_start(sndindex, clock, config);
+ tms5220_set_variant(info->chip, variant_tms0285);
+ return info;
+}
+
+
/**********************************************************************************************
@@ -244,6 +252,7 @@ void tms5220_get_info(void *token, UINT32 state, sndinfo *info)
switch (state)
{
/* --- the following bits of info are returned as 64-bit signed integers --- */
+ case SNDINFO_INT_ALIAS: info->i = SOUND_TMS5220; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case SNDINFO_PTR_SET_INFO: info->set_info = tms5220_set_info; break;
@@ -260,3 +269,23 @@ void tms5220_get_info(void *token, UINT32 state, sndinfo *info)
}
}
+void tms0285_get_info(void *token, UINT32 state, sndinfo *info)
+{
+ switch (state)
+ {
+ case SNDINFO_PTR_START: info->start = tms5200_start; break;
+ case SNDINFO_STR_NAME: info->s = "TMS0285"; break;
+ default: tms5220_get_info(token, state, info); break;
+ }
+}
+
+void tms5200_get_info(void *token, UINT32 state, sndinfo *info)
+{
+ switch (state)
+ {
+ case SNDINFO_PTR_START: info->start = tms5200_start; break;
+ case SNDINFO_STR_NAME: info->s = "TMS5200"; break;
+ default: tms5220_get_info(token, state, info); break;
+ }
+}
+
diff --git a/src/emu/sound/sound.mak b/src/emu/sound/sound.mak
index 0e64486038b..ad2211be567 100644
--- a/src/emu/sound/sound.mak
+++ b/src/emu/sound/sound.mak
@@ -581,13 +581,15 @@ endif
#-------------------------------------------------
SOUNDDEFS += -DHAS_TMS5110=$(if $(filter TMS5110,$(SOUNDS)),1,0)
+SOUNDDEFS += -DHAS_TMS0285=$(if $(filter TMS0285,$(SOUNDS)),1,0)
+SOUNDDEFS += -DHAS_TMS5200=$(if $(filter TMS5200,$(SOUNDS)),1,0)
SOUNDDEFS += -DHAS_TMS5220=$(if $(filter TMS5220,$(SOUNDS)),1,0)
ifneq ($(filter TMS5110,$(SOUNDS)),)
SOUNDOBJS += $(SOUNDOBJ)/tms5110.o $(SOUNDOBJ)/5110intf.o
endif
-ifneq ($(filter TMS5220,$(SOUNDS)),)
+ifneq ($(filter TMS0285 TMS5200 TMS5220,$(SOUNDS)),)
SOUNDOBJS += $(SOUNDOBJ)/tms5220.o $(SOUNDOBJ)/5220intf.o
endif
diff --git a/src/mame/audio/mcr.c b/src/mame/audio/mcr.c
index 60834cd280e..24785dc38e7 100644
--- a/src/mame/audio/mcr.c
+++ b/src/mame/audio/mcr.c
@@ -25,11 +25,11 @@
*
*************************************/
-#define SSIO_CLOCK 16000000
-#define CSDELUXE_CLOCK 15000000
-#define SOUNDSGOOD_CLOCK 16000000
-#define TURBOCS_CLOCK 8000000
-#define SQUAWKTALK_CLOCK 3580000
+#define SSIO_CLOCK XTAL_16MHz
+#define CSDELUXE_CLOCK XTAL_16MHz
+#define SOUNDSGOOD_CLOCK XTAL_16MHz
+#define TURBOCS_CLOCK XTAL_8MHz
+#define SQUAWKTALK_CLOCK XTAL_3_579545MHz
@@ -791,7 +791,7 @@ static const pia6821_interface turbocs_pia_intf =
/********* machine driver ***********/
MACHINE_DRIVER_START(turbo_chip_squeak)
- MDRV_CPU_ADD_TAG("tcs", M6809, TURBOCS_CLOCK/4)
+ MDRV_CPU_ADD_TAG("tcs", M6809E, TURBOCS_CLOCK)
MDRV_CPU_PROGRAM_MAP(turbocs_map,0)
MDRV_SPEAKER_STANDARD_MONO("mono")
@@ -818,7 +818,7 @@ MACHINE_DRIVER_END
*
* MCR Squawk n Talk communications
*
- * MC6802, 2 PIAs, TMS5220, AY8912 (not used), 8-bit DAC (not used)
+ * MC6802, 2 PIAs, TMS5200, AY8912 (not used), 8-bit DAC (not used)
*
*************************************/
@@ -840,10 +840,10 @@ static WRITE8_HANDLER( squawkntalk_porta2_w )
static WRITE8_HANDLER( squawkntalk_portb2_w )
{
- /* bits 0-1 select read/write strobes on the TMS5220 */
+ /* bits 0-1 select read/write strobes on the TMS5200 */
data &= 0x03;
- /* write strobe -- pass the current command to the TMS5220 */
+ /* write strobe -- pass the current command to the TMS5200 */
if (((data ^ squawkntalk_tms_strobes) & 0x02) && !(data & 0x02))
{
tms5220_data_w(offset, squawkntalk_tms_command);
@@ -853,7 +853,7 @@ static WRITE8_HANDLER( squawkntalk_portb2_w )
pia_1_ca2_w(0, 0);
}
- /* read strobe -- read the current status from the TMS5220 */
+ /* read strobe -- read the current status from the TMS5200 */
else if (((data ^ squawkntalk_tms_strobes) & 0x01) && !(data & 0x01))
{
pia_1_porta_w(0, tms5220_status_r(offset));
@@ -941,7 +941,7 @@ MACHINE_DRIVER_START(squawk_n_talk)
MDRV_CPU_PROGRAM_MAP(squawkntalk_map,0)
/* only used on Discs of Tron, which is stereo */
- MDRV_SOUND_ADD_TAG("snt", TMS5220, 640000)
+ MDRV_SOUND_ADD_TAG("snt", TMS5200, 640000)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "left", 0.60)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 0.60)
diff --git a/src/mame/drivers/mcr3.c b/src/mame/drivers/mcr3.c
index e04eabb825c..a0834bad057 100644
--- a/src/mame/drivers/mcr3.c
+++ b/src/mame/drivers/mcr3.c
@@ -88,6 +88,9 @@
#include "mcr.h"
+#define MASTER_CLOCK XTAL_20MHz
+
+
/*************************************
*
@@ -1049,7 +1052,7 @@ GFXDECODE_END
static MACHINE_DRIVER_START( mcr3_base )
/* basic machine hardware */
- MDRV_CPU_ADD_TAG("main", Z80, 5000000)
+ MDRV_CPU_ADD_TAG("main", Z80, MASTER_CLOCK/4)
MDRV_CPU_CONFIG(mcr_daisy_chain)
MDRV_CPU_VBLANK_INT(mcr_interrupt,2)
diff --git a/src/mame/drivers/mcr68.c b/src/mame/drivers/mcr68.c
index 805c6e22c64..a528c4fc019 100644
--- a/src/mame/drivers/mcr68.c
+++ b/src/mame/drivers/mcr68.c
@@ -878,7 +878,7 @@ GFXDECODE_END
static MACHINE_DRIVER_START( zwackery )
/* basic machine hardware */
- MDRV_CPU_ADD(M68000, 7652400)
+ MDRV_CPU_ADD(M68000, 7652400) /* should be XTAL_16MHz/2 */
MDRV_CPU_PROGRAM_MAP(zwackery_map,0)
MDRV_CPU_VBLANK_INT(mcr68_interrupt,1)
diff --git a/src/mame/includes/mcr.h b/src/mame/includes/mcr.h
index 7bcf74a12dc..ad2171fd7f9 100644
--- a/src/mame/includes/mcr.h
+++ b/src/mame/includes/mcr.h
@@ -7,7 +7,7 @@
#include "cpu/z80/z80daisy.h"
/* constants */
-#define MAIN_OSC_MCR_I 19968000
+#define MAIN_OSC_MCR_I XTAL_19_968MHz
/*----------- defined in drivers/mcr.c -----------*/
diff --git a/src/mame/machine/mcr.c b/src/mame/machine/mcr.c
index 45e639f379f..e27b2c2bcb6 100644
--- a/src/mame/machine/mcr.c
+++ b/src/mame/machine/mcr.c
@@ -15,7 +15,7 @@
#include "cpu/z80/z80daisy.h"
#include "mcr.h"
-#define VERBOSE 1
+#define VERBOSE 0
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
diff --git a/src/mame/mame.mak b/src/mame/mame.mak
index cf2f7c2fb4a..35f30cca58e 100644
--- a/src/mame/mame.mak
+++ b/src/mame/mame.mak
@@ -244,6 +244,8 @@ SOUNDS += NAMCONA
SOUNDS += TMS36XX
SOUNDS += TMS3615
SOUNDS += TMS5110
+SOUNDS += TMS0285
+SOUNDS += TMS5200
SOUNDS += TMS5220
SOUNDS += VLM5030
SOUNDS += ADPCM