The new memory inspector is awesome. I could tell what was going on with my zerobots.
The last one I checked is storing the value 448 in all 0 and 5 sysvars, (tho a few non read-only still remain at "0" value). That includes repro (300), tie (330) and sharenrg (830). This must be the awesome piece of code doing everything:
467 19 sub xor
5 not
-7 ^ -1 ceil and
rnd <
*15 .shoot dec
inc
and
7 dist -7 >
start
-6 | !%=
mult store
So, let's see...
467 19 sub = 448
Then there's a bitwise 5 -7 ^ (xor) that returns a -4, if I did understand right how those bitwises work.
-1 ceil may be junk or a safety check so no matter how the gene mutates, it never passes a positive value. It now does nothing, because -4 is under the ceiling.
Then the value is randomized. Values are [-4, 0].
*15 .shoot dec inc fires energy shots and should increase the 448 memloc, tho when I checked it, it didn't change. Actually I'm confused because on the memory inspector, the 7 sysvar is always 0 too.
Then there's a [-4, 0] 7 dist. I've got no idea about how dist returns values. If it's using the bot's distance to the [-4, 0] 7 coordinates, then .repro, .tie and .sharenrg are triggered with a little fuzzyness by where the bot is in the sim. Maybe it's trying to avoid reproducing and tiefeeding at the same areas.
The bitwise -7 - 6 | returns -5, which is multiplied to the distance value it got before.
I used this GNU online scicalc:
http://ostermiller.org/calc/calculator.htmlEdit: I don't post this for the zerobot prize. It's not a true condition since it's only creating a fixed pattern, not reacting to unexpected changes in the enviroment.