Fixes in this build:
- fixed "New pattern" message for non-RLE format patterns
I'll add some basic support to LifeViewer at some stage. It will need to use the Rule: namespace on the Wiki like RuleTable rules do.
Build 538 is your friend...dvgrn wrote: June 28th, 2020, 1:57 pm A question came up on Discord this morning about an equivalent for Golly's Ctrl+Shift+O in LifeView.
Slackermanz' YouTube videos (link is on this Reddit post, discussion on this forum thread) involve rule definitions in something he calls MNCA, "multi-neighborhood CAs".
Code: Select all
precision mediump float;
uniform sampler2D tex0_in;
uniform vec2 tex_size;
float cv(float fx,float fy){
vec2 v=vec2(fx,fy);
float o=texture2D(tex0_in,(gl_FragCoord.xy+v)/tex_size).r;
if(o>0.0){
return 1.0;
}else{
return 0.0;
}
}
void main(){
float outval=cv(0.0,0.0);
float nhd0=cv(-14.0,-3.0)+cv(-14.0,-2.0)+cv(-14.0,-1.0)+cv(-14.0,0.0)+cv(-14.0,1.0)+cv(-14.0,2.0)+cv(-14.0,3.0)+cv(-13.0,-6.0)+cv(-13.0,-5.0)+cv(-13.0,-4.0)+cv(-13.0,-3.0)+cv(-13.0,-2.0)+cv(-13.0,-1.0)+cv(-13.0,0.0)+cv(-13.0,1.0)+cv(-13.0,2.0)+cv(-13.0,3.0)+cv(-13.0,4.0)+cv(-13.0,5.0)+cv(-13.0,6.0)+cv(-12.0,-8.0)+cv(-12.0,-7.0)+cv(-12.0,-6.0)+cv(-12.0,-5.0)+cv(-12.0,-4.0)+cv(-12.0,-3.0)+cv(-12.0,-2.0)+cv(-12.0,-1.0)+cv(-12.0,0.0)+cv(-12.0,1.0)+cv(-12.0,2.0)+cv(-12.0,3.0)+cv(-12.0,4.0)+cv(-12.0,5.0)+cv(-12.0,6.0)+cv(-12.0,7.0)+cv(-12.0,8.0)+cv(-11.0,-9.0)+cv(-11.0,-8.0)+cv(-11.0,-7.0)+cv(-11.0,-6.0)+cv(-11.0,-5.0)+cv(-11.0,-4.0)+cv(-11.0,-3.0)+cv(-11.0,-2.0)+cv(-11.0,-1.0)+cv(-11.0,0.0)+cv(-11.0,1.0)+cv(-11.0,2.0)+cv(-11.0,3.0)+cv(-11.0,4.0)+cv(-11.0,5.0)+cv(-11.0,6.0)+cv(-11.0,7.0)+cv(-11.0,8.0)+cv(-11.0,9.0)+cv(-10.0,-10.0)+cv(-10.0,-9.0)+cv(-10.0,-8.0)+cv(-10.0,-7.0);
float nhd1=cv(-10.0,-6.0)+cv(-10.0,-5.0)+cv(-10.0,5.0)+cv(-10.0,6.0)+cv(-10.0,7.0)+cv(-10.0,8.0)+cv(-10.0,9.0)+cv(-10.0,10.0)+cv(-9.0,-11.0)+cv(-9.0,-10.0)+cv(-9.0,-9.0)+cv(-9.0,-8.0)+cv(-9.0,-7.0)+cv(-9.0,7.0)+cv(-9.0,8.0)+cv(-9.0,9.0)+cv(-9.0,10.0)+cv(-9.0,11.0)+cv(-8.0,-12.0)+cv(-8.0,-11.0)+cv(-8.0,-10.0)+cv(-8.0,-9.0)+cv(-8.0,-8.0)+cv(-8.0,8.0)+cv(-8.0,9.0)+cv(-8.0,10.0)+cv(-8.0,11.0)+cv(-8.0,12.0)+cv(-7.0,-12.0)+cv(-7.0,-11.0)+cv(-7.0,-10.0)+cv(-7.0,-9.0)+cv(-7.0,-2.0)+cv(-7.0,-1.0)+cv(-7.0,0.0)+cv(-7.0,1.0)+cv(-7.0,2.0)+cv(-7.0,9.0)+cv(-7.0,10.0)+cv(-7.0,11.0)+cv(-7.0,12.0)+cv(-6.0,-13.0)+cv(-6.0,-12.0)+cv(-6.0,-11.0)+cv(-6.0,-10.0)+cv(-6.0,-4.0)+cv(-6.0,-3.0)+cv(-6.0,3.0)+cv(-6.0,4.0)+cv(-6.0,10.0)+cv(-6.0,11.0)+cv(-6.0,12.0)+cv(-6.0,13.0)+cv(-5.0,-13.0)+cv(-5.0,-12.0)+cv(-5.0,-11.0)+cv(-5.0,-10.0)+cv(-5.0,-5.0)+cv(-5.0,5.0)+cv(-5.0,10.0)+cv(-5.0,11.0);
float nhd2=cv(-5.0,12.0)+cv(-5.0,13.0)+cv(-4.0,-13.0)+cv(-4.0,-12.0)+cv(-4.0,-11.0)+cv(-4.0,-6.0)+cv(-4.0,-1.0)+cv(-4.0,0.0)+cv(-4.0,1.0)+cv(-4.0,6.0)+cv(-4.0,11.0)+cv(-4.0,12.0)+cv(-4.0,13.0)+cv(-3.0,-14.0)+cv(-3.0,-13.0)+cv(-3.0,-12.0)+cv(-3.0,-11.0)+cv(-3.0,-6.0)+cv(-3.0,-2.0)+cv(-3.0,2.0)+cv(-3.0,6.0)+cv(-3.0,11.0)+cv(-3.0,12.0)+cv(-3.0,13.0)+cv(-3.0,14.0)+cv(-2.0,-14.0)+cv(-2.0,-13.0)+cv(-2.0,-12.0)+cv(-2.0,-11.0)+cv(-2.0,-7.0)+cv(-2.0,-3.0)+cv(-2.0,3.0)+cv(-2.0,7.0)+cv(-2.0,11.0)+cv(-2.0,12.0)+cv(-2.0,13.0)+cv(-2.0,14.0)+cv(-1.0,-14.0)+cv(-1.0,-13.0)+cv(-1.0,-12.0)+cv(-1.0,-11.0)+cv(-1.0,-7.0)+cv(-1.0,-4.0)+cv(-1.0,-1.0)+cv(-1.0,0.0)+cv(-1.0,1.0)+cv(-1.0,4.0)+cv(-1.0,7.0)+cv(-1.0,11.0)+cv(-1.0,12.0)+cv(-1.0,13.0)+cv(-1.0,14.0)+cv(0.0,-14.0)+cv(0.0,-13.0)+cv(0.0,-12.0)+cv(0.0,-11.0)+cv(0.0,-7.0)+cv(0.0,-4.0)+cv(0.0,-1.0)+cv(0.0,1.0)+cv(0.0,4.0);
float nhd3=cv(0.0,7.0)+cv(0.0,11.0)+cv(0.0,12.0)+cv(0.0,13.0)+cv(0.0,14.0)+cv(1.0,-14.0)+cv(1.0,-13.0)+cv(1.0,-12.0)+cv(1.0,-11.0)+cv(1.0,-7.0)+cv(1.0,-4.0)+cv(1.0,-1.0)+cv(1.0,0.0)+cv(1.0,1.0)+cv(1.0,4.0)+cv(1.0,7.0)+cv(1.0,11.0)+cv(1.0,12.0)+cv(1.0,13.0)+cv(1.0,14.0)+cv(2.0,-14.0)+cv(2.0,-13.0)+cv(2.0,-12.0)+cv(2.0,-11.0)+cv(2.0,-7.0)+cv(2.0,-3.0)+cv(2.0,3.0)+cv(2.0,7.0)+cv(2.0,11.0)+cv(2.0,12.0)+cv(2.0,13.0)+cv(2.0,14.0)+cv(3.0,-14.0)+cv(3.0,-13.0)+cv(3.0,-12.0)+cv(3.0,-11.0)+cv(3.0,-6.0)+cv(3.0,-2.0)+cv(3.0,2.0)+cv(3.0,6.0)+cv(3.0,11.0)+cv(3.0,12.0)+cv(3.0,13.0)+cv(3.0,14.0)+cv(4.0,-13.0)+cv(4.0,-12.0)+cv(4.0,-11.0)+cv(4.0,-6.0)+cv(4.0,-1.0)+cv(4.0,0.0)+cv(4.0,1.0)+cv(4.0,6.0)+cv(4.0,11.0)+cv(4.0,12.0)+cv(4.0,13.0)+cv(5.0,-13.0)+cv(5.0,-12.0)+cv(5.0,-11.0)+cv(5.0,-10.0)+cv(5.0,-5.0)+cv(5.0,5.0);
float nhd4=cv(5.0,10.0)+cv(5.0,11.0)+cv(5.0,12.0)+cv(5.0,13.0)+cv(6.0,-13.0)+cv(6.0,-12.0)+cv(6.0,-11.0)+cv(6.0,-10.0)+cv(6.0,-4.0)+cv(6.0,-3.0)+cv(6.0,3.0)+cv(6.0,4.0)+cv(6.0,10.0)+cv(6.0,11.0)+cv(6.0,12.0)+cv(6.0,13.0)+cv(7.0,-12.0)+cv(7.0,-11.0)+cv(7.0,-10.0)+cv(7.0,-9.0)+cv(7.0,-2.0)+cv(7.0,-1.0)+cv(7.0,0.0)+cv(7.0,1.0)+cv(7.0,2.0)+cv(7.0,9.0)+cv(7.0,10.0)+cv(7.0,11.0)+cv(7.0,12.0)+cv(8.0,-12.0)+cv(8.0,-11.0)+cv(8.0,-10.0)+cv(8.0,-9.0)+cv(8.0,-8.0)+cv(8.0,8.0)+cv(8.0,9.0)+cv(8.0,10.0)+cv(8.0,11.0)+cv(8.0,12.0)+cv(9.0,-11.0)+cv(9.0,-10.0)+cv(9.0,-9.0)+cv(9.0,-8.0)+cv(9.0,-7.0)+cv(9.0,7.0)+cv(9.0,8.0)+cv(9.0,9.0)+cv(9.0,10.0)+cv(9.0,11.0)+cv(10.0,-10.0)+cv(10.0,-9.0)+cv(10.0,-8.0)+cv(10.0,-7.0)+cv(10.0,-6.0)+cv(10.0,-5.0)+cv(10.0,5.0)+cv(10.0,6.0)+cv(10.0,7.0)+cv(10.0,8.0)+cv(10.0,9.0)+cv(10.0,10.0);
float nhd5=cv(11.0,-9.0)+cv(11.0,-8.0)+cv(11.0,-7.0)+cv(11.0,-6.0)+cv(11.0,-5.0)+cv(11.0,-4.0)+cv(11.0,-3.0)+cv(11.0,-2.0)+cv(11.0,-1.0)+cv(11.0,0.0)+cv(11.0,1.0)+cv(11.0,2.0)+cv(11.0,3.0)+cv(11.0,4.0)+cv(11.0,5.0)+cv(11.0,6.0)+cv(11.0,7.0)+cv(11.0,8.0)+cv(11.0,9.0)+cv(12.0,-8.0)+cv(12.0,-7.0)+cv(12.0,-6.0)+cv(12.0,-5.0)+cv(12.0,-4.0)+cv(12.0,-3.0)+cv(12.0,-2.0)+cv(12.0,-1.0)+cv(12.0,0.0)+cv(12.0,1.0)+cv(12.0,2.0)+cv(12.0,3.0)+cv(12.0,4.0)+cv(12.0,5.0)+cv(12.0,6.0)+cv(12.0,7.0)+cv(12.0,8.0)+cv(13.0,-6.0)+cv(13.0,-5.0)+cv(13.0,-4.0)+cv(13.0,-3.0)+cv(13.0,-2.0)+cv(13.0,-1.0)+cv(13.0,0.0)+cv(13.0,1.0)+cv(13.0,2.0)+cv(13.0,3.0)+cv(13.0,4.0)+cv(13.0,5.0)+cv(13.0,6.0)+cv(14.0,-3.0)+cv(14.0,-2.0)+cv(14.0,-1.0)+cv(14.0,0.0)+cv(14.0,1.0)+cv(14.0,2.0)+cv(14.0,3.0);
float fin_0=nhd0+nhd1+nhd2+nhd3+nhd4+nhd5;
if(fin_0>=0.0){
outval=0.0;
}
if(fin_0>=126.0&&fin_0<=211.0){
outval=1.0;
}
if(fin_0>=136.0&&fin_0<=161.0){
outval=1.0;
}
if(fin_0>=156.0&&fin_0<=171.0){
outval=1.0;
}
if(fin_0>=186.0&&fin_0<=211.0){
outval=1.0;
}
if(fin_0>=36.0&&fin_0<=40.0){
outval=1.0;
}
if(fin_0<=29.0){
outval=0.0;
}
gl_FragColor=vec4(outval,outval,outval,1.0);
}Code: Select all
precision mediump float;
uniform sampler2D tex0_in;
uniform vec2 tex_size;
float cv(float fx,float fy){
vec2 v=vec2(fx,fy);
float o=texture2D(tex0_in,(gl_FragCoord.xy+v)/tex_size).r;
if(o>0.0){
return 1.0;
}else{
return 0.0;
}
}
void main(){
float outval=cv(0.0,0.0);
float nhd0=cv(1.0,-1.0)+cv(1.0,0.0)+cv(1.0,1.0)+cv(-1.0,-1.0)+cv(-1.0,0.0)+cv(-1.0,1.0);
float fin_0=nhd0;
float nhd1=cv(0.0,-1.0)+cv(0.0,1.0);
float fin_1=nhd1;
if(fin_0>=4.0){
outval=0.0;
}
if(fin_0==3.0){
outval=1.0;
}
if(fin_0<=1.0){
outval=0.0;
}
float nhd2=cv(-14.0,-1.0)+cv(-14.0,0.0)+cv(-14.0,1.0)+cv(-13.0,-4.0)+cv(-13.0,-3.0)+cv(-13.0,-2.0)+cv(-13.0,2.0)+cv(-13.0,3.0)+cv(-13.0,4.0)+cv(-12.0,-6.0)+cv(-12.0,-5.0)+cv(-12.0,5.0)+cv(-12.0,6.0)+cv(-11.0,-8.0)+cv(-11.0,-7.0)+cv(-11.0,7.0)+cv(-11.0,8.0)+cv(-10.0,-9.0)+cv(-10.0,-1.0)+cv(-10.0,0.0)+cv(-10.0,1.0)+cv(-10.0,9.0)+cv(-9.0,-10.0)+cv(-9.0,-4.0)+cv(-9.0,-3.0)+cv(-9.0,-2.0)+cv(-9.0,2.0)+cv(-9.0,3.0)+cv(-9.0,4.0)+cv(-9.0,10.0)+cv(-8.0,-11.0)+cv(-8.0,-6.0)+cv(-8.0,-5.0)+cv(-8.0,5.0)+cv(-8.0,6.0)+cv(-8.0,11.0)+cv(-7.0,-11.0)+cv(-7.0,-7.0)+cv(-7.0,-2.0)+cv(-7.0,-1.0)+cv(-7.0,0.0)+cv(-7.0,1.0)+cv(-7.0,2.0)+cv(-7.0,7.0)+cv(-7.0,11.0)+cv(-6.0,-12.0)+cv(-6.0,-8.0)+cv(-6.0,-4.0)+cv(-6.0,-3.0)+cv(-6.0,3.0)+cv(-6.0,4.0)+cv(-6.0,8.0)+cv(-6.0,12.0)+cv(-5.0,-12.0)+cv(-5.0,-8.0)+cv(-5.0,-5.0)+cv(-5.0,-1.0)+cv(-5.0,0.0)+cv(-5.0,1.0)+cv(-5.0,5.0);
float nhd3=cv(-5.0,8.0)+cv(-5.0,12.0)+cv(-4.0,-13.0)+cv(-4.0,-9.0)+cv(-4.0,-6.0)+cv(-4.0,-3.0)+cv(-4.0,-2.0)+cv(-4.0,2.0)+cv(-4.0,3.0)+cv(-4.0,6.0)+cv(-4.0,9.0)+cv(-4.0,13.0)+cv(-3.0,-13.0)+cv(-3.0,-9.0)+cv(-3.0,-6.0)+cv(-3.0,-4.0)+cv(-3.0,-1.0)+cv(-3.0,0.0)+cv(-3.0,1.0)+cv(-3.0,4.0)+cv(-3.0,6.0)+cv(-3.0,9.0)+cv(-3.0,13.0)+cv(-2.0,-13.0)+cv(-2.0,-9.0)+cv(-2.0,-7.0)+cv(-2.0,-4.0)+cv(-2.0,-2.0)+cv(-2.0,2.0)+cv(-2.0,4.0)+cv(-2.0,7.0)+cv(-2.0,9.0)+cv(-2.0,13.0)+cv(-1.0,-14.0)+cv(-1.0,-10.0)+cv(-1.0,-7.0)+cv(-1.0,-5.0)+cv(-1.0,-3.0)+cv(-1.0,-1.0)+cv(-1.0,0.0)+cv(-1.0,1.0)+cv(-1.0,3.0)+cv(-1.0,5.0)+cv(-1.0,7.0)+cv(-1.0,10.0)+cv(-1.0,14.0)+cv(0.0,-14.0)+cv(0.0,-10.0)+cv(0.0,-7.0)+cv(0.0,-5.0)+cv(0.0,-3.0)+cv(0.0,-1.0)+cv(0.0,1.0)+cv(0.0,3.0)+cv(0.0,5.0)+cv(0.0,7.0)+cv(0.0,10.0)+cv(0.0,14.0)+cv(1.0,-14.0)+cv(1.0,-10.0)+cv(1.0,-7.0);
float nhd4=cv(1.0,-5.0)+cv(1.0,-3.0)+cv(1.0,-1.0)+cv(1.0,0.0)+cv(1.0,1.0)+cv(1.0,3.0)+cv(1.0,5.0)+cv(1.0,7.0)+cv(1.0,10.0)+cv(1.0,14.0)+cv(2.0,-13.0)+cv(2.0,-9.0)+cv(2.0,-7.0)+cv(2.0,-4.0)+cv(2.0,-2.0)+cv(2.0,2.0)+cv(2.0,4.0)+cv(2.0,7.0)+cv(2.0,9.0)+cv(2.0,13.0)+cv(3.0,-13.0)+cv(3.0,-9.0)+cv(3.0,-6.0)+cv(3.0,-4.0)+cv(3.0,-1.0)+cv(3.0,0.0)+cv(3.0,1.0)+cv(3.0,4.0)+cv(3.0,6.0)+cv(3.0,9.0)+cv(3.0,13.0)+cv(4.0,-13.0)+cv(4.0,-9.0)+cv(4.0,-6.0)+cv(4.0,-3.0)+cv(4.0,-2.0)+cv(4.0,2.0)+cv(4.0,3.0)+cv(4.0,6.0)+cv(4.0,9.0)+cv(4.0,13.0)+cv(5.0,-12.0)+cv(5.0,-8.0)+cv(5.0,-5.0)+cv(5.0,-1.0)+cv(5.0,0.0)+cv(5.0,1.0)+cv(5.0,5.0)+cv(5.0,8.0)+cv(5.0,12.0)+cv(6.0,-12.0)+cv(6.0,-8.0)+cv(6.0,-4.0)+cv(6.0,-3.0)+cv(6.0,3.0)+cv(6.0,4.0)+cv(6.0,8.0)+cv(6.0,12.0)+cv(7.0,-11.0)+cv(7.0,-7.0)+cv(7.0,-2.0);
float nhd5=cv(7.0,-1.0)+cv(7.0,0.0)+cv(7.0,1.0)+cv(7.0,2.0)+cv(7.0,7.0)+cv(7.0,11.0)+cv(8.0,-11.0)+cv(8.0,-6.0)+cv(8.0,-5.0)+cv(8.0,5.0)+cv(8.0,6.0)+cv(8.0,11.0)+cv(9.0,-10.0)+cv(9.0,-4.0)+cv(9.0,-3.0)+cv(9.0,-2.0)+cv(9.0,2.0)+cv(9.0,3.0)+cv(9.0,4.0)+cv(9.0,10.0)+cv(10.0,-9.0)+cv(10.0,-1.0)+cv(10.0,0.0)+cv(10.0,1.0)+cv(10.0,9.0)+cv(11.0,-8.0)+cv(11.0,-7.0)+cv(11.0,7.0)+cv(11.0,8.0)+cv(12.0,-6.0)+cv(12.0,-5.0)+cv(12.0,5.0)+cv(12.0,6.0)+cv(13.0,-4.0)+cv(13.0,-3.0)+cv(13.0,-2.0)+cv(13.0,2.0)+cv(13.0,3.0)+cv(13.0,4.0)+cv(14.0,-1.0)+cv(14.0,0.0)+cv(14.0,1.0);
float fin_2=nhd2+nhd3+nhd4+nhd5;
if(fin_1>=29.0&&fin_1<=90.0){
outval=0.0;
}
if(fin_1>=37.0&&fin_1<=29.0){
outval=1.0;
}
if(fin_1>=80.0&&fin_1<=191.0){
outval=1.0;
}
float nhd6=cv(-3.0,-1.0)+cv(-3.0,0.0)+cv(-3.0,1.0)+cv(-2.0,-2.0)+cv(-2.0,2.0)+cv(-1.0,-3.0)+cv(-1.0,-1.0)+cv(-1.0,0.0)+cv(-1.0,1.0)+cv(-1.0,3.0)+cv(0.0,-3.0)+cv(0.0,-1.0)+cv(0.0,1.0)+cv(0.0,3.0)+cv(1.0,-3.0)+cv(1.0,-1.0)+cv(1.0,0.0)+cv(1.0,1.0)+cv(1.0,3.0)+cv(2.0,-2.0)+cv(2.0,2.0)+cv(3.0,-1.0)+cv(3.0,0.0)+cv(3.0,1.0);
float fin_1=nhd6;
if(fin_2>=13.0&&fin_2<=20.0){
outval=1.0;
}
if(fin_2>=9.0&&fin_2<=9.0){
outval=1.0;
}
float nhd7=cv(-6.0,-1.0)+cv(-6.0,0.0)+cv(-6.0,1.0)+cv(-5.0,-3.0)+cv(-5.0,-2.0)+cv(-5.0,-1.0)+cv(-5.0,0.0)+cv(-5.0,1.0)+cv(-5.0,2.0)+cv(-5.0,3.0)+cv(-4.0,-4.0)+cv(-4.0,-3.0)+cv(-4.0,-2.0)+cv(-4.0,-1.0)+cv(-4.0,0.0)+cv(-4.0,1.0)+cv(-4.0,2.0)+cv(-4.0,3.0)+cv(-4.0,4.0)+cv(-3.0,-5.0)+cv(-3.0,-4.0)+cv(-3.0,-3.0)+cv(-3.0,-2.0)+cv(-3.0,2.0)+cv(-3.0,3.0)+cv(-3.0,4.0)+cv(-3.0,5.0)+cv(-2.0,-5.0)+cv(-2.0,-4.0)+cv(-2.0,-3.0)+cv(-2.0,3.0)+cv(-2.0,4.0)+cv(-2.0,5.0)+cv(-1.0,-6.0)+cv(-1.0,-5.0)+cv(-1.0,-4.0)+cv(-1.0,4.0)+cv(-1.0,5.0)+cv(-1.0,6.0)+cv(0.0,-6.0)+cv(0.0,-5.0)+cv(0.0,-4.0)+cv(0.0,4.0)+cv(0.0,5.0)+cv(0.0,6.0)+cv(1.0,-6.0)+cv(1.0,-5.0)+cv(1.0,-4.0)+cv(1.0,4.0)+cv(1.0,5.0)+cv(1.0,6.0)+cv(2.0,-5.0)+cv(2.0,-4.0)+cv(2.0,-3.0)+cv(2.0,3.0)+cv(2.0,4.0)+cv(2.0,5.0)+cv(3.0,-5.0)+cv(3.0,-4.0)+cv(3.0,-3.0);
float nhd8=cv(3.0,-2.0)+cv(3.0,2.0)+cv(3.0,3.0)+cv(3.0,4.0)+cv(3.0,5.0)+cv(4.0,-4.0)+cv(4.0,-3.0)+cv(4.0,-2.0)+cv(4.0,-1.0)+cv(4.0,0.0)+cv(4.0,1.0)+cv(4.0,2.0)+cv(4.0,3.0)+cv(4.0,4.0)+cv(5.0,-3.0)+cv(5.0,-2.0)+cv(5.0,-1.0)+cv(5.0,0.0)+cv(5.0,1.0)+cv(5.0,2.0)+cv(5.0,3.0)+cv(6.0,-1.0)+cv(6.0,0.0)+cv(6.0,1.0);
float fin_3=nhd7+nhd8;
if(fin_3>=15.0&&fin_3<=27.0){
outval=0.0;
}
float nhd9=cv(-14.0,-3.0)+cv(-14.0,-2.0)+cv(-14.0,-1.0)+cv(-14.0,0.0)+cv(-14.0,1.0)+cv(-14.0,2.0)+cv(-14.0,3.0)+cv(-13.0,-6.0)+cv(-13.0,-5.0)+cv(-13.0,-4.0)+cv(-13.0,-3.0)+cv(-13.0,-2.0)+cv(-13.0,-1.0)+cv(-13.0,0.0)+cv(-13.0,1.0)+cv(-13.0,2.0)+cv(-13.0,3.0)+cv(-13.0,4.0)+cv(-13.0,5.0)+cv(-13.0,6.0)+cv(-12.0,-8.0)+cv(-12.0,-7.0)+cv(-12.0,-6.0)+cv(-12.0,-5.0)+cv(-12.0,-4.0)+cv(-12.0,-3.0)+cv(-12.0,-2.0)+cv(-12.0,-1.0)+cv(-12.0,0.0)+cv(-12.0,1.0)+cv(-12.0,2.0)+cv(-12.0,3.0)+cv(-12.0,4.0)+cv(-12.0,5.0)+cv(-12.0,6.0)+cv(-12.0,7.0)+cv(-12.0,8.0)+cv(-11.0,-9.0)+cv(-11.0,-8.0)+cv(-11.0,-7.0)+cv(-11.0,-6.0)+cv(-11.0,-5.0)+cv(-11.0,-4.0)+cv(-11.0,-3.0)+cv(-11.0,-2.0)+cv(-11.0,-1.0)+cv(-11.0,0.0)+cv(-11.0,1.0)+cv(-11.0,2.0)+cv(-11.0,3.0)+cv(-11.0,4.0)+cv(-11.0,5.0)+cv(-11.0,6.0)+cv(-11.0,7.0)+cv(-11.0,8.0)+cv(-11.0,9.0)+cv(-10.0,-10.0)+cv(-10.0,-9.0)+cv(-10.0,-8.0)+cv(-10.0,-7.0);
float nhd10=cv(-10.0,-6.0)+cv(-10.0,-5.0)+cv(-10.0,5.0)+cv(-10.0,6.0)+cv(-10.0,7.0)+cv(-10.0,8.0)+cv(-10.0,9.0)+cv(-10.0,10.0)+cv(-9.0,-11.0)+cv(-9.0,-10.0)+cv(-9.0,-9.0)+cv(-9.0,-8.0)+cv(-9.0,-7.0)+cv(-9.0,7.0)+cv(-9.0,8.0)+cv(-9.0,9.0)+cv(-9.0,10.0)+cv(-9.0,11.0)+cv(-8.0,-12.0)+cv(-8.0,-11.0)+cv(-8.0,-10.0)+cv(-8.0,-9.0)+cv(-8.0,-8.0)+cv(-8.0,8.0)+cv(-8.0,9.0)+cv(-8.0,10.0)+cv(-8.0,11.0)+cv(-8.0,12.0)+cv(-7.0,-12.0)+cv(-7.0,-11.0)+cv(-7.0,-10.0)+cv(-7.0,-9.0)+cv(-7.0,-2.0)+cv(-7.0,-1.0)+cv(-7.0,0.0)+cv(-7.0,1.0)+cv(-7.0,2.0)+cv(-7.0,9.0)+cv(-7.0,10.0)+cv(-7.0,11.0)+cv(-7.0,12.0)+cv(-6.0,-13.0)+cv(-6.0,-12.0)+cv(-6.0,-11.0)+cv(-6.0,-10.0)+cv(-6.0,-4.0)+cv(-6.0,-3.0)+cv(-6.0,3.0)+cv(-6.0,4.0)+cv(-6.0,10.0)+cv(-6.0,11.0)+cv(-6.0,12.0)+cv(-6.0,13.0)+cv(-5.0,-13.0)+cv(-5.0,-12.0)+cv(-5.0,-11.0)+cv(-5.0,-10.0)+cv(-5.0,-5.0)+cv(-5.0,5.0)+cv(-5.0,10.0)+cv(-5.0,11.0);
float nhd11=cv(-5.0,12.0)+cv(-5.0,13.0)+cv(-4.0,-13.0)+cv(-4.0,-12.0)+cv(-4.0,-11.0)+cv(-4.0,-6.0)+cv(-4.0,-1.0)+cv(-4.0,0.0)+cv(-4.0,1.0)+cv(-4.0,6.0)+cv(-4.0,11.0)+cv(-4.0,12.0)+cv(-4.0,13.0)+cv(-3.0,-14.0)+cv(-3.0,-13.0)+cv(-3.0,-12.0)+cv(-3.0,-11.0)+cv(-3.0,-6.0)+cv(-3.0,-2.0)+cv(-3.0,2.0)+cv(-3.0,6.0)+cv(-3.0,11.0)+cv(-3.0,12.0)+cv(-3.0,13.0)+cv(-3.0,14.0)+cv(-2.0,-14.0)+cv(-2.0,-13.0)+cv(-2.0,-12.0)+cv(-2.0,-11.0)+cv(-2.0,-7.0)+cv(-2.0,-3.0)+cv(-2.0,3.0)+cv(-2.0,7.0)+cv(-2.0,11.0)+cv(-2.0,12.0)+cv(-2.0,13.0)+cv(-2.0,14.0)+cv(-1.0,-14.0)+cv(-1.0,-13.0)+cv(-1.0,-12.0)+cv(-1.0,-11.0)+cv(-1.0,-7.0)+cv(-1.0,-4.0)+cv(-1.0,-1.0)+cv(-1.0,0.0)+cv(-1.0,1.0)+cv(-1.0,4.0)+cv(-1.0,7.0)+cv(-1.0,11.0)+cv(-1.0,12.0)+cv(-1.0,13.0)+cv(-1.0,14.0)+cv(0.0,-14.0)+cv(0.0,-13.0)+cv(0.0,-12.0)+cv(0.0,-11.0)+cv(0.0,-7.0)+cv(0.0,-4.0)+cv(0.0,-1.0)+cv(0.0,1.0)+cv(0.0,4.0);
float nhd12=cv(0.0,7.0)+cv(0.0,11.0)+cv(0.0,12.0)+cv(0.0,13.0)+cv(0.0,14.0)+cv(1.0,-14.0)+cv(1.0,-13.0)+cv(1.0,-12.0)+cv(1.0,-11.0)+cv(1.0,-7.0)+cv(1.0,-4.0)+cv(1.0,-1.0)+cv(1.0,0.0)+cv(1.0,1.0)+cv(1.0,4.0)+cv(1.0,7.0)+cv(1.0,11.0)+cv(1.0,12.0)+cv(1.0,13.0)+cv(1.0,14.0)+cv(2.0,-14.0)+cv(2.0,-13.0)+cv(2.0,-12.0)+cv(2.0,-11.0)+cv(2.0,-7.0)+cv(2.0,-3.0)+cv(2.0,3.0)+cv(2.0,7.0)+cv(2.0,11.0)+cv(2.0,12.0)+cv(2.0,13.0)+cv(2.0,14.0)+cv(3.0,-14.0)+cv(3.0,-13.0)+cv(3.0,-12.0)+cv(3.0,-11.0)+cv(3.0,-6.0)+cv(3.0,-2.0)+cv(3.0,2.0)+cv(3.0,6.0)+cv(3.0,11.0)+cv(3.0,12.0)+cv(3.0,13.0)+cv(3.0,14.0)+cv(4.0,-13.0)+cv(4.0,-12.0)+cv(4.0,-11.0)+cv(4.0,-6.0)+cv(4.0,-1.0)+cv(4.0,0.0)+cv(4.0,1.0)+cv(4.0,6.0)+cv(4.0,11.0)+cv(4.0,12.0)+cv(4.0,13.0)+cv(5.0,-13.0)+cv(5.0,-12.0)+cv(5.0,-11.0)+cv(5.0,-10.0)+cv(5.0,-5.0)+cv(5.0,5.0);
float nhd13=cv(5.0,10.0)+cv(5.0,11.0)+cv(5.0,12.0)+cv(5.0,13.0)+cv(6.0,-13.0)+cv(6.0,-12.0)+cv(6.0,-11.0)+cv(6.0,-10.0)+cv(6.0,-4.0)+cv(6.0,-3.0)+cv(6.0,3.0)+cv(6.0,4.0)+cv(6.0,10.0)+cv(6.0,11.0)+cv(6.0,12.0)+cv(6.0,13.0)+cv(7.0,-12.0)+cv(7.0,-11.0)+cv(7.0,-10.0)+cv(7.0,-9.0)+cv(7.0,-2.0)+cv(7.0,-1.0)+cv(7.0,0.0)+cv(7.0,1.0)+cv(7.0,2.0)+cv(7.0,9.0)+cv(7.0,10.0)+cv(7.0,11.0)+cv(7.0,12.0)+cv(8.0,-12.0)+cv(8.0,-11.0)+cv(8.0,-10.0)+cv(8.0,-9.0)+cv(8.0,-8.0)+cv(8.0,8.0)+cv(8.0,9.0)+cv(8.0,10.0)+cv(8.0,11.0)+cv(8.0,12.0)+cv(9.0,-11.0)+cv(9.0,-10.0)+cv(9.0,-9.0)+cv(9.0,-8.0)+cv(9.0,-7.0)+cv(9.0,7.0)+cv(9.0,8.0)+cv(9.0,9.0)+cv(9.0,10.0)+cv(9.0,11.0)+cv(10.0,-10.0)+cv(10.0,-9.0)+cv(10.0,-8.0)+cv(10.0,-7.0)+cv(10.0,-6.0)+cv(10.0,-5.0)+cv(10.0,5.0)+cv(10.0,6.0)+cv(10.0,7.0)+cv(10.0,8.0)+cv(10.0,9.0)+cv(10.0,10.0);
float nhd14=cv(11.0,-9.0)+cv(11.0,-8.0)+cv(11.0,-7.0)+cv(11.0,-6.0)+cv(11.0,-5.0)+cv(11.0,-4.0)+cv(11.0,-3.0)+cv(11.0,-2.0)+cv(11.0,-1.0)+cv(11.0,0.0)+cv(11.0,1.0)+cv(11.0,2.0)+cv(11.0,3.0)+cv(11.0,4.0)+cv(11.0,5.0)+cv(11.0,6.0)+cv(11.0,7.0)+cv(11.0,8.0)+cv(11.0,9.0)+cv(12.0,-8.0)+cv(12.0,-7.0)+cv(12.0,-6.0)+cv(12.0,-5.0)+cv(12.0,-4.0)+cv(12.0,-3.0)+cv(12.0,-2.0)+cv(12.0,-1.0)+cv(12.0,0.0)+cv(12.0,1.0)+cv(12.0,2.0)+cv(12.0,3.0)+cv(12.0,4.0)+cv(12.0,5.0)+cv(12.0,6.0)+cv(12.0,7.0)+cv(12.0,8.0)+cv(13.0,-6.0)+cv(13.0,-5.0)+cv(13.0,-4.0)+cv(13.0,-3.0)+cv(13.0,-2.0)+cv(13.0,-1.0)+cv(13.0,0.0)+cv(13.0,1.0)+cv(13.0,2.0)+cv(13.0,3.0)+cv(13.0,4.0)+cv(13.0,5.0)+cv(13.0,6.0)+cv(14.0,-3.0)+cv(14.0,-2.0)+cv(14.0,-1.0)+cv(14.0,0.0)+cv(14.0,1.0)+cv(14.0,2.0)+cv(14.0,3.0);
float fin_1=nhd9+nhd10+nhd11+nhd12+nhd13+nhd14;
if(fin_4>=165.0&&fin_4<=235.0){
outval=0.0;
}
if(fin_4>=320.0){
outval=0.0;
}
gl_FragColor=vec4(outval,outval,outval,1.0);
}Yes those are shader fragments that run on the GPU in parallel for each pixel in the texture.dvgrn wrote: July 6th, 2020, 10:21 pm On Discord Slackermanz has posted 450 rule definitions in some kind of GPU C-code form, called a "fragment".
Yes sounds good. It looks like it's totalistic 2-state. The ndh0=cv(x1,y1)+cv(x2,y2)+cv(x3,x3)+...+cv(xn,yn) just represents the neighbourhood as a series of coordinates x1,y1 .. xn,yn from the current cell. We then sum of the states in each neighbourhood cell.dvgrn wrote: July 6th, 2020, 10:21 pm I'm planning on writing a parser to convert those 450 fragments into something a little more rule-file-like. Are you interested in maybe supporting these MNCAs in LifeViewer at some point, as an extension of your "arbitrary outer totalistic neighborhoods"? If so, do you have any preferences for what my parser should output?
I kind of like the RLE option, but it ends up more complicated than a simple list of coordinates -- you'd also need something like a leading #CXRLE line to say where the RLE pattern is relative to the center cell. So maybe the place to start is just a list of coordinates in a much tighter format, likerowett wrote: July 7th, 2020, 9:00 amPerhaps some sort of RLE could be used or hex/based64 encoding.
We then sum cell values over the list of supplied cell locations and apply the tests.
Code: Select all
x = 21, y = 21, rule = LifeHistory
21B$21B$21B$21B$21B$21B$21B$21B$21B$21B$10BD10B$12BC8B$11BCBC7B$12BCB
C6B$13BCBC5B$14BCBC4B$15BCBC3B$16BCBC2B$17BCBCB$18BCBC$19BCB!Well... but if later tests override earlier ones, then couldn't you just run the tests in reverse order -- but stop calculating as soon as a match is found and the output value is set? Seems like you'd end up with the same output, but often you could skip even calculating sums for neighborhoods not referenced yet.rowett wrote: July 7th, 2020, 9:00 amAs you said later tests can override earlier ones but I don't think it's possible to re-order because we're not done until we've applied all tests for all neighbourhoods in the order specified.
Yes, true.dvgrn wrote: July 7th, 2020, 9:51 am Well... but if later tests override earlier ones, then couldn't you just run the tests in reverse order
I don't think it's quite that simple, because some of the multi-neighborhood conditions get pretty complicated. I mean, you could have Condition#1 0-15,23,45-50 for neighborhood 1, unless Condition#2 18-20 for neighborhood 2... and then Condition#3 might go back to neighborhood 1 again, but that range couldn't be included in the original list because Condition#2 could have changed the outcome of Condition#1, but not of Condition#3...rowett wrote: July 7th, 2020, 10:45 amFor capturing the conditions we probably just need a list of count ranges that result in 1 for the specified neighbourhood. Everything else is a 0. Or if you don't want to process that much you can provide both a 0 list and a 1 list.
0-15,23,45-50
Yes including HROT format rules. Don't know when I'll get to it though.Andrew wrote: July 13th, 2020, 10:38 pm 1. Do you have any long-term plans to add support for all these new rules and neighborhoods into Golly?
Again it's a long term plan. The main reason I haven't done it so far is that LifeViewer started off as a learning project for Javascript and needs some major refactoring before it will be in a nice enough state to make it easy for others to extend it.Andrew wrote: July 13th, 2020, 10:38 pm 2. Any chance LifeViewer could become open source? That would make it a lot easier for other people
to keep Golly's rule support in sync with LifeViewer (in case you don't want to do it, or you get run over
by a bus!).
Using LtL doesn't make much sense for neighborhoods like Margolus. Here's a better idea: We create a new algo called BoundedGrid. It only supports bounded universes with the same maximum dimensions as LifeViewer (16K x 16K?). If you ever get around to refactoring the LV code then maybe do it in a way that makes it easy to auto-translate the JS code (via a Lua/Python script) into C++ code that can then get merged into Golly's BoundedGrid code.(Probably no need to create a new algo -- just add them to LtL.)
True. Beyond Life-like, LtL/HROT and RuleLoader, LifeViewer has separate algos for Margolus, PCA and Triangular rules. Triangular needs its own algo since it's effectively range 2.Andrew wrote: July 14th, 2020, 4:04 pm Using LtL doesn't make much sense for neighborhoods like Margolus.
I'm not sure that's necessary. None of the LifeViewer algos have a particular limit at 16Kx16K. I just enforce it to prevent the browser from running out of memory.Andrew wrote: July 14th, 2020, 4:04 pm Here's a better idea: We create a new algo called BoundedGrid. It only supports bounded universes with the same maximum dimensions as LifeViewer (16K x 16K?).
Code: Select all
#C Some common and typical c/2 rakes.
#C A rake is any puffer whose debris consists entirely of spaceships.
#C Front row: p20 forward and backward rakes, the original kind of
#C rake created by perturbing the output of a small puffer with
#C light-weight spaceships.
#C Next row: p16 forward and backward rakes by Tim Coe, 1996.
#C Back row: a p240 forward rake, to show one alternative rake.
#C "Rakes.lif" from Alan Hensel's "lifebc" pattern collection.
x = 263, y = 79, rule = B3/S23
18boo$16bo4bo$22bo$16bo5bo$17b6o3$33boo$31bo4bo$37bo$31bo5bo213boo8bo$
32b6o132b6o74b4o8bo$169bo5bo74booboo3bo3bo$159b6o10bo76boo5b4o$107b5o
46bo5bo9bo$106bo4bo52bo$41b6o64bo5b4o42bo$40bo5bo59bo3bo5b6o61boo73bo$
46bo61bo7b4oboo56b4oboo73boo$40bo4bo74boo58b5o75bo$42boo137b3o76bo$89b
o169bo$87booboo28bo$89bo14bo3bo3bo3bo5bo58b4o$104bo3bo3bo3bo6bo56bo3bo
76bo$89bo14bo3bo3bo3bo6bo36bo23bo77bo$87booboo27b5o37bo13boo6bo74bo3bo
$89bo65bo5bo9b4oboo64b4o13b4o$156b6o9b6o64bo3bo$bboo116b3o49b4o69bo$o
4bo15b4o24boo57bo10b5o120bo$6bo13bo3bo21b3oboo54bo3bo8b3oboo$o5bo17bo
21b5o60bo10boo$b6o13bobbo23b3o56bo4bo$107b5o25$251boo8bo$169b6o75b4o8b
o$168bo5bo75booboo3bo3bo$174bo77boo5b4o$173bo3$182boo74bo$178b4oboo74b
oo$179b5o76bo$180b3o77bo$259bo$$180b4o$179bo3bo77bo$183bo78bo$174boo6b
o60bo14bo3bo$170b4oboo67bo14b4o$170b6o64bo3bo$171b4o66b4o!
#C [[ AUTOSTART GPS 30 TRACK 1/2 0 THEME 2 "Zoom in to see labels for individual rakes.\nSource: rakes.lif (Alan Hensel's collection)" ]]
#C [[ COLOR LABEL Red ]]
#C [[ LABEL 250 0 8 "P20 c/2 forerake\n('space rake', circa 1971)" ]]
#C [[ LABEL 250 50 8 "P20 c/2 backrake\n(based on an ecologist, same as the space rake above,\nbut with the trailing LWSS in a different location)" ]]
#C [[ COLOR LABEL Yellow ]]
#C [[ LABEL 170 0 8 "P16 c/2 forerake\nTim Coe, 1996" ]]
#C [[ LABEL 170 50 8 "P16 c/2 forerake\nTim Coe, 1996" ]]
#C [[ COLOR LABEL SpringGreen ]]
#C [[ LABEL 65 4 7 "sample higher-period forerake (p240),\nbased on a repeatably ignited blinker fuse" ]]Code: Select all
#N c3-forward-rake-p159.rle
#C ( velocity-c3/rake-c3-p159.rle in jslife-moving collection )
#C Engineless p159 c/3 rake
#C Jason Summers, 2 Feb 2010
#C Most of the components were found by David Bell
#C https://github.com/Matthias-Merzenich/jslife-moving/
x = 473, y = 780, rule = B3/S23
254boob3o26boo$254boo4boo19b3obob3o$253bobbobo3bo14booboo3bo3boo5bo$
260b3obb3o5boobobb3obo3bo3bo3boob3o$262b3obobo4boo5boboboobbooboo8bo$
262bo4bo4bobbo3bo5b5obob3o3boo$263boo12bob3obboobboo3b4o$277boo3boo13b
o$263boo17boo4bo5bobo$262bobbo12bo10bo4bo$262bobbo11bobo$261boobo8b3o
3bo10bo$262boboboo4bobobo5b3o4b4o8b3o$259boobobo7bobobo4bo3boobo3boo8b
obooboo$259boobobobo6bobo5bobobbobobo3bo4boobo4boo$260bobobobbo12boo4b
obobbo6bobobo3bobbo$261bobbo3boo4bo7boobbobob7obobobo$249bo10b5obb3o4b
o8bo4bo5bo5bo3bo$224boob3o18bobo10b3oboboo10b3obboobboo4bo6boo$224boo
4boo15bo3bo13bo12b4o4b3o7boobbo4bo$223bobbobo3bo15b3o14bo11bo3b3o11boo
3bo3boo$230b3obb3o44b3o10b3o$232b3obobo7boo3boo19bo4bobo3boo10boo4b3o$
232bo4bo8boo3boo18b3o$233boo10boob3obbo17boboo$243boo3bobooboo17b3o$
233boo7bo3bo25boo$232bobbo6bo4bo3bo$232bobbo9b3obbo$231boobo7b3o4bo$
232boboboo3boo$229boobobo$229boobobobo$230bobobobbo$231bobbo3boo$230b
5obb3o$231b3oboboo$219bo15bo$215b3ob3o13bo5bo$214bo6boo16boo$215boo3bo
bbo3bo11boobo$225b4o10boo3bo$225bo3bo10boo3bo$223bobbobo13b3o$224bo$$
224boo$223bobbo$223boboo$222boobobo43b3o$221bobobo45bobbo$220boobobob
oo42bo$223bobo45bo$220boobobobboo42bobo$225boo3bo$221bo4boo$221bo4bobo
bo$223bobbo17$259b3o$261bo10bo$260bo10b3o$270boobo$270b3o$271boo5$256b
oobo$253boobooboo$253bobbobobbo$247boo4boo5bo38boo$247booboo48boo$246b
o3boo47bo$250boo$259bo$222bo34b3ob3o$221boo33boo6bo$221bobo27bo3bobbo
3boo$250b4o$249bo3bo$250bobobbo$254bo$237boo$237boo100boo$338bobo$271b
3o66bo$270bobbo$226bo22bo23bo$222b3ob3o18b3ob3o19bo$181b3o37bo6boo16b
oo6bo15bobo$181bo40boo3bobbo3bo6bo3bobbo3boo$182bo49b4o4b4o$105boboo
19b3o101bo3bobbo3bo$104boobooboo16b3o99bobbobo4bobobbo$103bobbobobbo
15bo3bo99bo12bo$104bo5boo4boo$113booboo8bo5bo246bo$113boo3bo7boo3boo
246boo$113boo13bo4boo243bobo$123booboboboo$113boo8boobobobo3bo305boo$
113boo8b3ob4o309booboo$112bobbo7b3o3boo11boo295boboboo$112bobobo4boo5b
o12boo295b3obboo$112bobo28bo290b3obobob3o$109booboboboo3bobboo307bo11b
oo$109boobobo319bobobbo$112bobobobo324bobbo$111bobbo3bo315boo5bo$109b
3oboobboo314bobbo3boo$118bo299b3o16bo$111bobboo156bo147bo16bo3bo$95boo
b3o15bo154b3o145bo17bo3bo4bo$95boo4boo168boboo163boo5b4o$94bobbobo3bo
168b3o169bo3booboo$101b3obb3o163boo170bo3bobboo$103b3obobo332bo7bobbo$
103bo4bo333bo$104boo338boboo$446boo$104boo339bobo$103bobbo336boo$103bo
bbo337b3o$102boobo338bobboo3bo$103boboboo337boo3b3o$100boobobo339bobo
bbo3bo$100boobobobo339bobobobo$101bobobobbo338bo$102bobbo3boo336boo$
101b5obb3o4bo331bo11b3o$102b3oboboo5boo330bo10boboboo$106bo9boo341bo$
106bo10boobo343boboo$117bobbo340b5obboboo$118bobo22bo9bo301b3o4bobo5b
oo$142bobo4b3ob3o297boobo7boo3bobbo$141bo3bobbo6boo285boo8bo3b5ob4obo$
142b3o4boo3bobbo3bo279boboo8bobobbobobobo$159b4o108b3o165bo5boo9bobboo
boo$117bo22boo3boo12bo3bo107bobbo164bo3bobo$117boo21boo3boo10bobbobo
108bo167bo5boboo6boo$117b3o19bobb3oboo10bo112bo167bobo6bo$119bo18boob
oobo3boo122bobo164bobo6bo5b3o$121bo24bo3bo7boo280bobbooboo8bo$116boo3b
o19bo3bo4bo6bobbo284bo9bo$116boo24bobb3o9boobo271boo$120bo22bo4b3o5bob
oboo270bobo$116bobbo30boo6bobobo270boo$117b3o35booboboboo$158bobo272b
oo$154boobboboboo268bobo$153bo3boo273boo$156boo4bo282bo16b3oboo$153bob
obo4bo277bobbooboo12boo4boo$150bo6bobbo278bobo6bo10bo3bobobbo$151boo
286bobo6bo5b3obb3o$153bo261bo23bo5boboo4bobob3o$150bobbo259b4o22bo3bob
o8bo4bo$136bo10b5o260boo3bo21bo5boo10boo$134b3ob3o9bo260bo5b3o21boboo$
133boo6bo3bo3bo264bobo4boo19boo$128bo3bobbo3boo3bo266bob4o4boo$127b4o
13bobo263b8ob4o$126bo3bo14bo264boo$127bobobbo139bo142bo5boo$131bo139b
3o140bobo3bobbo$138b3oboo126boobo143bobobbo$136boo4boo126b3o142b4o$
135bo3bobobbo126boo142b4o$130b3obb3o279bobbo$129bobob3o$88bo41bo4bo$
87boo44boo$31bo55bobo$29b4o$28boo3bo$27bo5b3o$30bobo4boo$27bob4o4boo
373boo$26b8ob4o63boob3o20b3oboo275booboo$26boo74boo4boo16boo4boo272b4o
bbobo$31bo5boo62bobbobo3bo14bo3bobobbo270bo4bo4bo$30bobo3bobbo68b3obb
3o4b3obb3o278boo7bo$33bobobbo71b3obobobbobob3o54bo234bo$31b4o75bo4bo4b
o4bo53b4o228b3o$31b4o12b3o61boo10boo53bo3boo226bo$25b3o5bobbo10bo128b
3o5bo226boboo$21boboo3bo19bo83bo40boo4bobo233bo$20b3o3bobo99b3ob3o38b
oo4b4obo226boo$19bo3bo4boo97bo6boo37b4ob8o219b3obbo3bo$20bo7b3o97boo3b
obbo3bo43boo219b3o5bo$26bobo109b4o31boo5bo90b3o130bo3bobbo27bo$25boo
111bo3bo29bobbo3bobo88bobbo134bobbo23b3oboo$24bo3bo107bobbobo31bobbobo
94bo137boo21bo5b3o$28bo108bo39b4o92bo136b3o22boo7boo$25boboo96boob3o
46b4o89bobo138boo26bo4boo$20bo4bo99boo4boo42bobbo5b3o251bo4b3o$19bobo
3b3o96bobbobo3bo49bo3boobo246boo3boo5b3o5bo$18bo3bo108b3obb3o34boo8bob
o3b3o232boo9boobboobb3obbo6b3ob3o$19boobo3bo106b3obobo32bobo7boo4bo3bo
226b3obo11b3oboo6boo5boo6bo$24boo107bo4bo35bo6b3o7bo226b5obo11booboobb
oo3b4obobbo3boo$134boo47bobo231b4o4bo$12boo10bobbo157boo229boo7bo25bo$
10boboo10bobo156bo3bo228bo4bo3bo3bo21bobo$9boo3bo168bo233bo3bobbo4bobo
bboo$9boo172boobo235b3o4bo6bo$bbob4obboo174bo4bo238bo4bo$boob4o7boo
167b3o3bobo238bo3bo$obboboobbo5booboo115boob3o20b3oboo22bo3bo239bo$bo
7bo3boo3boo115boo4boo16boo4boo18bo3boboo$6boobboboo3b3o114bobbobo3bo
14bo3bobobbo18boo262bo$9boobo128b3obb3o4b3obb3o288boo$16boo125b3obobo
bbobob3o25bobbo10boo247boobo$143bo4bo4bo4bo26bobo10boobo247bobbo$17bo
126boo10boo39bo3boo237boob3o6boo$17bo183boo237boo3boobb3oboobb3o$16bob
o181boobb4obo230b4o5bo4b3obobo$16bo178boo7b4oboo61bo170bobobboo4bo4bo$
192booboo5bobboobobbo59b3o168bobbo9boo$192boo3boo3bo7bo60boboo165boobb
o$192b3o3boobobboo66b3o164b4o$34boo163boboo69boo165bo3boo$34bobo157boo
243bob6o$26bo7b3o402boo6boo$25boboo5boo158bo244b4oboobbo$6boboo15bo3bo
4bo4boo153bo246boob3o3b3o4b3obo$5boobooboo13boobo8bobo152bobo250bo3boo
bobbobooboo$4bobbobobbo15bo9boo155bo250bo3bobbobb3obobbo$5bo5boo4boo
429bobo6bo4bo$14booboo9bo9boo361bo46bo3b3obbo$14boo3bo6boobo8bobo15b3o
338b3ob3o52boo$14boo9bo3bo4bo4boo14bo3boo335bo6boo43boo3bo3bo$25boboo
5boo18bobbo3bo335boo3bobbo3bo45boo$26bo7b3o14boboo6bo345b4o$34bobo13b
ooboob3o348bo3bo$34boo13bobboobo3b3o140boobo199bobbobo$61boo136booboob
oo199bo$50bo148bobbobobbo$50boo4b3o134boo4boo5bo199boo$50b3o3boo135boo
boo207bobbo$52boobboo95b3o36bo3boo207boboo41boobo$52b3o96boo3bo39boo
206boobobo37boobooboo$53bobbo93bo3bobbo17bo227bobobo39bobbobobbo$54bo
95bo6boobo14bo226booboboboo30boo4boo5bo$153b3obooboo12b3o94b3o131bobo
33booboo$150b3o3boboobbo108bobbo127boobobobboo28bo3boo$149boo21bo5bo
92bo135boo3bo31boo$161bo8bo9bo90bo131bo4boo$153b3o4boo7boo4bo4boo90bob
o128bo4bobobo$154boo3b3o6boo4b3o4boo222bobbo$154boobboo9bobb3ob3obbo$
60bo96b3o10bobo5bobo$59b4o92bobbo$58bo3booboo90bo12bobo5bobo$58bo3bobb
oo102bobb3ob3obbo268b3o$56bo7bobbo100boo4b3o4boo269bo$56bo112boo4bo4b
oo269bo$58boboo108bo9bo$60boo110bo5bo$59bobo$57boo115b3o$58b3o90bo23bo
$58bobboo3bo82b4o22bo$60boo3b3o77booboo3bo269bo5boo$33bo25bobobbo3bo
76boobbo3bo270bo$32boboboo23bobobobo76bobbo7bo267b3o$31bo4boo23bo93bo
267bobb3o$28boboo3bobbo22boo87boobo$27booboobo27bo88boo275boo$26bobb6o
26bo88bobo$22boo9bobbo116boo117bo$11boob3o4boobo3bo3bo3bo114b3o117b3o$
11boo4boobboob3oboobbobboo108bo3boobbo116boobo$10bobbobo3boboo5boo3bo
bbo107b3o3boo118b3o$17b3o5boo5bo110bo3bobbobo25bo92boo$19b3obo120bobob
obo23boobobo$19boo129bo23boo4bo$149boo22bobbo3boobo$150bo27bobooboo$
150bo26b6obbo$55boo118bobbo9boo$42b3o9bobbo117bo3bo3bo3boboo4b3oboo$
55bobo117boobbobboob3oboobboo4boo$56bo118bobbo3boo5boobo3bobobbo$21b3o
155bo5boo5b3o$24bo15bo147bob3o$24boo12bobbo149boo$19b3obboobboobo5bo3b
oo$13boo4bo5boobooboo6bo$13booboo4boobo3boobbo4b3o$12bo3boo6b4o$16boo
8boobobo17bobo$29bo18bo$31boo15bo$29bobboo14bobbo136b3o$26boob3o16b3o
136bo$24b3o5bobbo150boo$23bo3bob4obo145boboobboobb3o78b3o$14bo6bo4boo
151boobooboo5bo4boo71bobbo$10b3oboo4boo4bo151bobboo3boboo4booboo74bo$
9bo5boobboobbo3bo156b4o6boo3bo73bo$10boo5bobbobobbo154boboboo8boo74bob
o$15bo4b3obo157bo$14bob3obb3o46b3oboo103boo$17b3o3boo43boo4boo79boo21b
oobbo$14bobbo49bo3bobobbo77bobbo22b3oboo$16bo45b3obb3o84bobo19bobbo5b
3o$61bobob3o87bo21bob4obo3bo$62bo4bo116boo4bo6bo$65boo118bo4boo4boob3o
$184bo3bobboobboo5bo$65boo119bobbobobbo5boo$64bobbo119bob3o4bo$10bo11b
o41bobbo68boob3o30boo14b3obb3obo$8b4o6b3ob3o40boboo67boo4boo34bo8boo3b
3o$4booboo3bo4bo6boo36boobobo67bobbobo3bo26bobbo3bo15bobbo$4boobbo3bo
5boo3bobbo3bo34boboboo71b3obb3o21boobo20bo$3bobbo7bo13b4o31boboboboo
73b3obobo22bo$14bo13bo3bo29bobbobobo74bo4bo$9boobo13bobbobo28boo3bobbo
76boo$9boo16bo32b3obb5o$9bobo49boobob3o76boo$12boo50bo79bobbo$10b3o51b
o79bobbo41bo11bo70bo$4bo3boobbo130boobo40b3ob3o6b4o67b3o$3b3o3boo133bo
boboo36boo6bo4bo3booboo63boboo$bbo3bobbobo129boobobo34bo3bobbo3boo5bo
3bobboo64b3o$3bobobobo131boobobobo31b4o13bo7bobbo63boo$9bo132bobobobbo
29bo3bo13bo$8boo5b3o125bobbo3boo28bobobbo13boboo$9bo5bo126b5obb3o32bo
16boo$9bo6bo126b3oboboo49bobo$147bo50boo$147bo51b3o$199bobboo3bo214boo
$201boo3b3o212b3o$162bobo35bobobbo3bo211boobo$161bo40bobobobo213b3o$
161bo40bo220bo$161bobbo37boo$161b3o38bo$202bo9$271b3o$271bobbo$271bo$
271bo$272bobo10$174bo11bo$172b4o9b4o$171boo3bo7bo3boo$168bobo4bo9bo4bo
bo$167boo3bo7bo7bo3boo$168bo3boo5b3o5boo3bo$170boboo4bo3bo4boobo$149bo
18boobbo6b3o6bobboo$147b4o21bo5b5o5bo$143booboo3bo3bo12bo3bobooboo3boo
boobo3bo$143boobbo5b4o13boo3bo9bo3boo$142bobbo7bo3bo16bobboo3boobbo$
151bobbobo115bo$152bo118b3o$270boobo$270b3o$144bo126boo$142b4o$138boob
oo3bo3bo$138boobbo5b4o$137bobbo7bo3bo$146bobbobo$147bo7$182bo$180b3ob
3o$179boo6bo$174bo3bobbo3boo$162bo10b4o$160bobbo8bo3bo$159bo4bo8bobobb
o$159bo4bo12bo$160bo$160bo3bo11boo$160boobbo10bobbo92b3o$162b3o10boobo
91bobbo$174boboboo93bo$156boobbo5bo9bobobo92bo$155b3obo5bobo5boobobob
oo88bobo$157boboo4bobbo7bobo$158bo7boo4boobboboboo$157b3obboo7bo3boo$
155bobo4bobo9boo4bo$155bo7bo7bobobo4bo$175bobbo11$49boo$49b3o$48boboo$
48b3o$49bo$128boboo140bo$127boobooboo136b3o$126bobbobobbo136boboo$127b
o5boo4boo131b3o$136booboo131boo$136boo3bo$136boo$123b3ob3o$119boboo4bo
b4o$118b3o3boboo3boo3bo$117bo3bo3boboo5b4o$118bo9bo3bobo3bo$128bo3bobo
bobo$128bobo4b3o$136bo6$129bo$127b4o$123booboo3bo$123boobbo3bo$122bobb
o7bo$133bo$128boobo$128boo141b3o$128bobo7boo131bobbo$131boo4boo132bo$
129b3o6bobo18boo110bo$127boobbo3bo4boo17boo111bobo$128boo5bo5bo$128bob
o4bo5bo$141bo$129boo$$130bo292bobo$130bo291bo$129bobo290bo$129bo292bo
bbo$422b3o$120bo$118b4o$114booboo3bo3bo$114boobbo5b4o38boo$113bobbo7bo
3bo37booboo$122bobbobo37bobobb4o$123bo40bo4bo4bo$164bo7boo$164bo$166b
3o$169bo$165boobo103bo$164bo106b3o$167boo101boobo$165bo3bobb3o95b3o$
166bo5b3o96boo$168bobbo3bo$168bobbo$167boo$167b3o$167boo18$271b3o$270b
obbo$273bo$159boo112bo$159boo109bobo22$272bo$271b3o$271boboo$272b3o$
272boo3$172bo$173boo$172boo12$47bobo$50bo$50bo93boob3o20b3oboo$47bobbo
93boo4boo16boo4boo$48b3o92bobbobo3bo14bo3bobobbo$150b3obb3o4b3obb3o$
152b3obobobbobob3o103b3o$152bo4bo4bo4bo103bobbo$153boo10boo104bo$271bo
$61boo9boo198bobo$58booboo9booboo$58boo3bo7bo3boo$54b3obbo15bobb3o$54b
oobb3o5b3o5b3obboo$54b3o9b3o9b3o$55bo9bo3bo9bo$36boo18bobbo15bobbo$33b
ooboo17booboo4bo5bo4booboo$30b4obboo4boo15b7obob7o$29bo4bo4booboo14bob
obo9bobobo$30boo7boo3bo$39boo4$31boo$28booboo$25b4obboo4boo$24bo4bo4b
ooboo$25boo7boo3bo359boo9boo$34boo360booboo9booboo$272bo123boo3bo7bo3b
oo$271b3o118b3obbo15bobb3o$270boobo118boobb3o5b3o5b3obboo$270b3o119b3o
9b3o9b3o$271boo120bo9bo3bo9bo$394bobbo15bobbo18boo$393booboo4bo5bo4boo
boo17booboo$69boobo324b7obob7o15boo4boobb4o$66boobooboo322bobobo9bobob
o7b3o4booboo4bo4bo$66bobbobobbo346bo3bobbo3boo7boo$60boo4boo5bo347bo3b
o6boo$60booboo356bo3bo$59bo3boo357b3o$63boo$440boo$63boo375booboo$63b
oo369boo4boobb4o$62bobbo368booboo4bo4bo$61bobobo367bo3boo7boo$63bobo
371boo$60booboboboo$63boboboo$59bobobobo$59bo3bobbo$51boo6boobboob3o$
50boboo5bo$50bobo9boobbo$50boo9bo209b3o126boboo$48bo221bobbo125booboob
oo$47b3o223bo124bobbobobbo$48boo223bo125bo5boo4boo$44b5o221bobo135boob
oo$45b3o360boo3bo$46bo361boo$$408boo$408boo$407bobbo$407bobobo$407bobo
$404booboboboo$404boobobo$407bobobobo$14boob3o386bobbo3bo$14boo4boo
382b3oboobboo$13bobbobo3bo390bo$20b3obb3o378bobboo$22b3obobo184bo197bo
$22bo4bo183bobo$11bo3bo7boo187boo$9b3oboobobo$5booboo6bobbo$5boobbobbo
3bobboobboo$4bobbo4bobbobbooboboo247bo$15boo4bo3bo245b3o$14boobbobbobo
bo245boboo150bo$16bo255b3o137bobo10bo$22b3o247boo139bo12bo$$420bo3boo$
422b3o6bo$422boo7boo$430boboo$16boo412bobo20b3oboo$13booboo412boo19boo
4boo$10b4obbobo431bo3bobobbo$9bo4bo4bo425b3obb3o$10boo7bo424bobob3o$
19bo425bo4bo$15b3o430boo7bo3bo$14bo439boboboob3o$15boboo434bobbo6boob
oo$19bo428boobboobbo3bobbobboo$15boo431booboboobbobbo4bobbo$14bo3bo
428bo3bo4boo$17bo429bobobobbobboo$15bo440bo$17bo430b3o$28bo$16boo6bobb
oo$23bobbo5bo13boo223b3o$16b3o4bo5boobbo12boo223bobbo$16bo6bobboo5bo
237bo$17bo6bo5bobbo237bo183boo$28boobbo239bobo180booboo$7boo19bo425bob
obb4o$4booboo444bo4bo4bo$b4obboo4boo438bo7boo$o4bo4booboo438bo$boo7boo
3bo439b3o$10boo446bo$454boobo$453bo$456boo$454bo3bo$455bo$457bo$455bo
$$455boo$$454b3o$456bo$455bo$439boo$438bobbo22boo$57boo213bo164bo3boo
21booboo$56bobo212b3o162boo3bo16boo4boobb4o$58bo211boobo163boboobobbo
12booboo4bo4bo$270b3o152boo13bobobbo11bo3boo7boo$271boo152boo12bo4boo
15boo$435booboo8bo$435b3o8boobobboo$435bobo9bobobboo$64bo371bo8bobbo$
62b3ob3o367bo8boo$61boo6bo$56bo3bobbo3boo$55b4o$54bo3bo38bo$55bobobbo
36boo$59bo36bobo$$58boo$57bobbo$57boobo$56boboboo$58bobobo$55boobobob
oo344bo$58bobo346boo$54boobboboboo343bobo$53bo3boo$56boo4bo$46boo5bobo
bo4bo73b3o132b3o$46boo9bobbo77bo131bobbo134bo$137bo135bo130b3ob3o$273b
o129bo6boo$32boboo22boobo208bobo131boo3bobbo3bo$31boobooboo16boobooboo
351b4o$30bobbobobbo16bobbobobbo350bo3bo$31bo5boo4boo4boo4boo5bo188bobo
158bobbobo$40booboo4booboo198boo159bo$40boo3bobbo3boo198bo114b3o$40boo
10boo313bo45boo$368bo43bobbo$412boboo$176boo233boobobo$177boo231bobobo
$176bo232booboboboo$412bobo$409boobobobboo$414boo3bo$410bo4boo$410bo4b
obobo$412bobbo$328boo$327boo$329bo81boboo22boobo$410boobooboo16booboob
oo$216boo54bo136bobbobobbo16bobbobobbo$215bobo53b3o136bo5boo4boo4boo4b
oo5bo$217bo53boboo144booboo4booboo$272b3o144boo3bobbo3boo$272boo145boo
10boo5$288boo$288bobo$288bo$$256bo$256boo$255bobo!
#C Script commands for lifeviewer.lua:
#C [[ ANGLE 90 ZOOM -1.5 THEME 3 AUTOSTART AUTOHIDEGUI TRACKBOX 1/4 -1/3 0 -1/3 ]]