summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2013-03-25 12:30:09 +0000
committer Miodrag Milanovic <mmicko@gmail.com>2013-03-25 12:30:09 +0000
commit7ccedf2bd510028426104c2e14d4611f38e6f953 (patch)
tree6eb6a7ac98a2f4820b72e94a18361f6d2340af3f /src
parent1a9b55d88ff6285ebdcc9b02829f5be90ddb658a (diff)
and some more megadriv modernization (nw)
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/megaplay.c8
-rw-r--r--src/mame/drivers/megatech.c8
-rw-r--r--src/mame/drivers/segac2.c4
-rw-r--r--src/mame/includes/megadriv.h21
-rw-r--r--src/mame/machine/megadriv.c80
-rw-r--r--src/mame/machine/megavdp.c6
-rw-r--r--src/mess/drivers/megadriv.c48
7 files changed, 80 insertions, 95 deletions
diff --git a/src/mame/drivers/megaplay.c b/src/mame/drivers/megaplay.c
index 9612826632b..b6c66f52c0b 100644
--- a/src/mame/drivers/megaplay.c
+++ b/src/mame/drivers/megaplay.c
@@ -600,14 +600,14 @@ ADDRESS_MAP_END
VIDEO_START_MEMBER(mplay_state,megplay)
{
//printf("megplay vs\n");
- VIDEO_START_CALL_LEGACY(megadriv);
+ VIDEO_START_CALL_MEMBER(megadriv);
// VIDEO_START_CALL_MEMBER(megaplay_normal);
}
UINT32 mplay_state::screen_update_megplay(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
//printf("megplay vu\n");
- SCREEN_UPDATE32_CALL(megadriv);
+ screen_update_megadriv(screen,bitmap,cliprect);
// SCREEN_UPDATE32_CALL(megaplay_normal);
SCREEN_UPDATE32_CALL(megaplay_bios);
return 0;
@@ -620,14 +620,14 @@ MACHINE_RESET_MEMBER(mplay_state,megaplay)
m_bios_mode = MP_ROM;
m_mp_bios_bank_addr = 0;
m_readpos = 1;
- MACHINE_RESET_CALL_LEGACY(megadriv);
+ MACHINE_RESET_CALL_MEMBER(megadriv);
MACHINE_RESET_CALL_LEGACY(megatech_bios);
}
void mplay_state::screen_eof_megaplay(screen_device &screen, bool state)
{
bool vblank_on = state;
- SCREEN_VBLANK_CALL(megadriv);
+ screen_eof_megadriv(screen,state);
SCREEN_VBLANK_CALL(megatech_bios);
}
diff --git a/src/mame/drivers/megatech.c b/src/mame/drivers/megatech.c
index 32175b917f4..83b51d185f2 100644
--- a/src/mame/drivers/megatech.c
+++ b/src/mame/drivers/megatech.c
@@ -428,7 +428,7 @@ DRIVER_INIT_MEMBER(mtech_state,mt_crt)
VIDEO_START_MEMBER(mtech_state,mtnew)
{
init_for_megadrive(machine()); // create an sms vdp too, for compatibility mode
- VIDEO_START_CALL_LEGACY(megadriv);
+ VIDEO_START_CALL_MEMBER(megadriv);
}
//attotime::never
@@ -436,7 +436,7 @@ UINT32 mtech_state::screen_update_mtnew(screen_device &screen, bitmap_rgb32 &bit
{
/* if we're running an sms game then use the SMS update.. maybe this should be moved to the megadrive emulation core as compatibility mode is a feature of the chip */
if (!m_current_game_is_sms)
- SCREEN_UPDATE32_CALL(megadriv);
+ screen_update_megadriv(screen, bitmap, cliprect);
else
SCREEN_UPDATE32_CALL(megatech_md_sms);
return 0;
@@ -446,7 +446,7 @@ void mtech_state::screen_eof_mtnew(screen_device &screen, bool state)
{
bool vblank_on = state;
if (!m_current_game_is_sms)
- SCREEN_VBLANK_CALL(megadriv);
+ screen_eof_megadriv(screen, state);
else
SCREEN_VBLANK_CALL(megatech_md_sms);
}
@@ -455,7 +455,7 @@ MACHINE_RESET_MEMBER(mtech_state,mtnew)
{
m_mt_bank_addr = 0;
- MACHINE_RESET_CALL_LEGACY(megadriv);
+ MACHINE_RESET_CALL_MEMBER(megadriv);
MACHINE_RESET_CALL_LEGACY(megatech_md_sms);
megatech_select_game(0);
}
diff --git a/src/mame/drivers/segac2.c b/src/mame/drivers/segac2.c
index 93d4ab51dbe..4384596a3d6 100644
--- a/src/mame/drivers/segac2.c
+++ b/src/mame/drivers/segac2.c
@@ -1248,7 +1248,7 @@ static const ym3438_interface ym3438_intf =
VIDEO_START_MEMBER(segac2_state,segac2_new)
{
- VIDEO_START_CALL_LEGACY(megadriv);
+ VIDEO_START_CALL_MEMBER(megadriv);
}
// C2 doesn't use the internal VDP CRAM, instead it uses the digital output of the chip
@@ -1379,7 +1379,7 @@ static MACHINE_CONFIG_START( segac, segac2_state )
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(segac2_state, screen_update_segac2_new)
- MCFG_SCREEN_VBLANK_STATIC( megadriv )
+ MCFG_SCREEN_VBLANK_DRIVER(segac2_state, screen_eof_megadriv )
MCFG_PALETTE_LENGTH(2048*3)
diff --git a/src/mame/includes/megadriv.h b/src/mame/includes/megadriv.h
index cb5443aad61..43b1f1c1d7d 100644
--- a/src/mame/includes/megadriv.h
+++ b/src/mame/includes/megadriv.h
@@ -39,18 +39,6 @@ MACHINE_CONFIG_EXTERN( md_ntsc );
MACHINE_CONFIG_EXTERN( md_pal );
MACHINE_CONFIG_EXTERN( md_bootleg ); // for topshoot.c & hshavoc.c
-MACHINE_START( megadriv );
-MACHINE_RESET( megadriv );
-VIDEO_START( megadriv );
-SCREEN_UPDATE_RGB32( megadriv );
-SCREEN_VBLANK( megadriv );
-
-
-
-
-
-extern int m_megadrive_6buttons_pad;
-
/* Megaplay - Megatech specific */
/* It might be possible to move the following structs in the drivers */
@@ -156,6 +144,13 @@ public:
void megadrive_io_write_sctrl_port(int portnum, UINT16 data);
void megadriv_stop_scanline_timer();
+
+ DECLARE_MACHINE_START( megadriv );
+ DECLARE_MACHINE_RESET( megadriv );
+ DECLARE_VIDEO_START( megadriv );
+ UINT32 screen_update_megadriv(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ void screen_eof_megadriv(screen_device &screen, bool state);
+
};
class md_boot_state : public md_base_state
@@ -477,7 +472,5 @@ extern UINT16 vdp_get_word_from_68k_mem_default(running_machine &machine, UINT32
extern int megadrive_total_scanlines;
extern int megadrive_vblank_flag;
extern UINT16* megadrive_vdp_palette_lookup;
-
-/* machine/megadriv.c */
extern TIMER_DEVICE_CALLBACK( megadriv_scanline_timer_callback );
extern timer_device* megadriv_scanline_timer;
diff --git a/src/mame/machine/megadriv.c b/src/mame/machine/megadriv.c
index fb059f64df0..3b92b9b12b0 100644
--- a/src/mame/machine/megadriv.c
+++ b/src/mame/machine/megadriv.c
@@ -836,9 +836,9 @@ MACHINE_CONFIG_END
-SCREEN_UPDATE_RGB32(megadriv)
+UINT32 md_base_state::screen_update_megadriv(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- sega_genesis_vdp_device *vdp = screen.machine().device<sega_genesis_vdp_device>("gen_vdp"); // yuck
+ sega_genesis_vdp_device *vdp = machine().device<sega_genesis_vdp_device>("gen_vdp"); // yuck
/* Copy our screen buffer here */
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
@@ -869,51 +869,51 @@ SCREEN_UPDATE_RGB32(megadriv)
/*****************************************************************************************/
-
-MACHINE_START( megadriv )
+VIDEO_START_MEMBER(md_base_state,megadriv)
{
- md_base_state *state = machine.driver_data<md_base_state>();
- if (state->m_megadrive_6buttons_pad)
- state->init_megadri6_io();
}
-MACHINE_RESET( megadriv )
+MACHINE_START_MEMBER(md_base_state,megadriv)
{
- md_base_state *state = machine.driver_data<md_base_state>();
+ if (m_megadrive_6buttons_pad)
+ init_megadri6_io();
+}
+MACHINE_RESET_MEMBER(md_base_state,megadriv)
+{
/* default state of z80 = reset, with bus */
mame_printf_debug("Resetting Megadrive / Genesis\n");
- if (state->m_z80snd)
+ if (m_z80snd)
{
- state->m_genz80.z80_is_reset = 1;
- state->m_genz80.z80_has_bus = 1;
- state->m_genz80.z80_bank_addr = 0;
- state->m_vdp->set_scanline_counter(-1);
- machine.scheduler().timer_set(attotime::zero, timer_expired_delegate(FUNC(md_base_state::megadriv_z80_run_state),state));
+ m_genz80.z80_is_reset = 1;
+ m_genz80.z80_has_bus = 1;
+ m_genz80.z80_bank_addr = 0;
+ m_vdp->set_scanline_counter(-1);
+ machine().scheduler().timer_set(attotime::zero, timer_expired_delegate(FUNC(md_base_state::megadriv_z80_run_state),this));
}
- state->megadrive_reset_io();
+ megadrive_reset_io();
- if (!state->m_vdp->m_use_alt_timing)
+ if (!m_vdp->m_use_alt_timing)
{
- megadriv_scanline_timer = machine.device<timer_device>("md_scan_timer");
+ megadriv_scanline_timer = machine().device<timer_device>("md_scan_timer");
megadriv_scanline_timer->adjust(attotime::zero);
}
- if (state->m_other_hacks)
+ if (m_other_hacks)
{
// machine.device("maincpu")->set_clock_scale(0.9950f); /* Fatal Rewind is very fussy... (and doesn't work now anyway, so don't bother with this) */
- if (state->m_megadrive_ram)
- memset(state->m_megadrive_ram,0x00,0x10000);
+ if (m_megadrive_ram)
+ memset(m_megadrive_ram,0x00,0x10000);
}
- megadriv_reset_vdp(machine);
+ megadriv_reset_vdp(machine());
// if the system has a 32x, pause the extra CPUs until they are actually turned on
- if (state->m_32x)
- state->m_32x->pause_cpu();
+ if (m_32x)
+ m_32x->pause_cpu();
}
void md_base_state::megadriv_stop_scanline_timer()
@@ -1018,8 +1018,8 @@ MACHINE_CONFIG_FRAGMENT( md_ntsc )
MCFG_CPU_IO_MAP(megadriv_z80_io_map)
/* IRQ handled via the timers */
- MCFG_MACHINE_START(megadriv)
- MCFG_MACHINE_RESET(megadriv)
+ MCFG_MACHINE_START_OVERRIDE(md_base_state,megadriv)
+ MCFG_MACHINE_RESET_OVERRIDE(md_base_state,megadriv)
MCFG_FRAGMENT_ADD(megadriv_timers)
@@ -1036,14 +1036,14 @@ MACHINE_CONFIG_FRAGMENT( md_ntsc )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) // Vblank handled manually.
MCFG_SCREEN_SIZE(64*8, 620)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(megadriv) /* Copies a bitmap */
- MCFG_SCREEN_VBLANK_STATIC(megadriv) /* Used to Sync the timing */
+ MCFG_SCREEN_UPDATE_DRIVER(md_base_state,screen_update_megadriv) /* Copies a bitmap */
+ MCFG_SCREEN_VBLANK_DRIVER(md_base_state,screen_eof_megadriv) /* Used to Sync the timing */
MCFG_TIMER_ADD_SCANLINE("scantimer", megadriv_scanline_timer_callback_alt_timing, "megadriv", 0, 1)
MCFG_PALETTE_LENGTH(0x200)
- MCFG_VIDEO_START(megadriv)
+ MCFG_VIDEO_START_OVERRIDE(md_base_state,megadriv)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -1071,8 +1071,8 @@ MACHINE_CONFIG_FRAGMENT( md_pal )
MCFG_CPU_IO_MAP(megadriv_z80_io_map)
/* IRQ handled via the timers */
- MCFG_MACHINE_START(megadriv)
- MCFG_MACHINE_RESET(megadriv)
+ MCFG_MACHINE_START_OVERRIDE(md_base_state,megadriv)
+ MCFG_MACHINE_RESET_OVERRIDE(md_base_state,megadriv)
MCFG_FRAGMENT_ADD(megadriv_timers)
@@ -1087,12 +1087,12 @@ MACHINE_CONFIG_FRAGMENT( md_pal )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) // Vblank handled manually.
MCFG_SCREEN_SIZE(64*8, 620)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 28*8-1)
- MCFG_SCREEN_UPDATE_STATIC(megadriv) /* Copies a bitmap */
- MCFG_SCREEN_VBLANK_STATIC(megadriv) /* Used to Sync the timing */
+ MCFG_SCREEN_UPDATE_DRIVER(md_base_state,screen_update_megadriv) /* Copies a bitmap */
+ MCFG_SCREEN_VBLANK_DRIVER(md_base_state,screen_eof_megadriv) /* Used to Sync the timing */
MCFG_PALETTE_LENGTH(0x200)
- MCFG_VIDEO_START(megadriv)
+ MCFG_VIDEO_START_OVERRIDE(md_base_state,megadriv)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -1341,19 +1341,17 @@ void mtech_state::megatech_set_megadrive_z80_as_megadrive_z80(const char* tag)
-SCREEN_VBLANK(megadriv)
+void md_base_state::screen_eof_megadriv(screen_device &screen, bool state)
{
- md_base_state *state = screen.machine().driver_data<md_base_state>();
-
if (screen.ioport(":RESET")->read_safe(0x00) & 0x01)
- state->m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
+ m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
// rising edge
- if (vblank_on)
+ if (state)
{
- if (!state->m_vdp->m_use_alt_timing)
+ if (!m_vdp->m_use_alt_timing)
{
- state->m_vdp->vdp_handle_eof(screen.machine());
+ m_vdp->vdp_handle_eof(machine());
megadriv_scanline_timer->adjust(attotime::zero);
}
}
diff --git a/src/mame/machine/megavdp.c b/src/mame/machine/megavdp.c
index d7c82159ee5..386e40a8cf2 100644
--- a/src/mame/machine/megavdp.c
+++ b/src/mame/machine/megavdp.c
@@ -2602,12 +2602,6 @@ void sega_genesis_vdp_device::genesis_render_scanline(running_machine &machine)
}
}
-
-VIDEO_START(megadriv)
-{
-}
-
-
void sega_genesis_vdp_device::vdp_handle_scanline_callback(running_machine &machine, int scanline)
{
/* Compensate for some rounding errors
diff --git a/src/mess/drivers/megadriv.c b/src/mess/drivers/megadriv.c
index b8358c5d85a..2b303f65b86 100644
--- a/src/mess/drivers/megadriv.c
+++ b/src/mess/drivers/megadriv.c
@@ -34,6 +34,8 @@ public:
READ8_MEMBER(mess_md_io_read_data_port);
WRITE16_MEMBER(mess_md_io_write_data_port);
+ DECLARE_MACHINE_START( ms_megadriv );
+ DECLARE_MACHINE_RESET( ms_megadriv );
};
class pico_state : public md_cons_state
@@ -49,6 +51,7 @@ public:
UINT16 pico_read_penpos(int pen);
DECLARE_READ16_HANDLER(pico_68k_io_read);
DECLARE_WRITE16_MEMBER(pico_68k_io_write);
+ DECLARE_MACHINE_START(pico);
};
@@ -313,23 +316,21 @@ UINT16 vdp_get_word_from_68k_mem_console(running_machine &machine, UINT32 source
}
}
-static MACHINE_START( ms_megadriv )
+MACHINE_START_MEMBER(md_cons_state,ms_megadriv )
{
- md_cons_state *state = machine.driver_data<md_cons_state>();
-
- state->init_megadri6_io();
+ init_megadri6_io();
vdp_get_word_from_68k_mem = vdp_get_word_from_68k_mem_console;
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)state->m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)state->m_slotcart));
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)state->m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)state->m_slotcart));
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)state->m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)state->m_slotcart));
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)state->m_slotcart));
+ machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)m_slotcart));
+ machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)m_slotcart));
+ machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_slotcart));
+ machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)m_slotcart));
}
-static MACHINE_RESET( ms_megadriv )
+MACHINE_RESET_MEMBER(md_cons_state,ms_megadriv )
{
- MACHINE_RESET_CALL( megadriv );
+ MACHINE_RESET_CALL_MEMBER( megadriv );
}
static SLOT_INTERFACE_START(md_cart)
@@ -393,8 +394,8 @@ SLOT_INTERFACE_END
static MACHINE_CONFIG_START( ms_megadriv, md_cons_state )
MCFG_FRAGMENT_ADD( md_ntsc )
- MCFG_MACHINE_START( ms_megadriv )
- MCFG_MACHINE_RESET( ms_megadriv )
+ MCFG_MACHINE_START_OVERRIDE( md_cons_state, ms_megadriv )
+ MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv )
MCFG_MD_CARTRIDGE_ADD("mdslot", md_cart, NULL, NULL)
MCFG_SOFTWARE_LIST_ADD("cart_list","megadriv")
@@ -403,8 +404,8 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( ms_megadpal, md_cons_state )
MCFG_FRAGMENT_ADD( md_pal )
- MCFG_MACHINE_START( ms_megadriv )
- MCFG_MACHINE_RESET( ms_megadriv )
+ MCFG_MACHINE_START_OVERRIDE( md_cons_state, ms_megadriv )
+ MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv )
MCFG_MD_CARTRIDGE_ADD("mdslot", md_cart, NULL, NULL)
MCFG_SOFTWARE_LIST_ADD("cart_list","megadriv")
@@ -1014,13 +1015,12 @@ static SLOT_INTERFACE_START(pico_cart)
SLOT_INTERFACE_INTERNAL("rom_sramsafe", MD_ROM_SRAM) // not sure these are needed...
SLOT_INTERFACE_END
-static MACHINE_START(pico)
+MACHINE_START_MEMBER(pico_state,pico)
{
- pico_state *state = machine.driver_data<pico_state>();
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)state->m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)state->m_picocart));
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)state->m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)state->m_picocart));
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)state->m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)state->m_picocart));
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)state->m_picocart));
+ machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)m_picocart));
+ machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)m_picocart));
+ machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_picocart));
+ machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)m_picocart));
}
static MACHINE_CONFIG_START( pico, pico_state )
@@ -1031,8 +1031,8 @@ static MACHINE_CONFIG_START( pico, pico_state )
MCFG_DEVICE_REMOVE("genesis_snd_z80")
- MCFG_MACHINE_START( pico )
- MCFG_MACHINE_RESET( ms_megadriv )
+ MCFG_MACHINE_START_OVERRIDE( pico_state, pico )
+ MCFG_MACHINE_RESET_OVERRIDE( pico_state, ms_megadriv )
MCFG_PICO_CARTRIDGE_ADD("picoslot", pico_cart, NULL, NULL)
MCFG_SOFTWARE_LIST_ADD("cart_list","pico")
@@ -1046,8 +1046,8 @@ static MACHINE_CONFIG_START( picopal, pico_state )
MCFG_DEVICE_REMOVE("genesis_snd_z80")
- MCFG_MACHINE_START( pico )
- MCFG_MACHINE_RESET( ms_megadriv )
+ MCFG_MACHINE_START_OVERRIDE( pico_state, pico )
+ MCFG_MACHINE_RESET_OVERRIDE( pico_state, ms_megadriv )
MCFG_PICO_CARTRIDGE_ADD("picoslot", pico_cart, NULL, NULL)
MCFG_SOFTWARE_LIST_ADD("cart_list","pico")