diff options
author | Angelo Salese <angelosa@users.noreply.github.com> | 2012-02-03 14:41:46 +0000 |
---|---|---|
committer | Angelo Salese <angelosa@users.noreply.github.com> | 2012-02-03 14:41:46 +0000 |
commit | f50762b727a0004974e659374772213d0d0c1670 (patch) | |
tree | 8a7f1f7a81c5b217950b3c87c08ca7d1862bb10d /src/mame/drivers/calchase.c | |
parent | 340eb43dd404eb4cb2b75f378dddff1597f09518 (diff) |
Added idle skip
Diffstat (limited to 'src/mame/drivers/calchase.c')
-rw-r--r-- | src/mame/drivers/calchase.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/mame/drivers/calchase.c b/src/mame/drivers/calchase.c index 264af589996..64dbb0c1e16 100644 --- a/src/mame/drivers/calchase.c +++ b/src/mame/drivers/calchase.c @@ -131,7 +131,9 @@ class calchase_state : public driver_device { public: calchase_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu") + { } UINT32 *m_bios_ram; int m_dma_channel; @@ -145,6 +147,9 @@ public: device_t *m_pic8259_2; device_t *m_dma8237_1; device_t *m_dma8237_2; + + UINT32 m_idle_skip_ram; + required_device<cpu_device> m_maincpu; }; @@ -810,6 +815,24 @@ static MACHINE_CONFIG_START( calchase, calchase_state ) MACHINE_CONFIG_END + +static READ32_HANDLER( calchase_idle_skip_r ) +{ + calchase_state *state = space->machine().driver_data<calchase_state>(); + + if(cpu_get_pc(&space->device())==0x1406f48) + device_spin_until_interrupt(state->m_maincpu); + + return state->m_idle_skip_ram; +} + +static WRITE32_HANDLER( calchase_idle_skip_w ) +{ + calchase_state *state = space->machine().driver_data<calchase_state>(); + + COMBINE_DATA(&state->m_idle_skip_ram); +} + static DRIVER_INIT( calchase ) { calchase_state *state = machine.driver_data<calchase_state>(); @@ -822,6 +845,8 @@ static DRIVER_INIT( calchase ) intel82439tx_init(machine); kbdc8042_init(machine, &at8042); + + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_readwrite_handler(0x3f0b160, 0x3f0b163, FUNC(calchase_idle_skip_r), FUNC(calchase_idle_skip_w)); } ROM_START( calchase ) |