// USE_NASM
static inline int shl10idiv(int x, int y)
{
-#ifdef __arm__
+#ifdef __ARM_ARCH_7A__
// rearmed: let's use VFP divider instead
float r = 1024.0f * (float)x / (float)y;
return (int)r;
sprtYa=(sprtY<<10);
clutP=(clutY0<<10)+clutX0;
for (sprCY=0;sprCY<sprtH;sprCY++)
+ {
for (sprCX=0;sprCX<sprtW;sprCX++)
{
tC= psxVub[((textY0+(sprCY*lYDir))<<11) + textX0 +(sprCX*lXDir)];
GetTextureTransColG_SPR(&psxVuw[sprA],GETLE16(&psxVuw[clutP+((tC>>4)&0xf)]));
GetTextureTransColG_SPR(&psxVuw[sprA+1],GETLE16(&psxVuw[clutP+(tC&0xf)]));
}
+ }
return;
case 1:
clutP>>=1;
for(sprCY=0;sprCY<sprtH;sprCY++)
+ {
for(sprCX=0;sprCX<sprtW;sprCX++)
{
tC = psxVub[((textY0+(sprCY*lYDir))<<11)+(GlobalTextAddrX<<1) + textX0 + (sprCX*lXDir)] & 0xff;
GetTextureTransColG_SPR(&psxVuw[((sprtY+sprCY)<<10)+sprtX + sprCX],psxVuw[clutP+tC]);
}
- return;
+ }
+ return;
case 2:
for (sprCY=0;sprCY<sprtH;sprCY++)
+ {
for (sprCX=0;sprCX<sprtW;sprCX++)
{
GetTextureTransColG_SPR(&psxVuw[((sprtY+sprCY)<<10)+sprtX+sprCX],
GETLE16(&psxVuw[((textY0+(sprCY*lYDir))<<10)+GlobalTextAddrX + textX0 +(sprCX*lXDir)]));
}
- return;
+ }
+ return;
}
}
{
short x0, y0, x1, y1, xt, yt;
int32_t rgbt;
- double m, dy, dx;
+ int dy, dx;
if (lx0 > drawW && lx1 > drawW) return;
if (ly0 > drawH && ly1 > drawH) return;
dy = y1 - y0;
}
- m = dy / dx;
-
- if (m >= 0)
+ if ((dx >= 0 && dy >= 0) || (dx < 0 && dy < 0))
{
- if (m > 1)
+ if (abs(dy) > abs(dx))
Line_S_SE_Shade(x0, y0, x1, y1, rgb0, rgb1);
else
Line_E_SE_Shade(x0, y0, x1, y1, rgb0, rgb1);
}
else
- if (m < -1)
+ if (abs(dy) > abs(dx))
Line_N_NE_Shade(x0, y0, x1, y1, rgb0, rgb1);
else
Line_E_NE_Shade(x0, y0, x1, y1, rgb0, rgb1);
static void DrawSoftwareLineFlat(int32_t rgb)
{
short x0, y0, x1, y1, xt, yt;
- double m, dy, dx;
+ int dy, dx;
unsigned short colour = 0;
if (lx0 > drawW && lx1 > drawW) return;
dy = y1 - y0;
}
- m = dy/dx;
-
- if (m >= 0)
+ if ((dx >= 0 && dy >= 0) || (dx < 0 && dy < 0))
{
- if (m > 1)
+ if (abs(dy) > abs(dx))
Line_S_SE_Flat(x0, y0, x1, y1, colour);
else
Line_E_SE_Flat(x0, y0, x1, y1, colour);
}
else
- if (m < -1)
+ if (abs(dy) > abs(dx))
Line_N_NE_Flat(x0, y0, x1, y1, colour);
else
Line_E_NE_Flat(x0, y0, x1, y1, colour);