From 0af062c1459e5df94d7ea5b02c61b2c9207cc9c9 Mon Sep 17 00:00:00 2001 From: hap Date: Thu, 30 May 2019 15:28:46 +0200 Subject: [PATCH] carpolo: put timer tick in vblank again, fixes collision detection (nw) --- src/mame/includes/carpolo.h | 8 -------- src/mame/machine/carpolo.cpp | 10 ---------- src/mame/video/carpolo.cpp | 14 ++++++++------ 3 files changed, 8 insertions(+), 24 deletions(-) diff --git a/src/mame/includes/carpolo.h b/src/mame/includes/carpolo.h index fabf1bac653..182a1a12928 100644 --- a/src/mame/includes/carpolo.h +++ b/src/mame/includes/carpolo.h @@ -56,12 +56,6 @@ protected: virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - - enum - { - TID_TIMER, - }; private: uint8_t m_ball_screen_collision_cause; @@ -99,8 +93,6 @@ private: required_ioport_array<3> m_in; required_ioport m_pedals; - emu_timer *m_timer; - std::unique_ptr m_sprite_sprite_collision_bitmap1; std::unique_ptr m_sprite_sprite_collision_bitmap2; std::unique_ptr m_sprite_goal_collision_bitmap1; diff --git a/src/mame/machine/carpolo.cpp b/src/mame/machine/carpolo.cpp index 910404e9ba0..e2159091cb6 100644 --- a/src/mame/machine/carpolo.cpp +++ b/src/mame/machine/carpolo.cpp @@ -195,12 +195,6 @@ READ8_MEMBER(carpolo_state::interrupt_cause_r) return (m_ttl74148_3s->output_r() << 1) | m_priority_0_extension; } -void carpolo_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - if (id == TID_TIMER) - timer_tick(); -} - void carpolo_state::timer_tick() { /* cause the timer interrupt */ @@ -424,8 +418,6 @@ READ8_MEMBER(carpolo_state::pia_1_port_b_r) void carpolo_state::machine_start() { - m_timer = timer_alloc(TID_TIMER); - save_item(NAME(m_ball_screen_collision_cause)); save_item(NAME(m_car_ball_collision_x)); save_item(NAME(m_car_ball_collision_y)); @@ -480,6 +472,4 @@ void carpolo_state::machine_reset() m_ttl7474_1a_2->clear_w (1); m_ttl7474_1a_2->preset_w(1); - - m_timer->adjust(attotime::from_hz(60), 0, attotime::from_hz(60)); } diff --git a/src/mame/video/carpolo.cpp b/src/mame/video/carpolo.cpp index d6fa254cb69..7942b6a6eaf 100644 --- a/src/mame/video/carpolo.cpp +++ b/src/mame/video/carpolo.cpp @@ -516,6 +516,12 @@ WRITE_LINE_MEMBER(carpolo_state::screen_vblank) // rising edge if (state) { + /* handle the 60hz timer now (machine/carpolo.cpp) */ + timer_tick(); + + + /* sprites collision detection */ + int col_x, col_y; int car1_x, car2_x, car3_x, car4_x, ball_x; int car1_y, car2_y, car3_y, car4_y, ball_y; @@ -634,9 +640,7 @@ WRITE_LINE_MEMBER(carpolo_state::screen_vblank) /* check ball collision with static screen elements */ { - int col; - - col = check_sprite_left_goal_collision(ball_x, ball_y, ball_code, ball_flipy, 0); + int col = check_sprite_left_goal_collision(ball_x, ball_y, ball_code, ball_flipy, 0); if (col == 1) generate_ball_screen_interrupt(0x05); if (col == 2) generate_ball_screen_interrupt(0x03); @@ -655,9 +659,7 @@ WRITE_LINE_MEMBER(carpolo_state::screen_vblank) /* check car-border collision */ { - int col; - - col = check_sprite_border_collision(car1_x, car1_y, car1_code, car1_flipy); + int col = check_sprite_border_collision(car1_x, car1_y, car1_code, car1_flipy); if (col) generate_car_border_interrupt(0, (col == 2));