X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=tools%2Ftungen.c;fp=tools%2Ftungen.c;h=d1ff4001d3c9f144d926d09bd86a2cf57fed54c5;hb=a87d38e5a23ab489b6486ed4c62f30054719d39e;hp=f48075866ecdf9f7dbbd2e3ec68b2f9dbc8f0718;hpb=e8d7821317677f1d0fd6ee9efa9b9ef0ef006d01;p=gbajam21 diff --git a/tools/tungen.c b/tools/tungen.c index f480758..d1ff400 100644 --- a/tools/tungen.c +++ b/tools/tungen.c @@ -1,10 +1,11 @@ #include #include +#include #include #include struct vec2 { - float x, y; + int x, y; }; int main(int argc, char **argv) @@ -89,6 +90,8 @@ invalopt: fprintf(stderr, "invalid argument: %s\n", argv[i]); for(frm=0; frm 1 ? frm * center / (num_frames - 1) : center; + memset(buf, 0xff, xsz * ysz * sizeof *buf); + #define UDIV 2048 #define VDIV 32768 prev_r = 0.0f; @@ -99,10 +102,10 @@ invalopt: fprintf(stderr, "invalid argument: %s\n", argv[i]); float z = v * coffs; /* don't bother drawing rings < 1 pixel apart */ - if(fabs(r - prev_r) < 0.05) continue; + if(r < 0 || fabs(r - prev_r) < 0.05) continue; for(j=0; j= 0 && x < xsz && y >= 0 && y < ysz) { ptr = buf + y * xsz + x; - ptr->x = u; - ptr->y = v * 8; + ptr->x = (j << 8) / UDIV; + ptr->y = ((VDIV - i) << 11) / VDIV; } } prev_r = r; @@ -120,26 +123,22 @@ invalopt: fprintf(stderr, "invalid argument: %s\n", argv[i]); ptr = buf; for(i=0; ix; - float v = ptr->y; - int r = (int)(u * 8.0 * 255.0f) & 0xff; - int g = (int)(v * 8.0 * 255.0f) & 0xff; - int b = (~(int)(v * 0.5 * 255.0f) & 0xff) + 105; - if(b > 255) b = 255; - if(b < 0) b = 0; + int u = ptr->x; + int v = ptr->y; + int r = (u << 3) & 0xff; + int g = (v >> 3) & 0xff; /*if(v > 2.0) r = g = b = 0;*/ ptr++; - uint16_t out = ((uint16_t)(u * 255.0f) & 0xff) | - (((uint16_t)(v * 255.0f) & 0xff) << 8); + uint16_t out = ((uint16_t)u & 0x3f) | (((uint16_t)v & 0x3ff) << 6); fwrite(&out, sizeof out, 1, stdout); if(fp) { fputc(r, fp); fputc(g, fp); - fputc(b, fp); + fputc(0, fp); } } }