mirror of
https://github.com/holub/mame
synced 2025-07-04 17:38:08 +03:00
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.
This commit is contained in:
parent
ddca20f72a
commit
a3f186b44b
@ -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 tms36xx_get_info(void *token, UINT32 state, sndinfo *info);
|
||||||
void tms3615_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 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 tms5220_get_info(void *token, UINT32 state, sndinfo *info);
|
||||||
void vlm5030_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);
|
void adpcm_get_info(void *token, UINT32 state, sndinfo *info);
|
||||||
@ -287,6 +289,12 @@ static const struct
|
|||||||
#if (HAS_TMS5110)
|
#if (HAS_TMS5110)
|
||||||
{ SOUND_TMS5110, tms5110_get_info },
|
{ SOUND_TMS5110, tms5110_get_info },
|
||||||
#endif
|
#endif
|
||||||
|
#if (HAS_TMS0285)
|
||||||
|
{ SOUND_TMS0285, tms0285_get_info },
|
||||||
|
#endif
|
||||||
|
#if (HAS_TMS5200)
|
||||||
|
{ SOUND_TMS5200, tms5200_get_info },
|
||||||
|
#endif
|
||||||
#if (HAS_TMS5220)
|
#if (HAS_TMS5220)
|
||||||
{ SOUND_TMS5220, tms5220_get_info },
|
{ SOUND_TMS5220, tms5220_get_info },
|
||||||
#endif
|
#endif
|
||||||
|
@ -73,6 +73,8 @@ enum _sound_type
|
|||||||
SOUND_TMS36XX,
|
SOUND_TMS36XX,
|
||||||
SOUND_TMS3615,
|
SOUND_TMS3615,
|
||||||
SOUND_TMS5110,
|
SOUND_TMS5110,
|
||||||
|
SOUND_TMS0285,
|
||||||
|
SOUND_TMS5200,
|
||||||
SOUND_TMS5220,
|
SOUND_TMS5220,
|
||||||
SOUND_VLM5030,
|
SOUND_VLM5030,
|
||||||
SOUND_OKIM6295,
|
SOUND_OKIM6295,
|
||||||
|
@ -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)
|
switch (state)
|
||||||
{
|
{
|
||||||
/* --- the following bits of info are returned as 64-bit signed integers --- */
|
/* --- 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 --- */
|
/* --- 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;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -581,13 +581,15 @@ endif
|
|||||||
#-------------------------------------------------
|
#-------------------------------------------------
|
||||||
|
|
||||||
SOUNDDEFS += -DHAS_TMS5110=$(if $(filter TMS5110,$(SOUNDS)),1,0)
|
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)
|
SOUNDDEFS += -DHAS_TMS5220=$(if $(filter TMS5220,$(SOUNDS)),1,0)
|
||||||
|
|
||||||
ifneq ($(filter TMS5110,$(SOUNDS)),)
|
ifneq ($(filter TMS5110,$(SOUNDS)),)
|
||||||
SOUNDOBJS += $(SOUNDOBJ)/tms5110.o $(SOUNDOBJ)/5110intf.o
|
SOUNDOBJS += $(SOUNDOBJ)/tms5110.o $(SOUNDOBJ)/5110intf.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(filter TMS5220,$(SOUNDS)),)
|
ifneq ($(filter TMS0285 TMS5200 TMS5220,$(SOUNDS)),)
|
||||||
SOUNDOBJS += $(SOUNDOBJ)/tms5220.o $(SOUNDOBJ)/5220intf.o
|
SOUNDOBJS += $(SOUNDOBJ)/tms5220.o $(SOUNDOBJ)/5220intf.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -25,11 +25,11 @@
|
|||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
#define SSIO_CLOCK 16000000
|
#define SSIO_CLOCK XTAL_16MHz
|
||||||
#define CSDELUXE_CLOCK 15000000
|
#define CSDELUXE_CLOCK XTAL_16MHz
|
||||||
#define SOUNDSGOOD_CLOCK 16000000
|
#define SOUNDSGOOD_CLOCK XTAL_16MHz
|
||||||
#define TURBOCS_CLOCK 8000000
|
#define TURBOCS_CLOCK XTAL_8MHz
|
||||||
#define SQUAWKTALK_CLOCK 3580000
|
#define SQUAWKTALK_CLOCK XTAL_3_579545MHz
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -791,7 +791,7 @@ static const pia6821_interface turbocs_pia_intf =
|
|||||||
|
|
||||||
/********* machine driver ***********/
|
/********* machine driver ***********/
|
||||||
MACHINE_DRIVER_START(turbo_chip_squeak)
|
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_CPU_PROGRAM_MAP(turbocs_map,0)
|
||||||
|
|
||||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
@ -818,7 +818,7 @@ MACHINE_DRIVER_END
|
|||||||
*
|
*
|
||||||
* MCR Squawk n Talk communications
|
* 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 )
|
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;
|
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))
|
if (((data ^ squawkntalk_tms_strobes) & 0x02) && !(data & 0x02))
|
||||||
{
|
{
|
||||||
tms5220_data_w(offset, squawkntalk_tms_command);
|
tms5220_data_w(offset, squawkntalk_tms_command);
|
||||||
@ -853,7 +853,7 @@ static WRITE8_HANDLER( squawkntalk_portb2_w )
|
|||||||
pia_1_ca2_w(0, 0);
|
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))
|
else if (((data ^ squawkntalk_tms_strobes) & 0x01) && !(data & 0x01))
|
||||||
{
|
{
|
||||||
pia_1_porta_w(0, tms5220_status_r(offset));
|
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)
|
MDRV_CPU_PROGRAM_MAP(squawkntalk_map,0)
|
||||||
|
|
||||||
/* only used on Discs of Tron, which is stereo */
|
/* 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, "left", 0.60)
|
||||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 0.60)
|
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 0.60)
|
||||||
|
|
||||||
|
@ -88,6 +88,9 @@
|
|||||||
#include "mcr.h"
|
#include "mcr.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define MASTER_CLOCK XTAL_20MHz
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
@ -1049,7 +1052,7 @@ GFXDECODE_END
|
|||||||
static MACHINE_DRIVER_START( mcr3_base )
|
static MACHINE_DRIVER_START( mcr3_base )
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* 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_CONFIG(mcr_daisy_chain)
|
||||||
MDRV_CPU_VBLANK_INT(mcr_interrupt,2)
|
MDRV_CPU_VBLANK_INT(mcr_interrupt,2)
|
||||||
|
|
||||||
|
@ -878,7 +878,7 @@ GFXDECODE_END
|
|||||||
static MACHINE_DRIVER_START( zwackery )
|
static MACHINE_DRIVER_START( zwackery )
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* 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_PROGRAM_MAP(zwackery_map,0)
|
||||||
MDRV_CPU_VBLANK_INT(mcr68_interrupt,1)
|
MDRV_CPU_VBLANK_INT(mcr68_interrupt,1)
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include "cpu/z80/z80daisy.h"
|
#include "cpu/z80/z80daisy.h"
|
||||||
|
|
||||||
/* constants */
|
/* constants */
|
||||||
#define MAIN_OSC_MCR_I 19968000
|
#define MAIN_OSC_MCR_I XTAL_19_968MHz
|
||||||
|
|
||||||
|
|
||||||
/*----------- defined in drivers/mcr.c -----------*/
|
/*----------- defined in drivers/mcr.c -----------*/
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
#include "cpu/z80/z80daisy.h"
|
#include "cpu/z80/z80daisy.h"
|
||||||
#include "mcr.h"
|
#include "mcr.h"
|
||||||
|
|
||||||
#define VERBOSE 1
|
#define VERBOSE 0
|
||||||
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
|
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
|
||||||
|
|
||||||
|
|
||||||
|
@ -244,6 +244,8 @@ SOUNDS += NAMCONA
|
|||||||
SOUNDS += TMS36XX
|
SOUNDS += TMS36XX
|
||||||
SOUNDS += TMS3615
|
SOUNDS += TMS3615
|
||||||
SOUNDS += TMS5110
|
SOUNDS += TMS5110
|
||||||
|
SOUNDS += TMS0285
|
||||||
|
SOUNDS += TMS5200
|
||||||
SOUNDS += TMS5220
|
SOUNDS += TMS5220
|
||||||
SOUNDS += VLM5030
|
SOUNDS += VLM5030
|
||||||
SOUNDS += ADPCM
|
SOUNDS += ADPCM
|
||||||
|
Loading…
Reference in New Issue
Block a user