示例#1
0
文件: sprint2.c 项目: cdrr/MAME_hack
int sprint1_read_ports(int offset)
{
    int gear;

    gear=input_port_1_r(0);
    if (gear & 0x01)                sprint2_gear1=1;
    else if (gear & 0x02)           sprint2_gear1=2;
    else if (gear & 0x04)           sprint2_gear1=3;
    else if (gear & 0x08)           sprint2_gear1=4;

    switch (offset)
    {
    /* IN1 */
    case 0x28:
        if (sprint2_gear1==1) return 0x00;
        else return 0x80;
    case 0x29:
        if (sprint2_gear2==1) return 0x00;
        else return 0x80;
    case 0x2A:
        if (sprint2_gear1==2) return 0x00;
        else return 0x80;
    case 0x2B:
        return ((input_port_2_r(0) & 0x01) << 7);
    case 0x2C:
        return ((input_port_2_r(0) & 0x02) << 6);
    case 0x2D:
        return ((input_port_2_r(0) & 0x04) << 5);
    /* DSW */
    case 0x10:
    case 0x14:
    case 0x30:
    case 0x34:
        return ((input_port_0_r(0) & 0x03) << 6);
    case 0x11:
    case 0x15:
    case 0x31:
    case 0x35:
        return ((input_port_0_r(0) & 0x0C) << 4);
    case 0x12:
    case 0x16:
    case 0x32:
    case 0x36:
        return ((input_port_0_r(0) & 0x30) << 2);
    case 0x13:
    case 0x17:
    case 0x33:
    case 0x37:
        return ((input_port_0_r(0) & 0xC0) << 0);

    /* Just in case */
    default:
        return 0xFF;
    }
}
示例#2
0
static READ_HANDLER( fireone_input_r )
{
	static const UINT8 fireone_paddle_map[64] =
	{
		0x00,0x01,0x03,0x02,0x06,0x07,0x05,0x04,
		0x0c,0x0d,0x0f,0x0e,0x0a,0x0b,0x09,0x08,
		0x18,0x19,0x1b,0x1a,0x1e,0x1f,0x1d,0x1c,
		0x14,0x15,0x17,0x16,0x12,0x13,0x11,0x10,
		0x30,0x31,0x33,0x32,0x36,0x37,0x35,0x34,
		0x3c,0x3d,0x3f,0x3e,0x3a,0x3b,0x39,0x38,
		0x28,0x29,0x2b,0x2a,0x2e,0x2f,0x2d,0x2c,
		0x24,0x25,0x27,0x26,0x22,0x23,0x21,0x20
	};
	int temp;

	switch (offset & 15)
	{
		case 0:	return input_port_0_r(0);
		case 1: return input_port_1_r(0);
		case 2:
			temp = fireone_select ? input_port_2_r(0) : input_port_3_r(0);
			temp = (temp & 0xc0) | fireone_paddle_map[temp & 0x3f];
			return temp;
		default: return 0xff;
	}
}
示例#3
0
static WRITE8_HANDLER( b_via_0_pa_w )
{
	if ((data & 0x08) == 0)
		cpunum_set_input_line(1, INPUT_LINE_RESET, ASSERT_LINE);
	else
		cpunum_set_input_line(1, INPUT_LINE_RESET, CLEAR_LINE);

	if ((data & 0x04) == 0)
	{
		switch (data & 0x03)
		{
		case 0:
			pbus = input_port_0_r(0);
			break;
		case 1:
			pbus = input_port_1_r(0) | (input_port_2_r(0) << 4);
			break;
		case 2:
			pbus = input_port_3_r(0);
			break;
		case 3:
			pbus = 0xff;
			break;
		}
	}
}
示例#4
0
static READ8_HANDLER( dsw0_port_r )
{
	/* vblank replaces the cabinet dip */

	return ( ( input_port_2_r(0) & 0x7F ) |		/* dsw0 */
   			 ( input_port_3_r(0) & 0x80 ) );	/* vblank */
}
示例#5
0
static READ8_HANDLER( dsw0_port_r )
{
	// vblank replaces the cabinet dip

	return ( ( input_port_2_r(0) & 0x7F ) |		// dsw0
   			 ( input_port_3_r(0) & 0x80 ) );	// vblank
}
示例#6
0
static void update_interrupts(void)
{
	int newstate1 = 0;
	int newstate2 = 0;
	int temp;

	if (atarigen_sound_int_state)
		newstate1 |= 1;
	if (atarigen_video_int_state)
		newstate2 |= 1;

	if (newstate1)
		cpu_set_irq_line(0, newstate1, ASSERT_LINE);
	else
		cpu_set_irq_line(0, 7, CLEAR_LINE);

	if (newstate2)
		cpu_set_irq_line(2, newstate2, ASSERT_LINE);
	else
		cpu_set_irq_line(2, 7, CLEAR_LINE);

	/* check for screen swapping */
	temp = input_port_2_r(0);
	if (temp & 1) cyberbal_set_screen(0);
	else if (temp & 2) cyberbal_set_screen(1);
}
示例#7
0
文件: nitedrvr.c 项目: cdrr/MAME_hack
int nitedrvr_in0_r(int offset)
{
	int gear;

	gear=input_port_2_r(0);
	if (gear & 0x10)				nitedrvr_gear=1;
	else if (gear & 0x20)			nitedrvr_gear=2;
	else if (gear & 0x40)			nitedrvr_gear=3;
	else if (gear & 0x80)			nitedrvr_gear=4;

	switch (offset & 0x03)
	{
		case 0x00:						/* No remapping necessary */
			return input_port_0_r(0);
		case 0x01:						/* No remapping necessary */
			return input_port_1_r(0);
		case 0x02:						/* Remap our gear shift */
			if (nitedrvr_gear==1)		return 0xE0;
			else if (nitedrvr_gear==2)	return 0xD0;
			else if (nitedrvr_gear==3)	return 0xB0;
			else						return 0x70;
		case 0x03:						/* Remap our steering */
			return (input_port_3_r(0) | nitedrvr_steering());
		default:
			return 0xFF;
	}
}
示例#8
0
static READ_HANDLER( sharkatt_8255_r )
{
	switch (offset & 0x03)
	{
		case 1:
			/* SWITCH BANK 1 - B6 */
			if (PA_8255 & 0x01)
				return input_port_0_r(offset);
			/* SWITCH BANK 0 - B5 */
			if (PA_8255 & 0x02)
				return input_port_1_r(offset);
			/* PFPCONN - B8 */
			if (PA_8255 & 0x04)
				return input_port_2_r(offset);
			/* PFDCONN - B7 */
			if (PA_8255 & 0x08)
				return input_port_3_r(offset);

			//logerror("8255: read from port B, PA = %X\n",PA_8255);
			break;
		default:
			//logerror("8255: read from port<>B, offset %d\n",offset);
			break;
	}

	return 0;
}
示例#9
0
int maketrax_special_port2_r(int offset)
{
    int data;
    int pc;

    pc=cpu_getpreviouspc();

    data=input_port_2_r(offset);

    if (pc==0x1973)
        return data|0x40;
    else if (pc==0x2389)
        return data|0x40;

    switch (offset)
    {
    case 0x01:
    case 0x04:
        data|=0x40;
        break;
    case 0x05:
        data|=0xC0;
        break;
    default:
        data&=0x3F;
        break;
    }

    return data;
}
示例#10
0
static READ8_HANDLER(read_a00x)
{
 switch(offset)
 {
	case 0x02: return reg_a002;
	case 0x04: return readinputportbytag("A004");
  case 0x05: return readinputportbytag("A005");
  case 0x0c: return input_port_0_r(0); // stats / reset
	case 0x0e: return readinputportbytag("A00E");// coin/reset
 }


  if(offset==0x00) //muxed with A002?
  {
    switch(reg_a002&0x3f)
    {
      case 0x3b:
        return input_port_2_r(0);//bet10 / pay out
      case 0x3e:
        return input_port_3_r(0);//TODO : trace f564
      case 0x3d:
      	return input_port_4_r(0);
      default:
        logerror("A000 read with mux=0x%02x\n",reg_a002&0x3f);
    }
  }
  return 0xff;
}
示例#11
0
static READ8_HANDLER( eeprom_r )
{
	int bit;

	bit = EEPROM_read_bit() << 7;

	return (input_port_2_r(0) & 0x7f) | bit;
}
示例#12
0
static WRITE8_HANDLER( track_reset_w )
{
	/* reset the trackball counters */
	last_trackball_val[0] = input_port_2_r(offset);
	last_trackball_val[1] = input_port_3_r(offset);

	watchdog_reset_w(offset,data);
}
示例#13
0
/***************************************************************************
subs_interrupt
***************************************************************************/
int subs_interrupt(void)
{
	/* only do NMI interrupt if not in TEST mode */
	if ((input_port_2_r(0) & 0x40)==0x40)
		return nmi_interrupt();

	return 0;
}
示例#14
0
static void desertgu_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh)
{
	/* update the bitmap (and erase old cross) */
	vh_screenrefresh(bitmap, full_refresh);

	draw_sight(((input_port_0_r(0) & 0x7f) * 2) - 30,
			   ((input_port_2_r(0) & 0x7f) * 2) - 30);
}
示例#15
0
int atarisys2_switch_r (int offset)
{
	int result = input_port_1_r (offset) | (input_port_2_r (offset) << 8);

	if (atarigen_cpu_to_sound_ready) result ^= 0x20;
	if (atarigen_sound_to_cpu_ready) result ^= 0x10;

	return result;
}
示例#16
0
static READ_HANDLER( special_port2_r )
{
	int result = input_port_2_r(offset);

	if (atarigen_sound_to_cpu_ready) result ^= 0x0004;
	if (atarigen_cpu_to_sound_ready) result ^= 0x0008;
	result ^= 0x0010;

	return result;
}
示例#17
0
int crbaloon_IN2_r(int offset)
{
	extern int BalloonCollision;

	if (BalloonCollision != 0)
	{
		return (input_port_2_r(0) & 0xf0) | 0x08;
    }

	/* the following is needed for the game to boot up */
	if (val06 & 0x80)
	{
		return (input_port_2_r(0) & 0xf0) | 0x07;
	}
	else
	{
		return (input_port_2_r(0) & 0xf0) | 0x07;
	}
}
示例#18
0
int vindictr_6502_switch_r (int offset)
{
	int temp = input_port_4_r (offset);

	if (!(input_port_2_r (offset) & 0x02)) temp ^= 0x80;
	if (atarigen_cpu_to_sound_ready) temp ^= 0x40;
	if (atarigen_sound_to_cpu_ready) temp ^= 0x20;

	return temp;
}
示例#19
0
/* triggered by REDD,r opcode */
static int medlanes_data_port_r(int offset)
{
int data = 0;

	data = input_port_2_r(0) & 0x0f;
#if VERBOSE
    if (errorlog)
		fprintf(errorlog, "medlanes_data_port_r %d -> $%02X\n", offset, data);
#endif
    return data;
}
示例#20
0
int atarisys2_6502_switch_r (int offset)
{
	int result = input_port_0_r (offset);

	if (atarigen_cpu_to_sound_ready) result ^= 0x01;
	if (atarigen_sound_to_cpu_ready) result ^= 0x02;
	if (tms5220_ready_r ()) result ^= 0x04;
	if (!(input_port_2_r (offset) & 0x80)) result ^= 0x10;

	return result;
}
示例#21
0
文件: arkanoid.c 项目: cdrr/MAME_hack
int arkanoid_input_2_r (int offset)
{
	if (arkanoid_paddle_select)
	{
		return input_port_3_r(offset);
	}
	else
	{
		return input_port_2_r(offset);
	}
}
示例#22
0
static READ8_HANDLER( quasar_IO_r )
{
	unsigned int ans = 0;

	if (IOpage == 8) ans = input_port_0_r(0);
	if (IOpage == 9) ans = input_port_1_r(0);
	if (IOpage == 10) ans = input_port_2_r(0);
	if (IOpage == 11) ans = input_port_3_r(0);

	return ans;
}
示例#23
0
static READ_HANDLER( starfire_input_r )
{
	switch (offset & 15)
	{
		case 0:	return input_port_0_r(0);
		case 1:	return input_port_1_r(0);	/* Note: need to loopback sounds lengths on that one */
		case 5: return input_port_4_r(0);
		case 6:	return input_port_2_r(0);
		case 7:	return input_port_3_r(0);
		default: return 0xff;
	}
}
示例#24
0
文件: skydiver.c 项目: cdrr/MAME_hack
int skydiver_input_2_r(int offset)
{
	int data = input_port_2_r(0);

	switch(offset)
	{
		case 0:		return ((data & 0x03) << 6);
		case 1:		return ((data & 0x0C) << 4);
		case 2:		return ((data & 0x30) << 2);
		case 3:		return ((data & 0xC0) << 0);
		default:		return 0;
	}
}
示例#25
0
文件: sym1.c 项目: Synapseware/coco
static int sym1_riot_b_r(int chip)
{
	int data = 0xff;
	if ( ((riot_0_a_r(0)^0xff)&(input_port_1_r(0)^0xff))&0x3f )
		data&=~1;
	if ( ((riot_0_a_r(0)^0xff)&(input_port_2_r(0)^0xff))&0x3f )
		data&=~2;
	if ( ((riot_0_a_r(0)^0xff)&(input_port_3_r(0)^0xff))&0x3f )
		data&=~4;
	data&=~0x80; // else hangs 8b02

	return data;
}
示例#26
0
int toki_read_ports(int offset)
{
    switch(offset)
    {
		case 0:
			return input_port_3_r(0) + (input_port_4_r(0) << 8);
		case 2:
			return input_port_1_r(0) + (input_port_2_r(0) << 8);
		case 4:
			return input_port_0_r(0);
		default:
			return 0;
    }
}
示例#27
0
文件: starfire.c 项目: cdrr/MAME_hack
int fireone_input_r(int address)
{
    switch(address & 0xf) {
    case 0:
		return input_port_0_r(0);
    case 1:
		return input_port_1_r(0);
    case 2:
		/* Throttle, should be analog too */
		return fireone_sell ? input_port_2_r(0) : input_port_3_r(0);
    default:
		return 0xff;
    }
}
示例#28
0
INPUT_PORTS_END

