Exemplo n.º 1
0
static INTERRUPT_GEN( firetrap )
{
	firetrap_state *state = (firetrap_state *)device->machine->driver_data;

	/* Check for coin IRQ */
	if (cpu_getiloops(device))
	{
		if ((input_port_read(device->machine, "COIN") & 0x7) != 0x7 && !state->int_latch)
		{
			state->coin_command_pending = ~input_port_read(device->machine, "COIN");
			state->int_latch = 1;
		}
		if ((input_port_read(device->machine, "COIN") & 0x7) == 0x7)
			state->int_latch = 0;

		/* Make sure coin IRQ's aren't generated when another command is pending, the main cpu
            definitely doesn't expect them as it locks out the coin routine */
		if (state->coin_command_pending && !state->i8751_current_command)
		{
			state->i8751_return = state->coin_command_pending;
			cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xff);
			state->coin_command_pending = 0;
		}
	}

	if (state->nmi_enable && !cpu_getiloops(device))
		cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
}
Exemplo n.º 2
0
static INTERRUPT_GEN( shaolins_interrupt )
{
	if (cpu_getiloops(device) == 0) cpu_set_input_line(device, 0, HOLD_LINE);
	else if (cpu_getiloops(device) % 2)
	{
		if (shaolins_nmi_enable & 0x02) cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
	}
}
Exemplo n.º 3
0
static int thunderx_interrupt( void )
{
	if (K052109_is_IRQ_enabled())
	{
		if (cpu_getiloops() == 0) return KONAMI_INT_IRQ;
		else if (cpu_getiloops() & 1) return KONAMI_INT_FIRQ;	/* ??? */
	}
	return ignore_interrupt();
}
Exemplo n.º 4
0
int shaolins_interrupt(void)
{
	if (cpu_getiloops() == 0) return interrupt();
	else if (cpu_getiloops() % 2)
	{
		if (*shaolins_nmi_enable & 0x02) return nmi_interrupt();
	}

	return ignore_interrupt();
}
Exemplo n.º 5
0
static INTERRUPT_GEN( xorworld_interrupt )
{
	if (cpu_getiloops() == 0)
	{
		cpunum_set_input_line(0, 2, HOLD_LINE);
	}
	else if (cpu_getiloops() % 2)
	{
		cpunum_set_input_line(0, 6, HOLD_LINE);
	}
}
Exemplo n.º 6
0
static INTERRUPT_GEN( pingpong_interrupt )
{
	if (cpu_getiloops(device) == 0)
	{
		if (intenable & 0x04) cpu_set_input_line(device, 0, HOLD_LINE);
	}
	else if (cpu_getiloops(device) % 2)
	{
		if (intenable & 0x08) cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
	}
}
Exemplo n.º 7
0
static int ironhors_interrupt(void)
{
	if (cpu_getiloops() == 0)
	{
		if (*ironhors_interrupt_enable & 4) return M6809_INT_FIRQ;
	}
	else if (cpu_getiloops() % 2)
	{
		if (*ironhors_interrupt_enable & 1) return nmi_interrupt();
	}
	return ignore_interrupt();
}
Exemplo n.º 8
0
static int finalizr_interrupt(void)
{
	if (cpu_getiloops() == 0)
	{
		if (*finalizr_interrupt_enable & 2) return M6809_INT_IRQ;
	}
	else if (cpu_getiloops() % 2)
	{
		if (*finalizr_interrupt_enable & 1) return nmi_interrupt();
	}
	return ignore_interrupt();
}
Exemplo n.º 9
0
static int labyrunr_interrupt(void)
{
	if (cpu_getiloops() == 0)
	{
		if (K007121_ctrlram[0][0x07] & 0x02) return HD6309_INT_IRQ;
	}
	else if (cpu_getiloops() % 2)
	{
		if (K007121_ctrlram[0][0x07] & 0x01) return nmi_interrupt();
	}
	return ignore_interrupt();
}
Exemplo n.º 10
0
static INTERRUPT_GEN( ironhors_interrupt )
{
	if (cpu_getiloops(device) == 0)
	{
		if (*ironhors_interrupt_enable & 4)
			cpu_set_input_line(device, M6809_FIRQ_LINE, HOLD_LINE);
	}
	else if (cpu_getiloops(device) % 2)
	{
		if (*ironhors_interrupt_enable & 1)
			cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
	}
}
Exemplo n.º 11
0
static INTERRUPT_GEN( finalizr_interrupt )
{
    if (cpu_getiloops() == 0)
    {
        if (*finalizr_interrupt_enable & 2)
            cpunum_set_input_line(0, M6809_IRQ_LINE, HOLD_LINE);
    }
    else if (cpu_getiloops() % 2)
    {
        if (*finalizr_interrupt_enable & 1)
            cpunum_set_input_line(0, INPUT_LINE_NMI, PULSE_LINE);
    }
}
Exemplo n.º 12
0
static int pingpong_interrupt(void)
{
	if (cpu_getiloops() == 0)
	{
		if (*intenable & 0x04) return interrupt();
	}
	else if (cpu_getiloops() % 2)
	{
		if (*intenable & 0x08) return nmi_interrupt();
	}

	return ignore_interrupt();
}
Exemplo n.º 13
0
static INTERRUPT_GEN( labyrunr_interrupt )
{
	if (cpu_getiloops() == 0)
	{
		if (K007121_ctrlram[0][0x07] & 0x02)
			cpunum_set_input_line(0, HD6309_IRQ_LINE, HOLD_LINE);
	}
	else if (cpu_getiloops() % 2)
	{
		if (K007121_ctrlram[0][0x07] & 0x01)
			cpunum_set_input_line(0, INPUT_LINE_NMI, PULSE_LINE);
	}
}
Exemplo n.º 14
0
static INTERRUPT_GEN( ironhors_interrupt )
{
	if (cpu_getiloops() == 0)
	{
		if (*ironhors_interrupt_enable & 4)
			cpu_set_irq_line(0, M6809_FIRQ_LINE, HOLD_LINE);
	}
	else if (cpu_getiloops() % 2)
	{
		if (*ironhors_interrupt_enable & 1)
			cpu_set_irq_line(0, IRQ_LINE_NMI, PULSE_LINE);
	}
}
Exemplo n.º 15
0
GFXDECODE_END


