static void serial_chunky_callback(int param)
{
	/* assert the A2S IRQ on CPU #2 (DSP) */
	cpunum_set_input_line(2, 1, ASSERT_LINE);
	jaguar_dsp_resume();

	/* fix flaky code in interrupt handler which thwarts our speedup */
	if ((jaguar_dsp_ram[0x3e/4] & 0xffff) == 0xbfbc &&
		(jaguar_dsp_ram[0x42/4] & 0xffff) == 0xe400)
	{
		/* move the store r28,(r29) into the branch delay slot, swapping it with */
		/* the nop that's currently there */
		jaguar_dsp_ram[0x3e/4] = (jaguar_dsp_ram[0x3e/4] & 0xffff0000) | 0xe400;
		jaguar_dsp_ram[0x42/4] = (jaguar_dsp_ram[0x42/4] & 0xffff0000) | 0xbfbc;
	}
}
Exemple #2
0
static MACHINE_RESET( jaguar )
{
	device_set_irq_callback(machine.device("maincpu"), jaguar_irq_callback);

	protection_check = 0;

	/* Set up pointers for Jaguar logo */
	memcpy(jaguar_shared_ram, rom_base, 0x400);	// do not increase, or Doom breaks
	cpu_set_reg(machine.device("maincpu"), STATE_GENPC, rom_base[1]);

#if 0
	/* set up main CPU RAM/ROM banks */
	memory_set_bankptr(machine, 3, jaguar_gpu_ram);

	/* set up DSP RAM/ROM banks */
	memory_set_bankptr(machine, 10, jaguar_shared_ram);
	memory_set_bankptr(machine, 11, jaguar_gpu_clut);
	memory_set_bankptr(machine, 12, jaguar_gpu_ram);
	memory_set_bankptr(machine, 13, jaguar_dsp_ram);
	memory_set_bankptr(machine, 14, jaguar_shared_ram);
	memory_set_bankptr(machine, 15, cart_base);
	memory_set_bankptr(machine, 16, rom_base);
	memory_set_bankptr(machine, 17, jaguar_gpu_ram);
#endif

	/* clear any spinuntil stuff */
	jaguar_gpu_resume(machine);
	jaguar_dsp_resume(machine);

	/* halt the CPUs */
	jaguargpu_ctrl_w(machine.device("gpu"), G_CTRL, 0, 0xffffffff);
	jaguardsp_ctrl_w(machine.device("audiocpu"), D_CTRL, 0, 0xffffffff);

	joystick_data = 0xffffffff;
	eeprom_bit_count = 0;
	blitter_status = 1;
	if ((using_cart) && (input_port_read(machine, "CONFIG") & 2))
	{
		cart_base[0x102] = 1;
		using_cart = 0;
	}
}
Exemple #3
0
static MACHINE_INIT( jaguar )
{
	cpu_set_irq_callback(0, jaguar_irq_callback);

	*((UINT32 *) jaguar_gpu_ram) = 0x3d0dead;

	memset(jaguar_shared_ram, 0, 0x200000);
	memcpy(jaguar_shared_ram, rom_base, 0x10);
	rom_base[0x53c / 4] = 0x67000002;

#if 0
	/* set up main CPU RAM/ROM banks */
	memory_set_bankptr(3, jaguar_gpu_ram);

	/* set up DSP RAM/ROM banks */
	memory_set_bankptr(10, jaguar_shared_ram);
	memory_set_bankptr(11, jaguar_gpu_clut);
	memory_set_bankptr(12, jaguar_gpu_ram);
	memory_set_bankptr(13, jaguar_dsp_ram);
	memory_set_bankptr(14, jaguar_shared_ram);
#endif
	memory_set_bankptr(15, cart_base);
	memory_set_bankptr(16, rom_base);
//	memory_set_bankptr(17, jaguar_gpu_ram);

	/* clear any spinuntil stuff */
	jaguar_gpu_resume();
	jaguar_dsp_resume();

	/* halt the CPUs */
	jaguargpu_ctrl_w(1, G_CTRL, 0, 0);
	jaguardsp_ctrl_w(2, D_CTRL, 0, 0);

	/* init the sound system */
	cojag_sound_reset();

	joystick_data = 0xffffffff;
}
static void serial_callback(int param)
{
	/* assert the A2S IRQ on CPU #2 (DSP) */
	cpunum_set_input_line(2, 1, ASSERT_LINE);
	jaguar_dsp_resume();
}