X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=plugins%2Fdfxvideo%2Fsoft.c;h=c1c3beff6e711367aa1b3a7935e418a65eb78980;hp=1b246248b7bdd5c5e08f39b5164fc541529f4c6f;hb=28e4cc07117508ff10e13647490bfeb442d5667f;hpb=a48f14785ecc79b1ffe9dc51131d9b9aca1c7f2f diff --git a/plugins/dfxvideo/soft.c b/plugins/dfxvideo/soft.c index 1b246248..c1c3beff 100644 --- a/plugins/dfxvideo/soft.c +++ b/plugins/dfxvideo/soft.c @@ -1077,7 +1077,7 @@ static int left_B, delta_left_B, right_B, delta_right_B; // 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; @@ -7092,7 +7092,7 @@ static void DrawSoftwareLineShade(int32_t rgb0, int32_t rgb1) { 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; @@ -7142,17 +7142,15 @@ static void DrawSoftwareLineShade(int32_t rgb0, int32_t rgb1) 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); @@ -7164,7 +7162,7 @@ static void DrawSoftwareLineShade(int32_t rgb0, int32_t 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; @@ -7216,17 +7214,15 @@ static void DrawSoftwareLineFlat(int32_t rgb) 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);