mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
- Fixed invalid memory_install_*_handler calls in drivers/williams.c
- Emulated external OR circuit for all drivers using the PIA chip. This used to be internal to the PIA emulation, but, in fact, this is external logic. The PIA has two seperate INTA and INTB out lines. This fixes at least PlayBall
This commit is contained in:
parent
bef6265307
commit
cb6dbf5369
@ -527,7 +527,9 @@ static WRITE8_HANDLER( csdeluxe_portb_w )
|
||||
|
||||
static void csdeluxe_irq(int state)
|
||||
{
|
||||
cpunum_set_input_line(csdeluxe_sound_cpu, 4, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
int combined_state = pia_get_irq_a(0) | pia_get_irq_b(0);
|
||||
|
||||
cpunum_set_input_line(csdeluxe_sound_cpu, 4, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
static TIMER_CALLBACK( csdeluxe_delayed_data_w )
|
||||
@ -647,7 +649,9 @@ static WRITE8_HANDLER( soundsgood_portb_w )
|
||||
|
||||
static void soundsgood_irq(int state)
|
||||
{
|
||||
cpunum_set_input_line(soundsgood_sound_cpu, 4, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
int combined_state = pia_get_irq_a(1) | pia_get_irq_b(1);
|
||||
|
||||
cpunum_set_input_line(soundsgood_sound_cpu, 4, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
static TIMER_CALLBACK( soundsgood_delayed_data_w )
|
||||
@ -738,7 +742,9 @@ static WRITE8_HANDLER( turbocs_portb_w )
|
||||
|
||||
static void turbocs_irq(int state)
|
||||
{
|
||||
cpunum_set_input_line(turbocs_sound_cpu, M6809_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
int combined_state = pia_get_irq_a(0) | pia_get_irq_b(0);
|
||||
|
||||
cpunum_set_input_line(turbocs_sound_cpu, M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
static TIMER_CALLBACK( turbocs_delayed_data_w )
|
||||
@ -869,7 +875,9 @@ static WRITE8_HANDLER( squawkntalk_portb2_w )
|
||||
|
||||
static void squawkntalk_irq(int state)
|
||||
{
|
||||
cpunum_set_input_line(squawkntalk_sound_cpu, M6808_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
int combined_state = pia_get_irq_a(0) | pia_get_irq_b(0) | pia_get_irq_a(1) | pia_get_irq_b(1);
|
||||
|
||||
cpunum_set_input_line(squawkntalk_sound_cpu, M6808_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
static TIMER_CALLBACK( squawkntalk_delayed_data_w )
|
||||
|
@ -441,20 +441,43 @@ static MACHINE_RESET( mpu4 )
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static void cpu0_irq(int state)
|
||||
static void pia_cpu0_irq(int state)
|
||||
{
|
||||
int combined_state = pia_get_irq_a(0) | pia_get_irq_b(0) |
|
||||
pia_get_irq_a(1) | pia_get_irq_b(1) |
|
||||
pia_get_irq_a(2) | pia_get_irq_b(2) |
|
||||
pia_get_irq_a(3) | pia_get_irq_b(3) |
|
||||
pia_get_irq_a(4) | pia_get_irq_b(4) |
|
||||
pia_get_irq_a(5) | pia_get_irq_b(5);
|
||||
|
||||
if (!serial_card_connected)
|
||||
{
|
||||
cpunum_set_input_line(0, M6809_IRQ_LINE, state?ASSERT_LINE:CLEAR_LINE);
|
||||
LOG(("6809 int%d \n",state));
|
||||
cpunum_set_input_line(0, M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
LOG(("6809 int%d \n", combined_state));
|
||||
}
|
||||
else
|
||||
{
|
||||
cpunum_set_input_line(0, M6809_FIRQ_LINE, state?ASSERT_LINE:CLEAR_LINE);
|
||||
LOG(("6809 fint%d \n",state));
|
||||
cpunum_set_input_line(0, M6809_FIRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
LOG(("6809 fint%d \n", combined_state));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void ptm_cpu0_irq(int state)
|
||||
{
|
||||
if (!serial_card_connected)
|
||||
{
|
||||
cpunum_set_input_line(0, M6809_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
LOG(("6809 int%d \n", state));
|
||||
}
|
||||
else
|
||||
{
|
||||
cpunum_set_input_line(0, M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
LOG(("6809 fint%d \n", state));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
static WRITE8_HANDLER( bankswitch_w )
|
||||
{
|
||||
@ -490,7 +513,7 @@ static const ptm6840_interface ptm_ic2_intf =
|
||||
MPU4_MASTER_CLOCK/4,
|
||||
{ 0,0,0 },
|
||||
{ ic2_o1_callback, ic2_o2_callback, ic2_o3_callback },
|
||||
cpu0_irq
|
||||
ptm_cpu0_irq
|
||||
};
|
||||
|
||||
/***************************************************************************
|
||||
@ -542,7 +565,7 @@ static const pia6821_interface pia_ic3_intf =
|
||||
{
|
||||
/*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
|
||||
/*outputs: A/B,CA/B2 */ pia_ic3_porta_w, pia_ic3_portb_w, pia_ic3_ca2_w, pia_ic3_cb2_w,
|
||||
/*irqs : A/B */ cpu0_irq, cpu0_irq
|
||||
/*irqs : A/B */ pia_cpu0_irq, pia_cpu0_irq
|
||||
};
|
||||
|
||||
/*---------------------------------------
|
||||
@ -672,7 +695,7 @@ static const pia6821_interface pia_ic4_intf =
|
||||
{
|
||||
/*inputs : A/B,CA/B1,CA/B2 */ 0, pia_ic4_portb_r, 0, 0, 0, 0,
|
||||
/*outputs: A/B,CA/B2 */ pia_ic4_porta_w, 0, pia_ic4_ca2_w, 0,
|
||||
/*irqs : A/B */ cpu0_irq, cpu0_irq
|
||||
/*irqs : A/B */ pia_cpu0_irq, pia_cpu0_irq
|
||||
};
|
||||
|
||||
//IC5
|
||||
@ -768,7 +791,7 @@ static const pia6821_interface pia_ic5_intf =
|
||||
{
|
||||
/*inputs : A/B,CA/B1,CA/B2 */ pia_ic5_porta_r, pia_ic5_portb_r, 0, 0, 0, 0,
|
||||
/*outputs: A/B,CA/B2 */ 0, 0, pia_ic5_ca2_w, pia_ic5_cb2_w,
|
||||
/*irqs : A/B */ cpu0_irq, cpu0_irq
|
||||
/*irqs : A/B */ pia_cpu0_irq, pia_cpu0_irq
|
||||
};
|
||||
|
||||
//IC6
|
||||
@ -826,7 +849,7 @@ static const pia6821_interface pia_ic6_intf =
|
||||
{
|
||||
/*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
|
||||
/*outputs: A/B,CA/B2 */ pia_ic6_porta_w, pia_ic6_portb_w, pia_ic6_ca2_w, pia_ic6_cb2_w,
|
||||
/*irqs : A/B */ cpu0_irq, cpu0_irq
|
||||
/*irqs : A/B */ pia_cpu0_irq, pia_cpu0_irq
|
||||
};
|
||||
|
||||
//IC7
|
||||
@ -902,7 +925,7 @@ static const pia6821_interface pia_ic7_intf =
|
||||
{
|
||||
/*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
|
||||
/*outputs: A/B,CA/B2 */ pia_ic7_porta_w, pia_ic7_portb_w, pia_ic7_ca2_w, pia_ic7_cb2_w,
|
||||
/*irqs : A/B */ cpu0_irq, cpu0_irq
|
||||
/*irqs : A/B */ pia_cpu0_irq, pia_cpu0_irq
|
||||
};
|
||||
|
||||
static READ8_HANDLER( pia_ic8_porta_r )
|
||||
@ -950,7 +973,7 @@ static const pia6821_interface pia_ic8_intf =
|
||||
{
|
||||
/*inputs : A/B,CA/B1,CA/B2 */ pia_ic8_porta_r, 0, 0, 0, 0, 0,
|
||||
/*outputs: A/B,CA/B2 */ 0, pia_ic8_portb_w, pia_ic8_ca2_w, pia_ic8_cb2_w,
|
||||
/*irqs : A/B */ cpu0_irq, cpu0_irq
|
||||
/*irqs : A/B */ pia_cpu0_irq, pia_cpu0_irq
|
||||
};
|
||||
|
||||
|
||||
|
@ -113,7 +113,9 @@ static WRITE8_HANDLER( audio_2_command_w );
|
||||
|
||||
static void main_cpu_irq(int state)
|
||||
{
|
||||
cpunum_set_input_line(0, M6809_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
int combined_state = pia_get_irq_a(1) | pia_get_irq_b(1) | pia_get_irq_b(2);
|
||||
|
||||
cpunum_set_input_line(0, M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
|
@ -73,7 +73,10 @@ static WRITE8_HANDLER( flipscreen_w );
|
||||
|
||||
static void main_cpu_irq(int state)
|
||||
{
|
||||
cpunum_set_input_line(0, M6809_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
int combined_state = pia_get_irq_a(0) | pia_get_irq_b(0) |
|
||||
pia_get_irq_a(1) | pia_get_irq_b(1);
|
||||
|
||||
cpunum_set_input_line(0, M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
|
@ -231,7 +231,11 @@ static READ8_HANDLER( gfx_rom_r );
|
||||
|
||||
static void main_cpu_irq(int state)
|
||||
{
|
||||
cpunum_set_input_line(0, M6809_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
int combined_state = pia_get_irq_a(1) | pia_get_irq_b(1) |
|
||||
pia_get_irq_b(2) |
|
||||
pia_get_irq_a(3) | pia_get_irq_b(3);
|
||||
|
||||
cpunum_set_input_line(0, M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
|
@ -118,8 +118,10 @@ static WRITE8_HANDLER( port_b_u1_w )
|
||||
|
||||
static void main_cpu_irq(int state)
|
||||
{
|
||||
logerror("GEN IRQ: %x\n", state);
|
||||
cpunum_set_input_line(0, 0, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
int combined_state = pia_get_irq_a(0) | pia_get_irq_b(0);
|
||||
|
||||
logerror("GEN IRQ: %x\n", combined_state);
|
||||
cpunum_set_input_line(0, 0, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
|
@ -559,6 +559,22 @@ static ADDRESS_MAP_START( williams_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( williams_extra_ram_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x8fff) AM_READWRITE(MRA8_BANK1, MWA8_RAM) AM_BASE(&williams_videoram)
|
||||
AM_RANGE(0x9000, 0xbfff) AM_RAM
|
||||
AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x03f0) AM_WRITE(williams_paletteram_w) AM_BASE(&paletteram)
|
||||
AM_RANGE(0xc804, 0xc807) AM_MIRROR(0x00f0) AM_READWRITE(pia_0_r, pia_0_w)
|
||||
AM_RANGE(0xc80c, 0xc80f) AM_MIRROR(0x00f0) AM_READWRITE(pia_1_r, pia_1_w)
|
||||
AM_RANGE(0xc900, 0xc9ff) AM_WRITE(sinistar_vram_select_w)
|
||||
AM_RANGE(0xca00, 0xca07) AM_MIRROR(0x00f8) AM_WRITE(williams_blitter_w)
|
||||
AM_RANGE(0xcb00, 0xcbff) AM_READ(williams_video_counter_r)
|
||||
AM_RANGE(0xcbff, 0xcbff) AM_WRITE(williams_watchdog_reset_w)
|
||||
AM_RANGE(0xcc00, 0xcfff) AM_READWRITE(MRA8_RAM, williams_cmos_w) AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
|
||||
AM_RANGE(0xd000, 0xdfff) AM_RAM
|
||||
AM_RANGE(0xe000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
@ -616,6 +632,29 @@ static ADDRESS_MAP_START( williams2_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( williams2_extra_ram_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_READWRITE(MRA8_BANK1, MWA8_RAM) AM_BASE(&williams_videoram)
|
||||
AM_RANGE(0x8000, 0xbfff) AM_RAM
|
||||
AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(MRA8_RAM, williams2_tileram_w) AM_BASE(&williams2_tileram)
|
||||
AM_RANGE(0xc800, 0xc87f) AM_WRITE(williams2_bank_select_w)
|
||||
AM_RANGE(0xc880, 0xc887) AM_MIRROR(0x0078) AM_WRITE(williams_blitter_w)
|
||||
AM_RANGE(0xc900, 0xc97f) AM_WRITE(williams2_watchdog_reset_w)
|
||||
AM_RANGE(0xc980, 0xc983) AM_MIRROR(0x0070) AM_READWRITE(pia_1_r, pia_1_w)
|
||||
AM_RANGE(0xc984, 0xc987) AM_MIRROR(0x0070) AM_READWRITE(pia_0_r, pia_0_w)
|
||||
AM_RANGE(0xc98c, 0xc98f) AM_MIRROR(0x0070) AM_WRITE(williams2_7segment_w)
|
||||
AM_RANGE(0xcb00, 0xcb1f) AM_WRITE(williams2_fg_select_w)
|
||||
AM_RANGE(0xcb20, 0xcb3f) AM_WRITE(williams2_bg_select_w)
|
||||
AM_RANGE(0xcb40, 0xcb5f) AM_WRITE(williams2_xscroll_low_w)
|
||||
AM_RANGE(0xcb60, 0xcb7f) AM_WRITE(williams2_xscroll_high_w)
|
||||
AM_RANGE(0xcb80, 0xcb9f) AM_WRITE(defender_video_control_w)
|
||||
AM_RANGE(0xcba0, 0xcbbf) AM_WRITE(williams2_blit_window_enable_w)
|
||||
AM_RANGE(0xcbe0, 0xcbef) AM_READ(williams2_video_counter_r)
|
||||
AM_RANGE(0xcc00, 0xcfff) AM_READWRITE(MRA8_RAM, williams_cmos_w) AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
|
||||
AM_RANGE(0xd000, 0xdfff) AM_RAM
|
||||
AM_RANGE(0xe000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
@ -1418,6 +1457,16 @@ static MACHINE_DRIVER_START( williams )
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static MACHINE_DRIVER_START( williams_extra_ram )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_IMPORT_FROM(williams)
|
||||
|
||||
MDRV_CPU_MODIFY("main")
|
||||
MDRV_CPU_PROGRAM_MAP(williams_extra_ram_map,0)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static MACHINE_DRIVER_START( alienar )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -1434,7 +1483,7 @@ MACHINE_DRIVER_END
|
||||
static MACHINE_DRIVER_START( sinistar )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_IMPORT_FROM(williams)
|
||||
MDRV_IMPORT_FROM(williams_extra_ram)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SOUND_ADD(HC55516, 0)
|
||||
@ -1445,10 +1494,14 @@ MACHINE_DRIVER_END
|
||||
static MACHINE_DRIVER_START( playball )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_IMPORT_FROM(sinistar)
|
||||
MDRV_IMPORT_FROM(williams)
|
||||
|
||||
/* video hardware */
|
||||
MDRV_SCREEN_VISIBLE_AREA(6, 298-1, 8, 239-1)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SOUND_ADD(HC55516, 0)
|
||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
@ -1502,6 +1555,16 @@ static MACHINE_DRIVER_START( williams2 )
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static MACHINE_DRIVER_START( williams2_extra_ram )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_IMPORT_FROM(williams2)
|
||||
|
||||
MDRV_CPU_MODIFY("main")
|
||||
MDRV_CPU_PROGRAM_MAP(williams2_extra_ram_map,0)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static MACHINE_DRIVER_START( joust2 )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -2593,13 +2656,6 @@ static DRIVER_INIT( sinistar )
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0x7400);
|
||||
CONFIGURE_PIAS(williams_49way_pia_0_intf, williams_pia_1_intf, sinistar_snd_pia_intf);
|
||||
|
||||
/* install clipping circuit control */
|
||||
memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xc900, 0xc9ff, 0, 0, sinistar_vram_select_w);
|
||||
|
||||
/* install RAM instead of ROM in the Dxxx slot */
|
||||
memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xd000, 0xdfff, 0, 0, MRA8_RAM);
|
||||
memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xd000, 0xdfff, 0, 0, MWA8_RAM);
|
||||
}
|
||||
|
||||
|
||||
@ -2676,11 +2732,7 @@ static DRIVER_INIT( mysticm )
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0x9000);
|
||||
CONFIGURE_TILEMAP(WILLIAMS_TILEMAP_MYSTICM);
|
||||
CONFIGURE_PIAS(mysticm_pia_0_intf, williams2_pia_1_intf, williams2_snd_pia_intf);
|
||||
|
||||
/* install RAM instead of ROM in the Dxxx slot */
|
||||
memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xd000, 0xdfff, 0, 0, MRA8_RAM);
|
||||
memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xd000, 0xdfff, 0, 0, MWA8_RAM);
|
||||
CONFIGURE_PIAS(mysticm_pia_0_intf, mysticm_pia_1_intf, williams2_snd_pia_intf);
|
||||
}
|
||||
|
||||
|
||||
@ -2688,7 +2740,7 @@ static DRIVER_INIT( tshoot )
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0x9000);
|
||||
CONFIGURE_TILEMAP(WILLIAMS_TILEMAP_TSHOOT);
|
||||
CONFIGURE_PIAS(tshoot_pia_0_intf, williams2_pia_1_intf, tshoot_snd_pia_intf);
|
||||
CONFIGURE_PIAS(tshoot_pia_0_intf, tshoot_pia_1_intf, tshoot_snd_pia_intf);
|
||||
}
|
||||
|
||||
|
||||
@ -2697,10 +2749,6 @@ static DRIVER_INIT( inferno )
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0x9000);
|
||||
CONFIGURE_TILEMAP(WILLIAMS_TILEMAP_TSHOOT);
|
||||
CONFIGURE_PIAS(williams2_muxed_pia_0_intf, williams2_pia_1_intf, williams2_snd_pia_intf);
|
||||
|
||||
/* install RAM instead of ROM in the Dxxx slot */
|
||||
memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xd000, 0xdfff, 0, 0, MRA8_RAM);
|
||||
memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xd000, 0xdfff, 0, 0, MWA8_RAM);
|
||||
}
|
||||
|
||||
|
||||
@ -2720,49 +2768,49 @@ static DRIVER_INIT( joust2 )
|
||||
*************************************/
|
||||
|
||||
/* Defender hardware games */
|
||||
GAME( 1980, defender, 0, defender, defender, defender, ROT0, "Williams", "Defender (Red label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, defendg, defender, defender, defender, defender, ROT0, "Williams", "Defender (Green label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, defendw, defender, defender, defender, defender, ROT0, "Williams", "Defender (White label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, defndjeu, defender, defender, defender, defndjeu, ROT0, "Jeutel", "Defender (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, tornado1, defender, defender, defender, defndjeu, ROT0, "Jeutel", "Tornado (bootleg set 1)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, tornado2, defender, defender, defender, defndjeu, ROT0, "Jeutel", "Tornado (bootleg set 2)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // bad dump?
|
||||
GAME( 1980, zero, defender, defender, defender, defndjeu, ROT0, "Jeutel", "Zero", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, zero2, defender, defender, defender, defndjeu, ROT0, "Amtec", "Zero (set 2)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, defcmnd, defender, defender, defender, defender, ROT0, "bootleg", "Defense Command (set 1)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1981, defence, defender, defender, defender, defender, ROT0, "Outer Limits", "Defence Command", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1981, startrkd, defender, defender, defender, defender, ROT0, "bootleg", "Star Trek (Defender bootleg)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, mayday, 0, defender, mayday, mayday, ROT0, "<unknown>", "Mayday (set 1)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, maydaya, mayday, defender, mayday, mayday, ROT0, "<unknown>", "Mayday (set 2)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, maydayb, mayday, defender, mayday, mayday, ROT0, "<unknown>", "Mayday (set 3)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1981, colony7, 0, defender, colony7, defender, ROT270, "Taito", "Colony 7 (set 1)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1981, colony7a, colony7, defender, colony7, defender, ROT270, "Taito", "Colony 7 (set 2)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, jin, 0, jin, jin, defender, ROT90, "Falcon", "Jin", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, defender, 0, defender, defender, defender, ROT0, "Williams", "Defender (Red label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, defendg, defender, defender, defender, defender, ROT0, "Williams", "Defender (Green label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, defendw, defender, defender, defender, defender, ROT0, "Williams", "Defender (White label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, defndjeu, defender, defender, defender, defndjeu, ROT0, "Jeutel", "Defender (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, tornado1, defender, defender, defender, defndjeu, ROT0, "Jeutel", "Tornado (bootleg set 1)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, tornado2, defender, defender, defender, defndjeu, ROT0, "Jeutel", "Tornado (bootleg set 2)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // bad dump?
|
||||
GAME( 1980, zero, defender, defender, defender, defndjeu, ROT0, "Jeutel", "Zero", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, zero2, defender, defender, defender, defndjeu, ROT0, "Amtec", "Zero (set 2)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, defcmnd, defender, defender, defender, defender, ROT0, "bootleg", "Defense Command (set 1)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1981, defence, defender, defender, defender, defender, ROT0, "Outer Limits", "Defence Command", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1981, startrkd, defender, defender, defender, defender, ROT0, "bootleg", "Star Trek (Defender bootleg)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, mayday, 0, defender, mayday, mayday, ROT0, "<unknown>", "Mayday (set 1)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, maydaya, mayday, defender, mayday, mayday, ROT0, "<unknown>", "Mayday (set 2)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, maydayb, mayday, defender, mayday, mayday, ROT0, "<unknown>", "Mayday (set 3)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1981, colony7, 0, defender, colony7, defender, ROT270, "Taito", "Colony 7 (set 1)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1981, colony7a, colony7, defender, colony7, defender, ROT270, "Taito", "Colony 7 (set 2)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, jin, 0, jin, jin, defender, ROT90, "Falcon", "Jin", GAME_SUPPORTS_SAVE )
|
||||
|
||||
/* Standard Williams hardware */
|
||||
GAME( 1981, stargate, 0, williams, stargate, stargate, ROT0, "Williams", "Stargate", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, robotron, 0, williams, robotron, robotron, ROT0, "Williams", "Robotron (Solid Blue label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, robotryo, robotron, williams, robotron, robotron, ROT0, "Williams", "Robotron (Yellow/Orange label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, joust, 0, williams, joust, joust, ROT0, "Williams", "Joust (White/Green label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, joustr, joust, williams, joust, joust, ROT0, "Williams", "Joust (Solid Red label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, joustwr, joust, williams, joust, joust, ROT0, "Williams", "Joust (White/Red label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, bubbles, 0, williams, bubbles, bubbles, ROT0, "Williams", "Bubbles", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, bubblesr, bubbles, williams, bubbles, bubbles, ROT0, "Williams", "Bubbles (Solid Red label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, bubblesp, bubbles, williams, bubbles, bubbles, ROT0, "Williams", "Bubbles (prototype version)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, splat, 0, williams, splat, splat, ROT0, "Williams", "Splat!", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, sinistar, 0, sinistar, sinistar, sinistar, ROT270, "Williams", "Sinistar (revision 3)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, sinista1, sinistar, sinistar, sinistar, sinistar, ROT270, "Williams", "Sinistar (prototype version)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, sinista2, sinistar, sinistar, sinistar, sinistar, ROT270, "Williams", "Sinistar (revision 2)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1983, playball, 0, playball, playball, playball, ROT270, "Williams", "PlayBall! (prototype)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1983, blaster, 0, blaster, blaster, blaster, ROT0, "Williams", "Blaster", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1983, blast30, blaster, blaster, blaster, blaster, ROT0, "Williams", "Blaster (early 30 wave version)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1983, blastkit, blaster, blaster, blastkit, blastkit, ROT0, "Williams", "Blaster (kit)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1985, spdball, 0, williams, spdball, spdball, ROT0, "Williams", "Speed Ball (prototype)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1985, alienar, 0, alienar, alienar, alienar, ROT0, "Duncan Brown", "Alien Arena", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1985, alienaru, alienar, alienar, alienar, alienaru, ROT0, "Duncan Brown", "Alien Arena (Stargate Upgrade)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1987, lottofun, 0, williams, lottofun, lottofun, ROT0, "H.A.R. Management", "Lotto Fun", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1981, stargate, 0, williams, stargate, stargate, ROT0, "Williams", "Stargate", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, robotron, 0, williams, robotron, robotron, ROT0, "Williams", "Robotron (Solid Blue label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, robotryo, robotron, williams, robotron, robotron, ROT0, "Williams", "Robotron (Yellow/Orange label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, joust, 0, williams, joust, joust, ROT0, "Williams", "Joust (White/Green label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, joustr, joust, williams, joust, joust, ROT0, "Williams", "Joust (Solid Red label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, joustwr, joust, williams, joust, joust, ROT0, "Williams", "Joust (White/Red label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, bubbles, 0, williams, bubbles, bubbles, ROT0, "Williams", "Bubbles", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, bubblesr, bubbles, williams, bubbles, bubbles, ROT0, "Williams", "Bubbles (Solid Red label)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, bubblesp, bubbles, williams, bubbles, bubbles, ROT0, "Williams", "Bubbles (prototype version)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, splat, 0, williams, splat, splat, ROT0, "Williams", "Splat!", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, sinistar, 0, sinistar, sinistar, sinistar, ROT270, "Williams", "Sinistar (revision 3)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, sinista1, sinistar, sinistar, sinistar, sinistar, ROT270, "Williams", "Sinistar (prototype version)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1982, sinista2, sinistar, sinistar, sinistar, sinistar, ROT270, "Williams", "Sinistar (revision 2)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1983, playball, 0, playball, playball, playball, ROT270, "Williams", "PlayBall! (prototype)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1983, blaster, 0, blaster, blaster, blaster, ROT0, "Williams", "Blaster", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1983, blast30, blaster, blaster, blaster, blaster, ROT0, "Williams", "Blaster (early 30 wave version)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1983, blastkit, blaster, blaster, blastkit, blastkit, ROT0, "Williams", "Blaster (kit)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1985, spdball, 0, williams, spdball, spdball, ROT0, "Williams", "Speed Ball (prototype)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1985, alienar, 0, alienar, alienar, alienar, ROT0, "Duncan Brown", "Alien Arena", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1985, alienaru, alienar, alienar, alienar, alienaru, ROT0, "Duncan Brown", "Alien Arena (Stargate Upgrade)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1987, lottofun, 0, williams, lottofun, lottofun, ROT0, "H.A.R. Management", "Lotto Fun", GAME_SUPPORTS_SAVE )
|
||||
|
||||
/* 2nd Generation Williams hardware with tilemaps */
|
||||
GAME( 1983, mysticm, 0, williams2,mysticm, mysticm, ROT0, "Williams", "Mystic Marathon", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1984, tshoot, 0, williams2,tshoot, tshoot, ROT0, "Williams", "Turkey Shoot", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1984, inferno, 0, williams2,inferno, inferno, ROT0, "Williams", "Inferno", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1986, joust2, 0, joust2, joust2, joust2, ROT270, "Williams", "Joust 2 - Survival of the Fittest (set 1)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1983, mysticm, 0, williams2_extra_ram, mysticm, mysticm, ROT0, "Williams", "Mystic Marathon", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1984, tshoot, 0, williams2, tshoot, tshoot, ROT0, "Williams", "Turkey Shoot", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1984, inferno, 0, williams2_extra_ram, inferno, inferno, ROT0, "Williams", "Inferno", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1986, joust2, 0, joust2, joust2, joust2, ROT270, "Williams", "Joust 2 - Survival of the Fittest (set 1)", GAME_SUPPORTS_SAVE )
|
||||
|
@ -36,7 +36,9 @@ extern const pia6821_interface williams2_snd_pia_intf;
|
||||
|
||||
/* Game-specific later-Williams PIA interfaces */
|
||||
extern const pia6821_interface mysticm_pia_0_intf;
|
||||
extern const pia6821_interface mysticm_pia_1_intf;
|
||||
extern const pia6821_interface tshoot_pia_0_intf;
|
||||
extern const pia6821_interface tshoot_pia_1_intf;
|
||||
extern const pia6821_interface tshoot_snd_pia_intf;
|
||||
extern const pia6821_interface joust2_pia_1_intf;
|
||||
|
||||
|
@ -604,9 +604,9 @@ WRITE8_HANDLER( zwackery_ca2_w )
|
||||
}
|
||||
|
||||
|
||||
void zwackery_pia_irq(int state)
|
||||
static void zwackery_pia_irq(int state)
|
||||
{
|
||||
v493_irq_state = state;
|
||||
v493_irq_state = pia_get_irq_a(2) | pia_get_irq_b(2);
|
||||
update_mcr68_interrupts();
|
||||
}
|
||||
|
||||
|
@ -385,15 +385,19 @@ static WRITE8_HANDLER( sync_pia_4_porta_w )
|
||||
|
||||
static void qix_pia_dint(int state)
|
||||
{
|
||||
int combined_state = pia_get_irq_a(3) | pia_get_irq_b(3);
|
||||
|
||||
/* DINT is connected to the data CPU's IRQ line */
|
||||
cpunum_set_input_line(0, M6809_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
cpunum_set_input_line(0, M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
static void qix_pia_sint(int state)
|
||||
{
|
||||
int combined_state = pia_get_irq_a(4) | pia_get_irq_b(4);
|
||||
|
||||
/* SINT is connected to the sound CPU's IRQ line */
|
||||
cpunum_set_input_line(2, M6802_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
cpunum_set_input_line(2, M6802_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
|
@ -47,6 +47,8 @@ static READ8_HANDLER( williams_49way_port_0_r );
|
||||
|
||||
/* newer-Williams routines */
|
||||
static WRITE8_HANDLER( williams2_snd_cmd_w );
|
||||
static void mysticm_main_irq(int state);
|
||||
static void tshoot_main_irq(int state);
|
||||
|
||||
/* Lotto Fun-specific code */
|
||||
static READ8_HANDLER( lottofun_input_port_0_r );
|
||||
@ -209,7 +211,15 @@ const pia6821_interface mysticm_pia_0_intf =
|
||||
{
|
||||
/*inputs : A/B,CA/B1,CA/B2 */ input_port_0_r, input_port_1_r, 0, 0, 0, 0,
|
||||
/*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
|
||||
/*irqs : A/B */ williams_main_firq, williams_main_irq
|
||||
/*irqs : A/B */ williams_main_firq, mysticm_main_irq
|
||||
};
|
||||
|
||||
/* Mystic Marathon PIA 1 */
|
||||
const pia6821_interface mysticm_pia_1_intf =
|
||||
{
|
||||
/*inputs : A/B,CA/B1,CA/B2 */ input_port_2_r, 0, 0, 0, 0, 0,
|
||||
/*outputs: A/B,CA/B2 */ 0, williams2_snd_cmd_w, 0, pia_2_ca1_w,
|
||||
/*irqs : A/B */ mysticm_main_irq, mysticm_main_irq
|
||||
};
|
||||
|
||||
/* Turkey Shoot PIA 0 */
|
||||
@ -217,7 +227,15 @@ const pia6821_interface tshoot_pia_0_intf =
|
||||
{
|
||||
/*inputs : A/B,CA/B1,CA/B2 */ tshoot_input_port_0_3_r, input_port_1_r, 0, 0, 0, 0,
|
||||
/*outputs: A/B,CA/B2 */ 0, tshoot_lamp_w, williams_port_select_w, 0,
|
||||
/*irqs : A/B */ williams_main_irq, williams_main_irq
|
||||
/*irqs : A/B */ tshoot_main_irq, tshoot_main_irq
|
||||
};
|
||||
|
||||
/* Turkey Shoot PIA 1 */
|
||||
const pia6821_interface tshoot_pia_1_intf =
|
||||
{
|
||||
/*inputs : A/B,CA/B1,CA/B2 */ input_port_2_r, 0, 0, 0, 0, 0,
|
||||
/*outputs: A/B,CA/B2 */ 0, williams2_snd_cmd_w, 0, pia_2_ca1_w,
|
||||
/*irqs : A/B */ tshoot_main_irq, tshoot_main_irq
|
||||
};
|
||||
|
||||
/* Turkey Shoot PIA 2 */
|
||||
@ -283,8 +301,10 @@ static TIMER_CALLBACK( williams_count240_callback )
|
||||
|
||||
static void williams_main_irq(int state)
|
||||
{
|
||||
int combined_state = pia_get_irq_a(1) | pia_get_irq_b(1);
|
||||
|
||||
/* IRQ to the main CPU */
|
||||
cpunum_set_input_line(0, M6809_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
cpunum_set_input_line(0, M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
@ -297,8 +317,35 @@ static void williams_main_firq(int state)
|
||||
|
||||
static void williams_snd_irq(int state)
|
||||
{
|
||||
int combined_state = pia_get_irq_a(2) | pia_get_irq_b(2);
|
||||
|
||||
/* IRQ to the sound CPU */
|
||||
cpunum_set_input_line(1, M6800_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
cpunum_set_input_line(1, M6800_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Newer Williams interrupts
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static void mysticm_main_irq(int state)
|
||||
{
|
||||
int combined_state = pia_get_irq_b(0) | pia_get_irq_a(1) | pia_get_irq_b(1);
|
||||
|
||||
/* IRQ to the main CPU */
|
||||
cpunum_set_input_line(0, M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
static void tshoot_main_irq(int state)
|
||||
{
|
||||
int combined_state = pia_get_irq_a(0) | pia_get_irq_b(0) | pia_get_irq_a(1) | pia_get_irq_b(1);
|
||||
|
||||
/* IRQ to the main CPU */
|
||||
cpunum_set_input_line(0, M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user