Fixed narc37b16yel.

Added talkback to narc sound boards and wired it up to the Z-unit board.
Connected Y-unit reset for various sound boards.
Added sound IRQ state detect to ADPCM board and wired it up to the Y-unit board.
Verified and documented XTALs on the Williams sound boards and Y/Z-unit PCBs.
This commit is contained in:
Aaron Giles 2008-01-07 02:49:56 +00:00
parent 05725d1c7b
commit c828f95996
5 changed files with 141 additions and 54 deletions

View File

@ -774,6 +774,9 @@ static void dcs_boot(void)
static TIMER_CALLBACK( dcs_reset )
{
if (LOG_DCS_IO)
logerror("dcs_reset\n");
/* reset the memory banking */
switch (dcs.rev)
{

View File

@ -32,6 +32,17 @@
#include "sound/dac.h"
#define NARC_MASTER_CLOCK XTAL_8MHz
#define NARC_FM_CLOCK XTAL_3_579545MHz
#define CVSD_MASTER_CLOCK XTAL_8MHz
#define CVSD_FM_CLOCK XTAL_3_579545MHz
#define ADPCM_MASTER_CLOCK XTAL_8MHz
#define ADPCM_FM_CLOCK XTAL_3_579545MHz
/***************************************************************************
STATIC GLOBALS
****************************************************************************/
@ -39,6 +50,7 @@
static UINT8 williams_sound_int_state;
static UINT8 audio_talkback;
static UINT8 audio_sync;
static INT8 sound_cpunum;
static INT8 soundalt_cpunum;
@ -177,12 +189,12 @@ static const struct YM2151interface adpcm_ym2151_interface =
****************************************************************************/
MACHINE_DRIVER_START( williams_cvsd_sound )
MDRV_CPU_ADD_TAG("cvsd", M6809, 8000000/4)
MDRV_CPU_ADD_TAG("cvsd", M6809E, CVSD_MASTER_CLOCK/4)
MDRV_CPU_PROGRAM_MAP(williams_cvsd_map,0)
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD(YM2151, 3579580)
MDRV_SOUND_ADD(YM2151, CVSD_FM_CLOCK)
MDRV_SOUND_CONFIG(cvsd_ym2151_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
@ -195,15 +207,15 @@ MACHINE_DRIVER_END
MACHINE_DRIVER_START( williams_narc_sound )
MDRV_CPU_ADD_TAG("narc1", M6809, 8000000/4)
MDRV_CPU_ADD_TAG("narc1", M6809E, NARC_MASTER_CLOCK/4)
MDRV_CPU_PROGRAM_MAP(williams_narc_master_map,0)
MDRV_CPU_ADD_TAG("narc2", M6809, 8000000/4)
MDRV_CPU_ADD_TAG("narc2", M6809E, NARC_MASTER_CLOCK/4)
MDRV_CPU_PROGRAM_MAP(williams_narc_slave_map,0)
MDRV_SPEAKER_STANDARD_STEREO("left", "right")
MDRV_SOUND_ADD(YM2151, 3579580)
MDRV_SOUND_ADD(YM2151, NARC_FM_CLOCK)
MDRV_SOUND_CONFIG(adpcm_ym2151_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "left", 0.10)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 0.10)
@ -223,19 +235,19 @@ MACHINE_DRIVER_END
MACHINE_DRIVER_START( williams_adpcm_sound )
MDRV_CPU_ADD_TAG("adpcm", M6809, 8000000/4)
MDRV_CPU_ADD_TAG("adpcm", M6809E, ADPCM_MASTER_CLOCK/4)
MDRV_CPU_PROGRAM_MAP(williams_adpcm_map,0)
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD(YM2151, 3579580)
MDRV_SOUND_ADD(YM2151, ADPCM_FM_CLOCK)
MDRV_SOUND_CONFIG(adpcm_ym2151_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
MDRV_SOUND_ADD(DAC, 0)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MDRV_SOUND_ADD(OKIM6295, 8000000/8)
MDRV_SOUND_ADD(OKIM6295, ADPCM_MASTER_CLOCK/8)
MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7high) // clock frequency & pin 7 not verified
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_DRIVER_END
@ -322,6 +334,7 @@ void williams_narc_init(void)
/* register for save states */
state_save_register_global(williams_sound_int_state);
state_save_register_global(audio_talkback);
state_save_register_global(audio_sync);
}
@ -529,8 +542,15 @@ static WRITE8_HANDLER( narc_master_talkback_w )
}
static TIMER_CALLBACK( narc_sync_clear )
{
audio_sync &= ~param;
}
static WRITE8_HANDLER( narc_master_sync_w )
{
timer_set(double_to_attotime(TIME_OF_74LS123(180000, 0.000001)), NULL, 0x01, narc_sync_clear);
audio_sync |= 0x01;
logerror("Master sync = %02X\n", data);
}
@ -543,6 +563,8 @@ static WRITE8_HANDLER( narc_slave_talkback_w )
static WRITE8_HANDLER( narc_slave_sync_w )
{
timer_set(double_to_attotime(TIME_OF_74LS123(180000, 0.000001)), NULL, 0x02, narc_sync_clear);
audio_sync |= 0x02;
logerror("Slave sync = %02X\n", data);
}
@ -584,6 +606,12 @@ void williams_narc_reset_w(int state)
}
int williams_narc_talkback_r(void)
{
return audio_talkback | (audio_sync << 8);
}
/***************************************************************************
ADPCM READ/WRITE HANDLERS
@ -601,10 +629,19 @@ static WRITE8_HANDLER( adpcm_6295_bank_select_w )
}
static TIMER_CALLBACK( clear_irq_state )
{
williams_sound_int_state = 0;
}
static READ8_HANDLER( adpcm_command_r )
{
cpunum_set_input_line(sound_cpunum, M6809_IRQ_LINE, CLEAR_LINE);
williams_sound_int_state = 0;
/* don't clear the external IRQ state for a short while; this allows the
self-tests to pass */
timer_set(ATTOTIME_IN_USEC(10), NULL, 0, clear_irq_state);
return soundlatch_r(0);
}
@ -628,6 +665,7 @@ void williams_adpcm_data_w(int data)
{
cpunum_set_input_line(sound_cpunum, M6809_IRQ_LINE, ASSERT_LINE);
williams_sound_int_state = 1;
cpu_boost_interleave(attotime_zero, ATTOTIME_IN_USEC(100));
}
}
@ -645,3 +683,9 @@ void williams_adpcm_reset_w(int state)
else
cpunum_set_input_line(sound_cpunum, INPUT_LINE_RESET, CLEAR_LINE);
}
int williams_adpcm_sound_irq_r(void)
{
return williams_sound_int_state;
}

