neogeo: simplify sprite_on_scanline calculation (nw)

This commit is contained in:
Alex W. Jackson 2014-05-17 01:24:24 +00:00
parent 5d7f380540
commit c7baadaa7c
2 changed files with 4 additions and 18 deletions

View File

@ -298,23 +298,10 @@ static const int zoom_x_tables[][16] =
};
inline int neosprite_base_device::rows_to_height(int rows)
inline bool neosprite_base_device::sprite_on_scanline(int scanline, int y, int rows)
{
if ((rows == 0) || (rows > 0x20))
rows = 0x20;
return rows * 0x10;
}
inline int neosprite_base_device::sprite_on_scanline(int scanline, int y, int rows)
{
/* check if the current scanline falls inside this sprite,
two possible scenerios, wrap around or not */
int max_y = (y + rows_to_height(rows) - 1) & 0x1ff;
return (((max_y >= y) && (scanline >= y) && (scanline <= max_y)) ||
((max_y < y) && ((scanline >= y) || (scanline <= max_y))));
return (rows == 0) || (rows >= 0x20) || ((scanline - y) & 0x1ff) < (rows * 0x10);
}

View File

@ -36,8 +36,7 @@ public:
void create_auto_animation_timer( );
void start_auto_animation_timer( );
void neogeo_set_fixed_layer_source( UINT8 data );
inline int rows_to_height(int rows);
inline int sprite_on_scanline(int scanline, int y, int rows);
inline bool sprite_on_scanline(int scanline, int y, int rows);
virtual void draw_pixel(int romaddr, UINT32* dst, pen_t *line_pens) = 0;
void draw_sprites( bitmap_rgb32 &bitmap, int scanline );
void parse_sprites( int scanline );