X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Frbench.c;h=005013c1187bf711993e23353aa7c3f545d9ef57;hb=dee0f6aebe2faae7f5b05136beec802b20740514;hp=c72dca4d069e7b3459770688c7a6ccf131e68225;hpb=baf481c2dc52bc0b5f54acb555ddd7701daf05cc;p=retrobench diff --git a/src/rbench.c b/src/rbench.c index c72dca4..005013c 100644 --- a/src/rbench.c +++ b/src/rbench.c @@ -1,5 +1,7 @@ #include #include +#include +#include #include "rbench.h" #include "treestor.h" @@ -11,8 +13,86 @@ struct options opt = { DEF_WIDTH, DEF_HEIGHT, DEF_BPP }; +int fb_width, fb_height, fb_bpp, fb_pitch; +void *framebuf; +unsigned int time_msec; + +int init(void) +{ + return 0; +} + +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); \ + (r) = xor >> 2; \ + (g) = xor >> 1; \ + (b) = xor; \ + } while(0) + void redraw(void) { + int i, j, r, g, b, xoffs, yoffs, zoom; + 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; + + switch(fb_bpp) { + case 15: + fbptr16 = framebuf; + for(i=0; i> 1) - fb_width; + } + break; + + case 16: + fbptr16 = framebuf; + for(i=0; i> 1) - fb_width; + } + break; + + case 24: + fbptr = framebuf; + for(i=0; i> 2) - fb_width; + } + break; + } } void key_event(int key, int press)