diff options
Diffstat (limited to 'src/mame/machine/williams.c')
-rw-r--r-- | src/mame/machine/williams.c | 60 |
1 files changed, 32 insertions, 28 deletions
diff --git a/src/mame/machine/williams.c b/src/mame/machine/williams.c index 7b071608f9c..c5e65c7d54c 100644 --- a/src/mame/machine/williams.c +++ b/src/mame/machine/williams.c @@ -250,7 +250,7 @@ const pia6821_interface joust2_pia_1_intf = TIMER_DEVICE_CALLBACK( williams_va11_callback ) { - running_device *pia_1 = devtag_get_device(timer->machine, "pia_1"); + pia6821_device *pia_1 = timer.machine->device<pia6821_device>("pia_1"); int scanline = param; /* the IRQ signal comes into CB1, and is set to VA11 */ @@ -259,13 +259,13 @@ TIMER_DEVICE_CALLBACK( williams_va11_callback ) /* set a timer for the next update */ scanline += 0x20; if (scanline >= 256) scanline = 0; - timer_device_adjust_oneshot(timer, video_screen_get_time_until_pos(timer->machine->primary_screen, scanline, 0), scanline); + timer.adjust(timer.machine->primary_screen->time_until_pos(scanline), scanline); } static TIMER_CALLBACK( williams_count240_off_callback ) { - running_device *pia_1 = devtag_get_device(machine, "pia_1"); + pia6821_device *pia_1 = machine->device<pia6821_device>("pia_1"); /* the COUNT240 signal comes into CA1, and is set to the logical AND of VA10-VA13 */ pia6821_ca1_w(pia_1, 0, 0); @@ -274,22 +274,22 @@ static TIMER_CALLBACK( williams_count240_off_callback ) TIMER_DEVICE_CALLBACK( williams_count240_callback ) { - running_device *pia_1 = devtag_get_device(timer->machine, "pia_1"); + pia6821_device *pia_1 = timer.machine->device<pia6821_device>("pia_1"); /* the COUNT240 signal comes into CA1, and is set to the logical AND of VA10-VA13 */ pia6821_ca1_w(pia_1, 0, 1); /* set a timer to turn it off once the scanline counter resets */ - timer_set(timer->machine, video_screen_get_time_until_pos(timer->machine->primary_screen, 0, 0), NULL, 0, williams_count240_off_callback); + timer_set(timer.machine, timer.machine->primary_screen->time_until_pos(0), NULL, 0, williams_count240_off_callback); /* set a timer for next frame */ - timer_device_adjust_oneshot(timer, video_screen_get_time_until_pos(timer->machine->primary_screen, 240, 0), 0); + timer.adjust(timer.machine->primary_screen->time_until_pos(240)); } static void williams_main_irq(running_device *device, int state) { - running_device *pia_1 = devtag_get_device(device->machine, "pia_1"); + pia6821_device *pia_1 = device->machine->device<pia6821_device>("pia_1"); int combined_state = pia6821_get_irq_a(pia_1) | pia6821_get_irq_b(pia_1); /* IRQ to the main CPU */ @@ -306,7 +306,7 @@ static void williams_main_firq(running_device *device, int state) static void williams_snd_irq(running_device *device, int state) { - running_device *pia_2 = devtag_get_device(device->machine, "pia_2"); + pia6821_device *pia_2 = device->machine->device<pia6821_device>("pia_2"); int combined_state = pia6821_get_irq_a(pia_2) | pia6821_get_irq_b(pia_2); /* IRQ to the sound CPU */ @@ -323,8 +323,8 @@ static void williams_snd_irq(running_device *device, int state) static void mysticm_main_irq(running_device *device, int state) { - running_device *pia_0 = devtag_get_device(device->machine, "pia_0"); - running_device *pia_1 = devtag_get_device(device->machine, "pia_1"); + pia6821_device *pia_0 = device->machine->device<pia6821_device>("pia_0"); + pia6821_device *pia_1 = device->machine->device<pia6821_device>("pia_1"); int combined_state = pia6821_get_irq_b(pia_0) | pia6821_get_irq_a(pia_1) | pia6821_get_irq_b(pia_1); /* IRQ to the main CPU */ @@ -334,8 +334,8 @@ static void mysticm_main_irq(running_device *device, int state) static void tshoot_main_irq(running_device *device, int state) { - running_device *pia_0 = devtag_get_device(device->machine, "pia_0"); - running_device *pia_1 = devtag_get_device(device->machine, "pia_1"); + pia6821_device *pia_0 = device->machine->device<pia6821_device>("pia_0"); + pia6821_device *pia_1 = device->machine->device<pia6821_device>("pia_1"); int combined_state = pia6821_get_irq_a(pia_0) | pia6821_get_irq_b(pia_0) | pia6821_get_irq_a(pia_1) | pia6821_get_irq_b(pia_1); /* IRQ to the main CPU */ @@ -363,10 +363,12 @@ static MACHINE_START( williams_common ) static MACHINE_RESET( williams_common ) { /* set a timer to go off every 16 scanlines, to toggle the VA11 line and update the screen */ - timer_device_adjust_oneshot(devtag_get_device(machine, "scan_timer"), video_screen_get_time_until_pos(machine->primary_screen, 0, 0), 0); + timer_device *scan_timer = machine->device<timer_device>("scan_timer"); + scan_timer->adjust(machine->primary_screen->time_until_pos(0)); /* also set a timer to go off on scanline 240 */ - timer_device_adjust_oneshot(devtag_get_device(machine, "240_timer"), video_screen_get_time_until_pos(machine->primary_screen, 240, 0), 0); + timer_device *l240_timer = machine->device<timer_device>("240_timer"); + l240_timer->adjust(machine->primary_screen->time_until_pos(240)); } @@ -391,8 +393,8 @@ MACHINE_RESET( williams ) TIMER_DEVICE_CALLBACK( williams2_va11_callback ) { - running_device *pia_0 = devtag_get_device(timer->machine, "pia_0"); - running_device *pia_1 = devtag_get_device(timer->machine, "pia_1"); + pia6821_device *pia_0 = timer.machine->device<pia6821_device>("pia_0"); + pia6821_device *pia_1 = timer.machine->device<pia6821_device>("pia_1"); int scanline = param; /* the IRQ signal comes into CB1, and is set to VA11 */ @@ -402,13 +404,13 @@ TIMER_DEVICE_CALLBACK( williams2_va11_callback ) /* set a timer for the next update */ scanline += 0x20; if (scanline >= 256) scanline = 0; - timer_device_adjust_oneshot(timer, video_screen_get_time_until_pos(timer->machine->primary_screen, scanline, 0), scanline); + timer.adjust(timer.machine->primary_screen->time_until_pos(scanline), scanline); } static TIMER_CALLBACK( williams2_endscreen_off_callback ) { - running_device *pia_0 = devtag_get_device(machine, "pia_0"); + pia6821_device *pia_0 = machine->device<pia6821_device>("pia_0"); /* the /ENDSCREEN signal comes into CA1 */ pia6821_ca1_w(pia_0, 0, 1); @@ -417,16 +419,16 @@ static TIMER_CALLBACK( williams2_endscreen_off_callback ) TIMER_DEVICE_CALLBACK( williams2_endscreen_callback ) { - running_device *pia_0 = devtag_get_device(timer->machine, "pia_0"); + pia6821_device *pia_0 = timer.machine->device<pia6821_device>("pia_0"); /* the /ENDSCREEN signal comes into CA1 */ pia6821_ca1_w(pia_0, 0, 0); /* set a timer to turn it off once the scanline counter resets */ - timer_set(timer->machine, video_screen_get_time_until_pos(timer->machine->primary_screen, 8, 0), NULL, 0, williams2_endscreen_off_callback); + timer_set(timer.machine, timer.machine->primary_screen->time_until_pos(8), NULL, 0, williams2_endscreen_off_callback); /* set a timer for next frame */ - timer_device_adjust_oneshot(timer, video_screen_get_time_until_pos(timer->machine->primary_screen, 254, 0), 0); + timer.adjust(timer.machine->primary_screen->time_until_pos(254)); } @@ -464,10 +466,12 @@ MACHINE_RESET( williams2 ) williams2_bank_select_w(space, 0, 0); /* set a timer to go off every 16 scanlines, to toggle the VA11 line and update the screen */ - timer_device_adjust_oneshot(devtag_get_device(machine, "scan_timer"), video_screen_get_time_until_pos(machine->primary_screen, 0, 0), 0); + timer_device *scan_timer = machine->device<timer_device>("scan_timer"); + scan_timer->adjust(machine->primary_screen->time_until_pos(0)); /* also set a timer to go off on scanline 254 */ - timer_device_adjust_oneshot(devtag_get_device(machine, "254_timer"), video_screen_get_time_until_pos(machine->primary_screen, 254, 0), 0); + timer_device *l254_timer = machine->device<timer_device>("254_timer"); + l254_timer->adjust(machine->primary_screen->time_until_pos(254)); } @@ -533,7 +537,7 @@ WRITE8_HANDLER( williams2_bank_select_w ) static TIMER_CALLBACK( williams_deferred_snd_cmd_w ) { - running_device *pia_2 = devtag_get_device(machine, "pia_2"); + pia6821_device *pia_2 = machine->device<pia6821_device>("pia_2"); pia6821_portb_w(pia_2, 0, param); pia6821_cb1_w(pia_2, 0, (param == 0xff) ? 0 : 1); @@ -553,7 +557,7 @@ WRITE8_DEVICE_HANDLER( playball_snd_cmd_w ) static TIMER_CALLBACK( williams2_deferred_snd_cmd_w ) { - running_device *pia_2 = devtag_get_device(machine, "pia_2"); + pia6821_device *pia_2 = machine->device<pia6821_device>("pia_2"); pia6821_porta_w(pia_2, 0, param); } @@ -949,7 +953,7 @@ MACHINE_START( joust2 ) MACHINE_RESET( joust2 ) { - running_device *pia_3 = devtag_get_device(machine, "cvsdpia"); + pia6821_device *pia_3 = machine->device<pia6821_device>("cvsdpia"); /* standard init */ MACHINE_RESET_CALL(williams2); @@ -959,14 +963,14 @@ MACHINE_RESET( joust2 ) static TIMER_CALLBACK( joust2_deferred_snd_cmd_w ) { - running_device *pia_2 = devtag_get_device(machine, "pia_2"); + pia6821_device *pia_2 = machine->device<pia6821_device>("pia_2"); pia6821_porta_w(pia_2, 0, param & 0xff); } static WRITE8_DEVICE_HANDLER( joust2_pia_3_cb1_w ) { - running_device *pia_3 = devtag_get_device(device->machine, "cvsdpia"); + pia6821_device *pia_3 = device->machine->device<pia6821_device>("cvsdpia"); joust2_current_sound_data = (joust2_current_sound_data & ~0x100) | ((data << 8) & 0x100); pia6821_cb1_w(pia_3, offset, data); |