static INTERRUPT_GEN( xorworld_interrupt )
{
	if (cpu_getiloops(device) == 0)
	{
		cpu_set_input_line(device, 2, HOLD_LINE);
	}
	else if (cpu_getiloops(device) % 2)
	{
		cpu_set_input_line(device, 6, HOLD_LINE);
	}
}
Exemplo n.º 16
0
static INTERRUPT_GEN( yamyam_interrupt )
{
	if (cpu_getiloops() == 0)
	{
		if (input_ports_hack)
		{
			rambase[0x004] = readinputport(4);	/* COIN */
			rambase[0x005] = readinputport(3);	/* IN1 */
			rambase[0x006] = readinputport(2);	/* IN0 */
		}
		cpunum_set_input_line_and_vector(0, 0, HOLD_LINE, 0xd7);	/* RST 10h vblank */
	}
	else if ((cpu_getiloops() & 1) == 1)
		cpunum_set_input_line_and_vector(0, 0, HOLD_LINE, 0xcf);	/* RST 08h sound (hand tuned) */
}
Exemplo n.º 17
0
static INTERRUPT_GEN( labyrunr_interrupt )
{
	labyrunr_state *state = (labyrunr_state *)device->machine->driver_data;

	if (cpu_getiloops(device) == 0)
	{
		if (k007121_ctrlram_r(state->k007121, 7) & 0x02)
			cpu_set_input_line(device, HD6309_IRQ_LINE, HOLD_LINE);
	}
	else if (cpu_getiloops(device) % 2)
	{
		if (k007121_ctrlram_r(state->k007121, 7) & 0x01)
			cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
	}
}
Exemplo n.º 18
0
static INTERRUPT_GEN( espial_master_interrupt )
{
	if (cpu_getiloops(device) == 0)
		nmi_line_pulse(device);
	else
		irq0_line_hold(device);
}
Exemplo n.º 19
0
GFXDECODE_END



/***************************************************************************


                                Machine drivers


***************************************************************************/


/***************************************************************************
                            Back Street Soccer
***************************************************************************/

