spectrum_cmbrot

diff test.c @ 1:c2815c765fea

done
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 17 Feb 2014 11:00:23 +0200
parents e56d8b0eee4b
children
line diff
     1.1 --- a/test.c	Mon Feb 17 10:17:17 2014 +0200
     1.2 +++ b/test.c	Mon Feb 17 11:00:23 2014 +0200
     1.3 @@ -13,9 +13,9 @@
     1.4  
     1.5  		for(i=0; i<192; i++) {
     1.6  			unsigned int banky = i & 0x3f;
     1.7 -			unsigned int cell = banky / 8;
     1.8 -			unsigned int cline = banky % 8;
     1.9 -			unsigned int memline = cell + cline * 8;
    1.10 +			unsigned int cell = banky >> 3;
    1.11 +			unsigned int cline = banky & 0x7;
    1.12 +			unsigned int memline = cell + (cline << 3);
    1.13  			unsigned char *ptr = FB_ADDR + (start + memline) * LINESKIP;
    1.14  
    1.15  			for(j=0; j<32; j++) {	/* 256 pixels, 8 pixels per byte */
    1.16 @@ -44,6 +44,8 @@
    1.17  {
    1.18  	unsigned char i;
    1.19  	int cx, cy, zx, zy, x, y, len;
    1.20 +	int xop1, xop2, yop1, yop2;
    1.21 +	int zxop1, zxop2, zyop1, zyop2;
    1.22  
    1.23  	cx = int2fix8_8(px - 192) >> 6;
    1.24  	cy = int2fix8_8(py - 96) >> 6;
    1.25 @@ -55,11 +57,25 @@
    1.26  	zy = cy;
    1.27  
    1.28  	for(i=0; i<32; i++) {
    1.29 -		x = fix_mul5_11(zx, zx) - fix_mul5_11(zy, zy) + cx;
    1.30 -		y = fix_mul5_11(zy, zx) + fix_mul5_11(zx, zy) + cy;
    1.31 -		len = fix_mul5_11(x, x) + fix_mul5_11(y, y);
    1.32 +		/*x = fix_mul5_11(zx, zx) - fix_mul5_11(zy, zy) + cx;
    1.33 +		y = fix_mul5_11(zy, zx) + fix_mul5_11(zx, zy) + cy;*/
    1.34 +		zxop1 = zx >> 5;
    1.35 +		zxop2 = zxop1 >> 1;
    1.36 +		zyop1 = zy >> 5;
    1.37 +		zyop2 = zyop1 >> 1;
    1.38  
    1.39 -		if(len > int2fix5_11(4)) return 0;
    1.40 +		x = zxop1 * zxop2 - zyop1 * zyop2 + cx;
    1.41 +		y = zyop1 * zxop2 + zxop1 * zyop2 + cy;
    1.42 +
    1.43 +		/*len = fix_mul5_11(x, x) + fix_mul5_11(y, y);*/
    1.44 +		xop1 = x >> 5;
    1.45 +		xop2 = xop1 >> 1;
    1.46 +		yop1 = y >> 5;
    1.47 +		yop2 = yop1 >> 1;
    1.48 +		len = xop1 * xop2 + yop1 * yop2;
    1.49 +
    1.50 +		/*if(len > int2fix5_11(4)) return 0;*/
    1.51 +		if(len > 8192) return 0;
    1.52  
    1.53  		zx = x;
    1.54  		zy = y;