#include #include #include #define YSIZE 64 #define XSIZE (YSIZE/2) #define MOVE 1 #define VGA #define DIAG #define SPEED 1 #define ITER 65536 #define r() (rand()>>4) int board[2][YSIZE][XSIZE]; unsigned char dboard[YSIZE][XSIZE]; int t=0; #define FADE 15 #define new(y,x) board[t][(x)][(y)] #define old(y,x) board[1-t][(x)][(y)] #define d(y,x) dboard[(x)][(y)] #ifdef VGA #include void init(void) { int r,g,b,x; vga_setmode(G320x200x256); r=g=b=0; for(x=0;x<256;x++) { #if 0 if (x<64) r=x*x/64; else if (x<128) g=(x-64)*(x-64)/64; else if (x<192) b=(x-128)*(x-128)/64; else r=g=b=255-(x-192)*(x-192)/64; #else if (x<64) r=x; else if (x<128) g=(x-64); else b=(x-128)/2; #endif vga_setpalette(x,r,g,b); } } void done(void) { vga_setmode(TEXT); } void do_plot(int bx) { #if 0 static int xx=0,yy=0; static int dx=1,dy=1; int y; xx+=dx; if((xx==(320-XSIZE))||(xx==0)) dx=-dx; yy+=dy; if((yy==(200-YSIZE))||(yy==0)) dy=-dy; for(y=0;y(XSIZE*3/4-3)) x0=XSIZE*3/4-3; x1=x0+XSIZE/4; temp+=r()%(2*DTEMP+1)-DTEMP; if(tempMAXTEMP)temp=MAXTEMP; #endif y0=r()%8; for(x=x0;x2048) new(x,y)=2048; */ if (new(x,y)>1023) d(x,y)=255; else d(x,y)=new(x,y)>>2; } do_plot(bx); t=1-t; } int main(int argc, char**argv) { long t=time(NULL); int count=ITER; argc==1?srand(t):srand(atoi(argv[1])); printf("%ld\n",t); init(); t=time(NULL); for(;count--;) update(); done(); printf("%f frames/second\n",(double)ITER/(time(NULL)-t)); printf("%f pixels/second\n",(double)XSIZE*YSIZE*ITER/(time(NULL)-t)); return 0; }