From 826c2fea22a9b64406397e8fbfd39c45fe63cf23 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 28 Mar 2014 13:55:45 +0000 Subject: [PATCH] change sega genesis vdp to use macros instead of direct usage of callback defines (nw) --- src/mame/drivers/megaplay.c | 9 ++++----- src/mame/drivers/megatech.c | 9 ++++----- src/mame/drivers/segac2.c | 11 +++++------ src/mame/drivers/segas18.c | 15 +++++++-------- src/mame/machine/megadriv.c | 18 ++++++++---------- src/mame/machine/megavdp.h | 20 ++++++++++++++++++++ 6 files changed, 48 insertions(+), 34 deletions(-) diff --git a/src/mame/drivers/megaplay.c b/src/mame/drivers/megaplay.c index 72099eece93..23d37860e00 100644 --- a/src/mame/drivers/megaplay.c +++ b/src/mame/drivers/megaplay.c @@ -617,12 +617,11 @@ static MACHINE_CONFIG_START( megaplay, mplay_state ) MCFG_SCREEN_UPDATE_DRIVER(mplay_state, screen_update_megplay) MCFG_DEVICE_REMOVE("gen_vdp") - MCFG_DEVICE_ADD("gen_vdp", SEGA_GEN_VDP, 0) - MCFG_DEVICE_CONFIG( bios_vdp_intf ) + MCFG_SEGAGEN_VDP_ADD("gen_vdp", bios_vdp_intf) + MCFG_SEGAGEN_VDP_SND_IRQ_CALLBACK(WRITELINE(md_base_state, genesis_vdp_sndirqline_callback_genesis_z80)); + MCFG_SEGAGEN_VDP_LV6_IRQ_CALLBACK(WRITELINE(md_base_state, genesis_vdp_lv6irqline_callback_genesis_68k)); + MCFG_SEGAGEN_VDP_LV4_IRQ_CALLBACK(WRITELINE(md_base_state, genesis_vdp_lv4irqline_callback_genesis_68k)); MCFG_VIDEO_SET_SCREEN("megadriv") - sega_genesis_vdp_device::set_genesis_vdp_sndirqline_callback(*device, DEVCB2_WRITELINE(md_base_state, genesis_vdp_sndirqline_callback_genesis_z80)); - sega_genesis_vdp_device::set_genesis_vdp_lv6irqline_callback(*device, DEVCB2_WRITELINE(md_base_state, genesis_vdp_lv6irqline_callback_genesis_68k)); - sega_genesis_vdp_device::set_genesis_vdp_lv4irqline_callback(*device, DEVCB2_WRITELINE(md_base_state, genesis_vdp_lv4irqline_callback_genesis_68k)); MACHINE_CONFIG_END diff --git a/src/mame/drivers/megatech.c b/src/mame/drivers/megatech.c index d0b692205bd..12555ec7fa8 100644 --- a/src/mame/drivers/megatech.c +++ b/src/mame/drivers/megatech.c @@ -637,12 +637,11 @@ static MACHINE_CONFIG_START( megatech, mtech_state ) MCFG_SCREEN_VBLANK_DRIVER(mtech_state, screen_eof_main) MCFG_DEVICE_REMOVE("gen_vdp") - MCFG_DEVICE_ADD("gen_vdp", SEGA_GEN_VDP, 0) - MCFG_DEVICE_CONFIG( main_vdp_intf ) + MCFG_SEGAGEN_VDP_ADD("gen_vdp", main_vdp_intf ) + MCFG_SEGAGEN_VDP_SND_IRQ_CALLBACK(WRITELINE(md_base_state, genesis_vdp_sndirqline_callback_genesis_z80)); + MCFG_SEGAGEN_VDP_LV6_IRQ_CALLBACK(WRITELINE(md_base_state, genesis_vdp_lv6irqline_callback_genesis_68k)); + MCFG_SEGAGEN_VDP_LV4_IRQ_CALLBACK(WRITELINE(md_base_state, genesis_vdp_lv4irqline_callback_genesis_68k)); MCFG_VIDEO_SET_SCREEN("megadriv") - sega_genesis_vdp_device::set_genesis_vdp_sndirqline_callback(*device, DEVCB2_WRITELINE(md_base_state, genesis_vdp_sndirqline_callback_genesis_z80)); - sega_genesis_vdp_device::set_genesis_vdp_lv6irqline_callback(*device, DEVCB2_WRITELINE(md_base_state, genesis_vdp_lv6irqline_callback_genesis_68k)); - sega_genesis_vdp_device::set_genesis_vdp_lv4irqline_callback(*device, DEVCB2_WRITELINE(md_base_state, genesis_vdp_lv4irqline_callback_genesis_68k)); MCFG_SCREEN_ADD("menu", RASTER) // check frq diff --git a/src/mame/drivers/segac2.c b/src/mame/drivers/segac2.c index e95e42d5e42..e304b49b1af 100644 --- a/src/mame/drivers/segac2.c +++ b/src/mame/drivers/segac2.c @@ -1357,13 +1357,12 @@ static MACHINE_CONFIG_START( segac, segac2_state ) MCFG_MACHINE_RESET_OVERRIDE(segac2_state,segac2) MCFG_NVRAM_ADD_RANDOM_FILL("nvram") - MCFG_DEVICE_ADD("gen_vdp", SEGA_GEN_VDP, 0) + MCFG_SEGAGEN_VDP_ADD("gen_vdp", sms_vdp_ntsc_intf) + MCFG_SEGAGEN_VDP_SND_IRQ_CALLBACK(WRITELINE(segac2_state, genesis_vdp_sndirqline_callback_segac2)); + MCFG_SEGAGEN_VDP_LV6_IRQ_CALLBACK(WRITELINE(segac2_state, genesis_vdp_lv6irqline_callback_segac2)); + MCFG_SEGAGEN_VDP_LV4_IRQ_CALLBACK(WRITELINE(segac2_state, genesis_vdp_lv4irqline_callback_segac2)); + MCFG_SEGAGEN_VDP_ALT_TIMING(1); MCFG_VIDEO_SET_SCREEN("megadriv") - MCFG_DEVICE_CONFIG( sms_vdp_ntsc_intf ) - sega_genesis_vdp_device::set_genesis_vdp_sndirqline_callback(*device, DEVCB2_WRITELINE(segac2_state, genesis_vdp_sndirqline_callback_segac2)); - sega_genesis_vdp_device::set_genesis_vdp_lv6irqline_callback(*device, DEVCB2_WRITELINE(segac2_state, genesis_vdp_lv6irqline_callback_segac2)); - sega_genesis_vdp_device::set_genesis_vdp_lv4irqline_callback(*device, DEVCB2_WRITELINE(segac2_state, genesis_vdp_lv4irqline_callback_segac2)); - sega_genesis_vdp_device::set_genesis_vdp_alt_timing(*device, 1); MCFG_TIMER_DEVICE_ADD_SCANLINE("scantimer", "gen_vdp", sega_genesis_vdp_device, megadriv_scanline_timer_callback_alt_timing, "megadriv", 0, 1) diff --git a/src/mame/drivers/segas18.c b/src/mame/drivers/segas18.c index 7e8ab0a781a..60d9e68baac 100644 --- a/src/mame/drivers/segas18.c +++ b/src/mame/drivers/segas18.c @@ -1233,14 +1233,13 @@ static MACHINE_CONFIG_START( system18, segas18_state ) MCFG_SEGA_315_5195_MAPPER_ADD("mapper", "maincpu", segas18_state, memory_mapper, mapper_sound_r, mapper_sound_w) - MCFG_DEVICE_ADD("gen_vdp", SEGA_GEN_VDP, 0) - MCFG_DEVICE_CONFIG( sms_vdp_ntsc_intf ) - sega_genesis_vdp_device::set_genesis_vdp_sndirqline_callback(*device, DEVCB2_WRITELINE(segas18_state, genesis_vdp_sndirqline_callback_segas18)); - sega_genesis_vdp_device::set_genesis_vdp_lv6irqline_callback(*device, DEVCB2_WRITELINE(segas18_state, genesis_vdp_lv6irqline_callback_segas18)); - sega_genesis_vdp_device::set_genesis_vdp_lv4irqline_callback(*device, DEVCB2_WRITELINE(segas18_state, genesis_vdp_lv4irqline_callback_segas18)); - sega_genesis_vdp_device::set_genesis_vdp_alt_timing(*device, 1); - sega_genesis_vdp_device::set_genesis_vdp_palwrite_base(*device, 0x2000); - sega_genesis_vdp_device::static_set_palette_tag(*device,":palette"); + MCFG_SEGAGEN_VDP_ADD("gen_vdp", sms_vdp_ntsc_intf ) + MCFG_SEGAGEN_VDP_SND_IRQ_CALLBACK(WRITELINE(segas18_state, genesis_vdp_sndirqline_callback_segas18)); + MCFG_SEGAGEN_VDP_LV6_IRQ_CALLBACK(WRITELINE(segas18_state, genesis_vdp_lv6irqline_callback_segas18)); + MCFG_SEGAGEN_VDP_LV4_IRQ_CALLBACK(WRITELINE(segas18_state, genesis_vdp_lv4irqline_callback_segas18)); + MCFG_SEGAGEN_VDP_ALT_TIMING(1); + MCFG_SEGAGEN_VDP_PAL_WRITE_BASE(0x2000); + MCFG_SEGAGEN_VDP_PALETTE("palette") MCFG_TIMER_DEVICE_ADD_SCANLINE("scantimer", "gen_vdp", sega_genesis_vdp_device, megadriv_scanline_timer_callback_alt_timing, "screen", 0, 1) diff --git a/src/mame/machine/megadriv.c b/src/mame/machine/megadriv.c index b31a13e2c27..888364da3db 100644 --- a/src/mame/machine/megadriv.c +++ b/src/mame/machine/megadriv.c @@ -967,12 +967,11 @@ MACHINE_CONFIG_FRAGMENT( md_ntsc ) MCFG_FRAGMENT_ADD(megadriv_timers) - MCFG_DEVICE_ADD("gen_vdp", SEGA_GEN_VDP, 0) - MCFG_DEVICE_CONFIG( sms_vdp_ntsc_intf ) + MCFG_SEGAGEN_VDP_ADD("gen_vdp", sms_vdp_ntsc_intf ) + MCFG_SEGAGEN_VDP_SND_IRQ_CALLBACK(WRITELINE(md_base_state, genesis_vdp_sndirqline_callback_genesis_z80)); + MCFG_SEGAGEN_VDP_LV6_IRQ_CALLBACK(WRITELINE(md_base_state, genesis_vdp_lv6irqline_callback_genesis_68k)); + MCFG_SEGAGEN_VDP_LV4_IRQ_CALLBACK(WRITELINE(md_base_state, genesis_vdp_lv4irqline_callback_genesis_68k)); MCFG_VIDEO_SET_SCREEN("megadriv") - sega_genesis_vdp_device::set_genesis_vdp_sndirqline_callback(*device, DEVCB2_WRITELINE(md_base_state, genesis_vdp_sndirqline_callback_genesis_z80)); - sega_genesis_vdp_device::set_genesis_vdp_lv6irqline_callback(*device, DEVCB2_WRITELINE(md_base_state, genesis_vdp_lv6irqline_callback_genesis_68k)); - sega_genesis_vdp_device::set_genesis_vdp_lv4irqline_callback(*device, DEVCB2_WRITELINE(md_base_state, genesis_vdp_lv4irqline_callback_genesis_68k)); MCFG_SCREEN_ADD("megadriv", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -1014,12 +1013,11 @@ MACHINE_CONFIG_FRAGMENT( md_pal ) MCFG_FRAGMENT_ADD(megadriv_timers) - MCFG_DEVICE_ADD("gen_vdp", SEGA_GEN_VDP, 0) - MCFG_DEVICE_CONFIG( sms_vdp_pal_intf ) + MCFG_SEGAGEN_VDP_ADD("gen_vdp", sms_vdp_pal_intf ) + MCFG_SEGAGEN_VDP_SND_IRQ_CALLBACK(WRITELINE(md_base_state, genesis_vdp_sndirqline_callback_genesis_z80)); + MCFG_SEGAGEN_VDP_LV6_IRQ_CALLBACK(WRITELINE(md_base_state, genesis_vdp_lv6irqline_callback_genesis_68k)); + MCFG_SEGAGEN_VDP_LV4_IRQ_CALLBACK(WRITELINE(md_base_state, genesis_vdp_lv4irqline_callback_genesis_68k)); MCFG_VIDEO_SET_SCREEN("megadriv") - sega_genesis_vdp_device::set_genesis_vdp_sndirqline_callback(*device, DEVCB2_WRITELINE(md_base_state, genesis_vdp_sndirqline_callback_genesis_z80)); - sega_genesis_vdp_device::set_genesis_vdp_lv6irqline_callback(*device, DEVCB2_WRITELINE(md_base_state, genesis_vdp_lv6irqline_callback_genesis_68k)); - sega_genesis_vdp_device::set_genesis_vdp_lv4irqline_callback(*device, DEVCB2_WRITELINE(md_base_state, genesis_vdp_lv4irqline_callback_genesis_68k)); MCFG_SCREEN_ADD("megadriv", RASTER) MCFG_SCREEN_REFRESH_RATE(50) diff --git a/src/mame/machine/megavdp.h b/src/mame/machine/megavdp.h index aad36dd2fc5..1149c17c73a 100644 --- a/src/mame/machine/megavdp.h +++ b/src/mame/machine/megavdp.h @@ -145,7 +145,27 @@ #define MEGADRIVE_REG17_DMATYPE ((m_vdp_regs[0x17]&0xc0)>>6) #define MEGADRIVE_REG17_UNUSED ((m_vdp_regs[0x17]&0x3f)>>0) +#define MCFG_SEGAGEN_VDP_ADD(_tag, _intrf) \ + MCFG_DEVICE_ADD(_tag, SEGA_GEN_VDP, 0) \ + MCFG_DEVICE_CONFIG(_intrf) +#define MCFG_SEGAGEN_VDP_SND_IRQ_CALLBACK(_write) \ + devcb = &sega_genesis_vdp_device::set_genesis_vdp_sndirqline_callback(*device, DEVCB2_##_write); + +#define MCFG_SEGAGEN_VDP_LV6_IRQ_CALLBACK(_write) \ + devcb = &sega_genesis_vdp_device::set_genesis_vdp_lv6irqline_callback(*device, DEVCB2_##_write); + +#define MCFG_SEGAGEN_VDP_LV4_IRQ_CALLBACK(_write) \ + devcb = &sega_genesis_vdp_device::set_genesis_vdp_lv4irqline_callback(*device, DEVCB2_##_write); + +#define MCFG_SEGAGEN_VDP_ALT_TIMING(_data) \ + sega_genesis_vdp_device::set_genesis_vdp_alt_timing(*device, _data); + +#define MCFG_SEGAGEN_VDP_PAL_WRITE_BASE(_data) \ + sega_genesis_vdp_device::set_genesis_vdp_palwrite_base(*device, _data); + +#define MCFG_SEGAGEN_VDP_PALETTE(_palette_tag) \ + sega_genesis_vdp_device::static_set_palette_tag(*device, "^" _palette_tag); UINT16 vdp_get_word_from_68k_mem_default(running_machine &machine, UINT32 source, address_space & space68k);