diff options
author | Miodrag Milanovic <mmicko@gmail.com> | 2012-04-04 15:08:19 +0000 |
---|---|---|
committer | Miodrag Milanovic <mmicko@gmail.com> | 2012-04-04 15:08:19 +0000 |
commit | 7dabd8b524510582d7f6ee96f430395d2f60cb78 (patch) | |
tree | 9641ea5111636c5963ac77e7130ace2773ddd1a3 /src/mame/drivers/midzeus.c | |
parent | 62d9c8ba4fd4be6fc3225e8a3850526db7d78357 (diff) |
MAME going modern part 5 (no whatsnew)
Tomorrow and next days just bug fixing from my side, no big changes
Diffstat (limited to 'src/mame/drivers/midzeus.c')
-rw-r--r-- | src/mame/drivers/midzeus.c | 129 |
1 files changed, 63 insertions, 66 deletions
diff --git a/src/mame/drivers/midzeus.c b/src/mame/drivers/midzeus.c index 59f22c0a9f2..a49b034bcb3 100644 --- a/src/mame/drivers/midzeus.c +++ b/src/mame/drivers/midzeus.c @@ -126,25 +126,23 @@ static INTERRUPT_GEN( display_irq ) * *************************************/ -static WRITE32_HANDLER( cmos_w ) +WRITE32_MEMBER(midzeus_state::cmos_w) { - midzeus_state *state = space->machine().driver_data<midzeus_state>(); if (bitlatch[2] && !cmos_protected) - COMBINE_DATA(&state->m_nvram[offset]); + COMBINE_DATA(&m_nvram[offset]); else - logerror("%06X:timekeeper_w with bitlatch[2] = %d, cmos_protected = %d\n", cpu_get_pc(&space->device()), bitlatch[2], cmos_protected); + logerror("%06X:timekeeper_w with bitlatch[2] = %d, cmos_protected = %d\n", cpu_get_pc(&space.device()), bitlatch[2], cmos_protected); cmos_protected = TRUE; } -static READ32_HANDLER( cmos_r ) +READ32_MEMBER(midzeus_state::cmos_r) { - midzeus_state *state = space->machine().driver_data<midzeus_state>(); - return state->m_nvram[offset] | 0xffffff00; + return m_nvram[offset] | 0xffffff00; } -static WRITE32_HANDLER( cmos_protect_w ) +WRITE32_MEMBER(midzeus_state::cmos_protect_w) { cmos_protected = FALSE; } @@ -174,20 +172,18 @@ static WRITE32_DEVICE_HANDLER( zeus2_timekeeper_w ) } -static READ32_HANDLER( zpram_r ) +READ32_MEMBER(midzeus_state::zpram_r) { - midzeus_state *state = space->machine().driver_data<midzeus_state>(); - return state->m_nvram[offset] | 0xffffff00; + return m_nvram[offset] | 0xffffff00; } -static WRITE32_HANDLER( zpram_w ) +WRITE32_MEMBER(midzeus_state::zpram_w) { - midzeus_state *state = space->machine().driver_data<midzeus_state>(); if (bitlatch[2]) - COMBINE_DATA(&state->m_nvram[offset]); + COMBINE_DATA(&m_nvram[offset]); else - logerror("%06X:zpram_w with bitlatch[2] = %d\n", cpu_get_pc(&space->device()), bitlatch[2]); + logerror("%06X:zpram_w with bitlatch[2] = %d\n", cpu_get_pc(&space.device()), bitlatch[2]); } @@ -198,7 +194,7 @@ static WRITE32_HANDLER( zpram_w ) * *************************************/ -static READ32_HANDLER( bitlatches_r ) +READ32_MEMBER(midzeus_state::bitlatches_r) { switch (offset) { @@ -228,14 +224,14 @@ static READ32_HANDLER( bitlatches_r ) /* unknown purpose */ default: - logerror("%06X:bitlatches_r(%X)\n", cpu_get_pc(&space->device()), offset); + logerror("%06X:bitlatches_r(%X)\n", cpu_get_pc(&space.device()), offset); break; } return ~0; } -static WRITE32_HANDLER( bitlatches_w ) +WRITE32_MEMBER(midzeus_state::bitlatches_w) { UINT32 oldval = bitlatch[offset]; bitlatch[offset] = data; @@ -245,19 +241,19 @@ static WRITE32_HANDLER( bitlatches_w ) /* unknown purpose */ default: if (oldval ^ data) - logerror("%06X:bitlatches_w(%X) = %X\n", cpu_get_pc(&space->device()), offset, data); + logerror("%06X:bitlatches_w(%X) = %X\n", cpu_get_pc(&space.device()), offset, data); break; /* unknown purpose; crusnexo toggles this between 0 and 1 every 20 frames; thegrid writes 1 */ case 0: if (data != 0 && data != 1) - logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", cpu_get_pc(&space->device()), offset, data); + logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", cpu_get_pc(&space.device()), offset, data); break; /* unknown purpose; mk4/invasn write 1 here at initialization; crusnexo/thegrid write 3 */ case 1: if (data != 1 && data != 3) - logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", cpu_get_pc(&space->device()), offset, data); + logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", cpu_get_pc(&space.device()), offset, data); break; /* CMOS/ZPRAM extra enable latch; only low bit is used */ @@ -267,30 +263,30 @@ static WRITE32_HANDLER( bitlatches_w ) /* unknown purpose; invasn writes 2 here at startup */ case 4: if (data != 2) - logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", cpu_get_pc(&space->device()), offset, data); + logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", cpu_get_pc(&space.device()), offset, data); break; /* ROM bank selection on Zeus 2 */ case 5: - memory_set_bank(space->machine(), "bank1", bitlatch[offset] & 3); + memory_set_bank(machine(), "bank1", bitlatch[offset] & 3); break; /* unknown purpose; crusnexo/thegrid write 1 at startup */ case 7: if (data != 1) - logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", cpu_get_pc(&space->device()), offset, data); + logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", cpu_get_pc(&space.device()), offset, data); break; /* unknown purpose; crusnexo writes 4 at startup; thegrid writes 6 */ case 8: if (data != 4 && data != 6) - logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", cpu_get_pc(&space->device()), offset, data); + logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", cpu_get_pc(&space.device()), offset, data); break; /* unknown purpose; thegrid writes 1 at startup */ case 9: if (data != 1) - logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", cpu_get_pc(&space->device()), offset, data); + logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", cpu_get_pc(&space.device()), offset, data); break; } } @@ -303,14 +299,14 @@ static WRITE32_HANDLER( bitlatches_w ) * *************************************/ -static READ32_HANDLER( crusnexo_leds_r ) +READ32_MEMBER(midzeus_state::crusnexo_leds_r) { /* reads appear to just be for synchronization */ return ~0; } -static WRITE32_HANDLER( crusnexo_leds_w ) +WRITE32_MEMBER(midzeus_state::crusnexo_leds_w) { int bit, led; @@ -354,9 +350,9 @@ static WRITE32_HANDLER( crusnexo_leds_w ) // read 8d0003, check bit 1, skip some stuff if 0 // write junk to 9e0000 -static READ32_HANDLER( linkram_r ) +READ32_MEMBER(midzeus_state::linkram_r) { - logerror("%06X:unknown_8a000_r(%02X)\n", cpu_get_pc(&space->device()), offset); + logerror("%06X:unknown_8a000_r(%02X)\n", cpu_get_pc(&space.device()), offset); if (offset == 0) return 0x30313042; else if (offset == 0x3c) @@ -364,9 +360,9 @@ static READ32_HANDLER( linkram_r ) return linkram[offset]; } -static WRITE32_HANDLER( linkram_w ) +WRITE32_MEMBER(midzeus_state::linkram_w) { - logerror("%06X:unknown_8a000_w(%02X) = %08X\n", cpu_get_pc(&space->device()), offset, data); + logerror("%06X:unknown_8a000_w(%02X) = %08X\n", cpu_get_pc(&space.device()), offset, data); COMBINE_DATA(&linkram[offset]); } @@ -378,7 +374,7 @@ static WRITE32_HANDLER( linkram_w ) * *************************************/ -static READ32_HANDLER( tms32031_control_r ) +READ32_MEMBER(midzeus_state::tms32031_control_r) { /* watch for accesses to the timers */ if (offset == 0x24 || offset == 0x34) @@ -391,13 +387,13 @@ static READ32_HANDLER( tms32031_control_r ) /* log anything else except the memory control register */ if (offset != 0x64) - logerror("%06X:tms32031_control_r(%02X)\n", cpu_get_pc(&space->device()), offset); + logerror("%06X:tms32031_control_r(%02X)\n", cpu_get_pc(&space.device()), offset); return tms32031_control[offset]; } -static WRITE32_HANDLER( tms32031_control_w ) +WRITE32_MEMBER(midzeus_state::tms32031_control_w) { COMBINE_DATA(&tms32031_control[offset]); @@ -413,7 +409,7 @@ static WRITE32_HANDLER( tms32031_control_w ) timer[which]->adjust(attotime::never); } else - logerror("%06X:tms32031_control_w(%02X) = %08X\n", cpu_get_pc(&space->device()), offset, data); + logerror("%06X:tms32031_control_w(%02X) = %08X\n", cpu_get_pc(&space.device()), offset, data); } @@ -433,7 +429,7 @@ static CUSTOM_INPUT( custom_49way_r ) } -static WRITE32_HANDLER( keypad_select_w ) +WRITE32_MEMBER(midzeus_state::keypad_select_w) { if (offset == 1) keypad_select = data; @@ -460,16 +456,16 @@ static CUSTOM_INPUT( keypad_r ) * *************************************/ -static READ32_HANDLER( analog_r ) +READ32_MEMBER(midzeus_state::analog_r) { static const char * const tags[] = { "ANALOG0", "ANALOG1", "ANALOG2", "ANALOG3" }; if (offset < 8 || offset > 11) - logerror("%06X:analog_r(%X)\n", cpu_get_pc(&space->device()), offset); - return input_port_read(space->machine(), tags[offset & 3]); + logerror("%06X:analog_r(%X)\n", cpu_get_pc(&space.device()), offset); + return input_port_read(machine(), tags[offset & 3]); } -static WRITE32_HANDLER( analog_w ) +WRITE32_MEMBER(midzeus_state::analog_w) { /* 16 writes to the location before a read */ } @@ -508,7 +504,7 @@ static TIMER_CALLBACK( invasn_gun_callback ) } -static WRITE32_HANDLER( invasn_gun_w ) +WRITE32_MEMBER(midzeus_state::invasn_gun_w) { UINT32 old_control = gun_control; int player; @@ -518,31 +514,31 @@ static WRITE32_HANDLER( invasn_gun_w ) /* bits 0-1 enable IRQs (?) */ /* bits 2-3 reset IRQ states */ gun_irq_state &= ~((gun_control >> 2) & 3); - update_gun_irq(space->machine()); + update_gun_irq(machine()); for (player = 0; player < 2; player++) { UINT8 pmask = 0x04 << player; if (((old_control ^ gun_control) & pmask) != 0 && (gun_control & pmask) == 0) { - const rectangle &visarea = space->machine().primary_screen->visible_area(); + const rectangle &visarea = machine().primary_screen->visible_area(); static const char *const names[2][2] = { { "GUNX1", "GUNY1" }, { "GUNX2", "GUNY2" } }; - gun_x[player] = input_port_read(space->machine(), names[player][0]) * visarea.width() / 255 + visarea.min_x + BEAM_XOFFS; - gun_y[player] = input_port_read(space->machine(), names[player][1]) * visarea.height() / 255 + visarea.min_y; - gun_timer[player]->adjust(space->machine().primary_screen->time_until_pos(MAX(0, gun_y[player] - BEAM_DY), MAX(0, gun_x[player] - BEAM_DX)), player); + gun_x[player] = input_port_read(machine(), names[player][0]) * visarea.width() / 255 + visarea.min_x + BEAM_XOFFS; + gun_y[player] = input_port_read(machine(), names[player][1]) * visarea.height() / 255 + visarea.min_y; + gun_timer[player]->adjust(machine().primary_screen->time_until_pos(MAX(0, gun_y[player] - BEAM_DY), MAX(0, gun_x[player] - BEAM_DX)), player); } } } -static READ32_HANDLER( invasn_gun_r ) +READ32_MEMBER(midzeus_state::invasn_gun_r) { - int beamx = space->machine().primary_screen->hpos(); - int beamy = space->machine().primary_screen->vpos(); + int beamx = machine().primary_screen->hpos(); + int beamy = machine().primary_screen->vpos(); UINT32 result = 0xffff; int player; @@ -568,13 +564,13 @@ static ADDRESS_MAP_START( zeus_map, AS_PROGRAM, 32, midzeus_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x000000, 0x03ffff) AM_RAM AM_BASE_LEGACY(&ram_base) AM_RANGE(0x400000, 0x41ffff) AM_RAM - AM_RANGE(0x808000, 0x80807f) AM_READWRITE_LEGACY(tms32031_control_r, tms32031_control_w) AM_BASE_LEGACY(&tms32031_control) + AM_RANGE(0x808000, 0x80807f) AM_READWRITE(tms32031_control_r, tms32031_control_w) AM_BASE_LEGACY(&tms32031_control) AM_RANGE(0x880000, 0x8803ff) AM_READWRITE_LEGACY(zeus_r, zeus_w) AM_BASE_LEGACY(&zeusbase) - AM_RANGE(0x8d0000, 0x8d0004) AM_READWRITE_LEGACY(bitlatches_r, bitlatches_w) + AM_RANGE(0x8d0000, 0x8d0004) AM_READWRITE(bitlatches_r, bitlatches_w) AM_RANGE(0x990000, 0x99000f) AM_READWRITE_LEGACY(midway_ioasic_r, midway_ioasic_w) AM_RANGE(0x9e0000, 0x9e0000) AM_WRITENOP // watchdog? - AM_RANGE(0x9f0000, 0x9f7fff) AM_READWRITE_LEGACY(cmos_r, cmos_w) AM_SHARE("nvram") - AM_RANGE(0x9f8000, 0x9f8000) AM_WRITE_LEGACY(cmos_protect_w) + AM_RANGE(0x9f0000, 0x9f7fff) AM_READWRITE(cmos_r, cmos_w) AM_SHARE("nvram") + AM_RANGE(0x9f8000, 0x9f8000) AM_WRITE(cmos_protect_w) AM_RANGE(0xa00000, 0xffffff) AM_ROM AM_REGION("user1", 0) ADDRESS_MAP_END @@ -583,16 +579,16 @@ static ADDRESS_MAP_START( zeus2_map, AS_PROGRAM, 32, midzeus_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x000000, 0x03ffff) AM_RAM AM_BASE_LEGACY(&ram_base) AM_RANGE(0x400000, 0x43ffff) AM_RAM - AM_RANGE(0x808000, 0x80807f) AM_READWRITE_LEGACY(tms32031_control_r, tms32031_control_w) AM_BASE_LEGACY(&tms32031_control) + AM_RANGE(0x808000, 0x80807f) AM_READWRITE(tms32031_control_r, tms32031_control_w) AM_BASE_LEGACY(&tms32031_control) AM_RANGE(0x880000, 0x88007f) AM_READWRITE_LEGACY(zeus2_r, zeus2_w) AM_BASE_LEGACY(&zeusbase) - AM_RANGE(0x8a0000, 0x8a003f) AM_READWRITE_LEGACY(linkram_r, linkram_w) AM_BASE_LEGACY(&linkram) - AM_RANGE(0x8d0000, 0x8d000a) AM_READWRITE_LEGACY(bitlatches_r, bitlatches_w) - AM_RANGE(0x900000, 0x91ffff) AM_READWRITE_LEGACY(zpram_r, zpram_w) AM_SHARE("nvram") AM_MIRROR(0x020000) + AM_RANGE(0x8a0000, 0x8a003f) AM_READWRITE(linkram_r, linkram_w) AM_BASE_LEGACY(&linkram) + AM_RANGE(0x8d0000, 0x8d000a) AM_READWRITE(bitlatches_r, bitlatches_w) + AM_RANGE(0x900000, 0x91ffff) AM_READWRITE(zpram_r, zpram_w) AM_SHARE("nvram") AM_MIRROR(0x020000) AM_RANGE(0x990000, 0x99000f) AM_READWRITE_LEGACY(midway_ioasic_r, midway_ioasic_w) - AM_RANGE(0x9c0000, 0x9c000f) AM_READWRITE_LEGACY(analog_r, analog_w) + AM_RANGE(0x9c0000, 0x9c000f) AM_READWRITE(analog_r, analog_w) AM_RANGE(0x9e0000, 0x9e0000) AM_WRITENOP // watchdog? AM_RANGE(0x9f0000, 0x9f7fff) AM_DEVREADWRITE_LEGACY("m48t35", zeus2_timekeeper_r, zeus2_timekeeper_w) - AM_RANGE(0x9f8000, 0x9f8000) AM_WRITE_LEGACY(cmos_protect_w) + AM_RANGE(0x9f8000, 0x9f8000) AM_WRITE(cmos_protect_w) AM_RANGE(0xa00000, 0xbfffff) AM_ROM AM_REGION("user1", 0) AM_RANGE(0xc00000, 0xffffff) AM_ROMBANK("bank1") AM_REGION("user2", 0) ADDRESS_MAP_END @@ -1113,13 +1109,13 @@ static MACHINE_CONFIG_START( midzeus, midzeus_state ) MCFG_FRAGMENT_ADD(dcs2_audio_2104) MACHINE_CONFIG_END -static READ8_HANDLER( PIC16C5X_T0_clk_r ) +READ8_MEMBER(midzeus_state::PIC16C5X_T0_clk_r) { return 0; } static ADDRESS_MAP_START( pic_io_map, AS_IO, 8, midzeus_state ) - AM_RANGE(PIC16C5x_T0, PIC16C5x_T0) AM_READ_LEGACY(PIC16C5X_T0_clk_r) + AM_RANGE(PIC16C5x_T0, PIC16C5x_T0) AM_READ(PIC16C5X_T0_clk_r) ADDRESS_MAP_END @@ -1436,7 +1432,8 @@ static DRIVER_INIT( invasn ) { dcs2_init(machine, 0, 0); midway_ioasic_init(machine, MIDWAY_IOASIC_STANDARD, 468/* or 488 */, 94, NULL); - machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_readwrite_handler(0x9c0000, 0x9c0000, FUNC(invasn_gun_r), FUNC(invasn_gun_w)); + midzeus_state *state = machine.driver_data<midzeus_state>(); + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_readwrite_handler(0x9c0000, 0x9c0000, read32_delegate(FUNC(midzeus_state::invasn_gun_r),state), write32_delegate(FUNC(midzeus_state::invasn_gun_w),state)); } @@ -1445,9 +1442,9 @@ static DRIVER_INIT( crusnexo ) dcs2_init(machine, 0, 0); midway_ioasic_init(machine, MIDWAY_IOASIC_STANDARD, 472/* or 476,477,478,110 */, 99, NULL); memory_configure_bank(machine, "bank1", 0, 3, machine.region("user2")->base(), 0x400000*4); - - machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_readwrite_handler(0x9b0004, 0x9b0007, FUNC(crusnexo_leds_r), FUNC(crusnexo_leds_w)); - machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_write_handler (0x8d0009, 0x8d000a, FUNC(keypad_select_w)); + midzeus_state *state = machine.driver_data<midzeus_state>(); + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_readwrite_handler(0x9b0004, 0x9b0007, read32_delegate(FUNC(midzeus_state::crusnexo_leds_r),state), write32_delegate(FUNC(midzeus_state::crusnexo_leds_w),state)); + machine.device("maincpu")->memory().space(AS_PROGRAM)->install_write_handler (0x8d0009, 0x8d000a, write32_delegate(FUNC(midzeus_state::keypad_select_w),state)); } |