mirror of
https://github.com/holub/mame
synced 2025-06-04 03:46:29 +03:00
carpolo: put timer tick in vblank again, fixes collision detection (nw)
This commit is contained in:
parent
23ab51f538
commit
0af062c145
@ -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<bitmap_ind16> m_sprite_sprite_collision_bitmap1;
|
||||
std::unique_ptr<bitmap_ind16> m_sprite_sprite_collision_bitmap2;
|
||||
std::unique_ptr<bitmap_ind16> m_sprite_goal_collision_bitmap1;
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user