X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=plugins%2Fdfxvideo%2Fsoft.c;h=70cf50cd2720d9c35800d61e0f82751696b8ea7c;hb=ae097dfb64926c50902b08b681cbf805b98e3751;hp=1b246248b7bdd5c5e08f39b5164fc541529f4c6f;hpb=a48f14785ecc79b1ffe9dc51131d9b9aca1c7f2f;p=pcsx_rearmed.git diff --git a/plugins/dfxvideo/soft.c b/plugins/dfxvideo/soft.c index 1b246248..70cf50cd 100644 --- a/plugins/dfxvideo/soft.c +++ b/plugins/dfxvideo/soft.c @@ -292,7 +292,7 @@ static inline void GetShadeTransCol32(uint32_t * pdest,uint32_t color) { int32_t sr,sb,sg,src,sbc,sgc,c; src=XCOL1(color);sbc=XCOL2(color);sgc=XCOL3(color); - c=GETLE32(pdest)>>16; + c=HIWORD(GETLE32(pdest)); sr=(XCOL1(c))-src; if(sr&0x8000) sr=0; sb=(XCOL2(c))-sbc; if(sb&0x8000) sb=0; sg=(XCOL3(c))-sgc; if(sg&0x8000) sg=0; @@ -327,8 +327,8 @@ static inline void GetShadeTransCol32(uint32_t * pdest,uint32_t color) { uint32_t ma=GETLE32(pdest); PUTLE32(pdest, (X32PSXCOL(r,g,b))|lSetMask);//0x80008000; - if(ma&0x80000000) PUTLE32(pdest, (ma&0xFFFF0000)|(*pdest&0xFFFF)); - if(ma&0x00008000) PUTLE32(pdest, (ma&0xFFFF) |(*pdest&0xFFFF0000)); + if(ma&0x80000000) PUTLE32(pdest, (ma&0xFFFF0000)|(GETLE32(pdest)&0xFFFF)); + if(ma&0x00008000) PUTLE32(pdest, (ma&0xFFFF) |(GETLE32(pdest)&0xFFFF0000)); return; } PUTLE32(pdest, (X32PSXCOL(r,g,b))|lSetMask);//0x80008000; @@ -950,7 +950,7 @@ static void FillSoftwareAreaTrans(short x0,short y0,short x1, // FILL AREA TRANS { static int iCheat=0; col+=iCheat; - if(iCheat==1) iCheat=0; else iCheat=1; + iCheat ^= 1; } @@ -971,7 +971,7 @@ static void FillSoftwareAreaTrans(short x0,short y0,short x1, // FILL AREA TRANS { uint32_t *DSTPtr; unsigned short LineOffset; - uint32_t lcol=lSetMask|(((uint32_t)(col))<<16)|col; + uint32_t lcol = HOST2LE32(lSetMask | (((uint32_t)(col)) << 16) | col); dx>>=1; DSTPtr = (uint32_t *)(psxVuw + (1024*y0) + x0); LineOffset = 512 - dx; @@ -980,7 +980,7 @@ static void FillSoftwareAreaTrans(short x0,short y0,short x1, // FILL AREA TRANS { for(i=0;i>=1; DSTPtr = (uint32_t *)(psxVuw + (1024*y0) + x0); LineOffset = 512 - dx; for(i=0;i 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);