improved the xor effect slightly
authorJohn Tsiombikas <nuclear@member.fsf.org>
Thu, 20 May 2021 12:47:06 +0000 (15:47 +0300)
committerJohn Tsiombikas <nuclear@member.fsf.org>
Thu, 20 May 2021 12:47:06 +0000 (15:47 +0300)
src/rbench.c
src/util.h
tools/lutgen.c

index 8b9e23f..34a26c6 100644 (file)
@@ -31,9 +31,9 @@ void cleanup(void)
 {
 }
 
-#define XORRGB(x, y, zoom, r, g, b) \
+#define XORRGB(x, y, dx, dy, zoom, r, g, b) \
        do { \
-               int xor = (((x) - fb_width/2) * (zoom) >> 16) ^ (((y) - fb_height/2) * (zoom) >> 16); \
+               int xor = ((((x) - fb_width/2) * (zoom) >> 16) + (dx)) ^ ((((y) - fb_height/2) * (zoom) >> 16) + (dy)); \
                (r) = xor >> 2; \
                (g) = xor >> 1; \
                (b) = xor; \
@@ -46,9 +46,9 @@ void redraw(void)
        uint16_t *fbptr16;
        uint32_t *fbptr32;
 
-       xoffs = COS(time_msec >> 3) * fb_width >> 15;
-       yoffs = SIN(time_msec >> 2) * fb_height >> 16;
-       zoom = (SIN(time_msec >> 5) >> 1) + 65536;
+       xoffs = COS(time_msec >> 2) * fb_width >> 14;
+       yoffs = SIN(time_msec >> 1) * fb_height >> 15;
+       zoom = (SIN(time_msec >> 3) << 1) + 0x18000;
 
        switch(fb_bpp) {
        case 15:
@@ -56,7 +56,7 @@ void redraw(void)
                fbptr16 = framebuf;
                for(i=0; i<fb_height; i++) {
                        for(j=0; j<fb_width; j++) {
-                               XORRGB(j + xoffs, i + yoffs, zoom, r, g, b);
+                               XORRGB(j, i, xoffs, yoffs, zoom, r, g, b);
                                *fbptr16++ = (((r >> 3) << fb_rshift) & fb_rmask) |
                                        (((g >> 2) << fb_gshift) & fb_gmask) |
                                        (((b >> 3) << fb_bshift) & fb_bmask);
@@ -69,7 +69,7 @@ void redraw(void)
                fbptr = framebuf;
                for(i=0; i<fb_height; i++) {
                        for(j=0; j<fb_width; j++) {
-                               XORRGB(j + xoffs, i + yoffs, zoom, r, g, b);
+                               XORRGB(j, i, xoffs, yoffs, zoom, r, g, b);
                                *fbptr++ = r;
                                *fbptr++ = g;
                                *fbptr++ = b;
@@ -82,7 +82,7 @@ void redraw(void)
                fbptr32 = framebuf;
                for(i=0; i<fb_height; i++) {
                        for(j=0; j<fb_width; j++) {
-                               XORRGB(j + xoffs, i + yoffs, zoom, r, g, b);
+                               XORRGB(j, i, xoffs, yoffs, zoom, r, g, b);
                                *fbptr32++ = (((r) << fb_rshift) & fb_rmask) |
                                        (((g) << fb_gshift) & fb_gmask) |
                                        (((b) << fb_bshift) & fb_bmask);
index 69d9d1e..633ccbf 100644 (file)
@@ -35,10 +35,10 @@ typedef unsigned long intptr_t;
         ((x) << 24))
 
 
-extern int sinlut[];
+extern short sinlut[];
 
-#define SIN(x) sinlut[(x) & 0x3ff]
-#define COS(x) sinlut[((x) + 256) & 0x3ff]
+#define SIN(x) (int)sinlut[(x) & 0x7ff]
+#define COS(x) (int)sinlut[((x) + 512) & 0x7ff]
 
 int mask_to_shift(unsigned int mask);
 
index a2cc1ed..65a349f 100644 (file)
@@ -10,9 +10,9 @@ int main(void)
        puts("\t.globl sinlut");
        puts("_sinlut:");
        puts("sinlut:");
-       for(i=0; i<1024; i++) {
-               float x = sin((float)i / 512.0f * M_PI);
-               printf("\t.long %d\n", (int)(x * 65536.0f));
+       for(i=0; i<2048; i++) {
+               float x = sin((float)i / 1024.0f * M_PI);
+               printf("\t.word %d\n", (short)(x * 32767.0f));
        }
        return 0;
 }