trunk/src/mame/machine/megadriv.c
| r22079 | r22080 | |
| 63 | 63 | |
| 64 | 64 | READ8_MEMBER(md_base_state::megadriv_68k_YM2612_read) |
| 65 | 65 | { |
| 66 | | device_t *device = machine().device("ymsnd"); |
| 67 | 66 | //mame_printf_debug("megadriv_68k_YM2612_read %02x %04x\n",offset,mem_mask); |
| 68 | 67 | if ((m_genz80.z80_has_bus == 0) && (m_genz80.z80_is_reset == 0)) |
| 69 | 68 | { |
| 70 | | return ym2612_r(device, space, offset); |
| 69 | return ym2612_r(m_ymsnd, space, offset); |
| 71 | 70 | } |
| 72 | 71 | else |
| 73 | 72 | { |
| r22079 | r22080 | |
| 81 | 80 | |
| 82 | 81 | WRITE8_MEMBER(md_base_state::megadriv_68k_YM2612_write) |
| 83 | 82 | { |
| 84 | | device_t *device = machine().device("ymsnd"); |
| 85 | 83 | //mame_printf_debug("megadriv_68k_YM2612_write %02x %04x %04x\n",offset,data,mem_mask); |
| 86 | 84 | if ((m_genz80.z80_has_bus == 0) && (m_genz80.z80_is_reset == 0)) |
| 87 | 85 | { |
| 88 | | ym2612_w(device, space, offset, data); |
| 86 | ym2612_w(m_ymsnd, space, offset, data); |
| 89 | 87 | } |
| 90 | 88 | else |
| 91 | 89 | { |
| r22079 | r22080 | |
| 429 | 427 | if (((m_megadrive_io_data_regs[portnum]&0x40)==0x00) && ((data&0x40) == 0x40)) |
| 430 | 428 | { |
| 431 | 429 | m_io_stage[portnum]++; |
| 432 | | m_io_timeout[portnum]->adjust(machine().device<cpu_device>("maincpu")->cycles_to_attotime(8192)); |
| 430 | m_io_timeout[portnum]->adjust(m_maincpu->cycles_to_attotime(8192)); |
| 433 | 431 | } |
| 434 | 432 | |
| 435 | 433 | } |
| r22079 | r22080 | |
| 630 | 628 | { |
| 631 | 629 | m_z80snd->reset(); |
| 632 | 630 | m_z80snd->suspend(SUSPEND_REASON_HALT, 1); |
| 633 | | machine().device("ymsnd")->reset(); |
| 631 | m_ymsnd->reset(); |
| 634 | 632 | } |
| 635 | 633 | else |
| 636 | 634 | { |
| r22079 | r22080 | |
| 838 | 836 | |
| 839 | 837 | UINT32 md_base_state::screen_update_megadriv(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) |
| 840 | 838 | { |
| 841 | | sega_genesis_vdp_device *vdp = machine().device<sega_genesis_vdp_device>("gen_vdp"); // yuck |
| 842 | | |
| 843 | 839 | /* Copy our screen buffer here */ |
| 844 | 840 | for (int y = cliprect.min_y; y <= cliprect.max_y; y++) |
| 845 | 841 | { |
| 846 | 842 | UINT32* desty = &bitmap.pix32(y, 0); |
| 847 | 843 | UINT16* srcy; |
| 848 | 844 | |
| 849 | | if (!vdp->m_use_alt_timing) |
| 850 | | { |
| 851 | | srcy = &vdp->m_render_bitmap->pix(y, 0); |
| 852 | | } |
| 845 | if (!m_vdp->m_use_alt_timing) |
| 846 | srcy = &m_vdp->m_render_bitmap->pix(y, 0); |
| 853 | 847 | else |
| 854 | | { |
| 855 | | srcy = vdp->m_render_line; |
| 856 | | } |
| 848 | srcy = m_vdp->m_render_line; |
| 857 | 849 | |
| 858 | 850 | for (int x = cliprect.min_x; x <= cliprect.max_x; x++) |
| 859 | 851 | { |
trunk/src/mame/includes/megadriv.h
| r22079 | r22080 | |
| 62 | 62 | : driver_device(mconfig, type, tag), |
| 63 | 63 | m_maincpu(*this,"maincpu"), |
| 64 | 64 | m_z80snd(*this,"genesis_snd_z80"), |
| 65 | m_ymsnd(*this,"ymsnd"), |
| 65 | 66 | m_vdp(*this,"gen_vdp"), |
| 66 | 67 | m_32x(*this,"sega32x"), |
| 67 | 68 | m_segacd(*this,"segacd"), |
| r22079 | r22080 | |
| 70 | 71 | { } |
| 71 | 72 | required_device<cpu_device> m_maincpu; |
| 72 | 73 | optional_device<cpu_device> m_z80snd; |
| 74 | optional_device<device_t> m_ymsnd; |
| 73 | 75 | required_device<sega_genesis_vdp_device> m_vdp; |
| 74 | 76 | optional_device<sega_32x_device> m_32x; |
| 75 | 77 | optional_device<sega_segacd_device> m_segacd; |