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) |