OSDN Git Service

[Draw][Agar] Make right byte orders on rendering.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Thu, 8 Jan 2015 11:52:49 +0000 (20:52 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Thu, 8 Jan 2015 11:52:49 +0000 (20:52 +0900)
source/src/agar/common/scaler/generic/scaler_x1.c
source/src/agar/common/scaler/sse2/scaler_x1_sse2.c
source/src/common.h

index 5e6c9aa..4bcf209 100644 (file)
@@ -51,9 +51,8 @@ void pVram2RGB_x1_Line(Uint32 *src, Uint8 *dst, int xbegin, int xend, int y, int
    { // Not thinking align ;-(
        
     int j;
-    v4hi b2;
-    v4hi b3;
     register v4hi bb;
+    v4hi r1, r2, r3, r4;
     v4hi *b2p;
     Uint32 *d0;
       
@@ -65,12 +64,11 @@ void pVram2RGB_x1_Line(Uint32 *src, Uint8 *dst, int xbegin, int xend, int y, int
 //     case 2:
          for(xx = 0; xx < ww; xx += 8) {
             b2p = (v4hi *)d1;
-            b2 = b[0];
-            b3 = b[1];
-            b2.vv = b2.vv | bb.vv;
-            b3.vv = b3.vv | bb.vv;
-            b2p[0] = b2;
-            b2p[1] = b3;
+            r1 = b[0];
+            r2 = b[1];
+
+            b2p[0] = r1;
+            b2p[1] = r2;
             d1 += 8;
             b += 2;
          }
@@ -79,18 +77,16 @@ void pVram2RGB_x1_Line(Uint32 *src, Uint8 *dst, int xbegin, int xend, int y, int
          d0 = d1;
          for(xx = 0; xx < ww; xx += 8){
             d1 = d0;
-            b2 = b[0];
-            b3 = b[1];
-            b2.vv = b2.vv | bb.vv;
-            b3.vv = b3.vv | bb.vv;
+            r1 = b[0];
+            r2 = b[1];
             for(j = 0; j < yrep2; j++) {
                b2p = (v4hi *)d1;
                if(!bFullScan && (j >= (yrep2 >> 1))) {
                   b2p[0] = 
                   b2p[1] = bb;
                 } else {
-                  b2p[0] = b2;
-                  b2p[1] = b3;
+                  b2p[0] = r1;
+                  b2p[1] = r2;
                }
                d1 += pitch;
             }
index 9fa3a3f..10189f0 100644 (file)
@@ -23,7 +23,7 @@ static void Scaler_DrawLine(v4hi *dst, Uint32 *src, int ww, int repeat, int pitc
    int yrep3;
    int blank;
    register v4hi *b2p;
-   register v4hi r1, r2;
+   register v4hi r1, r2, r3, r4;
    v4hi *d0;
    register v4hi *b;
    register v4hi bb2;
@@ -45,8 +45,9 @@ static void Scaler_DrawLine(v4hi *dst, Uint32 *src, int ww, int repeat, int pitc
            b2p = dst;
            r1 = b[0];
            r2 = b[1];
-           r1.vv = r1.vv | bb2.vv;
-           r2.vv = r2.vv | bb2.vv;
+
+           //r1.vv = r1.vv | bb2.vv;
+           //r2.vv = r2.vv | bb2.vv;
            for(yy = 0; yy < repeat; yy++) {
               b2p[0] = r1;
               b2p[1] = r2;
@@ -60,8 +61,9 @@ static void Scaler_DrawLine(v4hi *dst, Uint32 *src, int ww, int repeat, int pitc
            b2p = dst;
            r1 = b[0];
            r2 = b[1];
-           r1.vv = r1.vv | bb2.vv;
-           r2.vv = r2.vv | bb2.vv;
+           //r1.vv = r1.vv | bb2.vv;
+           //r2.vv = r2.vv | bb2.vv;
+           
            b2p[0] = r1;
            b2p[1] = r2;
            dst += 2;
@@ -73,8 +75,8 @@ static void Scaler_DrawLine(v4hi *dst, Uint32 *src, int ww, int repeat, int pitc
         b2p = dst;
         r1 = b[0];
         r2 = b[1];
-        r2.vv = r2.vv | bb2.vv;
-        r2.vv = r2.vv | bb2.vv;
+        //r1.vv = r1.vv | bb2.vv;
+        //r2.vv = r2.vv | bb2.vv;
         for(yy = 0; yy < repeat - 1; yy++) {
            b2p[0] = r1;
            b2p[1] = r2;
index 310f25f..b5b812a 100644 (file)
@@ -283,9 +283,49 @@ typedef union {
 } pair;\r
 \r
 // rgb color\r
-#define _RGB888\r
+//#define _RGB888\r
+#define _RGBA888\r
 \r
-#if defined(_RGB555)\r
+#if defined(_USE_SDL) || defined(_USE_AGAR)\r
+\r
+# if AG_BYTEORDER == AG_BIG_ENDIAN\r
+# if defined(_RGB555)\r
+//#define RGB_COLOR(r, g, b) ((uint16)(((uint16)(b) & 0xf8) << 7) | (uint16)(((uint16)(g) & 0xf8) << 2) | (uint16)(((uint16)(r) & 0xf8) >> 3))\r
+#  define RGB_COLOR(r, g, b) ((uint16)(((uint16)(b) & 0xf8) >>4) | (uint16)(((uint16)(g) & 0xf8) << 2) | (uint16)(((uint16)(r) & 0xf8) << 8))\r
+typedef uint16 scrntype;\r
+# elif defined(_RGB565)\r
+//#define RGB_COLOR(r, g, b) ((uint16)(((uint16)(b) & 0xf8) << 8) | (uint16)(((uint16)(g) & 0xfc) << 3) | (uint16)(((uint16)(r) & 0xf8) >> 3))\r
+#  define RGB_COLOR(r, g, b) ((uint16)(((uint16)(b) & 0xf8) >>3) | (uint16)(((uint16)(g) & 0xfc) << 2) | (uint16)(((uint16)(r) & 0xf8) << 8))\r
+typedef uint16 scrntype;\r
+# elif defined(_RGB888) \r
+#  define RGB_COLOR(r, g, b) (((uint32)(r) << 24) | ((uint32)(g) << 16) | ((uint32)(b) << 8))\r
+typedef uint32 scrntype;\r
+# elif defined(_RGBA888) \r
+#  define RGB_COLOR(r, g, b) (((uint32)(r) << 24) | ((uint32)(g) << 16) | ((uint32)(b) << 8)) | ((uint32)0xff << 0)\r
+typedef uint32 scrntype;\r
+# endif\r
+\r
+#else // LITTLE ENDIAN\r
+\r
+# if defined(_RGB555)\r
+#  define RGB_COLOR(r, g, b) ((uint16)(((uint16)(b) & 0xf8) << 7) | (uint16)(((uint16)(g) & 0xf8) << 2) | (uint16)(((uint16)(r) & 0xf8) >> 3))\r
+typedef uint16 scrntype;\r
+# elif defined(_RGB565)\r
+#  define RGB_COLOR(r, g, b) ((uint16)(((uint16)(b) & 0xf8) << 8) | (uint16)(((uint16)(g) & 0xfc) << 3) | (uint16)(((uint16)(r) & 0xf8) >> 3))\r
+typedef uint16 scrntype;\r
+# elif defined(_RGB888)\r
+#  define RGB_COLOR(r, g, b) (((uint32)(r) << 0) | ((uint32)(g) << 8) | ((uint32)(b) << 16))\r
+typedef uint32 scrntype;\r
+# elif defined(_RGBA888)\r
+#  define RGB_COLOR(r, g, b) (((uint32)(r) << 0) | ((uint32)(g) << 8) | ((uint32)(b) << 16)) | ((uint32)0xff << 24)\r
+typedef uint32 scrntype;\r
+# endif\r
+\r
+#endif  // ENDIAN\r
+\r
+#else // NOT USE AGAR\r
+\r
+# if defined(_RGB555)\r
 #define RGB_COLOR(r, g, b) ((uint16)(((uint16)(r) & 0xf8) << 7) | (uint16)(((uint16)(g) & 0xf8) << 2) | (uint16)(((uint16)(b) & 0xf8) >> 3))\r
 typedef uint16 scrntype;\r
 #elif defined(_RGB565)\r
@@ -294,8 +334,14 @@ typedef uint16 scrntype;
 #elif defined(_RGB888)\r
 #define RGB_COLOR(r, g, b) (((uint32)(r) << 16) | ((uint32)(g) << 8) | ((uint32)(b) << 0))\r
 typedef uint32 scrntype;\r
+#elif defined(_RGBA888)\r
+#define RGB_COLOR(r, g, b) (((uint32)(r) << 16) | ((uint32)(g) << 8) | ((uint32)(b) << 0)) | ((uint32)0xff << 24)\r
+typedef uint32 scrntype;\r
+#endif\r
+\r
 #endif\r
 \r
+#if defined(_USE_SDL) || defined(_USE_AGAR)\r
 // misc\r
 #ifdef __cplusplus\r
 bool check_file_extension(_TCHAR* file_path, _TCHAR* ext);\r
@@ -327,4 +373,6 @@ typedef struct cur_time_t {
 } cur_time_t;\r
 #endif\r
 \r
+#endif\r
+\r
 #endif
\ No newline at end of file