diff options
Diffstat (limited to 'src/mame/drivers/eolithsp.c')
-rw-r--r-- | src/mame/drivers/eolithsp.c | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/src/mame/drivers/eolithsp.c b/src/mame/drivers/eolithsp.c index 6a2be221534..f570d36395b 100644 --- a/src/mame/drivers/eolithsp.c +++ b/src/mame/drivers/eolithsp.c @@ -9,28 +9,22 @@ */ #include "emu.h" -#include "includes/eolithsp.h" #include "includes/eolith.h" -static int eolith_speedup_address; -static int eolith_speedup_address2; -static int eolith_speedup_resume_scanline; -static int eolith_vblank = 0; -static int eolith_scanline = 0; -void eolith_speedup_read(address_space &space) +void eolith_state::speedup_read() { /* for debug */ - //if ((space.device().safe_pc()!=eolith_speedup_address) && (eolith_vblank!=1) ) - // printf("%s:eolith speedup_read data %02x\n",space.machine().describe_context(), eolith_vblank); + //if ((space.device().safe_pc()!=m_speedup_address) && (m_speedup_vblank!=1) ) + // printf("%s:eolith speedup_read data %02x\n",space.machine().describe_context(), m_speedup_vblank); - if (eolith_vblank==0 && eolith_scanline < eolith_speedup_resume_scanline) + if (m_speedup_vblank==0 && m_speedup_scanline < m_speedup_resume_scanline) { - int pc = space.device().safe_pc(); + int pc = m_maincpu->pc(); - if ((pc==eolith_speedup_address) || (pc==eolith_speedup_address2)) + if ((pc==m_speedup_address) || (pc==m_speedup_address2)) { - space.device().execute().spin_until_trigger(1000); + m_maincpu->spin_until_trigger(1000); } } } @@ -71,22 +65,28 @@ static const struct }; -void init_eolith_speedup(running_machine &machine) +void eolith_state::init_speedup() { int n_game = 0; - eolith_speedup_address = 0; - eolith_speedup_resume_scanline = 0; + m_speedup_address = 0; + m_speedup_address2 = 0; + m_speedup_resume_scanline = 0; + m_speedup_vblank = 0; + m_speedup_scanline = 0; while( eolith_speedup_table[ n_game ].s_name != NULL ) { - if( strcmp( machine.system().name, eolith_speedup_table[ n_game ].s_name ) == 0 ) + if( strcmp( machine().system().name, eolith_speedup_table[ n_game ].s_name ) == 0 ) { - eolith_speedup_address = eolith_speedup_table[ n_game ].speedup_address; - eolith_speedup_address2 = eolith_speedup_table[ n_game ].speedup_address2; - eolith_speedup_resume_scanline = eolith_speedup_table[ n_game ].speedup_resume_scanline; + m_speedup_address = eolith_speedup_table[ n_game ].speedup_address; + m_speedup_address2 = eolith_speedup_table[ n_game ].speedup_address2; + m_speedup_resume_scanline = eolith_speedup_table[ n_game ].speedup_resume_scanline; } n_game++; } + + save_item(NAME(m_speedup_vblank)); + save_item(NAME(m_speedup_scanline)); } /* todo, use timers instead! */ @@ -94,23 +94,23 @@ TIMER_DEVICE_CALLBACK_MEMBER(eolith_state::eolith_speedup) { if (param==0) { - eolith_vblank = 0; + m_speedup_vblank = 0; } - if (param==eolith_speedup_resume_scanline) + if (param==m_speedup_resume_scanline) { machine().scheduler().trigger(1000); } if (param==240) { - eolith_vblank = 1; + m_speedup_vblank = 1; } } CUSTOM_INPUT_MEMBER(eolith_state::eolith_speedup_getvblank) { -// printf("%s:eolith speedup_read data %02x\n",machine().describe_context(), eolith_vblank); +// printf("%s:eolith speedup_read data %02x\n",machine().describe_context(), m_speedup_vblank); return (m_screen->vpos() >= 240); @@ -122,7 +122,7 @@ CUSTOM_INPUT_MEMBER(eolith_state::stealsee_speedup_getvblank) int pc = m_maincpu->pc(); if (pc==0x400081ec) - if(!eolith_vblank) + if(!m_speedup_vblank) m_maincpu->eat_cycles(500); return (m_screen->vpos() >= 240); |