summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCracker64 <cracker642@gmail.com>2011-01-08 22:55:14 (GMT)
committer Cracker64 <cracker642@gmail.com>2011-01-08 22:55:14 (GMT)
commit164681f4e65904ae6996dc67aaad30e1d590f3a1 (patch)
tree0521733c46689cdaacc0cf52b0f7f84e7ef594f1 /src
parent0958a6e6da7ffd8c93779bfeb4552e18f593a090 (diff)
downloadpowder-164681f4e65904ae6996dc67aaad30e1d590f3a1.zip
powder-164681f4e65904ae6996dc67aaad30e1d590f3a1.tar.gz
GoL speed improvements from jacksonmj (thank you very much)
Diffstat (limited to 'src')
-rw-r--r--src/powder.c46
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)