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; } }
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; } }
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; } } }
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 */ }
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 }
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); }
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; } }
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; }
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; }
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; }
static READ8_HANDLER( eeprom_r ) { int bit; bit = EEPROM_read_bit() << 7; return (input_port_2_r(0) & 0x7f) | bit; }
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); }
/*************************************************************************** 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; }
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); }
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; }
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; }
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; } }
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; }
/* 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; }
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; }
int arkanoid_input_2_r (int offset) { if (arkanoid_paddle_select) { return input_port_3_r(offset); } else { return input_port_2_r(offset); } }
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; }
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; } }
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; } }
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; }
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; } }
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; } }
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; }
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; }
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; } }