static WRITE32_HANDLER( dsp_flags_w )
{
	/* write the data through */
	jaguardsp_ctrl_w(2, offset, data, mem_mask);

	/* if they were clearing the A2S interrupt, see if we are headed for the spin */
	/* loop with R22 != 0; if we are, just start spinning again */
	if (cpu_getactivecpu() == 2 && !(mem_mask & 0x0000ff00) && (data & 0x400))
	{
		/* see if we're going back to the spin loop */
		if (!(data & 0x04000) && activecpu_get_reg(JAGUAR_R22) != 0)
		{
			UINT32 r30 = activecpu_get_reg(JAGUAR_R30) & 0xffffff;
			if (r30 >= 0xf1b124 && r30 <= 0xf1b126)
				jaguar_dsp_suspend();
		}
	}
}
Exemple #2
0
static WRITE32_HANDLER( dsp_flags_w )
{
	/* write the data through */
	jaguardsp_ctrl_w(space->machine->device("audiocpu"), offset, data, mem_mask);

	/* if they were clearing the A2S interrupt, see if we are headed for the spin */
	/* loop with R22 != 0; if we are, just start spinning again */
	if (space->cpu == space->machine->device("audiocpu") && ACCESSING_BITS_8_15 && (data & 0x400))
	{
		/* see if we're going back to the spin loop */
		if (!(data & 0x04000) && cpu_get_reg(space->cpu, JAGUAR_R22) != 0)
		{
			UINT32 r30 = cpu_get_reg(space->cpu, JAGUAR_R30) & 0xffffff;
			if (r30 >= 0xf1b124 && r30 <= 0xf1b126)
				jaguar_dsp_suspend(space->machine);
		}
	}
}