summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2011-05-21 18:48:23 +0000
committer Angelo Salese <angelosa@users.noreply.github.com>2011-05-21 18:48:23 +0000
commit71646f871dcc45a6a0cb98dfa392b2aca12846ae (patch)
tree2d0772095b0b47c60c7f9f36e8c33ae37682fdf0 /src
parentd513485771a36791640b5e8caa2b93b46a297c16 (diff)
Boosted m/sinit comms in Super Major League / Final Arch, fixing the dead locks in it [Angelo Salese]
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/saturn.c38
-rw-r--r--src/mame/drivers/stvinit.c118
-rw-r--r--src/mame/includes/stv.h4
3 files changed, 112 insertions, 48 deletions
diff --git a/src/mame/drivers/saturn.c b/src/mame/drivers/saturn.c
index c4dc413e5ba..6d253c6726b 100644
--- a/src/mame/drivers/saturn.c
+++ b/src/mame/drivers/saturn.c
@@ -213,8 +213,6 @@ static void scu_dma_direct(address_space *space, UINT8 dma_ch); /*DMA level 0 di
static void scu_dma_indirect(address_space *space, UINT8 dma_ch); /*DMA level 0 indirect transfer function*/
-int minit_boost,sinit_boost;
-attotime minit_boost_timeslice, sinit_boost_timeslice;
//static int scanline;
@@ -1734,9 +1732,9 @@ static void scu_dma_indirect(address_space *space,UINT8 dma_ch)
}
#endif
- printf("DMA lv %d indirect mode transfer START\n"
+ if(LOG_SCU) printf("DMA lv %d indirect mode transfer START\n"
"Start %08x End %08x Size %04x\n",dma_ch,state->m_scu_src[dma_ch],state->m_scu_dst[dma_ch],state->m_scu_size[dma_ch]);
- printf("Start Add %04x Destination Add %04x\n",state->m_scu_src_add[dma_ch],state->m_scu_dst_add[dma_ch]);
+ if(LOG_SCU) printf("Start Add %04x Destination Add %04x\n",state->m_scu_src_add[dma_ch],state->m_scu_dst_add[dma_ch]);
//guess,but I believe it's right.
state->m_scu_src[dma_ch] &=0x07ffffff;
@@ -1803,17 +1801,21 @@ static READ16_HANDLER( saturn_soundram_r )
/* communication,SLAVE CPU acquires data from the MASTER CPU and triggers an irq. */
static WRITE32_HANDLER( minit_w )
{
+ saturn_state *state = space->machine().driver_data<saturn_state>();
+
logerror("cpu %s (PC=%08X) MINIT write = %08x\n", space->device().tag(), cpu_get_pc(&space->device()),data);
- space->machine().scheduler().boost_interleave(minit_boost_timeslice, attotime::from_usec(minit_boost));
+ space->machine().scheduler().boost_interleave(state->m_minit_boost_timeslice, attotime::from_usec(state->m_minit_boost));
space->machine().scheduler().trigger(1000);
- sh2_set_frt_input(space->machine().device("slave"), PULSE_LINE);
+ sh2_set_frt_input(state->m_slave, PULSE_LINE);
}
static WRITE32_HANDLER( sinit_w )
{
+ saturn_state *state = space->machine().driver_data<saturn_state>();
+
logerror("cpu %s (PC=%08X) SINIT write = %08x\n", space->device().tag(), cpu_get_pc(&space->device()),data);
- space->machine().scheduler().boost_interleave(sinit_boost_timeslice, attotime::from_usec(sinit_boost));
- sh2_set_frt_input(space->machine().device("maincpu"), PULSE_LINE);
+ space->machine().scheduler().boost_interleave(state->m_sinit_boost_timeslice, attotime::from_usec(state->m_sinit_boost));
+ sh2_set_frt_input(state->m_maincpu, PULSE_LINE);
}
static READ32_HANDLER(saturn_backupram_r)
@@ -2330,10 +2332,10 @@ DRIVER_INIT ( stv )
machine.base_datetime(systime);
/* amount of time to boost interleave for on MINIT / SINIT, needed for communication to work */
- minit_boost = 400;
- sinit_boost = 400;
- minit_boost_timeslice = attotime::zero;
- sinit_boost_timeslice = attotime::zero;
+ state->m_minit_boost = 400;
+ state->m_sinit_boost = 400;
+ state->m_minit_boost_timeslice = attotime::zero;
+ state->m_sinit_boost_timeslice = attotime::zero;
state->m_smpc_ram = auto_alloc_array(machine, UINT8, 0x80);
state->m_scu_regs = auto_alloc_array(machine, UINT32, 0x100/4);
@@ -3116,10 +3118,10 @@ static void saturn_init_driver(running_machine &machine, int rgn)
machine.current_datetime(systime);
/* amount of time to boost interleave for on MINIT / SINIT, needed for communication to work */
- minit_boost = 400;
- sinit_boost = 400;
- minit_boost_timeslice = attotime::zero;
- sinit_boost_timeslice = attotime::zero;
+ state->m_minit_boost = 400;
+ state->m_sinit_boost = 400;
+ state->m_minit_boost_timeslice = attotime::zero;
+ state->m_sinit_boost_timeslice = attotime::zero;
state->m_smpc_ram = auto_alloc_array(machine, UINT8, 0x80);
state->m_scu_regs = auto_alloc_array(machine, UINT32, 0x100/4);
@@ -4402,6 +4404,8 @@ GAME( 1998, sss, stvbios, stv, stv, sss, ROT0, "Capcom / Cave
GAME( 1995, sandor, stvbios, stv, stv, sandor, ROT0, "Sega", "Puzzle & Action: Sando-R (J 951114 V1.000)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
GAME( 1997, thunt, sandor, stv, stv, thunt, ROT0, "Sega", "Puzzle & Action: Treasure Hunt (JUET 970901 V2.00E)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
GAME( 1997, thuntk, sandor, stv, stv, sandor, ROT0, "Sega / Deniam", "Puzzle & Action: BoMulEul Chajara (JUET 970125 V2.00K)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
+GAME( 1995, smleague, stvbios, stv, stv, smleague, ROT0, "Sega", "Super Major League (U 960108 V1.000)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
+GAME( 1995, finlarch, smleague,stv, stv, finlarch, ROT0, "Sega", "Final Arch (J 950714 V1.001)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
GAME( 1996, sokyugrt, stvbios, stv, stv, sokyugrt, ROT0, "Raizing / Eighting", "Soukyugurentai / Terra Diver (JUET 960821 V1.000)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
GAME( 1995, suikoenb, stvbios, stv, stv, suikoenb, ROT0, "Data East", "Suikoenbu / Outlaws of the Lost Dynasty (JUETL 950314 V2.001)", GAME_IMPERFECT_SOUND )
GAME( 1996, vfkids, stvbios, stv, stv, stv, ROT0, "Sega", "Virtua Fighter Kids (JUET 960319 V0.000)", GAME_IMPERFECT_SOUND )
@@ -4411,8 +4415,6 @@ GAME( 1997, znpwfv, stvbios, stv, stv, znpwfv, ROT0, "Sega",
/* Almost */
GAME( 1997, vmahjong, stvbios, stv, stvmp, stv, ROT0, "Micronet", "Virtual Mahjong (J 961214 V1.000)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
GAME( 1998, twcup98, stvbios, stv, stv, twcup98, ROT0, "Tecmo", "Tecmo World Cup '98 (JUET 980410 V1.000)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS|GAME_NOT_WORKING ) // player movement
-GAME( 1995, smleague, stvbios, stv, stv, smleague, ROT0, "Sega", "Super Major League (U 960108 V1.000)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1995, finlarch, smleague,stv, stv, finlarch, ROT0, "Sega", "Final Arch (J 950714 V1.001)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
GAME( 1998, elandore, stvbios, stv, stv, elandore, ROT0, "Sai-Mate", "Touryuu Densetsu Elan-Doree / Elan Doree - Legend of Dragoon (JUET 980922 V1.006)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
/* Unemulated printer device */
diff --git a/src/mame/drivers/stvinit.c b/src/mame/drivers/stvinit.c
index 0af38136c61..c163c64b8e4 100644
--- a/src/mame/drivers/stvinit.c
+++ b/src/mame/drivers/stvinit.c
@@ -105,6 +105,8 @@ DRIVER_INIT(prikura)
(loops for 263473 instructions)
*/
+ saturn_state *state = machine.driver_data<saturn_state>();
+
// master
sh2drc_add_pcflush(machine.device("maincpu"), 0x6018640);
// slave
@@ -112,8 +114,8 @@ DRIVER_INIT(prikura)
DRIVER_INIT_CALL(stv);
- minit_boost = sinit_boost = 0;
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(50);
+ state->m_minit_boost = state->m_sinit_boost = 0;
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(50);
}
DRIVER_INIT(hanagumi)
@@ -161,14 +163,16 @@ CPU0: Aids Screen
DRIVER_INIT(puyosun)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x6021cf0);
sh2drc_add_pcflush(machine.device("slave"), 0x60236fe);
DRIVER_INIT_CALL(stv);
- minit_boost = sinit_boost = 0;
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(50);
+ state->m_minit_boost = state->m_sinit_boost = 0;
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(50);
}
/* mausuke
@@ -183,32 +187,38 @@ CPU0 Data East Logo:
DRIVER_INIT(mausuke)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x60461A0);
DRIVER_INIT_CALL(stv);
- minit_boost = sinit_boost = 0;
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(50);
+ state->m_minit_boost = state->m_sinit_boost = 0;
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(50);
}
DRIVER_INIT(cottonbm)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
// sh2drc_add_pcflush(machine.device("maincpu"), 0x6030ee2);
// sh2drc_add_pcflush(machine.device("slave"), 0x6032b52);
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(10);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(10);
}
DRIVER_INIT(cotton2)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x6031c7a);
sh2drc_add_pcflush(machine.device("slave"), 0x60338ea);
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(50);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(50);
}
DRIVER_INIT(dnmtdeka)
@@ -250,6 +260,8 @@ DRIVER_INIT(fhboxers)
DRIVER_INIT( groovef )
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x6005e7c);
sh2drc_add_pcflush(machine.device("maincpu"), 0x6005e86);
sh2drc_add_pcflush(machine.device("maincpu"), 0x60a4970);
@@ -258,19 +270,21 @@ DRIVER_INIT( groovef )
DRIVER_INIT_CALL(stv);
- minit_boost = sinit_boost = 0;
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(50);
+ state->m_minit_boost = state->m_sinit_boost = 0;
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(50);
}
DRIVER_INIT( danchih )
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x6028b28);
sh2drc_add_pcflush(machine.device("maincpu"), 0x6028c8e);
sh2drc_add_pcflush(machine.device("slave"), 0x602ae26);
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(5);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(5);
}
/*
@@ -319,87 +333,105 @@ DRIVER_INIT( astrass )
DRIVER_INIT(thunt)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x602A024);
sh2drc_add_pcflush(machine.device("maincpu"), 0x6013EEA);
sh2drc_add_pcflush(machine.device("slave"), 0x602AAF8);
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(1);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(1);
}
DRIVER_INIT(sandor)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x602a0f8);
sh2drc_add_pcflush(machine.device("maincpu"), 0x6013fbe);
sh2drc_add_pcflush(machine.device("slave"), 0x602abcc);
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(1);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(1);
}
DRIVER_INIT(grdforce)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x6041e32);
sh2drc_add_pcflush(machine.device("slave"), 0x6043aa2);
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(50);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(50);
}
DRIVER_INIT(batmanfr)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x60121c0);
sh2drc_add_pcflush(machine.device("slave"), 0x60125bc);
DRIVER_INIT_CALL(stv);
- minit_boost = sinit_boost = 0;
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(50);
+ state->m_minit_boost = state->m_sinit_boost = 0;
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(50);
}
DRIVER_INIT(colmns97)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("slave"), 0x60298a2);
DRIVER_INIT_CALL(stv);
- minit_boost = sinit_boost = 0;
+ state->m_minit_boost = state->m_sinit_boost = 0;
}
DRIVER_INIT(winterht)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x6098aea);
sh2drc_add_pcflush(machine.device("slave"), 0x609ae4e);
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(2);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(2);
}
DRIVER_INIT(seabass)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x602cbfa);
sh2drc_add_pcflush(machine.device("slave"), 0x60321ee);
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(5);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(5);
}
DRIVER_INIT(vfremix)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x602c30c);
sh2drc_add_pcflush(machine.device("slave"), 0x604c332);
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(20);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(20);
}
DRIVER_INIT(sss)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x6026398);
sh2drc_add_pcflush(machine.device("slave"), 0x6028cd6);
@@ -407,26 +439,30 @@ DRIVER_INIT(sss)
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(50);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(50);
}
DRIVER_INIT(othellos)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x602bcbe);
sh2drc_add_pcflush(machine.device("slave"), 0x602d92e);
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(50);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(50);
}
DRIVER_INIT(sasissu)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("slave"), 0x60710be);
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(2);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(2);
}
DRIVER_INIT(gaxeduel)
@@ -446,56 +482,74 @@ DRIVER_INIT(suikoenb)
DRIVER_INIT(sokyugrt)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(50);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(50);
}
DRIVER_INIT(znpwfv)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x6012ec2);
sh2drc_add_pcflush(machine.device("slave"), 0x60175a6);
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_nsec(500);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_nsec(500);
}
DRIVER_INIT(twcup98)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x605edde);
sh2drc_add_pcflush(machine.device("slave"), 0x6062bca);
DRIVER_INIT_CALL(stv);
install_twcup98_protection(machine);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(5);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(5);
}
DRIVER_INIT(smleague)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x6063bf4);
sh2drc_add_pcflush(machine.device("slave"), 0x6062bca);
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(50);
+ /* tight sync to avoid dead locks */
+ state->m_minit_boost = state->m_sinit_boost = 0;
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(5000);
}
DRIVER_INIT(finlarch)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x6064d60);
DRIVER_INIT_CALL(stv);
+
+ /* tight sync to avoid dead locks */
+ state->m_minit_boost = state->m_sinit_boost = 0;
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(5000);
}
DRIVER_INIT(maruchan)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x601ba46);
sh2drc_add_pcflush(machine.device("slave"), 0x601ba46);
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(50);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(50);
}
DRIVER_INIT(pblbeach)
@@ -514,17 +568,21 @@ DRIVER_INIT(shanhigw)
DRIVER_INIT(elandore)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x604eac0);
sh2drc_add_pcflush(machine.device("slave"), 0x605340a);
install_elandore_protection(machine);
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(0);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(0);
}
DRIVER_INIT(rsgun)
{
+ saturn_state *state = machine.driver_data<saturn_state>();
+
sh2drc_add_pcflush(machine.device("maincpu"), 0x6034d04);
sh2drc_add_pcflush(machine.device("slave"), 0x6036152);
@@ -532,7 +590,7 @@ DRIVER_INIT(rsgun)
DRIVER_INIT_CALL(stv);
- minit_boost_timeslice = sinit_boost_timeslice = attotime::from_usec(20);
+ state->m_minit_boost_timeslice = state->m_sinit_boost_timeslice = attotime::from_usec(20);
}
DRIVER_INIT(ffreveng)
diff --git a/src/mame/includes/stv.h b/src/mame/includes/stv.h
index e1c545e69f4..9e36e2b8582 100644
--- a/src/mame/includes/stv.h
+++ b/src/mame/includes/stv.h
@@ -23,6 +23,10 @@ public:
UINT32 m_scu_index[3];
UINT8 m_stv_multi_bank;
UINT8 m_prev_bankswitch;
+ int m_minit_boost;
+ int m_sinit_boost;
+ attotime m_minit_boost_timeslice;
+ attotime m_sinit_boost_timeslice;
legacy_cpu_device* m_maincpu;
legacy_cpu_device* m_slave;