X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Frbench.c;h=8b9e23ffd7da2817c8a669465a9587909e46f905;hb=80662def0bf707ae09de2d48d50156ccd84a24e3;hp=005013c1187bf711993e23353aa7c3f545d9ef57;hpb=dee0f6aebe2faae7f5b05136beec802b20740514;p=retrobench diff --git a/src/rbench.c b/src/rbench.c index 005013c..8b9e23f 100644 --- a/src/rbench.c +++ b/src/rbench.c @@ -1,9 +1,9 @@ #include #include -#include #include #include "rbench.h" #include "treestor.h" +#include "util.h" #define DEF_WIDTH 640 #define DEF_HEIGHT 480 @@ -14,11 +14,16 @@ struct options opt = { }; int fb_width, fb_height, fb_bpp, fb_pitch; +int fb_rshift, fb_gshift, fb_bshift; +unsigned int fb_rmask, fb_gmask, fb_bmask; void *framebuf; unsigned int time_msec; int init(void) { + printf("initialized graphics %dx%d %dbpp\n", fb_width, fb_height, fb_bpp); + printf(" rgb mask: %x %x %x\n", fb_rmask, fb_gmask, fb_bmask); + printf(" rgb shift: %d %d %d\n", fb_rshift, fb_gshift, fb_bshift); return 0; } @@ -28,7 +33,7 @@ void cleanup(void) #define XORRGB(x, y, zoom, r, g, b) \ do { \ - int xor = (((x) - fb_width/2) * (zoom) >> 10) ^ (((y) - fb_height/2) * (zoom) >> 10); \ + int xor = (((x) - fb_width/2) * (zoom) >> 16) ^ (((y) - fb_height/2) * (zoom) >> 16); \ (r) = xor >> 2; \ (g) = xor >> 1; \ (b) = xor; \ @@ -40,30 +45,21 @@ void redraw(void) unsigned char *fbptr; uint16_t *fbptr16; uint32_t *fbptr32; - float t = (float)time_msec / 1000.0f; - xoffs = cos(t * 0.5f) * DEF_WIDTH * 2; - yoffs = sin(t) * DEF_HEIGHT; - zoom = (sin(t * 0.75f) * 0.5f + 1.0f) * 1024.0f; + xoffs = COS(time_msec >> 3) * fb_width >> 15; + yoffs = SIN(time_msec >> 2) * fb_height >> 16; + zoom = (SIN(time_msec >> 5) >> 1) + 65536; switch(fb_bpp) { case 15: - fbptr16 = framebuf; - for(i=0; i> 1) - fb_width; - } - break; - case 16: fbptr16 = framebuf; for(i=0; i> 3) << fb_rshift) & fb_rmask) | + (((g >> 2) << fb_gshift) & fb_gmask) | + (((b >> 3) << fb_bshift) & fb_bmask); } fbptr16 += (fb_pitch >> 1) - fb_width; } @@ -87,7 +83,9 @@ void redraw(void) for(i=0; i> 2) - fb_width; }