mirror of
https://github.com/ekeeke/Genesis-Plus-GX.git
synced 2024-12-27 19:51:48 +01:00
minor optimizations to VDP rendering code
This commit is contained in:
parent
dcefd321a6
commit
6ff42f4252
@ -974,7 +974,6 @@ static void render_bg(uint32 line, uint32 width)
|
||||
uint32 pf_col_mask = playfield_col_mask;
|
||||
uint32 pf_row_mask = playfield_row_mask;
|
||||
uint32 pf_shift = playfield_shift;
|
||||
uint32 pf_y_mask = y_mask;
|
||||
|
||||
/* Plane B */
|
||||
uint8 *buf = ntb_buf;
|
||||
@ -991,7 +990,7 @@ static void render_bg(uint32 line, uint32 width)
|
||||
uint32 v_line = (line + (yscroll & 0x3FF)) & pf_row_mask;
|
||||
#endif
|
||||
|
||||
uint32 *nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & pf_y_mask)];
|
||||
uint32 *nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)];
|
||||
v_line = (v_line & 7) << 3;
|
||||
|
||||
if(shift)
|
||||
@ -1044,7 +1043,7 @@ static void render_bg(uint32 line, uint32 width)
|
||||
v_line = (line + ((yscroll >> 16) & 0x3FF)) & pf_row_mask;
|
||||
#endif
|
||||
|
||||
nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & pf_y_mask)];
|
||||
nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)];
|
||||
v_line = (v_line & 7) << 3;
|
||||
|
||||
if(shift)
|
||||
@ -1094,7 +1093,6 @@ static void render_bg_vs(uint32 line, uint32 width)
|
||||
uint32 pf_col_mask = playfield_col_mask;
|
||||
uint32 pf_row_mask = playfield_row_mask;
|
||||
uint32 pf_shift = playfield_shift;
|
||||
uint32 pf_y_mask = y_mask;
|
||||
uint32 *vs = (uint32 *)&vsram[0];
|
||||
|
||||
/* Plane B */
|
||||
@ -1121,7 +1119,7 @@ static void render_bg_vs(uint32 line, uint32 width)
|
||||
#else
|
||||
v_line = (line + (vs[0] & 0x3FF)) & pf_row_mask;
|
||||
#endif
|
||||
nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & pf_y_mask)];
|
||||
nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)];
|
||||
v_line = (v_line & 7) << 3;
|
||||
|
||||
atbuf = nt[(index-1) & pf_col_mask];
|
||||
@ -1136,7 +1134,7 @@ static void render_bg_vs(uint32 line, uint32 width)
|
||||
#else
|
||||
v_line = (line + (vs[column] & 0x3FF)) & pf_row_mask;
|
||||
#endif
|
||||
nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & pf_y_mask)];
|
||||
nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)];
|
||||
v_line = (v_line & 7) << 3;
|
||||
|
||||
atbuf = nt[index & pf_col_mask];
|
||||
@ -1186,7 +1184,7 @@ static void render_bg_vs(uint32 line, uint32 width)
|
||||
#else
|
||||
v_line = (line + ((vs[start] >> 16) & 0x3FF)) & pf_row_mask;
|
||||
#endif
|
||||
nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & pf_y_mask)];
|
||||
nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)];
|
||||
v_line = (v_line & 7) << 3;
|
||||
|
||||
/* Window bug */
|
||||
@ -1204,7 +1202,7 @@ static void render_bg_vs(uint32 line, uint32 width)
|
||||
#else
|
||||
v_line = (line + ((vs[column] >> 16) & 0x3FF)) & pf_row_mask;
|
||||
#endif
|
||||
nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & pf_y_mask)];
|
||||
nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)];
|
||||
v_line = (v_line & 7) << 3;
|
||||
|
||||
atbuf = nt[index & pf_col_mask];
|
||||
@ -1240,7 +1238,6 @@ static void render_bg_im2(uint32 line, uint32 width, uint32 odd)
|
||||
uint32 pf_col_mask = playfield_col_mask;
|
||||
uint32 pf_row_mask = playfield_row_mask;
|
||||
uint32 pf_shift = playfield_shift;
|
||||
uint32 pf_y_mask = y_mask;
|
||||
|
||||
/* Plane B */
|
||||
uint8 *buf = ntb_buf;
|
||||
@ -1257,7 +1254,7 @@ static void render_bg_im2(uint32 line, uint32 width, uint32 odd)
|
||||
uint32 v_line = (line + ((yscroll >> 1) & 0x3FF)) & pf_row_mask;
|
||||
#endif
|
||||
|
||||
uint32 *nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & pf_y_mask)];
|
||||
uint32 *nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)];
|
||||
v_line = (((v_line & 7) << 1) | odd) << 3;
|
||||
|
||||
if(shift)
|
||||
@ -1308,7 +1305,7 @@ static void render_bg_im2(uint32 line, uint32 width, uint32 odd)
|
||||
v_line = (line + ((yscroll >> 17) & 0x3FF)) & pf_row_mask;
|
||||
#endif
|
||||
|
||||
nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & pf_y_mask)];
|
||||
nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)];
|
||||
v_line = (((v_line & 7) << 1) | odd) << 3;
|
||||
|
||||
if(shift)
|
||||
@ -1357,7 +1354,6 @@ static void render_bg_im2_vs(uint32 line, uint32 width, uint32 odd)
|
||||
uint32 pf_col_mask = playfield_col_mask;
|
||||
uint32 pf_row_mask = playfield_row_mask;
|
||||
uint32 pf_shift = playfield_shift;
|
||||
uint32 pf_y_mask = y_mask;
|
||||
uint32 *vs = (uint32 *)&vsram[0];
|
||||
|
||||
/* Plane B */
|
||||
@ -1384,7 +1380,7 @@ static void render_bg_im2_vs(uint32 line, uint32 width, uint32 odd)
|
||||
#else
|
||||
v_line = (line + ((vs[0] >> 1) & 0x3FF)) & pf_row_mask;
|
||||
#endif
|
||||
nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & pf_y_mask)];
|
||||
nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)];
|
||||
v_line = (((v_line & 7) << 1) | odd) << 3;
|
||||
|
||||
atbuf = nt[(index-1) & pf_col_mask];
|
||||
@ -1399,7 +1395,7 @@ static void render_bg_im2_vs(uint32 line, uint32 width, uint32 odd)
|
||||
#else
|
||||
v_line = (line + ((vs[column] >> 1) & 0x3FF)) & pf_row_mask;
|
||||
#endif
|
||||
nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & pf_y_mask)];
|
||||
nt = (uint32 *)&vram[ntbb + (((v_line >> 3) << pf_shift) & 0x1FC0)];
|
||||
v_line = (((v_line & 7) << 1) | odd) << 3;
|
||||
|
||||
atbuf = nt[index & pf_col_mask];
|
||||
@ -1447,7 +1443,7 @@ static void render_bg_im2_vs(uint32 line, uint32 width, uint32 odd)
|
||||
#else
|
||||
v_line = (line + ((vs[start] >> 17) & 0x3FF)) & pf_row_mask;
|
||||
#endif
|
||||
nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & pf_y_mask)];
|
||||
nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)];
|
||||
v_line = (((v_line & 7) << 1) | odd) << 3;
|
||||
|
||||
/* Window bug */
|
||||
@ -1465,7 +1461,7 @@ static void render_bg_im2_vs(uint32 line, uint32 width, uint32 odd)
|
||||
#else
|
||||
v_line = (line + ((vs[column] >> 17) & 0x3FF)) & pf_row_mask;
|
||||
#endif
|
||||
nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & pf_y_mask)];
|
||||
nt = (uint32 *)&vram[ntab + (((v_line >> 3) << pf_shift) & 0x1FC0)];
|
||||
v_line = (((v_line & 7) << 1) | odd) << 3;
|
||||
|
||||
atbuf = nt[index & pf_col_mask];
|
||||
|
@ -82,10 +82,9 @@ uint16 lines_per_frame; /* PAL: 313 lines, NTSC: 262 lines */
|
||||
|
||||
|
||||
/* Tables that define the playfield layout */
|
||||
static const uint8 shift_table[] = { 6, 7, 0, 8 };
|
||||
static const uint8 shift_table[] = { 6, 7, 0, 8 }; /* fixes Window Bug test program */
|
||||
static const uint8 col_mask_table[] = { 0x0F, 0x1F, 0x0F, 0x3F };
|
||||
static const uint16 row_mask_table[] = { 0x0FF, 0x1FF, 0x2FF, 0x3FF };
|
||||
static const uint32 y_mask_table[] = { 0x1FC0, 0x1F80, 0x1FC0, 0x1F00 };
|
||||
|
||||
static uint16 sat_base_mask; /* Base bits of SAT */
|
||||
static uint16 sat_addr_mask; /* Index bits of SAT */
|
||||
@ -194,7 +193,6 @@ void vdp_reset(void)
|
||||
playfield_shift = 6;
|
||||
playfield_col_mask = 0x0F;
|
||||
playfield_row_mask = 0x0FF;
|
||||
y_mask = 0x1FC0;
|
||||
|
||||
hint_pending = 0;
|
||||
vint_pending = 0;
|
||||
@ -906,7 +904,7 @@ static inline void reg_w(unsigned int r, unsigned int d)
|
||||
}
|
||||
break;
|
||||
|
||||
case 13: /* HSCB */
|
||||
case 13: /* HScroll Base Address */
|
||||
hscb = (d << 10) & 0xFC00;
|
||||
break;
|
||||
|
||||
@ -914,10 +912,9 @@ static inline void reg_w(unsigned int r, unsigned int d)
|
||||
playfield_shift = shift_table[(d & 3)];
|
||||
playfield_col_mask = col_mask_table[(d & 3)];
|
||||
playfield_row_mask = row_mask_table[(d >> 4) & 3];
|
||||
y_mask = y_mask_table[(d & 3)];
|
||||
break;
|
||||
|
||||
case 17: /* Update clipping */
|
||||
case 17: /* Window/Plane A clipping */
|
||||
reg[17] = d;
|
||||
window_clip();
|
||||
break;
|
||||
|
@ -54,7 +54,6 @@ extern uint8 bg_pattern_cache[0x80000];
|
||||
extern uint8 playfield_shift;
|
||||
extern uint8 playfield_col_mask;
|
||||
extern uint16 playfield_row_mask;
|
||||
extern uint32 y_mask;
|
||||
extern uint16 hc_latch;
|
||||
extern uint16 v_counter;
|
||||
extern uint32 dma_length;
|
||||
|
Loading…
Reference in New Issue
Block a user