Reorganizing the exidy audio hardware code. Only checking in because of the missing file victory.h

This commit is contained in:
Zsolt Vasvari 2008-01-13 09:54:58 +00:00
parent 41c8fd0d37
commit 679ddd69b8
13 changed files with 751 additions and 708 deletions

3
.gitattributes vendored
View File

@ -1022,7 +1022,6 @@ src/mame/audio/atarijsa.h svneol=native#text/plain
src/mame/audio/attckufo.c svneol=native#text/plain
src/mame/audio/avalnche.c svneol=native#text/plain
src/mame/audio/aztarac.c svneol=native#text/plain
src/mame/audio/berzerk.c svneol=native#text/plain
src/mame/audio/blockade.c svneol=native#text/plain
src/mame/audio/bsktball.c svneol=native#text/plain
src/mame/audio/bzone.c svneol=native#text/plain
@ -2275,6 +2274,7 @@ src/mame/includes/taito_f2.h svneol=native#text/plain
src/mame/includes/taito_f3.h svneol=native#text/plain
src/mame/includes/taitoipt.h svneol=native#text/plain
src/mame/includes/tank8.h svneol=native#text/plain
src/mame/includes/targ.h svneol=native#text/plain
src/mame/includes/tatsumi.h svneol=native#text/plain
src/mame/includes/taxidrvr.h svneol=native#text/plain
src/mame/includes/thedeep.h svneol=native#text/plain
@ -2292,6 +2292,7 @@ src/mame/includes/ultratnk.h svneol=native#text/plain
src/mame/includes/unico.h svneol=native#text/plain
src/mame/includes/vertigo.h svneol=native#text/plain
src/mame/includes/vicdual.h svneol=native#text/plain
src/mame/includes/victory.h svneol=native#text/plain
src/mame/includes/videopin.h svneol=native#text/plain
src/mame/includes/vindictr.h svneol=native#text/plain
src/mame/includes/warpwarp.h svneol=native#text/plain

View File

