'Another neural network test
'Just trying to figure out whats possible

'i1 : *.eye5
'i2 : *.refvelup
'i3 : *.refxpos *.refypos angle
'i4 : *.body
'-------
'o1 : .shoot
'o2 : .up
'o3 : .setaim
'o4 : .repro

def wi1h1 100
def wi2h1 100
def wi3h1 0
def wi4h1 0

def wi1h2 -10
def wi2h2 400
def wi3h2 0
def wi4h2 0

def wi1h3 0
def wi2h3 150
def wi3h3 0
def wi4h3 0

def wi1h4 0
def wi2h4 0
def wi3h4 400
def wi4h4 0

def wi1h5 0
def wi2h5 0
def wi3h5 0
def wi4h5 100

def wh1o1 500
def wh1o2 -200
def wh1o3 0
def wh1o4 0

def wh2o1 0
def wh2o2 50
def wh2o3 0
def wh2o4 0

def wh3o1 0
def wh3o2 300
def wh3o3 -100
def wh3o4 0

def wh4o1 0
def wh4o2 0
def wh4o3 500
def wh4o4 0

def wh5o1 0
def wh5o2 -200
def wh5o3 100
def wh5o4 1000


def h1 51
def h2 52
def h3 53
def h4 54
def h5 55

start
0 .h1 store
100 .h2 store
1 .h3 store
1 .h4 store
-500 .h5 store
stop


'********** Inputs
'======= h1
start
*.eye5 .wi1h1 mult *.refvelup .wi2h1 mult add *.refxpos *.refypos angle .wi3h1 mult add *.body .wi4h1 mult add 400 div *.h1 add .h1 store
stop

'======= h2
start
*.eye5 .wi1h2 mult *.refvelup .wi2h2 mult add *.refxpos *.refypos angle .wi3h2 mult add *.body .wi4h2 mult add 400 div *.h2 add .h2 store
stop

'======= h3
start
*.eye5 .wi1h3 mult *.refvelup .wi2h3 mult add *.refxpos *.refypos angle .wi3h3 mult add *.body .wi4h3 mult add 400 div *.h3 add .h3 store
stop

'======= h4
start
*.eye5 .wi1h4 mult *.refvelup .wi2h4 mult add *.refxpos *.refypos angle .wi3h4 mult add *.body .wi4h4 mult add 400 div *.h4 add .h4 store
stop

'======= h5
start
*.eye5 .wi1h5 mult *.refvelup .wi2h5 mult add *.refxpos *.refypos angle .wi3h5 mult add *.body .wi4h5 mult add 400 div *.h5 add .h5 store
stop


'in
'-----------------------------------------------------------------
'out


'********** Outputs
'======= 01
start
*.h1 .wh1o1 mult *.h2 .wh2o1 mult add *.h3 .wh3o1 mult add *.h4 .wh4o1 mult add *.h5 .wh5o1 mult add 500 div sgn -6 mult 0 ceil .shoot store
stop

'======= 02
start
*.h1 .wh1o2 mult *.h2 .wh2o2 mult add *.h3 .wh3o2 mult add *.h4 .wh4o2 mult add *.h5 .wh5o2 mult add 500 div .up store
stop

'======= 03
start
*.h1 .wh1o3 mult *.h2 .wh2o3 mult add *.h3 .wh3o3 mult add *.h4 .wh4o3 mult add *.h5 .wh5o3 mult add 500 div .setaim store
stop

'======= 04
start
*.h1 .wh1o4 mult *.h2 .wh2o4 mult add *.h3 .wh3o4 mult add *.h4 .wh4o4 mult add *.h5 .wh5o4 mult add 500 div .repro store
stop


'----- some regular genes to help it along...

cond
*.robage 10 <
start
*.maxvel - .up store
*.maxvel .sx store
*.refxpos *.refypos angle .setaim store
.setaim .shoot store
*.aim .shootval store
stop

start
.deltie inc
.fixpos dec
stop

cond
*.nrg *.body 10 mult >
start
100 .strbody store
stop

cond
*.body 10 <
*.robage 0 >
start
-2 .shoot store
31000 .shootval store
stop

end