Yay, necro post for an update
I asked Matrefeytontias for the source to this program because I was thinking of ways to optimise this. I was originally planning to turn a bunch of it directly into assembly, but for those that like pure Axe, I have this.
First, the original program was 900 bytes of compiled code and ran at about 3.9 FPS.
This version is 502 bytes, ~3.8 FPS:
:.PLASMA
:.by KKI+MAT
:.Full
:.Precalculs
:[FFFDF5E9DAC6B0987F664E38241509010001091524384E667F98B0C6DAE9F5FD]→GDB2
:0→θ
:Repeat getKey(15)
:L6-1→P
:L6+11→Q
:θ+1 and 31→θ
:{θ*2+24 and 31+GDB2}*8/256→D
:{θ+GDB2}*8/256→E
:.Lignes
:‾1→Y
:While Y++-32
:.Precalculs
:{Y+E and 31+GDB2}→M
:.Colonnes
:‾1→X
:While X++-48
:.Couleur
:M+{X+D and 31+GDB2}
:+{X+Y+D+E/2+θ and 31+GDB2}→Z
:.Init/Decale
:!If X and 3
:0→{P++}
:0→{Q++}
:Else
:{P}*4→{P}
:{Q}*4→{Q}
:End
:If Z≤576
:{P}++
:End
:If Z≤384
:{Q}++
:{}++
:End
:If Z≤192
:{Q}++
:{P}++
:{}++
:End
:End
:P+12→P+12→Q
:End
:DispGraph
:End
And I am sure there are some obvious optimisations left, but I am not that great of an Axe programmer
For those that want a little more speed and size optimisations, I included assembly code in this version:
450 bytes compiled, ~4.8 FPS
:.PLASMAZ
:.by KKI+MAT
:.Full
:.Precalculs
:[FFFDF5E9DAC6B0987F664E38241509010001091524384E667F98B0C6DAE9F5FD]→GDB2
:0→θ
:Repeat getKey(15)
:L6-1→P
:L6+11→Q
:θ+1 and 31→θ
:Asm(7D87C618E61F6F)+GDB2
:Asm(7E070707E6076F2600)→D
:θ+GDB2
:Asm(7E070707E6076F2600)→E
:.Lignes
:‾1→Y
:While Y++-32
:.Precalculs
:{Y+E and 31+GDB2}→M
:.Colonnes
:‾1→X
:While X++-48
:.Couleur
:M+{X+D and 31+GDB2}
:+{X+Y+D+E/2+θ and 31+GDB2}
:*4→Z
:.Z=256*{0,3,6,9}
:.Init/Decale
:!If X and 3
:P++Asm(3600)
:Q++Asm(3600)
:Else
:PAsm(CB26CB26)
:QAsm(CB26CB26)
:End
:Z
:Asm(7C)
:Asm(FE093004)
:PAsm(34)
:Asm(FE063005
:QAsm(3434)
:Asm(FE033006)
:Asm(34)
:PAsm(3434)
:End
:P+12→P+12→Q
:End
:DispGraph
:End
It has also come to my attention that some of the Axe code that I replaced with Assembly compiles to the same thing.
Note that the code was compiled with Axe v1.2.1 and run at 6MHz