diff --git a/src/main.c b/src/main.c index 5e77f237e..fc0254627 100644 --- a/src/main.c +++ b/src/main.c @@ -1113,6 +1113,7 @@ int main(int argc, char *argv[]) void *load_data=NULL; pixel *load_img=NULL;//, *fbi_img=NULL; int save_mode=0, save_x=0, save_y=0, save_w=0, save_h=0, copy_mode=0; + GSPEED = 1; #ifdef MT numCores = core_count(); diff --git a/src/powder.c b/src/powder.c index 4aa106378..999cd207e 100644 --- a/src/powder.c +++ b/src/powder.c @@ -1230,14 +1230,15 @@ void update_particles_i(pixel *vid, int start, int inc) } } } + CGOL++; if (ISGOL==1&&CGOL>=GSPEED)//GSPEED is frames per generation { + CGOL=0; + ISGOL=0; int createdsomething = 0; - for (nx=4; nx>8)>=NPART || !r) { @@ -1252,47 +1253,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