More RDP optimization through branch flattening. [Harmony]

This commit is contained in:
Ryan Holtz 2009-12-20 20:12:04 +00:00
parent dd5315d0ce
commit 7ab8a6d8f6
17 changed files with 5107 additions and 2009 deletions

2
.gitattributes vendored
View File

@ -3558,6 +3558,8 @@ src/mame/video/rdptpipe.c svneol=native#text/plain
src/mame/video/rdptpipe.h svneol=native#text/plain src/mame/video/rdptpipe.h svneol=native#text/plain
src/mame/video/rdptrect.c svneol=native#text/plain src/mame/video/rdptrect.c svneol=native#text/plain
src/mame/video/rdptrect.h svneol=native#text/plain src/mame/video/rdptrect.h svneol=native#text/plain
src/mame/video/rdptri.c svneol=native#text/plain
src/mame/video/rdptri.h svneol=native#text/plain
src/mame/video/realbrk.c svneol=native#text/plain src/mame/video/realbrk.c svneol=native#text/plain
src/mame/video/redalert.c svneol=native#text/plain src/mame/video/redalert.c svneol=native#text/plain
src/mame/video/redclash.c svneol=native#text/plain src/mame/video/redclash.c svneol=native#text/plain

File diff suppressed because it is too large Load Diff

View File

