trunk/src/mame/drivers/de_2.c
| r23856 | r23857 | |
| 49 | 49 | m_pia30(*this, "pia30"), |
| 50 | 50 | m_pia34(*this, "pia34"), |
| 51 | 51 | m_audiocpu(*this, "audiocpu"), |
| 52 | | m_msm5205(*this, "msm5205") |
| 52 | m_msm5205(*this, "msm5205"), |
| 53 | m_sample_bank(*this, "sample_bank") |
| 53 | 54 | { } |
| 54 | 55 | |
| 55 | 56 | protected: |
| r23856 | r23857 | |
| 100 | 101 | |
| 101 | 102 | required_device<cpu_device> m_audiocpu; |
| 102 | 103 | required_device<msm5205_device> m_msm5205; |
| 104 | required_memory_bank m_sample_bank; |
| 103 | 105 | UINT8 m_sample_data; |
| 104 | 106 | bool m_more_data; |
| 105 | 107 | bool m_nmi_enable; |
| r23856 | r23857 | |
| 116 | 118 | bool m_irq_active; |
| 117 | 119 | UINT8 m_sound_data; |
| 118 | 120 | |
| 119 | | UINT8 m_sample_bank; |
| 121 | UINT8 m_sample_bank_num; |
| 120 | 122 | UINT8 m_msm_prescaler; |
| 121 | 123 | }; |
| 122 | 124 | |
| r23856 | r23857 | |
| 253 | 255 | |
| 254 | 256 | MACHINE_RESET_MEMBER(de_2_state, de_2) |
| 255 | 257 | { |
| 256 | | membank("sample_bank")->set_entry(0); |
| 258 | m_sample_bank->set_entry(0); |
| 257 | 259 | m_more_data = false; |
| 258 | 260 | m_is_alpha3 = false; |
| 259 | 261 | } |
| 260 | 262 | |
| 261 | 263 | MACHINE_RESET_MEMBER(de_2_state, de_2_alpha3) |
| 262 | 264 | { |
| 263 | | membank("sample_bank")->set_entry(0); |
| 265 | m_sample_bank->set_entry(0); |
| 264 | 266 | m_more_data = false; |
| 265 | 267 | m_is_alpha3 = true; |
| 266 | 268 | } |
| r23856 | r23857 | |
| 271 | 273 | m_irq_timer = timer_alloc(TIMER_IRQ); |
| 272 | 274 | m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,E_CLOCK),1); |
| 273 | 275 | m_irq_active = false; |
| 274 | | membank("sample_bank")->configure_entries(0, 16, &ROM[0x0000], 0x4000); |
| 275 | | membank("sample_bank")->set_entry(0); |
| 276 | m_sample_bank->configure_entries(0, 16, &ROM[0x0000], 0x4000); |
| 277 | m_sample_bank->set_entry(0); |
| 276 | 278 | } |
| 277 | 279 | |
| 278 | 280 | WRITE_LINE_MEMBER(de_2_state::ym2151_irq_w) |
| r23856 | r23857 | |
| 556 | 558 | { |
| 557 | 559 | static const UINT8 prescale[4] = { MSM5205_S96_4B, MSM5205_S48_4B, MSM5205_S64_4B, 0 }; |
| 558 | 560 | |
| 559 | | m_sample_bank = (data & 0x07); |
| 560 | | membank("sample_bank")->set_entry(m_sample_bank); |
| 561 | m_sample_bank_num = (data & 0x07); |
| 562 | m_sample_bank->set_entry(m_sample_bank_num); |
| 561 | 563 | m_msm_prescaler = (data & 0x30) >> 4; |
| 562 | 564 | m_nmi_enable = (~data & 0x80); |
| 563 | 565 | m_msm5205->playmode_w(prescale[m_msm_prescaler]); |
| r23856 | r23857 | |
| 604 | 606 | MACHINE_CONFIG_END |
| 605 | 607 | |
| 606 | 608 | static MACHINE_CONFIG_DERIVED( de_2_alpha3, de_2 ) |
| 607 | | MCFG_MACHINE_RESET_OVERRIDE(de_2_state, de_2_alpha3) |
| 609 | MCFG_MACHINE_RESET_OVERRIDE(de_2_state, de_2_alpha3) |
| 608 | 610 | MCFG_DEFAULT_LAYOUT(layout_de2a3) |
| 609 | 611 | MACHINE_CONFIG_END |
| 610 | 612 | |