mirror of
https://github.com/holub/mame
synced 2025-05-28 08:33:05 +03:00
on behalf of Atari Ace: [patch] Eliminate taitoair view struct
This commit is contained in:
parent
3b7a8c389c
commit
ddcba0be55
@ -621,10 +621,6 @@ static MACHINE_START( taitoair )
|
||||
state->tc0080vco = devtag_get_device(machine, "tc0080vco");
|
||||
|
||||
state_save_register_global(machine, state->banknum);
|
||||
state_save_register_global(machine, state->view.x1);
|
||||
state_save_register_global(machine, state->view.y1);
|
||||
state_save_register_global(machine, state->view.x2);
|
||||
state_save_register_global(machine, state->view.y2);
|
||||
state_save_register_global(machine, state->q.col);
|
||||
state_save_register_global(machine, state->q.pcount);
|
||||
|
||||
@ -644,10 +640,6 @@ static MACHINE_RESET( taitoair )
|
||||
|
||||
state->dsp_hold_signal = ASSERT_LINE;
|
||||
state->banknum = 0;
|
||||
state->view.x1 = 0;
|
||||
state->view.y1 = 0;
|
||||
state->view.x2 = 0;
|
||||
state->view.y2 = 0;
|
||||
|
||||
for (i = 0; i < TAITOAIR_POLY_MAX_PT; i++)
|
||||
{
|
||||
|
@ -27,10 +27,6 @@ struct _taitoair_state
|
||||
UINT16 * paletteram;
|
||||
|
||||
/* video-related */
|
||||
struct {
|
||||
int x1, y1, x2, y2;
|
||||
} view;
|
||||
|
||||
taitoair_poly q;
|
||||
|
||||
/* misc */
|
||||
|
@ -181,14 +181,12 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
|
||||
}
|
||||
}
|
||||
|
||||
static void fill_slope( running_machine *machine, bitmap_t *bitmap, int color, INT32 x1, INT32 x2, INT32 sl1, INT32 sl2, INT32 y1, INT32 y2, INT32 *nx1, INT32 *nx2 )
|
||||
static void fill_slope( bitmap_t *bitmap, const rectangle *cliprect, int color, INT32 x1, INT32 x2, INT32 sl1, INT32 sl2, INT32 y1, INT32 y2, INT32 *nx1, INT32 *nx2 )
|
||||
{
|
||||
taitoair_state *state = (taitoair_state *)machine->driver_data;
|
||||
|
||||
if (y1 > state->view.y2)
|
||||
if (y1 > cliprect->max_y)
|
||||
return;
|
||||
|
||||
if (y2 <= state->view.y1)
|
||||
if (y2 <= cliprect->min_y)
|
||||
{
|
||||
int delta = y2 - y1;
|
||||
*nx1 = x1 + delta * sl1;
|
||||
@ -199,15 +197,15 @@ static void fill_slope( running_machine *machine, bitmap_t *bitmap, int color, I
|
||||
if (y1 < -1000000 || y1 > 1000000)
|
||||
return;
|
||||
|
||||
if (y2 > state->view.y2)
|
||||
y2 = state->view.y2 + 1;
|
||||
if (y2 > cliprect->max_y)
|
||||
y2 = cliprect->max_y + 1;
|
||||
|
||||
if (y1 < state->view.y1)
|
||||
if (y1 < cliprect->min_y)
|
||||
{
|
||||
int delta = state->view.y1 - y1;
|
||||
int delta = cliprect->min_y - y1;
|
||||
x1 += delta * sl1;
|
||||
x2 += delta * sl2;
|
||||
y1 = state->view.y1;
|
||||
y1 = cliprect->min_y;
|
||||
}
|
||||
|
||||
if (x1 > x2 || (x1==x2 && sl1 > sl2))
|
||||
@ -226,16 +224,16 @@ static void fill_slope( running_machine *machine, bitmap_t *bitmap, int color, I
|
||||
|
||||
while (y1 < y2)
|
||||
{
|
||||
if (y1 >= state->view.y1)
|
||||
if (y1 >= cliprect->min_y)
|
||||
{
|
||||
int xx1 = x1 >> TAITOAIR_FRAC_SHIFT;
|
||||
int xx2 = x2 >> TAITOAIR_FRAC_SHIFT;
|
||||
if (xx1 <= state->view.x2 || xx2 >= state->view.x1)
|
||||
if (xx1 <= cliprect->max_x || xx2 >= cliprect->min_x)
|
||||
{
|
||||
if (xx1 < state->view.x1)
|
||||
xx1 = state->view.x1;
|
||||
if (xx2 > state->view.x2)
|
||||
xx2 = state->view.x2;
|
||||
if (xx1 < cliprect->min_x)
|
||||
xx1 = cliprect->min_x;
|
||||
if (xx2 > cliprect->max_x)
|
||||
xx2 = cliprect->max_x;
|
||||
|
||||
while (xx1 <= xx2)
|
||||
{
|
||||
@ -253,9 +251,8 @@ static void fill_slope( running_machine *machine, bitmap_t *bitmap, int color, I
|
||||
*nx2 = x2;
|
||||
}
|
||||
|
||||
static void fill_poly( running_machine *machine, bitmap_t *bitmap, const struct taitoair_poly *q )
|
||||
static void fill_poly( bitmap_t *bitmap, const rectangle *cliprect, const struct taitoair_poly *q )
|
||||
{
|
||||
taitoair_state *state = (taitoair_state *)machine->driver_data;
|
||||
INT32 sl1, sl2, cury, limy, x1, x2;
|
||||
int pmin, pmax, i, ps1, ps2;
|
||||
struct taitoair_spoint p[TAITOAIR_POLY_MAX_PT * 2];
|
||||
@ -283,13 +280,13 @@ static void fill_poly( running_machine *machine, bitmap_t *bitmap, const struct
|
||||
if (cury == limy)
|
||||
return;
|
||||
|
||||
if (cury > state->view.y2)
|
||||
if (cury > cliprect->max_y)
|
||||
return;
|
||||
if (limy <= state->view.y1)
|
||||
if (limy <= cliprect->min_y)
|
||||
return;
|
||||
|
||||
if (limy > state->view.y2)
|
||||
limy = state->view.y2;
|
||||
if (limy > cliprect->max_y)
|
||||
limy = cliprect->max_y;
|
||||
|
||||
ps1 = pmin + pcount;
|
||||
ps2 = pmin;
|
||||
@ -300,7 +297,7 @@ static void fill_poly( running_machine *machine, bitmap_t *bitmap, const struct
|
||||
{
|
||||
if (p[ps1 - 1].y == p[ps2 + 1].y)
|
||||
{
|
||||
fill_slope(machine, bitmap, color, x1, x2, sl1, sl2, cury, p[ps1 - 1].y, &x1, &x2);
|
||||
fill_slope(bitmap, cliprect, color, x1, x2, sl1, sl2, cury, p[ps1 - 1].y, &x1, &x2);
|
||||
cury = p[ps1 - 1].y;
|
||||
if (cury >= limy)
|
||||
break;
|
||||
@ -319,7 +316,7 @@ static void fill_poly( running_machine *machine, bitmap_t *bitmap, const struct
|
||||
}
|
||||
else if (p[ps1 - 1].y < p[ps2 + 1].y)
|
||||
{
|
||||
fill_slope(machine, bitmap, color, x1, x2, sl1, sl2, cury, p[ps1 - 1].y, &x1, &x2);
|
||||
fill_slope(bitmap, cliprect, color, x1, x2, sl1, sl2, cury, p[ps1 - 1].y, &x1, &x2);
|
||||
cury = p[ps1 - 1].y;
|
||||
if (cury >= limy)
|
||||
break;
|
||||
@ -331,7 +328,7 @@ static void fill_poly( running_machine *machine, bitmap_t *bitmap, const struct
|
||||
}
|
||||
else
|
||||
{
|
||||
fill_slope(machine, bitmap, color, x1, x2, sl1, sl2, cury, p[ps2 + 1].y, &x1, &x2);
|
||||
fill_slope(bitmap, cliprect, color, x1, x2, sl1, sl2, cury, p[ps2 + 1].y, &x1, &x2);
|
||||
cury = p[ps2 + 1].y;
|
||||
if (cury >= limy)
|
||||
break;
|
||||
@ -374,10 +371,6 @@ VIDEO_UPDATE( taitoair )
|
||||
{
|
||||
int adr = 0x3fff;
|
||||
// struct taitoair_poly q;
|
||||
state->view.x1 = cliprect->min_x;
|
||||
state->view.y1 = cliprect->min_y;
|
||||
state->view.x2 = cliprect->max_x;
|
||||
state->view.y2 = cliprect->max_y;
|
||||
|
||||
while (adr >= 0 && state->line_ram[adr] && state->line_ram[adr] != 0x4000)
|
||||
{
|
||||
@ -399,7 +392,7 @@ VIDEO_UPDATE( taitoair )
|
||||
}
|
||||
adr--;
|
||||
state->q.pcount = pcount;
|
||||
fill_poly(screen->machine, bitmap, &state->q);
|
||||
fill_poly(bitmap, cliprect, &state->q);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user