summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/megadriv.c
diff options
context:
space:
mode:
author Fabio Priuli <etabeta78@users.noreply.github.com>2014-03-29 07:20:28 +0000
committer Fabio Priuli <etabeta78@users.noreply.github.com>2014-03-29 07:20:28 +0000
commit7e11ce8ac2993f5d391935432c3eef3b150ad76a (patch)
treeb034586c4ed381bd8dd7d36121c9783c2d04f11e /src/mess/drivers/megadriv.c
parentebf0deb2b35506d02bd7de08c5507b6a34e6c4b8 (diff)
(MESS) 32x: replaced direct references to 32x inside the MD VDP with
calls to suitable delegates. it's not the perfect solution (the mixing should not happen inside the MD VDP as it does now), but it is a step in the right direction. nw.
Diffstat (limited to 'src/mess/drivers/megadriv.c')
-rw-r--r--src/mess/drivers/megadriv.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/mess/drivers/megadriv.c b/src/mess/drivers/megadriv.c
index f4151715bc3..dd69e9d5485 100644
--- a/src/mess/drivers/megadriv.c
+++ b/src/mess/drivers/megadriv.c
@@ -432,12 +432,35 @@ DEVICE_IMAGE_LOAD_MEMBER( md_base_state, _32x_cart )
}
+void md_cons_state::_32x_scanline_callback(int x, UINT32 priority, UINT16 &lineptr)
+{
+ if (m_32x)
+ m_32x->_32x_render_videobuffer_to_screenbuffer(x, priority, lineptr);
+}
+
+void md_cons_state::_32x_interrupt_callback(int scanline, int irq6)
+{
+ if (m_32x)
+ m_32x->_32x_interrupt_cb(scanline, irq6);
+}
+
+void md_cons_state::_32x_scanline_helper_callback(int scanline)
+{
+ if (m_32x)
+ m_32x->_32x_render_videobuffer_to_screenbuffer_helper(scanline);
+}
+
static MACHINE_CONFIG_START( genesis_32x, md_cons_state )
MCFG_FRAGMENT_ADD( md_ntsc )
MCFG_MACHINE_START_OVERRIDE( md_cons_state, md_common )
MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv )
+ MCFG_DEVICE_MODIFY("gen_vdp")
+ MCFG_SEGAGEN_VDP_32X_SCANLINE_CB(md_cons_state, _32x_scanline_callback);
+ MCFG_SEGAGEN_VDP_32X_SCANLINE_HELPER_CB(md_cons_state, _32x_scanline_helper_callback);
+ MCFG_SEGAGEN_VDP_32X_INTERRUPT_CB(md_cons_state, _32x_interrupt_callback);
+
MCFG_DEVICE_ADD("sega32x", SEGA_32X_NTSC, 0)
MCFG_SEGA_32X_PALETTE("gen_vdp:palette")
@@ -472,6 +495,11 @@ static MACHINE_CONFIG_START( mdj_32x, md_cons_state )
MCFG_MACHINE_START_OVERRIDE( md_cons_state, md_common )
MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv )
+ MCFG_DEVICE_MODIFY("gen_vdp")
+ MCFG_SEGAGEN_VDP_32X_SCANLINE_CB(md_cons_state, _32x_scanline_callback);
+ MCFG_SEGAGEN_VDP_32X_SCANLINE_HELPER_CB(md_cons_state, _32x_scanline_helper_callback);
+ MCFG_SEGAGEN_VDP_32X_INTERRUPT_CB(md_cons_state, _32x_interrupt_callback);
+
MCFG_DEVICE_ADD("sega32x", SEGA_32X_NTSC, 0)
MCFG_SEGA_32X_PALETTE("gen_vdp:palette")
@@ -506,6 +534,11 @@ static MACHINE_CONFIG_START( md_32x, md_cons_state )
MCFG_MACHINE_START_OVERRIDE( md_cons_state, md_common )
MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv )
+ MCFG_DEVICE_MODIFY("gen_vdp")
+ MCFG_SEGAGEN_VDP_32X_SCANLINE_CB(md_cons_state, _32x_scanline_callback);
+ MCFG_SEGAGEN_VDP_32X_SCANLINE_HELPER_CB(md_cons_state, _32x_scanline_helper_callback);
+ MCFG_SEGAGEN_VDP_32X_INTERRUPT_CB(md_cons_state, _32x_interrupt_callback);
+
MCFG_DEVICE_ADD("sega32x", SEGA_32X_PAL, 0)
MCFG_SEGA_32X_PALETTE("gen_vdp:palette")