trunk/src/mame/drivers/ddenlovr.c
r17999 | r18000 | |
8501 | 8501 | /* basic machine hardware */ |
8502 | 8502 | MCFG_CPU_ADD("maincpu",M68000, XTAL_24MHz / 2) |
8503 | 8503 | MCFG_CPU_PROGRAM_MAP(ddenlovr_map) |
8504 | | MCFG_CPU_VBLANK_INT("screen", irq1_line_hold) |
| 8504 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, irq1_line_hold) |
8505 | 8505 | |
8506 | 8506 | MCFG_MACHINE_START_OVERRIDE(dynax_state,ddenlovr) |
8507 | 8507 | MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr) |
r17999 | r18000 | |
8593 | 8593 | 0xee is vblank |
8594 | 8594 | 0xfc is from the 6242RTC |
8595 | 8595 | */ |
8596 | | static INTERRUPT_GEN( quizchq_irq ) |
| 8596 | INTERRUPT_GEN_MEMBER(dynax_state::quizchq_irq) |
8597 | 8597 | { |
8598 | | dynax_state *state = device->machine().driver_data<dynax_state>(); |
8599 | 8598 | // int scanline = param; |
8600 | 8599 | |
8601 | 8600 | /* I haven't found a irq ack register, so I need this kludge to |
r17999 | r18000 | |
8604 | 8603 | // if (downcast<cpu_device *>(state->m_maincpu)->input_state(0)) |
8605 | 8604 | // return; |
8606 | 8605 | |
8607 | | state->m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xee); |
| 8606 | m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xee); |
8608 | 8607 | } |
8609 | 8608 | |
8610 | 8609 | static WRITE_LINE_DEVICE_HANDLER( quizchq_rtc_irq ) |
r17999 | r18000 | |
8625 | 8624 | MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* Verified */ |
8626 | 8625 | MCFG_CPU_PROGRAM_MAP(quizchq_map) |
8627 | 8626 | MCFG_CPU_IO_MAP(quizchq_portmap) |
8628 | | MCFG_CPU_VBLANK_INT("screen",quizchq_irq) |
| 8627 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, quizchq_irq) |
8629 | 8628 | |
8630 | 8629 | MCFG_MACHINE_START_OVERRIDE(dynax_state,rongrong) |
8631 | 8630 | MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr) |
r17999 | r18000 | |
8677 | 8676 | RST 20 is from the link device? |
8678 | 8677 | */ |
8679 | 8678 | |
8680 | | static INTERRUPT_GEN( mmpanic_irq ) |
| 8679 | INTERRUPT_GEN_MEMBER(dynax_state::mmpanic_irq) |
8681 | 8680 | { |
8682 | | dynax_state *state = device->machine().driver_data<dynax_state>(); |
8683 | 8681 | //int scanline = param; |
8684 | 8682 | |
8685 | 8683 | /* I haven't found a irq ack register, so I need this kludge to |
r17999 | r18000 | |
8688 | 8686 | //if (downcast<cpu_device *>(state->m_maincpu)->input_state(0)) |
8689 | 8687 | // return; |
8690 | 8688 | |
8691 | | state->m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xcf); // RST 08, vblank |
| 8689 | m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xcf); // RST 08, vblank |
8692 | 8690 | } |
8693 | 8691 | |
8694 | 8692 | |
r17999 | r18000 | |
8711 | 8709 | MCFG_CPU_ADD("maincpu", Z80, 8000000) |
8712 | 8710 | MCFG_CPU_PROGRAM_MAP(mmpanic_map) |
8713 | 8711 | MCFG_CPU_IO_MAP(mmpanic_portmap) |
8714 | | MCFG_CPU_VBLANK_INT("screen",mmpanic_irq) |
| 8712 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, mmpanic_irq) |
8715 | 8713 | |
8716 | 8714 | MCFG_CPU_ADD("soundcpu", Z80, 3579545) |
8717 | 8715 | MCFG_CPU_PROGRAM_MAP(mmpanic_sound_map) |
8718 | 8716 | MCFG_CPU_IO_MAP(mmpanic_sound_portmap) |
8719 | | MCFG_CPU_VBLANK_INT("screen", irq0_line_hold) // NMI by main cpu |
| 8717 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, irq0_line_hold) // NMI by main cpu |
8720 | 8718 | |
8721 | 8719 | MCFG_MACHINE_START_OVERRIDE(dynax_state,mmpanic) |
8722 | 8720 | MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr) |
r17999 | r18000 | |
8763 | 8761 | 0xe2 is from the 6242RTC |
8764 | 8762 | */ |
8765 | 8763 | |
8766 | | static INTERRUPT_GEN( hanakanz_irq ) |
| 8764 | INTERRUPT_GEN_MEMBER(dynax_state::hanakanz_irq) |
8767 | 8765 | { |
8768 | | dynax_state *state = device->machine().driver_data<dynax_state>(); |
8769 | | |
8770 | 8766 | /* I haven't found a irq ack register, so I need this kludge to |
8771 | 8767 | make sure I don't lose any interrupt generated by the blitter, |
8772 | 8768 | otherwise quizchq would lock up. */ |
8773 | 8769 | //if (downcast<cpu_device *>(state->m_maincpu)->input_state(0)) |
8774 | 8770 | // return; |
8775 | 8771 | |
8776 | | state->m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xe0); |
| 8772 | m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xe0); |
8777 | 8773 | } |
8778 | 8774 | |
8779 | 8775 | static WRITE_LINE_DEVICE_HANDLER(hanakanz_rtc_irq) |
r17999 | r18000 | |
8800 | 8796 | MCFG_CPU_ADD("maincpu",Z80,8000000) // TMPZ84C015BF-8 |
8801 | 8797 | MCFG_CPU_PROGRAM_MAP(hanakanz_map) |
8802 | 8798 | MCFG_CPU_IO_MAP(hanakanz_portmap) |
8803 | | MCFG_CPU_VBLANK_INT("screen", hanakanz_irq) |
| 8799 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, hanakanz_irq) |
8804 | 8800 | |
8805 | 8801 | MCFG_MACHINE_START_OVERRIDE(dynax_state,hanakanz) |
8806 | 8802 | MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr) |
r17999 | r18000 | |
8855 | 8851 | 0xf8 is vblank |
8856 | 8852 | 0xfa is from the 6242RTC |
8857 | 8853 | */ |
8858 | | static INTERRUPT_GEN( mjchuuka_irq ) |
| 8854 | INTERRUPT_GEN_MEMBER(dynax_state::mjchuuka_irq) |
8859 | 8855 | { |
8860 | | dynax_state *state = device->machine().driver_data<dynax_state>(); |
8861 | | |
8862 | 8856 | /* I haven't found a irq ack register, so I need this kludge to |
8863 | 8857 | make sure I don't lose any interrupt generated by the blitter, |
8864 | 8858 | otherwise quizchq would lock up. */ |
8865 | 8859 | //if (downcast<cpu_device *>(state->m_maincpu)->input_state(0)) |
8866 | 8860 | // return; |
8867 | 8861 | |
8868 | | state->m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xf8); |
| 8862 | m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xf8); |
8869 | 8863 | } |
8870 | 8864 | |
8871 | 8865 | static WRITE_LINE_DEVICE_HANDLER(mjchuuka_rtc_irq) |
r17999 | r18000 | |
8892 | 8886 | /* basic machine hardware */ |
8893 | 8887 | MCFG_CPU_MODIFY("maincpu") |
8894 | 8888 | MCFG_CPU_IO_MAP(mjchuuka_portmap) |
8895 | | MCFG_CPU_VBLANK_INT("screen",mjchuuka_irq) |
| 8889 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, mjchuuka_irq) |
8896 | 8890 | |
8897 | 8891 | MCFG_DEVICE_MODIFY("rtc") |
8898 | 8892 | MCFG_DEVICE_CONFIG(mjchuuka_rtc_intf) |
r17999 | r18000 | |
8906 | 8900 | MCFG_CPU_MODIFY("maincpu") |
8907 | 8901 | MCFG_CPU_PROGRAM_MAP(funkyfig_map) |
8908 | 8902 | MCFG_CPU_IO_MAP(funkyfig_portmap) |
8909 | | MCFG_CPU_VBLANK_INT("screen",mjchuuka_irq) |
| 8903 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, mjchuuka_irq) |
8910 | 8904 | |
8911 | 8905 | MCFG_MACHINE_START_OVERRIDE(dynax_state,funkyfig) |
8912 | 8906 | |
r17999 | r18000 | |
9013 | 9007 | 0xfa and/or 0xfc are from the blitter (almost identical) |
9014 | 9008 | 0xee triggered by the RTC |
9015 | 9009 | */ |
9016 | | static INTERRUPT_GEN( hginga_irq ) |
| 9010 | INTERRUPT_GEN_MEMBER(dynax_state::hginga_irq) |
9017 | 9011 | { |
9018 | | dynax_state *state = device->machine().driver_data<dynax_state>(); |
9019 | 9012 | // int scanline = param; |
9020 | 9013 | |
9021 | 9014 | /* I haven't found a irq ack register, so I need this kludge to |
r17999 | r18000 | |
9024 | 9017 | // if (downcast<cpu_device *>(state->m_maincpu)->input_state(0)) |
9025 | 9018 | // return; |
9026 | 9019 | |
9027 | | state->m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xf8); |
| 9020 | m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xf8); |
9028 | 9021 | } |
9029 | 9022 | |
9030 | 9023 | static const ay8910_interface hginga_ay8910_interface = |
r17999 | r18000 | |
9061 | 9054 | MCFG_CPU_MODIFY("maincpu") |
9062 | 9055 | MCFG_CPU_PROGRAM_MAP(hginga_map) |
9063 | 9056 | MCFG_CPU_IO_MAP(hginga_portmap) |
9064 | | MCFG_CPU_VBLANK_INT("screen",hginga_irq) |
| 9057 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, hginga_irq) |
9065 | 9058 | |
9066 | 9059 | MCFG_DEVICE_MODIFY("rtc") |
9067 | 9060 | MCFG_DEVICE_CONFIG(hginga_rtc_intf) |
r17999 | r18000 | |
9079 | 9072 | MCFG_CPU_MODIFY("maincpu") |
9080 | 9073 | MCFG_CPU_PROGRAM_MAP(hgokou_map) |
9081 | 9074 | MCFG_CPU_IO_MAP(hgokou_portmap) |
9082 | | MCFG_CPU_VBLANK_INT("screen",hginga_irq) |
| 9075 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, hginga_irq) |
9083 | 9076 | |
9084 | 9077 | MCFG_DEVICE_MODIFY("rtc") |
9085 | 9078 | MCFG_DEVICE_CONFIG(hginga_rtc_intf) |
r17999 | r18000 | |
9148 | 9141 | MACHINE_CONFIG_END |
9149 | 9142 | |
9150 | 9143 | |
9151 | | static INTERRUPT_GEN( mjflove_irq ) |
| 9144 | INTERRUPT_GEN_MEMBER(dynax_state::mjflove_irq) |
9152 | 9145 | { |
9153 | | dynax_state *state = device->machine().driver_data<dynax_state>(); |
9154 | | |
9155 | | state->m_mjflove_irq_cause = 1; |
9156 | | state->m_maincpu->set_input_line(0, HOLD_LINE); |
| 9146 | m_mjflove_irq_cause = 1; |
| 9147 | m_maincpu->set_input_line(0, HOLD_LINE); |
9157 | 9148 | } |
9158 | 9149 | |
9159 | 9150 | static WRITE_LINE_DEVICE_HANDLER(mjflove_rtc_irq) |
r17999 | r18000 | |
9177 | 9168 | MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* Verified */ |
9178 | 9169 | MCFG_CPU_PROGRAM_MAP(rongrong_map) |
9179 | 9170 | MCFG_CPU_IO_MAP(mjflove_portmap) |
9180 | | MCFG_CPU_VBLANK_INT("screen",mjflove_irq) |
| 9171 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, mjflove_irq) |
9181 | 9172 | |
9182 | 9173 | MCFG_MACHINE_START_OVERRIDE(dynax_state,mjflove) |
9183 | 9174 | |
r17999 | r18000 | |
9192 | 9183 | |
9193 | 9184 | /* It runs in IM 2, thus needs a vector on the data bus: |
9194 | 9185 | 0xee is vblank */ |
9195 | | static INTERRUPT_GEN( hparadis_irq ) |
| 9186 | INTERRUPT_GEN_MEMBER(dynax_state::hparadis_irq) |
9196 | 9187 | { |
9197 | | device->execute().set_input_line_and_vector(0, HOLD_LINE, 0xee); |
| 9188 | device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xee); |
9198 | 9189 | } |
9199 | 9190 | |
9200 | 9191 | static MACHINE_CONFIG_DERIVED( hparadis, quizchq ) |
r17999 | r18000 | |
9203 | 9194 | MCFG_CPU_MODIFY("maincpu") |
9204 | 9195 | MCFG_CPU_PROGRAM_MAP(hparadis_map) |
9205 | 9196 | MCFG_CPU_IO_MAP(hparadis_portmap) |
9206 | | MCFG_CPU_VBLANK_INT("screen", hparadis_irq) |
| 9197 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, hparadis_irq) |
9207 | 9198 | |
9208 | 9199 | MCFG_MACHINE_START_OVERRIDE(dynax_state,hparadis) |
9209 | 9200 | MACHINE_CONFIG_END |
r17999 | r18000 | |
9216 | 9207 | MCFG_CPU_ADD("maincpu",Z80, XTAL_20MHz / 2) // ? |
9217 | 9208 | MCFG_CPU_PROGRAM_MAP(hanakanz_map) |
9218 | 9209 | MCFG_CPU_IO_MAP(jongtei_portmap) |
9219 | | MCFG_CPU_VBLANK_INT("screen", hanakanz_irq) |
| 9210 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, hanakanz_irq) |
9220 | 9211 | |
9221 | 9212 | MCFG_MACHINE_START_OVERRIDE(dynax_state,hanakanz) |
9222 | 9213 | MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr) |
r17999 | r18000 | |
9257 | 9248 | MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz / 2) // ? |
9258 | 9249 | MCFG_CPU_PROGRAM_MAP(sryudens_map) |
9259 | 9250 | MCFG_CPU_IO_MAP(sryudens_portmap) |
9260 | | MCFG_CPU_VBLANK_INT("screen",mjchuuka_irq) |
| 9251 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, mjchuuka_irq) |
9261 | 9252 | |
9262 | 9253 | MCFG_MACHINE_START_OVERRIDE(dynax_state,sryudens) |
9263 | 9254 | MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr) |
r17999 | r18000 | |
9302 | 9293 | MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz / 2) |
9303 | 9294 | MCFG_CPU_PROGRAM_MAP(janshinp_map) |
9304 | 9295 | MCFG_CPU_IO_MAP(janshinp_portmap) |
9305 | | MCFG_CPU_VBLANK_INT("screen",mjchuuka_irq) |
| 9296 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, mjchuuka_irq) |
9306 | 9297 | |
9307 | 9298 | MCFG_MACHINE_START_OVERRIDE(dynax_state,hanakanz) |
9308 | 9299 | MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr) |
r17999 | r18000 | |
9376 | 9367 | MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz / 2) |
9377 | 9368 | MCFG_CPU_PROGRAM_MAP(seljan2_map) |
9378 | 9369 | MCFG_CPU_IO_MAP(seljan2_portmap) |
9379 | | MCFG_CPU_VBLANK_INT("screen",mjchuuka_irq) |
| 9370 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, mjchuuka_irq) |
9380 | 9371 | |
9381 | 9372 | MCFG_MACHINE_START_OVERRIDE(dynax_state,seljan2) |
9382 | 9373 | MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr) |
r17999 | r18000 | |
9423 | 9414 | MCFG_CPU_ADD("maincpu",Z80, XTAL_20MHz / 2) |
9424 | 9415 | MCFG_CPU_PROGRAM_MAP(hanakanz_map) |
9425 | 9416 | MCFG_CPU_IO_MAP(daimyojn_portmap) |
9426 | | MCFG_CPU_VBLANK_INT("screen", hanakanz_irq) |
| 9417 | MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, hanakanz_irq) |
9427 | 9418 | |
9428 | 9419 | MCFG_MACHINE_START_OVERRIDE(dynax_state,mjflove) |
9429 | 9420 | MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr) |