@ -1,148 +0,0 @@
/*
* Berzerk/Frenzy Soundhardware Driver
* Copyright Alex Judd 1997/98
* V1.1 for Mame 0.31 13March98
*
*/
#include "driver.h"
#include "berzerk.h"
#include "exidy.h"
#include "sound/s14001a.h"
#define BERZERK_AUDIO_DEBUG (0)
static const struct S14001A_interface berzerk_s14001a_interface =
{
REGION_SOUND1 /* voice data region */
};
static const struct CustomSound_interface custom_interface =
{
berzerk_sh_start,
0,
berzerk_sh_reset,
};
MACHINE_DRIVER_START( berzerk_audio )
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD(S14001A, BERZERK_S14001A_CLOCK) /* CPU clock divided by 16 divided by a programmable TTL setup */
MDRV_SOUND_CONFIG(berzerk_s14001a_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MDRV_SOUND_ADD(CUSTOM, 0)
MDRV_SOUND_CONFIG(custom_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_DRIVER_END
#if BERZERK_AUDIO_DEBUG
static void berzerk_audio_debug(UINT8 data)
{
mame_printf_debug("not busy, triggering S14001A core with %x\n", data);
mame_printf_debug("S14001a word play command: ");
switch (data)
{
case 0: mame_printf_debug("help\n"); break;
case 1: mame_printf_debug("kill\n"); break;
case 2: mame_printf_debug("attack\n"); break;
case 3: mame_printf_debug("charge\n"); break;
case 4: mame_printf_debug("got\n"); break;
case 5: mame_printf_debug("shoot\n"); break;
case 6: mame_printf_debug("get\n"); break;
case 7: mame_printf_debug("is\n"); break;
case 8: mame_printf_debug("alert\n"); break;
case 9: mame_printf_debug("detected\n"); break;
case 10: mame_printf_debug("the\n"); break;
case 11: mame_printf_debug("in\n"); break;
case 12: mame_printf_debug("it\n"); break;
case 13: mame_printf_debug("there\n"); break;
case 14: mame_printf_debug("where\n"); break;
case 15: mame_printf_debug("humanoid\n"); break;
case 16: mame_printf_debug("coins\n"); break;
case 17: mame_printf_debug("pocket\n"); break;
case 18: mame_printf_debug("intruder\n"); break;
case 19: mame_printf_debug("no\n"); break;
case 20: mame_printf_debug("escape\n"); break;
case 21: mame_printf_debug("destroy\n"); break;
case 22: mame_printf_debug("must\n"); break;
case 23: mame_printf_debug("not\n"); break;
case 24: mame_printf_debug("chicken\n"); break;
case 25: mame_printf_debug("fight\n"); break;
case 26: mame_printf_debug("like\n"); break;
case 27: mame_printf_debug("a\n"); break;
case 28: mame_printf_debug("robot\n"); break;
default: mame_printf_debug("ERROR: data %2x; you should NOT see this!\n", data); break;
}
}
#endif
WRITE8_HANDLER( berzerk_audio_w )
{
switch (offset)
{
/* offsets 0-3, 5 and 7 write to the 6840 */
case 0:
case 1:
case 2:
case 3:
case 5:
case 7:
exidy_sh6840_w(offset, data);
break;
/* offset 6 writes to the sfxcontrol latch */
case 6:
exidy_sfxctrl_w(data >> 6, data);
break;
/* offset 4 writes to the S14001A */
case 4:
if ((data & 0xc0) == 0x40) /* VSU-1000 control write */
{
/* volume and frequency control goes here */
/* mame_printf_debug("TODO: VSU-1000 Control write (ignored for now)\n");*/
S14001A_set_volume(((data&0x38)>>3)+1);
S14001A_set_rate((16-(data&0x07))*16); /* second LS161 has load triggered by its own TC(when it equals 16) long before the first ls161 will TC and fire again, so effectively it only divides by 15 and not 16. If the clock, as opposed to the E enable, had been tied to the first LS161's TC instead, it would divide by 16 as expected */
}
else if ((data & 0xc0) != 0x00)
{
/* vsu-1000 ignores these writes entirely */
mame_printf_debug("bogus write ignored\n");
}
else
{
/* select word input */
if (S14001A_bsy_0_r()) /* skip if busy... */
{
mame_printf_debug("S14001A busy, ignoring write\n");
break;
}
/* write to the register */
S14001A_reg_0_w(data & 0x3f);
S14001A_rst_0_w(1);
S14001A_rst_0_w(0);
#if BERZERK_AUDIO_DEBUG
berzerk_audio_debug(data);
#endif
}
break;
}
}
READ8_HANDLER( berzerk_audio_r )
{
return ((offset == 4) && !S14001A_bsy_0_r()) ? 0x40 : 0x00;
}

View File

@ -5,13 +5,15 @@
*************************************************************************/
#include "driver.h"
#include "rescap.h"
#include "streams.h"
#include "cpu/m6502/m6502.h"
#include "machine/6821pia.h"
#include "sound/hc55516.h"
#include "sound/5220intf.h"
#include "sound/discrete.h"
#include "exidy.h"
#include "sound/s14001a.h"
#include "sound/custom.h"
#include "berzerk.h"
@ -21,12 +23,12 @@
*
*************************************/
#define CRYSTAL_OSC (XTAL_3_579545MHz)
#define SH8253_CLOCK (CRYSTAL_OSC/2)
#define SH6840_CLOCK (CRYSTAL_OSC/4)
#define SH6532_CLOCK (CRYSTAL_OSC/4)
#define CVSD_CLOCK_FREQ (1.0 / (0.693 * (RES_K(2.4) + 2.0 * RES_K(20)) * CAP_P(2200)))
#define BASE_VOLUME (32767 / 6)
#define CRYSTAL_OSC (XTAL_3_579545MHz)
#define SH8253_CLOCK (CRYSTAL_OSC/2)
#define SH6840_CLOCK (CRYSTAL_OSC/4)
#define SH6532_CLOCK (CRYSTAL_OSC/4)
#define CVSD_CLOCK_FREQ (1.0 / (0.693 * (RES_K(2.4) + 2.0 * RES_K(20)) * CAP_P(2200)))
#define BASE_VOLUME (32767 / 6)
enum
{
@ -88,7 +90,6 @@ static UINT32 sh6840_clocks_per_sample;
static UINT32 sh6840_clock_count;
static UINT8 exidy_sfxctrl;
static UINT8 victory_sound_response_ack_clk; /* 7474 @ F4 */
/* 8253 variables */
struct sh8253_timer_channel
@ -120,9 +121,6 @@ static double freq_to_step;
static void update_irq_state(int);
static WRITE8_HANDLER( victory_sound_irq_clear_w );
static WRITE8_HANDLER( victory_main_ack_w );
/* PIA 0 */
static const pia6821_interface pia_0_intf =
@ -140,14 +138,6 @@ static const pia6821_interface pia_1_intf =
/*irqs : A/B */ 0, update_irq_state
};
/* Victory PIA 0 */
static const pia6821_interface victory_pia_1_intf =
{
/*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
/*outputs: A/B,CA/B2 */ 0, 0, victory_sound_irq_clear_w, victory_main_ack_w,
/*irqs : A/B */ 0, update_irq_state
};
/*************************************
@ -376,71 +366,6 @@ static void exidy_stream_update(void *param, stream_sample_t **inputs, stream_sa
/*************************************
*
* Extra logic for Victory
*
*************************************/
#define VICTORY_LOG_SOUND 0
READ8_HANDLER( victory_sound_response_r )
{
UINT8 ret = pia_get_output_b(1);
if (VICTORY_LOG_SOUND) logerror("%04X:!!!! Sound response read = %02X\n", activecpu_get_previouspc(), ret);
pia_set_input_cb1(1, 0);
return ret;
}
READ8_HANDLER( victory_sound_status_r )
{
UINT8 ret = (pia_get_input_ca1(1) << 7) | (pia_get_input_cb1(1) << 6);
if (VICTORY_LOG_SOUND) logerror("%04X:!!!! Sound status read = %02X\n", activecpu_get_previouspc(), ret);
return ret;
}
static TIMER_CALLBACK( delayed_command_w )
{
pia_set_input_a(1, param, 0);
pia_set_input_ca1(1, 0);
}
WRITE8_HANDLER( victory_sound_command_w )
{
if (VICTORY_LOG_SOUND) logerror("%04X:!!!! Sound command = %02X\n", activecpu_get_previouspc(), data);
timer_call_after_resynch(NULL, data, delayed_command_w);
}
WRITE8_HANDLER( victory_sound_irq_clear_w )
{
if (VICTORY_LOG_SOUND) logerror("%04X:!!!! Sound IRQ clear = %02X\n", activecpu_get_previouspc(), data);
if (!data) pia_set_input_ca1(1, 1);
}
static WRITE8_HANDLER( victory_main_ack_w )
{
if (VICTORY_LOG_SOUND) logerror("%04X:!!!! Sound Main ACK W = %02X\n", activecpu_get_previouspc(), data);
if (victory_sound_response_ack_clk && !data)
pia_set_input_cb1(1, 1);
victory_sound_response_ack_clk = data;
}
/*************************************
*
* Sound startup routines
@ -449,7 +374,7 @@ static WRITE8_HANDLER( victory_main_ack_w )
static TIMER_CALLBACK( riot_interrupt );
static void *common_start(void)
static void *common_sh_start(void)
{
int sample_rate = SH8253_CLOCK;
int i;
@ -486,23 +411,7 @@ void *exidy_sh_start(int clock, const struct CustomSound_interface *config)
pia_config(0, &pia_0_intf);
pia_config(1, &pia_1_intf);
has_sh8253 = TRUE;
return common_start();
}
void *victory_sh_start(int clock, const struct CustomSound_interface *config)
{
pia_config(1, &victory_pia_1_intf);
has_sh8253 = TRUE;
return common_start();
}
void *berzerk_sh_start(int clock, const struct CustomSound_interface *config)
{
has_sh8253 = FALSE;
return common_start();
return common_sh_start();
}
@ -513,7 +422,7 @@ void *berzerk_sh_start(int clock, const struct CustomSound_interface *config)
*
*************************************/
static void common_reset(void)
static void common_sh_reset(void)
{
/* PIA */
pia_reset();
@ -548,28 +457,7 @@ static void common_reset(void)
void exidy_sh_reset(void *token)
{
common_reset();
}
void victory_sh_reset(void *token)
{
common_reset();
/* the flip-flop @ F4 is reset */
victory_sound_response_ack_clk = 0;
pia_set_input_cb1(1, 1);
/* these two lines shouldn't be needed, but it avoids the log entry
as the sound CPU checks port A before the main CPU ever writes to it */
pia_set_input_a(1, 0, 0);
pia_set_input_ca1(1, 1);
}
void berzerk_sh_reset(void *token)
{
common_reset();
common_sh_reset();
}
@ -913,12 +801,13 @@ WRITE8_HANDLER( exidy_sound_filter_w )
WRITE8_HANDLER( mtrap_voiceio_w )
{
if (!(offset & 0x10))
{
hc55516_digit_clock_clear_w(0,data);
hc55516_clock_set_w(0,data);
if (!(offset & 0x10))
{
hc55516_digit_clock_clear_w(0,data);
hc55516_clock_set_w(0,data);
}
if (!(offset & 0x20))
if (!(offset & 0x20))
riot_portb_data = data & 1;
}
@ -927,16 +816,271 @@ READ8_HANDLER( mtrap_voiceio_r )
{
if (!(offset & 0x80))
{
int data = (riot_porta_data & 0x06) >> 1;
data |= (riot_porta_data & 0x01) << 2;
data |= (riot_porta_data & 0x08);
return data;
int data = (riot_porta_data & 0x06) >> 1;
data |= (riot_porta_data & 0x01) << 2;
data |= (riot_porta_data & 0x08);
return data;
}
if (!(offset & 0x40))
{
attotime curtime = timer_get_time();
int clock_pulse = curtime.attoseconds / HZ_TO_ATTOSECONDS(2 * CVSD_CLOCK_FREQ);
return (clock_pulse & 1) << 7;
if (!(offset & 0x40))
{
attotime curtime = timer_get_time();
int clock_pulse = curtime.attoseconds / HZ_TO_ATTOSECONDS(2 * CVSD_CLOCK_FREQ);
return (clock_pulse & 1) << 7;
}
return 0;
}
/*************************************
*
* Victory
*
*************************************/
#define VICTORY_AUDIO_CPU_CLOCK (XTAL_3_579545MHz / 4)
#define VICTORY_LOG_SOUND 0
static UINT8 victory_sound_response_ack_clk; /* 7474 @ F4 */
READ8_HANDLER( victory_sound_response_r )
{
UINT8 ret = pia_get_output_b(1);
if (VICTORY_LOG_SOUND) logerror("%04X:!!!! Sound response read = %02X\n", activecpu_get_previouspc(), ret);
pia_set_input_cb1(1, 0);
return ret;
}
READ8_HANDLER( victory_sound_status_r )
{
UINT8 ret = (pia_get_input_ca1(1) << 7) | (pia_get_input_cb1(1) << 6);
if (VICTORY_LOG_SOUND) logerror("%04X:!!!! Sound status read = %02X\n", activecpu_get_previouspc(), ret);
return ret;
}
static TIMER_CALLBACK( delayed_command_w )
{
pia_set_input_a(1, param, 0);
pia_set_input_ca1(1, 0);
}
WRITE8_HANDLER( victory_sound_command_w )
{
if (VICTORY_LOG_SOUND) logerror("%04X:!!!! Sound command = %02X\n", activecpu_get_previouspc(), data);
timer_call_after_resynch(NULL, data, delayed_command_w);
}
static WRITE8_HANDLER( victory_sound_irq_clear_w )
{
if (VICTORY_LOG_SOUND) logerror("%04X:!!!! Sound IRQ clear = %02X\n", activecpu_get_previouspc(), data);
if (!data) pia_set_input_ca1(1, 1);
}
static WRITE8_HANDLER( victory_main_ack_w )
{
if (VICTORY_LOG_SOUND) logerror("%04X:!!!! Sound Main ACK W = %02X\n", activecpu_get_previouspc(), data);
if (victory_sound_response_ack_clk && !data)
pia_set_input_cb1(1, 1);
victory_sound_response_ack_clk = data;
}
static ADDRESS_MAP_START( victory_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x0f00) AM_RAM
AM_RANGE(0x1000, 0x107f) AM_MIRROR(0x0f80) AM_READWRITE(exidy_shriot_r, exidy_shriot_w)
AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x0ffc) AM_READWRITE(pia_1_r, pia_1_w)
AM_RANGE(0x3000, 0x3003) AM_MIRROR(0x0ffc) AM_READWRITE(exidy_sh8253_r, exidy_sh8253_w)
AM_RANGE(0x4000, 0x4fff) AM_NOP
AM_RANGE(0x5000, 0x5007) AM_MIRROR(0x0ff8) AM_READWRITE(exidy_sh6840_r, exidy_sh6840_w)
AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x0ffc) AM_WRITE(exidy_sfxctrl_w)
AM_RANGE(0x7000, 0xafff) AM_NOP
AM_RANGE(0xb000, 0xffff) AM_ROM
ADDRESS_MAP_END
static const pia6821_interface victory_pia_e5_intf =
{
/*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
/*outputs: A/B,CA/B2 */ 0, 0, victory_sound_irq_clear_w, victory_main_ack_w,
/*irqs : A/B */ 0, update_irq_state
};
static void *victory_sh_start(int clock, const struct CustomSound_interface *config)
{
pia_config(1, &victory_pia_e5_intf);
has_sh8253 = TRUE;
state_save_register_global(victory_sound_response_ack_clk);
return common_sh_start();
}
static void victory_sh_reset(void *token)
{
common_sh_reset();
/* the flip-flop @ F4 is reset */
victory_sound_response_ack_clk = 0;
pia_set_input_cb1(1, 1);
/* these two lines shouldn't be needed, but it avoids the log entry
as the sound CPU checks port A before the main CPU ever writes to it */
pia_set_input_a(1, 0, 0);
pia_set_input_ca1(1, 1);
}
static const struct CustomSound_interface victory_custom_interface =
{
victory_sh_start,
0,
victory_sh_reset,
};
MACHINE_DRIVER_START( victory_audio )
MDRV_CPU_ADD(M6502, VICTORY_AUDIO_CPU_CLOCK)
MDRV_CPU_PROGRAM_MAP(victory_audio_map,0)
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD(CUSTOM, 0)
MDRV_SOUND_CONFIG(victory_custom_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MDRV_SOUND_ADD(TMS5220, 640000)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_DRIVER_END
/*************************************
*
* Berzerk
*
* Copyright Alex Judd 1997/98
* V1.1 for Mame 0.31 13March98
*
*************************************/
#define BERZERK_S14001A_CLOCK (BERZERK_MASTER_CLOCK / 2)
static void *berzerk_sh_start(int clock, const struct CustomSound_interface *config)
{
has_sh8253 = FALSE;
return common_sh_start();
}
static void berzerk_sh_reset(void *token)
{
common_sh_reset();
}
static const struct S14001A_interface berzerk_s14001a_interface =
{
REGION_SOUND1 /* voice data region */
};
static const struct CustomSound_interface berzerk_custom_interface =
{
berzerk_sh_start,
0,
berzerk_sh_reset,
};
MACHINE_DRIVER_START( berzerk_audio )
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD(S14001A, BERZERK_S14001A_CLOCK) /* CPU clock divided by 16 divided by a programmable TTL setup */
MDRV_SOUND_CONFIG(berzerk_s14001a_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MDRV_SOUND_ADD(CUSTOM, 0)
MDRV_SOUND_CONFIG(berzerk_custom_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_DRIVER_END
WRITE8_HANDLER( berzerk_audio_w )
{
switch (offset)
{
/* offsets 0-3, 5 and 7 write to the 6840 */
case 0:
case 1:
case 2:
case 3:
case 5:
case 7:
exidy_sh6840_w(offset, data);
break;
/* offset 6 writes to the sfxcontrol latch */
case 6:
exidy_sfxctrl_w(data >> 6, data);
break;
/* offset 4 writes to the S14001A */
case 4:
if ((data & 0xc0) == 0x40) /* VSU-1000 control write */
{
/* volume and frequency control goes here */
/* mame_printf_debug("TODO: VSU-1000 Control write (ignored for now)\n");*/
S14001A_set_volume(((data&0x38)>>3)+1);
S14001A_set_rate((16-(data&0x07))*16); /* second LS161 has load triggered by its own TC(when it equals 16) long before the first ls161 will TC and fire again, so effectively it only divides by 15 and not 16. If the clock, as opposed to the E enable, had been tied to the first LS161's TC instead, it would divide by 16 as expected */
}
else if ((data & 0xc0) != 0x00)
{
/* vsu-1000 ignores these writes entirely */
mame_printf_debug("bogus write ignored\n");
}
else
{
/* select word input */
if (S14001A_bsy_0_r()) /* skip if busy... */
{
mame_printf_debug("S14001A busy, ignoring write\n");
break;
}
/* write to the register */
S14001A_reg_0_w(data & 0x3f);
S14001A_rst_0_w(1);
S14001A_rst_0_w(0);
}
break;
}
}
READ8_HANDLER( berzerk_audio_r )
{
return ((offset == 4) && !S14001A_bsy_0_r()) ? 0x40 : 0x00;
}

View File

@ -1,6 +1,6 @@
/*************************************************************************
Exidy 6502 hardware
Targ hardware
*************************************************************************/
@ -12,150 +12,205 @@
*/
#include "driver.h"
#include "exidy.h"
#include "sound/samples.h"
#include "sound/dac.h"
#include "targ.h"
UINT8 targ_spec_flag;
static UINT8 targ_sh_ctrl0=0;
static UINT8 targ_sh_ctrl1=0;
#define SPECTAR_MAXFREQ 525000
#define TARG_MAXFREQ 125000
static int max_freq;
static UINT8 port_1_last;
static UINT8 port_2_last;
static UINT8 tone_freq;
static UINT8 tone_active;
#define MAXFREQ_A_TARG 125000
#define MAXFREQ_A_SPECTAR 525000
static int sound_a_freq;
static UINT8 tone_pointer;
static UINT8 tone_offset;
static const UINT8 tone_prom[32] =
static const INT16 sine_wave[32] =
{
0xE5,0xE5,0xED,0xED,0xE5,0xE5,0xED,0xED,0xE7,0xE7,0xEF,0xEF,0xE7,0xE7,0xEF,0xEF,
0xC1,0xE1,0xC9,0xE9,0xC5,0xE5,0xCD,0xED,0xC3,0xE3,0xCB,0xEB,0xC7,0xE7,0xCF,0xEF
0x0f0f, 0x0f0f, 0x0f0f, 0x0606, 0x0606, 0x0909, 0x0909, 0x0606, 0x0606, 0x0909, 0x0606, 0x0d0d, 0x0f0f, 0x0f0f, 0x0d0d, 0x0000,
-0x191a, -0x2122, -0x1e1f, -0x191a, -0x1314, -0x191a, -0x1819, -0x1819, -0x1819, -0x1314, -0x1314, -0x1314, -0x1819, -0x1e1f, -0x1e1f, -0x1819
};
/* waveforms for the audio hardware */
static const INT16 waveform1[32] =
{
/* sine-wave */
0x0F0F, 0x0F0F, 0x0F0F, 0x0606, 0x0606, 0x0909, 0x0909, 0x0606, 0x0606, 0x0909, 0x0606, 0x0D0D, 0x0F0F, 0x0F0F, 0x0D0D, 0x0000,
-0x191A, -0x2122, -0x1E1F, -0x191A, -0x1314, -0x191A, -0x1819, -0x1819, -0x1819, -0x1314, -0x1314, -0x1314, -0x1819, -0x1E1F, -0x1E1F, -0x1819
};
/* some macros to make detecting bit changes easier */
#define RISING_EDGE(bit) ((data & bit) && !(targ_sh_ctrl0 & bit))
#define FALLING_EDGE(bit) (!(data & bit) && (targ_sh_ctrl0 & bit))
#define RISING_EDGE(bit) ( (data & bit) && !(port_1_last & bit))
#define FALLING_EDGE(bit) (!(data & bit) && (port_1_last & bit))
static void targ_tone_generator(int data)
static void adjust_sample(UINT8 freq)
{
int maxfreq;
tone_freq = freq;
if (targ_spec_flag) maxfreq = MAXFREQ_A_TARG;
else maxfreq = MAXFREQ_A_SPECTAR;
sound_a_freq = data;
if (sound_a_freq == 0xFF || sound_a_freq == 0x00)
if ((tone_freq == 0xff) || (tone_freq == 0x00))
sample_set_volume(3, 0);
else
{
sample_set_volume(3,0);
}
else
{
sample_set_freq(3,maxfreq/(0xFF-sound_a_freq));
sample_set_volume(3,tone_active*1.0);
sample_set_freq(3, 1.0 * max_freq / (0xff - tone_freq));
sample_set_volume(3, tone_active);
}
}
void targ_sh_start(void)
WRITE8_HANDLER( targ_audio_1_w )
{
tone_pointer=0;
tone_offset=0;
tone_active=0;
sound_a_freq = 0x00;
sample_set_volume(3,0);
sample_start_raw(3,waveform1,32,1000,1);
/* CPU music */
if ((data & 0x01) != (port_1_last & 0x01))
DAC_data_w(0,(data & 0x01) * 0xff);
/* shot */
if (FALLING_EDGE(0x02) && !sample_playing(0)) sample_start(0,1,0);
if (RISING_EDGE(0x02)) sample_stop(0);
/* crash */
if (RISING_EDGE(0x20))
{
if (data & 0x40)
sample_start(1,2,0);
else
sample_start(1,0,0);
}
/* Sspec */
if (data & 0x10)
sample_stop(2);
else
{
if ((data & 0x08) != (port_1_last & 0x08))
{
if (data & 0x08)
sample_start(2,3,1);
else
sample_start(2,4,1);
}
}
/* Game (tone generator enable) */
if (FALLING_EDGE(0x80))
{
tone_pointer = 0;
tone_active = 0;
adjust_sample(tone_freq);
}
if (RISING_EDGE(0x80))
tone_active=1;
port_1_last = data;
}
WRITE8_HANDLER( targ_sh_w )
WRITE8_HANDLER( targ_audio_2_w )
{
int maxfreq;
if ((data & 0x01) && !(port_2_last & 0x01))
{
UINT8 *prom = memory_region(TARG_TONE_REGION);
tone_pointer = (tone_pointer + 1) & 0x0f;
if (targ_spec_flag) maxfreq = MAXFREQ_A_TARG;
else maxfreq = MAXFREQ_A_SPECTAR;
adjust_sample(prom[((data & 0x02) << 3) | tone_pointer]);
}
if (offset) {
if (targ_spec_flag) {
if (data & 0x02)
tone_offset=16;
else
tone_offset=0;
if ((data & 0x01) && !(targ_sh_ctrl1 & 0x01)) {
tone_pointer++;
if (tone_pointer > 15) tone_pointer = 0;
targ_tone_generator(tone_prom[tone_pointer+tone_offset]);
}
}
else {
targ_tone_generator(data);
}
targ_sh_ctrl1=data;
}
else
{
/* cpu music */
if ((data & 0x01) != (targ_sh_ctrl0 & 0x01)) {
DAC_data_w(0,(data & 0x01) * 0xFF);
}
/* Shoot */
if FALLING_EDGE(0x02) {
if (!sample_playing(0)) sample_start(0,1,0);
}
if RISING_EDGE(0x02) {
sample_stop(0);
}
/* Crash */
if RISING_EDGE(0x20) {
if (data & 0x40) {
sample_start(1,2,0); }
else {
sample_start(1,0,0); }
}
/* Sspec */
if (data & 0x10) {
sample_stop(2);
}
else {
if ((data & 0x08) != (targ_sh_ctrl0 & 0x08)) {
if (data & 0x08) {
sample_start(2,3,1); }
else {
sample_start(2,4,1); }
}
}
/* Game (tone generator enable) */
if FALLING_EDGE(0x80) {
tone_pointer=0;
tone_active=0;
if (sound_a_freq == 0xFF || sound_a_freq == 0x00)
{
sample_set_volume(3,0);
}
else
{
sample_set_freq(3,maxfreq/(0xFF-sound_a_freq));
sample_set_volume(3,0);
}
}
if RISING_EDGE(0x80) {
tone_active=1;
}
targ_sh_ctrl0 = data;
}
port_2_last = data;
}
WRITE8_HANDLER( spectar_audio_2_w )
{
adjust_sample(data);
}
static const char *const sample_names[] =
{
"*targ",
"expl.wav",
"shot.wav",
"sexpl.wav",
"spslow.wav",
"spfast.wav",
0
};
static void common_audio_start(int freq)
{
max_freq = freq;
tone_freq = 0;
tone_active = 0;
sample_set_volume(3, 0);
sample_start_raw(3, sine_wave, 32, 1000, 1);
state_save_register_global(port_1_last);
state_save_register_global(port_2_last);
state_save_register_global(tone_freq);
state_save_register_global(tone_active);
}
static void spectar_audio_start(void)
{
common_audio_start(SPECTAR_MAXFREQ);
}
static void targ_audio_start(void)
{
common_audio_start(TARG_MAXFREQ);
tone_pointer = 0;
state_save_register_global(tone_pointer);
}
static const struct Samplesinterface spectar_samples_interface =
{
4, /* number of channel */
sample_names,
spectar_audio_start
};
static const struct Samplesinterface targ_samples_interface =
{
4, /* number of channel */
sample_names,
targ_audio_start
};
MACHINE_DRIVER_START( spectar_audio )
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD(SAMPLES, 0)
MDRV_SOUND_CONFIG(spectar_samples_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MDRV_SOUND_ADD(DAC, 0)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_DRIVER_END
MACHINE_DRIVER_START( targ_audio )
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD(SAMPLES, 0)
MDRV_SOUND_CONFIG(targ_samples_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MDRV_SOUND_ADD(DAC, 0)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_DRIVER_END

View File

@ -10,6 +10,7 @@
#include "driver.h"
#include "berzerk.h"
#include "exidy.h"
#include "machine/74181.h"
#include "video/resnet.h"

View File

@ -126,8 +126,9 @@
***************************************************************************/
#include "driver.h"
#include "machine/6821pia.h"
#include "exidy.h"
#include "targ.h"
#include "machine/6821pia.h"
#include "sound/custom.h"
#include "sound/samples.h"
#include "sound/hc55516.h"
@ -215,7 +216,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sidetrac_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0800, 0x3fff) AM_ROM
AM_RANGE(0x4800, 0x4fff) AM_ROM AM_BASE(&exidy_characterram)
AM_RANGE(0x5200, 0x5201) AM_WRITE(targ_sh_w)
AM_RANGE(0x5200, 0x5200) AM_WRITE(targ_audio_1_w)
AM_RANGE(0x5201, 0x5201) AM_WRITE(spectar_audio_2_w)
AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION(REGION_CPU1, 0x3f00)
ADDRESS_MAP_END
@ -223,7 +225,17 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( targ_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0800, 0x3fff) AM_ROM
AM_RANGE(0x4800, 0x4fff) AM_RAM AM_BASE(&exidy_characterram)
AM_RANGE(0x5200, 0x5201) AM_WRITE(targ_sh_w)
AM_RANGE(0x5200, 0x5200) AM_WRITE(targ_audio_1_w)
AM_RANGE(0x5201, 0x5201) AM_WRITE(targ_audio_2_w)
AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION(REGION_CPU1, 0x3f00)
ADDRESS_MAP_END
static ADDRESS_MAP_START( spectar_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0800, 0x3fff) AM_ROM
AM_RANGE(0x4800, 0x4fff) AM_RAM AM_BASE(&exidy_characterram)
AM_RANGE(0x5200, 0x5200) AM_WRITE(targ_audio_1_w)
AM_RANGE(0x5201, 0x5201) AM_WRITE(spectar_audio_2_w)
AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION(REGION_CPU1, 0x3f00)
ADDRESS_MAP_END
@ -240,7 +252,8 @@ static ADDRESS_MAP_START( rallys_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x5101, 0x5101) AM_MIRROR(0x00fc) AM_READ_PORT("IN0")
AM_RANGE(0x5101, 0x5101) AM_MIRROR(0x00fc) AM_WRITE(MWA8_RAM) AM_BASE(&exidy_sprite_enable)
AM_RANGE(0x5103, 0x5103) AM_MIRROR(0x00fc) AM_READ(exidy_interrupt_r)
AM_RANGE(0x5200, 0x5201) AM_WRITE(targ_sh_w)
AM_RANGE(0x5200, 0x5200) AM_WRITE(targ_audio_1_w)
AM_RANGE(0x5201, 0x5201) AM_WRITE(spectar_audio_2_w)
AM_RANGE(0x5210, 0x5212) AM_WRITE(MWA8_RAM) AM_BASE(&exidy_color_latch)
AM_RANGE(0x5213, 0x5213) AM_READ_PORT("IN2")
AM_RANGE(0x5300, 0x5300) AM_WRITE(MWA8_RAM) AM_BASE(&exidy_sprite2_xpos)
@ -271,7 +284,7 @@ static ADDRESS_MAP_START( fax_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x2000, 0x2000) AM_WRITE(fax_bank_select_w)
AM_RANGE(0x2000, 0x3fff) AM_ROMBANK(1)
AM_RANGE(0x5200, 0x520f) AM_READWRITE(pia_0_r, pia_0_w)
AM_RANGE(0x5213, 0x5217) AM_WRITE(MWA8_NOP) /* empty control lines on color/sound board */
AM_RANGE(0x5213, 0x5217) AM_WRITE(MWA8_NOP) /* empty control lines on color/sound board */
AM_RANGE(0x6000, 0x6fff) AM_RAM AM_BASE(&exidy_characterram)
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@ -800,26 +813,6 @@ GFXDECODE_END
*
*************************************/
static const char *const targ_sample_names[] =
{
"*targ",
"expl.wav",
"shot.wav",
"sexpl.wav",
"spslow.wav",
"spfast.wav",
0
};
static const struct Samplesinterface targ_samples_interface =
{
4, /* 3 Channels */
targ_sample_names,
targ_sh_start
};
static const struct CustomSound_interface exidy_custom_interface =
{
exidy_sh_start,
@ -835,48 +828,65 @@ static const struct CustomSound_interface exidy_custom_interface =
*
*************************************/
static MACHINE_DRIVER_START( sidetrac )
static MACHINE_DRIVER_START( base )
/* basic machine hardware */
MDRV_CPU_ADD_TAG("main", M6502, EXIDY_CPU_CLOCK)
MDRV_CPU_PROGRAM_MAP(exidy_map,sidetrac_map)
MDRV_CPU_VBLANK_INT(exidy_vblank_interrupt,1)
/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_ALWAYS_UPDATE)
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_RAW_PARAMS(EXIDY_PIXEL_CLOCK, EXIDY_HTOTAL, EXIDY_HBEND, EXIDY_HBSTART, EXIDY_VTOTAL, EXIDY_VBEND, EXIDY_VBSTART)
MDRV_VIDEO_START(exidy)
MDRV_VIDEO_UPDATE(exidy)
MDRV_GFXDECODE(exidy)
MDRV_PALETTE_LENGTH(8)
MDRV_VIDEO_START(exidy)
MDRV_VIDEO_UPDATE(exidy)
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_RAW_PARAMS(EXIDY_PIXEL_CLOCK, EXIDY_HTOTAL, EXIDY_HBEND, EXIDY_HBSTART, EXIDY_VTOTAL, EXIDY_VBEND, EXIDY_VBSTART)
/* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
MACHINE_DRIVER_END
MDRV_SOUND_ADD_TAG("sample", SAMPLES, 0)
MDRV_SOUND_CONFIG(targ_samples_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MDRV_SOUND_ADD_TAG("dac", DAC, 0)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
static MACHINE_DRIVER_START( sidetrac )
/* basic machine hardware */
MDRV_IMPORT_FROM(base)
MDRV_CPU_MODIFY("main")
MDRV_CPU_PROGRAM_MAP(exidy_map,sidetrac_map)
/* audio hardware */
MDRV_IMPORT_FROM(spectar_audio)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( targ )
/* basic machine hardware */
MDRV_IMPORT_FROM(sidetrac)
MDRV_IMPORT_FROM(base)
MDRV_CPU_MODIFY("main")
MDRV_CPU_PROGRAM_MAP(exidy_map,targ_map)
/* audio hardware */
MDRV_IMPORT_FROM(targ_audio)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( spectar )
/* basic machine hardware */
MDRV_IMPORT_FROM(base)
MDRV_CPU_MODIFY("main")
MDRV_CPU_PROGRAM_MAP(exidy_map,spectar_map)
/* audio hardware */
MDRV_IMPORT_FROM(spectar_audio)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( rallys )
/* basic machine hardware */
MDRV_IMPORT_FROM(sidetrac)
MDRV_IMPORT_FROM(spectar)
MDRV_CPU_MODIFY("main")
MDRV_CPU_PROGRAM_MAP(rallys_map,0)
MACHINE_DRIVER_END
@ -885,7 +895,7 @@ MACHINE_DRIVER_END
static MACHINE_DRIVER_START( venture )
/* basic machine hardware */
MDRV_IMPORT_FROM(targ)
MDRV_IMPORT_FROM(base)
MDRV_CPU_MODIFY("main")
MDRV_CPU_PROGRAM_MAP(exidy_map,venture_map)
@ -895,12 +905,12 @@ static MACHINE_DRIVER_START( venture )
MDRV_INTERLEAVE(10)
/* sound hardware */
MDRV_SOUND_REPLACE("sample", CUSTOM, 0)
/* audio hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD(CUSTOM, 0)
MDRV_SOUND_CONFIG(exidy_custom_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MDRV_SOUND_REMOVE("dac")
MACHINE_DRIVER_END
@ -957,13 +967,13 @@ MACHINE_DRIVER_END
ROM_START( sidetrac )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "stl8a-1", 0x2800, 0x0800, CRC(e41750ff) SHA1(3868a0d7e34a5118b39b31cff9e4fc839df541ff) )
ROM_LOAD( "stl7a-2", 0x3000, 0x0800, CRC(57fb28dc) SHA1(6addd633d655d6a56b3e509d18e5f7c0ab2d0fbb) )
ROM_LOAD( "stl6a-2", 0x3800, 0x0800, CRC(4226d469) SHA1(fd18b732b66082988b01e04adc2b1e5dae410c98) )
ROM_LOAD( "stl9c-1", 0x4800, 0x0400, CRC(08710a84) SHA1(4bff254a14af7c968656ccc85277d31ab5a8f0c4) ) /* PROM instead of RAM char generator */
ROM_LOAD( "stl8a-1", 0x2800, 0x0800, CRC(e41750ff) SHA1(3868a0d7e34a5118b39b31cff9e4fc839df541ff) )
ROM_LOAD( "stl7a-2", 0x3000, 0x0800, CRC(57fb28dc) SHA1(6addd633d655d6a56b3e509d18e5f7c0ab2d0fbb) )
ROM_LOAD( "stl6a-2", 0x3800, 0x0800, CRC(4226d469) SHA1(fd18b732b66082988b01e04adc2b1e5dae410c98) )
ROM_LOAD( "stl9c-1", 0x4800, 0x0400, CRC(08710a84) SHA1(4bff254a14af7c968656ccc85277d31ab5a8f0c4) ) /* PROM instead of RAM char generator */
ROM_REGION( 0x0200, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "stl11d", 0x0000, 0x0200, CRC(3bd1acc1) SHA1(06f900cb8f56cd4215c5fbf58a852426d390e0c1) )
ROM_LOAD( "stl11d", 0x0000, 0x0200, CRC(3bd1acc1) SHA1(06f900cb8f56cd4215c5fbf58a852426d390e0c1) )
ROM_END
@ -978,13 +988,16 @@ ROM_START( targ )
ROM_REGION( 0x0400, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "hrl11d-1", 0x0000, 0x0400, CRC(9f03513e) SHA1(aa4763e49df65e5686a96431543580b8d8285893) )
ROM_REGION( 0x0160, REGION_PROMS, 0 )
ROM_REGION( 0x0140, REGION_PROMS, 0 )
ROM_LOAD( "hrl5c-1", 0x0000, 0x0100, CRC(a24290d0) SHA1(5f2888d168de874021b51c5d19a62fb8165e4454) ) /* address decoder */
ROM_LOAD( "stl6d-1", 0x0100, 0x0020, CRC(e26f9053) SHA1(eec35b6aa2c2d305418306bf4a1754a0583f109f) ) /* unknown */
ROM_LOAD( "hra2b-1", 0x0120, 0x0020, CRC(38e8024b) SHA1(adf1c1770695f7614c95eceb803f662c5b096a76) ) /* unknown */
ROM_LOAD( "hrl14h-1", 0x0140, 0x0020, CRC(f76b4fcf) SHA1(197e0cc508ffeb5cefa4046bdfb158939d598225) ) /* unknown */
ROM_LOAD( "hrl14h-1", 0x0120, 0x0020, CRC(f76b4fcf) SHA1(197e0cc508ffeb5cefa4046bdfb158939d598225) ) /* unknown */
ROM_REGION( 0x0020, TARG_TONE_REGION, 0 )
ROM_LOAD( "hra2b-1", 0x0000, 0x0020, CRC(38e8024b) SHA1(adf1c1770695f7614c95eceb803f662c5b096a76) ) /* unknown */
ROM_END
ROM_START( targc )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "ctl.10a", 0x1800, 0x0800, CRC(058b3983) SHA1(8079667613c9273e95131c3c68cd92ce34c18148) )
@ -995,6 +1008,9 @@ ROM_START( targc )
ROM_REGION( 0x0400, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "hrl11d-1", 0x0000, 0x0400, CRC(9f03513e) SHA1(aa4763e49df65e5686a96431543580b8d8285893) )
ROM_REGION( 0x0020, TARG_TONE_REGION, 0 )
ROM_LOAD( "hra2b-1", 0x0000, 0x0020, CRC(38e8024b) SHA1(adf1c1770695f7614c95eceb803f662c5b096a76) ) /* unknown */
ROM_END
@ -1012,6 +1028,7 @@ ROM_START( spectar )
ROM_CONTINUE( 0x0000, 0x0400 ) /* overwrite with the real one */
ROM_END
ROM_START( spectar1 )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "spl12a1", 0x0800, 0x0800, CRC(7002efb4) SHA1(fbb19ccd2aee49b78606eadcbef94e842e1be905) )
@ -1027,39 +1044,41 @@ ROM_START( spectar1 )
ROM_CONTINUE( 0x0000, 0x0400 ) /* overwrite with the real one */
ROM_END
ROM_START( rallys )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "rallys.01", 0x1000, 0x0400, CRC(a192b22b) SHA1(aaae0b1822f934df30b354f787ffa8848c71b52f) )
ROM_LOAD( "rallys.02", 0x1400, 0x0400, CRC(19e730aa) SHA1(4f4e87d26c14a9ff2be5b4173c4e5804db551e33) )
ROM_LOAD( "rallys.03", 0x1800, 0x0400, CRC(2a3e7b69) SHA1(d31a3e6acca87881741e88e70d46a4a0ee59fcf8) )
ROM_LOAD( "rallys.04", 0x1c00, 0x0400, CRC(6d224696) SHA1(586bc8efdc8ac0a73e4a4300459efaf89021f6f5) )
ROM_LOAD( "rallys.05", 0x2000, 0x0400, CRC(af943b5e) SHA1(819fa8a6ee78a39cdade49789cd42b4a215f82f0) )
ROM_LOAD( "rallys.06", 0x2400, 0x0400, CRC(9b3d9e61) SHA1(b183e0844706713eb0a241a6e45c09c53e4077a3) )
ROM_LOAD( "rallys.07", 0x2800, 0x0400, CRC(8ef8bc67) SHA1(c8d80cc8e89a9bc5d957d648d704e4c66b17932d) )
ROM_LOAD( "rallys.08", 0x2c00, 0x0400, CRC(243c54f2) SHA1(813b3ecbd5642034b5de0bae96698ed2b036fc7b) )
ROM_LOAD( "rallys.10", 0x3400, 0x0400, CRC(46f473d2) SHA1(e6a180fdcf2ac13ffab624554ef8aab128e80321) )
ROM_LOAD( "rallys.09", 0x3c00, 0x0400, CRC(56ce8a94) SHA1(becd31cda58e59267517a39c82ccfa70abdd31c6) )
ROM_LOAD( "rallys.01", 0x1000, 0x0400, CRC(a192b22b) SHA1(aaae0b1822f934df30b354f787ffa8848c71b52f) )
ROM_LOAD( "rallys.02", 0x1400, 0x0400, CRC(19e730aa) SHA1(4f4e87d26c14a9ff2be5b4173c4e5804db551e33) )
ROM_LOAD( "rallys.03", 0x1800, 0x0400, CRC(2a3e7b69) SHA1(d31a3e6acca87881741e88e70d46a4a0ee59fcf8) )
ROM_LOAD( "rallys.04", 0x1c00, 0x0400, CRC(6d224696) SHA1(586bc8efdc8ac0a73e4a4300459efaf89021f6f5) )
ROM_LOAD( "rallys.05", 0x2000, 0x0400, CRC(af943b5e) SHA1(819fa8a6ee78a39cdade49789cd42b4a215f82f0) )
ROM_LOAD( "rallys.06", 0x2400, 0x0400, CRC(9b3d9e61) SHA1(b183e0844706713eb0a241a6e45c09c53e4077a3) )
ROM_LOAD( "rallys.07", 0x2800, 0x0400, CRC(8ef8bc67) SHA1(c8d80cc8e89a9bc5d957d648d704e4c66b17932d) )
ROM_LOAD( "rallys.08", 0x2c00, 0x0400, CRC(243c54f2) SHA1(813b3ecbd5642034b5de0bae96698ed2b036fc7b) )
ROM_LOAD( "rallys.10", 0x3400, 0x0400, CRC(46f473d2) SHA1(e6a180fdcf2ac13ffab624554ef8aab128e80321) )
ROM_LOAD( "rallys.09", 0x3c00, 0x0400, CRC(56ce8a94) SHA1(becd31cda58e59267517a39c82ccfa70abdd31c6) )
ROM_REGION( 0x0400, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "hrl11d-1", 0x0000, 0x0400, CRC(9f03513e) SHA1(aa4763e49df65e5686a96431543580b8d8285893) )
ROM_LOAD( "hrl11d-1", 0x0000, 0x0400, CRC(9f03513e) SHA1(aa4763e49df65e5686a96431543580b8d8285893) )
ROM_REGION( 0x0020, REGION_PROMS, 0 )
ROM_LOAD( "targ82s.123", 0x0000, 0x0020, CRC(9eb9125c) SHA1(660ad9b2c7c28c3fda4b10c1401c03165d131c61) ) /* unknown */
ROM_END
ROM_START( phantoma )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "156_a2", 0x1000, 0x0800, CRC(c5af9d34) SHA1(4c9f9a06cc7f6caf13a79fa8491db17b01b24774) )
ROM_LOAD( "156_a3", 0x1800, 0x0800, CRC(30121e69) SHA1(1588cfb61eb9aa9598b3ff600cc02b0f1ac622bf) )
ROM_LOAD( "156_a4", 0x2000, 0x0800, CRC(02d7fb94) SHA1(634e952a6a0d4c1a42692100e1913ecd5ab9faed) )
ROM_LOAD( "156_a5", 0x2800, 0x0800, CRC(0127bc8d) SHA1(c555507f2662d1b45caf0b696147f70749292930) )
ROM_LOAD( "156_a1", 0xf800, 0x0800, CRC(26292c0a) SHA1(d4157e261f6247cfafb948d1a9dbf0b02b2b84de) )
ROM_LOAD( "156_a2", 0x1000, 0x0800, CRC(c5af9d34) SHA1(4c9f9a06cc7f6caf13a79fa8491db17b01b24774) )
ROM_LOAD( "156_a3", 0x1800, 0x0800, CRC(30121e69) SHA1(1588cfb61eb9aa9598b3ff600cc02b0f1ac622bf) )
ROM_LOAD( "156_a4", 0x2000, 0x0800, CRC(02d7fb94) SHA1(634e952a6a0d4c1a42692100e1913ecd5ab9faed) )
ROM_LOAD( "156_a5", 0x2800, 0x0800, CRC(0127bc8d) SHA1(c555507f2662d1b45caf0b696147f70749292930) )
ROM_LOAD( "156_a1", 0xf800, 0x0800, CRC(26292c0a) SHA1(d4157e261f6247cfafb948d1a9dbf0b02b2b84de) )
ROM_REGION( 0x800, REGION_GFX1, 0 )
ROM_LOAD( "156_d1", 0x0000, 0x0800, CRC(d18e5f14) SHA1(5cd327500e74eca378ad5d0924949f96dd955cf8) )
ROM_LOAD( "156_d1", 0x0000, 0x0800, CRC(d18e5f14) SHA1(5cd327500e74eca378ad5d0924949f96dd955cf8) )
ROM_REGION( 0x0020, REGION_PROMS, 0 )
ROM_LOAD( "156_pal", 0x0000, 0x0020, CRC(9fb1daee) SHA1(2ec1189a57c95d7ad820eb12343fcf2c3fb08431) )
ROM_LOAD( "156_pal", 0x0000, 0x0020, CRC(9fb1daee) SHA1(2ec1189a57c95d7ad820eb12343fcf2c3fb08431) )
ROM_END
@ -1072,21 +1091,22 @@ ROM_START( mtrap )
ROM_LOAD( "mtl7a.bin", 0xe000, 0x1000, CRC(caafbb6d) SHA1(96823ac4e49f192121c53f70382a20f7c52e290b) )
ROM_LOAD( "mtl6a.bin", 0xf000, 0x1000, CRC(d85e52ca) SHA1(51296247e365a468fe9458b722bbdbbeeed59fa0) )
ROM_REGION( 0x8000, REGION_CPU2, 0 ) /* 32k for audio */
ROM_REGION( 0x8000, REGION_CPU2, 0 )
ROM_LOAD( "mta5a.bin", 0x6800, 0x0800, CRC(dbe4ec02) SHA1(34e965428dbb4b9c558927bb80d19cb550b53228) )
ROM_LOAD( "mta6a.bin", 0x7000, 0x0800, CRC(c00f0c05) SHA1(398b0bc2a7e54b1e2326ed067bf6bb15cc52ed39) )
ROM_LOAD( "mta7a.bin", 0x7800, 0x0800, CRC(f3f16ca7) SHA1(3928c5da246c43036a7b4cbb140a1734d5f1fb03) )
ROM_REGION( 0x4000, REGION_CPU3, 0 ) /* 16k for digital sound processor */
ROM_LOAD( "mta2a.bin", 0x0000, 0x1000, CRC(13db8ed3) SHA1(939352323bdcd7df25db5eb2e30f269bcaebe6af) )
ROM_LOAD( "mta3a.bin", 0x1000, 0x1000, CRC(31bdfe5c) SHA1(b10bfe9e56dd617c5b4cd8b5bfec9c7f537b1086) )
ROM_LOAD( "mta4a.bin", 0x2000, 0x1000, CRC(1502d0e8) SHA1(8ef51ad4601299016f1821a5c65bec0199dd5474) )
ROM_LOAD( "mta1a.bin", 0x3000, 0x1000, CRC(658482a6) SHA1(c0d770fbeaa7cb3e0eef47d8caa0f8a78841692e) )
ROM_LOAD( "mta2a.bin", 0x0000, 0x1000, CRC(13db8ed3) SHA1(939352323bdcd7df25db5eb2e30f269bcaebe6af) )
ROM_LOAD( "mta3a.bin", 0x1000, 0x1000, CRC(31bdfe5c) SHA1(b10bfe9e56dd617c5b4cd8b5bfec9c7f537b1086) )
ROM_LOAD( "mta4a.bin", 0x2000, 0x1000, CRC(1502d0e8) SHA1(8ef51ad4601299016f1821a5c65bec0199dd5474) )
ROM_LOAD( "mta1a.bin", 0x3000, 0x1000, CRC(658482a6) SHA1(c0d770fbeaa7cb3e0eef47d8caa0f8a78841692e) )
ROM_REGION( 0x0800, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "mtl11d.bin", 0x0000, 0x0800, CRC(c6e4d339) SHA1(b091923e4d52e93d7c567afba217a10b2a3735fc) )
ROM_END
ROM_START( mtrap3 )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "mtl-3.11a", 0xa000, 0x1000, CRC(4091be6e) SHA1(a4432f4588915276583f4b2e8db527fd24eb4291) )
@ -1096,21 +1116,22 @@ ROM_START( mtrap3 )
ROM_LOAD( "mtl-3.7a", 0xe000, 0x1000, CRC(ea8ec479) SHA1(785557a242d9343c83cdc403b1f726cbea9d230f) )
ROM_LOAD( "mtl-3.6a", 0xf000, 0x1000, CRC(d72ba72d) SHA1(4c5b311bc7ecfc6133bc09e586635844e2f1d6a9) )
ROM_REGION( 0x8000, REGION_CPU2, 0 ) /* 32k for audio */
ROM_REGION( 0x8000, REGION_CPU2, 0 )
ROM_LOAD( "mta5a.bin", 0x6800, 0x0800, CRC(dbe4ec02) SHA1(34e965428dbb4b9c558927bb80d19cb550b53228) )
ROM_LOAD( "mta6a.bin", 0x7000, 0x0800, CRC(c00f0c05) SHA1(398b0bc2a7e54b1e2326ed067bf6bb15cc52ed39) )
ROM_LOAD( "mta7a.bin", 0x7800, 0x0800, CRC(f3f16ca7) SHA1(3928c5da246c43036a7b4cbb140a1734d5f1fb03) )
ROM_REGION( 0x4000, REGION_CPU3, 0 ) /* 16k for digital sound processor */
ROM_LOAD( "mta2a.bin", 0x0000, 0x1000, CRC(13db8ed3) SHA1(939352323bdcd7df25db5eb2e30f269bcaebe6af) )
ROM_LOAD( "mta3a.bin", 0x1000, 0x1000, CRC(31bdfe5c) SHA1(b10bfe9e56dd617c5b4cd8b5bfec9c7f537b1086) )
ROM_LOAD( "mta4a.bin", 0x2000, 0x1000, CRC(1502d0e8) SHA1(8ef51ad4601299016f1821a5c65bec0199dd5474) )
ROM_LOAD( "mta1a.bin", 0x3000, 0x1000, CRC(658482a6) SHA1(c0d770fbeaa7cb3e0eef47d8caa0f8a78841692e) )
ROM_LOAD( "mta2a.bin", 0x0000, 0x1000, CRC(13db8ed3) SHA1(939352323bdcd7df25db5eb2e30f269bcaebe6af) )
ROM_LOAD( "mta3a.bin", 0x1000, 0x1000, CRC(31bdfe5c) SHA1(b10bfe9e56dd617c5b4cd8b5bfec9c7f537b1086) )
ROM_LOAD( "mta4a.bin", 0x2000, 0x1000, CRC(1502d0e8) SHA1(8ef51ad4601299016f1821a5c65bec0199dd5474) )
ROM_LOAD( "mta1a.bin", 0x3000, 0x1000, CRC(658482a6) SHA1(c0d770fbeaa7cb3e0eef47d8caa0f8a78841692e) )
ROM_REGION( 0x0800, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "mtl11d.bin", 0x0000, 0x0800, CRC(c6e4d339) SHA1(b091923e4d52e93d7c567afba217a10b2a3735fc) )
ROM_END
ROM_START( mtrap4 )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "mta411a.bin", 0xa000, 0x1000, CRC(2879cb8d) SHA1(738bd3cd968fd733adcfe0fb5efdb2e2fcfb344e) )
@ -1120,16 +1141,16 @@ ROM_START( mtrap4 )
ROM_LOAD( "mta47a.bin", 0xe000, 0x1000, CRC(cdf8c6a8) SHA1(932ae9c0ea5700bd79862efa94742136d8e15641) )
ROM_LOAD( "mta46a.bin", 0xf000, 0x1000, CRC(77d3f2e6) SHA1(2c21dd7ee326ccb41d3c64eec90a19198382edea) )
ROM_REGION( 0x8000, REGION_CPU2, 0 ) /* 32k for audio */
ROM_REGION( 0x8000, REGION_CPU2, 0 )
ROM_LOAD( "mta5a.bin", 0x6800, 0x0800, CRC(dbe4ec02) SHA1(34e965428dbb4b9c558927bb80d19cb550b53228) )
ROM_LOAD( "mta6a.bin", 0x7000, 0x0800, CRC(c00f0c05) SHA1(398b0bc2a7e54b1e2326ed067bf6bb15cc52ed39) )
ROM_LOAD( "mta7a.bin", 0x7800, 0x0800, CRC(f3f16ca7) SHA1(3928c5da246c43036a7b4cbb140a1734d5f1fb03) )
ROM_REGION( 0x4000, REGION_CPU3, 0 ) /* 16k for digital sound processor */
ROM_LOAD( "mta2a.bin", 0x0000,0x1000,CRC(13db8ed3) SHA1(939352323bdcd7df25db5eb2e30f269bcaebe6af) )
ROM_LOAD( "mta3a.bin", 0x1000,0x1000,CRC(31bdfe5c) SHA1(b10bfe9e56dd617c5b4cd8b5bfec9c7f537b1086) )
ROM_LOAD( "mta4a.bin", 0x2000,0x1000,CRC(1502d0e8) SHA1(8ef51ad4601299016f1821a5c65bec0199dd5474) )
ROM_LOAD( "mta1a.bin", 0x3000,0x1000,CRC(658482a6) SHA1(c0d770fbeaa7cb3e0eef47d8caa0f8a78841692e) )
ROM_LOAD( "mta2a.bin", 0x0000,0x1000,CRC(13db8ed3) SHA1(939352323bdcd7df25db5eb2e30f269bcaebe6af) )
ROM_LOAD( "mta3a.bin", 0x1000,0x1000,CRC(31bdfe5c) SHA1(b10bfe9e56dd617c5b4cd8b5bfec9c7f537b1086) )
ROM_LOAD( "mta4a.bin", 0x2000,0x1000,CRC(1502d0e8) SHA1(8ef51ad4601299016f1821a5c65bec0199dd5474) )
ROM_LOAD( "mta1a.bin", 0x3000,0x1000,CRC(658482a6) SHA1(c0d770fbeaa7cb3e0eef47d8caa0f8a78841692e) )
ROM_REGION( 0x0800, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "mtl11d.bin", 0x0000, 0x0800, CRC(c6e4d339) SHA1(b091923e4d52e93d7c567afba217a10b2a3735fc) )
@ -1138,26 +1159,27 @@ ROM_END
ROM_START( venture )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "13a-cpu", 0x8000, 0x1000, CRC(f4e4d991) SHA1(6683c1552b56b20f2296e461aff697af73563792) )
ROM_LOAD( "12a-cpu", 0x9000, 0x1000, CRC(c6d8cb04) SHA1(3b9ae8fdc35117c73c91daed66e93e5344bdcd7e) )
ROM_LOAD( "11a-cpu", 0xa000, 0x1000, CRC(3bdb01f4) SHA1(3c1f43a3c37a21524b64d69e4dae58af8c2e0d90) )
ROM_LOAD( "10a-cpu", 0xb000, 0x1000, CRC(0da769e9) SHA1(3604dc08c63461b2ea957a396887fb32e4a1a970) )
ROM_LOAD( "9a-cpu", 0xc000, 0x1000, CRC(0ae05855) SHA1(29b3c2ca9740aa753e90131e6edcc61f414277e1) )
ROM_LOAD( "8a-cpu", 0xd000, 0x1000, CRC(4ae59676) SHA1(36fc9dce9dd0c764a861634859ca0d7f98e20382) )
ROM_LOAD( "7a-cpu", 0xe000, 0x1000, CRC(48d66220) SHA1(97b1605170c67b3a945b4d5f088df79328e163ce) )
ROM_LOAD( "6a-cpu", 0xf000, 0x1000, CRC(7b78cf49) SHA1(1d484172465d3db6c4fc3733aa2b409e3a2e228f) )
ROM_LOAD( "13a-cpu", 0x8000, 0x1000, CRC(f4e4d991) SHA1(6683c1552b56b20f2296e461aff697af73563792) )
ROM_LOAD( "12a-cpu", 0x9000, 0x1000, CRC(c6d8cb04) SHA1(3b9ae8fdc35117c73c91daed66e93e5344bdcd7e) )
ROM_LOAD( "11a-cpu", 0xa000, 0x1000, CRC(3bdb01f4) SHA1(3c1f43a3c37a21524b64d69e4dae58af8c2e0d90) )
ROM_LOAD( "10a-cpu", 0xb000, 0x1000, CRC(0da769e9) SHA1(3604dc08c63461b2ea957a396887fb32e4a1a970) )
ROM_LOAD( "9a-cpu", 0xc000, 0x1000, CRC(0ae05855) SHA1(29b3c2ca9740aa753e90131e6edcc61f414277e1) )
ROM_LOAD( "8a-cpu", 0xd000, 0x1000, CRC(4ae59676) SHA1(36fc9dce9dd0c764a861634859ca0d7f98e20382) )
ROM_LOAD( "7a-cpu", 0xe000, 0x1000, CRC(48d66220) SHA1(97b1605170c67b3a945b4d5f088df79328e163ce) )
ROM_LOAD( "6a-cpu", 0xf000, 0x1000, CRC(7b78cf49) SHA1(1d484172465d3db6c4fc3733aa2b409e3a2e228f) )
ROM_REGION( 0x8000, REGION_CPU2, 0 ) /* 32k for audio */
ROM_LOAD( "3a-ac", 0x5800, 0x0800, CRC(4ea1c3d9) SHA1(d0c99c9d5b887d717c68e8745906ae4e65aec6ad) )
ROM_LOAD( "4a-ac", 0x6000, 0x0800, CRC(5154c39e) SHA1(e6f011630eb1aa4116a0e5824ad6b65c1be2455f) )
ROM_LOAD( "5a-ac", 0x6800, 0x0800, CRC(1e1e3916) SHA1(867e586583e07cd01e0e852f6ea52a040995725d) )
ROM_LOAD( "6a-ac", 0x7000, 0x0800, CRC(80f3357a) SHA1(f1ee638251e8676a526e6367c11866b1d52f5910) )
ROM_LOAD( "7a-ac", 0x7800, 0x0800, CRC(466addc7) SHA1(0230b5365d6aeee3ca47666a9eadee4141de125b) )
ROM_REGION( 0x8000, REGION_CPU2, 0 )
ROM_LOAD( "3a-ac", 0x5800, 0x0800, CRC(4ea1c3d9) SHA1(d0c99c9d5b887d717c68e8745906ae4e65aec6ad) )
ROM_LOAD( "4a-ac", 0x6000, 0x0800, CRC(5154c39e) SHA1(e6f011630eb1aa4116a0e5824ad6b65c1be2455f) )
ROM_LOAD( "5a-ac", 0x6800, 0x0800, CRC(1e1e3916) SHA1(867e586583e07cd01e0e852f6ea52a040995725d) )
ROM_LOAD( "6a-ac", 0x7000, 0x0800, CRC(80f3357a) SHA1(f1ee638251e8676a526e6367c11866b1d52f5910) )
ROM_LOAD( "7a-ac", 0x7800, 0x0800, CRC(466addc7) SHA1(0230b5365d6aeee3ca47666a9eadee4141de125b) )
ROM_REGION( 0x0800, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "11d-cpu", 0x0000, 0x0800, CRC(b4bb2503) SHA1(67303603b7c5e6301e976ef19f81c7519648b179) )
ROM_LOAD( "11d-cpu", 0x0000, 0x0800, CRC(b4bb2503) SHA1(67303603b7c5e6301e976ef19f81c7519648b179) )
ROM_END
ROM_START( venture2 )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "vent_a13.cpu", 0x8000, 0x1000, CRC(4c833f99) SHA1(1ff4eafe48b9f0ab8a123659d78c3dfa0bf56d7d) )
@ -1169,7 +1191,7 @@ ROM_START( venture2 )
ROM_LOAD( "vent_a7.cpu", 0xe000, 0x1000, CRC(1aab27c2) SHA1(66c7274dbb8bda3c78cc61d96a6cb1a9b29939b5) )
ROM_LOAD( "vent_a6.cpu", 0xf000, 0x1000, CRC(767bdd71) SHA1(334a903e05fc86186f90aa2d9ce3b0d367d7e516) )
ROM_REGION( 0x8000, REGION_CPU2, 0 ) /* 32k for audio */
ROM_REGION( 0x8000, REGION_CPU2, 0 )
ROM_LOAD( "3a-ac", 0x5800, 0x0800, CRC(4ea1c3d9) SHA1(d0c99c9d5b887d717c68e8745906ae4e65aec6ad) )
ROM_LOAD( "4a-ac", 0x6000, 0x0800, CRC(5154c39e) SHA1(e6f011630eb1aa4116a0e5824ad6b65c1be2455f) )
ROM_LOAD( "5a-ac", 0x6800, 0x0800, CRC(1e1e3916) SHA1(867e586583e07cd01e0e852f6ea52a040995725d) )
@ -1180,129 +1202,130 @@ ROM_START( venture2 )
ROM_LOAD( "11d-cpu", 0x0000, 0x0800, CRC(b4bb2503) SHA1(67303603b7c5e6301e976ef19f81c7519648b179) )
ROM_END
ROM_START( venture4 )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "vel13a-4", 0x8000, 0x1000, CRC(1c5448f9) SHA1(59d3ca2a2d7048f5f7bd23fa5d9c9a2cc0734cb8) )
ROM_LOAD( "vel12a-4", 0x9000, 0x1000, CRC(e62491cc) SHA1(a98b6c6e60d83fd4591d0de145a99c5e4576121a) )
ROM_LOAD( "vel11a-4", 0xa000, 0x1000, CRC(e91faeaf) SHA1(ce50a9f1016671282d16f2d0ad3553598e0c7e89) )
ROM_LOAD( "vel10a-4", 0xb000, 0x1000, CRC(da3a2991) SHA1(2b5175b0f3642e735b6d87fbd5b75118cf6b7faa) )
ROM_LOAD( "vel9a-4", 0xc000, 0x1000, CRC(d1887b11) SHA1(40ed1e1bdcb95d6e317cb5e4fb8572a314b3fbf8) )
ROM_LOAD( "vel8a-4", 0xd000, 0x1000, CRC(8e8153fc) SHA1(409cf0ed39ef04c1e9359f0499d7cba3aed8f36e) )
ROM_LOAD( "vel7a-4", 0xe000, 0x1000, CRC(0a091701) SHA1(ffdea1d60371779d0c28fb3c6111639cace79dad) )
ROM_LOAD( "vel6a-4", 0xf000, 0x1000, CRC(7b165f67) SHA1(4109797bcfd33c870234930790e3cecaaf90b706) )
ROM_LOAD( "vel13a-4", 0x8000, 0x1000, CRC(1c5448f9) SHA1(59d3ca2a2d7048f5f7bd23fa5d9c9a2cc0734cb8) )
ROM_LOAD( "vel12a-4", 0x9000, 0x1000, CRC(e62491cc) SHA1(a98b6c6e60d83fd4591d0de145a99c5e4576121a) )
ROM_LOAD( "vel11a-4", 0xa000, 0x1000, CRC(e91faeaf) SHA1(ce50a9f1016671282d16f2d0ad3553598e0c7e89) )
ROM_LOAD( "vel10a-4", 0xb000, 0x1000, CRC(da3a2991) SHA1(2b5175b0f3642e735b6d87fbd5b75118cf6b7faa) )
ROM_LOAD( "vel9a-4", 0xc000, 0x1000, CRC(d1887b11) SHA1(40ed1e1bdcb95d6e317cb5e4fb8572a314b3fbf8) )
ROM_LOAD( "vel8a-4", 0xd000, 0x1000, CRC(8e8153fc) SHA1(409cf0ed39ef04c1e9359f0499d7cba3aed8f36e) )
ROM_LOAD( "vel7a-4", 0xe000, 0x1000, CRC(0a091701) SHA1(ffdea1d60371779d0c28fb3c6111639cace79dad) )
ROM_LOAD( "vel6a-4", 0xf000, 0x1000, CRC(7b165f67) SHA1(4109797bcfd33c870234930790e3cecaaf90b706) )
ROM_REGION( 0x8000, REGION_CPU2, 0 ) /* 32k for audio */
ROM_LOAD( "vea3a-2", 0x5800, 0x0800, CRC(83b8836f) SHA1(ec0e2de62caea61ceff56e924449213997bff8cd) )
ROM_LOAD( "4a-ac", 0x6000, 0x0800, CRC(5154c39e) SHA1(e6f011630eb1aa4116a0e5824ad6b65c1be2455f) )
ROM_LOAD( "5a-ac", 0x6800, 0x0800, CRC(1e1e3916) SHA1(867e586583e07cd01e0e852f6ea52a040995725d) )
ROM_LOAD( "6a-ac", 0x7000, 0x0800, CRC(80f3357a) SHA1(f1ee638251e8676a526e6367c11866b1d52f5910) )
ROM_LOAD( "7a-ac", 0x7800, 0x0800, CRC(466addc7) SHA1(0230b5365d6aeee3ca47666a9eadee4141de125b) )
ROM_REGION( 0x8000, REGION_CPU2, 0 )
ROM_LOAD( "vea3a-2", 0x5800, 0x0800, CRC(83b8836f) SHA1(ec0e2de62caea61ceff56e924449213997bff8cd) )
ROM_LOAD( "4a-ac", 0x6000, 0x0800, CRC(5154c39e) SHA1(e6f011630eb1aa4116a0e5824ad6b65c1be2455f) )
ROM_LOAD( "5a-ac", 0x6800, 0x0800, CRC(1e1e3916) SHA1(867e586583e07cd01e0e852f6ea52a040995725d) )
ROM_LOAD( "6a-ac", 0x7000, 0x0800, CRC(80f3357a) SHA1(f1ee638251e8676a526e6367c11866b1d52f5910) )
ROM_LOAD( "7a-ac", 0x7800, 0x0800, CRC(466addc7) SHA1(0230b5365d6aeee3ca47666a9eadee4141de125b) )
ROM_REGION( 0x0800, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "vel11d-2", 0x0000, 0x0800, CRC(ea6fd981) SHA1(46b1658e1607423d5a073f14097c2a48d59057c0) )
ROM_LOAD( "vel11d-2", 0x0000, 0x0800, CRC(ea6fd981) SHA1(46b1658e1607423d5a073f14097c2a48d59057c0) )
ROM_END
ROM_START( pepper2 )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "main_12a", 0x9000, 0x1000, CRC(33db4737) SHA1(d8f7a5d340ddbc4d06d403c3bff0102ce637d24e) )
ROM_LOAD( "main_11a", 0xa000, 0x1000, CRC(a1f43b1f) SHA1(a669f2ef55d9a0617110f65863822fdcaf153511) )
ROM_LOAD( "main_10a", 0xb000, 0x1000, CRC(4d7d7786) SHA1(ea1390b887404a67ea556720219e81007b954a7d) )
ROM_LOAD( "main_9a", 0xc000, 0x1000, CRC(b3362298) SHA1(7adad138ec5f94caa39f9c0fabece538d5db4913) )
ROM_LOAD( "main_8a", 0xd000, 0x1000, CRC(64d106ed) SHA1(49646a97def9e1793cac6ee0044f68232b294e4f) )
ROM_LOAD( "main_7a", 0xe000, 0x1000, CRC(b1c6f07c) SHA1(53d07211d014336bb43671c51f4190c6515e9cde) )
ROM_LOAD( "main_6a", 0xf000, 0x1000, CRC(515b1046) SHA1(bdcccd4e415c00ee8e5ec185597df75ecafe7d3d) )
ROM_LOAD( "main_12a", 0x9000, 0x1000, CRC(33db4737) SHA1(d8f7a5d340ddbc4d06d403c3bff0102ce637d24e) )
ROM_LOAD( "main_11a", 0xa000, 0x1000, CRC(a1f43b1f) SHA1(a669f2ef55d9a0617110f65863822fdcaf153511) )
ROM_LOAD( "main_10a", 0xb000, 0x1000, CRC(4d7d7786) SHA1(ea1390b887404a67ea556720219e81007b954a7d) )
ROM_LOAD( "main_9a", 0xc000, 0x1000, CRC(b3362298) SHA1(7adad138ec5f94caa39f9c0fabece538d5db4913) )
ROM_LOAD( "main_8a", 0xd000, 0x1000, CRC(64d106ed) SHA1(49646a97def9e1793cac6ee0044f68232b294e4f) )
ROM_LOAD( "main_7a", 0xe000, 0x1000, CRC(b1c6f07c) SHA1(53d07211d014336bb43671c51f4190c6515e9cde) )
ROM_LOAD( "main_6a", 0xf000, 0x1000, CRC(515b1046) SHA1(bdcccd4e415c00ee8e5ec185597df75ecafe7d3d) )
ROM_REGION( 0x8000, REGION_CPU2, 0 ) /* 32k for audio */
ROM_LOAD( "audio_5a", 0x6800, 0x0800, CRC(90e3c781) SHA1(d51a9e011167a132e8af9f4b1201600a58e86b62) )
ROM_LOAD( "audio_6a", 0x7000, 0x0800, CRC(dd343e34) SHA1(4ec55bb73d6afbd167fa91d2606d1d55a15b5c39) )
ROM_LOAD( "audio_7a", 0x7800, 0x0800, CRC(e02b4356) SHA1(9891e14d84221c1d6f2d15a29813eb41024290ca) )
ROM_REGION( 0x8000, REGION_CPU2, 0 )
ROM_LOAD( "audio_5a", 0x6800, 0x0800, CRC(90e3c781) SHA1(d51a9e011167a132e8af9f4b1201600a58e86b62) )
ROM_LOAD( "audio_6a", 0x7000, 0x0800, CRC(dd343e34) SHA1(4ec55bb73d6afbd167fa91d2606d1d55a15b5c39) )
ROM_LOAD( "audio_7a", 0x7800, 0x0800, CRC(e02b4356) SHA1(9891e14d84221c1d6f2d15a29813eb41024290ca) )
ROM_REGION( 0x0800, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "main_11d", 0x0000, 0x0800, CRC(b25160cd) SHA1(3d768552960a3a660891dcb85da6a5c382b33991) )
ROM_LOAD( "main_11d", 0x0000, 0x0800, CRC(b25160cd) SHA1(3d768552960a3a660891dcb85da6a5c382b33991) )
ROM_END
ROM_START( hardhat )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "hhl-2.11a", 0xa000, 0x1000, CRC(7623deea) SHA1(3c47c0439c80e66536af42c5ee4e522fea5f8374) )
ROM_LOAD( "hhl-2.10a", 0xb000, 0x1000, CRC(e6bf2fb1) SHA1(ad41859129774fc51462726a825c0ae16ed81a6e) )
ROM_LOAD( "hhl-2.9a", 0xc000, 0x1000, CRC(acc2bce5) SHA1(0f7b8cfbd2628b8587c423fbc2c8310d71d8ad2a) )
ROM_LOAD( "hhl-2.8a", 0xd000, 0x1000, CRC(23c7a2f8) SHA1(5eb1d512d73ba6bd1c23501664b582e9d3cf777f) )
ROM_LOAD( "hhl-2.7a", 0xe000, 0x1000, CRC(6f7ce1c2) SHA1(356dcea22e50c95a8552566a0fb5f9b4e3e5de2a) )
ROM_LOAD( "hhl-2.6a", 0xf000, 0x1000, CRC(2a20cf10) SHA1(31eb4556647e78e3d9be1c30d970eac8aaa5cf18) )
ROM_LOAD( "hhl-2.11a", 0xa000, 0x1000, CRC(7623deea) SHA1(3c47c0439c80e66536af42c5ee4e522fea5f8374) )
ROM_LOAD( "hhl-2.10a", 0xb000, 0x1000, CRC(e6bf2fb1) SHA1(ad41859129774fc51462726a825c0ae16ed81a6e) )
ROM_LOAD( "hhl-2.9a", 0xc000, 0x1000, CRC(acc2bce5) SHA1(0f7b8cfbd2628b8587c423fbc2c8310d71d8ad2a) )
ROM_LOAD( "hhl-2.8a", 0xd000, 0x1000, CRC(23c7a2f8) SHA1(5eb1d512d73ba6bd1c23501664b582e9d3cf777f) )
ROM_LOAD( "hhl-2.7a", 0xe000, 0x1000, CRC(6f7ce1c2) SHA1(356dcea22e50c95a8552566a0fb5f9b4e3e5de2a) )
ROM_LOAD( "hhl-2.6a", 0xf000, 0x1000, CRC(2a20cf10) SHA1(31eb4556647e78e3d9be1c30d970eac8aaa5cf18) )
ROM_REGION( 0x8000, REGION_CPU2, 0 ) /* 32k for audio */
ROM_LOAD( "hha-1.5a", 0x6800, 0x0800, CRC(16a5a183) SHA1(cf3fed55db9c61fd33c222275d472fa109bed081) )
ROM_LOAD( "hha-1.6a", 0x7000, 0x0800, CRC(bde64021) SHA1(a403590d5a27b859eaa299e47df4ebd6ce4a5772) )
ROM_LOAD( "hha-1.7a", 0x7800, 0x0800, CRC(505ee5d3) SHA1(efa228465688f2bb30f00dc1511cc5f3a287356c) )
ROM_REGION( 0x8000, REGION_CPU2, 0 )
ROM_LOAD( "hha-1.5a", 0x6800, 0x0800, CRC(16a5a183) SHA1(cf3fed55db9c61fd33c222275d472fa109bed081) )
ROM_LOAD( "hha-1.6a", 0x7000, 0x0800, CRC(bde64021) SHA1(a403590d5a27b859eaa299e47df4ebd6ce4a5772) )
ROM_LOAD( "hha-1.7a", 0x7800, 0x0800, CRC(505ee5d3) SHA1(efa228465688f2bb30f00dc1511cc5f3a287356c) )
ROM_REGION( 0x0800, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "hhl-1.11d", 0x0000, 0x0800, CRC(dbcdf353) SHA1(76ea287326a5c9e75e407cc010414212d8fdd52a) )
ROM_LOAD( "hhl-1.11d", 0x0000, 0x0800, CRC(dbcdf353) SHA1(76ea287326a5c9e75e407cc010414212d8fdd52a) )
ROM_END
ROM_START( teetert )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "13a-cpu", 0x8000, 0x1000, CRC(f4e4d991) SHA1(6683c1552b56b20f2296e461aff697af73563792) )
ROM_LOAD( "12a-cpu", 0x9000, 0x1000, CRC(c6d8cb04) SHA1(3b9ae8fdc35117c73c91daed66e93e5344bdcd7e) )
ROM_LOAD( "11a-cpu", 0xa000, 0x1000, CRC(bac9b259) SHA1(0265cbd683fadf42f8a6b71958cbe782a732c257) )
ROM_LOAD( "10a-cpu", 0xb000, 0x1000, CRC(3ae7e445) SHA1(e511ce4c553ac58e87b6ee623f8c42d7653de972) )
ROM_LOAD( "9a-cpu", 0xc000, 0x1000, CRC(0cba424d) SHA1(54377163a8b8082639baf56b960eb26268462d46) )
ROM_LOAD( "8a-cpu", 0xd000, 0x1000, CRC(68de66e7) SHA1(70a0cc950f16f2c408fae717e6fdb75eb0fd8039) )
ROM_LOAD( "7a-cpu", 0xe000, 0x1000, CRC(84491333) SHA1(db9f8e4c49057a4574a3784d71e627da7f7a4b44) )
ROM_LOAD( "6a-cpu", 0xf000, 0x1000, CRC(3600d465) SHA1(84d633e042f73bfd6bf4a4d0ffee1cd2027c65d2) )
ROM_LOAD( "13a-cpu", 0x8000, 0x1000, CRC(f4e4d991) SHA1(6683c1552b56b20f2296e461aff697af73563792) )
ROM_LOAD( "12a-cpu", 0x9000, 0x1000, CRC(c6d8cb04) SHA1(3b9ae8fdc35117c73c91daed66e93e5344bdcd7e) )
ROM_LOAD( "11a-cpu", 0xa000, 0x1000, CRC(bac9b259) SHA1(0265cbd683fadf42f8a6b71958cbe782a732c257) )
ROM_LOAD( "10a-cpu", 0xb000, 0x1000, CRC(3ae7e445) SHA1(e511ce4c553ac58e87b6ee623f8c42d7653de972) )
ROM_LOAD( "9a-cpu", 0xc000, 0x1000, CRC(0cba424d) SHA1(54377163a8b8082639baf56b960eb26268462d46) )
ROM_LOAD( "8a-cpu", 0xd000, 0x1000, CRC(68de66e7) SHA1(70a0cc950f16f2c408fae717e6fdb75eb0fd8039) )
ROM_LOAD( "7a-cpu", 0xe000, 0x1000, CRC(84491333) SHA1(db9f8e4c49057a4574a3784d71e627da7f7a4b44) )
ROM_LOAD( "6a-cpu", 0xf000, 0x1000, CRC(3600d465) SHA1(84d633e042f73bfd6bf4a4d0ffee1cd2027c65d2) )
ROM_REGION( 0x8000, REGION_CPU2, 0 ) /* 32k for audio */
ROM_LOAD( "3a-ac", 0x5800, 0x0800, CRC(83b8836f) SHA1(ec0e2de62caea61ceff56e924449213997bff8cd) )
ROM_LOAD( "4a-ac", 0x6000, 0x0800, CRC(5154c39e) SHA1(e6f011630eb1aa4116a0e5824ad6b65c1be2455f) )
ROM_LOAD( "5a-ac", 0x6800, 0x0800, CRC(1e1e3916) SHA1(867e586583e07cd01e0e852f6ea52a040995725d) )
ROM_LOAD( "6a-ac", 0x7000, 0x0800, CRC(80f3357a) SHA1(f1ee638251e8676a526e6367c11866b1d52f5910) )
ROM_LOAD( "7a-ac", 0x7800, 0x0800, CRC(466addc7) SHA1(0230b5365d6aeee3ca47666a9eadee4141de125b) )
ROM_REGION( 0x8000, REGION_CPU2, 0 )
ROM_LOAD( "3a-ac", 0x5800, 0x0800, CRC(83b8836f) SHA1(ec0e2de62caea61ceff56e924449213997bff8cd) )
ROM_LOAD( "4a-ac", 0x6000, 0x0800, CRC(5154c39e) SHA1(e6f011630eb1aa4116a0e5824ad6b65c1be2455f) )
ROM_LOAD( "5a-ac", 0x6800, 0x0800, CRC(1e1e3916) SHA1(867e586583e07cd01e0e852f6ea52a040995725d) )
ROM_LOAD( "6a-ac", 0x7000, 0x0800, CRC(80f3357a) SHA1(f1ee638251e8676a526e6367c11866b1d52f5910) )
ROM_LOAD( "7a-ac", 0x7800, 0x0800, CRC(466addc7) SHA1(0230b5365d6aeee3ca47666a9eadee4141de125b) )
ROM_REGION( 0x0800, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "11d-cpu", 0x0000, 0x0800, CRC(0fe70b00) SHA1(6068be263d7a8e6b71af6f4dceec40bb8d246376) )
ROM_LOAD( "11d-cpu", 0x0000, 0x0800, CRC(0fe70b00) SHA1(6068be263d7a8e6b71af6f4dceec40bb8d246376) )
ROM_END
ROM_START( fax )
ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 64k for code + 192k for extra memory */
ROM_LOAD( "fxl8-13a.32", 0x8000, 0x1000, CRC(8e30bf6b) SHA1(1fdf010da0258bc038554cf33c26e539a1f6b648) )
ROM_LOAD( "fxl8-12a.32", 0x9000, 0x1000, CRC(60a41ff1) SHA1(1703dbedd09354d89c6014644d0ffe13ec657b8b) )
ROM_LOAD( "fxl8-11a.32", 0xa000, 0x1000, CRC(2c9cee8a) SHA1(169045b4d840730cfbaa0b9a8a8d82907ea09d0c) )
ROM_LOAD( "fxl8-10a.32", 0xb000, 0x1000, CRC(9b03938f) SHA1(af4c27b06a1f1be917316910b88d026b67cc60c0) )
ROM_LOAD( "fxl8-9a.32", 0xc000, 0x1000, CRC(fb869f62) SHA1(cea6ff423c60662a1b36e9565940432707d5299b) )
ROM_LOAD( "fxl8-8a.32", 0xd000, 0x1000, CRC(db3470bc) SHA1(7786f84ab41765ea91ab241d14a207044eda0e93) )
ROM_LOAD( "fxl8-7a.32", 0xe000, 0x1000, CRC(1471fef5) SHA1(89308f3c2a0d7ea699e99622d37c5c95e3eaaf95) )
ROM_LOAD( "fxl8-6a.32", 0xf000, 0x1000, CRC(812e39f3) SHA1(41c99f8483c69617f9c8dd82f979630ea9190454) )
ROM_REGION( 0x40000, REGION_CPU1, 0 )
ROM_LOAD( "fxl8-13a.32", 0x08000, 0x1000, CRC(8e30bf6b) SHA1(1fdf010da0258bc038554cf33c26e539a1f6b648) )
ROM_LOAD( "fxl8-12a.32", 0x09000, 0x1000, CRC(60a41ff1) SHA1(1703dbedd09354d89c6014644d0ffe13ec657b8b) )
ROM_LOAD( "fxl8-11a.32", 0x0a000, 0x1000, CRC(2c9cee8a) SHA1(169045b4d840730cfbaa0b9a8a8d82907ea09d0c) )
ROM_LOAD( "fxl8-10a.32", 0x0b000, 0x1000, CRC(9b03938f) SHA1(af4c27b06a1f1be917316910b88d026b67cc60c0) )
ROM_LOAD( "fxl8-9a.32", 0x0c000, 0x1000, CRC(fb869f62) SHA1(cea6ff423c60662a1b36e9565940432707d5299b) )
ROM_LOAD( "fxl8-8a.32", 0x0d000, 0x1000, CRC(db3470bc) SHA1(7786f84ab41765ea91ab241d14a207044eda0e93) )
ROM_LOAD( "fxl8-7a.32", 0x0e000, 0x1000, CRC(1471fef5) SHA1(89308f3c2a0d7ea699e99622d37c5c95e3eaaf95) )
ROM_LOAD( "fxl8-6a.32", 0x0f000, 0x1000, CRC(812e39f3) SHA1(41c99f8483c69617f9c8dd82f979630ea9190454) )
/* Banks of question ROMs */
ROM_LOAD( "fxd-1c.64", 0x10000, 0x2000, CRC(fd7e3137) SHA1(6fda53737cd7c886c66c60436ae3ed5c62e6b178) )
ROM_LOAD( "fxd-2c.64", 0x12000, 0x2000, CRC(e78cb16f) SHA1(d58dfa2385368ccf00ecfbaeccaf5ba82ef7da9b) )
ROM_LOAD( "fxd-3c.64", 0x14000, 0x2000, CRC(57a94c6f) SHA1(fc27fe805c4cc29f797bfc0e4cd13a570ac5c1ec) )
ROM_LOAD( "fxd-4c.64", 0x16000, 0x2000, CRC(9036c5a2) SHA1(b7a01e4002f615702cb691764cfae93707bf3c0f) )
ROM_LOAD( "fxd-5c.64", 0x18000, 0x2000, CRC(38c03405) SHA1(c490252825dc3c4bf91255c7cb70a5ead92de85b) )
ROM_LOAD( "fxd-6c.64", 0x1a000, 0x2000, CRC(f48fc308) SHA1(bfaf43e57a4d92b593d51d8cd61fe4d5c06e836c) )
ROM_LOAD( "fxd-7c.64", 0x1c000, 0x2000, CRC(cf93b924) SHA1(892e6e6aa33bbcd271f5e0a63c1e8393df62f360) )
ROM_LOAD( "fxd-8c.64", 0x1e000, 0x2000, CRC(607b48da) SHA1(6c8f2f207f3dd936c529b86cef917a0f0699a21c) )
ROM_LOAD( "fxd-1b.64", 0x20000, 0x2000, CRC(62872d4f) SHA1(c020fdeae6c2e7d04c16048fdaa99ecf3e40af31) )
ROM_LOAD( "fxd-2b.64", 0x22000, 0x2000, CRC(625778d0) SHA1(6c8d6b50653bff3774f5ccef0e000a2ef3f7030c) )
ROM_LOAD( "fxd-3b.64", 0x24000, 0x2000, CRC(c3473dee) SHA1(8675f9b93bbbae4f5a5682c5b1623afeeacc0a4b) )
ROM_LOAD( "fxd-4b.64", 0x26000, 0x2000, CRC(e39a15f5) SHA1(43b04cc2e4750b649116ade5b1004c2580293134) )
ROM_LOAD( "fxd-5b.64", 0x28000, 0x2000, CRC(101a9d70) SHA1(2b839cd707e03b0e50037e1ffabcb8fe375dc4c0) )
ROM_LOAD( "fxd-6b.64", 0x2a000, 0x2000, CRC(374a8f05) SHA1(ec41470932823242fff36ab6e6f158fa5c07d0a8) )
ROM_LOAD( "fxd-7b.64", 0x2c000, 0x2000, CRC(f7e7f824) SHA1(1bed1ee07032b25675ace612a883cba4ab4b2f77) )
ROM_LOAD( "fxd-8b.64", 0x2e000, 0x2000, CRC(8f1a5287) SHA1(a1102d49bacb25887eaa67ae64bcf64c8cad94fe) )
ROM_LOAD( "fxd-1a.64", 0x30000, 0x2000, CRC(fc5e6344) SHA1(c61aad5100819f2fe98c3a159b64739fa6322d09) )
ROM_LOAD( "fxd-2a.64", 0x32000, 0x2000, CRC(43cf60b3) SHA1(5169196d0a95450801b3a57703cb9f2861a25948) )
ROM_LOAD( "fxd-3a.64", 0x34000, 0x2000, CRC(6b7d29cb) SHA1(fd4006efd24b33f8e2baf7f97d4b776d5ef90959) )
ROM_LOAD( "fxd-4a.64", 0x36000, 0x2000, CRC(b9de3c2d) SHA1(229f9f0762d4d659acf516c2c1a42e70d2f98652) )
ROM_LOAD( "fxd-5a.64", 0x38000, 0x2000, CRC(67285bc6) SHA1(f929c916fb19dbc91fc3a75dfed6375b63cb2043) )
ROM_LOAD( "fxd-6a.64", 0x3a000, 0x2000, CRC(ba67b7b2) SHA1(12265f678b1e4dfc3b36a964f78b0103112753ee) )
ROM_LOAD( "fxd-1c.64", 0x10000, 0x2000, CRC(fd7e3137) SHA1(6fda53737cd7c886c66c60436ae3ed5c62e6b178) )
ROM_LOAD( "fxd-2c.64", 0x12000, 0x2000, CRC(e78cb16f) SHA1(d58dfa2385368ccf00ecfbaeccaf5ba82ef7da9b) )
ROM_LOAD( "fxd-3c.64", 0x14000, 0x2000, CRC(57a94c6f) SHA1(fc27fe805c4cc29f797bfc0e4cd13a570ac5c1ec) )
ROM_LOAD( "fxd-4c.64", 0x16000, 0x2000, CRC(9036c5a2) SHA1(b7a01e4002f615702cb691764cfae93707bf3c0f) )
ROM_LOAD( "fxd-5c.64", 0x18000, 0x2000, CRC(38c03405) SHA1(c490252825dc3c4bf91255c7cb70a5ead92de85b) )
ROM_LOAD( "fxd-6c.64", 0x1a000, 0x2000, CRC(f48fc308) SHA1(bfaf43e57a4d92b593d51d8cd61fe4d5c06e836c) )
ROM_LOAD( "fxd-7c.64", 0x1c000, 0x2000, CRC(cf93b924) SHA1(892e6e6aa33bbcd271f5e0a63c1e8393df62f360) )
ROM_LOAD( "fxd-8c.64", 0x1e000, 0x2000, CRC(607b48da) SHA1(6c8f2f207f3dd936c529b86cef917a0f0699a21c) )
ROM_LOAD( "fxd-1b.64", 0x20000, 0x2000, CRC(62872d4f) SHA1(c020fdeae6c2e7d04c16048fdaa99ecf3e40af31) )
ROM_LOAD( "fxd-2b.64", 0x22000, 0x2000, CRC(625778d0) SHA1(6c8d6b50653bff3774f5ccef0e000a2ef3f7030c) )
ROM_LOAD( "fxd-3b.64", 0x24000, 0x2000, CRC(c3473dee) SHA1(8675f9b93bbbae4f5a5682c5b1623afeeacc0a4b) )
ROM_LOAD( "fxd-4b.64", 0x26000, 0x2000, CRC(e39a15f5) SHA1(43b04cc2e4750b649116ade5b1004c2580293134) )
ROM_LOAD( "fxd-5b.64", 0x28000, 0x2000, CRC(101a9d70) SHA1(2b839cd707e03b0e50037e1ffabcb8fe375dc4c0) )
ROM_LOAD( "fxd-6b.64", 0x2a000, 0x2000, CRC(374a8f05) SHA1(ec41470932823242fff36ab6e6f158fa5c07d0a8) )
ROM_LOAD( "fxd-7b.64", 0x2c000, 0x2000, CRC(f7e7f824) SHA1(1bed1ee07032b25675ace612a883cba4ab4b2f77) )
ROM_LOAD( "fxd-8b.64", 0x2e000, 0x2000, CRC(8f1a5287) SHA1(a1102d49bacb25887eaa67ae64bcf64c8cad94fe) )
ROM_LOAD( "fxd-1a.64", 0x30000, 0x2000, CRC(fc5e6344) SHA1(c61aad5100819f2fe98c3a159b64739fa6322d09) )
ROM_LOAD( "fxd-2a.64", 0x32000, 0x2000, CRC(43cf60b3) SHA1(5169196d0a95450801b3a57703cb9f2861a25948) )
ROM_LOAD( "fxd-3a.64", 0x34000, 0x2000, CRC(6b7d29cb) SHA1(fd4006efd24b33f8e2baf7f97d4b776d5ef90959) )
ROM_LOAD( "fxd-4a.64", 0x36000, 0x2000, CRC(b9de3c2d) SHA1(229f9f0762d4d659acf516c2c1a42e70d2f98652) )
ROM_LOAD( "fxd-5a.64", 0x38000, 0x2000, CRC(67285bc6) SHA1(f929c916fb19dbc91fc3a75dfed6375b63cb2043) )
ROM_LOAD( "fxd-6a.64", 0x3a000, 0x2000, CRC(ba67b7b2) SHA1(12265f678b1e4dfc3b36a964f78b0103112753ee) )
/* The last two ROM sockets were apparently never populated */
// ROM_LOAD( "fxd-7a.64", 0x3c000, 0x2000, NO_DUMP )
// ROM_LOAD( "fxd-8a.64", 0x3e000, 0x2000, NO_DUMP )
// ROM_LOAD( "fxd-7a.64", 0x3c000, 0x2000, NO_DUMP )
// ROM_LOAD( "fxd-8a.64", 0x3e000, 0x2000, NO_DUMP )
ROM_REGION( 0x8000, REGION_CPU2, 0 ) /* 32k for audio */
ROM_REGION( 0x8000, REGION_CPU2, 0 )
ROM_LOAD( "fxa2-5a.16", 0x6800, 0x0800, CRC(7c525aec) SHA1(f3afd3bfc0ba4265106e6ca217d113d23ad66016) )
ROM_LOAD( "fxa2-6a.16", 0x7000, 0x0800, CRC(2b3bfc44) SHA1(7e3b9133916c8121b2145942155601b3ade420da) )
ROM_LOAD( "fxa2-7a.16", 0x7800, 0x0800, CRC(578c62b7) SHA1(1bcb987e8730c001b7339c3dfab2467bf76421c7) )
@ -1311,16 +1334,17 @@ ROM_START( fax )
ROM_LOAD( "fxl1-11d.32", 0x0000, 0x0800, CRC(62083db2) SHA1(0c6e90b73419bff53f991e66d4faa9495c7d8e09) )
ROM_END
ROM_START( fax2 )
ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 64k for code + 192k for extra memory */
ROM_LOAD( "fxl8-13a.32", 0x8000, 0x1000, CRC(8e30bf6b) SHA1(1fdf010da0258bc038554cf33c26e539a1f6b648) )
ROM_LOAD( "fxl8-12a.32", 0x9000, 0x1000, CRC(60a41ff1) SHA1(1703dbedd09354d89c6014644d0ffe13ec657b8b) )
ROM_LOAD( "fxl8-11a.32", 0xa000, 0x1000, CRC(2c9cee8a) SHA1(169045b4d840730cfbaa0b9a8a8d82907ea09d0c) )
ROM_LOAD( "fxl8-10a.32", 0xb000, 0x1000, CRC(9b03938f) SHA1(af4c27b06a1f1be917316910b88d026b67cc60c0) )
ROM_LOAD( "fxl8-9a.32", 0xc000, 0x1000, CRC(fb869f62) SHA1(cea6ff423c60662a1b36e9565940432707d5299b) )
ROM_LOAD( "fxl8-8a.32", 0xd000, 0x1000, CRC(db3470bc) SHA1(7786f84ab41765ea91ab241d14a207044eda0e93) )
ROM_LOAD( "fxl8-7a.32", 0xe000, 0x1000, CRC(1471fef5) SHA1(89308f3c2a0d7ea699e99622d37c5c95e3eaaf95) )
ROM_LOAD( "fxl8-6a.32", 0xf000, 0x1000, CRC(812e39f3) SHA1(41c99f8483c69617f9c8dd82f979630ea9190454) )
ROM_REGION( 0x40000, REGION_CPU1, 0 )
ROM_LOAD( "fxl8-13a.32", 0x08000, 0x1000, CRC(8e30bf6b) SHA1(1fdf010da0258bc038554cf33c26e539a1f6b648) )
ROM_LOAD( "fxl8-12a.32", 0x09000, 0x1000, CRC(60a41ff1) SHA1(1703dbedd09354d89c6014644d0ffe13ec657b8b) )
ROM_LOAD( "fxl8-11a.32", 0x0a000, 0x1000, CRC(2c9cee8a) SHA1(169045b4d840730cfbaa0b9a8a8d82907ea09d0c) )
ROM_LOAD( "fxl8-10a.32", 0x0b000, 0x1000, CRC(9b03938f) SHA1(af4c27b06a1f1be917316910b88d026b67cc60c0) )
ROM_LOAD( "fxl8-9a.32", 0x0c000, 0x1000, CRC(fb869f62) SHA1(cea6ff423c60662a1b36e9565940432707d5299b) )
ROM_LOAD( "fxl8-8a.32", 0x0d000, 0x1000, CRC(db3470bc) SHA1(7786f84ab41765ea91ab241d14a207044eda0e93) )
ROM_LOAD( "fxl8-7a.32", 0x0e000, 0x1000, CRC(1471fef5) SHA1(89308f3c2a0d7ea699e99622d37c5c95e3eaaf95) )
ROM_LOAD( "fxl8-6a.32", 0x0f000, 0x1000, CRC(812e39f3) SHA1(41c99f8483c69617f9c8dd82f979630ea9190454) )
/* Banks of question ROMs */
ROM_LOAD( "fxdb1-1c.bin", 0x10000, 0x2000, CRC(0e42a2a4) SHA1(f7021aad36b49338cdaae8e13638dbdd12327afc) )
ROM_LOAD( "fxdb1-2c.bin", 0x12000, 0x2000, CRC(cef8d49a) SHA1(a3005ab21add22ffb4c6f4cb9843db8964fef49c) )
@ -1347,13 +1371,13 @@ ROM_START( fax2 )
ROM_LOAD( "fxdb1-7a.bin", 0x3c000, 0x2000, CRC(0f97b874) SHA1(5790d3ed9eed2ce05947bc28cc252f720a7f3aeb) )
ROM_LOAD( "fxdb1-8a.bin", 0x3e000, 0x2000, CRC(1d055bea) SHA1(96531db0a3a36319bc0a28096e601302eb2eb115) )
ROM_REGION( 0x8000, REGION_CPU2, 0 ) /* 32k for audio */
ROM_LOAD( "fxa2-5a.16", 0x6800, 0x0800, CRC(7c525aec) SHA1(f3afd3bfc0ba4265106e6ca217d113d23ad66016) )
ROM_LOAD( "fxa2-6a.16", 0x7000, 0x0800, CRC(2b3bfc44) SHA1(7e3b9133916c8121b2145942155601b3ade420da) )
ROM_LOAD( "fxa2-7a.16", 0x7800, 0x0800, CRC(578c62b7) SHA1(1bcb987e8730c001b7339c3dfab2467bf76421c7) )
ROM_REGION( 0x8000, REGION_CPU2, 0 )
ROM_LOAD( "fxa2-5a.16", 0x6800, 0x0800, CRC(7c525aec) SHA1(f3afd3bfc0ba4265106e6ca217d113d23ad66016) )
ROM_LOAD( "fxa2-6a.16", 0x7000, 0x0800, CRC(2b3bfc44) SHA1(7e3b9133916c8121b2145942155601b3ade420da) )
ROM_LOAD( "fxa2-7a.16", 0x7800, 0x0800, CRC(578c62b7) SHA1(1bcb987e8730c001b7339c3dfab2467bf76421c7) )
ROM_REGION( 0x0800, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "fxl1-11d.32", 0x0000, 0x0800, CRC(62083db2) SHA1(0c6e90b73419bff53f991e66d4faa9495c7d8e09) )
ROM_LOAD( "fxl1-11d.32", 0x0000, 0x0800, CRC(62083db2) SHA1(0c6e90b73419bff53f991e66d4faa9495c7d8e09) )
ROM_END
@ -1367,7 +1391,6 @@ ROM_END
static DRIVER_INIT( sidetrac )
{
exidy_video_config(0x00, 0x00, FALSE);
targ_spec_flag = 0;
/* hard-coded palette controlled via 8x3 DIP switches on the board */
exidy_color_latch[2] = 0xf8;
@ -1379,7 +1402,6 @@ static DRIVER_INIT( sidetrac )
static DRIVER_INIT( targ )
{
exidy_video_config(0x00, 0x00, FALSE);
targ_spec_flag = 1;
/* hard-coded palette controlled via 8x3 DIP switches on the board */
exidy_color_latch[2] = 0x5c;
@ -1391,7 +1413,6 @@ static DRIVER_INIT( targ )
static DRIVER_INIT( spectar )
{
exidy_video_config(0x00, 0x00, FALSE);
targ_spec_flag = 0;
/* hard-coded palette controlled via 8x3 DIP switches on the board */
exidy_color_latch[2] = 0x58;
@ -1402,7 +1423,6 @@ static DRIVER_INIT( spectar )
static DRIVER_INIT( rallys )
{
exidy_video_config(0x00, 0x00, FALSE);
targ_spec_flag = 0;
/* hard-coded palette controlled via 8x3 DIP switches on the board */
exidy_color_latch[2] = 0x58;
@ -1413,7 +1433,6 @@ static DRIVER_INIT( rallys )
static DRIVER_INIT( phantoma )
{
exidy_video_config(0x00, 0x00, FALSE);
targ_spec_flag = 0;
/* hard-coded palette controlled via 8x3 DIP switches on the board */
exidy_color_latch[2] = 0x58;
@ -1429,35 +1448,30 @@ static DRIVER_INIT( phantoma )
static DRIVER_INIT( mtrap )
{
exidy_video_config(0x14, 0x00, FALSE);
targ_spec_flag = 0;
}
static DRIVER_INIT( venture )
{
exidy_video_config(0x04, 0x04, FALSE);
targ_spec_flag = 0;
}
static DRIVER_INIT( teetert )
{
exidy_video_config(0x0c, 0x0c, FALSE);
targ_spec_flag = 0;
}
static DRIVER_INIT( pepper2 )
{
exidy_video_config(0x14, 0x04, TRUE);
targ_spec_flag = 0;
}
static DRIVER_INIT( fax )
{
exidy_video_config(0x04, 0x04, TRUE);
targ_spec_flag = 0;
/* reset the ROM bank */
fax_bank_select_w(0,0);
@ -1471,11 +1485,11 @@ static DRIVER_INIT( fax )
*
*************************************/
GAME( 1979, sidetrac, 0, sidetrac, sidetrac, sidetrac, ROT0, "Exidy", "Side Trak", 0 )
GAME( 1979, sidetrac, 0, sidetrac, sidetrac, sidetrac, ROT0, "Exidy", "Side Track", 0 )
GAME( 1980, targ, 0, targ, targ, targ, ROT0, "Exidy", "Targ", 0 )
GAME( 1980, targc, targ, targ, targ, targ, ROT0, "Exidy", "Targ (cocktail?)", 0 )
GAME( 1980, spectar, 0, targ, spectar, spectar, ROT0, "Exidy", "Spectar (revision 3)", 0 )
GAME( 1980, spectar1, spectar, targ, spectar, spectar, ROT0, "Exidy", "Spectar (revision 1?)", 0 )
GAME( 1980, spectar, 0, spectar, spectar, spectar, ROT0, "Exidy", "Spectar (revision 3)", 0 )
GAME( 1980, spectar1, spectar, spectar, spectar, spectar, ROT0, "Exidy", "Spectar (revision 1?)", 0 )
GAME( 1980, rallys, spectar, rallys, rallys, rallys, ROT0, "Novar", "Rallys (bootleg?)", 0 )
GAME( 1980, phantoma, spectar, rallys, phantoma, phantoma, ROT0, "Jeutel","Phantomas", 0 )

View File

@ -78,7 +78,7 @@
========================================================================
CPU #2
========================================================================
0000-01FF R/W xxxxxxxx Program RAM
0000-00FF R/W xxxxxxxx Program RAM
1000-1FFF R/W xxxxxxxx 6532 RIOT timer and I/O
2000-2FFF R/W xxxxxxxx 6821 PIA I/O
3000-3FFF R/W xxxxxxxx 8253 timer
@ -86,20 +86,17 @@
6000-6FFF W ------xx Control bits
W ------x- (6840 Channel 1 output enable)
W -------x (sound effects noise frequency select)
C000-FFFF R xxxxxxxx Program ROM
B000-FFFF R xxxxxxxx Program ROM
========================================================================
Interrupts:
INT generated by 6532 RIOT
INT generated by 6821 PIA and 6532 RIOT
========================================================================
***************************************************************************/
#include "driver.h"
#include "exidy.h"
#include "victory.h"
#include "machine/6821pia.h"
#include "sound/5220intf.h"
@ -141,33 +138,14 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( main_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
AM_RANGE(0x00, 0x03) AM_READ(input_port_0_r)
AM_RANGE(0x04, 0x07) AM_READ(input_port_1_r)
AM_RANGE(0x00, 0x00) AM_MIRROR(0x03) AM_READ(input_port_0_r)
AM_RANGE(0x04, 0x04) AM_MIRROR(0x03) AM_READ(input_port_1_r)
AM_RANGE(0x08, 0x08) AM_READ(input_port_2_r)
AM_RANGE(0x0a, 0x0a) AM_READ(input_port_3_r)
AM_RANGE(0x0c, 0x0c) AM_READ(input_port_4_r)
AM_RANGE(0x0e, 0x0e) AM_READ(input_port_5_r)
AM_RANGE(0x10, 0x13) AM_WRITE(lamp_control_w)
ADDRESS_MAP_END
/*************************************
*
* Sound CPU memory handlers
*
*************************************/
static ADDRESS_MAP_START( audio_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x0f00) AM_RAM
AM_RANGE(0x1000, 0x107f) AM_MIRROR(0x0f80) AM_READWRITE(exidy_shriot_r, exidy_shriot_w)
AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x0ffc) AM_READWRITE(pia_1_r, pia_1_w)
AM_RANGE(0x3000, 0x3003) AM_MIRROR(0x0ffc) AM_READWRITE(exidy_sh8253_r, exidy_sh8253_w)
AM_RANGE(0x4000, 0x4fff) AM_NOP
AM_RANGE(0x5000, 0x5007) AM_MIRROR(0x0ff8) AM_READWRITE(exidy_sh6840_r, exidy_sh6840_w)
AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x0ffc) AM_WRITE(exidy_sfxctrl_w)
AM_RANGE(0x7000, 0xafff) AM_NOP
AM_RANGE(0xb000, 0xffff) AM_ROM
AM_RANGE(0x10, 0x10) AM_MIRROR(0x03) AM_WRITE(lamp_control_w)
AM_RANGE(0x14, 0xff) AM_NOP
ADDRESS_MAP_END
@ -222,21 +200,6 @@ INPUT_PORTS_END
/*************************************
*
* Sound definitions
*
*************************************/
static const struct CustomSound_interface custom_interface =
{
victory_sh_start,
0,
victory_sh_reset,
};
/*************************************
*
* Machine driver
@ -251,10 +214,6 @@ static MACHINE_DRIVER_START( victory )
MDRV_CPU_IO_MAP(main_io_map,0)
MDRV_CPU_VBLANK_INT(victory_vblank_interrupt,1)
/* audio CPU */
MDRV_CPU_ADD(M6502, VICTORY_AUDIO_CPU_CLOCK)
MDRV_CPU_PROGRAM_MAP(audio_map,0)
MDRV_NVRAM_HANDLER(generic_0fill)
/* video hardware */
@ -267,14 +226,9 @@ static MACHINE_DRIVER_START( victory )
MDRV_VIDEO_START(victory)
MDRV_VIDEO_UPDATE(victory)
/* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD(CUSTOM, 0)
MDRV_SOUND_CONFIG(custom_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
/* audio hardware */
MDRV_IMPORT_FROM(victory_audio)
MDRV_SOUND_ADD(TMS5220, 640000)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_DRIVER_END
@ -358,5 +312,5 @@ ROM_END
*
*************************************/
GAME( 1982, victory, 0, victory, victory, 0, ROT0, "Exidy", "Victory", 0 )
GAME( 1982, victorba, victory, victory, victory, 0, ROT0, "Exidy", "Victor Banana", 0 )
GAME( 1982, victory, 0, victory, victory, 0, ROT0, "Exidy", "Victory", 0 )
GAME( 1982, victorba, victory, victory, victory, 0, ROT0, "Exidy", "Victor Banana", 0 )

View File

@ -5,12 +5,4 @@
***************************************************************************/
#define BERZERK_MASTER_CLOCK (10000000)
#define BERZERK_S14001A_CLOCK (BERZERK_MASTER_CLOCK / 2)
/*----------- defined in audio/berzerk.c -----------*/
MACHINE_DRIVER_EXTERN( berzerk_audio );
WRITE8_HANDLER( berzerk_audio_w );
READ8_HANDLER( berzerk_audio_r );
#define BERZERK_MASTER_CLOCK (XTAL_10MHz)

View File

@ -26,13 +26,6 @@
void *exidy_sh_start(int clock, const struct CustomSound_interface *config);
void exidy_sh_reset(void *token);
void *victory_sh_start(int clock, const struct CustomSound_interface *config);
void victory_sh_reset(void *token);
void *berzerk_sh_start(int clock, const struct CustomSound_interface *config);
void berzerk_sh_reset(void *token);
WRITE8_HANDLER( exidy_shriot_w );
WRITE8_HANDLER( exidy_sfxctrl_w );
WRITE8_HANDLER( exidy_sh8253_w );
@ -42,23 +35,19 @@ READ8_HANDLER( exidy_shriot_r );
READ8_HANDLER( exidy_sh8253_r );
READ8_HANDLER( exidy_sh6840_r );
MACHINE_DRIVER_EXTERN( victory_audio );
READ8_HANDLER( victory_sound_response_r );
READ8_HANDLER( victory_sound_status_r );
WRITE8_HANDLER( victory_sound_command_w );
MACHINE_DRIVER_EXTERN( berzerk_audio );
WRITE8_HANDLER( berzerk_audio_w );
READ8_HANDLER( berzerk_audio_r );
WRITE8_HANDLER( mtrap_voiceio_w );
READ8_HANDLER( mtrap_voiceio_r );
/*----------- defined in audio/targ.c -----------*/
extern UINT8 targ_spec_flag;
void targ_sh_start(void);
WRITE8_HANDLER( targ_sh_w );
/*----------- defined in video/exidy.c -----------*/
extern UINT8 *exidy_videoram;

19
src/mame/includes/targ.h Normal file
View File

@ -0,0 +1,19 @@
/*************************************************************************
Targ hardware
*************************************************************************/
#define TARG_TONE_REGION (REGION_USER1)
/*----------- defined in audio/targ.c -----------*/
WRITE8_HANDLER( targ_audio_1_w );
WRITE8_HANDLER( targ_audio_2_w );
WRITE8_HANDLER( spectar_audio_2_w );
MACHINE_DRIVER_EXTERN( spectar_audio );
MACHINE_DRIVER_EXTERN( targ_audio );

View File

@ -0,0 +1,22 @@
/***************************************************************************
Victory system
****************************************************************************/
#define VICTORY_MAIN_CPU_CLOCK (XTAL_8MHz / 2)
/*----------- defined in video/victory.c -----------*/
extern UINT8 *victory_videoram;
extern UINT8 *victory_charram;
VIDEO_START( victory );
VIDEO_UPDATE( victory );
INTERRUPT_GEN( victory_vblank_interrupt );
READ8_HANDLER( victory_video_control_r );
WRITE8_HANDLER( victory_video_control_w );
WRITE8_HANDLER( victory_paletteram_w );

View File

@ -5,7 +5,6 @@
*************************************************************************/
#include "driver.h"
#include "exidy.h"
UINT8 *exidy_videoram;

View File

@ -43,6 +43,7 @@ static struct
/* from what I can tell, this should be divided by 32, not 8 */
/* but the interrupt test does some precise timing, and fails */
/* if it's not 8 */
#define VICTORY_MICRO_STATE_CLOCK (XTAL_11_289MHz)
#define MICRO_STATE_CLOCK_PERIOD ATTOTIME_IN_HZ(VICTORY_MICRO_STATE_CLOCK / 8)