static WRITE8_HANDLER( cbasebal_coinctrl_w ) { coin_lockout_w(0,~data & 0x04); coin_lockout_w(1,~data & 0x08); coin_counter_w(0,data & 0x01); coin_counter_w(1,data & 0x02); }
static WRITE8_DEVICE_HANDLER( starshp1_audio_w ) { starshp1_state *state = device->machine().driver_data<starshp1_state>(); data &= 1; switch (offset & 7) { case 0: state->m_attract = data; discrete_sound_w(device, STARSHP1_ATTRACT, data); break; case 1: state->m_phasor = data; discrete_sound_w(device, STARSHP1_PHASOR_ON, data); break; case 2: discrete_sound_w(device, STARSHP1_KICKER, data); break; case 3: discrete_sound_w(device, STARSHP1_SL1, data); break; case 4: discrete_sound_w(device, STARSHP1_SL2, data); break; case 5: discrete_sound_w(device, STARSHP1_MOLVL, data); break; case 6: discrete_sound_w(device, STARSHP1_NOISE_FREQ, data); break; } coin_lockout_w(device->machine(), 0, !state->m_attract); coin_lockout_w(device->machine(), 1, !state->m_attract); }
static WRITE8_HANDLER( firetrk_output_w ) { firetrk_state *state = space->machine().driver_data<firetrk_state>(); device_t *discrete = space->machine().device("discrete"); /* BIT0 => START1 LAMP */ set_led_status(space->machine(), 0, !(data & 0x01)); /* BIT1 => START2 LAMP */ set_led_status(space->machine(), 1, !(data & 0x02)); /* BIT2 => FLASH */ state->m_flash = data & 0x04; /* BIT3 => TRACK LAMP */ set_led_status(space->machine(), 3, !(data & 0x08)); /* BIT4 => ATTRACT */ discrete_sound_w(discrete, FIRETRUCK_ATTRACT_EN, data & 0x10); coin_lockout_w(space->machine(), 0, !(data & 0x10)); coin_lockout_w(space->machine(), 1, !(data & 0x10)); /* BIT5 => START3 LAMP */ set_led_status(space->machine(), 2, !(data & 0x20)); /* BIT6 => UNUSED */ /* BIT7 => BELL OUT */ discrete_sound_w(discrete, FIRETRUCK_BELL_EN, data & 0x80); }
void twincobr_state::toaplan0_coin_dsp_w(address_space &space, int offset, int data) { if (data > 1) LOG(("%s:Writing %08x to %08x.\n",machine().describe_context(),data,toaplan_port_type[m_toaplan_main_cpu] - offset)); switch (data) { case 0x08: coin_counter_w(machine(), 0,0); break; case 0x09: coin_counter_w(machine(), 0,1); break; case 0x0a: coin_counter_w(machine(), 1,0); break; case 0x0b: coin_counter_w(machine(), 1,1); break; case 0x0c: coin_lockout_w(machine(), 0,1); break; case 0x0d: coin_lockout_w(machine(), 0,0); break; case 0x0e: coin_lockout_w(machine(), 1,1); break; case 0x0f: coin_lockout_w(machine(), 1,0); break; /****** The following apply to Flying Shark/Wardner only ******/ case 0x00: /* This means assert the INT line to the DSP */ LOG(("Turning DSP on and main CPU off\n")); m_dsp->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); m_dsp->set_input_line(0, ASSERT_LINE); /* TMS32010 INT */ m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); break; case 0x01: /* This means inhibit the INT line to the DSP */ LOG(("Turning DSP off\n")); m_dsp->set_input_line(0, CLEAR_LINE); /* TMS32010 INT */ m_dsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); break; } }
static WRITE_HANDLER( exzisus_coincounter_w ) { coin_lockout_w(0,~data & 0x01); coin_lockout_w(1,~data & 0x02); coin_counter_w(0,data & 0x04); coin_counter_w(1,data & 0x08); }
static WRITE_HANDLER( starshp1_audio_w ) { data &= 1; switch (offset & 7) { case 0: starshp1_attract = data; break; case 1: starshp1_phasor = data; break; case 2: /* KICKER */ break; case 3: /* SL1 */ break; case 4: /* SL2 */ break; case 5: /* MOLVL */ break; case 6: /* NOISE FREQ */ break; } coin_lockout_w(0, !starshp1_attract); coin_lockout_w(1, !starshp1_attract); }
static WRITE8_HANDLER( cbasebal_coinctrl_w ) { coin_lockout_w(space->machine, 0, ~data & 0x04); coin_lockout_w(space->machine, 1, ~data & 0x08); coin_counter_w(space->machine, 0, data & 0x01); coin_counter_w(space->machine, 1, data & 0x02); }
static WRITE16_HANDLER( darius_ioc_w ) { switch (offset) { case 0x00: /* sound interface write */ taitosound_port_w (0, data & 0xff); return; case 0x01: /* sound interface write */ taitosound_comm_w (0, data & 0xff); return; case 0x28: /* unknown, written by both cpus - always 0? */ //usrintf_showmessage(" address %04x value %04x",offset,data); return; case 0x30: /* coin control */ /* bits 7,5,4,0 used on reset */ /* bit 4 used whenever bg is blanked ? */ coin_lockout_w(0, ~data & 0x02); coin_lockout_w(1, ~data & 0x04); coin_counter_w(0, data & 0x08); coin_counter_w(1, data & 0x40); coin_word = data &0xffff; //usrintf_showmessage(" address %04x value %04x",offset,data); return; } logerror("CPU #0 PC %06x: warning - write unmapped ioc offset %06x with %04x\n",activecpu_get_pc(),offset,data); }
static WRITE8_HANDLER( exzisus_coincounter_w ) { coin_lockout_w(space->machine, 0,~data & 0x01); coin_lockout_w(space->machine, 1,~data & 0x02); coin_counter_w(space->machine, 0,data & 0x04); coin_counter_w(space->machine, 1,data & 0x08); }
static void pacland_coin_w(int offset,int data) { coin_lockout_w(0,data & 1); coin_lockout_w(1,data & 1); coin_counter_w(0,~data & 2); coin_counter_w(1,~data & 4); }
static WRITE8_HANDLER( blktiger_coinlockout_w ) { if (input_port_read(space->machine, "COIN_LOCKOUT") & 0x01) { coin_lockout_w(0,~data & 0x01); coin_lockout_w(1,~data & 0x02); } }
static WRITE8_DEVICE_HANDLER(ppi0_b_w) { output_set_lamp_value(8, !BIT(data,7)); /* Stand Light */ output_set_lamp_value(9, !BIT(data,6)); /* Cancel Light */ coin_counter_w(device->machine, 0, BIT(data,1)); coin_lockout_w(device->machine, 0, BIT(data,5)); coin_lockout_w(device->machine, 1, BIT(data,4)); }
static void triplhnt_update_misc(address_space &space, int offset) { triplhnt_state *state = space.machine().driver_data<triplhnt_state>(); samples_device *samples = space.machine().device<samples_device>("samples"); device_t *discrete = space.machine().device("discrete"); UINT8 is_witch_hunt; UINT8 bit = offset >> 1; /* BIT0 => UNUSED */ /* BIT1 => LAMP */ /* BIT2 => SCREECH */ /* BIT3 => LOCKOUT */ /* BIT4 => SPRITE ZOOM */ /* BIT5 => CMOS WRITE */ /* BIT6 => TAPE CTRL */ /* BIT7 => SPRITE BANK */ if (offset & 1) { state->m_misc_flags |= 1 << bit; if (bit == 5) { state->m_cmos[state->m_cmos_latch] = state->m_da_latch; } } else { state->m_misc_flags &= ~(1 << bit); } state->m_sprite_zoom = (state->m_misc_flags >> 4) & 1; state->m_sprite_bank = (state->m_misc_flags >> 7) & 1; set_led_status(space.machine(), 0, state->m_misc_flags & 0x02); coin_lockout_w(space.machine(), 0, !(state->m_misc_flags & 0x08)); coin_lockout_w(space.machine(), 1, !(state->m_misc_flags & 0x08)); discrete_sound_w(discrete, space, TRIPLHNT_SCREECH_EN, state->m_misc_flags & 0x04); // screech discrete_sound_w(discrete, space, TRIPLHNT_LAMP_EN, state->m_misc_flags & 0x02); // Lamp is used to reset noise discrete_sound_w(discrete, space, TRIPLHNT_BEAR_EN, state->m_misc_flags & 0x80); // bear is_witch_hunt = space.machine().root_device().ioport("0C09")->read() == 0x40; bit = ~state->m_misc_flags & 0x40; /* if we're not playing the sample yet, start it */ if (!samples->playing(0)) samples->start(0, 0, true); if (!samples->playing(1)) samples->start(1, 1, true); /* bit 6 turns cassette on/off */ samples->pause(0, is_witch_hunt || bit); samples->pause(1, !is_witch_hunt || bit); }
static WRITE16_HANDLER( shangha3_coinctrl_w ) { if (ACCESSING_BITS_8_15) { coin_lockout_w(space->machine, 0,~data & 0x0400); coin_lockout_w(space->machine, 1,~data & 0x0400); coin_counter_w(space->machine, 0,data & 0x0100); coin_counter_w(space->machine, 1,data & 0x0200); } }
static WRITE16_HANDLER( mcat_coin_w ) { if(ACCESSING_BITS_8_15) { coin_counter_w(space->machine, 0, data & 0x1000); coin_counter_w(space->machine, 1, data & 0x2000); coin_lockout_w(space->machine, 0, ~data & 0x4000); coin_lockout_w(space->machine, 1, ~data & 0x8000); } }
static WRITE16_HANDLER( coinctrl_w ) { if (ACCESSING_BITS_0_7) { coin_counter_w(space->machine, 0, data & 1); coin_counter_w(space->machine, 1, data & 2); coin_lockout_w(space->machine, 0, ~data & 4); coin_lockout_w(space->machine, 1, ~data & 8); } }
static WRITE_HANDLER( shangha3_coinctrl_w ) { if ((data & 0xff000000) == 0) { coin_lockout_w(0,~data & 0x0400); coin_lockout_w(1,~data & 0x0400); coin_counter_w(0,data & 0x0100); coin_counter_w(1,data & 0x0200); } }
static WRITE16_HANDLER( shangha3_coinctrl_w ) { if (ACCESSING_MSB) { coin_lockout_w(0,~data & 0x0400); coin_lockout_w(1,~data & 0x0400); coin_counter_w(0,data & 0x0100); coin_counter_w(1,data & 0x0200); } }
static WRITE8_HANDLER( galpani2_coin_lockout_w ) { coin_counter_w(space->machine, 0, data & 0x01); coin_counter_w(space->machine, 1, data & 0x02); coin_lockout_w(space->machine, 0,~data & 0x04); coin_lockout_w(space->machine, 1,~data & 0x08); // & 0x10 CARD in lockout? // & 0x20 CARD in lockout? // & 0x40 CARD out }
static WRITE8_HANDLER( champbwl_misc_w ) { coin_counter_w(space->machine(), 0, data & 1); coin_counter_w(space->machine(), 1, data & 2); coin_lockout_w(space->machine(), 0, ~data & 8); coin_lockout_w(space->machine(), 1, ~data & 4); memory_set_bank(space->machine(), "bank1", (data & 0x30) >> 4); }
static WRITE16_HANDLER( coinctrl_w ) { if (ACCESSING_LSB) { coin_counter_w(0,data & 1); coin_counter_w(1,data & 2); coin_lockout_w(0,~data & 4); coin_lockout_w(1,~data & 8); } }
/*** Main CPU ***/ static READ16_HANDLER( mcatadv_dsw_r ) { return readinputport(2+offset) << 8; } static WRITE16_HANDLER( mcat_soundlatch_w ) { soundlatch_w(0, data); cpunum_set_input_line(1, INPUT_LINE_NMI, PULSE_LINE); } #if 0 /* mcat only.. install read handler? */ static WRITE16_HANDLER( mcat_coin_w ) { if(ACCESSING_MSB16) { coin_counter_w(0, data & 0x1000); coin_counter_w(1, data & 0x2000); coin_lockout_w(0, ~data & 0x4000); coin_lockout_w(1, ~data & 0x8000); } }
static WRITE16_HANDLER( heberpop_coinctrl_w ) { if (ACCESSING_LSB) { /* the sound ROM bank is selected by the main CPU! */ OKIM6295_set_bank_base(0,(data & 0x08) ? 0x40000 : 0x00000); coin_lockout_w(0,~data & 0x04); coin_lockout_w(1,~data & 0x04); coin_counter_w(0,data & 0x01); coin_counter_w(1,data & 0x02); } }
static WRITE_HANDLER( heberpop_coinctrl_w ) { if ((data & 0x00ff0000) == 0) { /* the sound ROM bank is selected by the main CPU! */ OKIM6295_set_bank_base(0,ALL_VOICES,(data & 0x08) ? 0x40000 : 0x00000); coin_lockout_w(0,~data & 0x04); coin_lockout_w(1,~data & 0x04); coin_counter_w(0,data & 0x01); coin_counter_w(1,data & 0x02); } }
static WRITE16_HANDLER( sengokmj_out_w ) { sengokmj_state *state = space->machine().driver_data<sengokmj_state>(); /* ---- ---- ---x ---- J.P. Signal (?)*/ /* ---- ---- ---- -x-- Coin counter (done AFTER that you press start)*/ /* ---- ---- ---- --x- Cash enable (lockout)*/ /* ---- ---- ---- ---x Hopper 10 */ coin_lockout_w(space->machine(), 0,~data & 2); coin_lockout_w(space->machine(), 1,~data & 2); coin_counter_w(space->machine(), 0,data & 4); state->m_hopper_io = ((data & 1)<<6); // popmessage("%02x",state->m_hopper_io); }
static WRITE16_HANDLER( heberpop_coinctrl_w ) { if (ACCESSING_BITS_0_7) { /* the sound ROM bank is selected by the main CPU! */ okim6295_set_bank_base(devtag_get_device(space->machine, "oki"),(data & 0x08) ? 0x40000 : 0x00000); coin_lockout_w(space->machine, 0,~data & 0x04); coin_lockout_w(space->machine, 1,~data & 0x04); coin_counter_w(space->machine, 0,data & 0x01); coin_counter_w(space->machine, 1,data & 0x02); } }
static WRITE32_HANDLER( gunbustr_input_w ) { gunbustr_state *state = space->machine().driver_data<gunbustr_state>(); #if 0 { char t[64]; COMBINE_DATA(&state->m_mem[offset]); sprintf(t,"%08x %08x",state->m_mem[0],state->m_mem[1]); popmessage(t); } #endif switch (offset) { case 0x00: { if (ACCESSING_BITS_24_31) /* $400000 is watchdog */ { watchdog_reset(space->machine()); } if (ACCESSING_BITS_0_7) { eeprom_device *eeprom = space->machine().device<eeprom_device>("eeprom"); eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); eeprom->write_bit(data & 0x40); eeprom->set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE); return; } return; } case 0x01: { if (ACCESSING_BITS_24_31) { /* game does not write a separate counter for coin 2! It should disable both coins when 9 credits reached see code $1d8a-f6... but for some reason it's not */ coin_lockout_w(space->machine(), 0, data & 0x01000000); coin_lockout_w(space->machine(), 1, data & 0x02000000); coin_counter_w(space->machine(), 0, data & 0x04000000); coin_counter_w(space->machine(), 1, data & 0x04000000); state->m_coin_word = (data >> 16) &0xffff; } //logerror("CPU #0 PC %06x: write input %06x\n",cpu_get_pc(&space->device()),offset); } } }
static WRITE8_HANDLER( destroyr_misc_w ) { /* bits 0 to 2 connect to the sound circuits */ destroyr_attract = data & 1; destroyr_noise = data & 2; destroyr_motor_speed = data & 4; destroyr_potmask[0] = data & 8; destroyr_wavemod = data & 16; destroyr_potmask[1] = data & 32; coin_lockout_w(0, !destroyr_attract); coin_lockout_w(1, !destroyr_attract); }
static WRITE32_HANDLER( superchs_input_w ) { superchs_state *state = space->machine().driver_data<superchs_state>(); #if 0 { char t[64]; COMBINE_DATA(&state->m_mem[offset]); sprintf(t,"%08x %08x",state->m_mem[0],state->m_mem[1]); //popmessage(t); } #endif switch (offset) { case 0x00: { if (ACCESSING_BITS_24_31) /* $300000 is watchdog */ { watchdog_reset(space->machine()); } if (ACCESSING_BITS_0_7) { eeprom_device *eeprom = space->machine().device<eeprom_device>("eeprom"); eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); eeprom->write_bit(data & 0x40); eeprom->set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE); return; } return; } /* there are 'vibration' control bits somewhere! */ case 0x01: { if (ACCESSING_BITS_24_31) { coin_lockout_w(space->machine(), 0,~data & 0x01000000); coin_lockout_w(space->machine(), 1,~data & 0x02000000); coin_counter_w(space->machine(), 0, data & 0x04000000); coin_counter_w(space->machine(), 1, data & 0x08000000); state->m_coin_word=(data >> 16) &0xffff; } } } }
static WRITE8_HANDLER( destroyr_misc_w ) { destroyr_state *state = (destroyr_state *)space->machine->driver_data; /* bits 0 to 2 connect to the sound circuits */ state->attract = data & 0x01; state->noise = data & 0x02; state->motor_speed = data & 0x04; state->potmask[0] = data & 0x08; state->wavemod = data & 0x10; state->potmask[1] = data & 0x20; coin_lockout_w(space->machine, 0, !state->attract); coin_lockout_w(space->machine, 1, !state->attract); }