change sega genesis vdp to use macros instead of direct usage of callback defines (nw)

This commit is contained in:
Miodrag Milanovic 2014-03-28 13:55:45 +00:00
parent a820b91964
commit 826c2fea22
6 changed files with 48 additions and 34 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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