diff --git a/includes/defines.h b/includes/defines.h index 717bc4d93..2eb107577 100644 --- a/includes/defines.h +++ b/includes/defines.h @@ -18,7 +18,7 @@ #define THUMB_CACHE_SIZE 256 -#define NGOL 11 +#define NGOL 10 #define IMGCONNS 3 #define TIMEOUT 100 @@ -107,6 +107,7 @@ typedef struct stamp stamp; int MSIGN; int CGOL; +int ISGOL; int GSPEED; int gol[XRES][YRES]; int gol2[XRES][YRES][NGOL]; diff --git a/src/main.c b/src/main.c index ee20b8d00..e7f2cd10d 100644 --- a/src/main.c +++ b/src/main.c @@ -103,7 +103,7 @@ int amd = 1; int FPSB = 0; int MSIGN =-1; int CGOL = 0; -int GSPEED = 0; +int GSPEED = 1; sign signs[MAXSIGNS]; diff --git a/src/powder.c b/src/powder.c index e3905b627..1daa18094 100644 --- a/src/powder.c +++ b/src/powder.c @@ -822,13 +822,15 @@ void update_particles_i(pixel *vid, int start, int inc) float c_heat = 0.0f; int h_count = 0; int starti = (start*-1); - if(sys_pause&&!framerender) + if(sys_pause&&!framerender) return; - if(CGOL>=GSPEED) - for(nx=4;nx=GSPEED)//GSPEED is frames per generation + { + for(nx=4;nx>8)>=NPART || !r) { @@ -838,61 +840,62 @@ void update_particles_i(pixel *vid, int start, int inc) else for(int golnum=1;golnum>8].type==golnum+77) - gol[nx][ny] = golnum; - - } - for(nx=4;nx=1) - for(int nnx=-1;nnx<2;nnx++) - for(int nny=-1;nny<2;nny++) { - if(ny+nny<4&&nx+nnx<4) - gol2[XRES-5][YRES-5][golnum] ++; - else if(ny+nny<4&&nx+nnx>=XRES-4) - gol2[4][YRES-5][golnum] ++; - else if(ny+nny>=YRES-4&&nx+nnx<4) - gol2[XRES-5][4][golnum] ++; - else if(nx+nnx<4) - gol2[XRES-5][ny+nny][golnum] ++; - else if(ny+nny<4) - gol2[nx+nnx][YRES-5][golnum] ++; - else if(ny+nny>=YRES-4&&nx+nnx>=XRES-4) - gol2[4][4][golnum] ++; - else if(ny+nny>=YRES-4) - gol2[nx+nnx][4][golnum] ++; - else if(nx+nnx>=XRES-4) - gol2[4][ny+nny][golnum] ++; - else - gol2[nx+nnx][ny+nny][golnum] ++; + gol[nx][ny] = golnum; + for(int nnx=-1;nnx<2;nnx++) + for(int nny=-1;nny<2;nny++) + { + if(ny+nny<4&&nx+nnx<4)//any way to make wrapping code smaller? + gol2[XRES-5][YRES-5][golnum] ++; + else if(ny+nny<4&&nx+nnx>=XRES-4) + gol2[4][YRES-5][golnum] ++; + else if(ny+nny>=YRES-4&&nx+nnx<4) + gol2[XRES-5][4][golnum] ++; + else if(nx+nnx<4) + gol2[XRES-5][ny+nny][golnum] ++; + else if(ny+nny<4) + gol2[nx+nnx][YRES-5][golnum] ++; + else if(ny+nny>=YRES-4&&nx+nnx>=XRES-4) + gol2[4][4][golnum] ++; + else if(ny+nny>=YRES-4) + gol2[nx+nnx][4][golnum] ++; + else if(nx+nnx>=XRES-4) + gol2[4][ny+nny][golnum] ++; + else + gol2[nx+nnx][ny+nny][golnum] ++; + } } + } - for(nx=4;nx=2&&gol2[nx][ny][golnum]>=(goldelete%2)+goldelete/2) - { - create_part(-1,nx,ny,golnum+77); - } - else if(neighbors==goldelete&&gol[nx][ny]==golnum&&(grule[golnum][goldelete-1]==0||grule[golnum][goldelete-1]==2)) - parts[r>>8].type = PT_NONE; + neighbors += gol2[nx][ny][golnum]; } - for(int z = 1;z=2&&gol2[nx][ny][golnum]>=(goldelete%2)+goldelete/2) + { + create_part(-1,nx,ny,golnum+77); + } + else if(neighbors==goldelete&&gol[nx][ny]==golnum&&(grule[golnum][goldelete-1]==0||grule[golnum][goldelete-1]==2)) + parts[pmap[ny][nx]>>8].type = PT_NONE; + } + for(int z = 1;z0) parts[i].temp -= 50.0f; + ISGOL=1; } else if(t==PT_LCRY) {