trunk/src/mame/drivers/vicdual.c
| r18168 | r18169 | |
| 59 | 59 | * |
| 60 | 60 | *************************************/ |
| 61 | 61 | |
| 62 | | /* the main CPU is reset when a coin is inserted */ |
| 63 | | |
| 64 | | #define COIN_PORT_TAG "COIN" |
| 65 | | |
| 66 | | |
| 67 | 62 | TIMER_CALLBACK_MEMBER(vicdual_state::clear_coin_status) |
| 68 | 63 | { |
| 69 | 64 | m_coin_status = 0; |
| r18168 | r18169 | |
| 83 | 78 | } |
| 84 | 79 | |
| 85 | 80 | |
| 81 | /* the main CPU is reset when a coin is inserted */ |
| 86 | 82 | INPUT_CHANGED_MEMBER(vicdual_state::coin_changed) |
| 87 | 83 | { |
| 88 | 84 | if (newval) |
| r18168 | r18169 | |
| 91 | 87 | coin_counter_w(machine(), 0, 1); |
| 92 | 88 | coin_counter_w(machine(), 0, 0); |
| 93 | 89 | |
| 94 | | machine().device("maincpu")->execute().set_input_line(INPUT_LINE_RESET, PULSE_LINE); |
| 90 | m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE); |
| 95 | 91 | |
| 96 | 92 | /* simulate the coin switch being closed for a while */ |
| 97 | 93 | machine().scheduler().timer_set(4 * machine().primary_screen->frame_period(), timer_expired_delegate(FUNC(vicdual_state::clear_coin_status),this)); |
| r18168 | r18169 | |
| 100 | 96 | |
| 101 | 97 | |
| 102 | 98 | #define PORT_COIN \ |
| 103 | | PORT_START(COIN_PORT_TAG) \ |
| 104 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vicdual_state,coin_changed, NULL) \ |
| 105 | | PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 99 | PORT_START("COIN") \ |
| 100 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vicdual_state,coin_changed, NULL) |
| 106 | 101 | |
| 107 | 102 | |
| 108 | 103 | |
| r18168 | r18169 | |
| 166 | 161 | |
| 167 | 162 | int vicdual_is_cabinet_color(running_machine &machine) |
| 168 | 163 | { |
| 169 | | return (machine.root_device().ioport(COLOR_BW_PORT_TAG)->read() == 0); |
| 164 | return (machine.root_device().ioport(COLOR_BW_PORT_TAG)->read() & 1) ? 0 : 1; |
| 170 | 165 | } |
| 171 | 166 | |
| 172 | 167 | |
| r18168 | r18169 | |
| 174 | 169 | PORT_START(COLOR_BW_PORT_TAG) \ |
| 175 | 170 | PORT_CONFNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) \ |
| 176 | 171 | PORT_CONFSETTING( 0x00, "Color" ) \ |
| 177 | | PORT_CONFSETTING( 0x01, "Black and White" ) \ |
| 178 | | PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 172 | PORT_CONFSETTING( 0x01, "Black and White" ) |
| 179 | 173 | |
| 180 | 174 | |
| 181 | 175 | |
trunk/src/mame/includes/vicdual.h
| r18168 | r18169 | |
| 26 | 26 | { |
| 27 | 27 | public: |
| 28 | 28 | vicdual_state(const machine_config &mconfig, device_type type, const char *tag) |
| 29 | | : driver_device(mconfig, type, tag) , |
| 29 | : driver_device(mconfig, type, tag), |
| 30 | m_maincpu(*this,"maincpu"), |
| 30 | 31 | m_videoram(*this, "videoram"), |
| 31 | | m_characterram(*this, "characterram"){ } |
| 32 | m_characterram(*this, "characterram") |
| 33 | { } |
| 32 | 34 | |
| 33 | | UINT32 m_coin_status; |
| 35 | required_device<cpu_device> m_maincpu; |
| 34 | 36 | required_shared_ptr<UINT8> m_videoram; |
| 35 | 37 | required_shared_ptr<UINT8> m_characterram; |
| 38 | |
| 39 | UINT8 m_coin_status; |
| 40 | UINT8 m_palette_bank; |
| 36 | 41 | UINT8 m_samurai_protection_data; |
| 37 | | UINT8 m_palette_bank; |
| 42 | |
| 38 | 43 | DECLARE_WRITE8_MEMBER(vicdual_videoram_w); |
| 39 | 44 | DECLARE_WRITE8_MEMBER(vicdual_characterram_w); |
| 40 | 45 | DECLARE_READ8_MEMBER(depthch_io_r); |
| r18168 | r18169 | |
| 66 | 71 | DECLARE_READ8_MEMBER(invinco_io_r); |
| 67 | 72 | DECLARE_WRITE8_MEMBER(invinco_io_w); |
| 68 | 73 | DECLARE_WRITE8_MEMBER(vicdual_palette_bank_w); |
| 74 | |
| 69 | 75 | DECLARE_CUSTOM_INPUT_MEMBER(vicdual_read_coin_status); |
| 70 | 76 | DECLARE_CUSTOM_INPUT_MEMBER(vicdual_get_64v); |
| 71 | 77 | DECLARE_CUSTOM_INPUT_MEMBER(vicdual_get_vblank_comp); |