diff options
| author | Cracker64 <cracker642@gmail.com> | 2011-01-08 22:55:14 (GMT) |
|---|---|---|
| committer | Cracker64 <cracker642@gmail.com> | 2011-01-08 22:55:14 (GMT) |
| commit | 164681f4e65904ae6996dc67aaad30e1d590f3a1 (patch) | |
| tree | 0521733c46689cdaacc0cf52b0f7f84e7ef594f1 /src | |
| parent | 0958a6e6da7ffd8c93779bfeb4552e18f593a090 (diff) | |
| download | powder-164681f4e65904ae6996dc67aaad30e1d590f3a1.zip powder-164681f4e65904ae6996dc67aaad30e1d590f3a1.tar.gz | |
GoL speed improvements from jacksonmj (thank you very much)
Diffstat (limited to 'src')
| -rw-r--r-- | src/powder.c | 46 |
1 files changed, 6 insertions, 40 deletions
diff --git a/src/powder.c b/src/powder.c index b999b36..ab54680 100644 --- a/src/powder.c +++ b/src/powder.c @@ -1236,8 +1236,8 @@ void update_particles_i(pixel *vid, int start, int inc) if(ISGOL==1&&CGOL>=GSPEED)//GSPEED is frames per generation { int createdsomething = 0; - for(nx=4;nx<XRES-4;nx++) - for(ny=4;ny<YRES-4;ny++) + for(nx=CELL;nx<XRES-CELL;nx++) + for(ny=CELL;ny<YRES-CELL;ny++) { CGOL=0; ISGOL=0; @@ -1255,47 +1255,13 @@ void update_particles_i(pixel *vid, int start, int inc) for( nnx=-1;nnx<2;nnx++) for( nny=-1;nny<2;nny++)//it will count itself as its own neighbor, which is needed, but will have 1 extra for delete check { - if(ny+nny<4&&nx+nnx<4){//any way to make wrapping code smaller? - gol2[XRES-5][YRES-5][golnum] ++; - gol2[XRES-5][YRES-5][0] ++; - } - else if(ny+nny<4&&nx+nnx>=XRES-4){ - gol2[4][YRES-5][golnum] ++; - gol2[4][YRES-5][0] ++; - } - else if(ny+nny>=YRES-4&&nx+nnx<4){ - gol2[XRES-5][4][golnum] ++; - gol2[XRES-5][4][0] ++; - } - else if(nx+nnx<4){ - gol2[XRES-5][ny+nny][golnum] ++; - gol2[XRES-5][ny+nny][0] ++; - } - else if(ny+nny<4){ - gol2[nx+nnx][YRES-5][golnum] ++; - gol2[nx+nnx][YRES-5][0] ++; - } - else if(ny+nny>=YRES-4&&nx+nnx>=XRES-4){ - gol2[4][4][golnum] ++; - gol2[4][4][0] ++; - } - else if(ny+nny>=YRES-4){ - gol2[nx+nnx][4][golnum] ++; - gol2[nx+nnx][4][0] ++; - } - else if(nx+nnx>=XRES-4){ - gol2[4][ny+nny][golnum] ++; - gol2[4][ny+nny][0] ++; - } - else{ - gol2[nx+nnx][ny+nny][golnum] ++; - gol2[nx+nnx][ny+nny][0] ++; - } + gol2[((nx+nnx+XRES-3*CELL)%(XRES-2*CELL))+CELL][((ny+nny+YRES-3*CELL)%(YRES-2*CELL))+CELL][golnum] ++; + gol2[((nx+nnx+XRES-3*CELL)%(XRES-2*CELL))+CELL][((ny+nny+YRES-3*CELL)%(YRES-2*CELL))+CELL][0] ++; } } } - for(nx=4;nx<XRES-4;nx++) - for(ny=4;ny<YRES-4;ny++) + for(nx=CELL;nx<XRES-CELL;nx++) + for(ny=CELL;ny<YRES-CELL;ny++) { int neighbors = gol2[nx][ny][0]; if(neighbors==0) |