@ -1,14 +1,14 @@
INLINE int alpha_compare_nac_nda(running_machine *machine, UINT8 comb_alpha) INLINE int alpha_compare_nac_nda(UINT8 comb_alpha)
{ {
return 1; return 1;
} }
INLINE int alpha_compare_nac_da(running_machine *machine, UINT8 comb_alpha) INLINE int alpha_compare_nac_da(UINT8 comb_alpha)
{ {
return 1; return 1;
} }
INLINE int alpha_compare_ac_nda(running_machine *machine, UINT8 comb_alpha) INLINE int alpha_compare_ac_nda(UINT8 comb_alpha)
{ {
if (comb_alpha < blend_color.i.a) if (comb_alpha < blend_color.i.a)
{ {
@ -17,9 +17,9 @@ INLINE int alpha_compare_ac_nda(running_machine *machine, UINT8 comb_alpha)
return 1; return 1;
} }
INLINE int alpha_compare_ac_da(running_machine *machine, UINT8 comb_alpha) INLINE int alpha_compare_ac_da(UINT8 comb_alpha)
{ {
if (comb_alpha < (mame_rand(machine) & 0xff)) if (comb_alpha < (rdp_rand() & 0xff))
{ {
return 0; return 0;
} }

View File

@ -1,9 +1,9 @@
INLINE int alpha_compare_nac_nda(running_machine *machine, UINT8 comb_alpha); INLINE int alpha_compare_nac_nda(UINT8 comb_alpha);
INLINE int alpha_compare_nac_da(running_machine *machine, UINT8 comb_alpha); INLINE int alpha_compare_nac_da(UINT8 comb_alpha);
INLINE int alpha_compare_ac_nda(running_machine *machine, UINT8 comb_alpha); INLINE int alpha_compare_ac_nda(UINT8 comb_alpha);
INLINE int alpha_compare_ac_da(running_machine *machine, UINT8 comb_alpha); INLINE int alpha_compare_ac_da(UINT8 comb_alpha);
static int (*rdp_alpha_compare_func[4])(running_machine *, UINT8) = static int (*rdp_alpha_compare_func[4])(UINT8) =
{ {
alpha_compare_nac_nda, alpha_compare_nac_da, alpha_compare_ac_nda, alpha_compare_ac_da alpha_compare_nac_nda, alpha_compare_nac_da, alpha_compare_ac_nda, alpha_compare_ac_da
}; };

View File

@ -1,6 +1,6 @@
INLINE UINT8 alpha_cvg_get_cta_ca(UINT8 comb_alpha) INLINE void alpha_cvg_get_cta_ca(UINT8 *comb_alpha)
{ {
UINT32 temp = comb_alpha; UINT32 temp = *comb_alpha;
UINT32 temp2 = curpixel_cvg; UINT32 temp2 = curpixel_cvg;
UINT32 temp3 = 0; UINT32 temp3 = 0;
@ -11,30 +11,34 @@ INLINE UINT8 alpha_cvg_get_cta_ca(UINT8 comb_alpha)
if (temp > 0xff) if (temp > 0xff)
{ {
temp = 0xff; *comb_alpha = 0xff;
}
else
{
*comb_alpha = (UINT8)temp;
} }
return (UINT8)temp;
} }
INLINE UINT8 alpha_cvg_get_ncta_ca(UINT8 comb_alpha) INLINE void alpha_cvg_get_ncta_ca(UINT8 *comb_alpha)
{ {
UINT32 temp = comb_alpha; UINT32 temp = *comb_alpha;
UINT32 temp2 = curpixel_cvg; UINT32 temp2 = curpixel_cvg;
temp = temp2 << 5; temp = temp2 << 5;
if (temp > 0xff) if (temp > 0xff)
{ {
temp = 0xff; *comb_alpha = 0xff;
}
else
{
*comb_alpha = (UINT8)temp;
} }
return (UINT8)temp;
} }
INLINE UINT8 alpha_cvg_get_cta_nca(UINT8 comb_alpha) INLINE void alpha_cvg_get_cta_nca(UINT8 *comb_alpha)
{ {
UINT32 temp = comb_alpha; UINT32 temp = *comb_alpha;
UINT32 temp2 = curpixel_cvg; UINT32 temp2 = curpixel_cvg;
UINT32 temp3 = 0; UINT32 temp3 = 0;
@ -43,20 +47,24 @@ INLINE UINT8 alpha_cvg_get_cta_nca(UINT8 comb_alpha)
if (temp > 0xff) if (temp > 0xff)
{ {
temp = 0xff; *comb_alpha = 0xff;
}
else
{
*comb_alpha = (UINT8)temp;
} }
return (UINT8)temp;
} }
INLINE UINT8 alpha_cvg_get_ncta_nca(UINT8 comb_alpha) INLINE void alpha_cvg_get_ncta_nca(UINT8 *comb_alpha)
{ {
UINT32 temp = comb_alpha; UINT32 temp = *comb_alpha;
if (temp > 0xff) if (temp > 0xff)
{ {
temp = 0xff; *comb_alpha = 0xff;
}
else
{
*comb_alpha = (UINT8)temp;
} }
return (UINT8)temp;
} }

View File

@ -1,9 +1,9 @@
INLINE UINT8 alpha_cvg_get_cta_ca(UINT8 comb_alpha); INLINE void alpha_cvg_get_cta_ca(UINT8 *comb_alpha);
INLINE UINT8 alpha_cvg_get_ncta_ca(UINT8 comb_alpha); INLINE void alpha_cvg_get_ncta_ca(UINT8 *comb_alpha);
INLINE UINT8 alpha_cvg_get_cta_nca(UINT8 comb_alpha); INLINE void alpha_cvg_get_cta_nca(UINT8 *comb_alpha);
INLINE UINT8 alpha_cvg_get_ncta_nca(UINT8 comb_alpha); INLINE void alpha_cvg_get_ncta_nca(UINT8 *comb_alpha);
static UINT8 (*rdp_alpha_cvg_func[4])(UINT8) = static void (*rdp_alpha_cvg_func[4])(UINT8*) =
{ {
alpha_cvg_get_ncta_nca, alpha_cvg_get_ncta_ca, alpha_cvg_get_cta_nca, alpha_cvg_get_cta_ca, alpha_cvg_get_ncta_nca, alpha_cvg_get_ncta_ca, alpha_cvg_get_cta_nca, alpha_cvg_get_cta_ca,
}; };

View File

@ -1,4 +1,8 @@
INLINE UINT32 FBWRITE_16_RDEN_CVGD0(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_16_RDEN_CVGD0_COC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_16_RDEN_CVGD0_NCOC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
#undef CVG_DRAW #undef CVG_DRAW
UINT16 finalcolor; UINT16 finalcolor;
@ -24,11 +28,6 @@ INLINE UINT32 FBWRITE_16_RDEN_CVGD0(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, U
curpixel_overlap = 0; curpixel_overlap = 0;
} }
if (curpixel_cvg > 8)
{
fatalerror("FBWRITE_16: curpixel_cvg %d", curpixel_cvg);
}
newcvg = curpixel_cvg + memory_cvg; newcvg = curpixel_cvg + memory_cvg;
wrapflag = (newcvg > 8) ? 1 : 0; wrapflag = (newcvg > 8) ? 1 : 0;
@ -37,23 +36,20 @@ INLINE UINT32 FBWRITE_16_RDEN_CVGD0(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, U
clampcvg = (newcvg > 8) ? 8 : newcvg; clampcvg = (newcvg > 8) ? 8 : newcvg;
newcvg = (wrapflag)? (newcvg - 8) : newcvg; newcvg = (wrapflag)? (newcvg - 8) : newcvg;
if (!curpixel_cvg)
{
fatalerror("cvg underflow");
}
curpixel_cvg--; curpixel_cvg--;
newcvg--; newcvg--;
memory_cvg--; memory_cvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xfffe; *fb &= 0xfffe;
*fb |= ((newcvg >> 2) & 1); *fb |= ((newcvg >> 2) & 1);
*hb = (newcvg & 3); *hb = (newcvg & 3);
return 0; return 0;
} }
#endif
if (!other_modes.force_blend && !curpixel_overlap) if (!other_modes.force_blend && !curpixel_overlap)
{ {
@ -68,7 +64,11 @@ INLINE UINT32 FBWRITE_16_RDEN_CVGD0(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, U
return 1; return 1;
} }
INLINE UINT32 FBWRITE_16_RDEN_CVGD1(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_16_RDEN_CVGD1_COC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_16_RDEN_CVGD1_NCOC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
#undef CVG_DRAW #undef CVG_DRAW
UINT16 finalcolor; UINT16 finalcolor;
@ -94,11 +94,6 @@ INLINE UINT32 FBWRITE_16_RDEN_CVGD1(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, U
curpixel_overlap = 0; curpixel_overlap = 0;
} }
if (curpixel_cvg > 8)
{
fatalerror("FBWRITE_16: curpixel_cvg %d", curpixel_cvg);
}
newcvg = curpixel_cvg + memory_cvg; newcvg = curpixel_cvg + memory_cvg;
wrapflag = (newcvg > 8) ? 1 : 0; wrapflag = (newcvg > 8) ? 1 : 0;
@ -107,30 +102,31 @@ INLINE UINT32 FBWRITE_16_RDEN_CVGD1(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, U
clampcvg = (newcvg > 8) ? 8 : newcvg; clampcvg = (newcvg > 8) ? 8 : newcvg;
newcvg = (wrapflag)? (newcvg - 8) : newcvg; newcvg = (wrapflag)? (newcvg - 8) : newcvg;
if (!curpixel_cvg)
{
fatalerror("cvg underflow");
}
curpixel_cvg--; curpixel_cvg--;
newcvg--; newcvg--;
memory_cvg--; memory_cvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xfffe; *fb &= 0xfffe;
*fb |= ((newcvg >> 2) & 1); *fb |= ((newcvg >> 2) & 1);
*hb = (newcvg & 3); *hb = (newcvg & 3);
return 0; return 0;
} }
#endif
*fb = finalcolor|((newcvg >> 2) & 1); *fb = finalcolor|((newcvg >> 2) & 1);
*hb = (newcvg & 3); *hb = (newcvg & 3);
return 1; return 1;
} }
INLINE UINT32 FBWRITE_16_RDEN_CVGD2(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_16_RDEN_CVGD2_COC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_16_RDEN_CVGD2_NCOC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
#undef CVG_DRAW #undef CVG_DRAW
UINT16 finalcolor; UINT16 finalcolor;
@ -156,11 +152,6 @@ INLINE UINT32 FBWRITE_16_RDEN_CVGD2(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, U
curpixel_overlap = 0; curpixel_overlap = 0;
} }
if (curpixel_cvg > 8)
{
fatalerror("FBWRITE_16: curpixel_cvg %d", curpixel_cvg);
}
newcvg = curpixel_cvg + memory_cvg; newcvg = curpixel_cvg + memory_cvg;
wrapflag = (newcvg > 8) ? 1 : 0; wrapflag = (newcvg > 8) ? 1 : 0;
@ -169,30 +160,31 @@ INLINE UINT32 FBWRITE_16_RDEN_CVGD2(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, U
clampcvg = (newcvg > 8) ? 8 : newcvg; clampcvg = (newcvg > 8) ? 8 : newcvg;
newcvg = (wrapflag)? (newcvg - 8) : newcvg; newcvg = (wrapflag)? (newcvg - 8) : newcvg;
if (!curpixel_cvg)
{
fatalerror("cvg underflow");
}
curpixel_cvg--; curpixel_cvg--;
newcvg--; newcvg--;
memory_cvg--; memory_cvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xfffe; *fb &= 0xfffe;
*fb |= ((newcvg >> 2) & 1); *fb |= ((newcvg >> 2) & 1);
*hb = (newcvg & 3); *hb = (newcvg & 3);
return 0; return 0;
} }
#endif
*fb = finalcolor|1; *fb = finalcolor|1;
*hb = 3; *hb = 3;
return 1; return 1;
} }
INLINE UINT32 FBWRITE_16_RDEN_CVGD3(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_16_RDEN_CVGD3_COC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_16_RDEN_CVGD3_NCOC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
#undef CVG_DRAW #undef CVG_DRAW
UINT16 finalcolor; UINT16 finalcolor;
@ -218,11 +210,6 @@ INLINE UINT32 FBWRITE_16_RDEN_CVGD3(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, U
curpixel_overlap = 0; curpixel_overlap = 0;
} }
if (curpixel_cvg > 8)
{
fatalerror("FBWRITE_16: curpixel_cvg %d", curpixel_cvg);
}
newcvg = curpixel_cvg + memory_cvg; newcvg = curpixel_cvg + memory_cvg;
wrapflag = (newcvg > 8) ? 1 : 0; wrapflag = (newcvg > 8) ? 1 : 0;
@ -231,30 +218,31 @@ INLINE UINT32 FBWRITE_16_RDEN_CVGD3(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, U
clampcvg = (newcvg > 8) ? 8 : newcvg; clampcvg = (newcvg > 8) ? 8 : newcvg;
newcvg = (wrapflag)? (newcvg - 8) : newcvg; newcvg = (wrapflag)? (newcvg - 8) : newcvg;
if (!curpixel_cvg)
{
fatalerror("cvg underflow");
}
curpixel_cvg--; curpixel_cvg--;
newcvg--; newcvg--;
memory_cvg--; memory_cvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xfffe; *fb &= 0xfffe;
*fb |= ((newcvg >> 2) & 1); *fb |= ((newcvg >> 2) & 1);
*hb = (newcvg & 3); *hb = (newcvg & 3);
return 0; return 0;
} }
#endif
*fb = finalcolor|((memory_cvg >> 2) & 1); *fb = finalcolor|((memory_cvg >> 2) & 1);
*hb = (memory_cvg & 3); *hb = (memory_cvg & 3);
return 1; return 1;
} }
INLINE UINT32 FBWRITE_16_RDNEN_CVGD0(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_16_RDNEN_CVGD0_COC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_16_RDNEN_CVGD0_NCOC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
#undef CVG_DRAW #undef CVG_DRAW
UINT16 finalcolor; UINT16 finalcolor;
@ -279,11 +267,6 @@ INLINE UINT32 FBWRITE_16_RDNEN_CVGD0(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g,
curpixel_overlap = 0; curpixel_overlap = 0;
} }
if (curpixel_cvg > 8)
{
fatalerror("FBWRITE_16: curpixel_cvg %d", curpixel_cvg);
}
newcvg = curpixel_cvg + 8; newcvg = curpixel_cvg + 8;
wrapflag = (newcvg > 8) ? 1 : 0; wrapflag = (newcvg > 8) ? 1 : 0;
@ -292,22 +275,19 @@ INLINE UINT32 FBWRITE_16_RDNEN_CVGD0(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g,
clampcvg = (newcvg > 8) ? 8 : newcvg; clampcvg = (newcvg > 8) ? 8 : newcvg;
newcvg = (wrapflag)? (newcvg - 8) : newcvg; newcvg = (wrapflag)? (newcvg - 8) : newcvg;
if (!curpixel_cvg)
{
fatalerror("cvg underflow");
}
curpixel_cvg--; curpixel_cvg--;
newcvg--; newcvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xfffe; *fb &= 0xfffe;
*fb |= ((newcvg >> 2) & 1); *fb |= ((newcvg >> 2) & 1);
*hb = (newcvg & 3); *hb = (newcvg & 3);
return 0; return 0;
} }
#endif
if (!other_modes.force_blend && !curpixel_overlap) if (!other_modes.force_blend && !curpixel_overlap)
{ {
@ -322,7 +302,11 @@ INLINE UINT32 FBWRITE_16_RDNEN_CVGD0(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g,
return 1; return 1;
} }
INLINE UINT32 FBWRITE_16_RDNEN_CVGD1(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_16_RDNEN_CVGD1_COC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_16_RDNEN_CVGD1_NCOC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
#undef CVG_DRAW #undef CVG_DRAW
UINT16 finalcolor; UINT16 finalcolor;
@ -347,11 +331,6 @@ INLINE UINT32 FBWRITE_16_RDNEN_CVGD1(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g,
curpixel_overlap = 0; curpixel_overlap = 0;
} }
if (curpixel_cvg > 8)
{
fatalerror("FBWRITE_16: curpixel_cvg %d", curpixel_cvg);
}
newcvg = curpixel_cvg + 8; newcvg = curpixel_cvg + 8;
wrapflag = (newcvg > 8) ? 1 : 0; wrapflag = (newcvg > 8) ? 1 : 0;
@ -360,29 +339,30 @@ INLINE UINT32 FBWRITE_16_RDNEN_CVGD1(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g,
clampcvg = (newcvg > 8) ? 8 : newcvg; clampcvg = (newcvg > 8) ? 8 : newcvg;
newcvg = (wrapflag)? (newcvg - 8) : newcvg; newcvg = (wrapflag)? (newcvg - 8) : newcvg;
if (!curpixel_cvg)
{
fatalerror("cvg underflow");
}
curpixel_cvg--; curpixel_cvg--;
newcvg--; newcvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xfffe; *fb &= 0xfffe;
*fb |= ((newcvg >> 2) & 1); *fb |= ((newcvg >> 2) & 1);
*hb = (newcvg & 3); *hb = (newcvg & 3);
return 0; return 0;
} }
#endif
*fb = finalcolor|1; *fb = finalcolor|1;
*hb = 3; *hb = 3;
return 1; return 1;
} }
INLINE UINT32 FBWRITE_16_RDNEN_CVGD2(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_16_RDNEN_CVGD2_COC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_16_RDNEN_CVGD2_NCOC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
#undef CVG_DRAW #undef CVG_DRAW
UINT16 finalcolor; UINT16 finalcolor;
@ -407,11 +387,6 @@ INLINE UINT32 FBWRITE_16_RDNEN_CVGD2(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g,
curpixel_overlap = 0; curpixel_overlap = 0;
} }
if (curpixel_cvg > 8)
{
fatalerror("FBWRITE_16: curpixel_cvg %d", curpixel_cvg);
}
newcvg = curpixel_cvg + 8; newcvg = curpixel_cvg + 8;
wrapflag = (newcvg > 8) ? 1 : 0; wrapflag = (newcvg > 8) ? 1 : 0;
@ -420,29 +395,30 @@ INLINE UINT32 FBWRITE_16_RDNEN_CVGD2(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g,
clampcvg = (newcvg > 8) ? 8 : newcvg; clampcvg = (newcvg > 8) ? 8 : newcvg;
newcvg = (wrapflag)? (newcvg - 8) : newcvg; newcvg = (wrapflag)? (newcvg - 8) : newcvg;
if (!curpixel_cvg)
{
fatalerror("cvg underflow");
}
curpixel_cvg--; curpixel_cvg--;
newcvg--; newcvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xfffe; *fb &= 0xfffe;
*fb |= ((newcvg >> 2) & 1); *fb |= ((newcvg >> 2) & 1);
*hb = (newcvg & 3); *hb = (newcvg & 3);
return 0; return 0;
} }
#endif
*fb = finalcolor|1; *fb = finalcolor|1;
*hb = 3; *hb = 3;
return 1; return 1;
} }
INLINE UINT32 FBWRITE_16_RDNEN_CVGD3(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_16_RDNEN_CVGD3_COC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_16_RDNEN_CVGD3_NCOC(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
#undef CVG_DRAW #undef CVG_DRAW
UINT16 finalcolor; UINT16 finalcolor;
@ -467,11 +443,6 @@ INLINE UINT32 FBWRITE_16_RDNEN_CVGD3(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g,
curpixel_overlap = 0; curpixel_overlap = 0;
} }
if (curpixel_cvg > 8)
{
fatalerror("FBWRITE_16: curpixel_cvg %d", curpixel_cvg);
}
newcvg = curpixel_cvg + 8; newcvg = curpixel_cvg + 8;
wrapflag = (newcvg > 8) ? 1 : 0; wrapflag = (newcvg > 8) ? 1 : 0;
@ -480,29 +451,30 @@ INLINE UINT32 FBWRITE_16_RDNEN_CVGD3(UINT16 *fb, UINT8* hb, UINT32 r, UINT32 g,
clampcvg = (newcvg > 8) ? 8 : newcvg; clampcvg = (newcvg > 8) ? 8 : newcvg;
newcvg = (wrapflag)? (newcvg - 8) : newcvg; newcvg = (wrapflag)? (newcvg - 8) : newcvg;
if (!curpixel_cvg)
{
fatalerror("cvg underflow");
}
curpixel_cvg--; curpixel_cvg--;
newcvg--; newcvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xfffe; *fb &= 0xfffe;
*fb |= ((newcvg >> 2) & 1); *fb |= ((newcvg >> 2) & 1);
*hb = (newcvg & 3); *hb = (newcvg & 3);
return 0; return 0;
} }
#endif
*fb = finalcolor|1; *fb = finalcolor|1;
*hb = 4; *hb = 4;
return 1; return 1;
} }
INLINE UINT32 FBWRITE_32_RDEN_CVGD0(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_32_RDEN_CVGD0_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_32_RDEN_CVGD0_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8); UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8);
UINT32 memory_cvg = ((*fb >>5) & 7) + 1; UINT32 memory_cvg = ((*fb >>5) & 7) + 1;
@ -520,12 +492,14 @@ INLINE UINT32 FBWRITE_32_RDEN_CVGD0(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
memory_cvg--; memory_cvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xffffff00; *fb &= 0xffffff00;
*fb |= ((newcvg << 5) & 0xff); *fb |= ((newcvg << 5) & 0xff);
return 0; return 0;
} }
#endif
if (!other_modes.force_blend && !curpixel_overlap) if (!other_modes.force_blend && !curpixel_overlap)
{ {
@ -538,7 +512,11 @@ INLINE UINT32 FBWRITE_32_RDEN_CVGD0(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
return 1; return 1;
} }
INLINE UINT32 FBWRITE_32_RDEN_CVGD1(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_32_RDEN_CVGD1_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_32_RDEN_CVGD1_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8); UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8);
UINT32 memory_cvg = ((*fb >>5) & 7) + 1; UINT32 memory_cvg = ((*fb >>5) & 7) + 1;
@ -556,18 +534,24 @@ INLINE UINT32 FBWRITE_32_RDEN_CVGD1(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
memory_cvg--; memory_cvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xffffff00; *fb &= 0xffffff00;
*fb |= ((newcvg << 5) & 0xff); *fb |= ((newcvg << 5) & 0xff);
return 0; return 0;
} }
#endif
*fb = finalcolor | (newcvg << 5); *fb = finalcolor | (newcvg << 5);
return 1; return 1;
} }
INLINE UINT32 FBWRITE_32_RDEN_CVGD2(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_32_RDEN_CVGD2_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_32_RDEN_CVGD2_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8); UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8);
UINT32 memory_cvg = ((*fb >>5) & 7) + 1; UINT32 memory_cvg = ((*fb >>5) & 7) + 1;
@ -585,18 +569,24 @@ INLINE UINT32 FBWRITE_32_RDEN_CVGD2(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
memory_cvg--; memory_cvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xffffff00; *fb &= 0xffffff00;
*fb |= ((newcvg << 5) & 0xff); *fb |= ((newcvg << 5) & 0xff);
return 0; return 0;
} }
#endif
*fb = finalcolor | 0xE0; *fb = finalcolor | 0xE0;
return 1; return 1;
} }
INLINE UINT32 FBWRITE_32_RDEN_CVGD3(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_32_RDEN_CVGD3_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_32_RDEN_CVGD3_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8); UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8);
UINT32 memory_alphachannel = *fb & 0xff; UINT32 memory_alphachannel = *fb & 0xff;
@ -615,18 +605,24 @@ INLINE UINT32 FBWRITE_32_RDEN_CVGD3(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
memory_cvg--; memory_cvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xffffff00; *fb &= 0xffffff00;
*fb |= ((newcvg << 5) & 0xff); *fb |= ((newcvg << 5) & 0xff);
return 0; return 0;
} }
#endif
*fb = finalcolor | memory_alphachannel; *fb = finalcolor | memory_alphachannel;
return 1; return 1;
} }
INLINE UINT32 FBWRITE_32_RDNEN_CVGD0(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_32_RDNEN_CVGD0_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_32_RDNEN_CVGD0_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8); UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8);
UINT32 newcvg; UINT32 newcvg;
@ -642,12 +638,14 @@ INLINE UINT32 FBWRITE_32_RDNEN_CVGD0(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
newcvg--; newcvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xffffff00; *fb &= 0xffffff00;
*fb |= ((newcvg << 5) & 0xff); *fb |= ((newcvg << 5) & 0xff);
return 0; return 0;
} }
#endif
if (!other_modes.force_blend && !curpixel_overlap) if (!other_modes.force_blend && !curpixel_overlap)
{ {
@ -660,7 +658,11 @@ INLINE UINT32 FBWRITE_32_RDNEN_CVGD0(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
return 1; return 1;
} }
INLINE UINT32 FBWRITE_32_RDNEN_CVGD1(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_32_RDNEN_CVGD1_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_32_RDNEN_CVGD1_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8); UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8);
UINT32 newcvg; UINT32 newcvg;
@ -676,18 +678,24 @@ INLINE UINT32 FBWRITE_32_RDNEN_CVGD1(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
newcvg--; newcvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xffffff00; *fb &= 0xffffff00;
*fb |= ((newcvg << 5) & 0xff); *fb |= ((newcvg << 5) & 0xff);
return 0; return 0;
} }
#endif
*fb = finalcolor | (newcvg << 5); *fb = finalcolor | (newcvg << 5);
return 1; return 1;
} }
INLINE UINT32 FBWRITE_32_RDNEN_CVGD2(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_32_RDNEN_CVGD2_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_32_RDNEN_CVGD2_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8); UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8);
UINT32 newcvg; UINT32 newcvg;
@ -703,18 +711,24 @@ INLINE UINT32 FBWRITE_32_RDNEN_CVGD2(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
newcvg--; newcvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xffffff00; *fb &= 0xffffff00;
*fb |= ((newcvg << 5) & 0xff); *fb |= ((newcvg << 5) & 0xff);
return 0; return 0;
} }
#endif
*fb = finalcolor | 0xE0; *fb = finalcolor | 0xE0;
return 1; return 1;
} }
INLINE UINT32 FBWRITE_32_RDNEN_CVGD3(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b) #if defined(COLOR_ON_CVG)
INLINE UINT32 FBWRITE_32_RDNEN_CVGD3_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#else
INLINE UINT32 FBWRITE_32_RDNEN_CVGD3_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
#endif
{ {
UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8); UINT32 finalcolor=(r << 24) | (g << 16) | (b << 8);
UINT32 memory_alphachannel = *fb & 0xff; UINT32 memory_alphachannel = *fb & 0xff;
@ -731,12 +745,14 @@ INLINE UINT32 FBWRITE_32_RDNEN_CVGD3(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b)
newcvg--; newcvg--;
clampcvg--; clampcvg--;
if (other_modes.color_on_cvg && !wrapflag) #if defined(COLOR_ON_CVG)
if (!wrapflag)
{ {
*fb &= 0xffffff00; *fb &= 0xffffff00;
*fb |= ((newcvg << 5) & 0xff); *fb |= ((newcvg << 5) & 0xff);
return 0; return 0;
} }
#endif
*fb = finalcolor | memory_alphachannel; *fb = finalcolor | memory_alphachannel;
return 1; return 1;

View File

@ -1,29 +1,49 @@
INLINE UINT32 FBWRITE_16_RDEN_CVGD0(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_16_RDEN_CVGD0_NCOC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_16_RDEN_CVGD1(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_16_RDEN_CVGD0_COC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_16_RDEN_CVGD2(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_16_RDEN_CVGD1_NCOC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_16_RDEN_CVGD3(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_16_RDEN_CVGD1_COC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_16_RDNEN_CVGD0(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_16_RDEN_CVGD2_NCOC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_16_RDNEN_CVGD1(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_16_RDEN_CVGD2_COC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_16_RDNEN_CVGD2(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_16_RDEN_CVGD3_NCOC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_16_RDNEN_CVGD3(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_16_RDEN_CVGD3_COC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_16_RDNEN_CVGD0_NCOC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_16_RDNEN_CVGD0_COC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_16_RDNEN_CVGD1_NCOC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_16_RDNEN_CVGD1_COC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_16_RDNEN_CVGD2_NCOC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_16_RDNEN_CVGD2_COC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_16_RDNEN_CVGD3_NCOC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_16_RDNEN_CVGD3_COC(UINT16 *fb, UINT8 *hb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDEN_CVGD0(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_32_RDEN_CVGD0_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDEN_CVGD1(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_32_RDEN_CVGD0_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDEN_CVGD2(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_32_RDEN_CVGD1_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDEN_CVGD3(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_32_RDEN_CVGD1_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDNEN_CVGD0(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_32_RDEN_CVGD2_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDNEN_CVGD1(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_32_RDEN_CVGD2_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDNEN_CVGD2(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_32_RDEN_CVGD3_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDNEN_CVGD3(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b); INLINE UINT32 FBWRITE_32_RDEN_CVGD3_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDNEN_CVGD0_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDNEN_CVGD0_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDNEN_CVGD1_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDNEN_CVGD1_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDNEN_CVGD2_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDNEN_CVGD2_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDNEN_CVGD3_NCOC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
INLINE UINT32 FBWRITE_32_RDNEN_CVGD3_COC(UINT32 *fb, UINT32 r, UINT32 g, UINT32 b);
static UINT32 (*rdp_fbwrite_16_func[8])(UINT16*, UINT8*, UINT32, UINT32, UINT32) = static UINT32 (*rdp_fbwrite_16_func[16])(UINT16*, UINT8*, UINT32, UINT32, UINT32) =
{ {
FBWRITE_16_RDNEN_CVGD0, FBWRITE_16_RDNEN_CVGD1, FBWRITE_16_RDNEN_CVGD2, FBWRITE_16_RDNEN_CVGD3, FBWRITE_16_RDNEN_CVGD0_NCOC, FBWRITE_16_RDNEN_CVGD1_NCOC, FBWRITE_16_RDNEN_CVGD2_NCOC, FBWRITE_16_RDNEN_CVGD3_NCOC,
FBWRITE_16_RDEN_CVGD0, FBWRITE_16_RDEN_CVGD1, FBWRITE_16_RDEN_CVGD2, FBWRITE_16_RDEN_CVGD3, FBWRITE_16_RDEN_CVGD0_NCOC, FBWRITE_16_RDEN_CVGD1_NCOC, FBWRITE_16_RDEN_CVGD2_NCOC, FBWRITE_16_RDEN_CVGD3_NCOC,
FBWRITE_16_RDNEN_CVGD0_COC, FBWRITE_16_RDNEN_CVGD1_COC, FBWRITE_16_RDNEN_CVGD2_COC, FBWRITE_16_RDNEN_CVGD3_COC,
FBWRITE_16_RDEN_CVGD0_COC, FBWRITE_16_RDEN_CVGD1_COC, FBWRITE_16_RDEN_CVGD2_COC, FBWRITE_16_RDEN_CVGD3_COC,
}; };
static UINT32 (*rdp_fbwrite_32_func[8])(UINT32*, UINT32, UINT32, UINT32) = static UINT32 (*rdp_fbwrite_32_func[16])(UINT32*, UINT32, UINT32, UINT32) =
{ {
FBWRITE_32_RDNEN_CVGD0, FBWRITE_32_RDNEN_CVGD1, FBWRITE_32_RDNEN_CVGD2, FBWRITE_32_RDNEN_CVGD3, FBWRITE_32_RDNEN_CVGD0_NCOC, FBWRITE_32_RDNEN_CVGD1_NCOC, FBWRITE_32_RDNEN_CVGD2_NCOC, FBWRITE_32_RDNEN_CVGD3_NCOC,
FBWRITE_32_RDEN_CVGD0, FBWRITE_32_RDEN_CVGD1, FBWRITE_32_RDEN_CVGD2, FBWRITE_32_RDEN_CVGD3, FBWRITE_32_RDEN_CVGD0_NCOC, FBWRITE_32_RDEN_CVGD1_NCOC, FBWRITE_32_RDEN_CVGD2_NCOC, FBWRITE_32_RDEN_CVGD3_NCOC,
FBWRITE_32_RDNEN_CVGD0_COC, FBWRITE_32_RDNEN_CVGD1_COC, FBWRITE_32_RDNEN_CVGD2_COC, FBWRITE_32_RDNEN_CVGD3_COC,
FBWRITE_32_RDEN_CVGD0_COC, FBWRITE_32_RDEN_CVGD1_COC, FBWRITE_32_RDEN_CVGD2_COC, FBWRITE_32_RDEN_CVGD3_COC,
}; };

View File

@ -439,46 +439,3 @@ INLINE void FETCH_TEXEL_INVALID(COLOR *color, int s, int t)
} }
//typedef void (*rdp_fetch_texel_func)(COLOR *color, int s, int t); //typedef void (*rdp_fetch_texel_func)(COLOR *color, int s, int t);
static void (*rdp_fetch_texel_func[128])(COLOR*, int, int) =
{
// 4-bit accessors
FETCH_TEXEL_RGBA4_TLUT_NEN, FETCH_TEXEL_RGBA4_TLUT_NEN, FETCH_TEXEL_RGBA4_TLUT_EN0, FETCH_TEXEL_RGBA4_TLUT_EN1,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_CI4_TLUT_NEN, FETCH_TEXEL_CI4_TLUT_NEN, FETCH_TEXEL_CI4_TLUT_EN0, FETCH_TEXEL_CI4_TLUT_EN1,
FETCH_TEXEL_IA4_TLUT_NEN, FETCH_TEXEL_IA4_TLUT_NEN, FETCH_TEXEL_IA4_TLUT_EN0, FETCH_TEXEL_IA4_TLUT_EN1,
FETCH_TEXEL_I4_TLUT_NEN, FETCH_TEXEL_I4_TLUT_NEN, FETCH_TEXEL_I4_TLUT_EN0, FETCH_TEXEL_I4_TLUT_EN1,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
// 8-bit accessors
FETCH_TEXEL_RGBA8_TLUT_NEN, FETCH_TEXEL_RGBA8_TLUT_NEN, FETCH_TEXEL_RGBA8_TLUT_EN0, FETCH_TEXEL_RGBA8_TLUT_EN1,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_CI8_TLUT_NEN, FETCH_TEXEL_CI8_TLUT_NEN, FETCH_TEXEL_CI8_TLUT_EN0, FETCH_TEXEL_CI8_TLUT_EN1,
FETCH_TEXEL_IA8_TLUT_NEN, FETCH_TEXEL_IA8_TLUT_NEN, FETCH_TEXEL_IA8_TLUT_EN0, FETCH_TEXEL_IA8_TLUT_EN1,
FETCH_TEXEL_I8_TLUT_NEN, FETCH_TEXEL_I8_TLUT_NEN, FETCH_TEXEL_I8_TLUT_EN0, FETCH_TEXEL_I8_TLUT_EN1,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
// 16-bit accessors
FETCH_TEXEL_RGBA16_TLUT_NEN,FETCH_TEXEL_RGBA16_TLUT_NEN,FETCH_TEXEL_RGBA16_TLUT_EN0,FETCH_TEXEL_RGBA16_TLUT_EN1,
FETCH_TEXEL_YUV16, FETCH_TEXEL_YUV16, FETCH_TEXEL_YUV16, FETCH_TEXEL_YUV16,
FETCH_TEXEL_CI16_TLUT_NEN, FETCH_TEXEL_CI16_TLUT_NEN, FETCH_TEXEL_CI16_TLUT_EN0, FETCH_TEXEL_CI16_TLUT_EN1,
FETCH_TEXEL_IA16_TLUT_NEN, FETCH_TEXEL_IA16_TLUT_NEN, FETCH_TEXEL_IA16_TLUT_EN0, FETCH_TEXEL_IA16_TLUT_EN1,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
// 32-bit accessors
FETCH_TEXEL_RGBA32_TLUT_NEN,FETCH_TEXEL_RGBA32_TLUT_NEN,FETCH_TEXEL_RGBA32_TLUT_EN0,FETCH_TEXEL_RGBA32_TLUT_EN1,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
};

View File

@ -0,0 +1,81 @@
INLINE void FETCH_TEXEL_RGBA4_TLUT_EN0(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_RGBA4_TLUT_EN1(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_RGBA4_TLUT_NEN(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_RGBA8_TLUT_EN0(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_RGBA8_TLUT_EN1(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_RGBA8_TLUT_NEN(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_RGBA16_TLUT_EN0(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_RGBA16_TLUT_EN1(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_RGBA16_TLUT_NEN(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_RGBA32_TLUT_EN0(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_RGBA32_TLUT_EN1(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_RGBA32_TLUT_NEN(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_YUV16(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_CI4_TLUT_EN0(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_CI4_TLUT_EN1(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_CI4_TLUT_NEN(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_CI8_TLUT_EN0(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_CI8_TLUT_EN1(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_CI8_TLUT_NEN(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_CI16_TLUT_EN0(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_CI16_TLUT_EN1(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_CI16_TLUT_NEN(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_IA4_TLUT_EN0(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_IA4_TLUT_EN1(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_IA4_TLUT_NEN(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_IA8_TLUT_EN0(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_IA8_TLUT_EN1(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_IA8_TLUT_NEN(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_IA16_TLUT_EN0(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_IA16_TLUT_EN1(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_IA16_TLUT_NEN(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_I4_TLUT_EN0(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_I4_TLUT_EN1(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_I4_TLUT_NEN(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_I8_TLUT_EN0(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_I8_TLUT_EN1(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_I8_TLUT_NEN(COLOR *color, int s, int t);
INLINE void FETCH_TEXEL_INVALID(COLOR *color, int s, int t);
static void (*rdp_fetch_texel_func[128])(COLOR*, int, int) =
{
// 4-bit accessors
FETCH_TEXEL_RGBA4_TLUT_NEN, FETCH_TEXEL_RGBA4_TLUT_NEN, FETCH_TEXEL_RGBA4_TLUT_EN0, FETCH_TEXEL_RGBA4_TLUT_EN1,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_CI4_TLUT_NEN, FETCH_TEXEL_CI4_TLUT_NEN, FETCH_TEXEL_CI4_TLUT_EN0, FETCH_TEXEL_CI4_TLUT_EN1,
FETCH_TEXEL_IA4_TLUT_NEN, FETCH_TEXEL_IA4_TLUT_NEN, FETCH_TEXEL_IA4_TLUT_EN0, FETCH_TEXEL_IA4_TLUT_EN1,
FETCH_TEXEL_I4_TLUT_NEN, FETCH_TEXEL_I4_TLUT_NEN, FETCH_TEXEL_I4_TLUT_EN0, FETCH_TEXEL_I4_TLUT_EN1,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
// 8-bit accessors
FETCH_TEXEL_RGBA8_TLUT_NEN, FETCH_TEXEL_RGBA8_TLUT_NEN, FETCH_TEXEL_RGBA8_TLUT_EN0, FETCH_TEXEL_RGBA8_TLUT_EN1,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_CI8_TLUT_NEN, FETCH_TEXEL_CI8_TLUT_NEN, FETCH_TEXEL_CI8_TLUT_EN0, FETCH_TEXEL_CI8_TLUT_EN1,
FETCH_TEXEL_IA8_TLUT_NEN, FETCH_TEXEL_IA8_TLUT_NEN, FETCH_TEXEL_IA8_TLUT_EN0, FETCH_TEXEL_IA8_TLUT_EN1,
FETCH_TEXEL_I8_TLUT_NEN, FETCH_TEXEL_I8_TLUT_NEN, FETCH_TEXEL_I8_TLUT_EN0, FETCH_TEXEL_I8_TLUT_EN1,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
// 16-bit accessors
FETCH_TEXEL_RGBA16_TLUT_NEN,FETCH_TEXEL_RGBA16_TLUT_NEN,FETCH_TEXEL_RGBA16_TLUT_EN0,FETCH_TEXEL_RGBA16_TLUT_EN1,
FETCH_TEXEL_YUV16, FETCH_TEXEL_YUV16, FETCH_TEXEL_YUV16, FETCH_TEXEL_YUV16,
FETCH_TEXEL_CI16_TLUT_NEN, FETCH_TEXEL_CI16_TLUT_NEN, FETCH_TEXEL_CI16_TLUT_EN0, FETCH_TEXEL_CI16_TLUT_EN1,
FETCH_TEXEL_IA16_TLUT_NEN, FETCH_TEXEL_IA16_TLUT_NEN, FETCH_TEXEL_IA16_TLUT_EN0, FETCH_TEXEL_IA16_TLUT_EN1,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
// 32-bit accessors
FETCH_TEXEL_RGBA32_TLUT_NEN,FETCH_TEXEL_RGBA32_TLUT_NEN,FETCH_TEXEL_RGBA32_TLUT_EN0,FETCH_TEXEL_RGBA32_TLUT_EN1,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID, FETCH_TEXEL_INVALID,
};

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,202 @@
static void render_spans_16_c1(running_machine *machine, int start, int end, TILE* tex_tile, int shade, int texture, int zbuffer, int flip); INLINE void render_spans_16_c1_ns_nt_nz_nf_nzc(int start, int end, TILE* tex_tile);
static void render_spans_16_c2(running_machine *machine, int start, int end, TILE* tex_tile, int shade, int texture, int zbuffer, int flip); INLINE void render_spans_16_c2_ns_nt_nz_nf_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_nt_z_nf_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_nt_z_nf_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_nz_nf_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_nz_nf_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_z_nf_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_z_nf_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_nz_nf_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_nz_nf_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_z_nf_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_z_nf_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_nz_nf_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_nz_nf_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_z_nf_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_z_nf_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_nt_nz_f_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_nt_nz_f_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_nt_z_f_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_nt_z_f_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_nz_f_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_nz_f_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_z_f_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_z_f_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_nz_f_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_nz_f_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_z_f_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_z_f_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_nz_f_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_nz_f_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_z_f_nzc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_z_f_nzc(int start, int end, TILE* tex_tile);
static void (*rdp_render_spans_16_func[4])(running_machine*, int, int, TILE*, int, int, int, int) = INLINE void render_spans_16_c1_ns_nt_nz_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_nt_nz_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_nt_z_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_nt_z_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_nz_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_nz_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_z_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_z_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_nz_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_nz_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_z_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_z_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_nz_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_nz_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_z_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_z_nf_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_nt_nz_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_nt_nz_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_nt_z_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_nt_z_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_nz_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_nz_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_z_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_z_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_nz_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_nz_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_z_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_z_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_nz_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_nz_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_z_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_z_f_zc(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_nt_nz_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_nt_nz_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_nt_z_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_nt_z_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_nz_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_nz_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_z_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_z_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_nz_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_nz_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_z_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_z_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_nz_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_nz_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_z_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_z_nf_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_nt_nz_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_nt_nz_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_nt_z_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_nt_z_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_nz_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_nz_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_z_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_z_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_nz_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_nz_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_z_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_z_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_nz_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_nz_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_z_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_z_f_nzc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_nt_nz_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_nt_nz_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_nt_z_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_nt_z_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_nz_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_nz_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_z_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_z_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_nz_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_nz_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_z_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_z_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_nz_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_nz_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_z_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_z_nf_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_nt_nz_f_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_nt_nz_f_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_nt_z_f_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_nt_z_f_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_nz_f_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_nz_f_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_ns_t_z_f_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_ns_t_z_f_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_nz_f_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_nz_f_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_nt_z_f_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_nt_z_f_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_nz_f_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_nz_f_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c1_s_t_z_f_zc_zu(int start, int end, TILE* tex_tile);
INLINE void render_spans_16_c2_s_t_z_f_zc_zu(int start, int end, TILE* tex_tile);
static void (*rdp_render_spans_16_func[128])(int, int, TILE*) =
{ {
render_spans_16_c1, render_spans_16_c2, render_spans_16_c1, render_spans_16_c1 render_spans_16_c1_ns_nt_nz_nf_nzc, render_spans_16_c2_ns_nt_nz_nf_nzc,
render_spans_16_c1_ns_nt_z_nf_nzc, render_spans_16_c2_ns_nt_z_nf_nzc,
render_spans_16_c1_ns_t_nz_nf_nzc, render_spans_16_c2_ns_t_nz_nf_nzc,
render_spans_16_c1_ns_t_z_nf_nzc, render_spans_16_c2_ns_t_z_nf_nzc,
render_spans_16_c1_s_nt_nz_nf_nzc, render_spans_16_c2_s_nt_nz_nf_nzc,
render_spans_16_c1_s_nt_z_nf_nzc, render_spans_16_c2_s_nt_z_nf_nzc,
render_spans_16_c1_s_t_nz_nf_nzc, render_spans_16_c2_s_t_nz_nf_nzc,
render_spans_16_c1_s_t_z_nf_nzc, render_spans_16_c2_s_t_z_nf_nzc,
render_spans_16_c1_ns_nt_nz_f_nzc, render_spans_16_c2_ns_nt_nz_f_nzc,
render_spans_16_c1_ns_nt_z_f_nzc, render_spans_16_c2_ns_nt_z_f_nzc,
render_spans_16_c1_ns_t_nz_f_nzc, render_spans_16_c2_ns_t_nz_f_nzc,
render_spans_16_c1_ns_t_z_f_nzc, render_spans_16_c2_ns_t_z_f_nzc,
render_spans_16_c1_s_nt_nz_f_nzc, render_spans_16_c2_s_nt_nz_f_nzc,
render_spans_16_c1_s_nt_z_f_nzc, render_spans_16_c2_s_nt_z_f_nzc,
render_spans_16_c1_s_t_nz_f_nzc, render_spans_16_c2_s_t_nz_f_nzc,
render_spans_16_c1_s_t_z_f_nzc, render_spans_16_c2_s_t_z_f_nzc,
render_spans_16_c1_ns_nt_nz_nf_zc, render_spans_16_c2_ns_nt_nz_nf_zc,
render_spans_16_c1_ns_nt_z_nf_zc, render_spans_16_c2_ns_nt_z_nf_zc,
render_spans_16_c1_ns_t_nz_nf_zc, render_spans_16_c2_ns_t_nz_nf_zc,
render_spans_16_c1_ns_t_z_nf_zc, render_spans_16_c2_ns_t_z_nf_zc,
render_spans_16_c1_s_nt_nz_nf_zc, render_spans_16_c2_s_nt_nz_nf_zc,
render_spans_16_c1_s_nt_z_nf_zc, render_spans_16_c2_s_nt_z_nf_zc,
render_spans_16_c1_s_t_nz_nf_zc, render_spans_16_c2_s_t_nz_nf_zc,
render_spans_16_c1_s_t_z_nf_zc, render_spans_16_c2_s_t_z_nf_zc,
render_spans_16_c1_ns_nt_nz_f_zc, render_spans_16_c2_ns_nt_nz_f_zc,
render_spans_16_c1_ns_nt_z_f_zc, render_spans_16_c2_ns_nt_z_f_zc,
render_spans_16_c1_ns_t_nz_f_zc, render_spans_16_c2_ns_t_nz_f_zc,
render_spans_16_c1_ns_t_z_f_zc, render_spans_16_c2_ns_t_z_f_zc,
render_spans_16_c1_s_nt_nz_f_zc, render_spans_16_c2_s_nt_nz_f_zc,
render_spans_16_c1_s_nt_z_f_zc, render_spans_16_c2_s_nt_z_f_zc,
render_spans_16_c1_s_t_nz_f_zc, render_spans_16_c2_s_t_nz_f_zc,
render_spans_16_c1_s_t_z_f_zc, render_spans_16_c2_s_t_z_f_zc,
render_spans_16_c1_ns_nt_nz_nf_nzc_zu, render_spans_16_c2_ns_nt_nz_nf_nzc_zu,
render_spans_16_c1_ns_nt_z_nf_nzc_zu, render_spans_16_c2_ns_nt_z_nf_nzc_zu,
render_spans_16_c1_ns_t_nz_nf_nzc_zu, render_spans_16_c2_ns_t_nz_nf_nzc_zu,
render_spans_16_c1_ns_t_z_nf_nzc_zu, render_spans_16_c2_ns_t_z_nf_nzc_zu,
render_spans_16_c1_s_nt_nz_nf_nzc_zu, render_spans_16_c2_s_nt_nz_nf_nzc_zu,
render_spans_16_c1_s_nt_z_nf_nzc_zu, render_spans_16_c2_s_nt_z_nf_nzc_zu,
render_spans_16_c1_s_t_nz_nf_nzc_zu, render_spans_16_c2_s_t_nz_nf_nzc_zu,
render_spans_16_c1_s_t_z_nf_nzc_zu, render_spans_16_c2_s_t_z_nf_nzc_zu,
render_spans_16_c1_ns_nt_nz_f_nzc_zu, render_spans_16_c2_ns_nt_nz_f_nzc_zu,
render_spans_16_c1_ns_nt_z_f_nzc_zu, render_spans_16_c2_ns_nt_z_f_nzc_zu,
render_spans_16_c1_ns_t_nz_f_nzc_zu, render_spans_16_c2_ns_t_nz_f_nzc_zu,
render_spans_16_c1_ns_t_z_f_nzc_zu, render_spans_16_c2_ns_t_z_f_nzc_zu,
render_spans_16_c1_s_nt_nz_f_nzc_zu, render_spans_16_c2_s_nt_nz_f_nzc_zu,
render_spans_16_c1_s_nt_z_f_nzc_zu, render_spans_16_c2_s_nt_z_f_nzc_zu,
render_spans_16_c1_s_t_nz_f_nzc_zu, render_spans_16_c2_s_t_nz_f_nzc_zu,
render_spans_16_c1_s_t_z_f_nzc_zu, render_spans_16_c2_s_t_z_f_nzc_zu,
render_spans_16_c1_ns_nt_nz_nf_zc_zu, render_spans_16_c2_ns_nt_nz_nf_zc_zu,
render_spans_16_c1_ns_nt_z_nf_zc_zu, render_spans_16_c2_ns_nt_z_nf_zc_zu,
render_spans_16_c1_ns_t_nz_nf_zc_zu, render_spans_16_c2_ns_t_nz_nf_zc_zu,
render_spans_16_c1_ns_t_z_nf_zc_zu, render_spans_16_c2_ns_t_z_nf_zc_zu,
render_spans_16_c1_s_nt_nz_nf_zc_zu, render_spans_16_c2_s_nt_nz_nf_zc_zu,
render_spans_16_c1_s_nt_z_nf_zc_zu, render_spans_16_c2_s_nt_z_nf_zc_zu,
render_spans_16_c1_s_t_nz_nf_zc_zu, render_spans_16_c2_s_t_nz_nf_zc_zu,
render_spans_16_c1_s_t_z_nf_zc_zu, render_spans_16_c2_s_t_z_nf_zc_zu,
render_spans_16_c1_ns_nt_nz_f_zc_zu, render_spans_16_c2_ns_nt_nz_f_zc_zu,
render_spans_16_c1_ns_nt_z_f_zc_zu, render_spans_16_c2_ns_nt_z_f_zc_zu,
render_spans_16_c1_ns_t_nz_f_zc_zu, render_spans_16_c2_ns_t_nz_f_zc_zu,
render_spans_16_c1_ns_t_z_f_zc_zu, render_spans_16_c2_ns_t_z_f_zc_zu,
render_spans_16_c1_s_nt_nz_f_zc_zu, render_spans_16_c2_s_nt_nz_f_zc_zu,
render_spans_16_c1_s_nt_z_f_zc_zu, render_spans_16_c2_s_nt_z_f_zc_zu,
render_spans_16_c1_s_t_nz_f_zc_zu, render_spans_16_c2_s_t_nz_f_zc_zu,
render_spans_16_c1_s_t_z_f_zc_zu, render_spans_16_c2_s_t_z_f_zc_zu,
}; };

View File

@ -45,30 +45,12 @@ INLINE void TEXTURE_PIPELINE_BILINEAR_NMID(COLOR* TEX, INT32 SSS, INT32 SST, TIL
INVTF = 0x20 - TFRAC; INVTF = 0x20 - TFRAC;
} }
FETCH_TEXEL(&t1, sss2, sst1, tex_tile);
FETCH_TEXEL(&t2, sss1, sst2, tex_tile);
if (!upper) if (!upper)
{ {
FETCH_TEXEL(&t0, sss1, sst1, tex_tile); FETCH_TEXEL(&t0, sss1, sst1, tex_tile);
}
FETCH_TEXEL(&t1, sss2, sst1, tex_tile);
FETCH_TEXEL(&t2, sss1, sst2, tex_tile);
if (upper)
{
FETCH_TEXEL(&t3, sss2, sst2, tex_tile);
}
if (upper)
{
R32 = t3.i.r + ((INVSF*(t2.i.r - t3.i.r))>>5) + ((INVTF*(t1.i.r - t3.i.r))>>5);
TEX->i.r = (R32 < 0) ? 0 : R32;
G32 = t3.i.g + ((INVSF*(t2.i.g - t3.i.g))>>5) + ((INVTF*(t1.i.g - t3.i.g))>>5);
TEX->i.g = (G32 < 0) ? 0 : G32;
B32 = t3.i.b + ((INVSF*(t2.i.b - t3.i.b))>>5) + ((INVTF*(t1.i.b - t3.i.b))>>5);
TEX->i.b = (B32 < 0) ? 0 : B32;
A32 = t3.i.a + ((INVSF*(t2.i.a - t3.i.a))>>5) + ((INVTF*(t1.i.a - t3.i.a))>>5);
TEX->i.a = (A32 < 0) ? 0 : A32;
}
else
{
R32 = t0.i.r + ((SFRAC*(t1.i.r - t0.i.r))>>5) + ((TFRAC*(t2.i.r - t0.i.r))>>5); R32 = t0.i.r + ((SFRAC*(t1.i.r - t0.i.r))>>5) + ((TFRAC*(t2.i.r - t0.i.r))>>5);
TEX->i.r = (R32 < 0) ? 0 : R32; TEX->i.r = (R32 < 0) ? 0 : R32;
G32 = t0.i.g + ((SFRAC*(t1.i.g - t0.i.g))>>5) + ((TFRAC*(t2.i.g - t0.i.g))>>5); G32 = t0.i.g + ((SFRAC*(t1.i.g - t0.i.g))>>5) + ((TFRAC*(t2.i.g - t0.i.g))>>5);
@ -78,6 +60,18 @@ INLINE void TEXTURE_PIPELINE_BILINEAR_NMID(COLOR* TEX, INT32 SSS, INT32 SST, TIL
A32 = t0.i.a + ((SFRAC*(t1.i.a - t0.i.a))>>5) + ((TFRAC*(t2.i.a - t0.i.a))>>5); A32 = t0.i.a + ((SFRAC*(t1.i.a - t0.i.a))>>5) + ((TFRAC*(t2.i.a - t0.i.a))>>5);
TEX->i.a = (A32 < 0) ? 0 : A32; TEX->i.a = (A32 < 0) ? 0 : A32;
} }
else
{
FETCH_TEXEL(&t3, sss2, sst2, tex_tile);
R32 = t3.i.r + ((INVSF*(t2.i.r - t3.i.r))>>5) + ((INVTF*(t1.i.r - t3.i.r))>>5);
TEX->i.r = (R32 < 0) ? 0 : R32;
G32 = t3.i.g + ((INVSF*(t2.i.g - t3.i.g))>>5) + ((INVTF*(t1.i.g - t3.i.g))>>5);
TEX->i.g = (G32 < 0) ? 0 : G32;
B32 = t3.i.b + ((INVSF*(t2.i.b - t3.i.b))>>5) + ((INVTF*(t1.i.b - t3.i.b))>>5);
TEX->i.b = (B32 < 0) ? 0 : B32;
A32 = t3.i.a + ((INVSF*(t2.i.a - t3.i.a))>>5) + ((INVTF*(t1.i.a - t3.i.a))>>5);
TEX->i.a = (A32 < 0) ? 0 : A32;
}
} }
INLINE void TEXTURE_PIPELINE_BILINEAR_MID(COLOR* TEX, INT32 SSS, INT32 SST, TILE* tex_tile) INLINE void TEXTURE_PIPELINE_BILINEAR_MID(COLOR* TEX, INT32 SSS, INT32 SST, TILE* tex_tile)

File diff suppressed because it is too large Load Diff

View File

@ -1,41 +1,69 @@
static void texture_rectangle_16bit_c1_nzc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c1_nzc_nzu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c2_nzc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c1_nzc_nzu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cc_nzc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c1_nzc_nzu_dn(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cf_nzc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c2_nzc_nzu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c1_zc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c2_nzc_nzu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c2_zc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c2_nzc_nzu_dn(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cc_zc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_cc_nzc_nzu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cf_zc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_cc_nzc_nzu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c1_nzc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_cc_nzc_nzu_dn(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c2_nzc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_cf_nzc_nzu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cc_nzc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_cf_nzc_nzu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cf_nzc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_cf_nzc_nzu_dn(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c1_zc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c1_zc_nzu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c2_zc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c1_zc_nzu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cc_zc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c1_zc_nzu_dn(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cf_zc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c2_zc_nzu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c1_nzc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c2_zc_nzu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c2_nzc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c2_zc_nzu_dn(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cc_nzc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_cc_zc_nzu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cf_nzc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_cc_zc_nzu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c1_zc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_cc_zc_nzu_dn(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c2_zc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_cf_zc_nzu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cc_zc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_cf_zc_nzu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cf_zc_nzu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_cf_zc_nzu_dn(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c1_nzc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c1_nzc_zu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c2_nzc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c1_nzc_zu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cc_nzc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c1_nzc_zu_dn(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cf_nzc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c2_nzc_zu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c1_zc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c2_nzc_zu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c2_zc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_c2_nzc_zu_dn(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cc_zc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_cc_nzc_zu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cf_zc_zu(running_machine *machine, TEX_RECTANGLE *rect); static void texture_rectangle_16bit_cc_nzc_zu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cc_nzc_zu_dn(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cf_nzc_zu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cf_nzc_zu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cf_nzc_zu_dn(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c1_zc_zu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c1_zc_zu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c1_zc_zu_dn(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c2_zc_zu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c2_zc_zu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_c2_zc_zu_dn(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cc_zc_zu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cc_zc_zu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cc_zc_zu_dn(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cf_zc_zu_dm(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cf_zc_zu_db(TEX_RECTANGLE *rect);
static void texture_rectangle_16bit_cf_zc_zu_dn(TEX_RECTANGLE *rect);
static void (*rdp_texture_rectangle_16bit_func[16])(running_machine *, TEX_RECTANGLE *) = static void (*rdp_texture_rectangle_16bit_func[48])(TEX_RECTANGLE *) =
{ {
texture_rectangle_16bit_c1_nzc_nzu, texture_rectangle_16bit_c2_nzc_nzu, texture_rectangle_16bit_cc_nzc_nzu, texture_rectangle_16bit_cf_nzc_nzu, texture_rectangle_16bit_c1_nzc_nzu_dm, texture_rectangle_16bit_c1_nzc_nzu_db, texture_rectangle_16bit_c1_nzc_nzu_dn,
texture_rectangle_16bit_c1_zc_nzu, texture_rectangle_16bit_c2_zc_nzu, texture_rectangle_16bit_cc_zc_nzu, texture_rectangle_16bit_cf_zc_nzu, texture_rectangle_16bit_c2_nzc_nzu_dm, texture_rectangle_16bit_c2_nzc_nzu_db, texture_rectangle_16bit_c2_nzc_nzu_dn,
texture_rectangle_16bit_c1_nzc_zu, texture_rectangle_16bit_c2_nzc_zu, texture_rectangle_16bit_cc_nzc_zu, texture_rectangle_16bit_cf_nzc_zu, texture_rectangle_16bit_cc_nzc_nzu_dm, texture_rectangle_16bit_cc_nzc_nzu_db, texture_rectangle_16bit_cc_nzc_nzu_dn,
texture_rectangle_16bit_c1_zc_zu, texture_rectangle_16bit_c2_zc_zu, texture_rectangle_16bit_cc_zc_zu, texture_rectangle_16bit_cf_zc_zu, texture_rectangle_16bit_cf_nzc_nzu_dm, texture_rectangle_16bit_cf_nzc_nzu_db, texture_rectangle_16bit_cf_nzc_nzu_dn,
texture_rectangle_16bit_c1_zc_nzu_dm, texture_rectangle_16bit_c1_zc_nzu_db, texture_rectangle_16bit_c1_zc_nzu_dn,
texture_rectangle_16bit_c2_zc_nzu_dm, texture_rectangle_16bit_c2_zc_nzu_db, texture_rectangle_16bit_c2_zc_nzu_dn,
texture_rectangle_16bit_cc_zc_nzu_dm, texture_rectangle_16bit_cc_zc_nzu_db, texture_rectangle_16bit_cc_zc_nzu_dn,
texture_rectangle_16bit_cf_zc_nzu_dm, texture_rectangle_16bit_cf_zc_nzu_db, texture_rectangle_16bit_cf_zc_nzu_dn,
texture_rectangle_16bit_c1_nzc_zu_dm, texture_rectangle_16bit_c1_nzc_zu_db, texture_rectangle_16bit_c1_nzc_zu_dn,
texture_rectangle_16bit_c2_nzc_zu_dm, texture_rectangle_16bit_c2_nzc_zu_db, texture_rectangle_16bit_c2_nzc_zu_dn,
texture_rectangle_16bit_cc_nzc_zu_dm, texture_rectangle_16bit_cc_nzc_zu_db, texture_rectangle_16bit_cc_nzc_zu_dn,
texture_rectangle_16bit_cf_nzc_zu_dm, texture_rectangle_16bit_cf_nzc_zu_db, texture_rectangle_16bit_cf_nzc_zu_dn,
texture_rectangle_16bit_c1_zc_zu_dm, texture_rectangle_16bit_c1_zc_zu_db, texture_rectangle_16bit_c1_zc_zu_dn,
texture_rectangle_16bit_c2_zc_zu_dm, texture_rectangle_16bit_c2_zc_zu_db, texture_rectangle_16bit_c2_zc_zu_dn,
texture_rectangle_16bit_cc_zc_zu_dm, texture_rectangle_16bit_cc_zc_zu_db, texture_rectangle_16bit_cc_zc_zu_dn,
texture_rectangle_16bit_cf_zc_zu_dm, texture_rectangle_16bit_cf_zc_zu_db, texture_rectangle_16bit_cf_zc_zu_dn,
}; };

2775
src/mame/video/rdptri.c Normal file

File diff suppressed because it is too large Load Diff

8
src/mame/video/rdptri.h Normal file
View File

@ -0,0 +1,8 @@
static void triangle_ns_nt_nz(UINT32 w1, UINT32 w2);
static void triangle_ns_nt_z(UINT32 w1, UINT32 w2);
static void triangle_ns_t_nz(UINT32 w1, UINT32 w2);
static void triangle_ns_t_z(UINT32 w1, UINT32 w2);
static void triangle_s_nt_nz(UINT32 w1, UINT32 w2);
static void triangle_s_nt_z(UINT32 w1, UINT32 w2);
static void triangle_s_t_nz(UINT32 w1, UINT32 w2);
static void triangle_s_t_z(UINT32 w1, UINT32 w2);