View File

@ -15,8 +15,9 @@ void williams_cvsd_reset_w(int state);
void williams_adpcm_init(void);
void williams_adpcm_data_w(int data);
void williams_adpcm_reset_w(int state);
int williams_adpcm_sound_irq_r(void);
void williams_narc_init(void);
void williams_narc_data_w(int data);
void williams_narc_reset_w(int state);
int williams_narc_talkback_r(void);

View File

@ -118,11 +118,14 @@ Notes:
#include "midyunit.h"
#define SLOW_CPU_CLOCK (40000000) /* smashtv, trog */
#define FAST_CPU_CLOCK (48000000) /* narc, strkforc, mk, totcarn */
/* master clocks vary based on game */
#define SLOW_MASTER_CLOCK XTAL_40MHz /* "slow" == smashtv, trog, hiimpact */
#define FAST_MASTER_CLOCK XTAL_48MHz /* "fast" == narc, mk, totcarn, strkforc */
#define FASTER_MASTER_CLOCK XTAL_50MHz /* "faster" == term2 */
#define STDRES_PIXEL_CLOCK (24000000/6)
#define MEDRES_PIXEL_CLOCK (48000000/6)
/* pixel clocks are 48MHz (narc) or 24MHz (all others) regardless */
#define MEDRES_PIXEL_CLOCK (XTAL_48MHz / 6)
#define STDRES_PIXEL_CLOCK (XTAL_24MHz / 6)
@ -140,6 +143,31 @@ static WRITE8_HANDLER( yawdim_oki_bank_w )
/*************************************
*
* Sound board comms
*
*************************************/
static UINT32 narc_talkback_strobe_r(void *param)
{
return (williams_narc_talkback_r() >> 8) & 1;
}
static UINT32 narc_talkback_data_r(void *param)
{
return williams_narc_talkback_r() & 0xff;
}
static UINT32 adpcm_irq_state_r(void *param)
{
return williams_adpcm_sound_irq_r() & 1;
}
/*************************************
*
* CMOS read/write
@ -226,7 +254,7 @@ static INPUT_PORTS_START( narc )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN4 )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED ) /* T/B strobe */
PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(narc_talkback_strobe_r, NULL)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED ) /* memory protect interlock */
PORT_BIT( 0x3000, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Language ) ) /* Is this a REAL dip or toggle? or software enable? */
@ -236,7 +264,9 @@ static INPUT_PORTS_START( narc )
// PORT_DIPSETTING( 0x0000, DEF_STR( Unknown ) )
PORT_START
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(narc_talkback_data_r, NULL)
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START
@ -567,7 +597,7 @@ static INPUT_PORTS_START( mkla2 )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM(adpcm_irq_state_r, NULL)
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1)
//There should be an additional block button for player 2, but I coudn't find it.
@ -659,7 +689,7 @@ static INPUT_PORTS_START( mkla4 )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM(adpcm_irq_state_r, NULL)
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1)
//There should be an additional block button for player 2, but I coudn't find it.
@ -744,7 +774,9 @@ static INPUT_PORTS_START( term2 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN4 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0xf000, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x3000, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM(adpcm_irq_state_r, NULL)
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START
PORT_BIT( 0x00ff, 0x0080, IPT_AD_STICK_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(20) PORT_KEYDELTA(10) PORT_CENTERDELTA(0) PORT_REVERSE PORT_PLAYER(1)
@ -846,7 +878,9 @@ static INPUT_PORTS_START( totcarn )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BILL1 )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED ) /* video freeze */
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN3 )
PORT_BIT( 0xfc00, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x3c00, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM(adpcm_irq_state_r, NULL)
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -969,7 +1003,7 @@ static const tms34010_config yunit_tms_config =
static MACHINE_DRIVER_START( zunit )
/* basic machine hardware */
MDRV_CPU_ADD(TMS34010, FAST_CPU_CLOCK/TMS34010_CLOCK_DIVIDER)
MDRV_CPU_ADD(TMS34010, FAST_MASTER_CLOCK/TMS34010_CLOCK_DIVIDER)
MDRV_CPU_CONFIG(zunit_tms_config)
MDRV_CPU_PROGRAM_MAP(main_map,0)
@ -1002,7 +1036,7 @@ MACHINE_DRIVER_END
static MACHINE_DRIVER_START( yunit_core )
/* basic machine hardware */
MDRV_CPU_ADD_TAG("main", TMS34010, FAST_CPU_CLOCK/TMS34010_CLOCK_DIVIDER)
MDRV_CPU_ADD_TAG("main", TMS34010, SLOW_MASTER_CLOCK/TMS34010_CLOCK_DIVIDER)
MDRV_CPU_CONFIG(yunit_tms_config)
MDRV_CPU_PROGRAM_MAP(main_map,0)
@ -1025,7 +1059,6 @@ static MACHINE_DRIVER_START( yunit_cvsd_4bit_slow )
/* basic machine hardware */
MDRV_IMPORT_FROM(yunit_core)
MDRV_CPU_REPLACE("main", TMS34010, SLOW_CPU_CLOCK/TMS34010_CLOCK_DIVIDER)
MDRV_IMPORT_FROM(williams_cvsd_sound)
/* video hardware */
@ -1038,6 +1071,7 @@ static MACHINE_DRIVER_START( yunit_cvsd_4bit_fast )
/* basic machine hardware */
MDRV_IMPORT_FROM(yunit_core)
MDRV_CPU_REPLACE("main", TMS34010, FAST_MASTER_CLOCK/TMS34010_CLOCK_DIVIDER)
MDRV_IMPORT_FROM(williams_cvsd_sound)
/* video hardware */
@ -1048,19 +1082,6 @@ MACHINE_DRIVER_END
static MACHINE_DRIVER_START( yunit_cvsd_6bit_slow )
/* basic machine hardware */
MDRV_IMPORT_FROM(yunit_core)
MDRV_CPU_REPLACE("main", TMS34010, SLOW_CPU_CLOCK/TMS34010_CLOCK_DIVIDER)
MDRV_IMPORT_FROM(williams_cvsd_sound)
/* video hardware */
MDRV_PALETTE_LENGTH(4096)
MDRV_VIDEO_START(midyunit_6bit)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( yunit_cvsd_6bit_fast )
/* basic machine hardware */
MDRV_IMPORT_FROM(yunit_core)
MDRV_IMPORT_FROM(williams_cvsd_sound)
@ -1075,6 +1096,20 @@ static MACHINE_DRIVER_START( yunit_adpcm_6bit_fast )
/* basic machine hardware */
MDRV_IMPORT_FROM(yunit_core)
MDRV_CPU_REPLACE("main", TMS34010, FAST_MASTER_CLOCK/TMS34010_CLOCK_DIVIDER)
MDRV_IMPORT_FROM(williams_adpcm_sound)
/* video hardware */
MDRV_PALETTE_LENGTH(4096)
MDRV_VIDEO_START(midyunit_6bit)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( yunit_adpcm_6bit_faster )
/* basic machine hardware */
MDRV_IMPORT_FROM(yunit_core)
MDRV_CPU_REPLACE("main", TMS34010, FASTER_MASTER_CLOCK/TMS34010_CLOCK_DIVIDER)
MDRV_IMPORT_FROM(williams_adpcm_sound)
/* video hardware */
@ -2168,21 +2203,21 @@ GAME( 1990, smashtv, 0, yunit_cvsd_6bit_slow, smashtv, smashtv, ROT0,
GAME( 1990, smashtv6, smashtv, yunit_cvsd_6bit_slow, smashtv, smashtv, ROT0, "Williams", "Smash T.V. (rev 6.00)", GAME_SUPPORTS_SAVE )
GAME( 1990, smashtv5, smashtv, yunit_cvsd_6bit_slow, smashtv, smashtv, ROT0, "Williams", "Smash T.V. (rev 5.00)", GAME_SUPPORTS_SAVE )
GAME( 1990, smashtv4, smashtv, yunit_cvsd_6bit_slow, smashtv, smashtv, ROT0, "Williams", "Smash T.V. (rev 4.00)", GAME_SUPPORTS_SAVE )
GAME( 1990, hiimpact, 0, yunit_cvsd_6bit_fast, trog, hiimpact, ROT0, "Williams", "High Impact Football (rev LA4 02/04/91)", GAME_SUPPORTS_SAVE )
GAME( 1990, hiimpac3, hiimpact, yunit_cvsd_6bit_fast, trog, hiimpact, ROT0, "Williams", "High Impact Football (rev LA3 12/27/90)", GAME_SUPPORTS_SAVE )
GAME( 1990, hiimpacp, hiimpact, yunit_cvsd_6bit_fast, trog, hiimpact, ROT0, "Williams", "High Impact Football (prototype, rev 8.6 12/09/90)", GAME_SUPPORTS_SAVE )
GAME( 1991, shimpact, 0, yunit_cvsd_6bit_fast, trog, shimpact, ROT0, "Midway", "Super High Impact (rev LA1 09/30/91)", GAME_SUPPORTS_SAVE )
GAME( 1991, shimpacp, shimpact, yunit_cvsd_6bit_fast, trog, shimpact, ROT0, "Midway", "Super High Impact (prototype, rev 5.0 09/15/91)", GAME_SUPPORTS_SAVE )
GAME( 1991, shimpap4, shimpact, yunit_cvsd_6bit_fast, trog, shimpact, ROT0, "Midway", "Super High Impact (prototype, rev 4.0 09/10/91)", GAME_SUPPORTS_SAVE ) /* See notes about factory restore above */
GAME( 1990, hiimpact, 0, yunit_cvsd_6bit_slow, trog, hiimpact, ROT0, "Williams", "High Impact Football (rev LA4 02/04/91)", GAME_SUPPORTS_SAVE )
GAME( 1990, hiimpac3, hiimpact, yunit_cvsd_6bit_slow, trog, hiimpact, ROT0, "Williams", "High Impact Football (rev LA3 12/27/90)", GAME_SUPPORTS_SAVE )
GAME( 1990, hiimpacp, hiimpact, yunit_cvsd_6bit_slow, trog, hiimpact, ROT0, "Williams", "High Impact Football (prototype, rev 8.6 12/09/90)", GAME_SUPPORTS_SAVE )
GAME( 1991, shimpact, 0, yunit_cvsd_6bit_slow, trog, shimpact, ROT0, "Midway", "Super High Impact (rev LA1 09/30/91)", GAME_SUPPORTS_SAVE )
GAME( 1991, shimpacp, shimpact, yunit_cvsd_6bit_slow, trog, shimpact, ROT0, "Midway", "Super High Impact (prototype, rev 5.0 09/15/91)", GAME_SUPPORTS_SAVE )
GAME( 1991, shimpap4, shimpact, yunit_cvsd_6bit_slow, trog, shimpact, ROT0, "Midway", "Super High Impact (prototype, rev 4.0 09/10/91)", GAME_SUPPORTS_SAVE ) /* See notes about factory restore above */
GAME( 1991, term2, 0, yunit_adpcm_6bit_fast, term2, term2, ORIENTATION_FLIP_X, "Midway", "Terminator 2 - Judgment Day (rev LA3 03/27/92)", GAME_SUPPORTS_SAVE )
GAME( 1991, term2la2, term2, yunit_adpcm_6bit_fast, term2, term2la2, ORIENTATION_FLIP_X, "Midway", "Terminator 2 - Judgment Day (rev LA2 12/09/91)", GAME_SUPPORTS_SAVE )
GAME( 1991, term2la1, term2, yunit_adpcm_6bit_fast, term2, term2la1, ORIENTATION_FLIP_X, "Midway", "Terminator 2 - Judgment Day (rev LA1 11/01/91)", GAME_SUPPORTS_SAVE )
GAME( 1992, mkprot9, mk, yunit_adpcm_6bit_fast, mkla2, mkyunit, ROT0, "Midway", "Mortal Kombat (prototype, rev 9.0 07/28/92)", GAME_SUPPORTS_SAVE )
GAME( 1992, mkla1, mk, yunit_adpcm_6bit_fast, mkla2, mkyunit, ROT0, "Midway", "Mortal Kombat (rev 1.0 08/09/92)", GAME_SUPPORTS_SAVE )
GAME( 1992, mkla2, mk, yunit_adpcm_6bit_fast, mkla2, mkyunit, ROT0, "Midway", "Mortal Kombat (rev 2.0 08/18/92)", GAME_SUPPORTS_SAVE )
GAME( 1992, mkla3, mk, yunit_adpcm_6bit_fast, mkla4, mkyunit, ROT0, "Midway", "Mortal Kombat (rev 3.0 08/31/92)", GAME_SUPPORTS_SAVE )
GAME( 1992, mkla4, mk, yunit_adpcm_6bit_fast, mkla4, mkyunit, ROT0, "Midway", "Mortal Kombat (rev 4.0 09/28/92)", GAME_SUPPORTS_SAVE )
GAME( 1992, mkyawdim, mk, mkyawdim, mkla4, mkyawdim, ROT0, "Midway", "Mortal Kombat (Yawdim bootleg)", GAME_SUPPORTS_SAVE )
GAME( 1992, totcarn, 0, yunit_adpcm_6bit_fast, totcarn, totcarn, ROT0, "Midway", "Total Carnage (rev LA1 03/10/92)", GAME_SUPPORTS_SAVE )
GAME( 1992, totcarnp, totcarn, yunit_adpcm_6bit_fast, totcarn, totcarn, ROT0, "Midway", "Total Carnage (prototype, rev 1.0 01/25/92)", GAME_SUPPORTS_SAVE )
GAME( 1991, term2, 0, yunit_adpcm_6bit_faster, term2, term2, ORIENTATION_FLIP_X, "Midway", "Terminator 2 - Judgment Day (rev LA3 03/27/92)", GAME_SUPPORTS_SAVE )
GAME( 1991, term2la2, term2, yunit_adpcm_6bit_faster, term2, term2la2, ORIENTATION_FLIP_X, "Midway", "Terminator 2 - Judgment Day (rev LA2 12/09/91)", GAME_SUPPORTS_SAVE )
GAME( 1991, term2la1, term2, yunit_adpcm_6bit_faster, term2, term2la1, ORIENTATION_FLIP_X, "Midway", "Terminator 2 - Judgment Day (rev LA1 11/01/91)", GAME_SUPPORTS_SAVE )
GAME( 1992, mkprot9, mk, yunit_adpcm_6bit_faster, mkla2, mkyunit, ROT0, "Midway", "Mortal Kombat (prototype, rev 9.0 07/28/92)", GAME_SUPPORTS_SAVE )
GAME( 1992, mkla1, mk, yunit_adpcm_6bit_fast, mkla2, mkyunit, ROT0, "Midway", "Mortal Kombat (rev 1.0 08/09/92)", GAME_SUPPORTS_SAVE )
GAME( 1992, mkla2, mk, yunit_adpcm_6bit_fast, mkla2, mkyunit, ROT0, "Midway", "Mortal Kombat (rev 2.0 08/18/92)", GAME_SUPPORTS_SAVE )
GAME( 1992, mkla3, mk, yunit_adpcm_6bit_fast, mkla4, mkyunit, ROT0, "Midway", "Mortal Kombat (rev 3.0 08/31/92)", GAME_SUPPORTS_SAVE )
GAME( 1992, mkla4, mk, yunit_adpcm_6bit_fast, mkla4, mkyunit, ROT0, "Midway", "Mortal Kombat (rev 4.0 09/28/92)", GAME_SUPPORTS_SAVE )
GAME( 1992, mkyawdim, mk, mkyawdim, mkla4, mkyawdim, ROT0, "Midway", "Mortal Kombat (Yawdim bootleg)", GAME_SUPPORTS_SAVE )
GAME( 1992, totcarn, 0, yunit_adpcm_6bit_fast, totcarn, totcarn, ROT0, "Midway", "Total Carnage (rev LA1 03/10/92)", GAME_SUPPORTS_SAVE )
GAME( 1992, totcarnp, totcarn, yunit_adpcm_6bit_fast, totcarn, totcarn, ROT0, "Midway", "Total Carnage (prototype, rev 1.0 01/25/92)", GAME_SUPPORTS_SAVE )

View File

@ -170,8 +170,9 @@ static READ16_HANDLER( term2_input_r )
static WRITE16_HANDLER( term2_sound_w )
{
if (offset == 0)
term2_analog_select = (data >> 0x0c) & 0x03;
term2_analog_select = (data >> 12) & 3;
williams_adpcm_reset_w((~data & 0x100) >> 1);
williams_adpcm_data_w(data);
}
@ -330,6 +331,7 @@ DRIVER_INIT( narc )
}
/*************************************
*
* Y-unit init (CVSD)
@ -563,10 +565,12 @@ WRITE16_HANDLER( midyunit_sound_w )
case SOUND_CVSD_SMALL:
case SOUND_CVSD:
williams_cvsd_reset_w((~data & 0x100) >> 1);
williams_cvsd_data_w((data & 0xff) | ((data & 0x200) >> 1));
break;
case SOUND_ADPCM:
williams_adpcm_reset_w((~data & 0x100) >> 1);
williams_adpcm_data_w(data);
break;