static INTERRUPT_GEN( bssoccer_interrupt )
{
	switch (cpu_getiloops(device))
	{
		case 0: 	cpu_set_input_line(device, 1, HOLD_LINE);	break;
		case 1: 	cpu_set_input_line(device, 2, HOLD_LINE);	break;
	}
}
Exemplo n.º 20
0
static INTERRUPT_GEN(polygonet_interrupt)
{
	if (cpu_getiloops())
		cpu_set_irq_line(0, MC68000_IRQ_5, HOLD_LINE);
	else
		cpu_set_irq_line(0, MC68000_IRQ_3, HOLD_LINE);
}
Exemplo n.º 21
0
static INTERRUPT_GEN( olibochu_interrupt )
{
	if (cpu_getiloops() == 0)
		cpunum_set_input_line_and_vector(0, 0, HOLD_LINE, 0xcf);	/* RST 08h */
	else
		cpunum_set_input_line_and_vector(0, 0, HOLD_LINE, 0xd7);	/* RST 10h */
}
Exemplo n.º 22
0
static INTERRUPT_GEN( mystston_interrupt )
{
	int scanline = 271 - cpu_getiloops();
	static int coin;

	/* Inserting a coin triggers an NMI */
	if ((readinputport(0) & 0xc0) != 0xc0)
	{
		if (coin == 0)
		{
			coin = 1;
			nmi_line_pulse();
			return;
		}
	}
	else coin = 0;

	/* VBLK is lowered on scanline 8 */
	if (scanline == 8)
		VBLK = 0;

	/* VBLK is raised on scanline 248 */
	if (scanline == 248)
		VBLK = 0x80;

	/* IMS is triggered every time VLOC line 3 is raised,
       as VLOC counter starts at 16, effectively every 16 scanlines */
	if ((scanline % 16) == 0)
		cpunum_set_input_line(0, 0, ASSERT_LINE);
}
Exemplo n.º 23
0
INPUT_PORTS_END

static INTERRUPT_GEN( sliver_int )
{
	//valid interrupts are 2,3,4
	device_set_input_line(device, 2+cpu_getiloops(device), HOLD_LINE);
}
Exemplo n.º 24
0
static int yamyam_interrupt(void)
{
	if (cpu_getiloops() == 0)
	{
		if (input_ports_hack)
		{
			unsigned char *RAM = memory_region(REGION_CPU1);
			RAM[0xe004] = readinputport(4);	/* COIN */
			RAM[0xe005] = readinputport(3);	/* IN1 */
			RAM[0xe006] = readinputport(2);	/* IN0 */
		}
		return 0xd7;	/* RST 10h vblank */
	}
	if ((cpu_getiloops() & 1) == 1) return 0xcf;	/* RST 08h sound (hand tuned) */
	else return ignore_interrupt();
}
Exemplo n.º 25
0
GFXDECODE_END


static INTERRUPT_GEN( parentj_interrupt )
{
	cpu_set_input_line(device, cpu_getiloops(device) ? 4 : 5, HOLD_LINE);
}
Exemplo n.º 26
0
static INTERRUPT_GEN( vulgus_interrupt )
{
	if (cpu_getiloops(device) != 0)
		cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xcf);	/* RST 08h */
	else
		cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xd7);	/* RST 10h - vblank */
}
Exemplo n.º 27
0
static INTERRUPT_GEN( blockout_interrupt )
{
	/* interrupt 6 is vblank */
	/* interrupt 5 reads coin inputs - might have to be triggered only */
	/* when a coin is inserted */
	cpunum_set_input_line(0, 6 - cpu_getiloops(), HOLD_LINE);
}
Exemplo n.º 28
0
static INTERRUPT_GEN( lastduel_interrupt )
{
	if (cpu_getiloops(device) == 0)
		cpu_set_input_line(device, 2, HOLD_LINE); /* VBL */
	else
		cpu_set_input_line(device, 4, HOLD_LINE); /* Controls */
}
Exemplo n.º 29
0
static INTERRUPT_GEN( panicr_interrupt )
{
    if (cpu_getiloops(device))
        cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xc8/4);
    else
        cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xc4/4);
}
Exemplo n.º 30
0
static INTERRUPT_GEN( madgear_interrupt )
{
	if (cpu_getiloops(device) == 0)
		cpu_set_input_line(device, 5, HOLD_LINE); /* VBL */
	else
		cpu_set_input_line(device, 6, HOLD_LINE); /* Controls */
}