static READ8_HANDLER(dips1_r)
{
    switch(bmc_input)
    {
    case 0x00:
        return  input_port_1_r(0);
    case 0x40:
        return  input_port_2_r(0);
    }
    logerror("unknown input - %X (PC=%X)\n",bmc_input,activecpu_get_previouspc());
    return 0xff;
}
示例#29
0
static int canyon_switches_r(int offset)
{
	switch (offset & 0x07)
	{
		case 0x00:
			return ((input_port_3_r(0) << 7) & 0x80);
		case 0x01:
			return ((input_port_3_r(0) << 6) & 0x80);
		case 0x02:
			return ((input_port_3_r(0) << 5) & 0x80) | input_port_1_r(0);
		case 0x03:
			return ((input_port_3_r(0) << 4) & 0x80) | input_port_2_r(0);
		case 0x04:
			return ((input_port_3_r(0) << 3) & 0x80);
		case 0x05:
			return ((input_port_3_r(0) << 2) & 0x80);
		case 0x06:
			return ((input_port_3_r(0) << 1) & 0x80) | input_port_1_r(0);
		case 0x07:
			return ((input_port_3_r(0) << 0) & 0x80) | input_port_2_r(0);
	}

	return 0xFF;
}
示例#30
0
int dominos_port_r(int offset)
{
	switch (offset)
	{
		/* IN0 */
		case 0x18:		return ((input_port_1_r(0) & 0x01) << 7);
		case 0x19:		return ((input_port_1_r(0) & 0x02) << 6);
		case 0x1A:		return ((input_port_1_r(0) & 0x04) << 5);
		case 0x1B:		return ((input_port_1_r(0) & 0x08) << 4);
		case 0x1C:		return ((input_port_1_r(0) & 0x10) << 3);
		case 0x1D:		return ((input_port_1_r(0) & 0x20) << 2);
		case 0x1E:		return ((input_port_1_r(0) & 0x40) << 1);
		case 0x1F:		return ((input_port_1_r(0) & 0x80) << 0);
		/* IN1 */
		case 0x28:		return ((input_port_2_r(0) & 0x01) << 7);
		case 0x29:		return ((input_port_2_r(0) & 0x02) << 6);
		case 0x2A:		return ((input_port_2_r(0) & 0x04) << 5);
		case 0x2B:		return ((input_port_2_r(0) & 0x08) << 4);
		case 0x2C:		return ((input_port_2_r(0) & 0x10) << 3);
		case 0x2D:		return ((input_port_2_r(0) & 0x20) << 2);
		case 0x2E:		return ((input_port_2_r(0) & 0x40) << 1);
		case 0x2F:		return ((input_port_2_r(0) & 0x80) << 0);
		/* DSW */
		case 0x10:
		case 0x14:
		case 0x30:
		case 0x34:		return ((input_port_0_r(0) & 0x03) << 6);
		case 0x11:
		case 0x15:
		case 0x31:
		case 0x35:		return ((input_port_0_r(0) & 0x0C) << 4);
		case 0x12:
		case 0x16:
		case 0x32:
		case 0x36:		return ((input_port_0_r(0) & 0x30) << 2);
		case 0x13:
		case 0x17:
		case 0x33:
		case 0x37:		return ((input_port_0_r(0) & 0xC0) << 0);
		/* Just in case */
		default:		return 0xFF;
	}
}